trtc-sdk-v5 5.9.0-wasm.11 → 5.9.0-wasm.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/trtc.esm.js CHANGED
@@ -1,34 +1,32 @@
1
- var kp=Object.create;var xs=Object.defineProperty,Lp=Object.defineProperties,gu=Object.getOwnPropertyDescriptor,Pp=Object.getOwnPropertyDescriptors,wp=Object.getOwnPropertyNames,on=Object.getOwnPropertySymbols,Tu=Object.getPrototypeOf,uc=Object.prototype.hasOwnProperty,Eu=Object.prototype.propertyIsEnumerable,xp=Reflect.get;var Us=Math.pow,lc=(s,i,e)=>i in s?xs(s,i,{enumerable:!0,configurable:!0,writable:!0,value:e}):s[i]=e,v=(s,i)=>{for(var e in i||(i={}))uc.call(i,e)&&lc(s,e,i[e]);if(on)for(var e of on(i))Eu.call(i,e)&&lc(s,e,i[e]);return s},k=(s,i)=>Lp(s,Pp(i));var Su=(s,i)=>{var e={};for(var t in s)uc.call(s,t)&&i.indexOf(t)<0&&(e[t]=s[t]);if(s!=null&&on)for(var t of on(s))i.indexOf(t)<0&&Eu.call(s,t)&&(e[t]=s[t]);return e};var oi=(s,i)=>()=>(i||s((i={exports:{}}).exports,i),i.exports),ni=(s,i)=>{for(var e in i)xs(s,e,{get:i[e],enumerable:!0})},Up=(s,i,e,t)=>{if(i&&typeof i=="object"||typeof i=="function")for(let r of wp(i))!uc.call(s,r)&&r!==e&&xs(s,r,{get:()=>i[r],enumerable:!(t=gu(i,r))||t.enumerable});return s};var ke=(s,i,e)=>(e=s!=null?kp(Tu(s)):{},Up(i||!s||!s.__esModule?xs(e,"default",{value:s,enumerable:!0}):e,s));var y=(s,i,e,t)=>{for(var r=t>1?void 0:t?gu(i,e):i,o=s.length-1,n;o>=0;o--)(n=s[o])&&(r=(t?n(i,e,r):n(r))||r);return t&&r&&xs(i,e,r),r};var c=(s,i,e)=>lc(s,typeof i!="symbol"?i+"":i,e);var Le=(s,i,e)=>xp(Tu(s),e,i);var f=(s,i,e)=>new Promise((t,r)=>{var o=d=>{try{a(e.next(d))}catch(l){r(l)}},n=d=>{try{a(e.throw(d))}catch(l){r(l)}},a=d=>d.done?t(d.value):Promise.resolve(d.value).then(o,n);a((e=e.apply(s,i)).next())});var Ge=oi((BT,hc)=>{"use strict";var Vp=Object.prototype.hasOwnProperty,$e="~";function Vs(){}Object.create&&(Vs.prototype=Object.create(null),new Vs().__proto__||($e=!1));function Bp(s,i,e){this.fn=s,this.context=i,this.once=e||!1}function Iu(s,i,e,t,r){if(typeof e!="function")throw new TypeError("The listener must be a function");var o=new Bp(e,t||s,r),n=$e?$e+i:i;return s._events[n]?s._events[n].fn?s._events[n]=[s._events[n],o]:s._events[n].push(o):(s._events[n]=o,s._eventsCount++),s}function nn(s,i){--s._eventsCount===0?s._events=new Vs:delete s._events[i]}function we(){this._events=new Vs,this._eventsCount=0}we.prototype.eventNames=function(){var i=[],e,t;if(this._eventsCount===0)return i;for(t in e=this._events)Vp.call(e,t)&&i.push($e?t.slice(1):t);return Object.getOwnPropertySymbols?i.concat(Object.getOwnPropertySymbols(e)):i};we.prototype.listeners=function(i){var e=$e?$e+i:i,t=this._events[e];if(!t)return[];if(t.fn)return[t.fn];for(var r=0,o=t.length,n=new Array(o);r<o;r++)n[r]=t[r].fn;return n};we.prototype.listenerCount=function(i){var e=$e?$e+i:i,t=this._events[e];return t?t.fn?1:t.length:0};we.prototype.emit=function(i,e,t,r,o,n){var a=$e?$e+i:i;if(!this._events[a])return!1;var d=this._events[a],l=arguments.length,m,u;if(d.fn){switch(d.once&&this.removeListener(i,d.fn,void 0,!0),l){case 1:return d.fn.call(d.context),!0;case 2:return d.fn.call(d.context,e),!0;case 3:return d.fn.call(d.context,e,t),!0;case 4:return d.fn.call(d.context,e,t,r),!0;case 5:return d.fn.call(d.context,e,t,r,o),!0;case 6:return d.fn.call(d.context,e,t,r,o,n),!0}for(u=1,m=new Array(l-1);u<l;u++)m[u-1]=arguments[u];d.fn.apply(d.context,m)}else{var p=d.length,_;for(u=0;u<p;u++)switch(d[u].once&&this.removeListener(i,d[u].fn,void 0,!0),l){case 1:d[u].fn.call(d[u].context);break;case 2:d[u].fn.call(d[u].context,e);break;case 3:d[u].fn.call(d[u].context,e,t);break;case 4:d[u].fn.call(d[u].context,e,t,r);break;default:if(!m)for(_=1,m=new Array(l-1);_<l;_++)m[_-1]=arguments[_];d[u].fn.apply(d[u].context,m)}}return!0};we.prototype.on=function(i,e,t){return Iu(this,i,e,t,!1)};we.prototype.once=function(i,e,t){return Iu(this,i,e,t,!0)};we.prototype.removeListener=function(i,e,t,r){var o=$e?$e+i:i;if(!this._events[o])return this;if(!e)return nn(this,o),this;var n=this._events[o];if(n.fn)n.fn===e&&(!r||n.once)&&(!t||n.context===t)&&nn(this,o);else{for(var a=0,d=[],l=n.length;a<l;a++)(n[a].fn!==e||r&&!n[a].once||t&&n[a].context!==t)&&d.push(n[a]);d.length?this._events[o]=d.length===1?d[0]:d:nn(this,o)}return this};we.prototype.removeAllListeners=function(i){var e;return i?(e=$e?$e+i:i,this._events[e]&&nn(this,e)):(this._events=new Vs,this._eventsCount=0),this};we.prototype.off=we.prototype.removeListener;we.prototype.addListener=we.prototype.on;we.prefixed=$e;we.EventEmitter=we;typeof hc!="undefined"&&(hc.exports=we)});var ld=oi(($E,ah)=>{"use strict";var nh=ah.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(s){return s.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(s){return s.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(s){return s.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(s){return"imageattr:%s %s %s"+(s.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(nh).forEach(function(s){var i=nh[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var lh=oi(Ii=>{"use strict";var ls=function(s){return String(Number(s))===s?Number(s):s},wf=function(s,i,e,t){if(t&&!e)i[t]=ls(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=ls(s[r+1]))},xf=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;wf(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},ch=ld(),Uf=RegExp.prototype.test.bind(/^([a-z])=(.*)/);Ii.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(Uf).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<(ch[o]||[]).length;a+=1){var d=ch[o][a];if(d.reg.test(n))return xf(d,t,n)}}),i.media=e,i};var dh=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=ls(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};Ii.parseParams=function(s){return s.split(/;\s?/).reduce(dh,{})};Ii.parseFmtpConfig=Ii.parseParams;Ii.parsePayloads=function(s){return s.toString().split(" ").map(Number)};Ii.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(ls),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};Ii.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(dh,{})})};Ii.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=ls(e):(t=ls(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var hh=oi((WE,uh)=>{"use strict";var ud=ld(),Vf=/%[sdv%]/g,Bf=function(s){var i=1,e=arguments,t=e.length;return s.replace(Vf,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},To=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return Bf.apply(null,r)},Ff=["v","o","s","i","u","e","p","c","b","t","r","z","a"],Hf=["i","c","b","a"];uh.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||Ff,t=i.innerOrder||Hf,r=[];return e.forEach(function(o){ud[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(To(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(To(o,n,a))})})}),s.media.forEach(function(o){r.push(To("m",ud.m[0],o)),t.forEach(function(n){ud[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(To(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(d){r.push(To(n,a,d))})})})}),r.join(`\r
1
+ var Vg=Object.create;var bn=Object.defineProperty,Fg=Object.defineProperties,Oh=Object.getOwnPropertyDescriptor,Bg=Object.getOwnPropertyDescriptors,$g=Object.getOwnPropertyNames,Mh=Object.getOwnPropertySymbols,Ph=Object.getPrototypeOf,xh=Object.prototype.hasOwnProperty,Hg=Object.prototype.propertyIsEnumerable,Wg=Reflect.get;var Rn=Math.pow,Pl=(i,t,e)=>t in i?bn(i,t,{enumerable:!0,configurable:!0,writable:!0,value:e}):i[t]=e,J=(i,t)=>{for(var e in t||(t={}))xh.call(t,e)&&Pl(i,e,t[e]);if(Mh)for(var e of Mh(t))Hg.call(t,e)&&Pl(i,e,t[e]);return i},pe=(i,t)=>Fg(i,Bg(t));var vn=(i,t)=>()=>(t||i((t={exports:{}}).exports,t),t.exports),Kr=(i,t)=>{for(var e in t)bn(i,e,{get:t[e],enumerable:!0})},Gg=(i,t,e,r)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of $g(t))!xh.call(i,o)&&o!==e&&bn(i,o,{get:()=>t[o],enumerable:!(r=Oh(t,o))||r.enumerable});return i};var Ci=(i,t,e)=>(e=i!=null?Vg(Ph(i)):{},Gg(t||!i||!i.__esModule?bn(e,"default",{value:i,enumerable:!0}):e,i));var G=(i,t,e,r)=>{for(var o=r>1?void 0:r?Oh(t,e):t,s=i.length-1,a;s>=0;s--)(a=i[s])&&(o=(r?a(t,e,o):a(o))||o);return r&&o&&bn(t,e,o),o};var l=(i,t,e)=>Pl(i,typeof t!="symbol"?t+"":t,e);var Lt=(i,t,e)=>Wg(Ph(i),e,t);var A=(i,t,e)=>new Promise((r,o)=>{var s=h=>{try{d(e.next(h))}catch(m){o(m)}},a=h=>{try{d(e.throw(h))}catch(m){o(m)}},d=h=>h.done?r(h.value):Promise.resolve(h.value).then(s,a);d((e=e.apply(i,t)).next())});var ki=vn((Hy,mm)=>{"use strict";var JE=Object.prototype.hasOwnProperty,Ut="~";function ra(){}Object.create&&(ra.prototype=Object.create(null),new ra().__proto__||(Ut=!1));function zE(i,t,e){this.fn=i,this.context=t,this.once=e||!1}function lf(i,t,e,r,o){if(typeof e!="function")throw new TypeError("The listener must be a function");var s=new zE(e,r||i,o),a=Ut?Ut+t:t;return i._events[a]?i._events[a].fn?i._events[a]=[i._events[a],s]:i._events[a].push(s):(i._events[a]=s,i._eventsCount++),i}function md(i,t){--i._eventsCount===0?i._events=new ra:delete i._events[t]}function Rt(){this._events=new ra,this._eventsCount=0}Rt.prototype.eventNames=function(){var t=[],e,r;if(this._eventsCount===0)return t;for(r in e=this._events)JE.call(e,r)&&t.push(Ut?r.slice(1):r);return Object.getOwnPropertySymbols?t.concat(Object.getOwnPropertySymbols(e)):t};Rt.prototype.listeners=function(t){var e=Ut?Ut+t:t,r=this._events[e];if(!r)return[];if(r.fn)return[r.fn];for(var o=0,s=r.length,a=new Array(s);o<s;o++)a[o]=r[o].fn;return a};Rt.prototype.listenerCount=function(t){var e=Ut?Ut+t:t,r=this._events[e];return r?r.fn?1:r.length:0};Rt.prototype.emit=function(t,e,r,o,s,a){var d=Ut?Ut+t:t;if(!this._events[d])return!1;var h=this._events[d],m=arguments.length,T,I;if(h.fn){switch(h.once&&this.removeListener(t,h.fn,void 0,!0),m){case 1:return h.fn.call(h.context),!0;case 2:return h.fn.call(h.context,e),!0;case 3:return h.fn.call(h.context,e,r),!0;case 4:return h.fn.call(h.context,e,r,o),!0;case 5:return h.fn.call(h.context,e,r,o,s),!0;case 6:return h.fn.call(h.context,e,r,o,s,a),!0}for(I=1,T=new Array(m-1);I<m;I++)T[I-1]=arguments[I];h.fn.apply(h.context,T)}else{var v=h.length,N;for(I=0;I<v;I++)switch(h[I].once&&this.removeListener(t,h[I].fn,void 0,!0),m){case 1:h[I].fn.call(h[I].context);break;case 2:h[I].fn.call(h[I].context,e);break;case 3:h[I].fn.call(h[I].context,e,r);break;case 4:h[I].fn.call(h[I].context,e,r,o);break;default:if(!T)for(N=1,T=new Array(m-1);N<m;N++)T[N-1]=arguments[N];h[I].fn.apply(h[I].context,T)}}return!0};Rt.prototype.on=function(t,e,r){return lf(this,t,e,r,!1)};Rt.prototype.once=function(t,e,r){return lf(this,t,e,r,!0)};Rt.prototype.removeListener=function(t,e,r,o){var s=Ut?Ut+t:t;if(!this._events[s])return this;if(!e)return md(this,s),this;var a=this._events[s];if(a.fn)a.fn===e&&(!o||a.once)&&(!r||a.context===r)&&md(this,s);else{for(var d=0,h=[],m=a.length;d<m;d++)(a[d].fn!==e||o&&!a[d].once||r&&a[d].context!==r)&&h.push(a[d]);h.length?this._events[s]=h.length===1?h[0]:h:md(this,s)}return this};Rt.prototype.removeAllListeners=function(t){var e;return t?(e=Ut?Ut+t:t,this._events[e]&&md(this,e)):(this._events=new ra,this._eventsCount=0),this};Rt.prototype.off=Rt.prototype.removeListener;Rt.prototype.addListener=Rt.prototype.on;Rt.prefixed=Ut;Rt.EventEmitter=Rt;typeof mm!="undefined"&&(mm.exports=Rt)});var Cm=vn((IA,bf)=>{"use strict";var Af=bf.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(i){return i.encoding?"rtpmap:%d %s/%s/%s":i.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(i){return i.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(i){return i.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(i){return"extmap:%d"+(i.direction?"/%s":"%v")+(i["encrypt-uri"]?" %s":"%v")+" %s"+(i.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(i){return i.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(i){var t="candidate:%s %d %s %d %s %d typ %s";return t+=i.raddr!=null?" raddr %s rport %d":"%v%v",t+=i.tcptype!=null?" tcptype %s":"%v",i.generation!=null&&(t+=" generation %d"),t+=i["network-id"]!=null?" network-id %d":"%v",t+=i["network-cost"]!=null?" network-cost %d":"%v",t}},{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(i){var t="ssrc:%d";return i.attribute!=null&&(t+=" %s",i.value!=null&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(i){return i.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(i){return i.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(i){return"imageattr:%s %s %s"+(i.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(i){return"simulcast:%s %s"+(i.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(i){return"ts-refclk:%s"+(i.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(i){var t="mediaclk:";return t+=i.id!=null?"id=%s %s":"%v%s",t+=i.mediaClockValue!=null?"=%s":"",t+=i.rateNumerator!=null?" rate=%s":"",t+=i.rateDenominator!=null?"/%s":"",t}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Af).forEach(function(i){var t=Af[i];t.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Cf=vn(ui=>{"use strict";var Ds=function(i){return String(Number(i))===i?Number(i):i},rT=function(i,t,e,r){if(r&&!e)t[r]=Ds(i[1]);else for(var o=0;o<e.length;o+=1)i[o+1]!=null&&(t[e[o]]=Ds(i[o+1]))},iT=function(i,t,e){var r=i.name&&i.names;i.push&&!t[i.push]?t[i.push]=[]:r&&!t[i.name]&&(t[i.name]={});var o=i.push?{}:r?t[i.name]:t;rT(e.match(i.reg),o,i.names,i.name),i.push&&t[i.push].push(o)},Rf=Cm(),oT=RegExp.prototype.test.bind(/^([a-z])=(.*)/);ui.parse=function(i){var t={},e=[],r=t;return i.split(/(\r\n|\r|\n)/).filter(oT).forEach(function(o){var s=o[0],a=o.slice(2);s==="m"&&(e.push({rtp:[],fmtp:[]}),r=e[e.length-1]);for(var d=0;d<(Rf[s]||[]).length;d+=1){var h=Rf[s][d];if(h.reg.test(a))return iT(h,r,a)}}),t.media=e,t};var vf=function(i,t){var e=t.split(/=(.+)/,2);return e.length===2?i[e[0]]=Ds(e[1]):e.length===1&&t.length>1&&(i[e[0]]=void 0),i};ui.parseParams=function(i){return i.split(/;\s?/).reduce(vf,{})};ui.parseFmtpConfig=ui.parseParams;ui.parsePayloads=function(i){return i.toString().split(" ").map(Number)};ui.parseRemoteCandidates=function(i){for(var t=[],e=i.split(" ").map(Ds),r=0;r<e.length;r+=3)t.push({component:e[r],ip:e[r+1],port:e[r+2]});return t};ui.parseImageAttributes=function(i){return i.split(" ").map(function(t){return t.substring(1,t.length-1).split(",").reduce(vf,{})})};ui.parseSimulcastStreamList=function(i){return i.split(";").map(function(t){return t.split(",").map(function(e){var r,o=!1;return e[0]!=="~"?r=Ds(e):(r=Ds(e.substring(1,e.length)),o=!0),{scid:r,paused:o}})})}});var Nf=vn((yA,Df)=>{"use strict";var Dm=Cm(),sT=/%[sdv%]/g,nT=function(i){var t=1,e=arguments,r=e.length;return i.replace(sT,function(o){if(t>=r)return o;var s=e[t];switch(t+=1,o){case"%%":return"%";case"%s":return String(s);case"%d":return Number(s);case"%v":return""}})},ca=function(i,t,e){var r=t.format instanceof Function?t.format(t.push?e:e[t.name]):t.format,o=[i+"="+r];if(t.names)for(var s=0;s<t.names.length;s+=1){var a=t.names[s];t.name?o.push(e[t.name][a]):o.push(e[t.names[s]])}else o.push(e[t.name]);return nT.apply(null,o)},aT=["v","o","s","i","u","e","p","c","b","t","r","z","a"],cT=["i","c","b","a"];Df.exports=function(i,t){t=t||{},i.version==null&&(i.version=0),i.name==null&&(i.name=" "),i.media.forEach(function(s){s.payloads==null&&(s.payloads="")});var e=t.outerOrder||aT,r=t.innerOrder||cT,o=[];return e.forEach(function(s){Dm[s].forEach(function(a){a.name in i&&i[a.name]!=null?o.push(ca(s,a,i)):a.push in i&&i[a.push]!=null&&i[a.push].forEach(function(d){o.push(ca(s,a,d))})})}),i.media.forEach(function(s){o.push(ca("m",Dm.m[0],s)),r.forEach(function(a){Dm[a].forEach(function(d){d.name in s&&s[d.name]!=null?o.push(ca(a,d,s)):d.push in s&&s[d.push]!=null&&s[d.push].forEach(function(h){o.push(ca(a,d,h))})})})}),o.join(`\r
2
2
  `)+`\r
3
- `}});var mh=oi(Ai=>{"use strict";var gr=lh(),$f=hh();Ai.write=$f;Ai.parse=gr.parse;Ai.parseParams=gr.parseParams;Ai.parseFmtpConfig=gr.parseFmtpConfig;Ai.parsePayloads=gr.parsePayloads;Ai.parseRemoteCandidates=gr.parseRemoteCandidates;Ai.parseImageAttributes=gr.parseImageAttributes;Ai.parseSimulcastStreamList=gr.parseSimulcastStreamList});var eu=oi((UP,Hm)=>{"use strict";var Fm=Hm.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(s){return s.encoding?"rtpmap:%d %s/%s/%s":s.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(s){return s.address!=null?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%s trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(s){return s.subtype!=null?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))?(?: (urn:ietf:params:rtp-hdrext:encrypt))? (\S*)(?: (\S*))?/,names:["value","direction","encrypt-uri","uri","config"],format:function(s){return"extmap:%d"+(s.direction?"/%s":"%v")+(s["encrypt-uri"]?" %s":"%v")+" %s"+(s.config?" %s":"")}},{name:"extmapAllowMixed",reg:/^(extmap-allow-mixed)/},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(s){return s.sessionConfig!=null?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"connectionType",reg:/^connection:(new|existing)/,format:"connection:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*(?:\.\d*)*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*(?:\.\d*)*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(s){var i="candidate:%s %d %s %d %s %d typ %s";return i+=s.raddr!=null?" raddr %s rport %d":"%v%v",i+=s.tcptype!=null?" tcptype %s":"%v",s.generation!=null&&(i+=" generation %d"),i+=s["network-id"]!=null?" network-id %d":"%v",i+=s["network-cost"]!=null?" network-cost %d":"%v",i}},{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(s){var i="ssrc:%d";return s.attribute!=null&&(i+=" %s",s.value!=null&&(i+=":%s")),i}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(s){return s.maxMessageSize!=null?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(s){return s.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(s){return"imageattr:%s %s %s"+(s.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(s){return"simulcast:%s %s"+(s.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(s){return"ts-refclk:%s"+(s.clksrcExt!=null?"=%s":"")}},{name:"mediaClk",reg:/^mediaclk:(?:id=(\S*))? *([^\s=]*)(?:=(\S*))?(?: *rate=(\d+)\/(\d+))?/,names:["id","mediaClockName","mediaClockValue","rateNumerator","rateDenominator"],format:function(s){var i="mediaclk:";return i+=s.id!=null?"id=%s %s":"%v%s",i+=s.mediaClockValue!=null?"=%s":"",i+=s.rateNumerator!=null?" rate=%s":"",i+=s.rateDenominator!=null?"/%s":"",i}},{name:"keywords",reg:/^keywds:(.+)$/,format:"keywds:%s"},{name:"content",reg:/^content:(.+)/,format:"content:%s"},{name:"bfcpFloorCtrl",reg:/^floorctrl:(c-only|s-only|c-s)/,format:"floorctrl:%s"},{name:"bfcpConfId",reg:/^confid:(\d+)/,format:"confid:%s"},{name:"bfcpUserId",reg:/^userid:(\d+)/,format:"userid:%s"},{name:"bfcpFloorId",reg:/^floorid:(.+) (?:m-stream|mstrm):(.+)/,names:["id","mStream"],format:"floorid:%s mstrm:%s"},{push:"invalid",names:["value"]}]};Object.keys(Fm).forEach(function(s){var i=Fm[s];i.forEach(function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")})})});var Wm=oi(xi=>{"use strict";var Ds=function(s){return String(Number(s))===s?Number(s):s},hT=function(s,i,e,t){if(t&&!e)i[t]=Ds(s[1]);else for(var r=0;r<e.length;r+=1)s[r+1]!=null&&(i[e[r]]=Ds(s[r+1]))},mT=function(s,i,e){var t=s.name&&s.names;s.push&&!i[s.push]?i[s.push]=[]:t&&!i[s.name]&&(i[s.name]={});var r=s.push?{}:t?i[s.name]:i;hT(e.match(s.reg),r,s.names,s.name),s.push&&i[s.push].push(r)},$m=eu(),pT=RegExp.prototype.test.bind(/^([a-z])=(.*)/);xi.parse=function(s){var i={},e=[],t=i;return s.split(/(\r\n|\r|\n)/).filter(pT).forEach(function(r){var o=r[0],n=r.slice(2);o==="m"&&(e.push({rtp:[],fmtp:[]}),t=e[e.length-1]);for(var a=0;a<($m[o]||[]).length;a+=1){var d=$m[o][a];if(d.reg.test(n))return mT(d,t,n)}}),i.media=e,i};var Gm=function(s,i){var e=i.split(/=(.+)/,2);return e.length===2?s[e[0]]=Ds(e[1]):e.length===1&&i.length>1&&(s[e[0]]=void 0),s};xi.parseParams=function(s){return s.split(/;\s?/).reduce(Gm,{})};xi.parseFmtpConfig=xi.parseParams;xi.parsePayloads=function(s){return s.toString().split(" ").map(Number)};xi.parseRemoteCandidates=function(s){for(var i=[],e=s.split(" ").map(Ds),t=0;t<e.length;t+=3)i.push({component:e[t],ip:e[t+1],port:e[t+2]});return i};xi.parseImageAttributes=function(s){return s.split(" ").map(function(i){return i.substring(1,i.length-1).split(",").reduce(Gm,{})})};xi.parseSimulcastStreamList=function(s){return s.split(";").map(function(i){return i.split(",").map(function(e){var t,r=!1;return e[0]!=="~"?t=Ds(e):(t=Ds(e.substring(1,e.length)),r=!0),{scid:t,paused:r}})})}});var qm=oi((BP,Jm)=>{"use strict";var tu=eu(),fT=/%[sdv%]/g,_T=function(s){var i=1,e=arguments,t=e.length;return s.replace(fT,function(r){if(i>=t)return r;var o=e[i];switch(i+=1,r){case"%%":return"%";case"%s":return String(o);case"%d":return Number(o);case"%v":return""}})},zo=function(s,i,e){var t=i.format instanceof Function?i.format(i.push?e:e[i.name]):i.format,r=[s+"="+t];if(i.names)for(var o=0;o<i.names.length;o+=1){var n=i.names[o];i.name?r.push(e[i.name][n]):r.push(e[i.names[o]])}else r.push(e[i.name]);return _T.apply(null,r)},gT=["v","o","s","i","u","e","p","c","b","t","r","z","a"],TT=["i","c","b","a"];Jm.exports=function(s,i){i=i||{},s.version==null&&(s.version=0),s.name==null&&(s.name=" "),s.media.forEach(function(o){o.payloads==null&&(o.payloads="")});var e=i.outerOrder||gT,t=i.innerOrder||TT,r=[];return e.forEach(function(o){tu[o].forEach(function(n){n.name in s&&s[n.name]!=null?r.push(zo(o,n,s)):n.push in s&&s[n.push]!=null&&s[n.push].forEach(function(a){r.push(zo(o,n,a))})})}),s.media.forEach(function(o){r.push(zo("m",tu.m[0],o)),t.forEach(function(n){tu[n].forEach(function(a){a.name in o&&o[a.name]!=null?r.push(zo(n,a,o)):a.push in o&&o[a.push]!=null&&o[a.push].forEach(function(d){r.push(zo(n,a,d))})})})}),r.join(`\r
4
- `)+`\r
5
- `}});var iu=oi(Ui=>{"use strict";var Pr=Wm(),ET=qm();Ui.write=ET;Ui.parse=Pr.parse;Ui.parseParams=Pr.parseParams;Ui.parseFmtpConfig=Pr.parseFmtpConfig;Ui.parsePayloads=Pr.parsePayloads;Ui.parseRemoteCandidates=Pr.parseRemoteCandidates;Ui.parseImageAttributes=Pr.parseImageAttributes;Ui.parseSimulcastStreamList=Pr.parseSimulcastStreamList});import AF from"webrtc-adapter";var km=ke(Ge());var Au=(P=>(P[P.INVALID_PARAMETER=4096]="INVALID_PARAMETER",P[P.INVALID_OPERATION=4097]="INVALID_OPERATION",P[P.NOT_SUPPORTED=4098]="NOT_SUPPORTED",P[P.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",P[P.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",P[P.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",P[P.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",P[P.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",P[P.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",P[P.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",P[P.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",P[P.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",P[P.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",P[P.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",P[P.CLIENT_BANNED=16448]="CLIENT_BANNED",P[P.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",P[P.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",P[P.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",P[P.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",P[P.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",P[P.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",P[P.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",P[P.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",P[P.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",P[P.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",P[P.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",P[P.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",P[P.API_CALL_ABORTED=16461]="API_CALL_ABORTED",P[P.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",P[P.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",P[P.UNKNOWN=65535]="UNKNOWN",P))(Au||{}),S=Au;var Fp=function(s){for(let i in S)if(S[i]===s)return i;return"UNKNOWN"},mc=class extends Error{constructor({name:e="RtcError",message:t,code:r=S.UNKNOWN,extraCode:o=0,constraint:n}){let a=`<${Fp(r)} 0x${r.toString(16)}>`,d=`${t}${n?` constraint: ${n}`:""}${t!=null&&t.includes(a)?"":` ${a}`}`;super(d);c(this,"code");c(this,"extraCode");c(this,"message");c(this,"originMessage");c(this,"name");c(this,"constraint");this.code=r,this.extraCode=o,this.name=e,this.message=d,this.constraint=n,this.originMessage=t}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},b=mc;var Cu=new Date().getTime(),pc=0,Ru=function(s){Cu=s,pc=Cu-new Date().getTime();let i=new Date;i.setTime(s),C.info(`baseTime from server: ${i} offset: ${pc}`)},Bs=function(){return new Date().getTime()+pc},an=function(){let s=new Date;return s.setTime(Bs()),s.toLocaleString()};var st={};ni(st,{bytes2ms:()=>ku,convertObjectNumberToInt:()=>Ks,copyProperties:()=>Mu,deepClone:()=>lr,deepMerge:()=>Ht,delay:()=>hi,fibonacci:()=>hr,formatedTime:()=>Fu,getConstructorName:()=>zs,getContainerFromElement:()=>Bu,getEnv:()=>Du,getInternalVersion:()=>Uu,getLoggerUrl:()=>li,getMuteStateFromFlag:()=>ui,getNetworkType:()=>Dc,getNumNetworkType:()=>ur,getReconnectionTimeout:()=>Ct,getStringByteLength:()=>Ys,getTurnServer:()=>Vu,getUint32Version:()=>In,getValueType:()=>Ae,getViewListFromView:()=>Qr,glog:()=>kc,ipv4ToUint32:()=>Xr,isArray:()=>Te,isAudioWorkletSupported:()=>xu,isBoolean:()=>he,isConstructor:()=>Jr,isEmpty:()=>jr,isFunction:()=>se,isLangChinese:()=>At,isMediaStreamTrack:()=>Pu,isNumber:()=>Y,isObject:()=>ut,isOverseaSdkAppId:()=>Qs,isPlainObject:()=>Qe,isPortrait:()=>Sn,isPromise:()=>Wi,isRemoteTrack:()=>wu,isString:()=>K,isUndefined:()=>g,loadImage:()=>zr,ms2bytes:()=>Lu,ms2samples:()=>Mc,performanceNow:()=>L,promiseAny:()=>qr,samples2ms:()=>Oc,setNetworkType:()=>Tn,stringify:()=>ht,stringifyIncludeValue:()=>En,throttlePromise:()=>An});var vc={};ni(vc,{AUDIO_MUTE_BIT:()=>pn,AUDIO_STAT_BIT:()=>Fi,AUX_STAT_BIT:()=>nr,AUX_STREAM_MSID:()=>Sc,BACKEND_ENV:()=>mn,BASE_DOC_URL:()=>Bt,BASE_HOST:()=>yu,CAPABILITIES_KEYS:()=>gn,CLASS_NAME:()=>df,CLOUD_CONSOLE_URL:()=>Wp,CROSS_ROOM_BIT:()=>Ec,DATA_FREEZE_TIMING:()=>_n,DEFAULT_ASSETS_URL:()=>cn,DOC_URL:()=>Jp,DTLS_STATE_UNKNOWN:()=>It,ENV_NAME:()=>ai,EXCHANGE_SDP_TIMEOUT:()=>yc,INTERVAL:()=>dr,IS_WORKER:()=>Fr,IS_WORKLET:()=>Hs,KIBANA_EVENT:()=>Xe,LOCAL_STREAM_PUBLISH_STATE:()=>Nu,LOGGER_CMD_TYPE:()=>Vi,LOGGER_DOMAIN:()=>_c,LOGGER_DOMAIN_OVERSEA:()=>gc,LOG_LEVEL:()=>St,LOG_LEVEL_NAME:()=>uf,MAIN_STREAM_MSID:()=>Ws,MAX_RTT:()=>js,MICROPHONE_COMMUNICATIONS:()=>lf,MICROPHONE_DEFAULT:()=>cr,MUTE_ALL_BIT:()=>Xp,NAME:()=>h,NETWORK_TYPE:()=>dn,NOT_SUPPORTED_H264:()=>ar,PAUSED_RETRY_COUNT:()=>bc,PEERCONNECTION_CONNECTING_TIMEOUT:()=>Js,PEER_CONNECTION_STATE:()=>ce,PEER_LEAVE_REASON:()=>Nc,RAF:()=>Wr,RECOVER_CAPTURE_INTERVAL:()=>Gr,REMOTE_STREAM_TYPE_AUX:()=>Ac,REMOTE_STREAM_TYPE_MAIN:()=>Ic,RENDER_FREEZE_TIMING:()=>of,RIC:()=>$i,SCHEDULE_DOMAIN:()=>di,SCHEDULE_TIMEOUT:()=>cf,SDP_SEMANTICS_PLAN_B:()=>Hr,SDP_SEMANTICS_UNIFIED_PLAN:()=>Hi,SECOND_HOST:()=>$p,SIGNAL_PING_PONG_INTERVAL:()=>jp,SIGNAL_PING_TIMEOUT:()=>qp,SIGNAL_RECONNECTION_COUNT:()=>rf,SMALL_STAT_BIT:()=>Gs,SPEAKER_DEFAULT:()=>qs,STORAGE_EXPIRES_TIME:()=>ln,STREAM_TYPE_BIG:()=>nf,STREAM_TYPE_SMALL:()=>af,SUBSCRIBE_SMALL_RETRY_COUNT:()=>$r,SYNC_USER_LIST_INTERVAL:()=>sf,Scene:()=>Ft,THIRD_HOST:()=>Gp,TIMEOUT:()=>Gi,TRANSPORT_DIRECTION:()=>z,TRTC_ERROR_ASSISTANCE:()=>Tc,TRTC_QUALITY_BAD:()=>Zp,TRTC_QUALITY_DISCONNECTED:()=>tf,TRTC_QUALITY_EXCELLENT:()=>zp,TRTC_QUALITY_GOOD:()=>Yp,TRTC_QUALITY_POOR:()=>Kp,TRTC_QUALITY_UNKNOWN:()=>Qp,TRTC_QUALITY_VERY_BAD:()=>ef,UPDATE_OFFER_TIMEOUT:()=>Rc,VIDEO_MUTE_BIT:()=>fn,VIDEO_STAT_BIT:()=>Bi,audioProfileMap:()=>un,getRetryCount:()=>ci,getScriptDir:()=>Hp,innerVersion:()=>Fs,loggerProxy:()=>$s,screenProfileMap:()=>hn,setLoggerProxy:()=>or,setRetryCount:()=>Cc,setVersion:()=>fc,version:()=>Ce,videoProfileMap:()=>lt});var Fs="4.15.00.1600",Ce="5.0.0";function fc(s){Ce=s;let[i,e,t]=s.split(".").map(r=>parseInt(r,10));Fs=`${i}.${Math.min(15,e)}.${Math.min(15,t)}.${e.toString().padStart(2,"0")}${t.toString().padStart(2,"0")}`}var Fr=typeof importScripts!="undefined",Hs=typeof registerProcessor!="undefined",Hp=()=>{let s=Fr?self.location.href:document.currentScript.src;return s.substring(0,s.lastIndexOf("/")+1)},$s="",or=s=>$s=s,yu="web.sdk.qcloud.com",$p="web.sdk.tencent.cn",Gp="web.sdk.cloud.tencent.cn",Wp="https://console.cloud.tencent.com/trtc",Bt=`https://${yu}/trtc/webrtc/v5/doc`,cn="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",Jp=`${Bt}/zh-cn/`,_c="https://yun.tim.qq.com",gc="https://apisgp.my-imcloud.com",Tc="trtc_error_assistance",Vi={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},ai={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},St=(n=>(n[n.TRACE=0]="TRACE",n[n.DEBUG=1]="DEBUG",n[n.INFO=2]="INFO",n[n.WARN=3]="WARN",n[n.ERROR=4]="ERROR",n[n.NONE=5]="NONE",n))(St||{}),qp=18e3,jp=2e3,dn={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},ln=7*24*3600*1e3,un={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},lt={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},hn={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},h={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},z={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},mn={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Ft=(e=>(e.LIVE="live",e.RTC="rtc",e))(Ft||{}),Bi=1,Gs=2,nr=4,Fi=8,pn=64,fn=16,Xp=112,Ec=128,Ws="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",Sc="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",Ic=h.MAIN,Ac=h.AUXILIARY,Qp=0,zp=1,Yp=2,Kp=3,Zp=4,ef=5,tf=6,It="unknown",ce={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},bu=1/0;function Cc(s){bu=s}function ci(){return bu}var rf=30,Xe={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},sf=1e4,Rc=1e4,yc=1e4,Hi="unified-plan",Hr="plan-b",ar=1028,Nu=(t=>(t[t.UNPUBLISH=-1]="UNPUBLISH",t[t.PUBLISHING=0]="PUBLISHING",t[t.PUBLISHED=1]="PUBLISHED",t))(Nu||{}),_n=500,of=1e3,nf=h.BIG,af=h.SMALL,Js=10*1e3,di={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},cf=2e3,df={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},bc=5,cr="default",qs=cr,lf="communications",uf=Object.keys(St),Nc=["normal leave","timeout leave","kick","role change"],$r=10,Gr=2e3,$i="ric",Wr="raf",dr="interval",Gi="timeout",gn=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],js=10*1e3;var Du=function(){return new URLSearchParams(location.search).get("trtc_env")||""},Qs=s=>Number(s)<14e8,li=function(s,i){let e;$s?e=$s:e=Qs(s)?gc:_c;let t=Math.floor(Math.random()*Us(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${t}&sdkappid=${s}&cmdtype=${i}`},Xs="unknown";function Dc(){if(Xs!=="unknown")return Xs;let{userAgent:s,connection:i}=navigator,e=(s.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let t=i&&i.type&&i.type.toLowerCase(),r=i&&i.effectiveType&&i.effectiveType.toLowerCase();return r==="slow-2"&&(r="2g"),t&&(Xs=Ou(t,r)),Xs}function Ou(s,i){if(dn[s])return s;switch(s){case"cellular":case"wimax":return i||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Tn(s){Xs=Ou(s)}function ur(){return dn[Dc()]}function Mu(s,i){for(let e of Reflect.ownKeys(i))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let t=Object.getOwnPropertyDescriptor(i,e)||"";Object.defineProperty(s,e,t)}return s}function ku(s,i=48e3){return Oc(s/4,i)}function Oc(s,i=48e3){return s*1e3/i}function Lu(s,i=48e3){return Mc(s,i)*4}function Mc(s,i=48e3){return s*i/1e3}var kc=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},At=()=>{let s=navigator.language;return s=s.substring(0,2),s==="zh"},Qe=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function hr(s,i=1,e=1){return s<=1?e:hr(s-1,e,i+e)}function Ct(s){return s>8?30*1e3:hr(s)*1e3}function Ae(s){return Reflect.apply(Object.prototype.toString,s,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var se=s=>typeof s=="function",g=s=>typeof s=="undefined",K=s=>typeof s=="string",Y=s=>typeof s=="number",he=s=>typeof s=="boolean",ut=s=>Ae(s)==="object",Te=s=>Ae(s)==="array",Pu=s=>Ae(s)==="MediaStreamTrack".toLowerCase(),wu=s=>s.isRemote,Wi=s=>Ae(s)==="promise",Jr=s=>se(s)&&s.prototype.constructor===s,zs=s=>Jr(s)?s.prototype.constructor.name:"",xu=typeof AudioWorkletNode!="undefined";function qr(s){return new Promise((i,e)=>{let t=[];s.forEach(r=>{r.then(i).catch(o=>{t.push(o),t.length===s.length&&e(t)})})})}function L(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var vu=s=>+s<10?`0${s}`:s,Uu=s=>{let i=s.match(/^\d+\.\d+\.\d+/)[0];if(!i)return s;let e=i.split("."),t=vu(e[1])+vu(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${t}`},hf=Object.prototype.hasOwnProperty,{toString:QT}=Object.prototype;function jr(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Qe(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(hf.call(s,i))return!1;return!0}}return!1}function ui(s,i){return{userId:i,hasAudio:!!(s&Fi),hasVideo:!!(s&Bi),hasAuxiliary:!!(s&nr),hasSmall:!!(s&Gs),audioMuted:!!(s&pn),videoMuted:!!(s&fn),audioAvailable:!!(s&Fi)&&!(s&pn),videoAvailable:!!(s&Bi)&&!(s&fn)}}function Vu(s){let i={urls:s.url.startsWith("turn:")||s.url.startsWith("turns:")?s.url:`turn:${s.url}`};return!g(s.username)&&!g(s.credential)&&(i.username=s.username,i.credential=s.credential,i.credentialType="password",g(s.credentialType)||(i.credentialType=s.credentialType)),i}function Xr(s,i=!0){if(!K(s))return 0;let e=s.split(".");return i?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Ht=function(s,i,e,t){if(!(ut(s)&&ut(i)))return 0;let r=0,o=Object.keys(i),n;for(let a=0,d=o.length;a<d;a++)if(n=o[a],!(g(i[n])||e&&e.includes(n)))if(ut(s[n])&&ut(i[n]))r+=Ht(s[n],i[n],e,t);else{if(t&&t.includes(i[n]))continue;s[n]!==i[n]&&(s[n]=lr(i[n]),r+=1)}return r};function lr(s){if(Te(s)){let i=[];return s.forEach((e,t)=>{i[t]=lr(e)}),i}if(ut(s)){let i={};return Object.keys(s).forEach(e=>{i[e]=lr(s[e])}),i}return s}var Qr=s=>{let i=[];if(Te(s))i=[...s];else if(K(s)){let e=document.getElementById(s);e&&i.push(e)}else s&&i.push(s);return i},Bu=s=>K(s)?document.getElementById(s):s,mf=s=>{let i=d=>d<10?`0${d}`:`${d}`,e=s.getFullYear(),t=s.getMonth()+1,r=s.getDate(),o=i(s.getHours()),n=i(s.getMinutes()),a=i(s.getSeconds());return`${e}/${t}/${r} ${o}:${n}:${a}`},Fu=()=>mf(new Date);function ht(s,{keysToInclude:i,keysToExclude:e}){try{if(Te(s))return`[${s.map(n=>ht(n,{keysToInclude:i,keysToExclude:e})).join(",")}]`;if(!Qe(s)||!Te(i)&&!Te(e))return JSON.stringify(s);let t={},r=new Set(i),o=new Set(e);return Object.keys(s).forEach(n=>{(o.size===0&&r.has(n)||r.size===0&&!o.has(n))&&(t[n]=Qe(s[n])||Te(s[n])?JSON.parse(ht(s[n],{keysToExclude:e,keysToInclude:i})):s[n])}),JSON.stringify(t)}catch(t){return"{}"}}function En(s,i=!1){let e=[];return Object.keys(s).forEach(t=>{i===s[t]&&e.push(t)}),ht(s,{keysToInclude:e})}function Ys(s){return s.replace(/[\u4e00-\u9fa5]/g,"aa").length}var Sn=()=>{var s,i,e,t;return(s=window.screen)!=null&&s.orientation?!!((t=(e=(i=window.screen)==null?void 0:i.orientation)==null?void 0:e.type)!=null&&t.includes("portrait")):window.orientation===0||window.orientation===180},zr=s=>f(void 0,null,function*(){return new Promise((i,e)=>{let t;if(K(s))t=new Image,t.crossOrigin="anonymous",t.src=s;else if(t=s,t.complete){i(t);return}t.onload=()=>i(t),t.onerror=()=>{e(new b({code:S.INVALID_PARAMETER,message:`load image failed, url: ${s}`}))}})}),In=s=>{let i=s.split(".");return+i[0]<<24|+i[1]<<16|+i[2]<<8|+i[3]<<0},Ks=s=>(Object.keys(s).forEach(i=>{Y(s[i])&&(i.startsWith("uint")||i.startsWith("int"))?s[i]=Math.floor(s[i]):(Qe(s[i])||Te(s[i]))&&Ks(s[i])}),s);function hi(s,i){return new Promise(e=>{let t=setTimeout(e,s);i&&i(t)})}function An(s,i){let e=null;return function(...t){return e||(e=s.apply(i||this,t),e.finally(()=>e=null),e)}}function mi({url:s,body:i,method:e="POST",timeout:t,priority:r}){return new Promise((o,n)=>{if("fetch"in window)return fetch(s,{method:e,body:i,priority:r}).then(d=>d.text()).then(d=>{try{o({data:JSON.parse(d)})}catch(l){o({data:d})}},n);let a=new XMLHttpRequest;a.onreadystatechange=()=>{if(a.readyState===4)if(a.status>=200&&a.status<300)try{let d=JSON.parse(a.response);o({data:d})}catch(d){o({data:a.response})}else n({status:a.status,statusText:a.statusText||"request failed!"})},a.timeout=t||5e3,a.open(e,s,!0),a.send(i)})}function Lc(s){return f(this,null,function*(){let i=L(),e=JSON.stringify(s);try{if(!CompressionStream||e.length<=2800)return e;let r=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),a=yield(yield(yield new Response(r)).blob()).arrayBuffer();return C.debug(`compressJSON ${e.length} -> ${a.byteLength} ${L()-i}ms`),a}catch(t){return e}})}var pf=Object.prototype.hasOwnProperty;var $t=s=>typeof s=="function",pi=s=>typeof s=="undefined";var Hu=s=>typeof s=="boolean";var Pc=s=>s.isRemote;var ff=function(s){if(!s||typeof s!="object"||Object.prototype.toString.call(s)!="[object Object]")return!1;let i=Object.getPrototypeOf(s);if(i===null)return!0;let e=Object.prototype.hasOwnProperty.call(i,"constructor")&&i.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function $u(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(ff(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(pf.call(s,i))return!1;return!0}}return!1}var _f=0,gf=1,Gu=2;function Tf({retryFunction:s,settings:i,onError:e,onRetrying:t,onRetryFailed:r,onRetrySuccess:o,context:n}){return function(...a){let{retries:d=5,timeout:l=1e3}=i,m=0,u=-1,p=_f,_=(I,R)=>f(this,null,function*(){let D=n||this;try{let G=yield s.apply(D,a);m>0&&o&&o.call(this,m),m=0,I(G)}catch(G){let te=()=>{clearTimeout(u),m=0,p=Gu,R(G)},sn=()=>{p!==Gu&&m<($t(d)?d():d)?(m++,p=gf,$t(t)&&t.call(this,m,te),u=window.setTimeout(()=>{u=-1,_(I,R)},$t(l)?l(m):l)):(te(),$t(r)&&r.call(this,G))};$t(e)?e.call(this,{error:G,retry:sn,reject:R,retryFuncArgs:a,retriedCount:m}):sn()}});return new Promise(_)}}var Gt=Tf;var Yr=class{constructor(i){c(this,"userId");c(this,"remoteUserId");c(this,"id");c(this,"sdkAppId");c(this,"type");c(this,"isLocal");this.id=i.id,this.userId=i.userId,this.sdkAppId=i.sdkAppId,this.remoteUserId=i.remoteUserId,this.isLocal=Hu(i.isLocal)?i.isLocal:!0,this.type=this.isLocal?"":i.type}createChild(i){return Object.setPrototypeOf(i,this)}setUserId(i){this.userId=i}setSdkAppId(i){this.sdkAppId=i}log(i,e){let t=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${t?`|${t}`:""}]`),C.log(i,e,pi(this.userId)||$u(this.userId),this.userId,this.sdkAppId)}info(...i){this.log(2,i)}debug(...i){this.log(1,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}};var as={};ni(as,{ANDROID_VERSION:()=>Uc,CHROME_MAJOR_VERSION:()=>Dt,CHROME_VERSION:()=>Bn,EDGE_VERSION:()=>Rn,EDG_MAJOR_VERSION:()=>Bc,EDG_VERSION:()=>yn,FIREFOX_MAJOR_VERSION:()=>Vc,FIREFOX_VERSION:()=>Cn,HUAWEI_VERSION:()=>wn,IE_VERSION:()=>Cf,IOS_MAIN_VERSION:()=>ot,IOS_VERSION:()=>ji,IPADQQB_VERSION:()=>Ln,IS_ANDROID:()=>me,IS_ANDROID_WEBVIEW:()=>Jc,IS_ANY_SAFARI:()=>Ji,IS_CHROME:()=>ns,IS_CHROME_OS:()=>Fc,IS_CHROMIUM_BASE:()=>vt,IS_EDG:()=>es,IS_EDGE:()=>Zr,IS_ELECTRON:()=>yf,IS_FIREFOX:()=>ae,IS_HEADLESS_CHROME:()=>Wc,IS_HONOR:()=>Gc,IS_HUAWEI:()=>$c,IS_HUAWEIBROWSER:()=>co,IS_IE:()=>ju,IS_IE8:()=>Af,IS_IOS:()=>xe,IS_IOS_13_OR_14:()=>jc,IS_IOS_15_1:()=>qc,IS_IPAD:()=>Zs,IS_IPADQQB:()=>oo,IS_IPAD_PRO:()=>xc,IS_IPHONE:()=>mr,IS_IPOD:()=>qu,IS_LINUX:()=>no,IS_LOCAL:()=>Ot,IS_MAC:()=>Nt,IS_MACQQB:()=>so,IS_MIBROWSER:()=>ao,IS_MQQB:()=>rs,IS_NATIVE_ANDROID:()=>If,IS_OLD_ANDROID:()=>Sf,IS_OPPOBROWSER:()=>ss,IS_SAFARI:()=>ze,IS_SAFARI_15_1:()=>bf,IS_SAMSUNGBROWSER:()=>lo,IS_SOGOU:()=>to,IS_SOGOUM:()=>eo,IS_TBS:()=>bt,IS_UCBROWSER:()=>Hc,IS_VIVOBROWSER:()=>os,IS_WECHAT:()=>ts,IS_WIN:()=>fi,IS_WQQB:()=>ro,IS_WX:()=>Rf,IS_X5MQQB:()=>is,IS_XWEB:()=>io,MACQQB_VERSION:()=>kn,MI_VERSION:()=>Pn,MQQB_VERSION:()=>Kr,OPPO_VERSION:()=>Un,SAFARI_VERSION:()=>qi,SAMSUNG_VERSION:()=>xn,SOGOUM_VERSION:()=>bn,SOGOU_VERSION:()=>Nn,TBS_VERSION:()=>vn,UA_DATA_STRING:()=>Rt,USER_AGENT:()=>yt,VIVO_VERSION:()=>Vn,WECHAT_VERSION:()=>On,WQQB_VERSION:()=>Mn,XWEB_VERSION:()=>Dn,browserInfo:()=>Wt,getBrowserInfo:()=>Xu,getChromeMajorVersion:()=>_i,getDeviceModel:()=>pr,getOSName:()=>Fn,getOSNumber:()=>ho,getOSString:()=>Ti,getOSType:()=>Nf,getTerminalType:()=>Xc,getUserAgentData:()=>uo,isLocalStorageEnabled:()=>gi});var yt=typeof navigator=="undefined"?"":navigator.userAgent,X=s=>new RegExp(s,"i").test(yt),Re=s=>{if(X(s)){let i=new RegExp(`${s}\\/([\\d.]+)`),e=yt.match(i);if(e&&e[1])return e[1]}return""},wc=s=>{if(X(s)){let i=new RegExp(`${s}\\/(\\d+)`),e=yt.match(i);if(e&&e[1])return parseFloat(e[1])}return NaN},Wu=/AppleWebKit\/([\d.]+)/i.exec(yt),Ef=Wu?parseFloat(Wu[1]):NaN,Zs=X("iPad"),xc=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&X("Macintosh"),mr=X("iPhone")&&!Zs,qu=X("iPod"),xe=mr||Zs||qu||xc,me=X("Android"),Uc=function(){if(me){let s=yt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(s){let i=s[1]&&parseFloat(s[1]),e=s[2]&&parseFloat(s[2]);if(i&&e)return parseFloat(`${s[1]}.${s[2]}`);if(i)return i}}return NaN}(),Sf=me&&X("webkit")&&Uc<2.3,If=me&&Uc<5&&Ef<537,ae=X("Firefox"),Cn=Re("Firefox"),Vc=wc("Firefox"),Zr=X("Edge"),Rn=Re("Edge"),es=X("Edg"),yn=Re("Edg"),Bc=wc("Edg"),eo=X("SogouMobileBrowser"),bn=Re("SogouMobileBrowser"),to=X("MetaSr\\s"),Nn=Re("MetaSr\\s"),bt=X("TBS"),vn=Re("TBS"),io=X("XWEB"),Dn=Re("XWEB"),Af=X("MSIE\\s8\\.0"),ju=X("MSIE\\/\\d+"),Cf=function(){if(ju){let s=/MSIE\s(\d+)\.\d/.exec(yt),i=s&&parseFloat(s[1]);return!i&&/Trident\/7.0/i.test(yt)&&/rv:11.0/.test(yt)&&(i=11),i}return NaN}(),ts=X("(micromessenger|webbrowser)"),On=Re("MicroMessenger"),is=!bt&&X("MQQBrowser")&&X("COVC"),rs=!bt&&X("MQQBrowser")&&!X("COVC"),Kr=rs||is?Re("MQQBrowser"):"",ro=!bt&&X(" QQBrowser"),Mn=Re(" QQBrowser"),so=!bt&&X("QQBrowserLite"),kn=Re("QQBrowserLite"),oo=!bt&&X("MQBHD"),Ln=Re("MQBHD"),fi=X("Windows"),Nt=!xe&&X("MAC OS X"),no=!me&&X("Linux"),Fc=X("CrOS"),Rf=X("MicroMessenger"),Hc=X("UCBrowser"),yf=X("Electron"),ao=X("MiuiBrowser"),Pn=Re("MiuiBrowser"),co=X("HuaweiBrowser"),$c=X("Huawei")||X("HUAWEI"),Gc=X("Honor")||X("HONOR"),wn=Re("HuaweiBrowser"),lo=X("SamsungBrowser"),xn=Re("SamsungBrowser"),ss=X("HeyTapBrowser"),Un=Re("HeyTapBrowser"),os=X("VivoBrowser"),Vn=Re("VivoBrowser"),_i=()=>wc("Chrome"),vt=X("Chrome"),ns=!Zr&&!to&&!eo&&!bt&&!io&&!es&&!ro&&!ao&&!co&&!lo&&!ss&&!os&&vt,Wc=X("HeadlessChrome"),Dt=_i(),Bn=Re("Chrome"),ze=!vt&&!rs&&!is&&!so&&!oo&&X("Safari"),Ji=ze||xe,qi=Re("Version"),Jc=/Android.*(wv|.0.0.0)/.test(yt),ji=(()=>{if(xc)return qi;if(xe){let s=yt.match(/OS (\d+)_(\d+)/i);if(s&&s[1]){let i=s[1];return s[2]&&(i+=`.${s[2]}`),i}}return""})(),ot=Number(ji.split(".")[0]),bf=qi==="15.1",qc=ji==="15.1",jc=(()=>{let s=Number(ji.split(".")[0]);return s===14||s===13})(),Ot=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",gi=(()=>{let s;return()=>{if(typeof s=="undefined")try{s=!!window.localStorage}catch(i){s=!1}return s}})(),Wt=Xu();function Xu(){let s=new Map([[ae,["Firefox",Cn]],[es,["Edg",yn]],[ns,["Chrome",Bn]],[ze,["Safari",qi]],[bt,["TBS",vn]],[io,["XWEB",Dn]],[ts&&mr,["WeChat",On]],[ro,["QQ(Win)",Mn]],[rs,["QQ(Mobile)",Kr]],[is,["QQ(Mobile X5)",Kr]],[so,["QQ(Mac)",kn]],[oo,["QQ(iPad)",Ln]],[ao,["MI",Pn]],[co,["HW",wn]],[lo,["Samsung",xn]],[ss,["OPPO",Un]],[os,["VIVO",Vn]],[Zr,["EDGE",Rn]],[eo,["SogouMobile",bn]],[to,["Sogou",Nn]]]),i="unknown",e="unknown";return s.has(!0)&&([i,e]=s.get(!0)),{name:i,version:e}}var ne=null,Rt="";function uo(){return f(this,null,function*(){if(ne)return ne;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return ne=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),ne&&!Rt&&(Rt=`UAData: ${ne.platform}/${ne.platformVersion}`,ne.architecture&&ne.bitness&&(Rt+=` ${ne.architecture}/${ne.bitness}`),ne.mobile&&(Rt+=" mobile"),ne.model&&(Rt+=` model: ${ne.model}`),ne.fullVersionList&&(Rt+=` ${ne.fullVersionList.filter(s=>s.brand!=="Not/A)Brand").map(s=>`${s.brand}/${s.version}`).join(",")}`)),ne}catch(s){return null}})}function pr(){return(ne==null?void 0:ne.model)||""}var Ju=new Map([[me,"Android"],[xe,"iOS"],[fi,"Windows"],[Nt,"MacOS"],[no,"Linux"],[Fc,"ChromeOS"]]),Fn=function(){return Ju.get(!0)?Ju.get(!0):ne?ne.platform:"unknown"};function ho(){return fi?1:me?2:Nt?3:xe?4:no?5:Fc?6:0}var Ti=()=>{let s=Fn();return s+=`/${Wt.name}/${ze?Wt.version:Wt.version.split(".")[0]}`,ne!=null&&ne.platformVersion&&(s+=`/${ne.platformVersion}`),ne!=null&&ne.architecture&&(s+=`/${ne.architecture}`),s};function Xc(){return me?4:mr?2:Zs?3:Nt?12:fi?5:no?13:1}function Nf(){return me?"Android":mr?"iPhone":Zs?"iPad":Nt?"Mac":fi?"Windows":no?"Linux":"unknown"}var Qu=ke(Ge(),1),vf=new Qu.default,E=vf;var Ei=(W=>(W.ROOM_DESTROY="1",W.JOIN_START="21",W.JOIN_SCHEDULE_SUCCESS="22",W.JOIN_SIGNAL_CONNECTION_START="23",W.JOIN_SIGNAL_CONNECTION_END="24",W.JOIN_SEND_CMD="25",W.JOIN_RECEIVED_CMD_RES="26",W.JOIN_SUCCESS="27",W.JOIN_FAILED="28",W.LEAVE_START="51",W.LEAVE_SEND_CMD="52",W.LEAVE_SUCCESS="53",W.PUBLISH_START="61",W.SEND_FIRST_VIDEO_FRAME="62",W.PUBLISH_FAILED="63",W.SUBSCRIBE_START="81",W.SUBSCRIBE_SUCCESS="82",W.SUBSCRIBE_FAILED="84",W.UNSUBSCRIBE_SUCCESS="83",W.LOCAL_TRACK_CAPTURE_START="101",W.LOCAL_TRACK_CAPTURE_SUCCESS="102",W.LOCAL_TRACK_CAPTURE_FAILED="103",W.LOCAL_TRACK_PUBLISHED="104",W.LOCAL_TRACK_UNPUBLISHED="105",W.LOCAL_TRACK_REPLACED="106",W.SWITCH_DEVICE_SUCCESS="107",W.TRACK_MUTED="108",W.TRACK_UNMUTED="109",W.REMOTE_TRACK_SUBSCRIBED="110",W.REMOTE_TRACK_UNSUBSCRIBED="111",W.LOCAL_TRACK_RECAPTURE="112",W.PLAY_TRACK_START="151",W.PLAYER_STATE_CHANGED="152",W.VIDEO_LOADED_DATA="153",W.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",W.SIGNAL_CONNECTION_STATE_CHANGED="201",W.PEER_CONNECTION_STATE_CHANGED="202",W.SINGLE_CONNECTION_STAT="203",W.SPC_RECONNECTED="204",W.HEARTBEAT_REPORT="251",W.RECEIVED_PUBLISHED_USER_LIST="252",W.REMOTE_PUBLISH_STATE_CHANGED="253",W.AUDIO_LEVEL_INTERVAL="260",W.NETWORK_QUALITY="261",W.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",W.QUALITY_LIMITATION_CHANGED="263",W.LOG="264",W))(Ei||{});var T=Ei;var Df="%cTRTC%c%s",Of="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",Mf="display: inline",Hn=class Hn{constructor(){c(this,"_isEnableUploadLog",!0);c(this,"_localJoinedUser",new Map);c(this,"_queue",[]);c(this,"_timeoutId",-1);c(this,"_logLevel",1);c(this,"_logLevelToUpload",2);!Fr&&!Hs&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){E.on(T.JOIN_SCHEDULE_SUCCESS,({schedule:i})=>{var e;(e=i==null?void 0:i.config)!=null&&e.logLevelToUpload&&St[i.config.logLevelToUpload]&&(this._logLevelToUpload=i.config.logLevelToUpload)}),E.on(T.JOIN_SUCCESS,({room:i})=>{this.addJoinedUser({userId:i.userId,sdkAppId:i.sdkAppId}),this.startUpload()}),E.once(T.JOIN_FAILED,()=>{this.startUpload()}),E.on(T.LEAVE_SUCCESS,({room:i})=>{this.deleteJoinedUser(i.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(i){this._localJoinedUser.set(i.userId,i),this.startUpload()}deleteJoinedUser(i){this._localJoinedUser.delete(i)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let i={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return i;let e=0;for(;e<this._queue.length&&e!==50;e++){let t=this._queue[e];if(t.forAllJoinedClients)this._localJoinedUser.forEach(({userId:r,sdkAppId:o})=>{i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})});else if(K(t.userId)&&Y(t.sdkAppId)){let{userId:r,sdkAppId:o}=t;i.map.has(r)?i.map.get(r).logs.push(t):i.map.set(r,{userId:r,sdkAppId:o,logs:[t]})}}return i.map.size>0&&(i.splicedQueue=this._queue.splice(0,e)),i}upload(){return f(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:i,splicedQueue:e}=this.getLogsToUpload();if(i.size===0)return;try{let r=[...i.values()];for(let o=0;o<r.length;o++){let{userId:n,sdkAppId:a,logs:d}=r[o];yield this.uploadLogWithRetry(JSON.stringify({timestamp:an(),sdkAppId:String(a),userId:n,version:Ce,log:d.map(l=>l.log).join(`
6
- `)}),a),d.forEach(l=>l.uploaded=!0)}}catch(r){}let t=e.filter(r=>!r.uploaded);t.length>0&&(this._queue=t.concat(this._queue))})}uploadLogWithRetry(i,e){return Gt({retryFunction:()=>mi({url:li(e,Vi.LOG),body:i,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:t})=>{t()}})()}getPrefix(i){let e=new Date;e.setTime(Bs());let t=String(e.getMilliseconds());return"padStart"in String.prototype&&(t=t.toString().padStart(3,"0")),`[${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${t}] <${St[i]}>`}getLogLevel(){return this._logLevel}setLogLevel(i){g(St[i])||(this._logLevel!==i&&this.info("setLogLevel",i),this._logLevel=i)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(i){if(K(i))return i;try{return i instanceof Error?i.toString():JSON.stringify(i)}catch(e){return""}}log(i,e,t=!0,r,o){var d;e.unshift(this.getPrefix(i));let n={log:e.reduce((l,m)=>`${l} ${this.logChunkToString(m)}`.trim(),""),level:i,userId:r,sdkAppId:o,forAllJoinedClients:t};if(E.emit(T.LOG,{log:n}),this._isEnableUploadLog&&i>=this._logLevelToUpload&&this._queue.push(n),i<this._logLevel)return;let a=((d=St[i])==null?void 0:d.toLowerCase())||"info";Hn.PRINT_LOG_TAG?console[a](Df,Of,Mf,...e):console[a](...e)}debug(...i){this.log(1,i)}info(...i){this.log(2,i)}warn(...i){this.log(3,i)}error(...i){this.log(4,i)}createLogger(i){return new Yr(i)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),t=e?Number(e):-1;St[t]&&(this._logLevelToUpload=t)}getQueue(){return this._queue}};c(Hn,"PRINT_LOG_TAG",!(xe||me||Wc));var Qc=Hn,C=new Qc;var kf=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,s=>{let i=Math.random()*16|0;return(s=="x"?i:i&3|8).toString(16)})},mo=kf;var zc=class{constructor(){c(this,"_prefix","TRTC");c(this,"_queue",new Map)}getRealKey(i){return`${this._prefix}_${i}`}checkStorage(){if(!gi())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(t=>{if(t.startsWith(this._prefix))try{let r=localStorage.getItem(t);if(!r)return!1;let o=JSON.parse(r);if(o&&o.expiresIn<Date.now())return!0}catch(r){return!1}return!1}).forEach(t=>localStorage.removeItem(t))}doFlush(){if(gi())try{for(let[i,e]of this._queue)localStorage.setItem(i,JSON.stringify(e))}catch(i){C.warn(i)}}getItem(i){if(!gi())return null;try{let e=localStorage.getItem(this.getRealKey(i));if(!e)return null;let t=JSON.parse(e);return t&&t.expiresIn>=Date.now()?t.value:null}catch(e){C.warn(e)}}setItem(i,e){if(gi())try{let t={expiresIn:Date.now()+ln,value:e};this._queue.set(this.getRealKey(i),t)}catch(t){C.warn(t)}}deleteItem(i){if(!gi())return!1;try{return i=this.getRealKey(i),this._queue.delete(i),localStorage.removeItem(i),!0}catch(e){return C.warn(e),!1}}clear(){if(gi())try{localStorage.clear()}catch(i){C.warn(i)}}},cs=new zc;var jt={};ni(jt,{HTTPS_API:()=>zf,IS_GET_CAPABILITIES_SUPPORTED:()=>Id,IS_GET_SETTINGS_SUPPORTED:()=>qt,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>Sd,IS_INSERTABLE_STREAM_SUPPORTED:()=>Ri,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>Rd,IS_RTC_RTP_SENDER_SUPPORTED:()=>Io,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Yn,IS_SEI_SUPPORTED:()=>Co,IS_SPC_SUPPORTED:()=>us,basis:()=>e_,capabilityCheck:()=>Cd,checkSystemRequirementsInternal:()=>zn,decodeSupportStatus:()=>Qn,encodeSupportStatus:()=>_d,getBrowserInfo:()=>jf,getDisplayResolution:()=>_h,isAddTransceiverSupported:()=>pt,isBrowserSupported:()=>gd,isGetReceiversSupported:()=>Er,isGetSendersSupported:()=>Yi,isGetTransceiversSupported:()=>Jt,isGetUserMediaSupported:()=>gh,isMediaDevicesSupported:()=>Xn,isMediaSessionSupported:()=>Ih,isMediaStreamTrackProcessorSupported:()=>Td,isReplaceTrackSupported:()=>Ed,isRequestVideoFrameCallbackSupported:()=>Sr,isSIMDSupported:()=>Zf,isScreenCaptureApiAvailable:()=>Eo,isSelectedCandidatePair:()=>zi,isSetParametersSupported:()=>Ao,isSmallStreamAPISupported:()=>Eh,isSmallStreamSupported:()=>So,isStopTransceiverSupported:()=>Kf,isTRTCSupported:()=>Xf,isUnifiedPlanDefault:()=>Yf,isUsedInHttpProtocol:()=>Ci,isWebAudioSupported:()=>Th,isWebCodecSupported:()=>Sh,isWebCodecsSupported:()=>fh,isWebRTCSupported:()=>Ad,isWebTransportSupported:()=>Ah});var dd={};ni(dd,{AUDIO_LEVEL_SCALE:()=>mt,AudioCodecPipelineType:()=>ad,AudioDecoderDowngradeState:()=>ed,AudioPlayerMode:()=>od,AudioType:()=>Zu,BASIC_TYPE:()=>_r,BannedReason:()=>nd,CONNECTION_CLOSED_REASON:()=>Kc,ClientEvent:()=>zu,CodecType:()=>sh,ConnectionEvent:()=>Mt,ConnectionState:()=>nt,DECODE_FAILED_ERROR_CODE:()=>cd,FacingMode:()=>$n,LeaveReason:()=>rh,LocalTrackEvent:()=>po,MULTI_VIDEO_DATA_TYPE:()=>kt,MediaType:()=>Ne,MediaTypeLabel:()=>Lf,MonitorEventId:()=>_o,MutedFlag:()=>Ku,NetworkQualityValue:()=>sd,PlayerState:()=>ds,ReceiveMode:()=>ih,RemoteStreamType:()=>Ye,RemoteTrackEvent:()=>fo,RoomEvent:()=>Xi,SceneNumber:()=>Zc,StreamEvent:()=>Yu,StreamType:()=>th,SubscribeMediaType:()=>Yc,TRACK_ACTION:()=>rd,TRACK_KIND:()=>id,TrackEvent:()=>Si,UserRole:()=>We,UserRoleNumber:()=>fr,VideoCodec:()=>Qi,VideoCodecPipelineType:()=>Wn,VideoContentHint:()=>go,VideoDecoderDowngradeState:()=>td,VideoPlayerMode:()=>Gn,VideoType:()=>eh});var Mt=(R=>(R.TRACK_ADDED="track-added",R.TRACK_UPDATED="track-updated",R.TRACK_SUBSCRIBED="track-subscribed",R.STREAM_ADDED="stream-added",R.STREAM_REMOVED="stream-removed",R.STREAM_UPDATED="stream-updated",R.STREAM_PUBLISHED="stream-published",R.STREAM_SUBSCRIBED="stream-subscribed",R.STREAM_UNSUBSCRIBED="stream-unsubscribed",R.STATE_CHANGED="state-changed",R.ERROR="error",R.CONNECTION_STATE_CHANGED="connection-state-changed",R.FIREWALL_RESTRICTION="firewall-restriction",R.SEI_MESSAGE="sei-message",R.CLOSED="closed",R))(Mt||{}),Kc=(n=>(n.REMOTE_LEAVE="remote user exitRoom",n.REMOTE_UNPUBLISH="remote user unpublished",n.LOCAL_LEAVE="you exitRoom",n.LOCAL_UNPUBLISH="you unpublished",n.LOCAL_UNSUBSCRIBE="you unsubscribed",n.SWITCH_ROLE="you switch role to audience",n))(Kc||{}),zu=(D=>(D.STREAM_ADDED="stream-added",D.STREAM_REMOVED="stream-removed",D.STREAM_UPDATED="stream-updated",D.STREAM_SUBSCRIBED="stream-subscribed",D.CONNECTION_STATE_CHANGED="connection-state-changed",D.PEER_JOIN="peer-join",D.PEER_LEAVE="peer-leave",D.MUTE_AUDIO="mute-audio",D.MUTE_VIDEO="mute-video",D.UNMUTE_AUDIO="unmute-audio",D.UNMUTE_VIDEO="unmute-video",D.CLIENT_BANNED="client-banned",D.NETWORK_QUALITY="network-quality",D.AUDIO_VOLUME="audio-volume",D.SEI_MESSAGE="sei-message",D.ERROR="error",D))(zu||{}),Yu=(o=>(o.PLAYER_STATE_CHANGED="player-state-changed",o.SCREEN_SHARING_STOPPED="screen-sharing-stopped",o.CONNECTION_STATE_CHANGED="connection-state-changed",o.DEVICE_AUTO_RECOVERED="device-auto-recovered",o.ERROR="error",o))(Yu||{}),po=(n=>(n.DEVICE_AUTO_RECOVERED="1",n.DEVICE_RECOVER_FAILED="5",n.DEVICE_CHANGED="2",n.ERROR="3",n.PUBLISH_STATE_CHANGED="4",n.ENCODE_FAILED="6",n))(po||{}),ds=(t=>(t.PAUSED="PAUSED",t.PLAYING="PLAYING",t.STOPPED="STOPPED",t))(ds||{}),Xi=(te=>(te.PEER_JOIN="peer-join",te.PEER_LEAVE="peer-leave",te.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",te.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",te.BANNED="banned",te.NETWORK_QUALITY="network-quality",te.AUDIO_VOLUME="audio-volume",te.SEI_MESSAGE="sei-message",te.ERROR="error",te.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",te.REMOTE_PUBLISHED="remote-published",te.REMOTE_UNPUBLISHED="remote-unpublished",te.FIREWALL_RESTRICTION="firewall-restriction",te.HEARTBEAT_REPORT="heartbeat-report",te.CUSTOM_MESSAGE="custom-message",te.LAYER_DATA="layerData",te.FIRST_VIDEO_FRAME="first-video-frame",te.DUMP="dump",te))(Xi||{}),Si=(a=>(a.PLAYER_STATE_CHANGED="player-state-changed",a.MUTE="mute",a.UNMUTE="unmute",a.ERROR="error",a.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",a.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",a.FIRST_VIDEO_FRAME="first-video-frame",a))(Si||{}),fo=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(fo||{}),Ku=(a=>(a[a.VIDEO=1]="VIDEO",a[a.SMALL=2]="SMALL",a[a.AUX=4]="AUX",a[a.AUDIO=8]="AUDIO",a[a.VIDEO_MUTE=16]="VIDEO_MUTE",a[a.AUX_MUTE=32]="AUX_MUTE",a[a.AUDIO_MUTE=64]="AUDIO_MUTE",a))(Ku||{}),Zc=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(Zc||{}),fr=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(fr||{}),We=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(We||{}),nt=(o=>(o.CONNECTED="CONNECTED",o.DISCONNECTED="DISCONNECTED",o.CONNECTING="CONNECTING",o.RECONNECTED="RECONNECTED",o.RECONNECTING="RECONNECTING",o))(nt||{}),ed=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(ed||{}),td=(r=>(r.INITIALIZED="INITIALIZED",r.STARTING="STARTING",r.STARTED="STARTED",r.FAILED="FAILED",r))(td||{}),id=(t=>(t.AUDIO="audio",t.VIDEO="video",t.AUXILIARY="auxVideo",t))(id||{}),rd=(e=>(e.ADD="add",e.REMOVE="remove",e))(rd||{}),Ne=(o=>(o[o.NULL=0]="NULL",o[o.AUDIO=1]="AUDIO",o[o.AUX_VIDEO=2]="AUX_VIDEO",o[o.BIG_VIDEO=4]="BIG_VIDEO",o[o.SMALL_VIDEO=8]="SMALL_VIDEO",o))(Ne||{}),Lf={1:"audio",2:"auxVideo",4:"video"},Zu=(i=>(i[i.opus=111]="opus",i))(Zu||{}),eh=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(eh||{}),th=(e=>(e.Big="big",e.Small="small",e))(th||{}),Ye=(e=>(e.Main="main",e.Aux="auxiliary",e))(Ye||{}),kt=(o=>(o[o.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",o[o.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",o[o.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",o[o.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",o[o.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",o))(kt||{}),_o=(O=>(O[O.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",O[O.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",O[O.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",O[O.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",O[O.MUTE_AUDIO=32772]="MUTE_AUDIO",O[O.MUTE_VIDEO=32773]="MUTE_VIDEO",O[O.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",O[O.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",O[O.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",O[O.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",O[O.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",O[O.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",O[O.SWITCH_CAMERA=32780]="SWITCH_CAMERA",O[O.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",O[O.REPLACE_VIDEO=32782]="REPLACE_VIDEO",O[O.REPLACE_AUDIO=32783]="REPLACE_AUDIO",O[O.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",O[O.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",O[O.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",O[O.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",O[O.JOIN=32788]="JOIN",O[O.LEAVE=32789]="LEAVE",O[O.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",O[O.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",O[O.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",O[O.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",O[O.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",O[O.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",O[O.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",O[O.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",O[O.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",O[O.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",O[O.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",O[O.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",O[O.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",O[O.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",O[O.PUBLISH_AUX=32805]="PUBLISH_AUX",O[O.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",O[O.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",O[O.VIDEO_ENCODER=4004]="VIDEO_ENCODER",O[O.VIDEO_DECODER=4005]="VIDEO_DECODER",O))(_o||{}),sd=(a=>(a[a.UNKNOWN=0]="UNKNOWN",a[a.EXCELLENT=1]="EXCELLENT",a[a.GOOD=2]="GOOD",a[a.POOR=3]="POOR",a[a.BAD=4]="BAD",a[a.VERY_BAD=5]="VERY_BAD",a[a.DISCONNECTED=6]="DISCONNECTED",a))(sd||{}),ih=(r=>(r[r.MANUAL=0]="MANUAL",r[r.AUTO_AUDIO=1]="AUTO_AUDIO",r[r.AUTO_VIDEO=2]="AUTO_VIDEO",r[r.AUTO_ALL=3]="AUTO_ALL",r))(ih||{}),$n=(e=>(e.user="user",e.environment="environment",e))($n||{}),Gn=(t=>(t[t.ELEMENT=0]="ELEMENT",t[t.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",t[t.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",t))(Gn||{}),od=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(od||{}),nd=(r=>(r.BANNED="banned",r.KICK="kick",r.USER_TIME_OUT="user_time_out",r.ROOM_DISBAND="room_disband",r))(nd||{}),rh=(l=>(l[l.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",l[l.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",l[l.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",l[l.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",l[l.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",l[l.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",l[l.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",l[l.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",l[l.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",l))(rh||{}),mt=1e8,Yc=class{constructor(){c(this,"mediaType",0)}set audio(i){i?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(i){i?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(i){i?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(i){i?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},_r=(o=>(o.String="string",o.Number="number",o.Boolean="boolean",o.Array="array",o.Object="object",o))(_r||{}),Qi=(t=>(t.H264="h264",t.H265="h265",t.VP8="vp8",t))(Qi||{}),Wn=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.DUMP=1]="DUMP",r[r.SEI=2]="SEI",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(Wn||{}),ad=(r=>(r[r.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",r[r.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",r[r.DUMP=2]="DUMP",r[r.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",r))(ad||{}),sh=(t=>(t.WebRTC="webrtc",t.WebCodecs="webcodecs",t.WebAssembly="webassembly",t))(sh||{}),cd=(u=>(u[u.SUCCESS=0]="SUCCESS",u[u.FAILED=1]="FAILED",u[u.WEBCODEC_INIT=2]="WEBCODEC_INIT",u[u.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",u[u.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",u[u.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",u[u.WASM_INIT=6]="WASM_INIT",u[u.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",u[u.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",u[u.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",u[u.TEST=10]="TEST",u))(cd||{}),go=(r=>(r.NONE="",r.DETAIL="detail",r.MOTION="motion",r.TEXT="text",r))(go||{});var x={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},ve={AVOID_REPEATED_CALL(s){return`previous ${s.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_MIN({key:s,rule:i,fnName:e,value:t}){return`the min value of ${s||i.name} is ${i.min}, received: ${t}.`},INVALID_PARAMETER_MAX({key:s,rule:i,fnName:e,value:t}){return`the max value of ${s||i.name} is ${i.max}, received: ${t}.`},API_CALL_TIMEOUT(s){return`${s.commandDesc||s.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(s){return`SignalChannel setup failure: (errorCode: ${s.errorCode}, errorMsg: ${s.errorMsg} }).`},ERROR_MESSAGE(s){let i=`${s.type} failed`;return s.message&&(i=`${i}: ${s.message}.`),i},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(s){return`exchange sdp failed ${s.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(s){return`'${s}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(s){return`'${s}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:s,code:i}){return`Failed to join room - ${s} code: ${i}`},REJOIN_ROOM_FAILED(s){return`reJoin room: ${s.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(s){return`duplicate ${s} stream publishing, please unpublish your prev ${s} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:s,userId:i,streamType:e}){return`failed to subscribe ${i} ${e} stream, reason: ${s}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(s){return`switchRole failed, errCode: ${s.code} errMsg: ${s.message}.`},CLIENT_BANNED(s){return`client was banned because of ${s.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(s){return`startPublishCDNStream failed, errMsg: ${s.message}.`},STOP_PUBLISH_CDN_FAILED(s){return`stopPublishCDNStream failed, errMsg: ${s.message}.`},INVALID_STREAM_ID(s){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(s){return`cannot replace ${s.kind} track because stream has not ${s.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(s){return`startMixTranscode failed, errMsg: ${s.message}.`},STOP_MIX_TRANSCODE_FAILED(s){return`stopMixTranscode failed, errMsg: ${s.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(s){return`'${s}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:s,fnName:i})=>`'${s}' is not found in the document object when calling ${i}().`,INVALID_ELEMENT_ID_TYPE:({key:s,fnName:i,type:e})=>`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`,PLAY_FAILED:s=>`${s.media} play failed, browser exception: ${s.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(s){return`${s}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(s){return`${s.signalResponse} failed, response code is ${s.code} , errMsg: ${s.message}.`},CATCH_HANDLER_ERROR({name:s,event:i}){return`an error was caught in ${s}.on('${i}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:s}){return`experimental api ${s} does not exist.`},REPEAT_JOIN:s=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:s}){return`failed to call ${s}() because client was destroyed.`},SEI_NOT_SUPPORT:s=>`not support to sendSEIMessage${s===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:s,name:i,timesInSecond:e,maxSizeInSecond:t})=>`api ${i} call ${s?"size":"times"} is over ${s?`${t} bytes`:e} in a second.`,CONNECTION_ABORTED(s){return`connection aborted due to: ${s}`},API_CALL_ABORTED(s){let i;return s.message.includes("REMOTE_STREAM_NOT_EXIST")?i=`Subscribe ${s.userId} ${s.streamType} stream aborted, reason: remote user ${s.userId} unpublished stream.`:i=`API aborted, reason: ${s.message}`,i},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:s=>`'streamType' is required when 'userId' is not '*', calling ${s}()`};var oh=(s,i)=>i?`${Bt}/${s}/${i}`:`${Bt}/${s}/index.html`;var Pf=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let s=localStorage==null?void 0:localStorage.getItem(Tc);if(s){s=JSON.parse(s);let i=document.createElement("script");i.type="text/javascript",i.text=s.message,document.body.appendChild(i);let e=window.TRTC_ERROR_INFO,t=window.TRTC_ERROR_LINK;return document.body.removeChild(i),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:t}}return{}};function U(s){let{key:i,data:e,link:t,addDocLink:r=!0}=s,o="",n="",a="";se(ve[i])?o=ve[i](e):K(ve[i])&&(o=ve[i]);let{TRTC_ERROR_INFO:d,TRTC_ERROR_LINK:l}=Pf();t?a=`${t.className}.html#${t.fnName}`:l&&l[i]&&(se(l[i])?a=l[i](e):K(l[i])&&(a=l[i]));let m=o;return At()&&(d&&d[i]&&(se(d[i])?n=d[i](e):K(d[i])&&(n=d[i])),n&&(r?m=`${n}
7
- \u8BF7\u67E5\u770B\u6587\u6863: ${oh("zh-cn",a)}
3
+ `}});var wf=vn(li=>{"use strict";var So=Cf(),dT=Nf();li.write=dT;li.parse=So.parse;li.parseParams=So.parseParams;li.parseFmtpConfig=So.parseFmtpConfig;li.parsePayloads=So.parsePayloads;li.parseRemoteCandidates=So.parseRemoteCandidates;li.parseImageAttributes=So.parseImageAttributes;li.parseSimulcastStreamList=So.parseSimulcastStreamList});var kh=(x=>(x[x.INVALID_PARAMETER=4096]="INVALID_PARAMETER",x[x.INVALID_OPERATION=4097]="INVALID_OPERATION",x[x.NOT_SUPPORTED=4098]="NOT_SUPPORTED",x[x.DEVICE_NOT_FOUND=4099]="DEVICE_NOT_FOUND",x[x.INITIALIZE_FAILED=4100]="INITIALIZE_FAILED",x[x.SIGNAL_CHANNEL_SETUP_FAILED=16385]="SIGNAL_CHANNEL_SETUP_FAILED",x[x.SIGNAL_CHANNEL_ERROR=16386]="SIGNAL_CHANNEL_ERROR",x[x.ICE_TRANSPORT_ERROR=16387]="ICE_TRANSPORT_ERROR",x[x.JOIN_ROOM_FAILED=16388]="JOIN_ROOM_FAILED",x[x.CREATE_OFFER_FAILED=16389]="CREATE_OFFER_FAILED",x[x.SIGNAL_CHANNEL_RECONNECTION_FAILED=16390]="SIGNAL_CHANNEL_RECONNECTION_FAILED",x[x.UPLINK_RECONNECTION_FAILED=16391]="UPLINK_RECONNECTION_FAILED",x[x.DOWNLINK_RECONNECTION_FAILED=16392]="DOWNLINK_RECONNECTION_FAILED",x[x.REMOTE_STREAM_NOT_EXIST=16400]="REMOTE_STREAM_NOT_EXIST",x[x.CLIENT_BANNED=16448]="CLIENT_BANNED",x[x.SERVER_TIMEOUT=16449]="SERVER_TIMEOUT",x[x.SUBSCRIPTION_TIMEOUT=16450]="SUBSCRIPTION_TIMEOUT",x[x.PLAY_NOT_ALLOWED=16451]="PLAY_NOT_ALLOWED",x[x.DEVICE_AUTO_RECOVER_FAILED=16452]="DEVICE_AUTO_RECOVER_FAILED",x[x.START_PUBLISH_CDN_FAILED=16453]="START_PUBLISH_CDN_FAILED",x[x.STOP_PUBLISH_CDN_FAILED=16454]="STOP_PUBLISH_CDN_FAILED",x[x.START_MIX_TRANSCODE_FAILED=16455]="START_MIX_TRANSCODE_FAILED",x[x.STOP_MIX_TRANSCODE_FAILED=16456]="STOP_MIX_TRANSCODE_FAILED",x[x.NOT_SUPPORTED_H264=16457]="NOT_SUPPORTED_H264",x[x.SWITCH_ROLE_FAILED=16458]="SWITCH_ROLE_FAILED",x[x.API_CALL_TIMEOUT=16459]="API_CALL_TIMEOUT",x[x.SCHEDULE_FAILED=16460]="SCHEDULE_FAILED",x[x.API_CALL_ABORTED=16461]="API_CALL_ABORTED",x[x.SPC_INITIALIZED_FAILED=16462]="SPC_INITIALIZED_FAILED",x[x.VIDEO_MANAGER_ERROR=16463]="VIDEO_MANAGER_ERROR",x[x.UNKNOWN=65535]="UNKNOWN",x))(kh||{}),Y=kh;var jg=function(i){for(let t in Y)if(Y[t]===i)return t;return"UNKNOWN"},xl=class extends Error{constructor({name:e="RtcError",message:r,code:o=Y.UNKNOWN,extraCode:s=0,constraint:a}){let d=`<${jg(o)} 0x${o.toString(16)}>`,h=`${r}${a?` constraint: ${a}`:""}${r!=null&&r.includes(d)?"":` ${d}`}`;super(h);l(this,"code");l(this,"extraCode");l(this,"message");l(this,"originMessage");l(this,"name");l(this,"constraint");this.code=o,this.extraCode=s,this.name=e,this.message=h,this.constraint=a,this.originMessage=r}getCode(){return this.code}getExtraCode(){return this.extraCode}toString(){return this.originMessage}},ue=xl;var Sy=new Date().getTime(),qg=0;var Cn=function(){return new Date().getTime()+qg},Mc=function(){let i=new Date;return i.setTime(Cn()),i.toLocaleString()};var Pr={};Kr(Pr,{bytes2ms:()=>jh,convertObjectNumberToInt:()=>Fn,copyProperties:()=>Gh,deepClone:()=>lo,deepMerge:()=>Or,delay:()=>Bn,fibonacci:()=>mo,formatedTime:()=>Gc,getConstructorName:()=>Un,getContainerFromElement:()=>Kh,getEnv:()=>$h,getInternalVersion:()=>Yh,getLoggerUrl:()=>ii,getMuteStateFromFlag:()=>Vn,getNetworkType:()=>kn,getNumNetworkType:()=>$c,getReconnectionTimeout:()=>Jh,getStringByteLength:()=>ef,getTurnServer:()=>Zh,getUint32Version:()=>Jc,getValueType:()=>ut,getViewListFromView:()=>ls,glog:()=>Ln,ipv4ToUint32:()=>us,isArray:()=>it,isAudioWorkletSupported:()=>Qh,isBoolean:()=>nt,isConstructor:()=>ds,isEmpty:()=>Wc,isFunction:()=>Fe,isLangChinese:()=>hr,isMediaStreamTrack:()=>zh,isNumber:()=>$e,isObject:()=>rr,isOverseaSdkAppId:()=>xn,isPlainObject:()=>Bt,isPortrait:()=>qc,isPromise:()=>Ni,isRemoteTrack:()=>Xh,isString:()=>Se,isUndefined:()=>L,loadImage:()=>ms,ms2bytes:()=>qh,ms2samples:()=>zl,performanceNow:()=>ge,promiseAny:()=>Hc,samples2ms:()=>Jl,setNetworkType:()=>Wh,stringify:()=>ir,stringifyIncludeValue:()=>jc,throttlePromise:()=>zc});var ql={};Kr(ql,{AUDIO_MUTE_BIT:()=>Uc,AUDIO_STAT_BIT:()=>ns,AUX_STAT_BIT:()=>wn,AUX_STREAM_MSID:()=>oE,BACKEND_ENV:()=>Lc,BASE_DOC_URL:()=>Nr,BASE_HOST:()=>Lh,CAPABILITIES_KEYS:()=>Bc,CLASS_NAME:()=>DE,CLOUD_CONSOLE_URL:()=>Qg,CROSS_ROOM_BIT:()=>rE,DATA_FREEZE_TIMING:()=>Fc,DEFAULT_ASSETS_URL:()=>Oc,DOC_URL:()=>Yg,DTLS_STATE_UNKNOWN:()=>hE,ENV_NAME:()=>ei,EXCHANGE_SDP_TIMEOUT:()=>IE,INTERVAL:()=>uo,IS_WORKER:()=>os,IS_WORKLET:()=>Dn,KIBANA_EVENT:()=>ti,LOCAL_STREAM_PUBLISH_STATE:()=>Vh,LOGGER_CMD_TYPE:()=>Di,LOGGER_DOMAIN:()=>Ul,LOGGER_DOMAIN_OVERSEA:()=>Vl,LOG_LEVEL:()=>pr,LOG_LEVEL_NAME:()=>wE,MAIN_STREAM_MSID:()=>iE,MAX_RTT:()=>On,MICROPHONE_COMMUNICATIONS:()=>NE,MICROPHONE_DEFAULT:()=>co,MUTE_ALL_BIT:()=>tE,NAME:()=>D,NETWORK_TYPE:()=>ao,NOT_SUPPORTED_H264:()=>yE,PAUSED_RETRY_COUNT:()=>Wl,PEERCONNECTION_CONNECTING_TIMEOUT:()=>vE,PEER_CONNECTION_STATE:()=>fE,PEER_LEAVE_REASON:()=>Fh,RAF:()=>jl,RECOVER_CAPTURE_INTERVAL:()=>as,REMOTE_STREAM_TYPE_AUX:()=>nE,REMOTE_STREAM_TYPE_MAIN:()=>sE,RENDER_FREEZE_TIMING:()=>AE,RIC:()=>Gl,SCHEDULE_DOMAIN:()=>ri,SCHEDULE_TIMEOUT:()=>CE,SDP_SEMANTICS_PLAN_B:()=>SE,SDP_SEMANTICS_UNIFIED_PLAN:()=>Hl,SECOND_HOST:()=>zg,SIGNAL_PING_PONG_INTERVAL:()=>Kg,SIGNAL_PING_TIMEOUT:()=>Zg,SIGNAL_RECONNECTION_COUNT:()=>gE,SMALL_STAT_BIT:()=>Bl,SPEAKER_DEFAULT:()=>Mn,STORAGE_EXPIRES_TIME:()=>Pc,STREAM_TYPE_BIG:()=>bE,STREAM_TYPE_SMALL:()=>RE,SUBSCRIBE_SMALL_RETRY_COUNT:()=>ME,SYNC_USER_LIST_INTERVAL:()=>EE,Scene:()=>Mr,THIRD_HOST:()=>Xg,TIMEOUT:()=>cs,TRANSPORT_DIRECTION:()=>eE,TRTC_ERROR_ASSISTANCE:()=>Fl,TRTC_QUALITY_BAD:()=>lE,TRTC_QUALITY_DISCONNECTED:()=>pE,TRTC_QUALITY_EXCELLENT:()=>cE,TRTC_QUALITY_GOOD:()=>dE,TRTC_QUALITY_POOR:()=>uE,TRTC_QUALITY_UNKNOWN:()=>aE,TRTC_QUALITY_VERY_BAD:()=>mE,UPDATE_OFFER_TIMEOUT:()=>TE,VIDEO_MUTE_BIT:()=>Vc,VIDEO_STAT_BIT:()=>ss,audioProfileMap:()=>xc,getRetryCount:()=>_E,getScriptDir:()=>Jg,innerVersion:()=>kl,loggerProxy:()=>Nn,screenProfileMap:()=>kc,setLoggerProxy:()=>no,setRetryCount:()=>$l,setVersion:()=>Ll,version:()=>Ke,videoProfileMap:()=>wr});var kl="4.15.00.1600",Ke="5.0.0";function Ll(i){Ke=i;let[t,e,r]=i.split(".").map(o=>parseInt(o,10));kl=`${t}.${Math.min(15,e)}.${Math.min(15,r)}.${e.toString().padStart(2,"0")}${r.toString().padStart(2,"0")}`}var os=typeof importScripts!="undefined",Dn=typeof registerProcessor!="undefined",Jg=()=>{let i=os?self.location.href:document.currentScript.src;return i.substring(0,i.lastIndexOf("/")+1)},Nn="",no=i=>Nn=i,Lh="web.sdk.qcloud.com",zg="web.sdk.tencent.cn",Xg="web.sdk.cloud.tencent.cn",Qg="https://console.cloud.tencent.com/trtc",Nr=`https://${Lh}/trtc/webrtc/v5/doc`,Oc="https://web.sdk.qcloud.com/trtc/webrtc/v5/assets/",Yg=`${Nr}/zh-cn/`,Ul="https://yun.tim.qq.com",Vl="https://apisgp.my-imcloud.com",Fl="trtc_error_assistance",Di={LOG:"jssdk_log",EVENT:"jssdk_event",KEY_POINT:"jssdk_new_endreport",KV_STAT:"jssdk_key_metrics_report"},ei={QCLOUD:"qcloud",OLD_CLOUD_LADDER:"trtc",WEBRTC:"webrtc"},pr=(a=>(a[a.TRACE=0]="TRACE",a[a.DEBUG=1]="DEBUG",a[a.INFO=2]="INFO",a[a.WARN=3]="WARN",a[a.ERROR=4]="ERROR",a[a.NONE=5]="NONE",a))(pr||{}),Zg=18e3,Kg=2e3,ao={unknown:0,wifi:1,"3g":2,"2g":3,"4g":4,wired:5,"5g":6},Pc=7*24*3600*1e3,xc={standard:{sampleRate:48e3,channelCount:1,bitrate:40},"standard-stereo":{sampleRate:48e3,channelCount:2,bitrate:64},high:{sampleRate:48e3,channelCount:1,bitrate:128},"high-stereo":{sampleRate:48e3,channelCount:2,bitrate:192}},wr={"120p":{width:160,height:120,frameRate:15,bitrate:200},"120p_2":{width:160,height:120,frameRate:15,bitrate:100},"180p":{width:320,height:180,frameRate:15,bitrate:350},"180p_2":{width:320,height:180,frameRate:15,bitrate:150},"240p":{width:320,height:240,frameRate:15,bitrate:400},"240p_2":{width:320,height:240,frameRate:15,bitrate:200},"360p":{width:640,height:360,frameRate:15,bitrate:800},"360p_2":{width:640,height:360,frameRate:15,bitrate:400},"480p":{width:640,height:480,frameRate:15,bitrate:900},"480p_2":{width:640,height:480,frameRate:15,bitrate:500},"720p":{width:1280,height:720,frameRate:15,bitrate:1500},"1080p":{width:1920,height:1080,frameRate:15,bitrate:2e3},"1440p":{width:2560,height:1440,frameRate:30,bitrate:4860},"4K":{width:3840,height:2160,frameRate:30,bitrate:9e3}},kc={"480p":{width:640,height:480,frameRate:5,bitrate:900},"480p_2":{width:640,height:480,frameRate:30,bitrate:1e3},"720p":{width:1280,height:720,frameRate:5,bitrate:1200},"720p_2":{width:1280,height:720,frameRate:30,bitrate:3e3},"1080p":{width:1920,height:1080,frameRate:5,bitrate:1600},"1080p_2":{width:1920,height:1080,frameRate:30,bitrate:4e3}},D={CANVAS:"canvas",AUDIO:"audio",VIDEO:"video",SCREEN:"screen",SMALL:"small",BIG:"big",AUXILIARY:"auxiliary",SMALL_VIDEO:"smallVideo",FACING_MODE_USER:"user",FACING_MODE_ENVIRONMENT:"environment",MUTE:"mute",UNMUTE:"unmute",ENDED:"ended",PLAYING:"playing",PAUSE:"pause",ERROR:"error",LOADEDDATA:"loadeddata",LOADEDMETADATA:"loadedmetadata",AUDIO_INPUT:"audioinput",VIDEO_INPUT:"videoinput",DETAIL:"detail",TEXT:"text",MAIN:"main",BACKUP:"backup",BANNED:"banned",KICK:"kick",USER_TIME_OUT:"user_time_out",ROOM_DISBAND:"room_disband",SEI_MESSAGE:"sei-message",ADD:"add",REMOVE:"remove",REPLACE:"replace",TRACK:"track",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",TRANSCEIVER_DIRECTION_SENDONLY:"sendonly",TRANSCEIVER_DIRECTION_RECVONLY:"recvonly",ENTER_PICTURE_IN_PICTURE:"enterpictureinpicture",LEAVE_PICTURE_IN_PICTURE:"leavepictureinpicture"},eE={INACTIVE:"inactive",SENDONLY:"sendonly",RECVONLY:"recvonly"},Lc={OLD_CLOUD_LADDER:"wss://trtc.rtc.qq.com",WEBRTC:"wss://webrtc.qq.com"},Mr=(e=>(e.LIVE="live",e.RTC="rtc",e))(Mr||{}),ss=1,Bl=2,wn=4,ns=8,Uc=64,Vc=16,tE=112,rE=128,iE="5Y2wZK8nANNAoVw6dSAHVjNxrD1ObBM2kBPV",oE="224d130c-7b5c-415b-aaa2-79c2eb5a6df2",sE=D.MAIN,nE=D.AUXILIARY,aE=0,cE=1,dE=2,uE=3,lE=4,mE=5,pE=6,hE="unknown",fE={NEW:"new",CONNECTING:"connecting",FAILED:"failed",CLOSED:"closed",DISCONNECTED:"disconnected",CONNECTED:"connected",COMPLETED:"completed"},Uh=1/0;function $l(i){Uh=i}function _E(){return Uh}var gE=30,ti={JOIN:"join",DELTA_JOIN:"delta-join",REJOIN:"rejoin",LEAVE:"leave",DELTA_LEAVE:"delta-leave",PUBLISH:"publish",DELTA_PUBLISH:"delta-publish",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",UNSUBSCRIBE:"unsubscribe",UPLINK_CONNECTION:"uplink-connection",UPLINK_RECONNECTION:"uplink-reconnection",DOWNLINK_CONNECTION:"downlink-connection",DOWNLINK_RECONNECTION:"downlink-reconnection",ON_TRACK:"ontrack",ICE_CONNECTION_STATE:"iceConnectionState",LOCAL_STREAM_INITIALIZE:"stream-initialize",SIGNAL_CONNECTION:"websocketConnectionState",SIGNAL_RECONNECTION:"websocketReconnectionState",UPDATE_STREAM:"update-stream",RECOVER_LOCAL_AUDIO_TRACK:"recover-local-audio-track",RECOVER_LOCAL_VIDEO_TRACK:"recover-local-video-track",RECOVER_SUBSCRIPTION:"recover-subscription",START_MIX_TRANSCODE:"start-mix-transcode",STOP_MIX_TRANSCODE:"stop-mix-transcode",PLAYER_ERROR:"player-error",SCHEDULE:"schedule",LOAD_WORKLET:"load-worklet",VIDEO_FROZEN_COUNT:"videoFrozenCount",GET_USER_MEDIA_RETRY:"getUserMedia-retry"},EE=1e4,TE=1e4,IE=1e4,Hl="unified-plan",SE="plan-b",yE=1028,Vh=(r=>(r[r.UNPUBLISH=-1]="UNPUBLISH",r[r.PUBLISHING=0]="PUBLISHING",r[r.PUBLISHED=1]="PUBLISHED",r))(Vh||{}),Fc=500,AE=1e3,bE=D.BIG,RE=D.SMALL,vE=10*1e3,ri={MAIN:"schedule.cloud-rtc.com",BACKUP:"schedule.cloud-rtc.net",MAIN_OVERSEA:"schedule.rtc-web.com",BACKUP_OVERSEA:"schedule.rtc-web.io",MAIN_OVERSEA_BACKUP:"intl-schedule.cloud-rtc.com"},CE=2e3,DE={TRTC:"TRTC",CLIENT:"Client",LOCAL_STREAM:"LocalStream",REMOTE_STREAM:"RemoteStream",STREAM:"Stream"},Wl=5,co="default",Mn=co,NE="communications",wE=Object.keys(pr),Fh=["normal leave","timeout leave","kick","role change"],ME=10,as=2e3,Gl="ric",jl="raf",uo="interval",cs="timeout",Bc=["width","height","frameRate","facingMode","sampleRate","sampleSize","channelCount","deviceId","min","max"],On=10*1e3;var $h=function(){return new URLSearchParams(location.search).get("trtc_env")||""},xn=i=>Number(i)<14e8,ii=function(i,t){let e;Nn?e=Nn:e=xn(i)?Vl:Ul;let r=Math.floor(Math.random()*Rn(2,31));return`${e}/v5/AVQualityReportSvc/C2S?random=${r}&sdkappid=${i}&cmdtype=${t}`},Pn="unknown";function kn(){if(Pn!=="unknown")return Pn;let{userAgent:i,connection:t}=navigator,e=(i.match(/NetType\/\S+/)||[])[0]||"";e=e.toLowerCase().replace("nettype/",""),e==="3gnet"&&(e="3g");let r=t&&t.type&&t.type.toLowerCase(),o=t&&t.effectiveType&&t.effectiveType.toLowerCase();return o==="slow-2"&&(o="2g"),r&&(Pn=Hh(r,o)),Pn}function Hh(i,t){if(ao[i])return i;switch(i){case"cellular":case"wimax":return t||"unknown";case"ethernet":return"wired";case"none":case"other":default:return"unknown"}}function Wh(i){Pn=Hh(i)}function $c(){return ao[kn()]}function Gh(i,t){for(let e of Reflect.ownKeys(t))if(e!=="constructor"&&e!=="prototype"&&e!=="name"){let r=Object.getOwnPropertyDescriptor(t,e)||"";Object.defineProperty(i,e,r)}return i}function jh(i,t=48e3){return Jl(i/4,t)}function Jl(i,t=48e3){return i*1e3/t}function qh(i,t=48e3){return zl(i,t)*4}function zl(i,t=48e3){return i*t/1e3}var Ln=typeof window!="undefined"&&typeof window.glog=="function"?window.glog:()=>{},hr=()=>{let i=navigator.language;return i=i.substring(0,2),i==="zh"},Bt=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function mo(i,t=1,e=1){return i<=1?e:mo(i-1,e,t+e)}function Jh(i){return i>8?30*1e3:mo(i)*1e3}function ut(i){return Reflect.apply(Object.prototype.toString,i,[]).replace(/^\[object\s(\w+)\]$/,"$1").toLowerCase()}var Fe=i=>typeof i=="function",L=i=>typeof i=="undefined",Se=i=>typeof i=="string",$e=i=>typeof i=="number",nt=i=>typeof i=="boolean",rr=i=>ut(i)==="object",it=i=>ut(i)==="array",zh=i=>ut(i)==="MediaStreamTrack".toLowerCase(),Xh=i=>i.isRemote,Ni=i=>ut(i)==="promise",ds=i=>Fe(i)&&i.prototype.constructor===i,Un=i=>ds(i)?i.prototype.constructor.name:"",Qh=typeof AudioWorkletNode!="undefined";function Hc(i){return new Promise((t,e)=>{let r=[];i.forEach(o=>{o.then(t).catch(s=>{r.push(s),r.length===i.length&&e(r)})})})}function ge(){return!performance||!performance.now?Date.now():Math.floor(performance.now())}var Bh=i=>+i<10?`0${i}`:i,Yh=i=>{let t=i.match(/^\d+\.\d+\.\d+/)[0];if(!t)return i;let e=t.split("."),r=Bh(e[1])+Bh(e[2]);return e[1]-15>0&&(e[1]="15"),e[2]-15>0&&(e[2]="15"),`${e.join(".")}.${r}`},OE=Object.prototype.hasOwnProperty,{toString:vy}=Object.prototype;function Wc(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Bt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(OE.call(i,t))return!1;return!0}}return!1}function Vn(i,t){return{userId:t,hasAudio:!!(i&ns),hasVideo:!!(i&ss),hasAuxiliary:!!(i&wn),hasSmall:!!(i&Bl),audioMuted:!!(i&Uc),videoMuted:!!(i&Vc),audioAvailable:!!(i&ns)&&!(i&Uc),videoAvailable:!!(i&ss)&&!(i&Vc)}}function Zh(i){let t={urls:i.url.startsWith("turn:")||i.url.startsWith("turns:")?i.url:`turn:${i.url}`};return!L(i.username)&&!L(i.credential)&&(t.username=i.username,t.credential=i.credential,t.credentialType="password",L(i.credentialType)||(t.credentialType=i.credentialType)),t}function us(i,t=!0){if(!Se(i))return 0;let e=i.split(".");return t?(Number(e[0])<<24|Number(e[1])<<16|Number(e[2])<<8|Number(e[3]))>>>0:(Number(e[3])<<24|Number(e[2])<<16|Number(e[1])<<8|Number(e[0]))>>>0}var Or=function(i,t,e,r){if(!(rr(i)&&rr(t)))return 0;let o=0,s=Object.keys(t),a;for(let d=0,h=s.length;d<h;d++)if(a=s[d],!(L(t[a])||e&&e.includes(a)))if(rr(i[a])&&rr(t[a]))o+=Or(i[a],t[a],e,r);else{if(r&&r.includes(t[a]))continue;i[a]!==t[a]&&(i[a]=lo(t[a]),o+=1)}return o};function lo(i){if(it(i)){let t=[];return i.forEach((e,r)=>{t[r]=lo(e)}),t}if(rr(i)){let t={};return Object.keys(i).forEach(e=>{t[e]=lo(i[e])}),t}return i}var ls=i=>{let t=[];if(it(i))t=[...i];else if(Se(i)){let e=document.getElementById(i);e&&t.push(e)}else i&&t.push(i);return t},Kh=i=>Se(i)?document.getElementById(i):i,PE=i=>{let t=h=>h<10?`0${h}`:`${h}`,e=i.getFullYear(),r=i.getMonth()+1,o=i.getDate(),s=t(i.getHours()),a=t(i.getMinutes()),d=t(i.getSeconds());return`${e}/${r}/${o} ${s}:${a}:${d}`},Gc=()=>PE(new Date);function ir(i,{keysToInclude:t,keysToExclude:e}){try{if(it(i))return`[${i.map(a=>ir(a,{keysToInclude:t,keysToExclude:e})).join(",")}]`;if(!Bt(i)||!it(t)&&!it(e))return JSON.stringify(i);let r={},o=new Set(t),s=new Set(e);return Object.keys(i).forEach(a=>{(s.size===0&&o.has(a)||o.size===0&&!s.has(a))&&(r[a]=Bt(i[a])||it(i[a])?JSON.parse(ir(i[a],{keysToExclude:e,keysToInclude:t})):i[a])}),JSON.stringify(r)}catch(r){return"{}"}}function jc(i,t=!1){let e=[];return Object.keys(i).forEach(r=>{t===i[r]&&e.push(r)}),ir(i,{keysToInclude:e})}function ef(i){return i.replace(/[\u4e00-\u9fa5]/g,"aa").length}var qc=()=>{var i,t,e,r;return(i=window.screen)!=null&&i.orientation?!!((r=(e=(t=window.screen)==null?void 0:t.orientation)==null?void 0:e.type)!=null&&r.includes("portrait")):window.orientation===0||window.orientation===180},ms=i=>A(void 0,null,function*(){return new Promise((t,e)=>{let r;if(Se(i))r=new Image,r.crossOrigin="anonymous",r.src=i;else if(r=i,r.complete){t(r);return}r.onload=()=>t(r),r.onerror=()=>{e(new ue({code:Y.INVALID_PARAMETER,message:`load image failed, url: ${i}`}))}})}),Jc=i=>{let t=i.split(".");return+t[0]<<24|+t[1]<<16|+t[2]<<8|+t[3]<<0},Fn=i=>(Object.keys(i).forEach(t=>{$e(i[t])&&(t.startsWith("uint")||t.startsWith("int"))?i[t]=Math.floor(i[t]):(Bt(i[t])||it(i[t]))&&Fn(i[t])}),i);function Bn(i,t){return new Promise(e=>{let r=setTimeout(e,i);t&&t(r)})}function zc(i,t){let e=null;return function(...r){return e||(e=i.apply(t||this,r),e.finally(()=>e=null),e)}}function oi({url:i,body:t,method:e="POST",timeout:r,priority:o}){return new Promise((s,a)=>{if("fetch"in window)return fetch(i,{method:e,body:t,priority:o}).then(h=>h.text()).then(h=>{try{s({data:JSON.parse(h)})}catch(m){s({data:h})}},a);let d=new XMLHttpRequest;d.onreadystatechange=()=>{if(d.readyState===4)if(d.status>=200&&d.status<300)try{let h=JSON.parse(d.response);s({data:h})}catch(h){s({data:d.response})}else a({status:d.status,statusText:d.statusText||"request failed!"})},d.timeout=r||5e3,d.open(e,i,!0),d.send(t)})}function Xl(i){return A(this,null,function*(){let t=ge(),e=JSON.stringify(i);try{if(!CompressionStream||e.length<=2800)return e;let o=new Blob([e],{type:"application/json"}).stream().pipeThrough(new CompressionStream("gzip")),d=yield(yield(yield new Response(o)).blob()).arrayBuffer();return U.debug(`compressJSON ${e.length} -> ${d.byteLength} ${ge()-t}ms`),d}catch(r){return e}})}var xE=Object.prototype.hasOwnProperty;var wi=i=>typeof i=="function",tf=i=>typeof i=="undefined";var rf=i=>typeof i=="boolean";var Ql=i=>i.isRemote;var kE=function(i){if(!i||typeof i!="object"||Object.prototype.toString.call(i)!="[object Object]")return!1;let t=Object.getPrototypeOf(i);if(t===null)return!0;let e=Object.prototype.hasOwnProperty.call(t,"constructor")&&t.constructor;return typeof e=="function"&&e instanceof e&&Function.prototype.toString.call(e)===Function.prototype.toString.call(Object)};function of(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(kE(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(xE.call(i,t))return!1;return!0}}return!1}var LE=0,UE=1,sf=2;function VE({retryFunction:i,settings:t,onError:e,onRetrying:r,onRetryFailed:o,onRetrySuccess:s,context:a}){return function(...d){let{retries:h=5,timeout:m=1e3}=t,T=0,I=-1,v=LE,N=(j,H)=>A(this,null,function*(){let z=a||this;try{let Te=yield i.apply(z,d);T>0&&s&&s.call(this,T),T=0,j(Te)}catch(Te){let Pe=()=>{clearTimeout(I),T=0,v=sf,H(Te)},Xe=()=>{v!==sf&&T<(wi(h)?h():h)?(T++,v=UE,wi(r)&&r.call(this,T,Pe),I=window.setTimeout(()=>{I=-1,N(j,H)},wi(m)?m(T):m)):(Pe(),wi(o)&&o.call(this,Te))};wi(e)?e.call(this,{error:Te,retry:Xe,reject:H,retryFuncArgs:d,retriedCount:T}):Xe()}});return new Promise(N)}}var Mi=VE;var ps=class{constructor(t){l(this,"userId");l(this,"remoteUserId");l(this,"id");l(this,"sdkAppId");l(this,"type");l(this,"isLocal");this.id=t.id,this.userId=t.userId,this.sdkAppId=t.sdkAppId,this.remoteUserId=t.remoteUserId,this.isLocal=rf(t.isLocal)?t.isLocal:!0,this.type=this.isLocal?"":t.type}createChild(t){return Object.setPrototypeOf(t,this)}setUserId(t){this.userId=t}setSdkAppId(t){this.sdkAppId=t}log(t,e){let r=this.isLocal?this.userId:this.remoteUserId;e.unshift(`[${this.isLocal?"\u2191":"\u2193"}${this.type&&this.type!=="main"?"*":""}${this.id}${r?`|${r}`:""}]`),U.log(t,e,tf(this.userId)||of(this.userId),this.userId,this.sdkAppId)}info(...t){this.log(2,t)}debug(...t){this.log(1,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}};var bs={};Kr(bs,{ANDROID_VERSION:()=>Kl,CHROME_MAJOR_VERSION:()=>si,CHROME_VERSION:()=>ld,EDGE_VERSION:()=>Qc,EDG_MAJOR_VERSION:()=>tm,EDG_VERSION:()=>Yc,FIREFOX_MAJOR_VERSION:()=>em,FIREFOX_VERSION:()=>Xc,HUAWEI_VERSION:()=>ad,IE_VERSION:()=>WE,IOS_MAIN_VERSION:()=>Yt,IOS_VERSION:()=>xi,IPADQQB_VERSION:()=>sd,IS_ANDROID:()=>pt,IS_ANDROID_WEBVIEW:()=>am,IS_ANY_SAFARI:()=>Oi,IS_CHROME:()=>ys,IS_CHROME_OS:()=>rm,IS_CHROMIUM_BASE:()=>fo,IS_EDG:()=>_s,IS_EDGE:()=>fs,IS_ELECTRON:()=>jE,IS_FIREFOX:()=>_r,IS_HEADLESS_CHROME:()=>nm,IS_HONOR:()=>sm,IS_HUAWEI:()=>om,IS_HUAWEIBROWSER:()=>Qn,IS_IE:()=>df,IS_IE8:()=>HE,IS_IOS:()=>bt,IS_IOS_13_OR_14:()=>dm,IS_IOS_15_1:()=>cm,IS_IPAD:()=>$n,IS_IPADQQB:()=>Jn,IS_IPAD_PRO:()=>Zl,IS_IPHONE:()=>po,IS_IPOD:()=>cf,IS_LINUX:()=>zn,IS_LOCAL:()=>Tr,IS_MAC:()=>Er,IS_MACQQB:()=>qn,IS_MIBROWSER:()=>Xn,IS_MQQB:()=>Ts,IS_NATIVE_ANDROID:()=>$E,IS_OLD_ANDROID:()=>BE,IS_OPPOBROWSER:()=>Is,IS_SAFARI:()=>$t,IS_SAFARI_15_1:()=>qE,IS_SAMSUNGBROWSER:()=>Yn,IS_SOGOU:()=>Wn,IS_SOGOUM:()=>Hn,IS_TBS:()=>gr,IS_UCBROWSER:()=>im,IS_VIVOBROWSER:()=>Ss,IS_WECHAT:()=>gs,IS_WIN:()=>ho,IS_WQQB:()=>jn,IS_WX:()=>GE,IS_X5MQQB:()=>Es,IS_XWEB:()=>Gn,MACQQB_VERSION:()=>od,MI_VERSION:()=>nd,MQQB_VERSION:()=>hs,OPPO_VERSION:()=>dd,SAFARI_VERSION:()=>Pi,SAMSUNG_VERSION:()=>cd,SOGOUM_VERSION:()=>Zc,SOGOU_VERSION:()=>Kc,TBS_VERSION:()=>ed,UA_DATA_STRING:()=>fr,USER_AGENT:()=>Qt,VIVO_VERSION:()=>ud,WECHAT_VERSION:()=>rd,WQQB_VERSION:()=>id,XWEB_VERSION:()=>td,browserInfo:()=>xr,getBrowserInfo:()=>uf,getChromeMajorVersion:()=>Zn,getDeviceModel:()=>ea,getOSName:()=>As,getOSNumber:()=>ta,getOSString:()=>_o,getOSType:()=>lm,getTerminalType:()=>um,getUserAgentData:()=>Kn,isLocalStorageEnabled:()=>ni});var Qt=typeof navigator=="undefined"?"":navigator.userAgent,Ee=i=>new RegExp(i,"i").test(Qt),mt=i=>{if(Ee(i)){let t=new RegExp(`${i}\\/([\\d.]+)`),e=Qt.match(t);if(e&&e[1])return e[1]}return""},Yl=i=>{if(Ee(i)){let t=new RegExp(`${i}\\/(\\d+)`),e=Qt.match(t);if(e&&e[1])return parseFloat(e[1])}return NaN},nf=/AppleWebKit\/([\d.]+)/i.exec(Qt),FE=nf?parseFloat(nf[1]):NaN,$n=Ee("iPad"),Zl=typeof navigator!="undefined"&&navigator.maxTouchPoints&&navigator.maxTouchPoints>2&&Ee("Macintosh"),po=Ee("iPhone")&&!$n,cf=Ee("iPod"),bt=po||$n||cf||Zl,pt=Ee("Android"),Kl=function(){if(pt){let i=Qt.match(/Android (\d+)(?:\.(\d+))?(?:\.(\d+))*/i);if(i){let t=i[1]&&parseFloat(i[1]),e=i[2]&&parseFloat(i[2]);if(t&&e)return parseFloat(`${i[1]}.${i[2]}`);if(t)return t}}return NaN}(),BE=pt&&Ee("webkit")&&Kl<2.3,$E=pt&&Kl<5&&FE<537,_r=Ee("Firefox"),Xc=mt("Firefox"),em=Yl("Firefox"),fs=Ee("Edge"),Qc=mt("Edge"),_s=Ee("Edg"),Yc=mt("Edg"),tm=Yl("Edg"),Hn=Ee("SogouMobileBrowser"),Zc=mt("SogouMobileBrowser"),Wn=Ee("MetaSr\\s"),Kc=mt("MetaSr\\s"),gr=Ee("TBS"),ed=mt("TBS"),Gn=Ee("XWEB"),td=mt("XWEB"),HE=Ee("MSIE\\s8\\.0"),df=Ee("MSIE\\/\\d+"),WE=function(){if(df){let i=/MSIE\s(\d+)\.\d/.exec(Qt),t=i&&parseFloat(i[1]);return!t&&/Trident\/7.0/i.test(Qt)&&/rv:11.0/.test(Qt)&&(t=11),t}return NaN}(),gs=Ee("(micromessenger|webbrowser)"),rd=mt("MicroMessenger"),Es=!gr&&Ee("MQQBrowser")&&Ee("COVC"),Ts=!gr&&Ee("MQQBrowser")&&!Ee("COVC"),hs=Ts||Es?mt("MQQBrowser"):"",jn=!gr&&Ee(" QQBrowser"),id=mt(" QQBrowser"),qn=!gr&&Ee("QQBrowserLite"),od=mt("QQBrowserLite"),Jn=!gr&&Ee("MQBHD"),sd=mt("MQBHD"),ho=Ee("Windows"),Er=!bt&&Ee("MAC OS X"),zn=!pt&&Ee("Linux"),rm=Ee("CrOS"),GE=Ee("MicroMessenger"),im=Ee("UCBrowser"),jE=Ee("Electron"),Xn=Ee("MiuiBrowser"),nd=mt("MiuiBrowser"),Qn=Ee("HuaweiBrowser"),om=Ee("Huawei")||Ee("HUAWEI"),sm=Ee("Honor")||Ee("HONOR"),ad=mt("HuaweiBrowser"),Yn=Ee("SamsungBrowser"),cd=mt("SamsungBrowser"),Is=Ee("HeyTapBrowser"),dd=mt("HeyTapBrowser"),Ss=Ee("VivoBrowser"),ud=mt("VivoBrowser"),Zn=()=>Yl("Chrome"),fo=Ee("Chrome"),ys=!fs&&!Wn&&!Hn&&!gr&&!Gn&&!_s&&!jn&&!Xn&&!Qn&&!Yn&&!Is&&!Ss&&fo,nm=Ee("HeadlessChrome"),si=Zn(),ld=mt("Chrome"),$t=!fo&&!Ts&&!Es&&!qn&&!Jn&&Ee("Safari"),Oi=$t||bt,Pi=mt("Version"),am=/Android.*(wv|.0.0.0)/.test(Qt),xi=(()=>{if(Zl)return Pi;if(bt){let i=Qt.match(/OS (\d+)_(\d+)/i);if(i&&i[1]){let t=i[1];return i[2]&&(t+=`.${i[2]}`),t}}return""})(),Yt=Number(xi.split(".")[0]),qE=Pi==="15.1",cm=xi==="15.1",dm=(()=>{let i=Number(xi.split(".")[0]);return i===14||i===13})(),Tr=typeof location=="undefined"?!1:location.protocol==="file:"||location.hostname==="localhost"||location.hostname==="127.0.0.1",ni=(()=>{let i;return()=>{if(typeof i=="undefined")try{i=!!window.localStorage}catch(t){i=!1}return i}})(),xr=uf();function uf(){let i=new Map([[_r,["Firefox",Xc]],[_s,["Edg",Yc]],[ys,["Chrome",ld]],[$t,["Safari",Pi]],[gr,["TBS",ed]],[Gn,["XWEB",td]],[gs&&po,["WeChat",rd]],[jn,["QQ(Win)",id]],[Ts,["QQ(Mobile)",hs]],[Es,["QQ(Mobile X5)",hs]],[qn,["QQ(Mac)",od]],[Jn,["QQ(iPad)",sd]],[Xn,["MI",nd]],[Qn,["HW",ad]],[Yn,["Samsung",cd]],[Is,["OPPO",dd]],[Ss,["VIVO",ud]],[fs,["EDGE",Qc]],[Hn,["SogouMobile",Zc]],[Wn,["Sogou",Kc]]]),t="unknown",e="unknown";return i.has(!0)&&([t,e]=i.get(!0)),{name:t,version:e}}var Be=null,fr="";function Kn(){return A(this,null,function*(){if(Be)return Be;if(!navigator.userAgentData||typeof navigator.userAgentData.getHighEntropyValues!="function")return null;try{return Be=yield navigator.userAgentData.getHighEntropyValues(["architecture","bitness","model","platformVersion","fullVersionList"]),Be&&!fr&&(fr=`UAData: ${Be.platform}/${Be.platformVersion}`,Be.architecture&&Be.bitness&&(fr+=` ${Be.architecture}/${Be.bitness}`),Be.mobile&&(fr+=" mobile"),Be.model&&(fr+=` model: ${Be.model}`),Be.fullVersionList&&(fr+=` ${Be.fullVersionList.filter(i=>i.brand!=="Not/A)Brand").map(i=>`${i.brand}/${i.version}`).join(",")}`)),Be}catch(i){return null}})}function ea(){return(Be==null?void 0:Be.model)||""}var af=new Map([[pt,"Android"],[bt,"iOS"],[ho,"Windows"],[Er,"MacOS"],[zn,"Linux"],[rm,"ChromeOS"]]),As=function(){return af.get(!0)?af.get(!0):Be?Be.platform:"unknown"};function ta(){return ho?1:pt?2:Er?3:bt?4:zn?5:rm?6:0}var _o=()=>{let i=As();return i+=`/${xr.name}/${$t?xr.version:xr.version.split(".")[0]}`,Be!=null&&Be.platformVersion&&(i+=`/${Be.platformVersion}`),Be!=null&&Be.architecture&&(i+=`/${Be.architecture}`),i};function um(){return pt?4:po?2:$n?3:Er?12:ho?5:zn?13:1}function lm(){return pt?"Android":po?"iPhone":$n?"iPad":Er?"Mac":ho?"Windows":zn?"Linux":"unknown"}var mf=Ci(ki(),1),XE=new mf.default,F=XE;var go=(se=>(se.ROOM_DESTROY="1",se.JOIN_START="21",se.JOIN_SCHEDULE_SUCCESS="22",se.JOIN_SIGNAL_CONNECTION_START="23",se.JOIN_SIGNAL_CONNECTION_END="24",se.JOIN_SEND_CMD="25",se.JOIN_RECEIVED_CMD_RES="26",se.JOIN_SUCCESS="27",se.JOIN_FAILED="28",se.LEAVE_START="51",se.LEAVE_SEND_CMD="52",se.LEAVE_SUCCESS="53",se.PUBLISH_START="61",se.SEND_FIRST_VIDEO_FRAME="62",se.PUBLISH_FAILED="63",se.SUBSCRIBE_START="81",se.SUBSCRIBE_SUCCESS="82",se.SUBSCRIBE_FAILED="84",se.UNSUBSCRIBE_SUCCESS="83",se.LOCAL_TRACK_CAPTURE_START="101",se.LOCAL_TRACK_CAPTURE_SUCCESS="102",se.LOCAL_TRACK_CAPTURE_FAILED="103",se.LOCAL_TRACK_PUBLISHED="104",se.LOCAL_TRACK_UNPUBLISHED="105",se.LOCAL_TRACK_REPLACED="106",se.SWITCH_DEVICE_SUCCESS="107",se.TRACK_MUTED="108",se.TRACK_UNMUTED="109",se.REMOTE_TRACK_SUBSCRIBED="110",se.REMOTE_TRACK_UNSUBSCRIBED="111",se.LOCAL_TRACK_RECAPTURE="112",se.PLAY_TRACK_START="151",se.PLAYER_STATE_CHANGED="152",se.VIDEO_LOADED_DATA="153",se.AUTOPLAY_DIALOG_CLICK_CONFIRM="154",se.SIGNAL_CONNECTION_STATE_CHANGED="201",se.PEER_CONNECTION_STATE_CHANGED="202",se.SINGLE_CONNECTION_STAT="203",se.SPC_RECONNECTED="204",se.HEARTBEAT_REPORT="251",se.RECEIVED_PUBLISHED_USER_LIST="252",se.REMOTE_PUBLISH_STATE_CHANGED="253",se.AUDIO_LEVEL_INTERVAL="260",se.NETWORK_QUALITY="261",se.VIDEO_CODEC_IMPLEMENTATION_CHANGED="262",se.QUALITY_LIMITATION_CHANGED="263",se.LOG="264",se))(go||{});var P=go;var QE="%cTRTC%c%s",YE="padding: 1px 4px;border-radius: 3px;color: #fff;background: #1E88E5;",ZE="display: inline",pd=class pd{constructor(){l(this,"_isEnableUploadLog",!0);l(this,"_localJoinedUser",new Map);l(this,"_queue",[]);l(this,"_timeoutId",-1);l(this,"_logLevel",1);l(this,"_logLevelToUpload",2);!os&&!Dn&&(this.checkURLParam(),this.installEvents())}get isAbleToUpload(){return this._isEnableUploadLog&&this._timeoutId!==-1}installEvents(){F.on(P.JOIN_SCHEDULE_SUCCESS,({schedule:t})=>{var e;(e=t==null?void 0:t.config)!=null&&e.logLevelToUpload&&pr[t.config.logLevelToUpload]&&(this._logLevelToUpload=t.config.logLevelToUpload)}),F.on(P.JOIN_SUCCESS,({room:t})=>{this.addJoinedUser({userId:t.userId,sdkAppId:t.sdkAppId}),this.startUpload()}),F.once(P.JOIN_FAILED,()=>{this.startUpload()}),F.on(P.LEAVE_SUCCESS,({room:t})=>{this.deleteJoinedUser(t.userId)})}startUpload(){this._timeoutId===-1&&this.uploadInterval()}addJoinedUser(t){this._localJoinedUser.set(t.userId,t),this.startUpload()}deleteJoinedUser(t){this._localJoinedUser.delete(t)}uploadInterval(){this.upload().catch(()=>{}),this._timeoutId=window.setTimeout(()=>this.uploadInterval(),5e3)}getLogsToUpload(){let t={map:new Map,splicedQueue:[]};if(this._queue[0].forAllJoinedClients&&this._localJoinedUser.size===0)return t;let e=0;for(;e<this._queue.length&&e!==50;e++){let r=this._queue[e];if(r.forAllJoinedClients)this._localJoinedUser.forEach(({userId:o,sdkAppId:s})=>{t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})});else if(Se(r.userId)&&$e(r.sdkAppId)){let{userId:o,sdkAppId:s}=r;t.map.has(o)?t.map.get(o).logs.push(r):t.map.set(o,{userId:o,sdkAppId:s,logs:[r]})}}return t.map.size>0&&(t.splicedQueue=this._queue.splice(0,e)),t}upload(){return A(this,null,function*(){if(this._queue.length===0||!this._isEnableUploadLog)return;let{map:t,splicedQueue:e}=this.getLogsToUpload();if(t.size===0)return;try{let o=[...t.values()];for(let s=0;s<o.length;s++){let{userId:a,sdkAppId:d,logs:h}=o[s];yield this.uploadLogWithRetry(JSON.stringify({timestamp:Mc(),sdkAppId:String(d),userId:a,version:Ke,log:h.map(m=>m.log).join(`
4
+ `)}),d),h.forEach(m=>m.uploaded=!0)}}catch(o){}let r=e.filter(o=>!o.uploaded);r.length>0&&(this._queue=r.concat(this._queue))})}uploadLogWithRetry(t,e){return Mi({retryFunction:()=>oi({url:ii(e,Di.LOG),body:t,timeout:5e3,priority:"low"}),settings:{retries:3,timeout:2e3},onError:({retry:r})=>{r()}})()}getPrefix(t){let e=new Date;e.setTime(Cn());let r=String(e.getMilliseconds());return"padStart"in String.prototype&&(r=r.toString().padStart(3,"0")),`[${e.toTimeString().replace(/.*(\d{2}:\d{2}:\d{2}).*/,"$1")}:${r}] <${pr[t]}>`}getLogLevel(){return this._logLevel}setLogLevel(t){L(pr[t])||(this._logLevel!==t&&this.info("setLogLevel",t),this._logLevel=t)}enableUploadLog(){this._isEnableUploadLog=!0}disableUploadLog(){this.warn("disableUploadLog"),this._isEnableUploadLog=!1}logChunkToString(t){if(Se(t))return t;try{return t instanceof Error?t.toString():JSON.stringify(t)}catch(e){return""}}log(t,e,r=!0,o,s){var h;e.unshift(this.getPrefix(t));let a={log:e.reduce((m,T)=>`${m} ${this.logChunkToString(T)}`.trim(),""),level:t,userId:o,sdkAppId:s,forAllJoinedClients:r};if(F.emit(P.LOG,{log:a}),this._isEnableUploadLog&&t>=this._logLevelToUpload&&this._queue.push(a),t<this._logLevel)return;let d=((h=pr[t])==null?void 0:h.toLowerCase())||"info";pd.PRINT_LOG_TAG?console[d](QE,YE,ZE,...e):console[d](...e)}debug(...t){this.log(1,t)}info(...t){this.log(2,t)}warn(...t){this.log(3,t)}error(...t){this.log(4,t)}createLogger(t){return new ps(t)}checkURLParam(){let e=new URLSearchParams(location.search).get("logLevelToUpload"),r=e?Number(e):-1;pr[r]&&(this._logLevelToUpload=r)}getQueue(){return this._queue}};l(pd,"PRINT_LOG_TAG",!(bt||pt||nm));var pm=pd,U=new pm;var KE=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,i=>{let t=Math.random()*16|0;return(i=="x"?t:t&3|8).toString(16)})},ia=KE;var hm=class{constructor(){l(this,"_prefix","TRTC");l(this,"_queue",new Map)}getRealKey(t){return`${this._prefix}_${t}`}checkStorage(){if(!ni())return;setInterval(this.doFlush.bind(this),2e4),Object.keys(localStorage).filter(r=>{if(r.startsWith(this._prefix))try{let o=localStorage.getItem(r);if(!o)return!1;let s=JSON.parse(o);if(s&&s.expiresIn<Date.now())return!0}catch(o){return!1}return!1}).forEach(r=>localStorage.removeItem(r))}doFlush(){if(ni())try{for(let[t,e]of this._queue)localStorage.setItem(t,JSON.stringify(e))}catch(t){U.warn(t)}}getItem(t){if(!ni())return null;try{let e=localStorage.getItem(this.getRealKey(t));if(!e)return null;let r=JSON.parse(e);return r&&r.expiresIn>=Date.now()?r.value:null}catch(e){U.warn(e)}}setItem(t,e){if(ni())try{let r={expiresIn:Date.now()+Pc,value:e};this._queue.set(this.getRealKey(t),r)}catch(r){U.warn(r)}}deleteItem(t){if(!ni())return!1;try{return t=this.getRealKey(t),this._queue.delete(t),localStorage.removeItem(t),!0}catch(e){return U.warn(e),!1}}clear(){if(ni())try{localStorage.clear()}catch(t){U.warn(t)}}},Rs=new hm;var Li={};Kr(Li,{HTTPS_API:()=>_T,IS_GET_CAPABILITIES_SUPPORTED:()=>Lm,IS_GET_SETTINGS_SUPPORTED:()=>Ns,IS_GET_SYNCHRONIZATION_SOURCES_SUPPORTED:()=>RT,IS_INSERTABLE_STREAM_SUPPORTED:()=>ma,IS_JITTER_BUFFER_TARGET_SUPPORTED:()=>NT,IS_RTC_RTP_SENDER_SUPPORTED:()=>la,IS_SCRIPT_TRANSFORM_SUPPORTED:()=>Bf,IS_SEI_SUPPORTED:()=>pa,IS_SPC_SUPPORTED:()=>ST,basis:()=>CT,capabilityCheck:()=>Vm,checkSystemRequirementsInternal:()=>Rd,decodeSupportStatus:()=>Pf,encodeSupportStatus:()=>Pm,getBrowserInfo:()=>Ad,getDisplayResolution:()=>xf,isAddTransceiverSupported:()=>Ff,isBrowserSupported:()=>xm,isGetReceiversSupported:()=>TT,isGetSendersSupported:()=>Vf,isGetTransceiversSupported:()=>IT,isGetUserMediaSupported:()=>kf,isMediaDevicesSupported:()=>bd,isMediaSessionSupported:()=>Hf,isMediaStreamTrackProcessorSupported:()=>km,isReplaceTrackSupported:()=>AT,isRequestVideoFrameCallbackSupported:()=>Ao,isSIMDSupported:()=>vT,isScreenCaptureApiAvailable:()=>da,isSelectedCandidatePair:()=>gT,isSetParametersSupported:()=>bT,isSmallStreamAPISupported:()=>Uf,isSmallStreamSupported:()=>ua,isStopTransceiverSupported:()=>yT,isTRTCSupported:()=>hT,isUnifiedPlanDefault:()=>ET,isUsedInHttpProtocol:()=>mi,isWebAudioSupported:()=>Lf,isWebCodecSupported:()=>$f,isWebCodecsSupported:()=>Of,isWebRTCSupported:()=>Um,isWebTransportSupported:()=>Wf});var vm={};Kr(vm,{AUDIO_LEVEL_SCALE:()=>di,AudioCodecPipelineType:()=>Td,AudioDecoderDowngradeState:()=>gm,AudioPlayerMode:()=>Sm,AudioType:()=>Tm,BASIC_TYPE:()=>Io,BannedReason:()=>ym,CONNECTION_CLOSED_REASON:()=>hf,ClientEvent:()=>fm,CodecType:()=>Sf,ConnectionEvent:()=>pf,ConnectionState:()=>fd,DECODE_FAILED_ERROR_CODE:()=>Rm,FacingMode:()=>gd,LeaveReason:()=>Am,LocalTrackEvent:()=>hd,MULTI_VIDEO_DATA_TYPE:()=>ci,MediaType:()=>It,MediaTypeLabel:()=>eT,MonitorEventId:()=>sa,MutedFlag:()=>_f,NetworkQualityValue:()=>Tf,PlayerState:()=>vs,ReceiveMode:()=>If,RemoteStreamType:()=>kr,RemoteTrackEvent:()=>Cs,RoomEvent:()=>Eo,SceneNumber:()=>_m,StreamEvent:()=>ff,StreamType:()=>Ef,SubscribeMediaType:()=>oa,TRACK_ACTION:()=>gf,TRACK_KIND:()=>Em,TrackEvent:()=>ai,UserRole:()=>Ht,UserRoleNumber:()=>To,VideoCodec:()=>bm,VideoCodecPipelineType:()=>na,VideoContentHint:()=>aa,VideoDecoderDowngradeState:()=>_d,VideoPlayerMode:()=>Ed,VideoType:()=>Im});var pf=(H=>(H.TRACK_ADDED="track-added",H.TRACK_UPDATED="track-updated",H.TRACK_SUBSCRIBED="track-subscribed",H.STREAM_ADDED="stream-added",H.STREAM_REMOVED="stream-removed",H.STREAM_UPDATED="stream-updated",H.STREAM_PUBLISHED="stream-published",H.STREAM_SUBSCRIBED="stream-subscribed",H.STREAM_UNSUBSCRIBED="stream-unsubscribed",H.STATE_CHANGED="state-changed",H.ERROR="error",H.CONNECTION_STATE_CHANGED="connection-state-changed",H.FIREWALL_RESTRICTION="firewall-restriction",H.SEI_MESSAGE="sei-message",H.CLOSED="closed",H))(pf||{}),hf=(a=>(a.REMOTE_LEAVE="remote user exitRoom",a.REMOTE_UNPUBLISH="remote user unpublished",a.LOCAL_LEAVE="you exitRoom",a.LOCAL_UNPUBLISH="you unpublished",a.LOCAL_UNSUBSCRIBE="you unsubscribed",a.SWITCH_ROLE="you switch role to audience",a))(hf||{}),fm=(z=>(z.STREAM_ADDED="stream-added",z.STREAM_REMOVED="stream-removed",z.STREAM_UPDATED="stream-updated",z.STREAM_SUBSCRIBED="stream-subscribed",z.CONNECTION_STATE_CHANGED="connection-state-changed",z.PEER_JOIN="peer-join",z.PEER_LEAVE="peer-leave",z.MUTE_AUDIO="mute-audio",z.MUTE_VIDEO="mute-video",z.UNMUTE_AUDIO="unmute-audio",z.UNMUTE_VIDEO="unmute-video",z.CLIENT_BANNED="client-banned",z.NETWORK_QUALITY="network-quality",z.AUDIO_VOLUME="audio-volume",z.SEI_MESSAGE="sei-message",z.ERROR="error",z))(fm||{}),ff=(s=>(s.PLAYER_STATE_CHANGED="player-state-changed",s.SCREEN_SHARING_STOPPED="screen-sharing-stopped",s.CONNECTION_STATE_CHANGED="connection-state-changed",s.DEVICE_AUTO_RECOVERED="device-auto-recovered",s.ERROR="error",s))(ff||{}),hd=(a=>(a.DEVICE_AUTO_RECOVERED="1",a.DEVICE_RECOVER_FAILED="5",a.DEVICE_CHANGED="2",a.ERROR="3",a.PUBLISH_STATE_CHANGED="4",a.ENCODE_FAILED="6",a))(hd||{}),vs=(r=>(r.PAUSED="PAUSED",r.PLAYING="PLAYING",r.STOPPED="STOPPED",r))(vs||{}),Eo=(Pe=>(Pe.PEER_JOIN="peer-join",Pe.PEER_LEAVE="peer-leave",Pe.SIGNAL_CONNECTION_STATE_CHANGED="signal-connection-state-changed",Pe.MEDIA_CONNECTION_STATE_CHANGED="media-connection-state-changed",Pe.BANNED="banned",Pe.NETWORK_QUALITY="network-quality",Pe.AUDIO_VOLUME="audio-volume",Pe.SEI_MESSAGE="sei-message",Pe.ERROR="error",Pe.REMOTE_PUBLISH_STATE_CHANGED="remote-publish-state-changed",Pe.REMOTE_PUBLISHED="remote-published",Pe.REMOTE_UNPUBLISHED="remote-unpublished",Pe.FIREWALL_RESTRICTION="firewall-restriction",Pe.HEARTBEAT_REPORT="heartbeat-report",Pe.CUSTOM_MESSAGE="custom-message",Pe.LAYER_DATA="layerData",Pe.FIRST_VIDEO_FRAME="first-video-frame",Pe.DUMP="dump",Pe))(Eo||{}),ai=(d=>(d.PLAYER_STATE_CHANGED="player-state-changed",d.MUTE="mute",d.UNMUTE="unmute",d.ERROR="error",d.INPUT_MEDIA_TRACK_CHANGED="input-media-track-changed",d.OUTPUT_MEDIA_TRACK_CHANGED="output-media-track-changed",d.FIRST_VIDEO_FRAME="first-video-frame",d))(ai||{}),Cs=(e=>(e.DECODE_FAILED="decode-failed",e.DECODE_DOWNGRADE_STATE_CHANGED="decode-downgrade-state-changed",e))(Cs||{}),_f=(d=>(d[d.VIDEO=1]="VIDEO",d[d.SMALL=2]="SMALL",d[d.AUX=4]="AUX",d[d.AUDIO=8]="AUDIO",d[d.VIDEO_MUTE=16]="VIDEO_MUTE",d[d.AUX_MUTE=32]="AUX_MUTE",d[d.AUDIO_MUTE=64]="AUDIO_MUTE",d))(_f||{}),_m=(e=>(e[e.RTC=1]="RTC",e[e.LIVE=2]="LIVE",e))(_m||{}),To=(e=>(e[e.ANCHOR=20]="ANCHOR",e[e.AUDIENCE=21]="AUDIENCE",e))(To||{}),Ht=(e=>(e.ANCHOR="anchor",e.AUDIENCE="audience",e))(Ht||{}),fd=(s=>(s.CONNECTED="CONNECTED",s.DISCONNECTED="DISCONNECTED",s.CONNECTING="CONNECTING",s.RECONNECTED="RECONNECTED",s.RECONNECTING="RECONNECTING",s))(fd||{}),gm=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(gm||{}),_d=(o=>(o.INITIALIZED="INITIALIZED",o.STARTING="STARTING",o.STARTED="STARTED",o.FAILED="FAILED",o))(_d||{}),Em=(r=>(r.AUDIO="audio",r.VIDEO="video",r.AUXILIARY="auxVideo",r))(Em||{}),gf=(e=>(e.ADD="add",e.REMOVE="remove",e))(gf||{}),It=(s=>(s[s.NULL=0]="NULL",s[s.AUDIO=1]="AUDIO",s[s.AUX_VIDEO=2]="AUX_VIDEO",s[s.BIG_VIDEO=4]="BIG_VIDEO",s[s.SMALL_VIDEO=8]="SMALL_VIDEO",s))(It||{}),eT={1:"audio",2:"auxVideo",4:"video"},Tm=(t=>(t[t.opus=111]="opus",t))(Tm||{}),Im=(e=>(e[e.h264=100]="h264",e[e.vp8=101]="vp8",e))(Im||{}),Ef=(e=>(e.Big="big",e.Small="small",e))(Ef||{}),kr=(e=>(e.Main="main",e.Aux="auxiliary",e))(kr||{}),ci=(s=>(s[s.MULTI_DATA_AUDIO=1]="MULTI_DATA_AUDIO",s[s.MULTI_DATA_BIG_IMG=2]="MULTI_DATA_BIG_IMG",s[s.MULTI_DATA_SMALL_IMG=3]="MULTI_DATA_SMALL_IMG",s[s.MULTI_DATA_AUX_IMG=7]="MULTI_DATA_AUX_IMG",s[s.MULTI_DATA_TYPE_BUTT=12]="MULTI_DATA_TYPE_BUTT",s))(ci||{}),sa=(q=>(q[q.PUBLISH_VIDEO=32768]="PUBLISH_VIDEO",q[q.PUBLISH_AUDIO=32769]="PUBLISH_AUDIO",q[q.UNPUBLISH_VIDEO=32770]="UNPUBLISH_VIDEO",q[q.UNPUBLISH_AUDIO=32771]="UNPUBLISH_AUDIO",q[q.MUTE_AUDIO=32772]="MUTE_AUDIO",q[q.MUTE_VIDEO=32773]="MUTE_VIDEO",q[q.UNMUTE_AUDIO=32774]="UNMUTE_AUDIO",q[q.UNMUTE_VIDEO=32775]="UNMUTE_VIDEO",q[q.SUBSCRIBE_VIDEO=32776]="SUBSCRIBE_VIDEO",q[q.SUBSCRIBE_AUDIO=32777]="SUBSCRIBE_AUDIO",q[q.UNSUBSCRIBE_VIDEO=32778]="UNSUBSCRIBE_VIDEO",q[q.UNSUBSCRIBE_AUDIO=32779]="UNSUBSCRIBE_AUDIO",q[q.SWITCH_CAMERA=32780]="SWITCH_CAMERA",q[q.SWITCH_MICROPHONE=32781]="SWITCH_MICROPHONE",q[q.REPLACE_VIDEO=32782]="REPLACE_VIDEO",q[q.REPLACE_AUDIO=32783]="REPLACE_AUDIO",q[q.MUTE_REMOTE_VIDEO=32784]="MUTE_REMOTE_VIDEO",q[q.MUTE_REMOTE_AUDIO=32785]="MUTE_REMOTE_AUDIO",q[q.UNMUTE_REMOTE_VIDEO=32786]="UNMUTE_REMOTE_VIDEO",q[q.UNMUTE_REMOTE_AUDIO=32787]="UNMUTE_REMOTE_AUDIO",q[q.JOIN=32788]="JOIN",q[q.LEAVE=32789]="LEAVE",q[q.SIGNAL_DISCONNECTED=32790]="SIGNAL_DISCONNECTED",q[q.SIGNAL_CONNECTED=32791]="SIGNAL_CONNECTED",q[q.TRANSPORT_UPLINK_CONNECTED=32792]="TRANSPORT_UPLINK_CONNECTED",q[q.TRANSPORT_DOWNLINK_CONNECTED=32793]="TRANSPORT_DOWNLINK_CONNECTED",q[q.SIGNAl_RECONNECTING=32794]="SIGNAl_RECONNECTING",q[q.SIGNAL_RECONNECT_SUCCESS=32795]="SIGNAL_RECONNECT_SUCCESS",q[q.SIGNAL_RECONNECT_FAIL=32796]="SIGNAL_RECONNECT_FAIL",q[q.TRANSPORT_UPLINK_RECONNECTING=32797]="TRANSPORT_UPLINK_RECONNECTING",q[q.TRANSPORT_UPLINK_RECONNECT_SUCCESS=32798]="TRANSPORT_UPLINK_RECONNECT_SUCCESS",q[q.TRANSPORT_UPLINK_RECONNECT_FAIL=32799]="TRANSPORT_UPLINK_RECONNECT_FAIL",q[q.TRANSPORT_DOWNLINK_RECONNECTING=32800]="TRANSPORT_DOWNLINK_RECONNECTING",q[q.TRANSPORT_DOWNLINK_RECONNECT_SUCCESS=32801]="TRANSPORT_DOWNLINK_RECONNECT_SUCCESS",q[q.TRANSPORT_DOWNLINK_RECONNECT_FAIL=32802]="TRANSPORT_DOWNLINK_RECONNECT_FAIL",q[q.SUBSCRIBE_SMALL_VIDEO=32803]="SUBSCRIBE_SMALL_VIDEO",q[q.UNSUBSCRIBE_SMALL_VIDEO=32804]="UNSUBSCRIBE_SMALL_VIDEO",q[q.PUBLISH_AUX=32805]="PUBLISH_AUX",q[q.UNPUBLISH_AUX=32806]="UNPUBLISH_AUX",q[q.DEVICE_CAPTURE=2003]="DEVICE_CAPTURE",q[q.VIDEO_ENCODER=4004]="VIDEO_ENCODER",q[q.VIDEO_DECODER=4005]="VIDEO_DECODER",q))(sa||{}),Tf=(d=>(d[d.UNKNOWN=0]="UNKNOWN",d[d.EXCELLENT=1]="EXCELLENT",d[d.GOOD=2]="GOOD",d[d.POOR=3]="POOR",d[d.BAD=4]="BAD",d[d.VERY_BAD=5]="VERY_BAD",d[d.DISCONNECTED=6]="DISCONNECTED",d))(Tf||{}),If=(o=>(o[o.MANUAL=0]="MANUAL",o[o.AUTO_AUDIO=1]="AUTO_AUDIO",o[o.AUTO_VIDEO=2]="AUTO_VIDEO",o[o.AUTO_ALL=3]="AUTO_ALL",o))(If||{}),gd=(e=>(e.user="user",e.environment="environment",e))(gd||{}),Ed=(r=>(r[r.ELEMENT=0]="ELEMENT",r[r.CANVAS_FROM_ELEMENT=1]="CANVAS_FROM_ELEMENT",r[r.CANVAS_WITHOUT_ELEMENT=2]="CANVAS_WITHOUT_ELEMENT",r))(Ed||{}),Sm=(e=>(e[e.ELEMENT=0]="ELEMENT",e[e.CONTEXT=1]="CONTEXT",e))(Sm||{}),ym=(o=>(o.BANNED="banned",o.KICK="kick",o.USER_TIME_OUT="user_time_out",o.ROOM_DISBAND="room_disband",o))(ym||{}),Am=(m=>(m[m.USER_EXIT_REASON_TC_USER_EXIT_NORMAL=0]="USER_EXIT_REASON_TC_USER_EXIT_NORMAL",m[m.USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT=1]="USER_EXIT_REASON_TC_USER_EXIT_TIMEOUT",m[m.USER_EXIT_REASON_TC_USER_EXIT_KICKED=2]="USER_EXIT_REASON_TC_USER_EXIT_KICKED",m[m.USER_EXIT_REASON_TC_USER_EXIT_CHANGED=3]="USER_EXIT_REASON_TC_USER_EXIT_CHANGED",m[m.USER_KICK_OUT_CODE_BUSINESS_USER=4]="USER_KICK_OUT_CODE_BUSINESS_USER",m[m.USER_KICK_OUT_CODE_BUSINESS_ROOM=5]="USER_KICK_OUT_CODE_BUSINESS_ROOM",m[m.USER_KICK_OUT_CODE_SERVER_USER=6]="USER_KICK_OUT_CODE_SERVER_USER",m[m.USER_KICK_OUT_CODE_SERVER_ROOM=7]="USER_KICK_OUT_CODE_SERVER_ROOM",m[m.USER_KICK_SESS_EXSIT=8]="USER_KICK_SESS_EXSIT",m))(Am||{}),di=1e8,oa=class{constructor(){l(this,"mediaType",0)}set audio(t){t?this.mediaType|=1:this.mediaType&=-2}get audio(){return!!(this.mediaType&1)}set video(t){t?this.mediaType|=4:this.mediaType&=-5}get video(){return!!(this.mediaType&4)}set auxiliary(t){t?this.mediaType|=2:this.mediaType&=-3}get auxiliary(){return!!(this.mediaType&2)}set smallVideo(t){t?this.mediaType|=8:this.mediaType&=-9}get smallVideo(){return!!(this.mediaType&8)}},Io=(s=>(s.String="string",s.Number="number",s.Boolean="boolean",s.Array="array",s.Object="object",s))(Io||{}),bm=(r=>(r.H264="h264",r.H265="h265",r.VP8="vp8",r))(bm||{}),na=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.DUMP=1]="DUMP",o[o.SEI=2]="SEI",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(na||{}),Td=(o=>(o[o.ENCRYPT_AND_DECRYPT=0]="ENCRYPT_AND_DECRYPT",o[o.NTP_TO_AUDIO_FRAME=1]="NTP_TO_AUDIO_FRAME",o[o.DUMP=2]="DUMP",o[o.ENCODE_AND_DECODE=3]="ENCODE_AND_DECODE",o))(Td||{}),Sf=(r=>(r.WebRTC="webrtc",r.WebCodecs="webcodecs",r.WebAssembly="webassembly",r))(Sf||{}),Rm=(I=>(I[I.SUCCESS=0]="SUCCESS",I[I.FAILED=1]="FAILED",I[I.WEBCODEC_INIT=2]="WEBCODEC_INIT",I[I.WEBCODEC_CONFIG_NOT_SUPPORT=3]="WEBCODEC_CONFIG_NOT_SUPPORT",I[I.WEBCODEC_DECODER_ERROR=4]="WEBCODEC_DECODER_ERROR",I[I.WEBCODEC_TRACK_MUTE=5]="WEBCODEC_TRACK_MUTE",I[I.WASM_INIT=6]="WASM_INIT",I[I.WASM_WEBGL_UNAVALIABLE=7]="WASM_WEBGL_UNAVALIABLE",I[I.WASM_DECODER_ERROR=8]="WASM_DECODER_ERROR",I[I.WASM_TRACK_MUTE=9]="WASM_TRACK_MUTE",I[I.TEST=10]="TEST",I))(Rm||{}),aa=(o=>(o.NONE="",o.DETAIL="detail",o.MOTION="motion",o.TEXT="text",o))(aa||{});var ot={AVOID_REPEATED_CALL:"AVOID_REPEATED_CALL",INVALID_PARAMETER_REQUIRED:"INVALID_PARAMETER_REQUIRED",INVALID_PARAMETER_TYPE:"INVALID_PARAMETER_TYPE",INVALID_PARAMETER_EMPTY:"INVALID_PARAMETER_EMPTY",INVALID_PARAMETER_INSTANCE:"INVALID_PARAMETER_INSTANCE",INVALID_PARAMETER_RANGE:"INVALID_PARAMETER_RANGE",INVALID_PARAMETER_MIN:"INVALID_PARAMETER_MIN",INVALID_PARAMETER_MAX:"INVALID_PARAMETER_MAX",INVALID_PARAMETER_STREAMTYPE:"INVALID_PARAMETER_STREAMTYPE",API_CALL_TIMEOUT:"API_CALL_TIMEOUT",SIGNAL_CHANNEL_RECONNECTION_FAILED:"SIGNAL_CHANNEL_RECONNECTION_FAILED",SIGNAL_CHANNEL_SETUP_FAILED:"SIGNAL_CHANNEL_SETUP_FAILED",ERROR_MESSAGE:"ERROR_MESSAGE",EXCHANGE_SDP_TIMEOUT:"EXCHANGE_SDP_TIMEOUT",DOWNLINK_RECONNECTION_FAILED:"DOWNLINK_RECONNECTION_FAILED",EXCHANGE_SDP_FAILED:"EXCHANGE_SDP_FAILED",UPDATE_OFFER_TIMEOUT:"UPDATE_OFFER_TIMEOUT",UPLINK_RECONNECTION_FAILED:"UPLINK_RECONNECTION_FAILED",INVALID_RECORDID:"INVALID_RECORDID",INVALID_PURE_AUDIO:"INVALID_PURE_AUDIO",INVALID_STREAMID:"INVALID_STREAMID",INVALID_USER_DEFINE_RECORDID:"INVALID_USER_DEFINE_RECORDID",INVALID_USER_DEFINE_PUSH_ARGS:"INVALID_USER_DEFINE_PUSH_ARGS",INVALID_PROXY:"INVALID_PROXY",INVALID_JOIN:"INVALID_JOIN",INVALID_ROOMID_STRING:"INVALID_ROOMID_STRING",INVALID_ROOMID_INTEGER:"INVALID_ROOMID_INTEGER",INVALID_SIGNAL_CHANNEL:"INVALID_SIGNAL_CHANNEL",JOIN_ROOM_TIMEOUT:"JOIN_ROOM_TIMEOUT",JOIN_ROOM_FAILED:"JOIN_ROOM_FAILED",REJOIN_ROOM_FAILED:"REJOIN_ROOM_FAILED",INVALID_DESTROY:"INVALID_DESTROY",INVALID_PUBLISH:"INVALID_PUBLISH",INVALID_UNPUBLISH:"INVALID_UNPUBLISH",INVALID_AUDIENCE:"INVALID_AUDIENCE",INVALID_INITIALIZE:"INVALID_INITIALIZE",INVALID_DUPLICATE_PUBLISHING:"INVALID_DUPLICATE_PUBLISHING",INVALID_SUBSCRIBE_UNDEFINED:"INVALID_SUBSCRIBE_UNDEFINED",INVALID_SUBSCRIBE_LOCAL:"INVALID_SUBSCRIBE_LOCAL",INVALID_REMOTE_STREAM:"INVALID_REMOTE_STREAM",SUBSCRIBE_FAILED:"SUBSCRIBE_FAILED",INVALID_ROLE:"INVALID_ROLE",INVALID_PARAMETER_SWITCH_ROLE:"INVALID_PARAMETER_SWITCH_ROLE",INVALID_OPERATION_SWITCH_ROLE:"INVALID_OPERATION_SWITCH_ROLE",SWITCH_ROLE_TIMEOUT:"SWITCH_ROLE_TIMEOUT",SWITCH_ROLE_FAILED:"SWITCH_ROLE_FAILED",CLIENT_BANNED:"CLIENT_BANNED",INVALID_OPERATION_START_PUBLISH_CDN:"INVALID_OPERATION_START_PUBLISH_CDN",INVALID_OPERATION_STOP_PUBLISH_CDN:"INVALID_OPERATION_STOP_PUBLISH_CDN",INVALID_STREAM_ID:"INVALID_STREAM_ID",START_PUBLISH_CDN_FAILED:"START_PUBLISH_CDN_FAILED",STOP_PUBLISH_CDN_FAILED:"STOP_PUBLISH_CDN_FAILED",START_MIX_TRANSCODE:"START_MIX_TRANSCODE",STOP_MIX_TRANSCODE:"STOP_MIX_TRANSCODE",INVALID_AUDIO_VOLUME:"INVALID_AUDIO_VOLUME",ENABLE_SMALL_STREAM_PUBLISHED:"ENABLE_SMALL_STREAM_PUBLISHED",DISABLE_SMALL_STREAM_PUBLISHED:"DISABLE_SMALL_STREAM_PUBLISHED",NOT_SUPPORTED_SMALL_STREAM:"NOT_SUPPORTED_SMALL_STREAM",INVALID_SMALL_STREAM_PROFILE:"INVALID_SMALL_STREAM_PROFILE",INVALID_PARAMETER_REMOTE_STREAM:"INVALID_PARAMETER_REMOTE_STREAM",INVALID_OPERATION_CHANGE_SMALL:"INVALID_OPERATION_CHANGE_SMALL",REMOTE_NOT_PUBLISH_SMALL_STREAM:"REMOTE_NOT_PUBLISH_SMALL_STREAM",INVALID_SWITCH_DEVICE:"INVALID_SWITCH_DEVICE",INVALID_SWITCH_DEVICE_PUBLISHING:"INVALID_SWITCH_DEVICE_PUBLISHING",INVALID_REPLACE_TRACK:"INVALID_REPLACE_TRACK",INVALID_INITIALIZE_LOCAL_STREAM:"INVALID_INITIALIZE_LOCAL_STREAM",INVALID_ADD_TRACK_REPETITIVE:"INVALID_ADD_TRACK_REPETITIVE",INVALID_ADD_TRACK_REMOVING:"INVALID_ADD_TRACK_REMOVING",INVALID_ADD_TRACK_PUBLISHING:"INVALID_ADD_TRACK_PUBLISHING",INVALID_STREAM_INITIALIZED:"INVALID_STREAM_INITIALIZED",INVALID_ADD_TRACK_NUMBER:"INVALID_ADD_TRACK_NUMBER",INVALID_REMOVE_AUDIO_TRACK:"INVALID_REMOVE_AUDIO_TRACK",INVALID_REMOVE_AUDIO_ADDING:"INVALID_REMOVE_AUDIO_ADDING",INVALID_REMOVE_AUDIO_ON:"INVALID_REMOVE_AUDIO_ON",INVALID_REMOVE_TRACK_PUBLISHING:"INVALID_REMOVE_TRACK_PUBLISHING",INVALID_REMOVE_TRACK_NOT_TRACK:"INVALID_REMOVE_TRACK_NOT_TRACK",INVALID_REMOVE_TRACK_NUMBER:"INVALID_REMOVE_TRACK_NUMBER",INVALID_REPLACE_TRACK_NO_TRACK:"INVALID_REPLACE_TRACK_NO_TRACK",REPEAT_JOIN:"REPEAT_JOIN",CLIENT_DESTROYED:"CLIENT_DESTROYED",NOT_BUG_PACKAGE:"NOT_BUG_PACKAGE",START_MIX_TRANSCODE_FAILED:"START_MIX_TRANSCODE_FAILED",STOP_MIX_TRANSCODE_FAILED:"STOP_MIX_TRANSCODE_FAILED",MIX_TRANSCODE_NOT_STARTED:"MIX_TRANSCODE_NOT_STARTED",CANNOT_LESS_THAN_ZERO:"CANNOT_LESS_THAN_ZERO",MIX_PARAMS_VIDEO_FRAMERATE:"MIX_PARAMS_VIDEO_FRAMERATE",MIX_PARAMS_VIDEO_GOP:"MIX_PARAMS_VIDEO_GOP",MIX_PARAMS_AUDIO_BITRATE:"MIX_PARAMS_AUDIO_BITRATE",MIX_PARAMS_USER_Z_ORDER:"MIX_PARAMS_USER_Z_ORDER",MIX_PARAMS_NOT_SELF:"MIX_PARAMS_NOT_SELF",MIX_PARAMS_USER_STREAM:"MIX_PARAMS_USER_STREAM",INVALID_PLAY:"INVALID_PLAY",INVALID_ELEMENT_ID:"INVALID_ELEMENT_ID",INVALID_ELEMENT_ID_TYPE:"INVALID_ELEMENT_ID_TYPE",PLAY_FAILED:"PLAY_FAILED",INVALID_USERID:"INVALID_USERID",INVALID_CREATE_STREAM_SOURCE:"INVALID_CREATE_STREAM_SOURCE",INVALID_CREATE_STREAM_SCREEN:"INVALID_CREATE_STREAM_SCREEN",INVALID_CREATE_STREAM_AUDIO:"INVALID_CREATE_STREAM_AUDIO",INVALID_CREATE_STREAM_SCREEN_AUDIO:"INVALID_CREATE_STREAM_SCREEN_AUDIO",NOT_SUPPORTED_HTTP:"NOT_SUPPORTED_HTTP",NOT_SUPPORTED_WEBRTC:"NOT_SUPPORTED_WEBRTC",NOT_SUPPORTED_PROFILE:"NOT_SUPPORTED_PROFILE",NOT_SUPPORTED_MEDIA:"NOT_SUPPORTED_MEDIA",NOT_SUPPORTED_H264ENCODE:"NOT_SUPPORTED_H264ENCODE",NOT_SUPPORTED_H264DECODE:"NOT_SUPPORTED_H264DECODE",NOT_SUPPORTED_TRACK:"NOT_SUPPORTED_TRACK",NOT_SUPPORTED_SWITCH_DEVICE:"NOT_SUPPORTED_SWITCH_DEVICE",NOT_SUPPORTED_CAPTURE:"NOT_SUPPORTED_CAPTURE",NOT_SUPPORTED_AUX:"NOT_SUPPORTED_AUX",MICROPHONE_NOT_FOUND:"MICROPHONE_NOT_FOUND",CAMERA_NOT_FOUND:"CAMERA_NOT_FOUND",SIGNAL_RESPONSE_FAILED:"SIGNAL_RESPONSE_FAILED",CATCH_HANDLER_ERROR:"CATCH_HANDLER_ERROR",API_NOT_EXIST:"API_NOT_EXIST",CONNECTION_CLOSED:"CONNECTION_CLOSED",SUBSCRIBE_ALL_FALSE:"SUBSCRIBE_ALL_FALSE",SEI_NOT_SUPPORT:"SEI_NOT_SUPPORT",SEI_DISABLED:"SEI_DISABLED",SEI_BEFORE_PUBLISH:"SEI_BEFORE_PUBLISH",SEI_NOT_VIDEO:"SEI_NOT_VIDEO",CALL_FREQUENCY_LIMIT:"CALL_FREQUENCY_LIMIT",CONNECTION_ABORTED:"CONNECTION_ABORTED",API_CALL_ABORTED:"API_CALL_ABORTED",DUPLICATE_AUX:"DUPLICATE_AUX"},Wt={AVOID_REPEATED_CALL(i){return`previous ${i.name}() is ongoing, please avoid repeated calls.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ut(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ut(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_MIN({key:i,rule:t,fnName:e,value:r}){return`the min value of ${i||t.name} is ${t.min}, received: ${r}.`},INVALID_PARAMETER_MAX({key:i,rule:t,fnName:e,value:r}){return`the max value of ${i||t.name} is ${t.max}, received: ${r}.`},API_CALL_TIMEOUT(i){return`${i.commandDesc||i.command} timeout observed.`},SIGNAL_CHANNEL_RECONNECTION_FAILED:"signal channel reconnection failed, please check your network.",SIGNAL_CHANNEL_SETUP_FAILED(i){return`SignalChannel setup failure: (errorCode: ${i.errorCode}, errorMsg: ${i.errorMsg} }).`},ERROR_MESSAGE(i){let t=`${i.type} failed`;return i.message&&(t=`${t}: ${i.message}.`),t},EXCHANGE_SDP_TIMEOUT:"exchange sdp timeout.",DOWNLINK_RECONNECTION_FAILED:"downlink reconnection failed, please check your network and re-join room.",EXCHANGE_SDP_FAILED(i){return`exchange sdp failed ${i.errMsg}.`},UPDATE_OFFER_TIMEOUT:"update offer timeout observed.",UPLINK_RECONNECTION_FAILED:"uplink reconnection failed, please check your network and publish again.",INVALID_RECORDID:"recordId must be an integer number.",INVALID_PURE_AUDIO:"pureAudioPushMode must be 1 or 2.",INVALID_STREAMID:"streamId must be a sting literal within 64 bytes, and not be empty.",INVALID_USER_DEFINE_RECORDID:"userDefineRecordId must be a sting literal contains (a-zA-Z),(0-9), underline and hyphen, within 64 bytes, and not be empty.",INVALID_USER_DEFINE_PUSH_ARGS:"userDefinePushArgs must be a sting literal within 256 bytes, and not be empty.",INVALID_PROXY:'proxy server url must start with "wss://".',INVALID_JOIN:"duplicate join() called.",INVALID_ROOMID_STRING(i){return`'${i}' must be validate string when useStringRoomId is true.`},INVALID_ROOMID_INTEGER(i){return`'${i}' must be an integer between [1, 4294967294] when useStringRoomId is false.`},INVALID_SIGNAL_CHANNEL:"SignalChannel is not ready yet.",JOIN_ROOM_TIMEOUT:"join room timeout.",JOIN_ROOM_FAILED({error:i,code:t}){return`Failed to join room - ${i} code: ${t}`},REJOIN_ROOM_FAILED(i){return`reJoin room: ${i.roomId} failed, please check your network.`},INVALID_DESTROY:"please call leave() before destroy().",INVALID_PUBLISH:"please call join() before publish().",INVALID_UNPUBLISH:"stream has not been published yet.",INVALID_AUDIENCE:'no permission to publish() under live/audience, please call switchRole("anchor") firstly before publish().',INVALID_INITIALIZE:"cannot publish stream because stream is not initialized, is switching device, or has been closed.",INVALID_DUPLICATE_PUBLISHING(i){return`duplicate ${i} stream publishing, please unpublish your prev ${i} stream and then re-publish.`},INVALID_SUBSCRIBE_UNDEFINED:"stream is undefined or null.",INVALID_SUBSCRIBE_LOCAL:"stream cannot be LocalStream.",INVALID_REMOTE_STREAM:"remoteStream does not exist because it has been unpublished by remote peer.",SUBSCRIBE_FAILED({message:i,userId:t,streamType:e}){return`failed to subscribe ${t} ${e} stream, reason: ${i}.`},INVALID_ROLE:"switchRole can only be called in live mode.",INVALID_PARAMETER_SWITCH_ROLE:"role could only be set to a value as anchor or audience.",INVALID_OPERATION_SWITCH_ROLE:"please call join() before switchRole().",SWITCH_ROLE_TIMEOUT:"switchRole timeout.",SWITCH_ROLE_FAILED(i){return`switchRole failed, errCode: ${i.code} errMsg: ${i.message}.`},CLIENT_BANNED(i){return`client was banned because of ${i.message}.`},INVALID_OPERATION_START_PUBLISH_CDN:"please call startPublishCDNStream() after join room and publish the local stream.",INVALID_OPERATION_STOP_PUBLISH_CDN:"please call startPublishCDNStream() before stopPublishCDNStream().",START_PUBLISH_CDN_FAILED(i){return`startPublishCDNStream failed, errMsg: ${i.message}.`},STOP_PUBLISH_CDN_FAILED(i){return`stopPublishCDNStream failed, errMsg: ${i.message}.`},INVALID_STREAM_ID(i){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},START_MIX_TRANSCODE:"please call startMixTranscode() after join().",STOP_MIX_TRANSCODE:"please call stopMixTranscode() after startMixTranscode().",INVALID_AUDIO_VOLUME:"interval must be a number.",ENABLE_SMALL_STREAM_PUBLISHED:"Cannot enable small stream after localStream published.",DISABLE_SMALL_STREAM_PUBLISHED:"Cannot disable small stream after localStream published.",NOT_SUPPORTED_SMALL_STREAM:"your browser does not support opening small stream.",INVALID_SMALL_STREAM_PROFILE:"small stream profile is invalid.",INVALID_PARAMETER_REMOTE_STREAM:"remoteStream is invalid.",INVALID_OPERATION_CHANGE_SMALL:"cannot switch to the small stream without subscribing to the video of remoteStream.",REMOTE_NOT_PUBLISH_SMALL_STREAM:"remote peer does not publish small stream.",INVALID_SWITCH_DEVICE:"cannot switch device on current stream.",INVALID_SWITCH_DEVICE_PUBLISHING:"cannot switch device when publishing localStream.",INVALID_REPLACE_TRACK:"cannot replace track when publishing localStream.",INVALID_INITIALIZE_LOCAL_STREAM:"local stream has not initialized yet.",INVALID_ADD_TRACK_REPETITIVE:"previous addTrack is ongoing, please avoid repetitive execution.",INVALID_ADD_TRACK_REMOVING:"cannot add track when a track is removing.",INVALID_ADD_TRACK_PUBLISHING:"cannot add track when publishing localStream.",INVALID_STREAM_INITIALIZED:"your local stream haven't been initialized yet.",INVALID_ADD_TRACK_NUMBER:"a Stream has at most one audio track and one video track.",INVALID_REMOVE_AUDIO_TRACK:"remove audio track is not supported on your browser.",INVALID_REMOVE_AUDIO_ADDING:"cannot remove track when a track is adding.",INVALID_REMOVE_AUDIO_ON:"previous removeTrack is ongoing, please avoid repetitive execution.",INVALID_REMOVE_TRACK_PUBLISHING:"cannot remove track when publishing localStream.",INVALID_REMOVE_TRACK_NOT_TRACK:"localStream has not this track.",INVALID_REMOVE_TRACK_NUMBER:"remove the only video track is not supported, please use replaceTrack or muteVideo.",INVALID_REPLACE_TRACK_NO_TRACK(i){return`cannot replace ${i.kind} track because stream has not ${i.kind} track`},NOT_BUG_PACKAGE:"You need to buy packages, refer to tencent console.",START_MIX_TRANSCODE_FAILED(i){return`startMixTranscode failed, errMsg: ${i.message}.`},STOP_MIX_TRANSCODE_FAILED(i){return`stopMixTranscode failed, errMsg: ${i.message}.`},MIX_TRANSCODE_NOT_STARTED:"mixTranscode has not been started.",CANNOT_LESS_THAN_ZERO({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},MIX_PARAMS_VIDEO_FRAMERATE:"'config.videoFramerate' should be an integer between 0 and 30, excluding 0.",MIX_PARAMS_VIDEO_GOP:"'config.videoGOP' should be an integer between 1 and 8.",MIX_PARAMS_AUDIO_BITRATE:"'config.audioBitrate' should be an integer between 32 and 192.",MIX_PARAMS_USER_Z_ORDER(i){return`'${i}' is required and must be between 1 and 15.`},MIX_PARAMS_NOT_SELF:"'config.mixUsers' must contain self.",MIX_PARAMS_USER_STREAM:"'config.videoWidth' and 'config.videoHeight' of output stream should be contain all mix stream.",INVALID_PLAY:"duplicate play() call observed, please stop() firstly.",INVALID_ELEMENT_ID:({key:i,fnName:t})=>`'${i}' is not found in the document object when calling ${t}().`,INVALID_ELEMENT_ID_TYPE:({key:i,fnName:t,type:e})=>`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`,PLAY_FAILED:i=>`${i.media} play failed, browser exception: ${i.error.toString()}`,INVALID_USERID:"userId cannot be all spaces.",INVALID_CREATE_STREAM_SOURCE:"LocalStream must be created by createStream() with either audio/video or audioSource/videoSource, but can not be mixed with audio/video and audioSource/videoSource.",INVALID_CREATE_STREAM_SCREEN:"screen/video cannot be both true.",INVALID_CREATE_STREAM_AUDIO:"audio/screenAudio cannot be both true.",INVALID_CREATE_STREAM_SCREEN_AUDIO:"when screen is true, screenAudio can be configured.",NOT_SUPPORTED_HTTP:"http protocol does not support the ability to capture microphone, camera and screen. please use https to deploy your page.",NOT_SUPPORTED_WEBRTC:"your browser or environment does not support full WebRTC capabilities.",NOT_SUPPORTED_PROFILE:"your browser does not support setVideoProfile.",NOT_SUPPORTED_MEDIA:"your browser or environment does not support navigator.mediaDevices.",NOT_SUPPORTED_H264ENCODE:"your device does not support H.264 encoding.",NOT_SUPPORTED_H264DECODE:"your device does not support H.264 decoding.",NOT_SUPPORTED_TRACK(i){return`${i}Track is not supported on your browser.`},NOT_SUPPORTED_SWITCH_DEVICE:"switchDevice is not supported on your browser.",NOT_SUPPORTED_CAPTURE:"Your browser or environment does not support screen sharing, please check whether the browser version.",MICROPHONE_NOT_FOUND:"no microphone detected, please check your microphone.",CAMERA_NOT_FOUND:"no camera detected, please check your camera.",SIGNAL_RESPONSE_FAILED(i){return`${i.signalResponse} failed, response code is ${i.code} , errMsg: ${i.message}.`},CATCH_HANDLER_ERROR({name:i,event:t}){return`an error was caught in ${i}.on('${t}', handler), please check your code in 'handler'.`},API_NOT_EXIST({name:i}){return`experimental api ${i} does not exist.`},REPEAT_JOIN:i=>"please avoid repeated join.",CONNECTION_CLOSED:"remoteStream has been unsubscribed or unpublished by remote user.",SUBSCRIBE_ALL_FALSE:"cannot subscribe when both audio & video are false, use client.unsubscribe() instead",CLIENT_DESTROYED({funName:i}){return`failed to call ${i}() because client was destroyed.`},SEI_NOT_SUPPORT:i=>`not support to sendSEIMessage${i===!1?" without using h264 codec":""}`,SEI_DISABLED:"SEI is disabled",SEI_BEFORE_PUBLISH:"please call sendSEIMessage() after publish() success",SEI_NOT_VIDEO:"cannot send sei when localStream has not video.",CALL_FREQUENCY_LIMIT:({isSize:i,name:t,timesInSecond:e,maxSizeInSecond:r})=>`api ${t} call ${i?"size":"times"} is over ${i?`${r} bytes`:e} in a second.`,CONNECTION_ABORTED(i){return`connection aborted due to: ${i}`},API_CALL_ABORTED(i){let t;return i.message.includes("REMOTE_STREAM_NOT_EXIST")?t=`Subscribe ${i.userId} ${i.streamType} stream aborted, reason: remote user ${i.userId} unpublished stream.`:t=`API aborted, reason: ${i.message}`,t},DUPLICATE_AUX:"only one auxiliary stream can be published in a room.",NOT_SUPPORTED_AUX:"publish auxiliary stream is not supported on your browser.",INVALID_PARAMETER_STREAMTYPE:i=>`'streamType' is required when 'userId' is not '*', calling ${i}()`};var yf=(i,t)=>t?`${Nr}/${i}/${t}`:`${Nr}/${i}/index.html`;var tT=()=>{if(window.TRTC_ERROR_INFO&&window.TRTC_ERROR_LINK)return{TRTC_ERROR_INFO:window.TRTC_ERROR_INFO,TRTC_ERROR_LINK:window.TRTC_ERROR_LINK};let i=localStorage==null?void 0:localStorage.getItem(Fl);if(i){i=JSON.parse(i);let t=document.createElement("script");t.type="text/javascript",t.text=i.message,document.body.appendChild(t);let e=window.TRTC_ERROR_INFO,r=window.TRTC_ERROR_LINK;return document.body.removeChild(t),{TRTC_ERROR_INFO:e,TRTC_ERROR_LINK:r}}return{}};function st(i){let{key:t,data:e,link:r,addDocLink:o=!0}=i,s="",a="",d="";Fe(Wt[t])?s=Wt[t](e):Se(Wt[t])&&(s=Wt[t]);let{TRTC_ERROR_INFO:h,TRTC_ERROR_LINK:m}=tT();r?d=`${r.className}.html#${r.fnName}`:m&&m[t]&&(Fe(m[t])?d=m[t](e):Se(m[t])&&(d=m[t]));let T=s;return hr()&&(h&&h[t]&&(Fe(h[t])?a=h[t](e):Se(h[t])&&(a=h[t])),a&&(o?T=`${a}
5
+ \u8BF7\u67E5\u770B\u6587\u6863: ${yf("zh-cn",d)}
8
6
 
9
- `:m=`${n}
7
+ `:T=`${a}
10
8
 
11
- `,m+=o)),r&&(m+=`
12
- Refer to: ${oh("en",a)}
13
- `),m}var fd=ke(mh(),1);var Gf=1,Wf=0,Jn=class{constructor(i=!0){c(this,"countMap",new Map);c(this,"distributionMap",new Map);c(this,"version");c(this,"log",C.createLogger({id:"kv"}));i&&(E.on("102",({track:e,cost:t})=>{this.addSuccessEvent({key:e.kind===h.AUDIO?501700:511700,cost:t})}),E.on("103",({track:e,error:t})=>{this.addFailedEvent({key:e.kind===h.AUDIO?501700:511700,error:t})}))}getReportData(){let i={msg_sdk_basic_info:{uint32_sdk_version:In(this.version||Ce),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,t])=>({uint32_key:e,uint32_count:t})),stats_distribution:[...this.distributionMap.entries()].map(([e,t])=>({uint32_key:e,distribution_items:[...t.entries()].map(([r,o])=>({uint32_item_key:r,uint32_item_value:o}))}))};return this.countMap.clear(),this.distributionMap.clear(),i}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(i){let e=+String(i).slice(-3);return e>=700&&e<799}isErrorCodeKey(i){let e=+String(i).slice(-3);return e>=600&&e<699}isCountKey(i){let e=+String(i).slice(-3);return e>=0&&e<599}isNumberKey(i){let e=+String(i).slice(-3);return e>=800&&e<899}addCount({key:i,useUV:e=!1}){if(!this.isCountKey(i)){this.log.debug(`${i} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(i)||this.countMap.set(i,(this.countMap.get(i)||0)+1)}addEnum({key:i,value:e,useUV:t=!0}){var o;if(!this.isEnumKey(i))return this.log.debug(`${i} is not enum key, last 3 number should be 700~799`);if(t&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let r=((o=this.distributionMap)==null?void 0:o.get(i))||new Map;r.set(e,(r.get(e)||0)+1),this.distributionMap.set(i,r)}addNumber({key:i,value:e,split:t=100,useUV:r=!1}){var a;if(!this.isNumberKey(i))return this.log.debug(`${i} is not number key, last 3 number should be 800~899`);if(r&&this.countMap.has(i))return;this.countMap.set(i,(this.countMap.get(i)||0)+1);let o=((a=this.distributionMap)==null?void 0:a.get(i))||new Map,n=0;if(Y(t))n=Math.floor(e/t);else for(let d=t.length-1;d>0;d--)if(e>t[d]){n=d;break}o.set(n,(o.get(n)||0)+1),this.distributionMap.set(i,o)}addSuccessEvent({key:i,cost:e,timeKey:t,split:r}){if(i&&(this.addEnum({key:i,value:Gf,useUV:!1}),e)){let o=+String(i).slice(-3);o<800&&o>=700?this.addNumber({key:t||i+100,value:e,split:r}):t||this.log.debug(`time stat ignored, ${i}`)}}addFailedEvent({key:i,error:e}){if(!i)return;let t=S.UNKNOWN;e&&(Y(e)?t=e:(!g(e.extraCode)||!g(e.code))&&(t=e.extraCode||e.code)),this.addEnum({key:i,value:Wf,useUV:!1}),this.addEnum({key:i,value:t,useUV:!1})}},qn=(j=>(j[j.enterRoom=500700]="enterRoom",j[j.exitRoom=500701]="exitRoom",j[j.switchRole=500702]="switchRole",j[j.destroy=500703]="destroy",j[j.startLocalAudio=500704]="startLocalAudio",j[j.updateLocalAudio=500705]="updateLocalAudio",j[j.stopLocalAudio=500706]="stopLocalAudio",j[j.startLocalVideo=500707]="startLocalVideo",j[j.updateLocalVideo=500708]="updateLocalVideo",j[j.stopLocalVideo=500709]="stopLocalVideo",j[j.startScreenShare=500710]="startScreenShare",j[j.updateScreenShare=500711]="updateScreenShare",j[j.stopScreenShare=500712]="stopScreenShare",j[j.startRemoteVideo=500713]="startRemoteVideo",j[j.updateRemoteVideo=500714]="updateRemoteVideo",j[j.stopRemoteVideo=500715]="stopRemoteVideo",j[j.muteRemoteAudio=500716]="muteRemoteAudio",j[j.setRemoteAudioVolume=500717]="setRemoteAudioVolume",j[j.use=500718]="use",j[j.sendSEIMessage=5e5]="sendSEIMessage",j[j.sendCustomMessage=500001]="sendCustomMessage",j))(qn||{}),hd=(l=>(l[l.AudioMixer=550700]="AudioMixer",l[l.AIDenoiser=551700]="AIDenoiser",l[l.VirtualBackground=570700]="VirtualBackground",l[l.Beauty=571700]="Beauty",l[l.Watermark=572700]="Watermark",l[l.BasicBeauty=574700]="BasicBeauty",l[l.CDNStreaming=590700]="CDNStreaming",l[l.DeviceDetector=591700]="DeviceDetector",l[l.Debug=592700]="Debug",l))(hd||{}),md=(l=>(l[l.AudioMixer=550701]="AudioMixer",l[l.AIDenoiser=551701]="AIDenoiser",l[l.VirtualBackground=570701]="VirtualBackground",l[l.Beauty=571701]="Beauty",l[l.Watermark=572701]="Watermark",l[l.BasicBeauty=574701]="BasicBeauty",l[l.CDNStreaming=590701]="CDNStreaming",l[l.DeviceDetector=591701]="DeviceDetector",l[l.Debug=592701]="Debug",l))(md||{}),pd=(l=>(l[l.AudioMixer=550702]="AudioMixer",l[l.AIDenoiser=551702]="AIDenoiser",l[l.VirtualBackground=570702]="VirtualBackground",l[l.Beauty=571702]="Beauty",l[l.Watermark=572702]="Watermark",l[l.BasicBeauty=574702]="BasicBeauty",l[l.CDNStreaming=590702]="CDNStreaming",l[l.DeviceDetector=591702]="DeviceDetector",l[l.Debug=592702]="Debug",l))(pd||{});var Jf=new Jn(!0),Tr=new Jn(!1);var N=Jf;var ie={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},qf=new Map([[ae,["Firefox",Cn]],[es,["Edg",yn]],[ns,["Chrome",Bn]],[ze,["Safari",qi]],[bt,["TBS",vn]],[io,["XWEB",Dn]],[ts&&mr,["WeChat",On]],[ro,["QQ(Win)",Mn]],[rs,["QQ(Mobile)",Kr]],[is,["QQ(Mobile X5)",Kr]],[so,["QQ(Mac)",kn]],[oo,["QQ(iPad)",Ln]],[ao,["MI",Pn]],[co,["HW",wn]],[lo,["Samsung",xn]],[ss,["OPPO",Un]],[os,["VIVO",Vn]],[Zr,["EDGE",Rn]],[eo,["SogouMobile",bn]],[to,["Sogou",Nn]]]);function jf(){let s=qf.get(!0),i=s?s[0]:"unknown",e=s?s[1]:"unknown";return{browserName:i,browserVersion:e}}var gd=function(){return!(Hc||Zr||es&&Bc<80||ae&&Vc<56)},fh=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(i=>i in window)},Xn=function(){if(!navigator.mediaDevices)return Ci()||C.error(ve.NOT_SUPPORTED_MEDIA),!1;let s=["getUserMedia","enumerateDevices"];return s.filter(i=>i in navigator.mediaDevices).length===s.length},ph=!1;function Ci(){return location.protocol==="http:"&&!Ot?(ph||C.error(U({key:x.NOT_SUPPORTED_HTTP})),ph=!0,!0):!1}var Td=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},_d=function(){return f(this,null,function*(){if(ie.detail.isH264EncodeSupported&&ie.detail.isVp8EncodeSupported)return{isH264EncodeSupported:ie.detail.isH264EncodeSupported,isVp8EncodeSupported:ie.detail.isVp8EncodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection,r=document.createElement(h.CANVAS);r.getContext("2d");let o=r.captureStream(0);return t.addTrack(o.getVideoTracks()[0],o),s=yield t.createOffer(),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),ie.detail.isH264EncodeSupported=i,ie.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:ie.detail.isH264EncodeSupported,isVp8EncodeSupported:ie.detail.isVp8EncodeSupported}}catch(t){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},Qn=function(){return f(this,null,function*(){if(ie.detail.isH264DecodeSupported&&ie.detail.isVp8DecodeSupported)return{isH264DecodeSupported:ie.detail.isH264DecodeSupported,isVp8DecodeSupported:ie.detail.isVp8DecodeSupported};let s,i=!1,e=!1;try{let t=new RTCPeerConnection;return s=yield t.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),s.sdp.toLowerCase().indexOf("h264")!==-1&&(i=!0),s.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),t.close(),{isH264DecodeSupported:i,isVp8DecodeSupported:e}}catch(t){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},zn=An(()=>f(void 0,null,function*(){if(ie.result&&ie.detail.isH264EncodeSupported&&ie.detail.isVp8EncodeSupported&&ie.detail.isH264DecodeSupported&&ie.detail.isVp8DecodeSupported)return ie;let s=Date.now(),i=gd(),e=Ad(),t=fh(),r=Xn(),{isH264EncodeSupported:o,isVp8EncodeSupported:n}=yield _d(),{isH264DecodeSupported:a,isVp8DecodeSupported:d}=yield Qn();if(!o||!n){let l=yield _d();C.warn(`detect encode again h264:${o} vp8:${n} result: ${JSON.stringify(l)}`),o=l.isH264EncodeSupported,n=l.isVp8EncodeSupported}if(o&&a&&(ss||os||Jc)&&!bt&&_i()<79){let{encode:l,decode:m}=yield Qf();o=l,a=m}return ie.result=i&&e&&r&&(o||n)&&(a||d),ie.detail.isBrowserSupported=i,ie.detail.isWebRTCSupported=e,ie.detail.isWebCodecsSupported=t,ie.detail.isMediaDevicesSupported=r,ie.detail.isScreenShareSupported=Eo(),ie.detail.isSmallStreamSupported=So(),ie.detail.isH264EncodeSupported=o,ie.detail.isVp8EncodeSupported=n,ie.detail.isH264DecodeSupported=a,ie.detail.isVp8DecodeSupported=d,ie.result||C.error(`${navigator.userAgent} ${En(ie.detail,!1)}`),t_(),N.addNumber({key:523800,value:Date.now()-s}),ie})),Xf=function(){return ie.result},Eo=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},jn=null;function Qf(){return f(this,null,function*(){return jn||(jn=new Promise(s=>f(this,null,function*(){let i={encode:!1,decode:!1},e=()=>{};try{C.warn("detectH264Supported start");let t=document.createElement("canvas"),r=t.getContext("2d");t.width=320,t.height=240;let o=setInterval(()=>{r.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),n=-1,a=-1;e=()=>{clearInterval(n),clearInterval(o),clearTimeout(a),l.close(),m.close(),d.getTracks().forEach(R=>R.stop())},a=setTimeout(()=>{e(),s(i)},2*1e3);let d=t.captureStream(),l=new RTCPeerConnection({}),m=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});l.addEventListener("icecandidate",R=>m.addIceCandidate(R.candidate)),m.addEventListener("icecandidate",R=>l.addIceCandidate(R.candidate)),l.addTrack(d.getVideoTracks()[0],d);let u=yield l.createOffer();yield l.setLocalDescription(u),yield m.setRemoteDescription(u);let p=yield m.createAnswer(),_=fd.default.parse(p.sdp),I=_.media[0].rtp.findIndex(R=>R.codec==="H264");_.media[0].rtp=[_.media[0].rtp[I]],_.media[0].fmtp=_.media[0].fmtp.filter(R=>R.payload===_.media[0].rtp[0].payload),_.media[0].rtcpFb&&(_.media[0].rtcpFb=_.media[0].rtcpFb.filter(R=>R.payload===_.media[0].rtp[0].payload)),p.sdp=fd.default.write(_),yield m.setLocalDescription(p),yield l.setRemoteDescription(p),n=setInterval(()=>f(this,null,function*(){i.encode&&i.decode&&(e(),s(i));let R=yield l.getSenders()[0].getStats(),D=yield m.getReceivers()[0].getStats();i.encode||R.forEach(G=>{G.type==="outbound-rtp"&&G.mediaType===h.VIDEO&&G.bytesSent>0&&(i.encode=!0)}),i.decode||D.forEach(G=>{G.type==="inbound-rtp"&&G.mediaType===h.VIDEO&&G.bytesReceived>0&&(i.decode=!0)})}),100)}catch(t){e(),C.warn(t),s(i)}})).then(s=>((!s.encode||!s.decode)&&C.warn(`detectH264Supported encode: ${s.encode} decode: ${s.decode} ${Rt}`),s)),jn)})}var zf=(s,i,e)=>{location.protocol==="http:"&&!Ot&&(s[i]=()=>{throw new b({code:S.INVALID_OPERATION,message:ve.NOT_SUPPORTED_HTTP})})},zi=function(s){return s.type==="candidate-pair"&&s.nominated&&(s.state==="in-progress"||s.state==="succeeded")?!(he(s.selected)&&!s.selected):!1};function _h(){let s="";if(screen.width){let i=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";s+=`${i} * ${e}`}return s}function gh(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Th(){let s={isSupported:!1},i=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<i.length;e++)if(i[e]in window){s.isSupported=!0;break}return s.isSupported}function Eh(){return"captureStream"in HTMLCanvasElement.prototype}function So(){return ts||xe||Dt&&Dt<63?!1:!!(gd()&&Eh())}var Yf=function(){if(g(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let s=null,i=!1;try{s=new RTCPeerConnection({sdpSemantics:Hi}),s.addTransceiver(h.AUDIO),i=!0}catch(e){}return s==null||s.close(),i};function Er(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Yi(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function Jt(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function pt(){return ot===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var us=!(!pt()||vt&&Dt<86);function Kf(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var Io="RTCRtpSender"in window;function Ed(){return Io&&"replaceTrack"in window.RTCRtpSender.prototype}function Ao(){return Io&&"setParameters"in window.RTCRtpSender.prototype&&Yi()}var Sd="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,qt=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Id=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,Ri=Io&&"createEncodedStreams"in window.RTCRtpSender.prototype&&_i()>=86,Yn="RTCRtpScriptTransform"in window,Co=Io&&(Ri||Yn),Ad=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(i=>i in window).length>0};function Sh(){let s={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return g(window.AudioDecoder)||(s.AudioDecoder=!0),g(window.AudioEncoder)||(s.AudioEncoder=!0),g(window.VideoDecoder)||(s.VideoDecoder=!0),g(window.VideoEncoder)||(s.VideoEncoder=!0),g(window.ImageDecoder)||(s.ImageDecoder=!0),s}function Ih(){return"mediaSession"in navigator&&!g(navigator.mediaSession.setActionHandler)}function Ah(){return!g(window.WebTransport)}function Zf(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function e_(){let s={browser:`${Wt.name}/${Wt.version}`,os:Fn(),displayResolution:_h(),isScreenShareSupported:Eo(),isWebRTCSupported:Ad(),isGetUserMediaSupported:gh(),isWebAudioSupported:Th(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:Sh(),isMediaSessionSupported:Ih(),isWebTransportSupported:Ah()};return navigator.userAgent.includes("miniProgram")&&(s.browser=`mini/${s.browser}`),s}var Ch="checkResult";function t_(){cs.setItem(Ch,{ua:navigator.userAgent,checkResult:ie})}function Cd(){Ci();let s=cs.getItem(Ch);s&&s.ua===navigator.userAgent&&(ie=s.checkResult),zn()}function Sr(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var Rd="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var yh=ke(Ge(),1);var Rh=Symbol("instance"),hS=Symbol("abortCtrl"),Kn=Symbol("cacheResult"),Ro=class{constructor(i,e,t){this.oldState=i,this.newState=e,this.action=t,this.aborted=!1}abort(i){this.aborted=!0,No.call(i,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},yo=class extends Error{constructor(i,e,t){super(e),this.state=i,this.message=e,this.cause=t}};function i_(s){return typeof s=="object"&&s&&"then"in s}var bo=new Map;function de(s,i,e={}){return(t,r,o)=>{let n=e.action||r;if(!e.context){let d=bo.get(t)||[];bo.has(t)||bo.set(t,d),d.push({from:s,to:i,action:n})}let a=o.value;o.value=function(...d){let l=this;if(e.context&&(l=Q.get(typeof e.context=="function"?e.context.call(this,...d):e.context)),l.state===i)return e.sync?l[Kn]:Promise.resolve(l[Kn]);l.state instanceof Ro&&l.state.action==e.abortAction&&l.state.abort(l);let m=null;Array.isArray(s)?s.length==0?l.state instanceof Ro&&l.state.abort(l):(typeof l.state!="string"||!s.includes(l.state))&&(m=new yo(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s.join("|")}`)):s!==l.state&&(m=new yo(l._state,`${l.name} ${n} to ${i} failed: current state ${l._state} not from ${s}`));let u=D=>{if(e.fail&&e.fail.call(this,D),e.sync){if(e.ignoreError)return D;throw D}else return e.ignoreError?Promise.resolve(D):Promise.reject(D)};if(m)return u(m);let p=l.state,_=new Ro(p,i,n);No.call(l,_);let I=D=>{var G;return l[Kn]=D,_.aborted||(No.call(l,i),(G=e.success)===null||G===void 0||G.call(this,l[Kn])),D},R=D=>(No.call(l,p,D),u(D));try{let D=a.apply(this,d);return i_(D)?D.then(I).catch(R):e.sync?I(D):Promise.resolve(I(D))}catch(D){return R(new yo(l._state,`${l.name} ${n} from ${s} to ${i} failed: ${D}`,D instanceof Error?D:new Error(String(D))))}}}}var r_=typeof window!="undefined"&&window.__AFSM__?(e,t)=>{window.dispatchEvent(new CustomEvent(e,{detail:t}))}:typeof importScripts!="undefined"?(e,t)=>{postMessage({type:e,payload:t})}:()=>{};function No(s,i){let e=this._state;this._state=s;let t=s.toString();s&&this.emit(t,e),this.emit(Q.STATECHANGED,s,e,i),this.updateDevTools({value:s,old:e,err:i instanceof Error?i.message:String(i)})}var Q=class s extends yh.default{constructor(i,e,t){super(),this.name=i,this.groupName=e,this._state=s.INIT,i||(i=Date.now().toString(36)),t?Object.setPrototypeOf(this,t):t=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let r=t[Rh];r?this.name=r.name+"-"+r.count++:t[Rh]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let i=Object.getPrototypeOf(this),e=bo.get(i)||[],t=new Set,r=[],o=[],n=new Set,a=Object.getPrototypeOf(i);bo.has(a)&&(a.stateDiagram.forEach(l=>t.add(l)),a.allStates.forEach(l=>n.add(l))),e.forEach(({from:l,to:m,action:u})=>{typeof l=="string"?r.push({from:l,to:m,action:u}):l.length?l.forEach(p=>{r.push({from:p,to:m,action:u})}):o.push({to:m,action:u})}),r.forEach(({from:l,to:m,action:u})=>{n.add(l),n.add(m),n.add(u+"ing"),t.add(`${l} --> ${u}ing : ${u}`),t.add(`${u}ing --> ${m} : ${u} \u{1F7E2}`),t.add(`${u}ing --> ${l} : ${u} \u{1F534}`)}),o.forEach(({to:l,action:m})=>{t.add(`${m}ing --> ${l} : ${m} \u{1F7E2}`),n.forEach(u=>{u!==l&&t.add(`${u} --> ${m}ing : ${m}`)})});let d=[...t];return Object.defineProperties(i,{stateDiagram:{value:d},allStates:{value:n}}),d}static get(i){let e;return typeof i=="string"?(e=s.instances.get(i),e||s.instances.set(i,e=new s(i,void 0,Object.create(s.prototype)))):(e=s.instances2.get(i),e||s.instances2.set(i,e=new s(i.constructor.name,void 0,Object.create(s.prototype)))),e}static getState(i){var e;return(e=s.get(i))===null||e===void 0?void 0:e.state}updateDevTools(i={}){r_(s.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},i))}get state(){return this._state}set state(i){No.call(this,i)}};Q.STATECHANGED="stateChanged";Q.UPDATEAFSM="updateAFSM";Q.INIT="[*]";Q.ON="on";Q.OFF="off";Q.instances=new Map;Q.instances2=new WeakMap;var yd=typeof window!="undefined",bh=yd&&window.requestIdleCallback||function(s){let i=Date.now();return setTimeout(()=>{s({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-i))}})},1e3)},s_=yd&&window.cancelIdleCallback||function(s){clearTimeout(s)},o_=yd&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),vo=class{static generateTaskID(){return this.currentTaskID++}static run(i=Gi,e,t){i===dr?t=v({delay:2e3,count:0,backgroundTask:!0},t):i===$i?t=v({delay:1e4,count:0},t):i===Wr?t=v({fps:60,delay:16.6,count:0,backgroundTask:!0},t):t=v({delay:2e3,count:0,backgroundTask:!0},t),ut(e)&&(t=v(v({},t),e)),se(i)&&(e=i,i=Gi);let r=v({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:i,callback:e},t);return this.taskMap.set(r.taskID,r),this[i](r),r.taskID}static interval(i){let e=()=>{i.callback(),i.loopCount+=1,this.isBreakLoop(i)};return i.intervalID=setInterval(e,i.delay)}static intervalInWorker(i){i.delay=(1e3/i.fps).toFixed(2);let e=new Worker(URL.createObjectURL(new Blob([`
9
+ `,T+=s)),o&&(T+=`
10
+ Refer to: ${yf("en",d)}
11
+ `),T}var Om=Ci(wf(),1);var uT=1,lT=0,Id=class{constructor(t=!0){l(this,"countMap",new Map);l(this,"distributionMap",new Map);l(this,"version");l(this,"log",U.createLogger({id:"kv"}));t&&(F.on("102",({track:e,cost:r})=>{this.addSuccessEvent({key:e.kind===D.AUDIO?501700:511700,cost:r})}),F.on("103",({track:e,error:r})=>{this.addFailedEvent({key:e.kind===D.AUDIO?501700:511700,error:r})}))}getReportData(){let t={msg_sdk_basic_info:{uint32_sdk_version:Jc(this.version||Ke),uint32_terminal_type:15,bytes_device_name:"",bytes_os_version:"",uint32_framework:30,uint32_network_type:0},stats_count:[...this.countMap.entries()].map(([e,r])=>({uint32_key:e,uint32_count:r})),stats_distribution:[...this.distributionMap.entries()].map(([e,r])=>({uint32_key:e,distribution_items:[...r.entries()].map(([o,s])=>({uint32_item_key:o,uint32_item_value:s}))}))};return this.countMap.clear(),this.distributionMap.clear(),t}clear(){this.countMap.clear(),this.distributionMap.clear()}isEnumKey(t){let e=+String(t).slice(-3);return e>=700&&e<799}isErrorCodeKey(t){let e=+String(t).slice(-3);return e>=600&&e<699}isCountKey(t){let e=+String(t).slice(-3);return e>=0&&e<599}isNumberKey(t){let e=+String(t).slice(-3);return e>=800&&e<899}addCount({key:t,useUV:e=!1}){if(!this.isCountKey(t)){this.log.debug(`${t} is not count key, last 3 number should be 0~599`);return}e&&this.countMap.has(t)||this.countMap.set(t,(this.countMap.get(t)||0)+1)}addEnum({key:t,value:e,useUV:r=!0}){var s;if(!this.isEnumKey(t))return this.log.debug(`${t} is not enum key, last 3 number should be 700~799`);if(r&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let o=((s=this.distributionMap)==null?void 0:s.get(t))||new Map;o.set(e,(o.get(e)||0)+1),this.distributionMap.set(t,o)}addNumber({key:t,value:e,split:r=100,useUV:o=!1}){var d;if(!this.isNumberKey(t))return this.log.debug(`${t} is not number key, last 3 number should be 800~899`);if(o&&this.countMap.has(t))return;this.countMap.set(t,(this.countMap.get(t)||0)+1);let s=((d=this.distributionMap)==null?void 0:d.get(t))||new Map,a=0;if($e(r))a=Math.floor(e/r);else for(let h=r.length-1;h>0;h--)if(e>r[h]){a=h;break}s.set(a,(s.get(a)||0)+1),this.distributionMap.set(t,s)}addSuccessEvent({key:t,cost:e,timeKey:r,split:o}){if(t&&(this.addEnum({key:t,value:uT,useUV:!1}),e)){let s=+String(t).slice(-3);s<800&&s>=700?this.addNumber({key:r||t+100,value:e,split:o}):r||this.log.debug(`time stat ignored, ${t}`)}}addFailedEvent({key:t,error:e}){if(!t)return;let r=Y.UNKNOWN;e&&($e(e)?r=e:(!L(e.extraCode)||!L(e.code))&&(r=e.extraCode||e.code)),this.addEnum({key:t,value:lT,useUV:!1}),this.addEnum({key:t,value:r,useUV:!1})}},Sd=(fe=>(fe[fe.enterRoom=500700]="enterRoom",fe[fe.exitRoom=500701]="exitRoom",fe[fe.switchRole=500702]="switchRole",fe[fe.destroy=500703]="destroy",fe[fe.startLocalAudio=500704]="startLocalAudio",fe[fe.updateLocalAudio=500705]="updateLocalAudio",fe[fe.stopLocalAudio=500706]="stopLocalAudio",fe[fe.startLocalVideo=500707]="startLocalVideo",fe[fe.updateLocalVideo=500708]="updateLocalVideo",fe[fe.stopLocalVideo=500709]="stopLocalVideo",fe[fe.startScreenShare=500710]="startScreenShare",fe[fe.updateScreenShare=500711]="updateScreenShare",fe[fe.stopScreenShare=500712]="stopScreenShare",fe[fe.startRemoteVideo=500713]="startRemoteVideo",fe[fe.updateRemoteVideo=500714]="updateRemoteVideo",fe[fe.stopRemoteVideo=500715]="stopRemoteVideo",fe[fe.muteRemoteAudio=500716]="muteRemoteAudio",fe[fe.setRemoteAudioVolume=500717]="setRemoteAudioVolume",fe[fe.use=500718]="use",fe[fe.sendSEIMessage=5e5]="sendSEIMessage",fe[fe.sendCustomMessage=500001]="sendCustomMessage",fe))(Sd||{}),Nm=(m=>(m[m.AudioMixer=550700]="AudioMixer",m[m.AIDenoiser=551700]="AIDenoiser",m[m.VirtualBackground=570700]="VirtualBackground",m[m.Beauty=571700]="Beauty",m[m.Watermark=572700]="Watermark",m[m.BasicBeauty=574700]="BasicBeauty",m[m.CDNStreaming=590700]="CDNStreaming",m[m.DeviceDetector=591700]="DeviceDetector",m[m.Debug=592700]="Debug",m))(Nm||{}),wm=(m=>(m[m.AudioMixer=550701]="AudioMixer",m[m.AIDenoiser=551701]="AIDenoiser",m[m.VirtualBackground=570701]="VirtualBackground",m[m.Beauty=571701]="Beauty",m[m.Watermark=572701]="Watermark",m[m.BasicBeauty=574701]="BasicBeauty",m[m.CDNStreaming=590701]="CDNStreaming",m[m.DeviceDetector=591701]="DeviceDetector",m[m.Debug=592701]="Debug",m))(wm||{}),Mm=(m=>(m[m.AudioMixer=550702]="AudioMixer",m[m.AIDenoiser=551702]="AIDenoiser",m[m.VirtualBackground=570702]="VirtualBackground",m[m.Beauty=571702]="Beauty",m[m.Watermark=572702]="Watermark",m[m.BasicBeauty=574702]="BasicBeauty",m[m.CDNStreaming=590702]="CDNStreaming",m[m.DeviceDetector=591702]="DeviceDetector",m[m.Debug=592702]="Debug",m))(Mm||{});var mT=new Id(!0),yo=new Id(!1);var X=mT;var we={result:!1,detail:{isBrowserSupported:!1,isWebRTCSupported:!1,isWebCodecsSupported:!1,isMediaDevicesSupported:!1,isScreenShareSupported:!1,isSmallStreamSupported:!1,isH264EncodeSupported:!1,isVp8EncodeSupported:!1,isH264DecodeSupported:!1,isVp8DecodeSupported:!1}},pT=new Map([[_r,["Firefox",Xc]],[_s,["Edg",Yc]],[ys,["Chrome",ld]],[$t,["Safari",Pi]],[gr,["TBS",ed]],[Gn,["XWEB",td]],[gs&&po,["WeChat",rd]],[jn,["QQ(Win)",id]],[Ts,["QQ(Mobile)",hs]],[Es,["QQ(Mobile X5)",hs]],[qn,["QQ(Mac)",od]],[Jn,["QQ(iPad)",sd]],[Xn,["MI",nd]],[Qn,["HW",ad]],[Yn,["Samsung",cd]],[Is,["OPPO",dd]],[Ss,["VIVO",ud]],[fs,["EDGE",Qc]],[Hn,["SogouMobile",Zc]],[Wn,["Sogou",Kc]]]);function Ad(){let i=pT.get(!0),t=i?i[0]:"unknown",e=i?i[1]:"unknown";return{browserName:t,browserVersion:e}}var xm=function(){return!(im||fs||_s&&tm<80||_r&&em<56)},Of=function(){return["VideoDecoder","VideoEncoder","AudioEncoder","AudioDecoder","MediaStreamTrackGenerator"].every(t=>t in window)},bd=function(){if(!navigator.mediaDevices)return mi()||U.error(Wt.NOT_SUPPORTED_MEDIA),!1;let i=["getUserMedia","enumerateDevices"];return i.filter(t=>t in navigator.mediaDevices).length===i.length},Mf=!1;function mi(){return location.protocol==="http:"&&!Tr?(Mf||U.error(st({key:ot.NOT_SUPPORTED_HTTP})),Mf=!0,!0):!1}var km=function(){return(window==null?void 0:window.OffscreenCanvas)&&(window==null?void 0:window.MediaStreamTrackProcessor)&&(window==null?void 0:window.MediaStreamTrackGenerator)},Pm=function(){return A(this,null,function*(){if(we.detail.isH264EncodeSupported&&we.detail.isVp8EncodeSupported)return{isH264EncodeSupported:we.detail.isH264EncodeSupported,isVp8EncodeSupported:we.detail.isVp8EncodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection,o=document.createElement(D.CANVAS);o.getContext("2d");let s=o.captureStream(0);return r.addTrack(s.getVideoTracks()[0],s),i=yield r.createOffer(),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),we.detail.isH264EncodeSupported=t,we.detail.isVp8EncodeSupported=e,{isH264EncodeSupported:we.detail.isH264EncodeSupported,isVp8EncodeSupported:we.detail.isVp8EncodeSupported}}catch(r){return{isH264EncodeSupported:!1,isVp8EncodeSupported:!1}}})},Pf=function(){return A(this,null,function*(){if(we.detail.isH264DecodeSupported&&we.detail.isVp8DecodeSupported)return{isH264DecodeSupported:we.detail.isH264DecodeSupported,isVp8DecodeSupported:we.detail.isVp8DecodeSupported};let i,t=!1,e=!1;try{let r=new RTCPeerConnection;return i=yield r.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}),i.sdp.toLowerCase().indexOf("h264")!==-1&&(t=!0),i.sdp.toLowerCase().indexOf("vp8")!==-1&&(e=!0),r.close(),{isH264DecodeSupported:t,isVp8DecodeSupported:e}}catch(r){return{isH264DecodeSupported:!1,isVp8DecodeSupported:!1}}})},Rd=zc(()=>A(void 0,null,function*(){if(we.result&&we.detail.isH264EncodeSupported&&we.detail.isVp8EncodeSupported&&we.detail.isH264DecodeSupported&&we.detail.isVp8DecodeSupported)return we;let i=Date.now(),t=xm(),e=Um(),r=Of(),o=bd(),{isH264EncodeSupported:s,isVp8EncodeSupported:a}=yield Pm(),{isH264DecodeSupported:d,isVp8DecodeSupported:h}=yield Pf();if(!s||!a){let m=yield Pm();U.warn(`detect encode again h264:${s} vp8:${a} result: ${JSON.stringify(m)}`),s=m.isH264EncodeSupported,a=m.isVp8EncodeSupported}if(s&&d&&(Is||Ss||am)&&!gr&&Zn()<79){let{encode:m,decode:T}=yield fT();s=m,d=T}return we.result=t&&e&&o&&(s||a)&&(d||h),we.detail.isBrowserSupported=t,we.detail.isWebRTCSupported=e,we.detail.isWebCodecsSupported=r,we.detail.isMediaDevicesSupported=o,we.detail.isScreenShareSupported=da(),we.detail.isSmallStreamSupported=ua(),we.detail.isH264EncodeSupported=s,we.detail.isVp8EncodeSupported=a,we.detail.isH264DecodeSupported=d,we.detail.isVp8DecodeSupported=h,we.result||U.error(`${navigator.userAgent} ${jc(we.detail,!1)}`),DT(),X.addNumber({key:523800,value:Date.now()-i}),we})),hT=function(){return we.result},da=function(){return!!(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)},yd=null;function fT(){return A(this,null,function*(){return yd||(yd=new Promise(i=>A(this,null,function*(){let t={encode:!1,decode:!1},e=()=>{};try{U.warn("detectH264Supported start");let r=document.createElement("canvas"),o=r.getContext("2d");r.width=320,r.height=240;let s=setInterval(()=>{o.fillText("test",Math.floor(Math.random()*320),Math.floor(Math.random()*240))},66),a=-1,d=-1;e=()=>{clearInterval(a),clearInterval(s),clearTimeout(d),m.close(),T.close(),h.getTracks().forEach(H=>H.stop())},d=setTimeout(()=>{e(),i(t)},2*1e3);let h=r.captureStream(),m=new RTCPeerConnection({}),T=new RTCPeerConnection({offerToReceiveAudio:!0,offerToReceiveVideo:!0});m.addEventListener("icecandidate",H=>T.addIceCandidate(H.candidate)),T.addEventListener("icecandidate",H=>m.addIceCandidate(H.candidate)),m.addTrack(h.getVideoTracks()[0],h);let I=yield m.createOffer();yield m.setLocalDescription(I),yield T.setRemoteDescription(I);let v=yield T.createAnswer(),N=Om.default.parse(v.sdp),j=N.media[0].rtp.findIndex(H=>H.codec==="H264");N.media[0].rtp=[N.media[0].rtp[j]],N.media[0].fmtp=N.media[0].fmtp.filter(H=>H.payload===N.media[0].rtp[0].payload),N.media[0].rtcpFb&&(N.media[0].rtcpFb=N.media[0].rtcpFb.filter(H=>H.payload===N.media[0].rtp[0].payload)),v.sdp=Om.default.write(N),yield T.setLocalDescription(v),yield m.setRemoteDescription(v),a=setInterval(()=>A(this,null,function*(){t.encode&&t.decode&&(e(),i(t));let H=yield m.getSenders()[0].getStats(),z=yield T.getReceivers()[0].getStats();t.encode||H.forEach(Te=>{Te.type==="outbound-rtp"&&Te.mediaType===D.VIDEO&&Te.bytesSent>0&&(t.encode=!0)}),t.decode||z.forEach(Te=>{Te.type==="inbound-rtp"&&Te.mediaType===D.VIDEO&&Te.bytesReceived>0&&(t.decode=!0)})}),100)}catch(r){e(),U.warn(r),i(t)}})).then(i=>((!i.encode||!i.decode)&&U.warn(`detectH264Supported encode: ${i.encode} decode: ${i.decode} ${fr}`),i)),yd)})}var _T=(i,t,e)=>{location.protocol==="http:"&&!Tr&&(i[t]=()=>{throw new ue({code:Y.INVALID_OPERATION,message:Wt.NOT_SUPPORTED_HTTP})})},gT=function(i){return i.type==="candidate-pair"&&i.nominated&&(i.state==="in-progress"||i.state==="succeeded")?!(nt(i.selected)&&!i.selected):!1};function xf(){let i="";if(screen.width){let t=screen.width?screen.width*window.devicePixelRatio:"",e=screen.height?screen.height*window.devicePixelRatio:"";i+=`${t} * ${e}`}return i}function kf(){return navigator.getUserMedia||navigator.mediaDevices&&navigator.mediaDevices.getUserMedia}function Lf(){let i={isSupported:!1},t=["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"];for(let e=0;e<t.length;e++)if(t[e]in window){i.isSupported=!0;break}return i.isSupported}function Uf(){return"captureStream"in HTMLCanvasElement.prototype}function ua(){return gs||bt||si&&si<63?!1:!!(xm()&&Uf())}var ET=function(){if(L(window.RTCRtpTransceiver)||!("currentDirection"in RTCRtpTransceiver.prototype))return!1;let i=null,t=!1;try{i=new RTCPeerConnection({sdpSemantics:Hl}),i.addTransceiver(D.AUDIO),t=!0}catch(e){}return i==null||i.close(),t};function TT(){return"RTCPeerConnection"in window&&"getReceivers"in window.RTCPeerConnection.prototype}function Vf(){return"RTCPeerConnection"in window&&"getSenders"in window.RTCPeerConnection.prototype}function IT(){return"RTCPeerConnection"in window&&"getTransceivers"in window.RTCPeerConnection.prototype}function Ff(){return Yt===11?!1:"RTCPeerConnection"in window&&"addTransceiver"in window.RTCPeerConnection.prototype}var ST=!(!Ff()||fo&&si<86);function yT(){return"RTCRtpTransceiver"in window&&"stop"in window.RTCRtpTransceiver.prototype}var la="RTCRtpSender"in window;function AT(){return la&&"replaceTrack"in window.RTCRtpSender.prototype}function bT(){return la&&"setParameters"in window.RTCRtpSender.prototype&&Vf()}var RT="RTCRtpReceiver"in window&&"getSynchronizationSources"in window.RTCRtpReceiver.prototype,Ns=window.MediaStreamTrack&&"getSettings"in MediaStreamTrack.prototype,Lm=window.MediaStreamTrack&&"getCapabilities"in MediaStreamTrack.prototype,ma=la&&"createEncodedStreams"in window.RTCRtpSender.prototype&&Zn()>=86,Bf="RTCRtpScriptTransform"in window,pa=la&&(ma||Bf),Um=function(){return["RTCPeerConnection","webkitRTCPeerConnection","RTCIceGatherer"].filter(t=>t in window).length>0};function $f(){let i={AudioDecoder:!1,AudioEncoder:!1,VideoDecoder:!1,VideoEncoder:!1,ImageDecoder:!1};return L(window.AudioDecoder)||(i.AudioDecoder=!0),L(window.AudioEncoder)||(i.AudioEncoder=!0),L(window.VideoDecoder)||(i.VideoDecoder=!0),L(window.VideoEncoder)||(i.VideoEncoder=!0),L(window.ImageDecoder)||(i.ImageDecoder=!0),i}function Hf(){return"mediaSession"in navigator&&!L(navigator.mediaSession.setActionHandler)}function Wf(){return!L(window.WebTransport)}function vT(){return typeof WebAssembly=="undefined"?!1:WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))}function CT(){let i={browser:`${xr.name}/${xr.version}`,os:As(),displayResolution:xf(),isScreenShareSupported:da(),isWebRTCSupported:Um(),isGetUserMediaSupported:kf(),isWebAudioSupported:Lf(),isWebSocketsSupported:"WebSocket"in window&&window.WebSocket.CLOSING===2,isWebCodecSupported:$f(),isMediaSessionSupported:Hf(),isWebTransportSupported:Wf()};return navigator.userAgent.includes("miniProgram")&&(i.browser=`mini/${i.browser}`),i}var Gf="checkResult";function DT(){Rs.setItem(Gf,{ua:navigator.userAgent,checkResult:we})}function Vm(){mi();let i=Rs.getItem(Gf);i&&i.ua===navigator.userAgent&&(we=i.checkResult),Rd()}function Ao(){return"requestVideoFrameCallback"in HTMLVideoElement.prototype}var NT="RTCRtpReceiver"in window&&"jitterBufferTarget"in window.RTCRtpReceiver.prototype;var qf=Ci(ki(),1);var jf=Symbol("instance"),GA=Symbol("abortCtrl"),vd=Symbol("cacheResult"),ha=class{constructor(t,e,r){this.oldState=t,this.newState=e,this.action=r,this.aborted=!1}abort(t){this.aborted=!0,_a.call(t,this.oldState,new Error(`action '${this.action}' aborted`))}toString(){return`${this.action}ing`}},ws=class extends Error{constructor(t,e,r){super(e),this.state=t,this.message=e,this.cause=r}};function wT(i){return typeof i=="object"&&i&&"then"in i}var fa=new Map;function ye(i,t,e={}){return(r,o,s)=>{let a=e.action||o;if(!e.context){let h=fa.get(r)||[];fa.has(r)||fa.set(r,h),h.push({from:i,to:t,action:a})}let d=s.value;s.value=function(...h){let m=this;if(e.context&&(m=re.get(typeof e.context=="function"?e.context.call(this,...h):e.context)),m.state===t)return e.sync?m[vd]:Promise.resolve(m[vd]);m.state instanceof ha&&m.state.action==e.abortAction&&m.state.abort(m);let T=null;Array.isArray(i)?i.length==0?m.state instanceof ha&&m.state.abort(m):(typeof m.state!="string"||!i.includes(m.state))&&(T=new ws(m._state,`${m.name} ${a} to ${t} failed: current state ${m._state} not from ${i.join("|")}`)):i!==m.state&&(T=new ws(m._state,`${m.name} ${a} to ${t} failed: current state ${m._state} not from ${i}`));let I=z=>{if(e.fail&&e.fail.call(this,z),e.sync){if(e.ignoreError)return z;throw z}else return e.ignoreError?Promise.resolve(z):Promise.reject(z)};if(T)return I(T);let v=m.state,N=new ha(v,t,a);_a.call(m,N);let j=z=>{var Te;return m[vd]=z,N.aborted||(_a.call(m,t),(Te=e.success)===null||Te===void 0||Te.call(this,m[vd])),z},H=z=>(_a.call(m,v,z),I(z));try{let z=d.apply(this,h);return wT(z)?z.then(j).catch(H):e.sync?j(z):Promise.resolve(j(z))}catch(z){return H(new ws(m._state,`${m.name} ${a} from ${i} to ${t} failed: ${z}`,z instanceof Error?z:new Error(String(z))))}}}}function Jf(...i){return(t,e,r)=>{let o=r.value,s=e;r.value=function(...a){if(!i.includes(this.state.toString()))throw new ws(this.state,`${this.name} ${s} failed: current state ${this.state} not in ${i}`);return o.apply(this,a)}}}var MT=typeof window!="undefined"&&window.__AFSM__?(e,r)=>{window.dispatchEvent(new CustomEvent(e,{detail:r}))}:typeof importScripts!="undefined"?(e,r)=>{postMessage({type:e,payload:r})}:()=>{};function _a(i,t){let e=this._state;this._state=i;let r=i.toString();i&&this.emit(r,e),this.emit(re.STATECHANGED,i,e,t),this.updateDevTools({value:i,old:e,err:t instanceof Error?t.message:String(t)})}var re=class i extends qf.default{constructor(t,e,r){super(),this.name=t,this.groupName=e,this._state=i.INIT,t||(t=Date.now().toString(36)),r?Object.setPrototypeOf(this,r):r=Object.getPrototypeOf(this),e||(this.groupName=this.constructor.name);let o=r[jf];o?this.name=o.name+"-"+o.count++:r[jf]={name:this.name,count:0},this.updateDevTools({diagram:this.stateDiagram})}get stateDiagram(){let t=Object.getPrototypeOf(this),e=fa.get(t)||[],r=new Set,o=[],s=[],a=new Set,d=Object.getPrototypeOf(t);fa.has(d)&&(d.stateDiagram.forEach(m=>r.add(m)),d.allStates.forEach(m=>a.add(m))),e.forEach(({from:m,to:T,action:I})=>{typeof m=="string"?o.push({from:m,to:T,action:I}):m.length?m.forEach(v=>{o.push({from:v,to:T,action:I})}):s.push({to:T,action:I})}),o.forEach(({from:m,to:T,action:I})=>{a.add(m),a.add(T),a.add(I+"ing"),r.add(`${m} --> ${I}ing : ${I}`),r.add(`${I}ing --> ${T} : ${I} \u{1F7E2}`),r.add(`${I}ing --> ${m} : ${I} \u{1F534}`)}),s.forEach(({to:m,action:T})=>{r.add(`${T}ing --> ${m} : ${T} \u{1F7E2}`),a.forEach(I=>{I!==m&&r.add(`${I} --> ${T}ing : ${T}`)})});let h=[...r];return Object.defineProperties(t,{stateDiagram:{value:h},allStates:{value:a}}),h}static get(t){let e;return typeof t=="string"?(e=i.instances.get(t),e||i.instances.set(t,e=new i(t,void 0,Object.create(i.prototype)))):(e=i.instances2.get(t),e||i.instances2.set(t,e=new i(t.constructor.name,void 0,Object.create(i.prototype)))),e}static getState(t){var e;return(e=i.get(t))===null||e===void 0?void 0:e.state}updateDevTools(t={}){MT(i.UPDATEAFSM,Object.assign({name:this.name,group:this.groupName},t))}get state(){return this._state}set state(t){_a.call(this,t)}};re.STATECHANGED="stateChanged";re.UPDATEAFSM="updateAFSM";re.INIT="[*]";re.ON="on";re.OFF="off";re.instances=new Map;re.instances2=new WeakMap;var Fm=typeof window!="undefined",zf=Fm&&window.requestIdleCallback||function(i){let t=Date.now();return setTimeout(()=>{i({didTimeout:!1,timeRemaining(){return Math.max(0,50-(Date.now()-t))}})},1e3)},OT=Fm&&window.cancelIdleCallback||function(i){clearTimeout(i)},PT=Fm&&(window.cancelAnimationFrame||window.mozCancelAnimationFrame),ga=class{static generateTaskID(){return this.currentTaskID++}static run(t=cs,e,r){t===uo?r=J({delay:2e3,count:0,backgroundTask:!0},r):t===Gl?r=J({delay:1e4,count:0},r):t===jl?r=J({fps:60,delay:16.6,count:0,backgroundTask:!0},r):r=J({delay:2e3,count:0,backgroundTask:!0},r),rr(e)&&(r=J(J({},r),e)),Fe(t)&&(e=t,t=cs);let o=J({taskID:this.generateTaskID(),loopCount:0,intervalID:null,timeoutID:null,rafID:null,ricID:null,taskName:t,callback:e},r);return this.taskMap.set(o.taskID,o),this[t](o),o.taskID}static interval(t){let e=()=>{t.callback(),t.loopCount+=1,this.isBreakLoop(t)};return t.intervalID=setInterval(e,t.delay)}static intervalInWorker(t){t.delay=(1e3/t.fps).toFixed(2);let e=new Worker(URL.createObjectURL(new Blob([`
14
12
  let timerID = null;
15
13
  self.onmessage = function (e) {
16
14
  if (e.data === 'start') {
17
15
  timerID = setInterval(() => {
18
16
  self.postMessage('tick');
19
- }, ${i.delay});
17
+ }, ${t.delay});
20
18
  } else if (e.data === 'stop') {
21
19
  clearInterval(timerID);
22
20
  }
23
21
  };
24
- `],{type:"application/javascript"})));e.onmessage=t=>{t.data==="tick"&&(i.callback(),i.loopCount+=1,this.isBreakLoop(i)&&e.postMessage("stop"))},i.worker=e,e.postMessage("start")}static timeout(i){let e=()=>{if(i.callback(),i.loopCount+=1,!this.isBreakLoop(i))return i.timeoutID=setTimeout(e,i.delay)};return i.timeoutID=setTimeout(e,i.delay)}static ric(i){let e=L(),t,r=()=>{if(t=L()-e,t>=i.delay&&(e=L()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!this.isBreakLoop(i))return i.ricID=bh(r,{timeout:i.delay})};return i.ricID=bh(r,{timeout:i.delay})}static raf(i){i.delay=(1e3/i.fps).toFixed(2);let e=L(),t,r=()=>{if(document.hidden&&i.backgroundTask)return t=L()-e,e=L(),i.callback(),i.loopCount+=1,this.isBreakLoop(i)?void 0:i.timeoutID=setTimeout(r,i.delay-Math.floor(t%i.delay));if(t=L()-e,t>=i.delay&&(e=L()-Math.floor(t%i.delay),i.callback(),i.loopCount+=1),!this.isBreakLoop(i))return i.rafID=requestAnimationFrame(r)};if(i.rafID=requestAnimationFrame(r),i.backgroundTask){let o=()=>{if(document.hidden){let n=L()-e;n>=i.delay?r():i.timeoutID=setTimeout(r,i.delay-n)}};document.addEventListener("visibilitychange",o),i.onVisibilitychange=o,document.hidden&&o()}return i.taskID}static hasTask(i){return this.taskMap.has(i)}static clearTask(i){if(!this.taskMap.has(i))return!0;let{intervalID:e,timeoutID:t,rafID:r,ricID:o,onVisibilitychange:n,worker:a}=this.taskMap.get(i);return a&&a.terminate(),e&&clearInterval(e),t&&clearTimeout(t),r&&o_(r),o&&s_(o),n&&document.removeEventListener("visibilitychange",n),this.taskMap.delete(i),!0}static isBreakLoop(i){return this.taskMap.has(i.taskID)?i.count!==0&&i.loopCount>=i.count?(this.clearTask(i.taskID),!0):!1:!0}};c(vo,"taskMap",new Map),c(vo,"currentTaskID",1);var re=vo;var SS={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:h.SEI_MESSAGE,ERROR:"error"};var pe={LOADED_DATA:h.LOADEDDATA,LOADED_META_DATA:h.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var Xt={};ni(Xt,{create:()=>Ue,remove:()=>Se});var Do=new WeakMap;function Ue(s,i){Do.has(s)||Do.set(s,[]);let e=Do.get(s),r={add:(o,n)=>("addEventListener"in i?(e.push(i.removeEventListener.bind(i,o,n)),i.addEventListener(o,n)):(e.push(i.off.bind(i,o,n)),i.on(o,n)),r)};return r}function Se(s){let i=Do.get(s);i&&(i.forEach(e=>e()),Do.delete(s))}var bd=class{constructor(){c(this,"_roomIdMap",new Map);c(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Ce,env:ai.QCLOUD,browserVersion:Wt.name+Wt.version,ua:navigator.userAgent})}setConfig({sdkAppId:i,env:e,userId:t,roomId:r}){i!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(i)),this._configs.env=e,this._configs.userId=t,this._roomIdMap.set(t,String(r))}logSuccessEvent(i){Ot||!C.isAbleToUpload||this._configs.env===ai.QCLOUD&&this.uploadEventToKibana(k(v({},i),{result:"success"}))}logFailedEvent(i){if(Ot||!C.isAbleToUpload)return;let{eventType:e,code:t,error:r,userId:o}=i,n={roomId:this._roomIdMap.get(o||this._configs.userId),userId:o,eventType:e,result:"failed",code:t||(r==null?void 0:r.extraCode)||(r==null?void 0:r.code)||S.UNKNOWN};this._configs.env===ai.QCLOUD&&this.uploadEventToKibana(k(v({},n),{error:r}))}uploadEventToKibana(i){let e=`stat-${i.eventType}-${i.result}`;(i.eventType==="delta-join"||i.eventType==="delta-leave"||i.eventType==="delta-publish")&&(e=`${i.eventType}:${i.delta}`),this.uploadEvent({log:e,userId:i.userId}),i.result==="failed"&&(e=`stat-${i.eventType}-${i.result}-${i.code}`,this.uploadEvent({log:e,userId:i.userId,error:i.error}))}uploadEvent({log:i,userId:e,error:t}){let r={timestamp:an(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Ce,log:i};t&&(r.errorInfo=t.message,t.stack&&(r.errorInfo+=`
25
- ${t.stack}`)),this.sendRequest(li(this._configs.sdkAppId,Vi.LOG),r)}sendRequest(i,e){setTimeout(()=>mi({url:i,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},ee=new bd;var Qt=new WeakMap;function Ke({settings:s={retries:5,timeout:2e3},onError:i,onRetrying:e,onRetryFailed:t}){return function(r,o,n){let a=Gt({retryFunction:n.value,settings:s,onError({error:d,retry:l,reject:m,retryFuncArgs:u}){var p;i?i.call(this,d,()=>{var _;(_=Qt.get(r))!=null&&_.has(o)?l():m(d)},m,u):(p=Qt.get(r))!=null&&p.has(o)?l():m(d)},onRetrying(d,l){var m;$t(e)&&e.call(this,d,l),(m=Qt.get(r))!=null&&m.has(o)&&(Qt.get(r).get(o).stopRetry=l)},onRetryFailed:t});return n.value=function(...d){let l=Qt.get(r);return l?l.set(o,{args:d}):Qt.set(r,new Map([[o,{args:d}]])),a.apply(this,d).finally(()=>{var m;return(m=Qt.get(r))==null?void 0:m.delete(o)})},n}}function Oo({fnName:s,callback:i,validateArgs:e=!0}){return function(t,r,o){let n=o.value;return o.value=function(...a){var d,l;if((d=Qt.get(t))!=null&&d.has(s)){let{stopRetry:m,args:u}=Qt.get(t).get(s),p=!0;if(e){for(let _ of u)if(!a.find(I=>I===_)){p=!1;break}}p&&(i&&i.apply(this,a),m&&m(),(l=Qt.get(t))==null||l.delete(s))}return n.apply(this,a)},o}}var zt=class extends Q{constructor(e,t){super(e.id,`${t}-player`);this.kind=t;c(this,"id");c(this,"element",null);c(this,"track");c(this,"url");c(this,"attr");c(this,"mode");c(this,"muted");c(this,"_log");c(this,"_pausedRetryCount");c(this,"_isElementPlayingFired",!1);c(this,"_interval");c(this,"_delayDestroyTimeoutId",0);c(this,"_playSuccessResolve");c(this,"_isReplayByRecreateMediaStreamCalled",!1);c(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=bc,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${t}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&(((e=this.element)==null?void 0:e.paused)===!1||this.track&&this.track.readyState==="live"&&!this.track.muted)}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return f(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,t)=>{this._playSuccessResolve=e,this.element.play().then(e,t)})}catch(e){let t=U({key:x.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),t.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new b({code:S.PLAY_NOT_ALLOWED,message:t})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Ji?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(h.ENDED),this._interval>0&&re.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():qc?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return Ue(this.element,this.element).add(h.PLAYING,e).add(h.ENDED,e).add(h.PAUSE,e).add(h.ERROR,e).add(h.LOADEDDATA,e).add(h.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let t=this.handleTrackEvent.bind(this);Xt==null||Xt.create(e,e).add(h.ENDED,t).add(h.MUTE,t).add(h.UNMUTE,t),e.readyState===h.ENDED&&this.handleTrackEvent({type:h.ENDED}),e.muted&&this.handleTrackEvent({type:h.MUTE})}}bindAutoPlayEvent(){E.on(T.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&Se(e)}unbindEvents(){this.element&&Se(this.element),this.unbindTrackEvents(),E.off(T.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case h.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(h.PLAYING),this._interval&&(re.clearTask(this._interval),this._interval=-1);break;case h.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(h.ENDED);break;case h.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(h.PAUSE),xe&&(this._interval=re.run(Gi,()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case h.ERROR:if(this.element&&this.element.error){this.handlePaused(h.ERROR);let{code:r,message:o}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${r} message: ${o} userAgent: ${navigator.userAgent}`),ee.uploadEvent({log:`stat-${this.kind}-${Xe.PLAYER_ERROR}-${r}-${navigator.userAgent}`,error:this.element.error}),Gc||$c?this.emit(pe.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case h.LOADEDDATA:this.kind===h.VIDEO&&this.emit(pe.LOADED_DATA);break;case h.LOADEDMETADATA:this.kind===h.VIDEO&&this.emit(pe.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),ee.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),N.addSuccessEvent({key:this.kind===h.AUDIO?506700:516700})}).catch(()=>{var t;this._log.error("replayByRecreateMediaStream failed"),ee.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),N.addFailedEvent({key:this.kind===h.AUDIO?506700:516700,error:(t=this.element)==null?void 0:t.error}),this.emit(pe.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((t,r)=>{hi(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var o,n,a;this._log.warn(`element onerror ${(n=(o=this.element)==null?void 0:o.error)==null?void 0:n.code} fired after recreated mediaStream`),r((a=this.element)==null?void 0:a.error)}),hi(5e3).then(()=>{var o,n;(!this.isPlaying||(o=this.element)!=null&&o.error)&&r((n=this.element)==null?void 0:n.error),t()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case h.ENDED:this.handleStopped(h.ENDED);break;case h.MUTE:this.handlePaused(h.MUTE);break;case h.UNMUTE:this._isElementPlayingFired?this.handlePlaying(h.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var t;(t=this._playSuccessResolve)==null||t.call(this,e),this.emit(pe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(pe.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(pe.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};y([Ke({settings:{retries:2,timeout:0},onError(e,t,r,o){o[0]=(o[0]||1e3)+1e3,t()}})],zt.prototype,"doReplayByRecreateMediaStream",1),y([de([],"PLAYING",{sync:!0})],zt.prototype,"handlePlaying",1),y([de("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],zt.prototype,"handlePaused",1),y([de([],"STOPPED",{sync:!0})],zt.prototype,"handleStopped",1);var yi="trtc_autoplay",Nd=`${yi}_mask`,hs=`${yi}_wrapper`,Nh=`${yi}_header`,vd=`${yi}_content`,Zn=`${yi}_action_wrapper`,Dd=`${yi}_question`,Od=`${yi}_collapse`,ea=`${yi}_action_confirm`,vh=`${yi}_detail`,Dh="#2473E8",kd="dialog",n_=`${kd}-show`,a_=`${kd}-1`,c_=`${kd}-2`,Oh=!1,Ld=()=>!!document.querySelector(`.${hs}`),kh=`${Bt}/${At()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,Mh=`<br><a href='${kh}' target='_blank'>${At()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,d_=`${At()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${Mh}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${Mh}`}`,Md=class{constructor(){c(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");c(this,"_dialogNode",null);c(this,"_bodyPosition","");c(this,"_showDetail",!1);c(this,"_isCollapseClicked",!1);c(this,"_isQuestionClicked",!1);if(At()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Oh){let i=document.createElement("style");i.innerHTML=`.${Nd}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${Nd} div:not(.${Zn}){display:block !important;}.${hs}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${hs} a{color:${Dh};}.${Nh}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${vd}{margin:8px 0;}.${Zn}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Od}{margin-right:auto;cursor:pointer}.${Dd}{height:100%;line-height:16px;cursor:pointer;}.${ea}{margin-left:8px;color:#fff;background:${Dh};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${ea}:hover{opacity:0.9;}.${Od},.${ea},.${vd},.${Dd}{font-size:14px;}@media screen and (max-width:750px){.${hs}{width:80vw;}}`,document.head.appendChild(i),Oh=!0}this.addDiaLog()}createDiaLog(){let i=document.createElement("template");i.innerHTML=`<div class="${Nd}"><div class='${hs}'><div class='${Nh}'>${location.host}</div><div class='${vd}'>${this.content}</div><div class='${vh}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${d_}</div><div class='${Zn}'></div></div></div>`.trim();let e=document.createElement("button");e.className=ea,e.innerText=At()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let t=document.createElement("div");t.className=Dd,t.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
22
+ `],{type:"application/javascript"})));e.onmessage=r=>{r.data==="tick"&&(t.callback(),t.loopCount+=1,this.isBreakLoop(t)&&e.postMessage("stop"))},t.worker=e,e.postMessage("start")}static timeout(t){let e=()=>{if(t.callback(),t.loopCount+=1,!this.isBreakLoop(t))return t.timeoutID=setTimeout(e,t.delay)};return t.timeoutID=setTimeout(e,t.delay)}static ric(t){let e=ge(),r,o=()=>{if(r=ge()-e,r>=t.delay&&(e=ge()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!this.isBreakLoop(t))return t.ricID=zf(o,{timeout:t.delay})};return t.ricID=zf(o,{timeout:t.delay})}static raf(t){t.delay=(1e3/t.fps).toFixed(2);let e=ge(),r,o=()=>{if(document.hidden&&t.backgroundTask)return r=ge()-e,e=ge(),t.callback(),t.loopCount+=1,this.isBreakLoop(t)?void 0:t.timeoutID=setTimeout(o,t.delay-Math.floor(r%t.delay));if(r=ge()-e,r>=t.delay&&(e=ge()-Math.floor(r%t.delay),t.callback(),t.loopCount+=1),!this.isBreakLoop(t))return t.rafID=requestAnimationFrame(o)};if(t.rafID=requestAnimationFrame(o),t.backgroundTask){let s=()=>{if(document.hidden){let a=ge()-e;a>=t.delay?o():t.timeoutID=setTimeout(o,t.delay-a)}};document.addEventListener("visibilitychange",s),t.onVisibilitychange=s,document.hidden&&s()}return t.taskID}static hasTask(t){return this.taskMap.has(t)}static clearTask(t){if(!this.taskMap.has(t))return!0;let{intervalID:e,timeoutID:r,rafID:o,ricID:s,onVisibilitychange:a,worker:d}=this.taskMap.get(t);return d&&d.terminate(),e&&clearInterval(e),r&&clearTimeout(r),o&&PT(o),s&&OT(s),a&&document.removeEventListener("visibilitychange",a),this.taskMap.delete(t),!0}static isBreakLoop(t){return this.taskMap.has(t.taskID)?t.count!==0&&t.loopCount>=t.count?(this.clearTask(t.taskID),!0):!1:!0}};l(ga,"taskMap",new Map),l(ga,"currentTaskID",1);var ft=ga;var ZA={STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",STREAM_UPDATED:"stream-updated",STREAM_SUBSCRIBED:"stream-subscribed",CONNECTION_STATE_CHANGED:"connection-state-changed",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",MUTE_AUDIO:"mute-audio",MUTE_VIDEO:"mute-video",UNMUTE_AUDIO:"unmute-audio",UNMUTE_VIDEO:"unmute-video",CLIENT_BANNED:"client-banned",NETWORK_QUALITY:"network-quality",AUDIO_VOLUME:"audio-volume",SEI_MESSAGE:D.SEI_MESSAGE,ERROR:"error"};var et={LOADED_DATA:D.LOADEDDATA,LOADED_META_DATA:D.LOADEDMETADATA,MEDIA_TRACK_CHANGED:"media-track-changed",PLAYER_STATE_CHANGED:"player-state-changed",ERROR:"error"};var Lr={};Kr(Lr,{create:()=>vt,remove:()=>at});var Ea=new WeakMap;function vt(i,t){Ea.has(i)||Ea.set(i,[]);let e=Ea.get(i),o={add:(s,a)=>("addEventListener"in t?(e.push(t.removeEventListener.bind(t,s,a)),t.addEventListener(s,a)):(e.push(t.off.bind(t,s,a)),t.on(s,a)),o)};return o}function at(i){let t=Ea.get(i);t&&(t.forEach(e=>e()),Ea.delete(i))}var Bm=class{constructor(){l(this,"_roomIdMap",new Map);l(this,"_configs");typeof registerProcessor=="undefined"&&(this._configs={sdkAppId:"",userId:"",version:Ke,env:ei.QCLOUD,browserVersion:xr.name+xr.version,ua:navigator.userAgent})}setConfig({sdkAppId:t,env:e,userId:r,roomId:o}){t!==this._configs.sdkAppId&&(this._configs.sdkAppId=String(t)),this._configs.env=e,this._configs.userId=r,this._roomIdMap.set(r,String(o))}logSuccessEvent(t){Tr||!U.isAbleToUpload||this._configs.env===ei.QCLOUD&&this.uploadEventToKibana(pe(J({},t),{result:"success"}))}logFailedEvent(t){if(Tr||!U.isAbleToUpload)return;let{eventType:e,code:r,error:o,userId:s}=t,a={roomId:this._roomIdMap.get(s||this._configs.userId),userId:s,eventType:e,result:"failed",code:r||(o==null?void 0:o.extraCode)||(o==null?void 0:o.code)||Y.UNKNOWN};this._configs.env===ei.QCLOUD&&this.uploadEventToKibana(pe(J({},a),{error:o}))}uploadEventToKibana(t){let e=`stat-${t.eventType}-${t.result}`;(t.eventType==="delta-join"||t.eventType==="delta-leave"||t.eventType==="delta-publish")&&(e=`${t.eventType}:${t.delta}`),this.uploadEvent({log:e,userId:t.userId}),t.result==="failed"&&(e=`stat-${t.eventType}-${t.result}-${t.code}`,this.uploadEvent({log:e,userId:t.userId,error:t.error}))}uploadEvent({log:t,userId:e,error:r}){let o={timestamp:Mc(),sdkAppId:this._configs.sdkAppId,userId:e||this._configs.userId,version:Ke,log:t};r&&(o.errorInfo=r.message,r.stack&&(o.errorInfo+=`
23
+ ${r.stack}`)),this.sendRequest(ii(this._configs.sdkAppId,Di.LOG),o)}sendRequest(t,e){setTimeout(()=>oi({url:t,body:JSON.stringify(e),priority:"low"}).catch(()=>{}),2e3)}},Ve=new Bm;var bo=new WeakMap;function Ui({settings:i={retries:5,timeout:2e3},onError:t,onRetrying:e,onRetryFailed:r}){return function(o,s,a){let d=Mi({retryFunction:a.value,settings:i,onError({error:h,retry:m,reject:T,retryFuncArgs:I}){var v;t?t.call(this,h,()=>{var N;(N=bo.get(o))!=null&&N.has(s)?m():T(h)},T,I):(v=bo.get(o))!=null&&v.has(s)?m():T(h)},onRetrying(h,m){var T;wi(e)&&e.call(this,h,m),(T=bo.get(o))!=null&&T.has(s)&&(bo.get(o).get(s).stopRetry=m)},onRetryFailed:r});return a.value=function(...h){let m=bo.get(o);return m?m.set(s,{args:h}):bo.set(o,new Map([[s,{args:h}]])),d.apply(this,h).finally(()=>{var T;return(T=bo.get(o))==null?void 0:T.delete(s)})},a}}var Ur=class extends re{constructor(e,r){super(e.id,`${r}-player`);this.kind=r;l(this,"id");l(this,"element",null);l(this,"track");l(this,"url");l(this,"attr");l(this,"mode");l(this,"muted");l(this,"_log");l(this,"_pausedRetryCount");l(this,"_isElementPlayingFired",!1);l(this,"_interval");l(this,"_delayDestroyTimeoutId",0);l(this,"_playSuccessResolve");l(this,"_isReplayByRecreateMediaStreamCalled",!1);l(this,"isInAutoPlayFailedState",!1);this.id=e.id,this._log=e.log,this.track=e.track,this.muted=e.muted,this._pausedRetryCount=Wl,this._state="STOPPED",this.bindTrackEvents(),this._log.info(`create ${r}-player ${this.id}`)}get isPlaying(){var e;return this._state==="PLAYING"&&(((e=this.element)==null?void 0:e.paused)===!1||this.track&&this.track.readyState==="live"&&!this.track.muted)}get isStopped(){return this._state==="STOPPED"}setAttr(e){this.attr=e}setUrl(e){this.track&&(this.unbindTrackEvents(),this.element&&(this.element.srcObject=null),this.track=null),e!==this.url&&(this.url=e,e!==null&&this.element&&(this.element.crossOrigin="anonymous",this.element.src=e))}play(){return A(this,null,function*(){if(!this.isPlaying)try{this._delayDestroyTimeoutId&&(clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0,this.bindTrackEvents(),this.bindElementEvents()),this.bindAutoPlayEvent(),yield new Promise((e,r)=>{this._playSuccessResolve=e,this.element.play().then(e,r)})}catch(e){let r=st({key:ot.PLAY_FAILED,data:{media:this.kind,error:e}});if(this.track&&!this.track.muted&&this._log.warn(e),r.includes("NotAllowedError"))throw this.isInAutoPlayFailedState=!0,new ue({code:Y.PLAY_NOT_ALLOWED,message:r})}})}stop(e=0){this._isElementPlayingFired=!1,this.unbindEvents(),e>0&&!Oi?this._delayDestroyTimeoutId||(this._log.info(`destroy element after 3 * ${e}`),this._delayDestroyTimeoutId=setTimeout(()=>this.destroyElement(),3*e)):this.destroyElement(),this.handleStopped(D.ENDED),this._interval>0&&ft.clearTask(this._interval)}destroyElement(){this.element&&(this._log.debug("destroy element"),this.element.remove(),this.element.srcObject=null,this.element=null),clearTimeout(this._delayDestroyTimeoutId),this._delayDestroyTimeoutId=0}pause(){var e;this.isPlaying&&((e=this.element)==null||e.pause())}resume(){return this._log.info("resume"),this.isPlaying?Promise.resolve():cm?this.replay():this.play().catch(()=>{})}setMuted(e){this.element&&(this.element.muted=e),this.muted=e}replay(){return this.stop(),this.play().catch(()=>{})}bindElementEvents(){if(this.element){let e=this.handleElementEvent.bind(this);return vt(this.element,this.element).add(D.PLAYING,e).add(D.ENDED,e).add(D.PAUSE,e).add(D.ERROR,e).add(D.LOADEDDATA,e).add(D.LOADEDMETADATA,e)}}bindTrackEvents(e=this.track){if(e){let r=this.handleTrackEvent.bind(this);Lr==null||Lr.create(e,e).add(D.ENDED,r).add(D.MUTE,r).add(D.UNMUTE,r),e.readyState===D.ENDED&&this.handleTrackEvent({type:D.ENDED}),e.muted&&this.handleTrackEvent({type:D.MUTE})}}bindAutoPlayEvent(){F.on(P.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}unbindTrackEvents(e=this.track){e&&at(e)}unbindEvents(){this.element&&at(this.element),this.unbindTrackEvents(),F.off(P.AUTOPLAY_DIALOG_CLICK_CONFIRM,this.resume,this)}handleElementEvent(e){switch(e.type){case D.PLAYING:this.isInAutoPlayFailedState=!1,this._isElementPlayingFired=!0,this._log.info(`${this.kind} player is playing`),this.handlePlaying(D.PLAYING),this._interval&&(ft.clearTask(this._interval),this._interval=-1);break;case D.ENDED:this._log.info(`${this.kind} player is ended`),this.handleStopped(D.ENDED);break;case D.PAUSE:this._log.info(`${this.kind} player is paused`),this.handlePaused(D.PAUSE),bt&&(this._interval=ft.run(cs,()=>{this.element&&this._state==="PAUSED"&&this.resume()},{delay:3e3}));break;case D.ERROR:if(this.element&&this.element.error){this.handlePaused(D.ERROR);let{code:o,message:s}=this.element.error;this._log.error(`${this.kind} ${this._log.isLocal?"local":"remote"} MediaError code: ${o} message: ${s} userAgent: ${navigator.userAgent}`),Ve.uploadEvent({log:`stat-${this.kind}-${ti.PLAYER_ERROR}-${o}-${navigator.userAgent}`,error:this.element.error}),sm||om?this.emit(et.ERROR,this.element.error):this.replayByRecreateMediaStream(this.element.error)}break;case D.LOADEDDATA:this.kind===D.VIDEO&&this.emit(et.LOADED_DATA);break;case D.LOADEDMETADATA:this.kind===D.VIDEO&&this.emit(et.LOADED_META_DATA);break}}replayByRecreateMediaStream(e){if(!this._isReplayByRecreateMediaStreamCalled)return this._isReplayByRecreateMediaStreamCalled=!0,this.doReplayByRecreateMediaStream(1e3).then(()=>{this._log.warn("replayByRecreateMediaStream success"),Ve.uploadEvent({log:"stat-replayByRecreateMediaStream-success"}),X.addSuccessEvent({key:this.kind===D.AUDIO?506700:516700})}).catch(()=>{var r;this._log.error("replayByRecreateMediaStream failed"),Ve.uploadEvent({log:"stat-replayByRecreateMediaStream-failed"}),X.addFailedEvent({key:this.kind===D.AUDIO?506700:516700,error:(r=this.element)==null?void 0:r.error}),this.emit(et.ERROR,e)})}doReplayByRecreateMediaStream(e){return this._log.warn(`delay ${e}ms to recreate mediaStream`),new Promise((r,o)=>{Bn(e).then(()=>{this.element&&(this.element.srcObject=null,this.element.srcObject=new MediaStream([this.track]),this._log.warn("recreated mediaStream"),this.element.onerror=()=>{var s,a,d;this._log.warn(`element onerror ${(a=(s=this.element)==null?void 0:s.error)==null?void 0:a.code} fired after recreated mediaStream`),o((d=this.element)==null?void 0:d.error)}),Bn(5e3).then(()=>{var s,a;(!this.isPlaying||(s=this.element)!=null&&s.error)&&o((a=this.element)==null?void 0:a.error),r()})})}).finally(()=>{this.element&&(this.element.onerror=null)})}handleTrackEvent(e){switch(e.type){case D.ENDED:this.handleStopped(D.ENDED);break;case D.MUTE:this.handlePaused(D.MUTE);break;case D.UNMUTE:this._isElementPlayingFired?this.handlePlaying(D.UNMUTE):this.mode>0&&this.handlePlaying(this.mode.toString());break}}handlePlaying(e){var r;(r=this._playSuccessResolve)==null||r.call(this,e),this.emit(et.PLAYER_STATE_CHANGED,{type:this.kind,state:"PLAYING",reason:e})}handlePaused(e){this.emit(et.PLAYER_STATE_CHANGED,{type:this.kind,state:"PAUSED",reason:e})}handleStopped(e){this.emit(et.PLAYER_STATE_CHANGED,{type:this.kind,state:"STOPPED",reason:e})}getElement(){return this.element}};G([Ui({settings:{retries:2,timeout:0},onError(e,r,o,s){s[0]=(s[0]||1e3)+1e3,r()}})],Ur.prototype,"doReplayByRecreateMediaStream",1),G([ye([],"PLAYING",{sync:!0})],Ur.prototype,"handlePlaying",1),G([ye("PLAYING","PAUSED",{ignoreError:!0,sync:!0})],Ur.prototype,"handlePaused",1),G([ye([],"STOPPED",{sync:!0})],Ur.prototype,"handleStopped",1);var pi="trtc_autoplay",$m=`${pi}_mask`,Ms=`${pi}_wrapper`,Xf=`${pi}_header`,Hm=`${pi}_content`,Cd=`${pi}_action_wrapper`,Wm=`${pi}_question`,Gm=`${pi}_collapse`,Dd=`${pi}_action_confirm`,Qf=`${pi}_detail`,Yf="#2473E8",qm="dialog",xT=`${qm}-show`,kT=`${qm}-1`,LT=`${qm}-2`,Zf=!1,Jm=()=>!!document.querySelector(`.${Ms}`),e_=`${Nr}/${hr()?"zh-cn":"en"}/tutorial-21-advanced-auto-play-policy.html`,Kf=`<br><a href='${e_}' target='_blank'>${hr()?"\u5176\u4ED6\u65B9\u6848\uFF1F":"Any other solution?"}</a>`,UT=`${hr()?`\u6D4F\u89C8\u5668\u81EA\u52A8\u64AD\u653E\u7B56\u7565\uFF1A\u5728\u7528\u6237\u4E0E\u9875\u9762\u4EA7\u751F\u4EA4\u4E92\uFF08\u70B9\u51FB\u3001\u89E6\u6478\uFF09\u4E4B\u524D\uFF0C\u6D4F\u89C8\u5668\u7981\u6B62\u64AD\u653E\u6709\u58F0\u5A92\u4F53\u3002\u8BE5\u5F39\u7A97\u7528\u4E8E\u5E2E\u52A9\u7528\u6237\u6062\u590D\u97F3\u89C6\u9891\u64AD\u653E\u3002${Kf}`:`Autoplay Policy: Before user interacts with the web page (clicking, touching), page will not be allowed to play media with sound. This Dialog is used to help users resume playback. ${Kf}`}`,jm=class{constructor(){l(this,"content","\u97F3\u89C6\u9891\u64AD\u653E\u88AB\u6D4F\u89C8\u5668\u62E6\u622A\uFF0C\u8BF7\u70B9\u51FB\u201C\u6062\u590D\u64AD\u653E\u201D\u3002");l(this,"_dialogNode",null);l(this,"_bodyPosition","");l(this,"_showDetail",!1);l(this,"_isCollapseClicked",!1);l(this,"_isQuestionClicked",!1);if(hr()||(this.content='Media playback failed. Click the "Resume" to resume playback.'),!Zf){let t=document.createElement("style");t.innerHTML=`.${$m}{position:fixed;top:0;left:0;right:0;bottom:0;width:100vw;height:100vh;display:flex;justify-content:center;align-items:center;background:rgba(0,0,0,0.5);z-index:1500;}.${$m} div:not(.${Cd}){display:block !important;}.${Ms}{padding:14px;background:#fff;border-radius:3px;box-shadow:0px 3px 15px #434343;border:1px solid #d1cfcf;max-width:500px;}.${Ms} a{color:${Yf};}.${Xf}{overflow:hidden;text-overflow:ellipsis;font-size:16px;font-weight:600;}.${Hm}{margin:8px 0;}.${Cd}{width:100%;display:flex !important;align-items:center;justify-content:right;float:right;}.${Gm}{margin-right:auto;cursor:pointer}.${Wm}{height:100%;line-height:16px;cursor:pointer;}.${Dd}{margin-left:8px;color:#fff;background:${Yf};padding:4px 12px;outline:none;border:1px solid;border-radius:3px;font-weight:bold;}.${Dd}:hover{opacity:0.9;}.${Gm},.${Dd},.${Hm},.${Wm}{font-size:14px;}@media screen and (max-width:750px){.${Ms}{width:80vw;}}`,document.head.appendChild(t),Zf=!0}this.addDiaLog()}createDiaLog(){let t=document.createElement("template");t.innerHTML=`<div class="${$m}"><div class='${Ms}'><div class='${Xf}'>${location.host}</div><div class='${Hm}'>${this.content}</div><div class='${Qf}' style="visibility:hidden;width:100%;height:0;font-size:12px;color:gray;">${UT}</div><div class='${Cd}'></div></div></div>`.trim();let e=document.createElement("button");e.className=Dd,e.innerText=hr()?"\u6062\u590D\u64AD\u653E":"Resume",e.onclick=this.onConfirm.bind(this);let r=document.createElement("div");r.className=Wm,r.innerHTML=`<?xml version="1.0" encoding="UTF-8"?>
26
24
  <svg class="icon" width="18" height="18" p-id="2030" t="1639646523624" version="1.1" viewBox="0 0 1024 1024" xmlns="http://www.w3.org/2000/svg">
27
25
  <path d="m464 784.35c0 26.51 21.49 48 48 48s48-21.49 48-48-21.49-48-48-48-48 21.49-48 48z" p-id="2031"/>
28
26
  <path d="m512 960c-247.04 0-448-200.96-448-448s200.96-448 448-448 448 200.96 448 448-200.96 448-448 448zm0-831.71c-211.58 0-383.71 172.13-383.71 383.71 0 211.55 172.13 383.71 383.71 383.71 211.55 0 383.71-172.16 383.71-383.71 0-211.58-172.16-383.71-383.71-383.71z" p-id="2032"/>
29
27
  <path d="m512 673.7c-17.665 0-32.001-14.336-32.001-31.999v-54.112c0-52.353 40-92.352 75.328-127.65 25.887-25.92 52.672-52.672 52.672-74.017 0-53.343-43.072-96.735-95.999-96.735-53.823 0-95.999 41.536-95.999 94.559 0 17.665-14.336 31.999-32.001 31.999s-32.001-14.336-32.001-31.999c0-87.424 71.775-158.56 160-158.56s160 72.095 160 160.74c0 47.904-36.32 84.192-71.424 119.3-27.84 27.776-56.576 56.512-56.576 82.336v54.112c0 17.665-14.336 32.032-32.001 32.032z" p-id="2033"/>
30
28
  </svg>
31
- `,t.onclick=this.onQuestionClick.bind(this);let r=document.createElement("div");r.className=Od,r.innerText=`${At()?"\u8BE6\u60C5 >":"Detail >"}`,r.onclick=this.onCollapseClick.bind(this);let o=i.content.firstChild,n=o.querySelector(`.${Zn}`);return n.appendChild(r),n.appendChild(t),n.appendChild(e),o}addDiaLog(){Ld()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${hs}`).onclick=i=>i.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",C.info("show autoplay dialog"),ee.uploadEvent({log:n_}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){C.warn("confirm clicked, try resume stream"),E.emit(T.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let i=this._dialogNode.querySelector(`.${vh}`);i.style.visibility=`${this._showDetail?"hidden":"visible"}`,i.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||ee.uploadEvent({log:a_}),this._isCollapseClicked=!0}onQuestionClick(){window.open(kh,"_blank"),this._isQuestionClicked||ee.uploadEvent({log:c_}),this._isQuestionClicked=!0}},Lh=Md;var at=class extends zt{constructor(e){super(e,h.VIDEO);c(this,"stat",{});c(this,"_calculateTimeout",-1);c(this,"viewMirror",!1);c(this,"objectFit");c(this,"container");c(this,"canvas");c(this,"canvasTrack");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,g(e.viewMirror)||(this.viewMirror=e.viewMirror),g(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}initializeElement(){var t;let e=document.createElement(h.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(t=this.container)==null||t.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var t;this.container=e,(this.track||this.canvasTrack)&&this.elementToRender&&((t=this.container)==null||t.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(h.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(h.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var t;super.handleTrackEvent(e),e.type===h.MUTE&&((t=this.stat)!=null&&t.fps)&&(this.stat.fps=0)}handleElementEvent(e){var r;if(this.mode===2)return;super.handleElementEvent(e);let t=e.type;if(t===h.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(r=this.container)==null?void 0:r.id}`),this._pausedRetryCount>0&&!Ld()&&(this._log.info(`${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let o=this.element.style.transform;t===h.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=o.replace("scaleX(-1)",""):t===h.LEAVE_PICTURE_IN_PICTURE&&!o.includes("scaleX")&&(this.element.style.transform=`${o} scaleX(-1)`)}}setCanvas(e,t=1){var r,o,n,a;this.canvas!==e&&((r=this.canvas)==null||r.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?t:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((o=this.element)==null||o.remove(),(n=this.container)==null||n.appendChild(e)):this.element&&((a=this.container)==null||a.appendChild(this.element)))}setAttr(e){let t=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);t.style=Object.assign({width:"100%",height:"100%"},t.style),super.setAttr(t)}get mirror(){return this.viewMirror}setRect(e,t){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${t}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}stop(e=0){var t;super.stop(e),(t=this.canvas)==null||t.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(pe.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Sr()&&this.element&&this._calculateTimeout<0){let e=0,t=null,r=(o,n)=>{this.stat.width=n.width,this.stat.height=n.height,t&&(this.stat.fps=Math.round((n.presentedFrames-t.presentedFrames)/(o-e)*1e3)),e=o,t=n,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var a;return(a=this.element)==null?void 0:a.requestVideoFrameCallback(r)},2e3))};this.element.requestVideoFrameCallback(r)}}catch(e){this._log.warn("init stat failed",e)}}};function Ir(s,i){return f(this,null,function*(){if(!s.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield s.audioWorklet.addModule(i),C.info("worklet addModule success")}catch(e){throw C.info(`worklet addModule catch error. ${e.message}`),e}})}var Mo;typeof AudioContext!="undefined"?Mo=AudioContext:typeof webkitAudioContext!="undefined"?Mo=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Mo=mozAudioContext);var Yt,Ph=-1;xh();function xh(){try{if(Yt)return;Yt=new Mo({sampleRate:48e3}),Yt.onstatechange=()=>{C.info(`context state: ${Yt.state}${Yt.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),ms()},clearTimeout(Ph)}catch(s){C.error(`initAudioContext failed: ${s} typeof AudioContextClass: ${typeof Mo}`),Ph=setTimeout(xh,1e3)}}var ms=()=>{Yt.state==="suspended"?(wh(),document.addEventListener("click",ms)):Yt.state==="interrupted"?wh():(document.removeEventListener("visibilitychange",ms),document.removeEventListener("click",ms))},Pd=0,wd=-1;function wh(){return new Promise((s,i)=>{Date.now()-Pd<1e3?(clearTimeout(wd),wd=setTimeout(()=>{Pd=Date.now(),Yt.resume().then(s,i)},1e3)):(clearTimeout(wd),Pd=Date.now(),Yt.resume().then(s,i))}).catch(s=>{C.warn(`context resume failed: ${s}`),document.addEventListener("visibilitychange",ms)})}document.addEventListener("click",ms);var Ze=s=>Yt;var ft=class{constructor(){c(this,"node");c(this,"pre",new Set);c(this,"next",new Set);c(this,"context");c(this,"connectedNodes",new Set);c(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(i){this._channelCount=i,this.node&&(this.node.channelCount=i),this.next.forEach(e=>e.channelCount=i)}setContext(i){this.context=i,this.node&&i.addMixWeight()}removeContext(){var i;this.node&&((i=this.context)==null||i.reduceMixWeight()),delete this.context}setNode(i){var e;if(!this.node)try{(e=this.context)==null||e.addMixWeight(),this.node=i,this.node.channelCountMode="explicit",this.node.channelCount=this._channelCount,this.preNodeReconnect(),this.reconnect(),N.addSuccessEvent({key:502701})}catch(t){C.error(t),N.addFailedEvent({key:502701,error:t})}}deleteNode(){var i;if(this.node)try{this._disconnect(),delete this.node,(i=this.context)==null||i.reduceMixWeight(),this.preNodeReconnect(),N.addSuccessEvent({key:502702})}catch(e){C.error(e),N.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(i=>{i.node?i.reconnect():i.preNodeReconnect()})}connectNext(i){this.next.forEach(e=>i._connect(e.node)||e.connectNext(i))}_connect(i){return!this.node||!i?!1:(this.node.connect(i),this.connectedNodes.add(i),!0)}_disconnect(){this.connectedNodes.forEach(i=>{var e;return(e=this.node)==null?void 0:e.disconnect(i)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...i){return i.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},ta=class extends ft{constructor(e=256){super();this.fftSize=e;c(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),t=1,r=0,o=0,n=`M${r},${o}`;for(let a=0;a<e.length;a++)o=e[a]/128*100/2,n+=`L${r},${o}`,r+=t;return n}},ko=class{constructor(){c(this,"source",new ft);c(this,"gain",new ft);c(this,"destination",new ft)}get volume(){var i;return((i=this.gain.node)==null?void 0:i.gain.value)||1}setVolume(i){if(i===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.source.node.context.createGain()),this.gain.node.gain.value=i}replaceSource(i){this.source.deleteNode(),this.source.setNode(xd(i))}get track(){var i;return(i=this.stream)==null?void 0:i.getAudioTracks()[0]}get stream(){var i;return(i=this.destination.node)==null?void 0:i.stream}},ps=class extends ko{constructor(e){super();this.context=e;c(this,"denoiser",new ft);this.source.pipeTo(this.denoiser.pipeTo(this.gain.pipeTo(this.destination)))}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.denoiser.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.denoiser.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},ia=class{constructor(){c(this,"audioContext",Ze("audio-mixer"));c(this,"destination",this.audioContext.createMediaStreamDestination());c(this,"inputs",new Set);c(this,"mixWeight",0)}addMixWeight(i=1){this.mixWeight+=i,this.mixWeight-1===i+1>>1&&this.mixOnChange()}reduceMixWeight(i=1){this.addMixWeight(-i)}close(){this.inputs.forEach(i=>i.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},Uh=new WeakMap;function xd(s){let i=Uh.get(s);if(i)return i;let e=Ze();if(s instanceof HTMLAudioElement)i=e.createMediaElementSource(s);else if(s instanceof MediaStreamTrack)i=e.createMediaStreamSource(new MediaStream([s]));else return s;return Uh.set(s,i),i}var ct=class ct{constructor(i){c(this,"_volume",0);c(this,"_log");c(this,"_scriptProcessorNode",null);c(this,"_audioWorkletNode",null);c(this,"_interval",200);c(this,"ready",this.preload());let{log:e}=i;this._log=e,E.on(T.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-ct.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!ct.workletReady){let i='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,e){t=t[0],e=e[0];if(t||e){if(this.isStop)return!1;var s=e&&e[0]?e[0].length:0,i=this.cache.length,h=(s<i?(e[0].set(this.cache.slice(0,s)),this.cache=this.cache.slice(s)):this.unmute&&e[0].set(t[0]),(s<i?e:t)[0]);if(h){let e=0;for(let t=0;t<h.length;++t)e=Math.max(Math.abs(h[t]),e);this.volume=e,this.tick-=h.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,cacheLen:i,outputLen:s}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';ct.workletReady=Ir(ct.audioContext,URL.createObjectURL(new Blob([i],{type:"application/javascript"})))}return ct.workletReady.then(()=>this.initAudioWorklet()).catch(i=>(this._log.error(`volumeMeter preload error: ${i}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(ct.audioContext,"volume-meter");let i=!1;this._audioWorkletNode.port.onmessage=e=>{ct.lastMessageTime=Date.now(),this._volume=e.data.volume||0,!i&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),i=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(i){this._log.error(`volumeMeter init audio worklet error: ${i}`),ee.logFailedEvent({userId:this._log.userId,eventType:Xe.LOAD_WORKLET,error:i}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=Ze("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=i=>{ct.lastMessageTime=Date.now();let e=i.inputBuffer.getChannelData(0),t=0;for(let r=0;r<e.length;++r)t+=e[r]*e[r];this._volume=Math.sqrt(t/e.length)||0}}catch(i){this._log.error(`volumeMeter init script processor error: ${i}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,E.off(T.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}handleAudioLevelInterval(i){var t;let{interval:e}=i;this._interval=e,(t=this._audioWorkletNode)==null||t.port.postMessage({name:"setIntervalTime",intervalTime:e})}};c(ct,"lastMessageTime",0),c(ct,"audioContext",Ze("volume-meter")),c(ct,"workletReady");var ra=ct,sa=class extends ft{constructor(e){super();c(this,"_volumeMeter");this._volumeMeter=new ra(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return f(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}write(e){if(this.node){let t=e.allocationSize({planeIndex:0}),r=new Float32Array(t>>2);e.copyTo(r,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:r},[r.buffer]),e.close()}}},Ud=ra;var Hh=ke(Ge(),1);var Bh=s=>i=>i.deviceId===s;var Lo=class{constructor(i,e="Input"){c(this,"kind");c(this,"type");c(this,"devices",[]);this.kind=i,this.type=e}update(i,e){let t=i.filter(r=>r.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&fs(this.devices[0])){this.devices=t;return}e&&(t.forEach(r=>{if(r.deviceId&&!this.devices.find(Bh(r.deviceId))){let o=`${this.kind}${this.type}Added`;C.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}}),this.devices.forEach(r=>{if(r.deviceId&&!t.find(Bh(r.deviceId))){let o=`${this.kind}${this.type}Removed`;C.warn(`${o}: ${JSON.stringify(r)}`),e.emit(o,r)}})),this.devices=t}hasDevice(i){return!!this.devices.find(e=>e.deviceId===i)}},Vd=class extends Hh.EventEmitter{constructor(){super();c(this,"audioInputs",new Lo(h.AUDIO));c(this,"videoInputs",new Lo(h.VIDEO));c(this,"audioOutputs",new Lo(h.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||re.run(dr,()=>{this.update()},{delay:1e4}))}init(){oa().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return f(this,arguments,function*(e=0){let t=yield oa(e);return this.audioInputs.update(t,this),this.videoInputs.update(t,this),this.audioOutputs.update(t,this),this})}},ye=Hs||Fr?null:new Vd;function fs(s){return s.deviceId===s.groupId&&s.groupId===""}function oa(){return f(this,arguments,function*(s=0){if(Ci()||!Xn())return[];let i=yield navigator.mediaDevices.enumerateDevices();if(s!==0){let e={audio:!1,video:!1};if(i.forEach(t=>{fs(t)&&(t.kind===h.AUDIO_INPUT?e.audio=!0:t.kind===h.VIDEO_INPUT&&(e.video=!0))}),s===2&&(e.audio=!1),s===1&&(e.video=!1),e.audio||e.video){let t;try{t=yield navigator.mediaDevices.getUserMedia(e)}catch(r){C.debug("capture before getDevices failed: ",r)}i=yield navigator.mediaDevices.enumerateDevices(),t==null||t.getTracks().forEach(r=>r.stop())}}return i.map((e,t)=>{let r={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${t}`};return e.deviceId.length>0&&Bd.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(r.getCapabilities=()=>e.getCapabilities()),r})})}function et(s=!1){return ye.update(s?1:0).then(i=>i.audioInputs.devices)}function dt(s=!1){return ye.update(s?2:0).then(i=>i.videoInputs.devices)}var Fh=!1;function $h(){return f(this,null,function*(){try{Fh||(Fh=!0,C.info(`speakers:${(yield Ki()).map(s=>` ${s.deviceId.slice(0,8)}: ${s.label}`)}`))}catch(s){}})}function Ki(s=!1){return f(this,null,function*(){return ye.update(s?1:0).then(i=>i.audioOutputs.devices)})}var Bd=new Set;function Gh(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("camera")||i.includes("webcam"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${h.VIDEO_INPUT}`;return!!Bd.has(t)}function Wh(s){if(s instanceof CanvasCaptureMediaStreamTrack||!(s instanceof MediaStreamTrack))return!1;let i=s.label.toLocaleLowerCase();if(i.includes("mic")||i.includes("\u9EA6\u514B\u98CE"))return!0;let t=`${((s==null?void 0:s.getSettings())||{}).deviceId}_${h.AUDIO_INPUT}`;return!!Bd.has(t)}function Fd(s,i){return f(this,null,function*(){let t=(yield et()).find(r=>r.deviceId===cr);return!i&&(t==null?void 0:t.groupId)===s||(t==null?void 0:t.groupId)===s&&t.label===i})}function Jh(o){return f(this,arguments,function*({newDeviceId:s,oldDeviceId:i,oldGroupId:e,oldLabel:t,kind:r}){return s!==i?!1:r===h.AUDIO&&s===cr?yield Fd(e,t):!0})}var na,Hd=class extends ko{constructor(e){super();this.log=e;c(this,"volumeMeter");c(this,"volumeDestination");c(this,"analyser",new ta);this.volumeMeter=new sa({log:this.log}),this.volumeDestination=new ft,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},aa=class s extends zt{constructor(e){super(e,h.AUDIO);c(this,"_outputDeviceId");c(this,"_volume",1);c(this,"_destination",Ze("player").createMediaStreamDestination());c(this,"pipeline");c(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new Hd(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((ji==="15.2"||ji==="15.3"||ji==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let r=na||new Audio;r.setAttribute("autoplay","autoplay"),r.srcObject=this.getMediaStream(),r.muted=this.muted,this.element=r,Y(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),r===na&&(na=void 0),this.bindElementEvents()}play(e){return f(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(Ze("player").createAnalyser()),$h(),Le(s.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return f(this,null,function*(){var t,r;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(r=(t=this.element).setSinkId)==null?void 0:r.call(t,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},ca=class extends aa{constructor(i){super(i),this.pipeline.source.pipeTo(this.pipeline.volumeMeter,this.pipeline.destination)}setTrack(i){var e;this.track!==i&&(this.unbindTrackEvents(),this.track=i,this.emit(pe.MEDIA_TRACK_CHANGED,i),i?(this.bindTrackEvents(),this.pipeline.source.channelCount=((e=i.getSettings())==null?void 0:e.channelCount)||1,this.pipeline.replaceSource(i),!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([i]))):this.pipeline.source.deleteNode())}setSourceNode(i){!i||this.pipeline.source.node===i||(this.pipeline.replaceSource(i),i instanceof MediaStreamAudioSourceNode?this.pipeline.destination.setNode(this._destination):this.pipeline.destination.deleteNode(),this.element&&(this.element.srcObject=this.getMediaStream(),this.element.play().catch(()=>{}),this.setVolume(this._volume)))}setVolume(i){this._volume=i,this.element&&(this.element.volume=i)}},da=class extends aa{constructor(e){super(e);c(this,"_sourceElement");c(this,"_output",new ft);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(Ze("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var t,r,o;((r=(t=this.element)==null?void 0:t.error)==null?void 0:r.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(pe.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((o=e.getSettings())==null?void 0:o.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1&&!xe?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),Se(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let t=this._sourceElement||this.element;t&&Ji&&(na=t),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var Ar=class extends Q{constructor({userId:e,sdkAppId:t,mediaType:r,room:o,PlayerClass:n=r===1?da:at}){var a;super();c(this,"id",mo());c(this,"userId","");c(this,"isRemote");c(this,"mediaType");c(this,"room");c(this,"user");c(this,"_log");c(this,"_inputTrack");c(this,"_outputTrack");c(this,"isPlayCalled");c(this,"container",null);c(this,"player");c(this,"subVideoPlayerMap");c(this,"muted",!1);c(this,"abortCtrl");c(this,"objectFit","cover");c(this,"mirror");c(this,"isScreen",!1);c(this,"manager");c(this,"trackSettings");this.userId=e||"",this.mediaType=r,this._log=C.createLogger({id:`${this.kind[0]}t`,userId:(a=o||this.room)==null?void 0:a.userId,remoteUserId:this instanceof bi?void 0:this.userId,sdkAppId:t,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof bi}),this.player=new n({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(pe.PLAYER_STATE_CHANGED,d=>{E.emit(T.PLAYER_STATE_CHANGED,v({track:this},d)),this.emit("player-state-changed",d)}),this.kind===h.VIDEO&&(this.player.on(pe.LOADED_DATA,()=>{E.emit(T.VIDEO_LOADED_DATA,{track:this})}),this.player.on(pe.LOADED_META_DATA,()=>{var l,m,u;let d=(l=this.mediaTrack)==null?void 0:l.getSettings();this.emit("first-video-frame",{width:(d==null?void 0:d.width)||((m=this.player.element)==null?void 0:m.videoWidth)||0,height:(d==null?void 0:d.height)||((u=this.player.element)==null?void 0:u.videoHeight)||0,streamType:this.streamType,userId:this.isRemote?this.userId:""})}),this.player.on(pe.MEDIA_TRACK_CHANGED,d=>{var l;(l=this.subVideoPlayerMap)==null||l.forEach(m=>m.setTrack(d))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(pe.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||C}get kind(){return this.mediaType===1?h.AUDIO:h.VIDEO}get strMediaType(){return this.mediaType===4?h.VIDEO:this.mediaType===2?h.SCREEN:h.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,t){return f(this,null,function*(){let r=Te(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(t)}`),t&&!g(t.muted)&&this.setPlayerMute(t.muted),t&&!g(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof at&&(this.player.setObjectFit(this.objectFit),this.container!==r&&r&&(this.container=r,this.player.setContainer(r)),Te(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),t)));return}if(t&&!g(t.muted)?this.setPlayerMute(t.muted):(!this.isRemote||this.kind===h.VIDEO)&&this.setPlayerMute(!0),t&&!g(t.objectFit)&&(this.objectFit=t.objectFit),this.player instanceof at&&this.player.setObjectFit(this.objectFit),this.isPlayCalled=!0,r&&(this.container=r,this.player instanceof at&&this.player.setContainer(r)),E.emit(T.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(t)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(t),Te(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),t))}catch(o){throw this.handleAutoPlayFailed(o),o}})}setMirror(e,t){if(this.isScreen||this.kind!==h.VIDEO||g(e)||e===this.mirror)return;this.mirror=e;let r=this.player;t&&(r=t);let o=this.manager;if(he(this.mirror)){r.setViewMirror(this.mirror),o&&(o.mirror=!1);return}switch(this.mirror){case"view":{o&&(o.mirror=!1),r.setViewMirror(!0);break}case"publish":{o&&(o.mirror=!0),r.setViewMirror(!0);break}case"both":o&&(o.mirror=!0),r.setViewMirror(!1)}}playSubContainer(e,t){return f(this,null,function*(){if(!this._outputTrack||this.kind===h.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((o,n)=>{var a;e.find(d=>n===d)||(o.stop(),(a=this.subVideoPlayerMap)==null||a.delete(n))});for(let[o,n]of e.entries()){let a=this.subVideoPlayerMap.get(n);a?t&&(g(t.objectFit)||a.setObjectFit(t.objectFit)):this.subVideoPlayerMap.set(n,new at({id:this.userId||this.id,track:this.playerMediaTrack,container:n,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${o+1}`})}))}let r=[...this.subVideoPlayerMap.values()];for(let o of r)o.setViewMirror(this.player.mirror),yield o.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Pc(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(t=>{t.stop()}),this.container=null)}resume(){return f(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),E.emit(e?T.TRACK_MUTED:T.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){Ue(e,e).add(h.MUTE,this.onTrackMuted).add(h.UNMUTE,this.onTrackUnmuted).add(h.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===h.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Se(e)}setInputMediaStreamTrack(e){var r;let t=this._inputTrack;if(e!==t)return this._inputTrack=e,this.trackSettings=(r=e.getSettings)==null?void 0:r.call(e),e.enabled=!this.muted,t&&this.uninstallTrackEvent(t),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,t||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;let t=this._outputTrack;e!==t&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(r=e.getSettings)==null?void 0:r.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(t=>this.handleAutoPlayFailed(t)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Pc(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new Lh;else{let t=()=>{this.resume().then(()=>{document.removeEventListener("click",t,!0)})};document.addEventListener("click",t,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof at?this.player.getVideoFrame():""}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};y([de([],Q.INIT,{sync:!0})],Ar.prototype,"close",1);var l_=Object.prototype.hasOwnProperty,{toString:BA}=Object.prototype;function u_(s){if(s==null)return!0;if(typeof s=="boolean")return!1;if(typeof s=="number")return s===0;if(typeof s=="string"||typeof s=="function"||Array.isArray(s))return s.length===0;if(s instanceof Error)return s.message==="";if(Qe(s))switch(Object.prototype.toString.call(s)){case"[object File]":case"[object Map]":case"[object Set]":return s.size===0;case"[object Object]":{for(let i in s)if(l_.call(s,i))return!1;return!0}}return!1}var Kt=u_;var h_=function(s){return f(this,null,function*(){let i=p_(s);C.info(`getUserMedia with constraints: ${JSON.stringify(i)}`);let e=[],t=[],r=["label","deviceId","groupId"];i.audio&&(e=yield et(),C.info(`microphones: ${ht(e.map(o=>k(v({},o),{groupId:o.groupId.substring(0,8)})),{keysToInclude:r})}`)),i.video&&(t=yield dt(),C.info(`cameras: ${ht(t,{keysToInclude:r})}`));try{let o=yield navigator.mediaDevices.getUserMedia(i);return Id&&o.getTracks().forEach(n=>{C.info(`${n.kind} capabilities: ${ht(n.getCapabilities(),{keysToInclude:gn})}`)}),o}catch(o){let{message:n}=o;throw o.name==="NotFoundError"&&(s.video&&t&&t.length===0&&(n=U({key:x.CAMERA_NOT_FOUND})),s.audio&&e&&e.length===0&&(n=U({key:x.MICROPHONE_NOT_FOUND}))),new b({code:S.INITIALIZE_FAILED,name:o.name,message:n,constraint:o.constraint})}})},m_=Gt({retryFunction:h_,settings:{retries:3,timeout:500},onError:({error:s,retry:i,reject:e,retryFuncArgs:t,retriedCount:r})=>{let o=r+1;s.name==="NotReadableError"||s.name==="OverconstrainedError"?(o===1?(t[0].video&&(t[0].maxResolution=!1,(!ze||t[0].width*t[0].height<=1920*1080)&&t[0].frameRate&&(t[0].frameRate=t[0].frameRate>10?10:5)),t[0].retryWhenExactFailed&&t[0].useExactDeviceId&&(t[0].useExactDeviceId=!1)):o===2?t[0].useDeviceIdOnly=!0:o===3&&!t[0].useExactDeviceId&&(t[0].useTrueAsConstraint=!0),i()):e(s),t[0].microphoneId&&qh(t[0].microphoneId,!1),t[0].cameraId&&qh(t[0].cameraId,!0)},onRetrying:s=>{C.warn(`getUserMedia NotReadableError observed, retrying [${s}/3]`)},onRetryFailed:s=>{ee.logFailedEvent({eventType:Xe.GET_USER_MEDIA_RETRY,error:s})},onRetrySuccess:s=>{ee.logSuccessEvent({eventType:Xe.GET_USER_MEDIA_RETRY}),ee.uploadEvent({log:`stat-${Xe.GET_USER_MEDIA_RETRY}-success-${s}`})}});function qh(s,i){return f(this,null,function*(){let t=(i?yield dt():yield et()).find(r=>r.deviceId===s);t&&se(t.getCapabilities)&&C.warn(ht(t.getCapabilities(),{keysToInclude:gn}))})}function p_(s){return{audio:f_(s),video:__(s)}}function f_(s){if(!s.audio)return!1;if(s.useTrueAsConstraint)return!0;let i={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:s.sampleRate};return!Kt(s.microphoneId)&&(i.deviceId=s.useExactDeviceId?{exact:s.microphoneId}:s.microphoneId,s.useDeviceIdOnly)?i:(Y(s.channelCount)&&(i.channelCount=s.channelCount),he(s.echoCancellation)&&!s.echoCancellation&&(i.echoCancellation=!1),he(s.noiseSuppression)&&!s.noiseSuppression&&(i.noiseSuppression=!1),he(s.autoGainControl)&&!s.autoGainControl&&(i.autoGainControl=!1),Kt(i)?!0:i)}function __(s){if(!s.video)return!1;if(s.useTrueAsConstraint)return!0;let{maxResolution:i=!0}=s,e={};return s.cameraId?e.deviceId=s.useExactDeviceId?{exact:s.cameraId}:s.cameraId:s.facingMode&&(e.facingMode=s.facingMode),s.useDeviceIdOnly&&!Kt(e)?e:(s.width&&(e.width={ideal:s.width},i&&!ae&&(e.width.max=s.width)),s.height&&(e.height={ideal:s.height},i&&!ae&&(e.height.max=s.height)),ae&&Nt&&s.width&&s.height&&s.width*s.height<352*288&&(e.width=s.width,e.height=s.height),s.frameRate&&(e.frameRate=s.frameRate),Kt(e)?!0:e)}var jh=m_;function la(s){return J((i,e)=>function(...t){return f(this,null,function*(){return yield s.apply(this,t),i.apply(this,t)})})}function Je(s){return J((i,e)=>function(...t){return f(this,null,function*(){let r=yield i.apply(this,t);return yield s.call(this,...t),r})})}function ua(s){return J((i,e)=>function(...t){return f(this,null,function*(){try{return yield i.apply(this,t)}catch(r){s.call(this,r)}})})}function J(s){return function(i,e,t){return t.value=s(t.value,e),t}}var Xh=(()=>{let s=!1,i=document.visibilityState;return()=>{document.visibilityState!==i&&C.info(`visibility change: ${document.visibilityState}`),!s&&(document.addEventListener("visibilitychange",()=>{C.info(`visibility change: ${document.visibilityState}`),i=document.visibilityState}),s=!0)}})();var g_=0,ha=class{constructor(){c(this,"log",C.createLogger({id:`fq${++g_}`}));c(this,"isRunning",!1);c(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(i,e=!1){var o,n;let t=v({},i),r=new Promise((a,d)=>{t.resolve=a,t.reject=d});return t.promise=r,e?this.length<=1?this.queue.push(t):(n=(o=this.lastQueueItem)==null?void 0:o.promise)==null||n.then(t.resolve,t.reject):this.queue.push(t),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),r}shift(){let i=this.queue.shift();return this.log.debug(`shift ${this.length}`),i}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:i,args:e,context:t,resolve:r,reject:o}=this.queue[0];this.isRunning=!0,i.apply(t,e).then(r,o).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},Po=new WeakMap,ma=new WeakMap;function Zt(s=!1){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Po.get(this)||new ha;return Po.set(this,n),n.push({fn:r,args:o,context:this},s)},t}}function Qh(s){return function(i,e,t){let r=t.value;return t.value=function(...o){let n=Po.get(this);if(n){let a=n.queue.filter((d,l)=>{if(l===0)return!0;let m=!0;return d.args.forEach(u=>{o.find(p=>p===u)||(m=!1)}),m?(d.reject(new b({code:S.API_CALL_ABORTED,message:s})),!1):!0});n.queue=a}return r.apply(this,o)},t}}function pa(s){return function(i,e,t){let r=t.value;return t.value=function(...o){var a,d,l;let n=[];return(d=(a=Po.get(this))==null?void 0:a.queue)==null||d.forEach(m=>n.push(m)),(l=ma.get(this))==null||l.forEach(m=>m==null?void 0:m.queue.forEach(u=>n.push(u))),n.forEach(m=>{m.reject(new b({code:S.API_CALL_ABORTED,message:s}))}),Po.delete(this),ma.delete(this),r.apply(this,o)},t}}function Ni(s){return function(i,e,t){let r=t.value,o=n=>s(...n);return t.value=function(...n){let a=ma.get(this)||new Map,d=a.get(o(n))||new ha;return a.set(o(n),d),ma.set(this,a),d.push({fn:r,args:n,context:this})},t}}function tt(s,i){return J((e,t)=>function(...r){let o=s;try{let n=e.apply(this,r),a=L();return Wi(n)?n.then(d=>(i?N.addSuccessEvent({key:o,cost:L()-a}):N.addSuccessEvent({key:o}),d)).catch(d=>{throw N.addFailedEvent({key:o,error:d}),d}):(N.addSuccessEvent({key:o}),n)}catch(n){throw N.addFailedEvent({key:o,error:n}),n}})}var Cr=class Cr extends Ar{constructor(e,t){super({mediaType:e,PlayerClass:t});c(this,"isRemote",!1);c(this,"deviceId");c(this,"groupId","");c(this,"label","");c(this,"_isRecapturing",!1);c(this,"_lastRecaptureTime",0);c(this,"_onMuteTimeoutId",-1);c(this,"_encodeCheckTimeoutId",-1);c(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,t){throw new Error("Method not implemented.")}installTrackEvent(e){Ue(e,e).add(h.MUTE,this.onTrackMuted).add(h.UNMUTE,this.onTrackUnmuted).add(h.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===h.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){Se(e)}setStateToCapture(){}capture(e){return f(this,null,function*(){var t;try{let r=L();E.emit(T.LOCAL_TRACK_CAPTURE_START,{track:this});let o;e.customSource?(o=new MediaStream,o.addTrack(e.customSource)):((t=this.mediaTrack)==null||t.stop(),o=yield jh(e));let n=o.getTracks()[0];return yield this.setInputMediaStreamTrack(n),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),E.emit(T.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:L()-r}),o}catch(r){throw E.emit(T.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:r}),this.log.error(`getUserMedia error observed ${r}`),r}})}setInputMediaStreamTrack(e){return this.state===Q.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var t;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(t=this.room)==null?void 0:t.replaceTrack(this)}publish(e,t){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),t}unpublish(){this.room&&this.room.localTracks.delete(this),E.emit(T.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return f(this,null,function*(){if(this.mediaTrack&&qt){let{deviceId:e,groupId:t}=this.mediaTrack.getSettings(),{label:r}=this.mediaTrack;(yield Jh({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=r,t&&(this.groupId=t),oa().then(n=>{let a=n.find(d=>d.deviceId===e);a&&this.emit("2",a)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===h.AUDIO&&!Wh(this.mediaTrack)||this.kind===h.VIDEO&&!Gh(this.mediaTrack)||this._isRecapturing||e&&Nt&&ze)}onTrackMuted(){if(super.onTrackMuted(),Xh(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<Gr){setTimeout(()=>this.onTrackMuted(),Gr);return}this._onMuteTimeoutId=setTimeout(()=>f(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((xe||me)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return f(this,null,function*(){if(Le(Cr.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<Gr){setTimeout(()=>this.onTrackEnded(),Gr);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return f(this,null,function*(){var r;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(r=this._inputTrack)==null||r.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let t={useExactDeviceId:!0};if(e==="user"||e==="environment")t.facingMode=e;else{let o;(this.kind==="audio"?yield et():yield dt()).find(a=>a.deviceId===e)&&(o=e),t.deviceId=o}return this.capture(t).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),E.emit(T.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(o=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${o.message}`),this.emit("5",o),E.emit(T.LOCAL_TRACK_RECAPTURE,{track:this,error:o})})})}getRecoverCaptureDeviceId(){return f(this,null,function*(){let e=this instanceof Ve;if(e&&this.facingMode)return this.facingMode;let{deviceId:t}=this;if(t){let r=(wo.get(t)||0)+1;if(wo.set(t,r),r>=3){let o=e?(yield dt()).find(n=>!wo.has(n.deviceId)):(yield et()).find(n=>!wo.has(n.deviceId));o&&(this.log.warn(`${t} capture fail ${r} times, change new ${o.deviceId}`),t=o.deviceId)}}return t})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}};y([de(Q.INIT,"capture",{ignoreError:!0,sync:!0})],Cr.prototype,"setStateToCapture",1),y([Zt()],Cr.prototype,"capture",1),y([de("capture","publish",{ignoreError:!0,success(){var t,r;this.room.localTracks.add(this),E.emit(T.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let d=this.kind===h.AUDIO,l=this.stat.bytesSent>0;N[l?"addSuccessEvent":"addFailedEvent"]({key:d?503700:513702}),l||(N.addEnum({key:d?503701:513703,value:ho()}),ee.uploadEvent({log:`stat-encode-failed-${this.kind}-${pr()||Ti()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let t="error";if(e.cause instanceof RTCError){let r=e.cause;r.message.includes("timeout")?t="timeout":r.code===S.API_CALL_ABORTED&&(t="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:t,error:e.cause||e})}}),tt(521714,!1)],Cr.prototype,"publish",1),y([J(e=>function(){return f(this,null,function*(){let t=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:t,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),de([],"capture",{sync:!0})],Cr.prototype,"unpublish",1);var bi=Cr,wo=new Map;E.on(T.SWITCH_DEVICE_SUCCESS,s=>{s.track.deviceId&&wo.delete(s.track.deviceId)});var _t=class s extends bi{constructor(e){super(1,ca);c(this,"mediaType",1);c(this,"volume",0);c(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});c(this,"playerMuted",!0);c(this,"pipeline");c(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new ps(e),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}get playerMediaTrack(){return this.mediaTrack}setInputMediaStreamTrack(e){return f(this,null,function*(){let t=this.trackSettings||{};N.addEnum({key:501701,value:t.channelCount||0,useUV:!1}),N.addEnum({key:501702,value:t.sampleRate||0,useUV:!1}),N.addEnum({key:502700,value:0});let{sampleRate:r,channelCount:o}=t;this._log.info(`local audio track input ${JSON.stringify({sampleRate:r,channelCount:o})}`),this.pipeline.source.channelCount=o||1,this.pipeline.replaceSource(e),yield Le(s.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:t,useExactDeviceId:r=!0,retryWhenExactFailed:o=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:r,retryWhenExactFailed:o,customSource:t})}switchDevice(e){return f(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===cr){if(yield Fd(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),E.emit(T.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(t){throw this.log.error(`switch microphone failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}}})}listenDeviceChange(){ye&&!ye.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&ye.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),ue(this.userId,{eventId:2003,param1:6,streamType:1});let t=yield et();t[0]?this.recapture(t[0].deviceId):ye.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(o){return f(this,arguments,function*({echoCancellation:e,noiseSuppression:t,autoGainControl:r}){let n=!1;!g(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,n=!0),!g(t)&&t!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=t,n=!0),!g(r)&&r!==this.profile.autoGainControl&&(this.profile.autoGainControl=r,n=!0),n&&this.deviceId&&(yield this.recapture(this.deviceId))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&N.addEnum({key:502700,value:2}),this.resetPlayerSource()}enableTrackANS(e){if(!this._inputTrack)return;let t=this._inputTrack.getConstraints();return t.noiseSuppression=e,this._inputTrack.applyConstraints(t).catch(r=>this._log.warn(`${e?"enable":"disable"} ANS failed `,r))}addDenoiser(e){var t;if(Dt<=92&&((t=this.trackSettings)==null?void 0:t.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}N.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.resetPlayerSource(),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.resetPlayerSource(),this.enableTrackANS(!0))}resetPlayerSource(){this.player.setSourceNode(this.pipeline.gain.node||this.pipeline.denoiser.node||this.pipeline.source.node)}close(){this.pipeline.remove(),ye.off("audioInputAdded",this.handleMicrophoneAdded,this),ye.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield Le(s.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield et()).find(o=>o.deviceId!==e);if(r)yield Le(s.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((t,r)=>r?r({frame:t}):t,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var vi=class{constructor(i,e=!1){this.dataView=i;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,t=[],r=0;for(let n=i;n<=e;n++){let a=this.dataView.getInt8(n);switch(a){case 0:case 1:case 2:case 3:r===2&&(t.push(3),r=0),a==0?r++:r=0,t.push(a);break;default:r=0,t.push(a);break}}t.push(this.dataView.getInt8(this.dataView.byteLength-1));let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}removePreventionByte(){let i=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,t=[],r=0;for(let n=i;n<=e;n++)switch(this.dataView.getInt8(n)){case 0:r++,t.push(this.dataView.getInt8(n));break;case 3:r!==2&&t.push(this.dataView.getInt8(n)),r=0;break;default:t.push(this.dataView.getInt8(n)),r=0;break}let o=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,i),...t]).buffer);this.dataView=o}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let i=6;for(let e=6;e<this.dataView.buffer.byteLength&&(i++,this.dataView.getUint8(e)===255);e++);return i}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let i=0,e=6;for(let o=6;o<this.dataView.buffer.byteLength;o++){let n=this.dataView.getUint8(o);if(e++,n===255)i+=255;else{i+=n;break}}let t=new ArrayBuffer(i),r=new DataView(t);for(let o=0;o<t.byteLength;o++,e++)r.setInt8(o,this.dataView.getInt8(e));return r}};var fa=class{constructor(){c(this,"_seiMessageList",[]);c(this,"_smallSeiMessageList",[]);c(this,"_seiPayloadType",243)}encodeSEINalu(i){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,this._seiPayloadType);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new vi(new DataView(new Uint8Array(o).buffer),!0)}sendSEI(i,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(i),e!=null&&e.small&&this._smallSeiMessageList.push(i)}isEmpty(){return!this._seiMessageList.length}getNaluCount(i){let e=0,t=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:e++;break;case 1:(e===2||e===3)&&t++,e=0;break;default:e=0;break}return t}encode(i,e){let t=e?this._smallSeiMessageList:this._seiMessageList;if(t.length>0&&i.data.byteLength>0){let o=9-this.getNaluCount(i.data);if(o<=0)return 0;let n=t.splice(0,o).reverse().map(this.encodeSEINalu.bind(this)),a=n.reduce((p,_)=>p+_.dataView.byteLength,0),d=new ArrayBuffer(a+i.data.byteLength),l=new DataView(d),m=new DataView(i.data),u=0;for(let p=0;p<n.length;p++)for(let _=0;_<n[p].dataView.byteLength;_++)l.setInt8(u++,n[p].dataView.getInt8(_));for(let p=0;p<i.data.byteLength;p++)l.setInt8(u++,m.getInt8(p));return i.data=d,n.length}return 0}};var Rr=class Rr extends bi{constructor(e,t=4){super(t,at);c(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});c(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});c(this,"small");c(this,"isNeedToSetBandwidth");c(this,"muteImage");c(this,"manager");c(this,"_seiCodec",new fa);this.manager=e;let r=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(k(v({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",r),this.on("publish",r),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!qt||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return f(this,null,function*(){var t,r,o;if(K(e)){if(this.muteImage===e)return;yield(t=this.manager)==null?void 0:t.deleteWatermark("mute"),yield(r=this.manager)==null?void 0:r.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Le(Rr.prototype,this,"setMute").call(this,!1)}else yield(o=this.manager)==null?void 0:o.deleteWatermark("mute"),this.muteImage=void 0,Le(Rr.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:t,useExactDeviceId:r=!0,customSource:o,retryWhenExactFailed:n=!0}){return super.capture({audio:!1,video:!0,facingMode:t||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:r,retryWhenExactFailed:n,customSource:o})}setProfile(e){let t=v({},e),r=t.width>t.height;t.width*t.height<=160*120&&me&&vt&&(this.log.warn(`resolution is ${t.width}*${t.height}, fallback to 240*180`),t.width=r?240:180,t.height=r?180:240,t.bitrate=Math.max(t.bitrate,150)),t.width*t.height>1280*720&&jc&&(t.width=r?1280:720,t.height=r?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),t.bitrate&&(this.isNeedToSetBandwidth=t.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(t):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(k(v({},this.profile),{width:1920,height:1080})))}applyProfile(){return f(this,null,function*(){var r;if(!this.mediaTrack)return;let e=this.settings;if(!(!(e.height!==this.profile.height||e.width!==this.profile.width||e.frameRate!==this.profile.frameRate)||!this.deviceId)&&(ot===16?yield this.recapture(this.deviceId):(yield(r=this.mediaTrack)==null?void 0:r.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth))return this.isNeedToSetBandwidth=!1,this.room.setBandWidth({bandwidth:this.profile.bitrate,type:h.VIDEO,videoType:h.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return qt&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:Sn()&&this.profile.width>this.profile.height&&e.height>e.width?Math.max(e.width/this.profile.height,e.height/this.profile.width,1):Math.max(e.width/this.profile.width,e.height/this.profile.height,1)}isAllowed2k4k(e){var t;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((t=this.room.scheduleResult.trtcAutoConf)==null?void 0:t["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return f(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let t={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?t.facingMode=e:t.deviceId=e,this.mediaTrack.stop(),yield this.capture(t),E.emit(T.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(t){throw this.log.error(`switch camera failed ${t}`),this.deviceId&&this.recapture(this.deviceId),t}})}listenDeviceChange(){ye&&!ye.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&ye.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return f(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),ue(this.userId,{eventId:2003,param1:7,streamType:2});let t=yield dt();t[0]?this.recapture(t[0].deviceId):ye.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return f(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,t){if(!this.manager)return e;let r=t?8:this.mediaType;return this.manager.encodePipeline.reduceRight((o,n)=>n?n({frame:o,mediaType:r}):o,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,t){return g(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,t)}close(){ye.off("videoInputAdded",this.handleCameraAdded,this),ye.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return f(this,null,function*(){try{yield Le(Rr.prototype,this,"recapture").call(this,e)}catch(t){let r=(yield dt()).find(o=>o.deviceId!==e);if(r)yield Le(Rr.prototype,this,"recapture").call(this,r.deviceId);else throw t}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}};y([Je(function(e){this.setContentHint(e.contentHint||"motion")})],Rr.prototype,"capture",1);var Ve=Rr;var Yh=mo();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:Yh,exposeOrigin:!0,permittedOrigins:["*"]})}catch(s){}var I_=function(s){return f(this,null,function*(){let i=null,e=R_(s);C.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let t=yield navigator.mediaDevices.getDisplayMedia(e);s.systemAudio&&t.getAudioTracks().length===0&&(ns&&Dt<74||ze||ae)&&C.warn("Your browser not support capture system audio");let r=t.getVideoTracks()[0];if(r){if(s.frameRate)try{yield r.applyConstraints({frameRate:{min:s.frameRate,ideal:s.frameRate},width:s.width,height:s.height})}catch(o){C.warn(`screen applyConstraints failed: ${o}`)}s.captureElement&&(yield A_(r,s.captureElement))}if(s.audio){let o=C_(s);C.info(`getUserMedia with constraints: ${JSON.stringify(o)}`),i=yield navigator.mediaDevices.getUserMedia(o),t.addTrack(i.getAudioTracks()[0])}return t})};function A_(s,i){return f(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&se(s.cropTo))try{if(!(((e=s.getCaptureHandle())==null?void 0:e.handle)===Yh))return;let r=yield CropTarget.fromElement(i);yield s.cropTo(r)}catch(t){C.warn(`cropTo target failed ${t}`)}})}function C_(s){let i={echoCancellation:s.echoCancellation,autoGainControl:s.autoGainControl,noiseSuppression:s.noiseSuppression,sampleRate:s.sampleRate,channelCount:s.channelCount};return g(s.microphoneId)||(i.deviceId=s.microphoneId),{audio:i,video:!1}}function R_(s){let i={preferCurrentTab:s.preferDisplaySurface==="current-tab"||!!s.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:ze?{max:s.width}:{ideal:s.width,max:s.width},height:ze?{max:s.height}:{ideal:s.height,max:s.height},frameRate:s.frameRate,displaySurface:s.preferDisplaySurface||"monitor"};if(i.video=e,s.systemAudio){let{echoCancellation:t=!0,noiseSuppression:r=!1,autoGainControl:o=!1}=s;i.audio={echoCancellation:t,noiseSuppression:r,autoGainControl:o,sampleRate:48e3}}return i}var Kh=I_;var it=class extends Ve{constructor(e){super(e,2);c(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});c(this,"objectFit","contain");c(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(m){return f(this,arguments,function*({systemAudio:e=!1,autoGainControl:t,echoCancellation:r,noiseSuppression:o,audioTrack:n,videoTrack:a,captureElement:d,preferDisplaySurface:l}){try{let u;return a||n?(u=new MediaStream,a&&u.addTrack(a),n&&u.addTrack(n)):u=yield Kh({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:t,echoCancellation:r,noiseSuppression:o,captureElement:d,preferDisplaySurface:l}),yield this.setInputMediaStreamTrack(u.getVideoTracks()[0]),u}catch(u){throw this.log.error(`getDisplayMedia error observed ${u}`),u instanceof b?u:new b({code:S.INITIALIZE_FAILED,name:u.name,message:u.message})}})}switchDevice(e){return f(this,null,function*(){throw new Error("Method not implemented.")})}};y([Je(function(e){this.setContentHint(e.contentHint||"detail")})],it.prototype,"capture",1);var ti=class extends _t{constructor(i){super(i),this._log.id=`s-${this._log.id}`}};var y_="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",$d;function xo(s){return f(this,null,function*(){let i=Ze("dump");$d||($d=Ir(i,URL.createObjectURL(new Blob([y_],{type:"application/javascript"})))),yield $d;let e=new AudioWorkletNode(i,"dumper",{numberOfInputs:s.length,numberOfOutputs:0});return s.forEach((t,r)=>t.connect(e,0,r)),new ReadableStream({start(t){e.port.onmessage=r=>{t.enqueue(r.data)}},cancel(){s.forEach(t=>t.disconnect(e)),e.port.close()}})})}var _a=class extends ia{constructor(e){super();this.room=e;c(this,"_localAudioTrack");c(this,"_localScreenAudioTrack");c(this,"log",C.createLogger({id:"am"}));c(this,"denoiser");c(this,"mixChangedDebounce");c(this,"encodePipeline",[]);c(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId))}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var m,u;if(!this._localAudioTrack)return;let t=[],r=[];(m=this._localAudioPipline)!=null&&m.source.node&&(t.push(this._localAudioPipline.source.node),r.push("mic")),(u=this._localAudioPipline)!=null&&u.denoiser.node&&(t.push(this._localAudioPipline.denoiser.node),r.push("mic-processed")),this.mixWeight>1&&(t.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),r.push("mix")),this.log.info(`dump audio track ${r}, duration: ${e}`);let o=new AbortController,n=[],a=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),o.abort("timeout")},e*1e3),d=()=>{for(let p=0;p<r.length;p++){let _=URL.createObjectURL(new Blob(n[p])),I=document.createElement("a");I.href=_,I.download=`${r[p]}.pcm`,I.style.display="none",document.body.appendChild(I),I.click(),URL.revokeObjectURL(_),I.remove()}clearTimeout(a),o.abort("download")},l=xo(t).then(p=>p.pipeTo(new WritableStream({write(_){_.forEach((I,R)=>n[R]=n[R]?n[R].concat(I[0]):[I[0]])}}),o).catch(_=>d));return{then:l.then.bind(l),download:d}}getPCM(e){var n;if(g(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}if(!((n=this._localAudioPipline)!=null&&n.source.node)){this.log.warn("getPCM failed: no local audio track");return}this.log.warn("getPCM");let t=new Float32Array(1920),r=0,o=new AbortController;return xo([this._localAudioPipline.source.node]).then(a=>a.pipeTo(new WritableStream({write(d){d[0][0]&&(t.set(d[0][0],r),r+=d[0][0].length,r>=1920&&(r=0,e(t),t=new Float32Array(1920)))}}),o).catch(d=>this.log.warn(`stop getPCM reason:${d}`))),o}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!g(this._localAudioTrack)}changeInput(e){if(e instanceof ti)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof _t)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof Di)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,t;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(t=this._localScreenAudioTrack)==null?void 0:t.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof ti?delete this._localScreenAudioTrack:e instanceof _t?delete this._localAudioTrack:e instanceof Di}addDenoiser(e){var t;this.denoiser=e,(t=this._localAudioTrack)==null||t.addDenoiser(e)}removeDenoiser(e){var t;delete this.denoiser,(t=this._localAudioTrack)==null||t.removeDenoiser(e)}destroy(){this.close()}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};function ga(s=30,i=2){return J((e,t)=>function(...r){return new Promise((o,n)=>{let a=setTimeout(()=>{let d=new b({code:S.API_CALL_TIMEOUT,message:`checkPendingPromise ${t}() timeout ${s}s`});C.warn(d),i===2?n(d):i===1&&o()},s*1e3);e.apply(this,r).then(o,n).finally(()=>{clearTimeout(a)})})})}var Oi=class Oi extends Ar{constructor(e,t,r){super({userId:t.userId,sdkAppId:e.sdkAppId,mediaType:r,room:e});this.room=e;this.user=t;c(this,"tinyId");c(this,"isRemote",!0);c(this,"jitterBufferDelay",0);c(this,"_decodeCheckTimeoutId",-1);this.tinyId=t.tinyId}setMute(e){this.isAvailable&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isAvailable&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===Oi.STATE_SUBSCRIBE}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,t){let r=this.kind===h.AUDIO;N[e?"addSuccessEvent":"addFailedEvent"]({key:r?504700:514702}),e||(N.addEnum({key:r?504701:514703,value:ho()}),ee.uploadEvent({log:`stat-decode-failed-${this.kind}-${pr()||Ti()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===h.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:t}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isAvailable||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isAvailable} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.updatePlayingState(this.isAvailable)}onTrackMuted(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackMuted()}onTrackUnmuted(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackUnmuted()}onTrackEnded(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackEnded()}};c(Oi,"STATE_SUBSCRIBE","subscribe"),y([ga(5,1)],Oi.prototype,"waitHasMediaTrack",1),y([de(Q.INIT,Oi.STATE_SUBSCRIBE,{success(){var t,r;this.log.info("subscribed"),E.emit(T.REMOTE_TRACK_SUBSCRIBED,{track:this}),this.updatePlayingState(!0),!((((r=(t=this.room)==null?void 0:t.networkQuality)==null?void 0:r.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&(this._decodeCheckTimeoutId=setTimeout(()=>{var n,a;if(!((((a=(n=this.room)==null?void 0:n.networkQuality)==null?void 0:a.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived>0){let d=this.kind===h.AUDIO,l=this.player.isPlaying||(d?this.getAudioLevel()>0:this.stat.framesDecoded>0);this.reportDecodeResult(l)}},5e3),this.player.once(pe.ERROR,o=>{o.code===MediaError.MEDIA_ERR_DECODE&&(clearTimeout(this._decodeCheckTimeoutId),this.reportDecodeResult(!1,3))}))},ignoreError:!0}),tt(521716,!1)],Oi.prototype,"subscribe",1),y([de(Oi.STATE_SUBSCRIBE,Q.INIT,{sync:!0,success(){this.log.info("unsubscribed"),this.updatePlayingState(!1),E.emit(T.REMOTE_TRACK_UNSUBSCRIBED,{track:this}),clearTimeout(this._decodeCheckTimeoutId)}})],Oi.prototype,"unsubscribe",1);var _s=Oi;var Di=class extends _s{constructor(e,t){super(e,t,1);c(this,"volume",0);c(this,"mediaType",1);c(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}decodeFrame(e){if(!this.manager)return e;let t=e;for(let r of this.manager.decodePipeline)if(r&&(t=r({frame:t,track:this}),!t))return;return t}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isAvailable(){return this.user.muteState.audioAvailable}};var N_=[-1,-1,1,-1,-1,1,1,1],v_=[0,0,1,0,0,1,1,1];var qe=class extends Q{constructor(e,t){super();this.context=e;c(this,"name");c(this,"input");c(this,"output");c(this,"texture");c(this,"ctx2d",null);c(this,"fbo");c(this,"width",0);c(this,"height",0);c(this,"x",0);c(this,"y",0);c(this,"program");c(this,"vertexShader");c(this,"fragmentShader");c(this,"totalFrames",0);c(this,"dropFrames",0);c(this,"matchInputSize",!0);c(this,"texCoordBuffer");c(this,"positionBuffer");c(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});c(this,"cost",0);c(this,"_canvas",null);c(this,"_image");c(this,"log");if(this.context.on("disconnect",this.close,this),this.name=t.name,this.log=t.logger,this.matchInputSize=t.matchInputSize!==!1,this.width=t.width||e.width,this.height=t.height||e.height,this._image=t.image,e instanceof Be){e.ctx&&t.create2d&&(typeof OffscreenCanvas=="function"&&ot!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let r=e.ctx;this.texCoordBuffer=this.createBuffer(v_),this.positionBuffer=this.createBuffer(N_),t.createTexture!==!1&&(this.texture=r.createTexture(),this.useTexture(),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1)),t.useFbo&&(this.fbo=r.createFramebuffer(),this.useBufferFrame(),this.useTexture(),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,this.width,this.height,0,r.RGBA,r.UNSIGNED_BYTE,null),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,this.texture,0)),t.useDefaultProgram?this.program=e.defaultProgam:(t.vertexShaderSource||t.fragmentShaderSource)&&(this.vertexShader=t.vertexShaderSource?e.createShader(r.VERTEX_SHADER,t.vertexShaderSource):e.defaultVShader,this.fragmentShader=t.fragmentShaderSource?e.createShader(r.FRAGMENT_SHADER,t.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(r){this.context.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let t=this.context.ctx,r=t.createFramebuffer();return t.bindFramebuffer(t.FRAMEBUFFER,r),t.framebufferTexture2D(t.FRAMEBUFFER,t.COLOR_ATTACHMENT0,t.TEXTURE_2D,e,0),r}connect(e,...t){return e.addInput(this,...t),this.output=e,e}addInput(e,...t){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let t=Date.now();if(this.context instanceof De&&this.render(e)||this.context instanceof Be&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-t,!0}render2d(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var t;(t=this.output)==null||t.update(e)}disconnect(...e){var t;(t=this.output)==null||t.removeInput(this,...e),delete this.output}removeInput(e,...t){delete this.input}close(){var e,t;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(t=this.input)==null||t.disconnect(),this.context instanceof De){let r=this.context.ctx;r.deleteBuffer(this.texCoordBuffer),r.deleteBuffer(this.positionBuffer),this.fbo&&r.deleteFramebuffer(this.fbo),this.texture&&r.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&r.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&r.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&r.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let t=this.context.ctx;e.forEach((r,o)=>{r&&(t.activeTexture(t.TEXTURE0+o),t.bindTexture(t.TEXTURE_2D,r))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let t=this.context.ctx,r=t.createBuffer();return t.bindBuffer(t.ARRAY_BUFFER,r),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW),r}setTexBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.texCoordBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}setPosBuffer(e){let t=this.context.ctx;t.bindBuffer(t.ARRAY_BUFFER,this.positionBuffer),t.bufferData(t.ARRAY_BUFFER,new Float32Array(e),t.STATIC_DRAW)}changeBufferData(e,t){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,e),r.bufferData(r.ARRAY_BUFFER,new Float32Array(t),r.STATIC_DRAW)}setAttributes(...e){let t=this.context.ctx;e.forEach((r,o)=>{t.enableVertexAttribArray(o),t.bindBuffer(t.ARRAY_BUFFER,r),t.vertexAttribPointer(o,2,t.FLOAT,!1,0,0)})}getVertexPoint(e,t){return[e/this.width*2-1,t/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,t){if(!(this.width===e&&this.height===t)){if(this.width=e,this.height=t,this._canvas&&(this._canvas.width=e,this._canvas.height=t),this.texture&&this.fbo){this.useTexture();let r=this.context.ctx;r.texImage2D(r.TEXTURE_2D,0,r.RGBA,e,t,0,r.RGBA,r.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,t)}}draw(e,t){this.setAttributes(e||this.positionBuffer,t||this.texCoordBuffer);let r=this.context.ctx;r.drawArrays(r.TRIANGLE_STRIP,0,4)}draw2d(e,t,r,o,n){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,t,r):(this.ctx2d.drawImage(e,t,r,o,n),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var u;let{totalFrames:e,x:t,y:r,width:o,height:n,name:a,cost:d}=this,l=Date.now(),m=(e-this.lastInfo.totalFrames)/((l-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:l,fps:m,name:a,cost:d},v({parent:(u=this.input)==null?void 0:u.getInfo()},this.lastInfo)}createTexture(e){let t=this.context.ctx,r=t.createTexture();return this.useTextures(r),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MIN_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_MAG_FILTER,t.LINEAR),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_S,t.CLAMP_TO_EDGE),t.texParameteri(t.TEXTURE_2D,t.TEXTURE_WRAP_T,t.CLAMP_TO_EDGE),t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,e),r}};y([de(Q.INIT,"connected",{sync:!0})],qe.prototype,"connect",1),y([de("connected",Q.INIT,{ignoreError:!0,sync:!0})],qe.prototype,"disconnect",1),y([de([],"closed",{sync:!0})],qe.prototype,"close",1);var Nl={};ni(Nl,{Events:()=>fe,Inspect:()=>gt,LastSink:()=>yr,Sink:()=>F,Subscribe:()=>br,TimeoutError:()=>Uo,audit:()=>ug,bindCallback:()=>z_,bindNodeCallback:()=>Y_,buffer:()=>B_,bufferCount:()=>V_,bufferTime:()=>Og,call:()=>em,catchError:()=>Bo,combineLatest:()=>im,concat:()=>L_,concatMap:()=>Ag,concatMapTo:()=>Cg,count:()=>eg,create:()=>Z,debounce:()=>hg,debounceTime:()=>mg,defer:()=>rm,delay:()=>Mg,deliver:()=>$,dispose:()=>Ta,elementAt:()=>pg,empty:()=>vr,every:()=>Eg,exhaustMap:()=>bg,exhaustMapTo:()=>Ng,filter:()=>Ca,find:()=>fg,findIndex:()=>_g,first:()=>gg,fromAnimationFrame:()=>X_,fromArray:()=>$_,fromEvent:()=>Ie,fromEventPattern:()=>G_,fromFetch:()=>W_,fromIterable:()=>J_,fromPromise:()=>nm,fromReadableStream:()=>j_,fromReader:()=>q_,groupBy:()=>vg,identity:()=>D_,ignoreElements:()=>sg,iif:()=>w_,inspect:()=>tm,interval:()=>Xd,last:()=>Tg,map:()=>Cl,mapTo:()=>Ig,max:()=>tg,merge:()=>M_,mergeMap:()=>Rg,mergeMapTo:()=>yg,min:()=>ig,never:()=>K_,nothing:()=>oe,of:()=>H_,pairwise:()=>Sg,pipe:()=>_e,race:()=>k_,range:()=>Q_,reduce:()=>zd,retry:()=>wg,scan:()=>Al,share:()=>Mi,shareReplay:()=>P_,skip:()=>ng,skipUntil:()=>ag,skipWhile:()=>Ra,startWith:()=>Nr,subject:()=>rt,subscribe:()=>be,sum:()=>rg,switchMap:()=>er,switchMapTo:()=>Vo,take:()=>ki,takeLast:()=>og,takeUntil:()=>Pe,takeWhile:()=>am,tap:()=>bl,throttle:()=>dg,throwError:()=>Z_,timeInterval:()=>Dg,timeout:()=>Pg,timer:()=>Qd,toPromise:()=>kg,toReadableStream:()=>Lg,withLatestFrom:()=>U_,zip:()=>x_});function oe(...s){}var em=s=>s(),D_=s=>s;function Ta(){this.dispose()}var tm=()=>typeof __FASTRX_DEVTOOLS__!="undefined",O_=1,gt=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(i){let e=new Wd(i,this,this.streamId++);return fe.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},yr=class{constructor(){this.defers=new Set,this.disposed=!1}next(i){}complete(){this.dispose()}error(i){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=oe,this.error=oe,this.next=oe,this.dispose=oe,this.subscribe=oe,this.doDefer()}subscribe(i){return i instanceof gt?i.subscribe(this):i(this),this}get bindSubscribe(){return i=>this.subscribe(i)}doDefer(){this.defers.forEach(em),this.defers.clear()}defer(i){this.defers.add(i)}removeDefer(i){this.defers.delete(i)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},F=class extends yr{constructor(i){super(),this.sink=i,i.defer(this.bindDispose)}next(i){this.sink.next(i)}complete(){this.sink.complete()}error(i){this.sink.error(i)}},br=class extends yr{constructor(i,e=oe,t=oe,r=oe){if(super(),this._next=e,this._error=t,this._complete=r,this.then=oe,i instanceof gt){let o={toString:()=>"subscribe",id:0,source:i};this.defer(()=>{fe.defer(o,0)}),fe.create(o),fe.pipe(o),this.sourceId=o.id,this.subscribe(i),fe.subscribe({id:o.id,end:!0}),e==oe?this._next=n=>fe.next(o,0,n):this.next=n=>{fe.next(o,0,n),e(n)},r==oe?this._complete=()=>fe.complete(o,0):this.complete=()=>{this.dispose(),fe.complete(o,0),r()},t==oe?this._error=n=>fe.complete(o,0,n):this.error=n=>{this.dispose(),fe.complete(o,0,n),t()}}else this.subscribe(i)}next(i){this._next(i)}complete(){this.dispose(),this._complete()}error(i){this.dispose(),this._error(i)}};function _e(s,...i){return i.reduce((e,t)=>t(e),s)}function Z(s,i,e){if(tm()){let t=Object.defineProperties(Object.setPrototypeOf(s,gt.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:i,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});fe.create(t);for(let r=0;r<e.length;r++){let o=e[r];typeof o=="function"&&o instanceof gt&&fe.addSource(t,o)}return t}return s}function $(s,i){return function(...e){return t=>{if(t instanceof gt){let r=Z(o=>{let n=new s(o,...e);n.sourceId=r.id,n.subscribe(t)},i,arguments);return r.source=t,fe.pipe(r),r}else return r=>t(new s(r,...e))}}}function Zi(s,i){window.postMessage({source:"fastrx-devtools-backend",payload:{event:s,payload:i}})}var Wd=class extends F{constructor(i,e,t){super(i),this.source=e,this.id=t,this.sourceId=i.sourceId,this.defer(()=>{fe.defer(this.source,this.id)})}next(i){fe.next(this.source,this.id,i),this.sink.next(i)}complete(){fe.complete(this.source,this.id),this.sink.complete()}error(i){fe.complete(this.source,this.id,i),this.sink.error(i)}},fe={addSource(s,i){Zi("addSource",{id:s.id,name:s.toString(),source:{id:i.id,name:i.toString()}})},next(s,i,e){Zi("next",{id:s.id,streamId:i,data:e&&e.toString()})},subscribe({id:s,end:i},e){Zi("subscribe",{id:s,end:i,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(s,i,e){Zi("complete",{id:s.id,streamId:i,err:e?e.toString():null})},defer(s,i){Zi("defer",{id:s.id,streamId:i})},pipe(s){Zi("pipe",{name:s.toString(),id:s.id,source:{id:s.source.id,name:s.source.toString()}})},update(s){Zi("update",{id:s.id,name:s.toString()})},create(s){s.id||(s.id=O_++),Zi("create",{name:s.toString(),id:s.id})}},Uo=class extends Error{constructor(i){super(`timeout after ${i}ms`),this.timeout=i}};var Ea=class extends yr{constructor(i){super(),this.source=i,this.sinks=new Set}add(i){i.defer(()=>this.remove(i)),this.sinks.add(i).size===1&&(this.reset(),this.subscribe(this.source))}remove(i){this.sinks.delete(i),this.sinks.size===0&&this.dispose()}next(i){this.sinks.forEach(e=>e.next(i))}complete(){this.sinks.forEach(i=>i.complete()),this.sinks.clear()}error(i){this.sinks.forEach(e=>e.error(i)),this.sinks.clear()}};function Mi(){return s=>{let i=new Ea(s);if(s instanceof gt){let e=Z(t=>{i.add(t)},"share",arguments);return i.sourceId=e.id,e.source=s,fe.pipe(e),e}return Z(i.add.bind(i),"share",arguments)}}function M_(...s){return Z(i=>{let e=new F(i),t=s.length;e.complete=()=>{--t===0&&i.complete()},s.forEach(e.bindSubscribe)},"merge",arguments)}function k_(...s){return Z(i=>{let e=new Map;s.forEach(t=>{let r=new F(i);e.set(t,r),r.complete=()=>{e.delete(t),e.size===0?i.complete():r.dispose()},r.next=o=>{e.delete(t),e.forEach(n=>n.dispose()),r.resetNext(),r.resetComplete(),r.next(o)}}),s.forEach(t=>e.get(t).subscribe(t))},"race",arguments)}function L_(...s){return Z(i=>{let e=0,t=s.length,r=new F(i);r.complete=()=>{e<t&&!r.disposed?(r.doDefer(),r.subscribe(s[e++])):i.complete()},r.complete()},"concat",arguments)}function P_(s){return i=>{let e=new Ea(i),t=[];return e.next=function(r){t.push(r),t.length>s&&t.shift(),this.sinks.forEach(o=>o.next(r))},Z(r=>{r.defer(()=>e.remove(r)),t.forEach(o=>r.next(o)),e.add(r)},"shareReplay",arguments)}}function w_(s,i,e){return Z(t=>s()?i(t):e(t),"iif",arguments)}function im(...s){return Z(i=>{let e=s.length,t=e,r=e,o=new Array(e),n=()=>{--r===0&&i.complete()},a=(d,l)=>{let m=new F(i);m.next=u=>{--t===0?(m.next=p=>{o[l]=p,i.next(o)},m.next(u)):o[l]=u},m.complete=n,m.subscribe(d)};s.forEach(a)},"combineLatest",arguments)}function x_(...s){return Z(i=>{let e=s.length,t=e,r=new Array(e),o=()=>{--t===0&&i.complete()},n=(a,d)=>{let l=new F(i),m=[];r[d]=m,l.next=u=>{m.push(u),r.every(p=>p.length)&&i.next(r.map(p=>p.shift()))},l.complete=o,l.subscribe(a)};s.forEach(n)},"zip",arguments)}function Nr(...s){return i=>Z((e,t=0,r=s.length)=>{for(;t<r&&!e.disposed;)e.next(s[t++]);e.disposed||e.subscribe(i)},"startWith",arguments)}var Jd=class extends F{constructor(i,...e){super(i);let t=new F(this.sink);t.next=r=>this.buffer=r,t.complete=oe,t.subscribe(im(...e))}next(i){this.buffer&&this.sink.next([i,...this.buffer])}},U_=$(Jd,"withLatestFrom"),qd=class extends F{constructor(i,e,t){super(i),this.bufferSize=e,this.startBufferEvery=t,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(i){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(i)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(i),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(i=>this.sink.next(i)),super.complete()}},V_=$(qd,"bufferCount"),jd=class extends F{constructor(i,e){super(i),this.buffer=[];let t=new F(i);t.next=r=>{i.next(this.buffer),this.buffer=[]},t.complete=oe,t.subscribe(e)}next(i){this.buffer.push(i)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},B_=$(jd,"buffer");var F_=function(s,i,e,t){function r(o){return o instanceof e?o:new e(function(n){n(o)})}return new(e||(e=Promise))(function(o,n){function a(m){try{l(t.next(m))}catch(u){n(u)}}function d(m){try{l(t.throw(m))}catch(u){n(u)}}function l(m){m.done?o(m.value):r(m.value).then(a,d)}l((t=t.apply(s,i||[])).next())})};function rt(s){let i=arguments,e=Mi()(Z(t=>{e.next=r=>t.next(r),e.complete=()=>t.complete(),e.error=r=>t.error(r),s&&t.subscribe(s)},"subject",i));return e.next=oe,e.complete=oe,e.error=oe,e}function rm(s){return Z(i=>i.subscribe(s()),"defer",arguments)}var sm=s=>i=>{setTimeout(()=>s(i))},om=s=>sm(i=>{for(let e=0;!i.disposed&&e<s.length;e++)i.next(s[e]);i.complete()});function H_(...s){return Z(om(s),"of",arguments)}function $_(s){return Z(om(s),"fromArray",arguments)}function Xd(s){return Z(i=>{let e=0,t=setInterval(()=>i.next(e++),s);return i.defer(()=>{clearInterval(t)}),"interval"},"interval",arguments)}function Qd(s,i){return Z(e=>{let t=0,r=setTimeout(()=>{if(e.removeDefer(o),e.next(t++),i){let n=setInterval(()=>e.next(t++),i);e.defer(()=>{clearInterval(n)})}else e.complete()},s),o=()=>{clearTimeout(r)};e.defer(o)},"timer",arguments)}function Sa(s,i){return e=>{let t=r=>e.next(r);e.defer(()=>i(t)),s(t)}}function G_(s,i){return Z(Sa(s,i),"fromEventPattern",arguments)}function Ie(s,i){if("on"in s&&"off"in s)return Z(Sa(e=>s.on(i,e),e=>s.off(i,e)),"fromEvent",arguments);if("addListener"in s&&"removeListener"in s)return Z(Sa(e=>s.addListener(i,e),e=>s.removeListener(i,e)),"fromEvent",arguments);if("addEventListener"in s)return Z(Sa(e=>s.addEventListener(i,e),e=>s.removeEventListener(i,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function nm(s){return Z(i=>{s.then(i.next.bind(i),i.error.bind(i))},"fromPromise",arguments)}function W_(s,i){return Z(rm(()=>nm(fetch(s,i))),"fromFetch",arguments)}function J_(s){return Z(sm(i=>{try{for(let e of s){if(i.disposed)return;i.next(e)}i.complete()}catch(e){i.error(e)}}),"fromIterable",arguments)}function q_(s){let i=e=>F_(this,void 0,void 0,function*(){if(e.disposed)return;let{done:t,value:r}=yield s.read();if(t){e.complete();return}else e.next(r),i(e)});return Z(e=>{i(e)},"fromReader",arguments)}function j_(s){return Z(i=>{let e=new AbortController,t=e.signal;i.defer(()=>e.abort("cancelled")),s.pipeTo(new WritableStream({write(r){i.next(r)},close(){i.complete()},abort(r){i.error(r)}}),{signal:t}).then(()=>i.complete(),r=>i.error(r))},"fromReadableStream",arguments)}function X_(){return Z(s=>{let i=requestAnimationFrame(function e(t){s.disposed||(s.next(t),i=requestAnimationFrame(e))});s.defer(()=>cancelAnimationFrame(i))},"fromAnimationFrame",arguments)}function Q_(s,i){return Z((e,t=s,r=i+s)=>{for(;t<r&&!e.disposed;)e.next(t++);return e.complete(),"range"},"range",arguments)}function z_(s,i,...e){return Z(t=>{let r=e.concat(o=>(t.next(o),t.complete()));s.apply(i,r)},"bindCallback",arguments)}function Y_(s,i,...e){return Z(t=>{let r=e.concat((o,n)=>o?t.error(o):(t.next(n),t.complete()));s.apply(i,r)},"bindNodeCallback",arguments)}function K_(){return Z(()=>{},"never",arguments)}function Z_(s){return Z(i=>i.error(s),"throwError",arguments)}function vr(){return Z(s=>s.complete(),"empty",arguments)}var Dr=class extends F{constructor(i,e,t){super(i),this.f=e;let r=()=>{this.sink.next(this.acc),this.sink.complete()};typeof t=="undefined"?this.next=o=>{this.acc=o,this.complete=r,this.resetNext()}:(this.acc=t,this.complete=r)}next(i){this.acc=this.f(this.acc,i)}},zd=$(Dr,"reduce"),eg=s=>$(Dr,"count")((i,e)=>s(e)?i+1:i,0),tg=()=>$(Dr,"max")(Math.max),ig=()=>$(Dr,"min")(Math.min),rg=()=>$(Dr,"sum")((s,i)=>s+i,0);var Yd=class extends F{constructor(i,e,t){super(i),this.filter=e,this.thisArg=t}next(i){this.filter.call(this.thisArg,i)&&this.sink.next(i)}},Ca=$(Yd,"filter"),Kd=class extends F{next(i){}},sg=$(Kd,"ignoreElements"),Zd=class extends F{constructor(i,e){super(i),this.count=e}next(i){this.sink.next(i),--this.count===0&&this.complete()}},ki=$(Zd,"take"),el=class extends F{constructor(i,e){super(i);let t=new F(i);t.next=()=>i.complete(),t.complete=Ta,t.subscribe(e)}},Pe=$(el,"takeUntil"),tl=class extends F{constructor(i,e){super(i),this.f=e}next(i){this.f(i)?this.sink.next(i):this.complete()}},am=$(tl,"takeWhile"),og=s=>zd((i,e)=>(i.push(e),i.length>s&&i.shift(),i),[]),il=class extends F{constructor(i,e){super(i),this.count=e}next(i){--this.count===0&&(this.next=super.next)}},ng=$(il,"skip"),rl=class extends F{constructor(i,e){super(i),i.next=oe;let t=new F(i);t.next=()=>{t.dispose(),i.resetNext()},t.complete=Ta,t.subscribe(e)}},ag=$(rl,"skipUntil"),sl=class extends F{constructor(i,e){super(i),this.f=e}next(i){this.f(i)||(this.next=super.next,this.next(i))}},Ra=$(sl,"skipWhile"),cg={leading:!0,trailing:!1},ol=class extends F{constructor(i,e,t){super(i),this.durationSelector=e,this.trailing=t}cacheValue(i){this.last=i,this.disposed&&this.throttle(i)}send(i){this.sink.next(i),this.throttle(i)}throttle(i){this.reset(),this.subscribe(this.durationSelector(i))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},Ia=class extends F{constructor(i,e,t=cg){super(i),this.durationSelector=e,this.config=t,this._throttle=new ol(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(i){this._throttle.disposed&&this.config.leading?this._throttle.send(i):this._throttle.cacheValue(i)}complete(){this._throttle.throttle=oe,this._throttle.complete(),super.complete()}},dg=$(Ia,"throttle"),lg={leading:!1,trailing:!0},ug=s=>$(Ia,"audit")(s,lg),nl=class extends F{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},Aa=class extends F{constructor(i,e){super(i),this.durationSelector=e,this._debounce=new nl(this.sink),this._debounce.dispose()}next(i){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=i,this._debounce.subscribe(this.durationSelector(i))}complete(){this._debounce.complete(),super.complete()}},hg=$(Aa,"debounce"),mg=s=>$(Aa,"debounceTime")(i=>Qd(s)),al=class extends F{constructor(i,e,t){super(i),this.count=e,this.defaultValue=t}next(i){this.count--===0&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},pg=$(al,"elementAt"),fg=s=>i=>ki(1)(Ra(e=>!s(e))(i)),cl=class extends F{constructor(i,e){super(i),this.f=e,this.i=0}next(i){this.f(i)?(this.sink.next(this.i++),this.complete()):++this.i}},_g=$(cl,"findIndex"),dl=class extends F{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},gg=$(dl,"first"),ll=class extends F{constructor(i,e,t){super(i),this.f=e,this.defaultValue=t,this.index=0}next(i){(!this.f||this.f(i,this.index++))&&(this.defaultValue=i)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},Tg=$(ll,"last"),ul=class extends F{constructor(i,e){super(i),this.predicate=e,this.index=0}next(i){this.predicate(i,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},Eg=$(ul,"every");var hl=class extends F{constructor(i,e,t){super(i),this.f=e,typeof t=="undefined"?this.next=r=>{this.acc=r,this.resetNext(),this.sink.next(this.acc)}:this.acc=t}next(i){this.sink.next(this.acc=this.f(this.acc,i))}},Al=$(hl,"scan"),ml=class extends F{constructor(){super(...arguments),this.hasLast=!1}next(i){this.hasLast?this.sink.next([this.last,i]):this.hasLast=!0,this.last=i}},Sg=$(ml,"pairwise"),ya=class extends F{constructor(i,e,t){super(i),this.mapper=e,this.thisArg=t}next(i){super.next(this.mapper.call(this.thisArg,i))}},Cl=$(ya,"map"),Ig=s=>$(ya,"mapTo")(i=>s),gs=class extends F{constructor(i,e,t){super(i),this.data=e,this.context=t}next(i){let e=this.context.combineResults;e?this.sink.next(e(this.data,i)):this.sink.next(i)}tryComplete(){this.context.resetComplete(),this.dispose()}},Ts=class extends F{constructor(i,e,t){super(i),this.makeSource=e,this.combineResults=t,this.index=0}subInner(i,e){let t=this.currentSink=new e(this.sink,i,this);this.complete=this.tryComplete,t.complete=t.tryComplete,t.subscribe(this.makeSource(i,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},ba=class extends gs{},Na=class extends Ts{next(i){this.subInner(i,ba),this.next=e=>{this.currentSink.dispose(),this.subInner(e,ba)}}},er=$(Na,"switchMap");function Ma(s){return(i,e)=>s(()=>i,e)}var Vo=Ma($(Na,"switchMapTo")),pl=class extends gs{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},va=class extends Ts{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(i){this.next2(i),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),pl),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},Ag=$(va,"concatMap"),Cg=Ma($(va,"concatMapTo")),fl=class extends gs{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Da=class extends Ts{constructor(){super(...arguments),this.inners=new Set}next(i){this.subInner(i,fl),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(i=>i.resetComplete()):this.dispose()}},Rg=$(Da,"mergeMap"),yg=Ma($(Da,"mergeMapTo")),_l=class extends gs{dispose(){this.context.resetNext(),super.dispose()}},Oa=class extends Ts{next(i){this.next=oe,this.subInner(i,_l)}},bg=$(Oa,"exhaustMap"),Ng=Ma($(Oa,"exhaustMapTo")),gl=class extends F{constructor(i,e){super(i),this.f=e,this.groups=new Map}next(i){let e=this.f(i),t=this.groups.get(e);typeof t=="undefined"&&(t=rt(),t.key=e,this.groups.set(e,t),super.next(t)),t.next(i)}complete(){this.groups.forEach(i=>i.complete()),super.complete()}error(i){this.groups.forEach(e=>e.error(i)),super.error(i)}},vg=$(gl,"groupBy"),Tl=class extends F{constructor(){super(...arguments),this.start=new Date}next(i){this.sink.next({value:i,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},Dg=$(Tl,"timeInterval"),El=class extends F{constructor(i,e){super(i),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(i){this.buffer.push(i)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},Og=$(El,"bufferTime"),Sl=class extends F{constructor(i,e){super(i),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(i){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:t,data:r}=e;super.next(r),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(t))}},i)}next(i){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:i})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},Mg=$(Sl,"delay"),Il=class extends F{constructor(i,e){super(i),this.selector=e}error(i){this.dispose(),this.selector(i)(this.sink)}},Bo=$(Il,"catchError");var kg=()=>s=>new Promise((i,e)=>{let t;new br(s,r=>t=r,e,()=>i(t))}),Lg=()=>s=>{let i;return new ReadableStream({start(e){i=new br(s,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){i.dispose()}})},be=(s=oe,i=oe,e=oe)=>t=>new br(t,s,i,e),Rl=class extends F{constructor(i,e){super(i),e instanceof Function?this.next=t=>{e(t),i.next(t)}:(e.next&&(this.next=t=>{e.next(t),i.next(t)}),e.complete&&(this.complete=()=>{e.complete(),i.complete()}),e.error&&(this.error=t=>{e.error(t),i.error(t)}))}},bl=$(Rl,"tap"),yl=class extends F{constructor(i,e){super(i),this.timeout=e,this.id=setTimeout(()=>this.error(new Uo(this.timeout)),this.timeout)}next(i){super.next(i),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Pg=$(yl,"timeout"),wg=(s=1/0)=>i=>{if(i instanceof gt){let e=Z(t=>{let r=s,o=new F(t);o.error=n=>{r-- >0?o.subscribe(i):t.error(n)},o.sourceId=e.id,o.subscribe(i)},"retry",[s]);return e.source=i,fe.pipe(e),e}else return e=>{let t=s,r=new F(e);r.error=o=>{t-- >0?i(r):e.error(o)},i(r)}};var xg=_e(Xd(250),Cl(()=>performance.now()),Mi());var cm=s=>i=>{let e=performance.now();_e(xg,Ra(t=>t-e<s),ki(1))(i)};var Vg=[0,1,1,1,0,0,1,0],Or=class extends qe{constructor(e,t){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},t));c(this,"_intervalId",0);c(this,"_sequence",0);c(this,"checkGLError",!1);c(this,"checkVisibilityChange");e instanceof Be?this.ctx2d=e.ctx||null:e.available&&(t!=null&&t.mirrorUpAndDown)&&this.setTexBuffer(Vg)}start(e){this.log.info(`${this.name} start render ${e} fps`),re.clearTask(this._intervalId),this._intervalId=re.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(re.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof De){let r=this.context.ctx.getError();r&&this.context.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${r}`}))}},{fps:this.context.frameRate})}render(e){var t;return(t=this.input)!=null&&t.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...t){super.addInput(e,...t),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(re.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let t=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",t))};document.addEventListener("visibilitychange",t)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),re.clearTask(this._intervalId)}resize(e,t){super.resize(e,t),this.context.setSize(e,t)}close(){super.close(),re.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Es=class extends Or{constructor(e,t){super(e,t);c(this,"_videoTrack");c(this,"_muteOb");c(this,"_closedOb",Ie(this,"closed"));c(this,"_subscription");c(this,"_canvasContainer");Number(qi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=Ie(this._videoTrack,"mute"),_e(Ie(this._videoTrack,"ended"),Pe(this._closedOb),be(()=>{this.context.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=_e(this._muteOb,Pe(this._closedOb),Vo(cm(5e3)),be(()=>{var e;(e=this._videoTrack)!=null&&e.muted&&this.context.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,t;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(t=this._canvasContainer)==null||t.remove()}},ka=class extends Es{render(i){var e;return!!((e=this.input)!=null&&e.requestFrame(i))}};var La=class extends Es{constructor(e,t,r){super(e,{name:"smallDestination",logger:r});this.resolution=t}resize(e,t){let r,o=e*t,n=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${t} small res: ${this.resolution.width}*${this.resolution.height} `),o>n?r=o/n:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${t} small: ${this.resolution.width} * ${this.resolution.height}`),r=o/(160*120)),super.resize(e/Math.sqrt(r),t/Math.sqrt(r))}};var Fo=class extends qe{constructor(e,t){super(e,v({name:"imageSource"},t));c(this,"_lastImage");c(this,"_totalFrames",0);c(this,"_autoResize",!1);c(this,"_canvasRendered");c(this,"_videoCallbackId",0);this._autoResize=(t==null?void 0:t.autoResize)!==!1,ot===16&&(this._canvasRendered=rt(),_e(this._canvasRendered,Nr(this._image),er(r=>r instanceof HTMLCanvasElement?Ie(r,"rendered"):vr()),Pe(Ie(this,"closed")),be(()=>{this.update()})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Sr()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((t,r)=>{document.hidden||(this._totalFrames=r.presentedFrames,this.update(1))}))}_render(e,t){var a;let{width:r,height:o}=this,{image:n}=this;if(n instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(n),{videoWidth:r,videoHeight:o}=n,!r||!o)return!1;n.width=r,n.height=o}else if(n instanceof HTMLImageElement||n instanceof ImageData||n instanceof ImageBitmap){if({width:r,height:o}=n,n!==this._lastImage)this._lastImage=n;else if(r===this.width&&o===this.height)return!1}else n instanceof HTMLCanvasElement||n instanceof OffscreenCanvas?({width:r,height:o}=n,this._lastImage=n):typeof VideoFrame!="undefined"&&n instanceof VideoFrame&&({displayWidth:r,displayHeight:o}=n,(a=this._lastImage)==null||a.close(),this._lastImage=n);if(!this._autoResize)return!0;if(this.width===r&&this.height===o&&this.totalFrames){if(t){this.useTexture();let d=this.context.ctx;d.texSubImage2D(d.TEXTURE_2D,0,0,0,d.RGBA,d.UNSIGNED_BYTE,n)}}else{if(t){this.useTexture();let d=this.context.ctx;d.texImage2D(d.TEXTURE_2D,0,d.RGBA,d.RGBA,d.UNSIGNED_BYTE,n)}this.resize(r,o)}return!0}get image(){return this._image}set image(e){var t;(t=this._canvasRendered)==null||t.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Ho=class extends Fo{constructor(e,t,r){super(e,r);this._player=t;this.name="videoPlayerSource",_e(Ie(this._player,pe.PLAYER_STATE_CHANGED),Pe(Ie(this,"closed")),Ca(({state:o})=>o==="PLAYING"),be(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},Li=class extends Ho{constructor(i,e,t){super(i,new at({id:t.name,track:e,muted:!0,container:null,objectFit:"contain",log:t.logger}),t),this.name="videoTrackSource",this._player.play()}replaceTrack(i){this._player.setTrack(i),this._player.play()}close(){super.close(),this._player.stop()}};var Fg=`
29
+ `,r.onclick=this.onQuestionClick.bind(this);let o=document.createElement("div");o.className=Gm,o.innerText=`${hr()?"\u8BE6\u60C5 >":"Detail >"}`,o.onclick=this.onCollapseClick.bind(this);let s=t.content.firstChild,a=s.querySelector(`.${Cd}`);return a.appendChild(o),a.appendChild(r),a.appendChild(e),s}addDiaLog(){Jm()||(this._dialogNode=this.createDiaLog(),document.body.appendChild(this._dialogNode),this._dialogNode.onclick=this.onConfirm.bind(this),this._dialogNode.querySelector(`.${Ms}`).onclick=t=>t.stopPropagation(),this._bodyPosition=document.body.style.position,document.body.style.position="fixed",U.info("show autoplay dialog"),Ve.uploadEvent({log:xT}))}deleteDiaLog(){this._dialogNode&&(document.body.removeChild(this._dialogNode),document.body.style.position=this._bodyPosition,this._dialogNode=null)}onConfirm(){U.warn("confirm clicked, try resume stream"),F.emit(P.AUTOPLAY_DIALOG_CLICK_CONFIRM),this.deleteDiaLog()}onCollapseClick(){let t=this._dialogNode.querySelector(`.${Qf}`);t.style.visibility=`${this._showDetail?"hidden":"visible"}`,t.style.height=`${this._showDetail?0:"fit-content"}`,this._showDetail=!this._showDetail,this._isCollapseClicked||Ve.uploadEvent({log:kT}),this._isCollapseClicked=!0}onQuestionClick(){window.open(e_,"_blank"),this._isQuestionClicked||Ve.uploadEvent({log:LT}),this._isQuestionClicked=!0}},t_=jm;var Zt=class extends Ur{constructor(e){super(e,D.VIDEO);l(this,"stat",{});l(this,"_calculateTimeout",-1);l(this,"viewMirror",!1);l(this,"objectFit");l(this,"container");l(this,"canvas");l(this,"canvasTrack");this.mode=e.canvas?1:0,this.container=e.container,this.canvas=e.canvas,L(e.viewMirror)||(this.viewMirror=e.viewMirror),L(e.objectFit)||(this.objectFit=e.objectFit),this.initializeElement()}initializeElement(){var r;let e=document.createElement(D.VIDEO);this.track&&this.mode!==2&&(e.srcObject=new MediaStream([this.track])),e.muted=!0,e.setAttribute("id",`video_${this.id}`),e.setAttribute("style",this.styleAttribute),this.canvas&&this.canvas.setAttribute("style",this.styleAttribute),e.setAttribute("autoplay","autoplay"),e.setAttribute("playsinline","playsinline"),this.element=e,(r=this.container)==null||r.appendChild(this.elementToRender),this.bindElementEvents(),this.calculateStat()}get styleAttribute(){let e=`width: 100%; height: 100%; object-fit: ${this.objectFit};background-color: black;`;return this.viewMirror&&(e+="transform: scaleX(-1);"),e}setContainer(e){var r;this.container=e,(this.track||this.canvasTrack)&&this.elementToRender&&((r=this.container)==null||r.appendChild(this.elementToRender))}bindElementEvents(){let e=super.bindElementEvents();this.handleElementEvent=this.handleElementEvent.bind(this),e&&e.add(D.ENTER_PICTURE_IN_PICTURE,this.handleElementEvent).add(D.LEAVE_PICTURE_IN_PICTURE,this.handleElementEvent)}handleTrackEvent(e){var r;super.handleTrackEvent(e),e.type===D.MUTE&&((r=this.stat)!=null&&r.fps)&&(this.stat.fps=0)}handleElementEvent(e){var o;if(this.mode===2)return;super.handleElementEvent(e);let r=e.type;if(r===D.PAUSE&&(this.container&&document.getElementById(this.container.id)||this._log.warn(`${this.kind} player has been remove, element ID: ${(o=this.container)==null?void 0:o.id}`),this._pausedRetryCount>0&&!Jm()&&(this._log.info(`${this.kind} player auto resume when paused`),this.resume(),this._pausedRetryCount--),this.stat.fps&&(this.stat.fps=0)),this.viewMirror&&this.element){let s=this.element.style.transform;r===D.ENTER_PICTURE_IN_PICTURE?this.element.style.transform=s.replace("scaleX(-1)",""):r===D.LEAVE_PICTURE_IN_PICTURE&&!s.includes("scaleX")&&(this.element.style.transform=`${s} scaleX(-1)`)}}setCanvas(e,r=1){var o,s,a,d;this.canvas!==e&&((o=this.canvas)==null||o.remove(),e==null||e.setAttribute("style",this.styleAttribute),this.canvas=e,this.mode=e?r:0,this.mode===2&&this.setTrack(e.captureStream().getVideoTracks()[0]),e?((s=this.element)==null||s.remove(),(a=this.container)==null||a.appendChild(e)):this.element&&((d=this.container)==null||d.appendChild(this.element)))}setAttr(e){let r=Object.assign({autoplay:"autoplay",playsinline:"playsinline",muted:!0},e);r.style=Object.assign({width:"100%",height:"100%"},r.style),super.setAttr(r)}get mirror(){return this.viewMirror}setRect(e,r){this.elementToRender&&(this.elementToRender.style.width=`${e}px`,this.elementToRender.style.height=`${r}px`)}setViewMirror(e){this.elementToRender&&(this.elementToRender.style.transform=e?"scaleX(-1)":""),this.viewMirror=e}setObjectFit(e){this.elementToRender&&(this.elementToRender.style.objectFit=`${e}`),this.objectFit=e}stop(e=0){var r;super.stop(e),(r=this.canvas)==null||r.remove()}play(){return this.element?this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender):this.initializeElement(),this.mode===2?Promise.resolve():super.play()}get elementToRender(){return this.canvas||this.element}setTrack(e){e!==this.track&&(this.unbindTrackEvents(),this.track=e,this.emit(et.MEDIA_TRACK_CHANGED,e),e!==null&&(this.bindTrackEvents(),this.element&&this.mode!==2&&(this.element.srcObject=new MediaStream([e]),this.element.remove()),this.elementToRender&&this.elementToRender.parentElement!==this.container&&this.container&&this.container.append(this.elementToRender)))}getVideoFrame(){if(this.canvas)return this.canvas.toDataURL("image/png");if(!this.element)return"";let e=document.createElement("canvas");return e.width=this.element.videoWidth,e.height=this.element.videoHeight,e.getContext("2d").drawImage(this.element,0,0),e.toDataURL("image/png")}getElement(){return this.element}calculateStat(){try{if(Ao()&&this.element&&this._calculateTimeout<0){let e=0,r=null,o=(s,a)=>{this.stat.width=a.width,this.stat.height=a.height,r&&(this.stat.fps=Math.round((a.presentedFrames-r.presentedFrames)/(s-e)*1e3)),e=s,r=a,this._calculateTimeout=-1,this.element&&(this._calculateTimeout=setTimeout(()=>{var d;return(d=this.element)==null?void 0:d.requestVideoFrameCallback(o)},2e3))};this.element.requestVideoFrameCallback(o)}}catch(e){this._log.warn("init stat failed",e)}}};function Ro(i,t){return A(this,null,function*(){if(!i.audioWorklet)return Promise.reject("audioWorklet is not supported");try{yield i.audioWorklet.addModule(t),U.info("worklet addModule success")}catch(e){throw U.info(`worklet addModule catch error. ${e.message}`),e}})}var Ta;typeof AudioContext!="undefined"?Ta=AudioContext:typeof webkitAudioContext!="undefined"?Ta=webkitAudioContext:typeof mozAudioContext!="undefined"&&(Ta=mozAudioContext);var Vr,r_=-1;o_();function o_(){try{if(Vr)return;Vr=new Ta({sampleRate:48e3}),Vr.onstatechange=()=>{U.info(`context state: ${Vr.state}${Vr.state!=="running"?` visibilityState: ${document.visibilityState}`:""}`),Os()},clearTimeout(r_)}catch(i){U.error(`initAudioContext failed: ${i} typeof AudioContextClass: ${typeof Ta}`),r_=setTimeout(o_,1e3)}}var Os=()=>{Vr.state==="suspended"?(i_(),document.addEventListener("click",Os)):Vr.state==="interrupted"?i_():(document.removeEventListener("visibilitychange",Os),document.removeEventListener("click",Os))},zm=0,Xm=-1;function i_(){return new Promise((i,t)=>{Date.now()-zm<1e3?(clearTimeout(Xm),Xm=setTimeout(()=>{zm=Date.now(),Vr.resume().then(i,t)},1e3)):(clearTimeout(Xm),zm=Date.now(),Vr.resume().then(i,t))}).catch(i=>{U.warn(`context resume failed: ${i}`),document.addEventListener("visibilitychange",Os)})}document.addEventListener("click",Os);var lt=i=>Vr;var or=class{constructor(){l(this,"node");l(this,"pre",new Set);l(this,"next",new Set);l(this,"context");l(this,"connectedNodes",new Set);l(this,"_channelCount",1)}get channelCount(){return this._channelCount}set channelCount(t){this._channelCount=t,this.node&&(this.node.channelCount=t),this.next.forEach(e=>e.channelCount=t)}setContext(t){this.context=t,this.node&&t.addMixWeight()}removeContext(){var t;this.node&&((t=this.context)==null||t.reduceMixWeight()),delete this.context}setNode(t){var e;if(!this.node)try{(e=this.context)==null||e.addMixWeight(),this.node=t,this.node.channelCountMode="explicit",this.node.channelCount=this._channelCount,this.preNodeReconnect(),this.reconnect(),X.addSuccessEvent({key:502701})}catch(r){U.error(r),X.addFailedEvent({key:502701,error:r})}}deleteNode(){var t;if(this.node)try{this._disconnect(),delete this.node,(t=this.context)==null||t.reduceMixWeight(),this.preNodeReconnect(),X.addSuccessEvent({key:502702})}catch(e){U.error(e),X.addFailedEvent({key:502702,error:e})}}preNodeReconnect(){this.pre.forEach(t=>{t.node?t.reconnect():t.preNodeReconnect()})}connectNext(t){this.next.forEach(e=>t._connect(e.node)||e.connectNext(t))}_connect(t){return!this.node||!t?!1:(this.node.connect(t),this.connectedNodes.add(t),!0)}_disconnect(){this.connectedNodes.forEach(t=>{var e;return(e=this.node)==null?void 0:e.disconnect(t)}),this.connectedNodes.clear()}reconnect(){this._disconnect(),this.connectNext(this)}pipeTo(...t){return t.forEach(e=>{this.next.add(e),e.pre.add(this)}),this}},Nd=class extends or{constructor(e=256){super();this.fftSize=e;l(this,"dataArray",new Uint8Array(0))}setNode(e){e.fftSize=this.fftSize,this.dataArray=new Uint8Array(e.frequencyBinCount),super.setNode(e)}getByteTimeDomainData(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),this.dataArray}get level(){var e;return(e=this.node)==null||e.getByteTimeDomainData(this.dataArray),Math.max(...this.dataArray)/128-1}get timeDomainPathData(){let e=this.getByteTimeDomainData(),r=1,o=0,s=0,a=`M${o},${s}`;for(let d=0;d<e.length;d++)s=e[d]/128*100/2,a+=`L${o},${s}`,o+=r;return a}},Ia=class{constructor(){l(this,"source",new or);l(this,"gain",new or);l(this,"destination",new or)}get volume(){var t;return((t=this.gain.node)==null?void 0:t.gain.value)||1}setVolume(t){if(t===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.source.node.context.createGain()),this.gain.node.gain.value=t}replaceSource(t){this.source.deleteNode(),this.source.setNode(Qm(t))}get track(){var t;return(t=this.stream)==null?void 0:t.getAudioTracks()[0]}get stream(){var t;return(t=this.destination.node)==null?void 0:t.stream}},Ps=class extends Ia{constructor(e){super();this.context=e;l(this,"denoiser",new or);this.source.pipeTo(this.denoiser.pipeTo(this.gain.pipeTo(this.destination)))}connect(){this.context.inputs.has(this)||(this.destination.setNode(this.context.destination),this.source.setContext(this.context),this.denoiser.setContext(this.context),this.gain.setContext(this.context),this.context.inputs.add(this))}disconnect(){this.context.inputs.has(this)&&(this.destination.deleteNode(),this.source.removeContext(),this.denoiser.removeContext(),this.gain.removeContext(),this.context.inputs.delete(this))}remove(){this.gain.deleteNode(),this.denoiser.deleteNode(),this.source.deleteNode(),this.disconnect()}setVolume(e){if(e===1){this.gain.node&&this.gain.deleteNode();return}this.gain.node||this.gain.setNode(this.context.audioContext.createGain()),this.gain.node.gain.value=e}},wd=class{constructor(){l(this,"audioContext",lt("audio-mixer"));l(this,"destination",this.audioContext.createMediaStreamDestination());l(this,"inputs",new Set);l(this,"mixWeight",0)}addMixWeight(t=1){this.mixWeight+=t,this.mixWeight-1===t+1>>1&&this.mixOnChange()}reduceMixWeight(t=1){this.addMixWeight(-t)}close(){this.inputs.forEach(t=>t.remove())}get mixTrack(){return this.destination.stream.getAudioTracks()[0]}},s_=new WeakMap;function Qm(i){let t=s_.get(i);if(t)return t;let e=lt();if(i instanceof HTMLAudioElement)t=e.createMediaElementSource(i);else if(i instanceof MediaStreamTrack)t=e.createMediaStreamSource(new MediaStream([i]));else return i;return s_.set(i,t),t}var Kt=class Kt{constructor(t){l(this,"_volume",0);l(this,"_log");l(this,"_scriptProcessorNode",null);l(this,"_audioWorkletNode",null);l(this,"_interval",200);l(this,"ready",this.preload());let{log:e}=t;this._log=e,F.on(P.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}static get isRunning(){return Date.now()-Kt.lastMessageTime<2e3}get node(){return this._audioWorkletNode||this._scriptProcessorNode}preload(){if(!Kt.workletReady){let t='class VolumeMeterWorklet extends AudioWorkletProcessor{constructor(){super(),this.volume=0,this.intervalTime=200,this.tick=200,this.isStop=!1,this.cache=[],this.sentFirstInfo1=!1,this.unmute=!1,this.port.onmessage=t=>{var e=t.data;switch(e.name){case"chunk":this.cache.push(...e.data),this.sentFirstInfo1||(this.port.postMessage({cl:e.data.length}),this.sentFirstInfo1=!0);break;case"setIntervalTime":this.intervalTime=e.intervalTime;break;case"unmute":this.unmute=!0;break;case"stop":this.isStop=!0}}}process(t,e){t=t[0],e=e[0];if(t||e){if(this.isStop)return!1;var s=e&&e[0]?e[0].length:0,i=this.cache.length,h=(s<i?(e[0].set(this.cache.slice(0,s)),this.cache=this.cache.slice(s)):this.unmute&&e[0].set(t[0]),(s<i?e:t)[0]);if(h){let e=0;for(let t=0;t<h.length;++t)e=Math.max(Math.abs(h[t]),e);this.volume=e,this.tick-=h.length,this.tick<0&&(this.tick+=this.intervalTime/1e3*sampleRate,this.port.postMessage({volume:this.volume,cacheLen:i,outputLen:s}))}}return!0}}registerProcessor("volume-meter",VolumeMeterWorklet);';Kt.workletReady=Ro(Kt.audioContext,URL.createObjectURL(new Blob([t],{type:"application/javascript"})))}return Kt.workletReady.then(()=>this.initAudioWorklet()).catch(t=>(this._log.error(`volumeMeter preload error: ${t}`),this.initScriptProcessor()))}initAudioWorklet(){if(!this._audioWorkletNode)try{this._audioWorkletNode=new AudioWorkletNode(Kt.audioContext,"volume-meter");let t=!1;this._audioWorkletNode.port.onmessage=e=>{Kt.lastMessageTime=Date.now(),this._volume=e.data.volume||0,!t&&e.data.cacheLen&&e.data.outputLen&&(this._log.warn("worklet play success"),t=!0)},this.handleAudioLevelInterval({interval:this._interval})}catch(t){this._log.error(`volumeMeter init audio worklet error: ${t}`),Ve.logFailedEvent({userId:this._log.userId,eventType:ti.LOAD_WORKLET,error:t}),this.initScriptProcessor()}}initScriptProcessor(){if(!this._scriptProcessorNode)try{this._scriptProcessorNode=lt("volume-meter").createScriptProcessor(2048,1,1),this._scriptProcessorNode.onaudioprocess=t=>{Kt.lastMessageTime=Date.now();let e=t.inputBuffer.getChannelData(0),r=0;for(let o=0;o<e.length;++o)r+=e[o]*e[o];this._volume=Math.sqrt(r/e.length)||0}}catch(t){this._log.error(`volumeMeter init script processor error: ${t}`)}}destroy(){this._scriptProcessorNode&&(this._scriptProcessorNode.onaudioprocess=null),this._audioWorkletNode&&(this._audioWorkletNode.port.postMessage({name:"stop"}),this._audioWorkletNode.port.onmessage=null),this._audioWorkletNode=null,this._scriptProcessorNode=null,F.off(P.AUDIO_LEVEL_INTERVAL,this.handleAudioLevelInterval,this)}getInternalAudioLevel(){return this._volume}getCalculatedVolume(){return parseFloat(this._volume.toFixed(2))}handleAudioLevelInterval(t){var r;let{interval:e}=t;this._interval=e,(r=this._audioWorkletNode)==null||r.port.postMessage({name:"setIntervalTime",intervalTime:e})}};l(Kt,"lastMessageTime",0),l(Kt,"audioContext",lt("volume-meter")),l(Kt,"workletReady");var Ym=Kt,Md=class extends or{constructor(e){super();l(this,"_volumeMeter");this._volumeMeter=new Ym(e)}deleteNode(){super.deleteNode(),this._volumeMeter.destroy()}init(){return A(this,null,function*(){yield this._volumeMeter.preload(),this.setNode(this._volumeMeter.node)})}getCalculatedVolume(){return this._volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this._volumeMeter.getInternalAudioLevel()}write(e){if(this.node){let r=e.allocationSize({planeIndex:0}),o=new Float32Array(r>>2);e.copyTo(o,{planeIndex:0}),this.node.port.postMessage({name:"chunk",data:o},[o.buffer]),e.close()}}};var d_=Ci(ki(),1);var a_=i=>t=>t.deviceId===i;var Sa=class{constructor(t,e="Input"){l(this,"kind");l(this,"type");l(this,"devices",[]);this.kind=t,this.type=e}update(t,e){let r=t.filter(o=>o.kind===`${this.kind}${this.type.toLocaleLowerCase()}`);if(this.devices.length===1&&xs(this.devices[0])){this.devices=r;return}e&&(r.forEach(o=>{if(o.deviceId&&!this.devices.find(a_(o.deviceId))){let s=`${this.kind}${this.type}Added`;U.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}}),this.devices.forEach(o=>{if(o.deviceId&&!r.find(a_(o.deviceId))){let s=`${this.kind}${this.type}Removed`;U.warn(`${s}: ${JSON.stringify(o)}`),e.emit(s,o)}})),this.devices=r}hasDevice(t){return!!this.devices.find(e=>e.deviceId===t)}},Zm=class extends d_.EventEmitter{constructor(){super();l(this,"audioInputs",new Sa(D.AUDIO));l(this,"videoInputs",new Sa(D.VIDEO));l(this,"audioOutputs",new Sa(D.AUDIO,"Output"));this.init(),navigator.mediaDevices&&(navigator.mediaDevices.addEventListener&&navigator.mediaDevices.addEventListener("devicechange",()=>this.update()),"ondevicechange"in navigator.mediaDevices||ft.run(uo,()=>{this.update()},{delay:1e4}))}init(){Od().then(e=>{this.audioInputs.update(e),this.videoInputs.update(e),this.audioOutputs.update(e)})}update(){return A(this,arguments,function*(e=0){let r=yield Od(e);return this.audioInputs.update(r,this),this.videoInputs.update(r,this),this.audioOutputs.update(r,this),this})}},ht=Dn||os?null:new Zm;function xs(i){return i.deviceId===i.groupId&&i.groupId===""}function Od(){return A(this,arguments,function*(i=0){if(mi()||!bd())return[];let t=yield navigator.mediaDevices.enumerateDevices();if(i!==0){let e={audio:!1,video:!1};if(t.forEach(r=>{xs(r)&&(r.kind===D.AUDIO_INPUT?e.audio=!0:r.kind===D.VIDEO_INPUT&&(e.video=!0))}),i===2&&(e.audio=!1),i===1&&(e.video=!1),e.audio||e.video){let r;try{r=yield navigator.mediaDevices.getUserMedia(e)}catch(o){U.debug("capture before getDevices failed: ",o)}t=yield navigator.mediaDevices.enumerateDevices(),r==null||r.getTracks().forEach(o=>o.stop())}}return t.map((e,r)=>{let o={kind:e.kind,deviceId:e.deviceId,groupId:e.groupId,label:e.label||`${e.kind}_${r}`};return e.deviceId.length>0&&Km.add(`${e.deviceId}_${e.kind}`),e.getCapabilities&&(o.getCapabilities=()=>e.getCapabilities()),o})})}function Gt(i=!1){return ht.update(i?1:0).then(t=>t.audioInputs.devices)}function er(i=!1){return ht.update(i?2:0).then(t=>t.videoInputs.devices)}var c_=!1;function u_(){return A(this,null,function*(){try{c_||(c_=!0,U.info(`speakers:${(yield Vi()).map(i=>` ${i.deviceId.slice(0,8)}: ${i.label}`)}`))}catch(i){}})}function Vi(i=!1){return A(this,null,function*(){return ht.update(i?1:0).then(t=>t.audioOutputs.devices)})}var Km=new Set;function l_(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("camera")||t.includes("webcam"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${D.VIDEO_INPUT}`;return!!Km.has(r)}function m_(i){if(i instanceof CanvasCaptureMediaStreamTrack||!(i instanceof MediaStreamTrack))return!1;let t=i.label.toLocaleLowerCase();if(t.includes("mic")||t.includes("\u9EA6\u514B\u98CE"))return!0;let r=`${((i==null?void 0:i.getSettings())||{}).deviceId}_${D.AUDIO_INPUT}`;return!!Km.has(r)}function ep(i,t){return A(this,null,function*(){let r=(yield Gt()).find(o=>o.deviceId===co);return!t&&(r==null?void 0:r.groupId)===i||(r==null?void 0:r.groupId)===i&&r.label===t})}function p_(s){return A(this,arguments,function*({newDeviceId:i,oldDeviceId:t,oldGroupId:e,oldLabel:r,kind:o}){return i!==t?!1:o===D.AUDIO&&i===co?yield ep(e,r):!0})}var Pd,tp=class extends Ia{constructor(e){super();this.log=e;l(this,"volumeMeter");l(this,"volumeDestination");l(this,"analyser",new Nd);this.volumeMeter=new Md({log:this.log}),this.volumeDestination=new or,this.volumeMeter.pipeTo(this.volumeDestination)}destroy(){this.gain.deleteNode(),this.volumeMeter.deleteNode(),this.analyser.deleteNode(),this.source.deleteNode(),this.destination.deleteNode(),this.volumeDestination.deleteNode()}},xd=class i extends Ur{constructor(e){super(e,D.AUDIO);l(this,"_outputDeviceId");l(this,"_volume",1);l(this,"_destination",lt("player").createMediaStreamDestination());l(this,"pipeline");l(this,"volumeMeterMode","worklet");this.mode=0,this.pipeline=new tp(this._log)}getMediaStream(){return this.pipeline.stream||(this.track?new MediaStream([this.track]):null)}initializeElement(e){if((xi==="15.2"||xi==="15.3"||xi==="15.4")&&this.muted){this._log.info("audioElement is muted.");return}let o=Pd||new Audio;o.setAttribute("autoplay","autoplay"),o.srcObject=this.getMediaStream(),o.muted=this.muted,this.element=o,$e(e)&&(this.element.volume=Math.min(Math.max(e,0),1)),o===Pd&&(Pd=void 0),this.bindElementEvents()}play(e){return A(this,null,function*(){if(this.track)return this.pipeline.source.node||this.pipeline.replaceSource(this.track),this.element||this.initializeElement(e==null?void 0:e.volume),this._outputDeviceId&&(yield this.setSinkId(this._outputDeviceId)),this.volumeMeterMode==="worklet"?this.pipeline.volumeMeter.init():this.volumeMeterMode==="analyser"&&this.pipeline.analyser.setNode(lt("player").createAnalyser()),u_(),Lt(i.prototype,this,"play").call(this)})}stop(e=0){this.pipeline.destroy(),super.stop(e)}setSinkId(e){return A(this,null,function*(){var r,o;this._outputDeviceId!==e&&(this._outputDeviceId=e),this.element&&this.element.sinkId!==e&&(yield(o=(r=this.element).setSinkId)==null?void 0:o.call(r,e))})}get useDestination(){return!!this.pipeline.stream}setLoop(e){this.element&&(this.element.loop=e)}getAudioLevel(){return this.pipeline.volumeMeter.getCalculatedVolume()}getInternalAudioLevel(){return this.pipeline.volumeMeter.getInternalAudioLevel()}},kd=class extends xd{constructor(t){super(t),this.pipeline.source.pipeTo(this.pipeline.volumeMeter,this.pipeline.destination)}setTrack(t){var e;this.track!==t&&(this.unbindTrackEvents(),this.track=t,this.emit(et.MEDIA_TRACK_CHANGED,t),t?(this.bindTrackEvents(),this.pipeline.source.channelCount=((e=t.getSettings())==null?void 0:e.channelCount)||1,this.pipeline.replaceSource(t),!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([t]))):this.pipeline.source.deleteNode())}setSourceNode(t){!t||this.pipeline.source.node===t||(this.pipeline.replaceSource(t),t instanceof MediaStreamAudioSourceNode?this.pipeline.destination.setNode(this._destination):this.pipeline.destination.deleteNode(),this.element&&(this.element.srcObject=this.getMediaStream(),this.element.play().catch(()=>{}),this.setVolume(this._volume)))}setVolume(t){this._volume=t,this.element&&(this.element.volume=t)}},Ld=class extends xd{constructor(e){super(e);l(this,"_sourceElement");l(this,"_output",new or);this.pipeline.source.pipeTo(this.pipeline.gain.pipeTo(this.pipeline.volumeMeter.pipeTo(this._output),this.pipeline.destination))}setOutput(){this.mode=1,this._output.setNode(lt("player").destination)}write(e){this.pipeline.volumeMeter.write(e)}setTrack(e){var r,o,s;((o=(r=this.element)==null?void 0:r.error)==null?void 0:o.code)!==MediaError.MEDIA_ERR_DECODE&&this.track!==e&&(this.unbindTrackEvents(),this.track=e,this.emit(et.MEDIA_TRACK_CHANGED,e),e?(this.bindTrackEvents(),this._sourceElement?this._sourceElement.srcObject=new MediaStream([e]):!this.useDestination&&this.element&&(this.element.srcObject=new MediaStream([e])),this.pipeline.source.channelCount=((s=e.getSettings())==null?void 0:s.channelCount)||1,this.pipeline.replaceSource(e)):this.pipeline.source.deleteNode())}setVolume(e){this._volume=e,this.useDestination?(this.pipeline.setVolume(e),this._log.info(`set pipeline volume: ${e}`)):e<=1&&!bt?this.element?(this._log.info(`set element volume: ${e}`),this.element.volume=e):this._log.info("set element volume: no element"):(this._log.info(`start set pipeline volume: ${e}`),this.pipeline.setVolume(e),this.element&&!this._sourceElement&&(this.pipeline.destination.setNode(this._destination),at(this.element),this._sourceElement=this.element,this._sourceElement.muted=!0,this.element=null,this.play()))}stop(e=0){this.pipeline.destroy();let r=this._sourceElement||this.element;r&&Oi&&(Pd=r),this._sourceElement&&(this._sourceElement.srcObject=null,delete this._sourceElement),super.stop(e)}};var vo=class extends re{constructor({userId:e,sdkAppId:r,mediaType:o,room:s,PlayerClass:a=o===1?Ld:Zt}){var d;super();l(this,"id",ia());l(this,"userId","");l(this,"isRemote");l(this,"mediaType");l(this,"room");l(this,"user");l(this,"_log");l(this,"_inputTrack");l(this,"_outputTrack");l(this,"isPlayCalled");l(this,"container",null);l(this,"player");l(this,"subVideoPlayerMap");l(this,"muted",!1);l(this,"abortCtrl");l(this,"objectFit","cover");l(this,"mirror");l(this,"isScreen",!1);l(this,"manager");l(this,"trackSettings");this.userId=e||"",this.mediaType=o,this._log=U.createLogger({id:`${this.kind[0]}t`,userId:(d=s||this.room)==null?void 0:d.userId,remoteUserId:this instanceof hi?void 0:this.userId,sdkAppId:r,type:this.mediaType===2?"auxiliary":"main",isLocal:this instanceof hi}),this.player=new a({id:this.userId||this.id,track:null,muted:!1,container:null,log:this._log}),this.player.on(et.PLAYER_STATE_CHANGED,h=>{F.emit(P.PLAYER_STATE_CHANGED,J({track:this},h)),this.emit("player-state-changed",h)}),this.kind===D.VIDEO&&(this.player.on(et.LOADED_DATA,()=>{F.emit(P.VIDEO_LOADED_DATA,{track:this})}),this.player.on(et.LOADED_META_DATA,()=>{var m,T,I;let h=(m=this.mediaTrack)==null?void 0:m.getSettings();this.emit("first-video-frame",{width:(h==null?void 0:h.width)||((T=this.player.element)==null?void 0:T.videoWidth)||0,height:(h==null?void 0:h.height)||((I=this.player.element)==null?void 0:I.videoHeight)||0,streamType:this.streamType,userId:this.isRemote?this.userId:""})}),this.player.on(et.MEDIA_TRACK_CHANGED,h=>{var m;(m=this.subVideoPlayerMap)==null||m.forEach(T=>T.setTrack(h))})),this.onTrackMuted=this.onTrackMuted.bind(this),this.onTrackUnmuted=this.onTrackUnmuted.bind(this),this.onTrackEnded=this.onTrackEnded.bind(this),this.onPlayerError&&this.player.on(et.ERROR,this.onPlayerError.bind(this))}get log(){return this._log||U}get kind(){return this.mediaType===1?D.AUDIO:D.VIDEO}get strMediaType(){return this.mediaType===4?D.VIDEO:this.mediaType===2?D.SCREEN:D.AUDIO}get streamType(){return(this.mediaType&2)===0?"main":"auxiliary"}get isMediaTrackActive(){return this.mediaTrack?!this.mediaTrack.muted&&this.mediaTrack.readyState==="live"&&this.mediaTrack.enabled:!1}play(e,r){return A(this,null,function*(){let o=it(e)?e[0]:e;if(this.isPlayCalled){this.log.info(`play update options: ${JSON.stringify(r)}`),r&&!L(r.muted)&&this.setPlayerMute(r.muted),r&&!L(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Zt&&(this.player.setObjectFit(this.objectFit),this.container!==o&&o&&(this.container=o,this.player.setContainer(o)),it(e)&&e.length>=1&&(yield this.playSubContainer(e.slice(1),r)));return}if(r&&!L(r.muted)?this.setPlayerMute(r.muted):(!this.isRemote||this.kind===D.VIDEO)&&this.setPlayerMute(!0),r&&!L(r.objectFit)&&(this.objectFit=r.objectFit),this.player instanceof Zt&&this.player.setObjectFit(this.objectFit),this.isPlayCalled=!0,o&&(this.container=o,this.player instanceof Zt&&this.player.setContainer(o)),F.emit(P.PLAY_TRACK_START,{track:this}),!this._outputTrack){this.log.info("play has not mediaTrack, abort");return}this._log.info(`play with options: ${JSON.stringify(r)}`);try{this.player.setTrack(this.playerMediaTrack),yield this.player.play(r),it(e)&&e.length>1&&(yield this.playSubContainer(e.slice(1),r))}catch(s){throw this.handleAutoPlayFailed(s),s}})}setMirror(e,r){if(this.isScreen||this.kind!==D.VIDEO||L(e)||e===this.mirror)return;this.mirror=e;let o=this.player;r&&(o=r);let s=this.manager;if(nt(this.mirror)){o.setViewMirror(this.mirror),s&&(s.mirror=!1);return}switch(this.mirror){case"view":{s&&(s.mirror=!1),o.setViewMirror(!0);break}case"publish":{s&&(s.mirror=!0),o.setViewMirror(!0);break}case"both":s&&(s.mirror=!0),o.setViewMirror(!1)}}playSubContainer(e,r){return A(this,null,function*(){if(!this._outputTrack||this.kind===D.AUDIO)return;this.subVideoPlayerMap||(this.subVideoPlayerMap=new Map),this.subVideoPlayerMap.forEach((s,a)=>{var d;e.find(h=>a===h)||(s.stop(),(d=this.subVideoPlayerMap)==null||d.delete(a))});for(let[s,a]of e.entries()){let d=this.subVideoPlayerMap.get(a);d?r&&(L(r.objectFit)||d.setObjectFit(r.objectFit)):this.subVideoPlayerMap.set(a,new Zt({id:this.userId||this.id,track:this.playerMediaTrack,container:a,muted:this.player.muted,objectFit:this.objectFit,log:this.log.createChild({id:`vp-sub${s+1}`})}))}let o=[...this.subVideoPlayerMap.values()];for(let s of o)s.setViewMirror(this.player.mirror),yield s.play()})}setAudioOutput(e){return this.player.setSinkId(e)}setAudioVolume(e){this.player.setVolume(e)}getAudioLevel(){return this.player.getAudioLevel()||0}getInternalAudioLevel(){var e;return((e=this.player)==null?void 0:e.getInternalAudioLevel())||0}stop(e=!1){this.isPlayCalled&&(this.isPlayCalled=!1,this.player&&(this.log.info(`stop ${this.kind} player`),this.player.stop(Ql(this)&&!e?this.jitterBufferDelay:0)),this.subVideoPlayerMap&&this.subVideoPlayerMap.size>0&&this.subVideoPlayerMap.forEach(r=>{r.stop()}),this.container=null)}resume(){return A(this,null,function*(){var e;this.isPlayCalled&&(yield(e=this.player)==null?void 0:e.resume())})}close(){this.log.info("close"),this.isPlayCalled&&this.stop(!0)}setMute(e){this.muted=e,this._inputTrack&&(this._inputTrack.enabled=!e),this._outputTrack&&(this._outputTrack.enabled=!e),this.emit(e?"mute":"unmute",this),F.emit(e?P.TRACK_MUTED:P.TRACK_UNMUTED,{track:this})}setPlayerMute(e){this.player.setMuted(e)}get mediaTrack(){return this._inputTrack||null}get outMediaTrack(){return this._outputTrack||null}get playerMediaTrack(){return this.outMediaTrack}installTrackEvent(e){vt(e,e).add(D.MUTE,this.onTrackMuted).add(D.UNMUTE,this.onTrackUnmuted).add(D.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===D.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){at(e)}setInputMediaStreamTrack(e){var o;let r=this._inputTrack;if(e!==r)return this._inputTrack=e,this.trackSettings=(o=e.getSettings)==null?void 0:o.call(e),e.enabled=!this.muted,r&&this.uninstallTrackEvent(r),this.installTrackEvent(e),this.emit("input-media-track-changed",e||null,r||null),this.manager?this.manager.changeInput(this):this.setOutputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var o;let r=this._outputTrack;e!==r&&(this.isRemote?this.log.debug("setOutputMediaStreamTrack",e.label):this.log.info("setOutputMediaStreamTrack",(o=e.getSettings)==null?void 0:o.call(e).deviceId,e.label),this._outputTrack=e,this._inputTrack&&(this._outputTrack.contentHint=this._inputTrack.contentHint,this._outputTrack.enabled=this._inputTrack.enabled),this.updatePlayingState(!!e),this.emit("output-media-track-changed",e))}setMediaType(e){this.mediaType=e}updatePlayingState(e){if(this.isPlayCalled){if(e){if(this.player.setTrack(this.playerMediaTrack),this.player.isStopped){this.player.play().catch(r=>this.handleAutoPlayFailed(r)),this.log.info(`playing state updated, play ${this.kind}`);return}}else if(!this.player.isStopped){this.player.stop(Ql(this)?this.jitterBufferDelay:0),this.log.info(`playing state updated, stop ${this.kind}`);return}}this.log.debug(`updatePlayingState abort ${this.isPlayCalled} ${e} ${this.player.isStopped}`)}handleAutoPlayFailed(e){if(this.room&&this.room.enableAutoPlayDialog)new t_;else{let r=()=>{this.resume().then(()=>{document.removeEventListener("click",r,!0)})};document.addEventListener("click",r,!0)}this.emit("error",e)}getVideoFrame(){return this.player instanceof Zt?this.player.getVideoFrame():""}onTrackMuted(){this._log.warn(`${this.kind} track is unable to provide media output`)}onTrackUnmuted(){this._log.info(`${this.kind} track is able to provide media output`)}onTrackEnded(){this._log.warn(`${this.kind} track ended`)}};G([ye([],re.INIT,{sync:!0})],vo.prototype,"close",1);var VT=Object.prototype.hasOwnProperty,{toString:gv}=Object.prototype;function FT(i){if(i==null)return!0;if(typeof i=="boolean")return!1;if(typeof i=="number")return i===0;if(typeof i=="string"||typeof i=="function"||Array.isArray(i))return i.length===0;if(i instanceof Error)return i.message==="";if(Bt(i))switch(Object.prototype.toString.call(i)){case"[object File]":case"[object Map]":case"[object Set]":return i.size===0;case"[object Object]":{for(let t in i)if(VT.call(i,t))return!1;return!0}}return!1}var ya=FT;var BT=function(i){return A(this,null,function*(){let t=HT(i);U.info(`getUserMedia with constraints: ${JSON.stringify(t)}`);let e=[],r=[],o=["label","deviceId","groupId"];t.audio&&(e=yield Gt(),U.info(`microphones: ${ir(e.map(s=>pe(J({},s),{groupId:s.groupId.substring(0,8)})),{keysToInclude:o})}`)),t.video&&(r=yield er(),U.info(`cameras: ${ir(r,{keysToInclude:o})}`));try{let s=yield navigator.mediaDevices.getUserMedia(t);return Lm&&s.getTracks().forEach(a=>{U.info(`${a.kind} capabilities: ${ir(a.getCapabilities(),{keysToInclude:Bc})}`)}),s}catch(s){let{message:a}=s;throw s.name==="NotFoundError"&&(i.video&&r&&r.length===0&&(a=st({key:ot.CAMERA_NOT_FOUND})),i.audio&&e&&e.length===0&&(a=st({key:ot.MICROPHONE_NOT_FOUND}))),new ue({code:Y.INITIALIZE_FAILED,name:s.name,message:a,constraint:s.constraint})}})},$T=Mi({retryFunction:BT,settings:{retries:3,timeout:500},onError:({error:i,retry:t,reject:e,retryFuncArgs:r,retriedCount:o})=>{let s=o+1;i.name==="NotReadableError"||i.name==="OverconstrainedError"?(s===1?(r[0].video&&(r[0].maxResolution=!1,(!$t||r[0].width*r[0].height<=1920*1080)&&r[0].frameRate&&(r[0].frameRate=r[0].frameRate>10?10:5)),r[0].retryWhenExactFailed&&r[0].useExactDeviceId&&(r[0].useExactDeviceId=!1)):s===2?r[0].useDeviceIdOnly=!0:s===3&&!r[0].useExactDeviceId&&(r[0].useTrueAsConstraint=!0),t()):e(i),r[0].microphoneId&&h_(r[0].microphoneId,!1),r[0].cameraId&&h_(r[0].cameraId,!0)},onRetrying:i=>{U.warn(`getUserMedia NotReadableError observed, retrying [${i}/3]`)},onRetryFailed:i=>{Ve.logFailedEvent({eventType:ti.GET_USER_MEDIA_RETRY,error:i})},onRetrySuccess:i=>{Ve.logSuccessEvent({eventType:ti.GET_USER_MEDIA_RETRY}),Ve.uploadEvent({log:`stat-${ti.GET_USER_MEDIA_RETRY}-success-${i}`})}});function h_(i,t){return A(this,null,function*(){let r=(t?yield er():yield Gt()).find(o=>o.deviceId===i);r&&Fe(r.getCapabilities)&&U.warn(ir(r.getCapabilities(),{keysToInclude:Bc}))})}function HT(i){return{audio:WT(i),video:GT(i)}}function WT(i){if(!i.audio)return!1;if(i.useTrueAsConstraint)return!0;let t={echoCancellation:!0,noiseSuppression:!0,autoGainControl:!0,sampleRate:i.sampleRate};return!ya(i.microphoneId)&&(t.deviceId=i.useExactDeviceId?{exact:i.microphoneId}:i.microphoneId,i.useDeviceIdOnly)?t:($e(i.channelCount)&&(t.channelCount=i.channelCount),nt(i.echoCancellation)&&!i.echoCancellation&&(t.echoCancellation=!1),nt(i.noiseSuppression)&&!i.noiseSuppression&&(t.noiseSuppression=!1),nt(i.autoGainControl)&&!i.autoGainControl&&(t.autoGainControl=!1),ya(t)?!0:t)}function GT(i){if(!i.video)return!1;if(i.useTrueAsConstraint)return!0;let{maxResolution:t=!0}=i,e={};return i.cameraId?e.deviceId=i.useExactDeviceId?{exact:i.cameraId}:i.cameraId:i.facingMode&&(e.facingMode=i.facingMode),i.useDeviceIdOnly&&!ya(e)?e:(i.width&&(e.width={ideal:i.width},t&&!_r&&(e.width.max=i.width)),i.height&&(e.height={ideal:i.height},t&&!_r&&(e.height.max=i.height)),_r&&Er&&i.width&&i.height&&i.width*i.height<352*288&&(e.width=i.width,e.height=i.height),i.frameRate&&(e.frameRate=i.frameRate),ya(e)?!0:e)}var f_=$T;function Fi(i){return Ae((t,e)=>function(...r){return A(this,null,function*(){let o=yield t.apply(this,r);return yield i.call(this,...r),o})})}function __(i){return Ae((t,e)=>function(...r){return A(this,null,function*(){try{return yield t.apply(this,r)}catch(o){i.call(this,o)}})})}function Ae(i){return function(t,e,r){return r.value=i(r.value,e),r}}var g_=(()=>{let i=!1,t=document.visibilityState;return()=>{document.visibilityState!==t&&U.info(`visibility change: ${document.visibilityState}`),!i&&(document.addEventListener("visibilitychange",()=>{U.info(`visibility change: ${document.visibilityState}`),t=document.visibilityState}),i=!0)}})();var jT=0,Ud=class{constructor(){l(this,"log",U.createLogger({id:`fq${++jT}`}));l(this,"isRunning",!1);l(this,"queue",[])}get length(){return this.queue.length}get lastQueueItem(){return this.length===0?null:this.queue[this.length-1]}push(t,e=!1){var s,a;let r=J({},t),o=new Promise((d,h)=>{r.resolve=d,r.reject=h});return r.promise=o,e?this.length<=1?this.queue.push(r):(a=(s=this.lastQueueItem)==null?void 0:s.promise)==null||a.then(r.resolve,r.reject):this.queue.push(r),this.log.debug(`push ${this.length}`),this.isRunning||this.callNext(),o}shift(){let t=this.queue.shift();return this.log.debug(`shift ${this.length}`),t}callNext(){if(this.isRunning||this.length===0)return;this.log.debug("callNext ",this.length);let{fn:t,args:e,context:r,resolve:o,reject:s}=this.queue[0];this.isRunning=!0,t.apply(r,e).then(o,s).finally(()=>{this.isRunning=!1,this.shift(),this.callNext()})}},E_=new WeakMap,T_=new WeakMap;function I_(i=!1){return function(t,e,r){let o=r.value;return r.value=function(...s){let a=E_.get(this)||new Ud;return E_.set(this,a),a.push({fn:o,args:s,context:this},i)},r}}function Vd(i){return function(t,e,r){let o=r.value,s=a=>i(...a);return r.value=function(...a){let d=T_.get(this)||new Map,h=d.get(s(a))||new Ud;return d.set(s(a),h),T_.set(this,d),h.push({fn:o,args:a,context:this})},r}}function Fd(i,t){return Ae((e,r)=>function(...o){let s=i;try{let a=e.apply(this,o),d=ge();return Ni(a)?a.then(h=>(t?X.addSuccessEvent({key:s,cost:ge()-d}):X.addSuccessEvent({key:s}),h)).catch(h=>{throw X.addFailedEvent({key:s,error:h}),h}):(X.addSuccessEvent({key:s}),a)}catch(a){throw X.addFailedEvent({key:s,error:a}),a}})}var Co=class Co extends vo{constructor(e,r){super({mediaType:e,PlayerClass:r});l(this,"isRemote",!1);l(this,"deviceId");l(this,"groupId","");l(this,"label","");l(this,"_isRecapturing",!1);l(this,"_lastRecaptureTime",0);l(this,"_onMuteTimeoutId",-1);l(this,"_encodeCheckTimeoutId",-1);l(this,"profile")}get enableEncodeFrame(){return!1}get isPublishing(){return this.state.toString()==="publishing"}get isPublished(){return this.state==="publish"}encodeFrame(e,r){throw new Error("Method not implemented.")}installTrackEvent(e){vt(e,e).add(D.MUTE,this.onTrackMuted).add(D.UNMUTE,this.onTrackUnmuted).add(D.ENDED,this.onTrackEnded),e.muted&&this.onTrackMuted(),e.readyState===D.ENDED&&this.onTrackEnded()}uninstallTrackEvent(e){at(e)}setStateToCapture(){}capture(e){return A(this,null,function*(){var r;try{let o=ge();F.emit(P.LOCAL_TRACK_CAPTURE_START,{track:this});let s;e.customSource?(s=new MediaStream,s.addTrack(e.customSource)):((r=this.mediaTrack)==null||r.stop(),s=yield f_(e));let a=s.getTracks()[0];return yield this.setInputMediaStreamTrack(a),e.customSource||(this.updateDeviceIdInUse(),this.listenDeviceChange()),F.emit(P.LOCAL_TRACK_CAPTURE_SUCCESS,{track:this,cost:ge()-o}),s}catch(o){throw F.emit(P.LOCAL_TRACK_CAPTURE_FAILED,{track:this,error:o}),this.log.error(`getUserMedia error observed ${o}`),o}})}setInputMediaStreamTrack(e){return this.state===re.INIT&&this.setStateToCapture(),super.setInputMediaStreamTrack(e)}setOutputMediaStreamTrack(e){var r;if(super.setOutputMediaStreamTrack(e),this.isPublishing||this.isPublished)return(r=this.room)==null?void 0:r.replaceTrack(this)}publish(e,r){return this.room=e,this.emit("4",{mediaType:this.strMediaType,state:"starting",prevState:"stopped"}),this.userId=e.userId,this._log.setUserId(e.userId),this._log.setSdkAppId(e.sdkAppId),r}unpublish(){this.room&&this.room.localTracks.delete(this),F.emit(P.LOCAL_TRACK_UNPUBLISHED,{track:this})}updateDeviceIdInUse(){return A(this,null,function*(){if(this.mediaTrack&&Ns){let{deviceId:e,groupId:r}=this.mediaTrack.getSettings(),{label:o}=this.mediaTrack;(yield p_({newDeviceId:e,oldDeviceId:this.deviceId,oldGroupId:this.groupId,oldLabel:this.label,kind:this.kind}))||(this.deviceId=e,this.label=o,r&&(this.groupId=r),Od().then(a=>{let d=a.find(h=>h.deviceId===e);d&&this.emit("2",d)}))}})}setProfile(e){this.log.info("setProfile",e),Object.assign(this.profile,e)}isNeedToRecapture(e=!1){return!(!this.deviceId||!this.mediaTrack||this.kind===D.AUDIO&&!m_(this.mediaTrack)||this.kind===D.VIDEO&&!l_(this.mediaTrack)||this._isRecapturing||e&&Er&&$t)}onTrackMuted(){if(super.onTrackMuted(),g_(),!!this.isNeedToRecapture(!0)){if(Date.now()-this._lastRecaptureTime<as){setTimeout(()=>this.onTrackMuted(),as);return}this._onMuteTimeoutId=setTimeout(()=>A(this,null,function*(){var e;if((e=this.mediaTrack)!=null&&e.muted){if((bt||pt)&&document.visibilityState!=="visible")return;this.recapture(yield this.getRecoverCaptureDeviceId())}}),5e3)}}onTrackUnmuted(){super.onTrackUnmuted(),this._onMuteTimeoutId>0&&clearTimeout(this._onMuteTimeoutId)}onTrackEnded(){return A(this,null,function*(){if(Lt(Co.prototype,this,"onTrackEnded").call(this),!!this.isNeedToRecapture()){if(Date.now()-this._lastRecaptureTime<as){setTimeout(()=>this.onTrackEnded(),as);return}this.recapture(yield this.getRecoverCaptureDeviceId())}})}recapture(e){return A(this,null,function*(){var o;if(this._isRecapturing||!this._inputTrack)return;this.log.warn("recapture trying"),(o=this._inputTrack)==null||o.stop(),this._isRecapturing=!0,this._lastRecaptureTime=Date.now();let r={useExactDeviceId:!0};if(e==="user"||e==="environment")r.facingMode=e;else{let s;(this.kind==="audio"?yield Gt():yield er()).find(d=>d.deviceId===e)&&(s=e),r.deviceId=s}return this.capture(r).then(()=>{this._isRecapturing=!1,this.log.warn("recapture success"),this.emit("1",{deviceId:this.deviceId}),F.emit(P.LOCAL_TRACK_RECAPTURE,{track:this})}).catch(s=>{this._isRecapturing=!1,this.log.warn(`recapture failed ${s.message}`),this.emit("5",s),F.emit(P.LOCAL_TRACK_RECAPTURE,{track:this,error:s})})})}getRecoverCaptureDeviceId(){return A(this,null,function*(){let e=this instanceof Ir;if(e&&this.facingMode)return this.facingMode;let{deviceId:r}=this;if(r){let o=(Aa.get(r)||0)+1;if(Aa.set(r,o),o>=3){let s=e?(yield er()).find(a=>!Aa.has(a.deviceId)):(yield Gt()).find(a=>!Aa.has(a.deviceId));s&&(this.log.warn(`${r} capture fail ${o} times, change new ${s.deviceId}`),r=s.deviceId)}}return r})}close(){var e;super.close(),this._inputTrack&&(this._inputTrack.stop(),this.uninstallTrackEvent(this._inputTrack)),(e=this.manager)==null||e.removeInput(this)}};G([ye(re.INIT,"capture",{ignoreError:!0,sync:!0})],Co.prototype,"setStateToCapture",1),G([I_()],Co.prototype,"capture",1),G([ye("capture","publish",{ignoreError:!0,success(){var r,o;this.room.localTracks.add(this),F.emit(P.LOCAL_TRACK_PUBLISHED,{track:this}),this.emit("4",{mediaType:this.strMediaType,state:"started",prevState:"starting"}),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.uplinkNetworkQuality)||0)>3)&&(this._encodeCheckTimeoutId=setTimeout(()=>{var a,d;if(!((((d=(a=this.room)==null?void 0:a.networkQuality)==null?void 0:d.uplinkNetworkQuality)||0)>3)&&this.isPublished&&this.isMediaTrackActive){let h=this.kind===D.AUDIO,m=this.stat.bytesSent>0;X[m?"addSuccessEvent":"addFailedEvent"]({key:h?503700:513702}),m||(X.addEnum({key:h?503701:513703,value:ta()}),Ve.uploadEvent({log:`stat-encode-failed-${this.kind}-${ea()||_o()}`,userId:this.userId}),this.log.warn("encode failed"),this.emit("6",this))}},5e3))},fail(e){let r="error";if(e.cause instanceof RTCError){let o=e.cause;o.message.includes("timeout")?r="timeout":o.code===Y.API_CALL_ABORTED&&(r="api-call")}this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:"starting",reason:r,error:e.cause||e})}}),Fd(521714,!1)],Co.prototype,"publish",1),G([Ae(e=>function(){return A(this,null,function*(){let r=this.state==="publish"?"started":"starting";e.call(this),this.emit("4",{mediaType:this.strMediaType,state:"stopped",prevState:r,reason:"api-call"}),clearTimeout(this._encodeCheckTimeoutId)})}),ye([],"capture",{sync:!0})],Co.prototype,"unpublish",1);var hi=Co,Aa=new Map;F.on(P.SWITCH_DEVICE_SUCCESS,i=>{i.track.deviceId&&Aa.delete(i.track.deviceId)});var fi=class i extends hi{constructor(e){super(1,kd);l(this,"mediaType",1);l(this,"volume",0);l(this,"profile",{echoCancellation:!0,autoGainControl:!0,noiseSuppression:!0,sampleRate:48e3,channelCount:1,bitrate:40});l(this,"playerMuted",!0);l(this,"pipeline");l(this,"stat",{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0});this.manager=e,this.pipeline=new Ps(e),this.handleMicrophoneAdded=this.handleMicrophoneAdded.bind(this),this.handleMicrophoneRemoved=this.handleMicrophoneRemoved.bind(this)}getAudioLevel(){let e=(this.volume||super.getAudioLevel())*this.captureVolume;return e>1?1:e}get playerMediaTrack(){return this.mediaTrack}setInputMediaStreamTrack(e){return A(this,null,function*(){let r=this.trackSettings||{};X.addEnum({key:501701,value:r.channelCount||0,useUV:!1}),X.addEnum({key:501702,value:r.sampleRate||0,useUV:!1}),X.addEnum({key:502700,value:0});let{sampleRate:o,channelCount:s}=r;this._log.info(`local audio track input ${JSON.stringify({sampleRate:o,channelCount:s})}`),this.pipeline.source.channelCount=s||1,this.pipeline.replaceSource(e),yield Lt(i.prototype,this,"setInputMediaStreamTrack").call(this,e),this.updatePlayingState(!!e)})}capture({deviceId:e,customSource:r,useExactDeviceId:o=!0,retryWhenExactFailed:s=!0}){return super.capture({video:!1,audio:!0,microphoneId:e,echoCancellation:this.profile.echoCancellation,autoGainControl:this.profile.autoGainControl,noiseSuppression:this.profile.noiseSuppression,sampleRate:this.profile.sampleRate,channelCount:this.profile.channelCount,useExactDeviceId:o,retryWhenExactFailed:s,customSource:r})}switchDevice(e){return A(this,null,function*(){if(this.mediaTrack){if(this.deviceId===e)if(e===co){if(yield ep(this.groupId,this.label))return}else return;try{this.log.info(`switchDevice audio to: ${e}`),this.mediaTrack&&this.mediaTrack.stop(),yield this.capture({deviceId:e,useExactDeviceId:!0,retryWhenExactFailed:!1}),F.emit(P.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch microphone success")}catch(r){throw this.log.error(`switch microphone failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}}})}listenDeviceChange(){ht&&!ht.listeners("audioInputRemoved").includes(this.handleMicrophoneRemoved)&&ht.on("audioInputRemoved",this.handleMicrophoneRemoved,this)}handleMicrophoneRemoved(e){return A(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current microphone is lost: ${JSON.stringify(e)}`),ze(this.userId,{eventId:2003,param1:6,streamType:1});let r=yield Gt();r[0]?this.recapture(r[0].deviceId):ht.on("audioInputAdded",this.handleMicrophoneAdded,this)}})}handleMicrophoneAdded(e){this.log.warn(`microphone added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)}update3A(s){return A(this,arguments,function*({echoCancellation:e,noiseSuppression:r,autoGainControl:o}){let a=!1;!L(e)&&e!==this.profile.echoCancellation&&(this.profile.echoCancellation=e,a=!0),!L(r)&&r!==this.profile.noiseSuppression&&(this.profile.noiseSuppression=r,a=!0),!L(o)&&o!==this.profile.autoGainControl&&(this.profile.autoGainControl=o,a=!0),a&&this.deviceId&&(yield this.recapture(this.deviceId))})}get captureVolume(){return this.pipeline.volume}setCaptureVolume(e){this.pipeline.setVolume(e/100),this.pipeline.gain.node&&X.addEnum({key:502700,value:2}),this.resetPlayerSource()}enableTrackANS(e){if(!this._inputTrack)return;let r=this._inputTrack.getConstraints();return r.noiseSuppression=e,this._inputTrack.applyConstraints(r).catch(o=>this._log.warn(`${e?"enable":"disable"} ANS failed `,o))}addDenoiser(e){var r;if(si<=92&&((r=this.trackSettings)==null?void 0:r.sampleRate)!==48e3){this._log.warn("denoiser only support sampleRate 48000 before chrome 93");return}X.addEnum({key:502700,value:1}),this.pipeline.denoiser.setNode(e),this.resetPlayerSource(),this.enableTrackANS(!1)}removeDenoiser(e){this.pipeline.denoiser.node===e&&(this.pipeline.denoiser.deleteNode(),this.resetPlayerSource(),this.enableTrackANS(!0))}resetPlayerSource(){this.player.setSourceNode(this.pipeline.gain.node||this.pipeline.denoiser.node||this.pipeline.source.node)}close(){this.pipeline.remove(),ht.off("audioInputAdded",this.handleMicrophoneAdded,this),ht.off("audioInputRemoved",this.handleMicrophoneRemoved,this),super.close()}recapture(e){return A(this,null,function*(){try{yield Lt(i.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield Gt()).find(s=>s.deviceId!==e);if(o)yield Lt(i.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}encodeFrame(e){return this.manager?this.manager.encodePipeline.reduceRight((r,o)=>o?o({frame:r}):r,e):e}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}};var Do=class{constructor(t,e=!1){this.dataView=t;this.isSEI&&(e?this.addPreventionByte():this.removePreventionByte())}addPreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-2,r=[],o=0;for(let a=t;a<=e;a++){let d=this.dataView.getInt8(a);switch(d){case 0:case 1:case 2:case 3:o===2&&(r.push(3),o=0),d==0?o++:o=0,r.push(d);break;default:o=0,r.push(d);break}}r.push(this.dataView.getInt8(this.dataView.byteLength-1));let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}removePreventionByte(){let t=this.seiPayloadStartIndex,e=this.dataView.byteLength-1,r=[],o=0;for(let a=t;a<=e;a++)switch(this.dataView.getInt8(a)){case 0:o++,r.push(this.dataView.getInt8(a));break;case 3:o!==2&&r.push(this.dataView.getInt8(a)),o=0;break;default:r.push(this.dataView.getInt8(a)),o=0;break}let s=new DataView(new Uint8Array([...new Uint8Array(this.dataView.buffer).slice(0,t),...r]).buffer);this.dataView=s}get isSEI(){return this.dataView.getUint8(4)===6}get seiPayloadStartIndex(){let t=6;for(let e=6;e<this.dataView.buffer.byteLength&&(t++,this.dataView.getUint8(e)===255);e++);return t}get seiPayloadType(){return this.isSEI?this.dataView.getUint8(5):null}get seiPayload(){if(!this.isSEI)return null;let t=0,e=6;for(let s=6;s<this.dataView.buffer.byteLength;s++){let a=this.dataView.getUint8(s);if(e++,a===255)t+=255;else{t+=a;break}}let r=new ArrayBuffer(t),o=new DataView(r);for(let s=0;s<r.byteLength;s++,e++)o.setInt8(s,this.dataView.getInt8(e));return o}};var Bd=class{constructor(){l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_seiPayloadType",243)}encodeSEINalu(t){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,this._seiPayloadType);for(let d=0;d<r;d++)s.push(255);s.push(o);let a=new DataView(t);return s.push(...new Uint8Array(a.buffer)),s.push(128),new Do(new DataView(new Uint8Array(s).buffer),!0)}sendSEI(t,e){e!=null&&e.seiPayloadType&&(this._seiPayloadType=e.seiPayloadType),this._seiMessageList.push(t),e!=null&&e.small&&this._smallSeiMessageList.push(t)}isEmpty(){return!this._seiMessageList.length}getNaluCount(t){let e=0,r=0,o=new DataView(t);for(let s=0;s<t.byteLength;s++)switch(o.getUint8(s)){case 0:e++;break;case 1:(e===2||e===3)&&r++,e=0;break;default:e=0;break}return r}encode(t,e){let r=e?this._smallSeiMessageList:this._seiMessageList;if(r.length>0&&t.data.byteLength>0){let s=9-this.getNaluCount(t.data);if(s<=0)return 0;let a=r.splice(0,s).reverse().map(this.encodeSEINalu.bind(this)),d=a.reduce((v,N)=>v+N.dataView.byteLength,0),h=new ArrayBuffer(d+t.data.byteLength),m=new DataView(h),T=new DataView(t.data),I=0;for(let v=0;v<a.length;v++)for(let N=0;N<a[v].dataView.byteLength;N++)m.setInt8(I++,a[v].dataView.getInt8(N));for(let v=0;v<t.data.byteLength;v++)m.setInt8(I++,T.getInt8(v));return t.data=h,a.length}return 0}};var No=class No extends hi{constructor(e,r=4){super(r,Zt);l(this,"profile",{width:640,height:480,frameRate:15,bitrate:500});l(this,"stat",{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0});l(this,"small");l(this,"isNeedToSetBandwidth");l(this,"muteImage");l(this,"manager");l(this,"_seiCodec",new Bd);this.manager=e;let o=()=>{this.isAllowed2k4k(this.profile)?this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),this.setProfile(pe(J({},this.profile),{width:1920,height:1080})),this.applyProfile())};this.on("input-media-track-changed",o),this.on("publish",o),this.handleCameraAdded=this.handleCameraAdded.bind(this),this.handleCameraRemoved=this.handleCameraRemoved.bind(this)}get facingMode(){if(!(!Ns||!this.mediaTrack))return this.mediaTrack.getSettings().facingMode}get isQosClearFirst(){var e;return((e=this._inputTrack)==null?void 0:e.contentHint)==="detail"}setMute(e){return A(this,null,function*(){var r,o,s;if(Se(e)){if(this.muteImage===e)return;yield(r=this.manager)==null?void 0:r.deleteWatermark("mute"),yield(o=this.manager)==null?void 0:o.setWatermark({x:0,y:0,width:this.settings.width,height:this.settings.height,type:"mute",zIndex:999,imageUrl:e}),this.muteImage=e,Lt(No.prototype,this,"setMute").call(this,!1)}else yield(s=this.manager)==null?void 0:s.deleteWatermark("mute"),this.muteImage=void 0,Lt(No.prototype,this,"setMute").call(this,e)})}capture({deviceId:e,facingMode:r,useExactDeviceId:o=!0,customSource:s,retryWhenExactFailed:a=!0}){return super.capture({audio:!1,video:!0,facingMode:r||this.facingMode,cameraId:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,useExactDeviceId:o,retryWhenExactFailed:a,customSource:s})}setProfile(e){let r=J({},e),o=r.width>r.height;r.width*r.height<=160*120&&pt&&fo&&(this.log.warn(`resolution is ${r.width}*${r.height}, fallback to 240*180`),r.width=o?240:180,r.height=o?180:240,r.bitrate=Math.max(r.bitrate,150)),r.width*r.height>1280*720&&dm&&(r.width=o?1280:720,r.height=o?720:1280,this.log.warn("reset to 1280 * 720 on iOS 13~14")),r.bitrate&&(this.isNeedToSetBandwidth=r.bitrate!==this.profile.bitrate),this.isAllowed2k4k(this.profile)?super.setProfile(r):(this.log.warn("Resolution is reset to 1080p, need to upgrade ability here https://cloud.tencent.com/document/product/647/85386"),super.setProfile(pe(J({},this.profile),{width:1920,height:1080})))}applyProfile(){return A(this,null,function*(){var o;if(!this.mediaTrack)return;let e=this.settings;if(!(!(e.height!==this.profile.height||e.width!==this.profile.width||e.frameRate!==this.profile.frameRate)||!this.deviceId)&&(Yt===16?yield this.recapture(this.deviceId):(yield(o=this.mediaTrack)==null?void 0:o.applyConstraints({width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate}),this.manager&&this.manager.changeInput(this)),this.room&&this.settings.height>=1440&&this.state==="publish"&&this.room.sendAbilityStatus({"2k4k":1}),this.isNeedToSetBandwidth&&this.room&&this.room.setBandWidth))return this.isNeedToSetBandwidth=!1,this.room.setBandWidth({bandwidth:this.profile.bitrate,type:D.VIDEO,videoType:D.BIG})})}get settings(){let e={width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate};return Ns&&this.mediaTrack&&Object.assign(e,this.mediaTrack.getSettings()),e}get scaleResolutionDownBy(){let{settings:e}=this;return e.width===this.profile.width&&e.height===this.profile.height?1:qc()&&this.profile.width>this.profile.height&&e.height>e.width?Math.max(e.width/this.profile.height,e.height/this.profile.width,1):Math.max(e.width/this.profile.width,e.height/this.profile.height,1)}isAllowed2k4k(e){var r;return!this.room||!this.room.scheduleResult||this.isScreen||e.height*e.width<2560*1440?!0:((r=this.room.scheduleResult.trtcAutoConf)==null?void 0:r["2k4k"])===1}isNeedToSwitchDevice(e){return!(!this.mediaTrack||this.deviceId===e||this.facingMode===e)}switchDevice(e){return A(this,null,function*(){try{if(!this.isNeedToSwitchDevice(e))return;let r={useExactDeviceId:!0,retryWhenExactFailed:!1};e==="user"||e==="environment"?r.facingMode=e:r.deviceId=e,this.mediaTrack.stop(),yield this.capture(r),F.emit(P.SWITCH_DEVICE_SUCCESS,{track:this}),this.log.info("switch camera success")}catch(r){throw this.log.error(`switch camera failed ${r}`),this.deviceId&&this.recapture(this.deviceId),r}})}listenDeviceChange(){ht&&!ht.listeners("videoInputRemoved").includes(this.handleCameraRemoved)&&ht.on("videoInputRemoved",this.handleCameraRemoved,this)}handleCameraRemoved(e){return A(this,null,function*(){if(e.deviceId===this.deviceId){this.log.warn(`current camera is lost: ${JSON.stringify(e)}`),ze(this.userId,{eventId:2003,param1:7,streamType:2});let r=yield er();r[0]?this.recapture(r[0].deviceId):ht.on("videoInputAdded",this.handleCameraAdded,this)}})}handleCameraAdded(e){return A(this,null,function*(){this.log.warn(`camera added: ${JSON.stringify(e)}`),this.recapture(e.deviceId)})}encodeFrame(e,r){if(!this.manager)return e;let o=r?8:this.mediaType;return this.manager.encodePipeline.reduceRight((s,a)=>a?a({frame:s,mediaType:o}):s,e)}get enableEncodeFrame(){return this.manager?this.manager.encodePipeline.some(e=>e):!1}play(e,r){return L(this.mirror)&&!this.isScreen&&this.setMirror("view"),super.play(e,r)}close(){ht.off("videoInputAdded",this.handleCameraAdded,this),ht.off("videoInputRemoved",this.handleCameraRemoved,this),super.close()}recapture(e){return A(this,null,function*(){try{yield Lt(No.prototype,this,"recapture").call(this,e)}catch(r){let o=(yield er()).find(s=>s.deviceId!==e);if(o)yield Lt(No.prototype,this,"recapture").call(this,o.deviceId);else throw r}})}setContentHint(e){this.mediaTrack&&"contentHint"in this.mediaTrack&&(this.mediaTrack.contentHint!==e&&(this.log.info(`setContentHint ${e}`),this.mediaTrack.contentHint=e),this.outMediaTrack&&this.outMediaTrack.contentHint!==e&&(this.outMediaTrack.contentHint=e))}};G([Fi(function(e){this.setContentHint(e.contentHint||"motion")})],No.prototype,"capture",1);var Ir=No;var A_=ia();if(typeof navigator!="undefined"&&navigator.mediaDevices&&"setCaptureHandleConfig"in navigator.mediaDevices)try{navigator.mediaDevices.setCaptureHandleConfig({handle:A_,exposeOrigin:!0,permittedOrigins:["*"]})}catch(i){}var zT=function(i){return A(this,null,function*(){let t=null,e=YT(i);U.info(`getDisplayMedia with constraints: ${JSON.stringify(e)}`);let r=yield navigator.mediaDevices.getDisplayMedia(e);i.systemAudio&&r.getAudioTracks().length===0&&(ys&&si<74||$t||_r)&&U.warn("Your browser not support capture system audio");let o=r.getVideoTracks()[0];if(o){if(i.frameRate)try{yield o.applyConstraints({frameRate:{min:i.frameRate,ideal:i.frameRate},width:i.width,height:i.height})}catch(s){U.warn(`screen applyConstraints failed: ${s}`)}i.captureElement&&(yield XT(o,i.captureElement))}if(i.audio){let s=QT(i);U.info(`getUserMedia with constraints: ${JSON.stringify(s)}`),t=yield navigator.mediaDevices.getUserMedia(s),r.addTrack(t.getAudioTracks()[0])}return r})};function XT(i,t){return A(this,null,function*(){var e;if("CropTarget"in window&&"fromElement"in CropTarget&&Fe(i.cropTo))try{if(!(((e=i.getCaptureHandle())==null?void 0:e.handle)===A_))return;let o=yield CropTarget.fromElement(t);yield i.cropTo(o)}catch(r){U.warn(`cropTo target failed ${r}`)}})}function QT(i){let t={echoCancellation:i.echoCancellation,autoGainControl:i.autoGainControl,noiseSuppression:i.noiseSuppression,sampleRate:i.sampleRate,channelCount:i.channelCount};return L(i.microphoneId)||(t.deviceId=i.microphoneId),{audio:t,video:!1}}function YT(i){let t={preferCurrentTab:i.preferDisplaySurface==="current-tab"||!!i.captureElement,systemAudio:"include",selfBrowserSurface:"include",surfaceSwitching:"include"},e={width:$t?{max:i.width}:{ideal:i.width,max:i.width},height:$t?{max:i.height}:{ideal:i.height,max:i.height},frameRate:i.frameRate,displaySurface:i.preferDisplaySurface||"monitor"};if(t.video=e,i.systemAudio){let{echoCancellation:r=!0,noiseSuppression:o=!1,autoGainControl:s=!1}=i;t.audio={echoCancellation:r,noiseSuppression:o,autoGainControl:s,sampleRate:48e3}}return t}var b_=zT;var Bi=class extends Ir{constructor(e){super(e,2);l(this,"profile",{width:1920,height:1080,frameRate:5,bitrate:1600});l(this,"objectFit","contain");l(this,"isScreen",!0);this._log.id=`s-${this._log.id}`}capture(T){return A(this,arguments,function*({systemAudio:e=!1,autoGainControl:r,echoCancellation:o,noiseSuppression:s,audioTrack:a,videoTrack:d,captureElement:h,preferDisplaySurface:m}){try{let I;return d||a?(I=new MediaStream,d&&I.addTrack(d),a&&I.addTrack(a)):I=yield b_({audio:!1,systemAudio:e,width:this.profile.width,height:this.profile.height,frameRate:this.profile.frameRate,autoGainControl:r,echoCancellation:o,noiseSuppression:s,captureElement:h,preferDisplaySurface:m}),yield this.setInputMediaStreamTrack(I.getVideoTracks()[0]),I}catch(I){throw this.log.error(`getDisplayMedia error observed ${I}`),I instanceof ue?I:new ue({code:Y.INITIALIZE_FAILED,name:I.name,message:I.message})}})}switchDevice(e){return A(this,null,function*(){throw new Error("Method not implemented.")})}};G([Fi(function(e){this.setContentHint(e.contentHint||"detail")})],Bi.prototype,"capture",1);var wo=class extends fi{constructor(t){super(t),this._log.id=`s-${this._log.id}`}};var ZT="registerProcessor('dumper', class extends AudioWorkletProcessor {process(inputs) {this.port.postMessage(inputs);return true;}});",ip;function ba(i){return A(this,null,function*(){let t=lt("dump");ip||(ip=Ro(t,URL.createObjectURL(new Blob([ZT],{type:"application/javascript"})))),yield ip;let e=new AudioWorkletNode(t,"dumper",{numberOfInputs:i.length,numberOfOutputs:0});return i.forEach((r,o)=>r.connect(e,0,o)),new ReadableStream({start(r){e.port.onmessage=o=>{r.enqueue(o.data)}},cancel(){i.forEach(r=>r.disconnect(e)),e.port.close()}})})}var $d=class extends wd{constructor(e){super();this.room=e;l(this,"_localAudioTrack");l(this,"_localScreenAudioTrack");l(this,"log",U.createLogger({id:"am"}));l(this,"denoiser");l(this,"mixChangedDebounce");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId))}get _localAudioPipline(){var e;return(e=this._localAudioTrack)==null?void 0:e.pipeline}dump(e){var T,I;if(!this._localAudioTrack)return;let r=[],o=[];(T=this._localAudioPipline)!=null&&T.source.node&&(r.push(this._localAudioPipline.source.node),o.push("mic")),(I=this._localAudioPipline)!=null&&I.denoiser.node&&(r.push(this._localAudioPipline.denoiser.node),o.push("mic-processed")),this.mixWeight>1&&(r.push(this.audioContext.createMediaStreamSource(this._localAudioPipline.stream)),o.push("mix")),this.log.info(`dump audio track ${o}, duration: ${e}`);let s=new AbortController,a=[],d=setTimeout(()=>{this.log.info('dump audio track complete please input "download()" to download.'),s.abort("timeout")},e*1e3),h=()=>{for(let v=0;v<o.length;v++){let N=URL.createObjectURL(new Blob(a[v])),j=document.createElement("a");j.href=N,j.download=`${o[v]}.pcm`,j.style.display="none",document.body.appendChild(j),j.click(),URL.revokeObjectURL(N),j.remove()}clearTimeout(d),s.abort("download")},m=ba(r).then(v=>v.pipeTo(new WritableStream({write(N){N.forEach((j,H)=>a[H]=a[H]?a[H].concat(j[0]):[j[0]])}}),s).catch(N=>h));return{then:m.then.bind(m),download:h}}getPCM(e){var a;if(L(WritableStream)){this.log.warn("getPCM failed: browser not support WritableStream");return}if(!((a=this._localAudioPipline)!=null&&a.source.node)){this.log.warn("getPCM failed: no local audio track");return}this.log.warn("getPCM");let r=new Float32Array(1920),o=0,s=new AbortController;return ba([this._localAudioPipline.source.node]).then(d=>d.pipeTo(new WritableStream({write(h){h[0][0]&&(r.set(h[0][0],o),o+=h[0][0].length,o>=1920&&(o=0,e(r),r=new Float32Array(1920)))}}),s).catch(h=>this.log.warn(`stop getPCM reason:${h}`))),s}get hasScreenAudioTrack(){return this._localScreenAudioTrack!==null}get hasAudioTrack(){return!L(this._localAudioTrack)}changeInput(e){if(e instanceof wo)return this._localScreenAudioTrack=e,e.pipeline.connect(),this.mixOnChange();if(e instanceof fi)return this._localAudioTrack=e,this.denoiser&&e.addDenoiser(this.denoiser),e.pipeline.connect(),this.mixOnChange();if(e instanceof Mo)return e.setOutputMediaStreamTrack(e.mediaTrack)}mixOnChange(){return this.mixChangedDebounce||(this.mixChangedDebounce=Promise.resolve().then(()=>{var e,r;return delete this.mixChangedDebounce,Promise.all([(e=this._localAudioTrack)==null?void 0:e.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localAudioTrack.mediaTrack),(r=this._localScreenAudioTrack)==null?void 0:r.setOutputMediaStreamTrack(this.mixWeight>1?this.mixTrack:this._localScreenAudioTrack.mediaTrack)])})),this.mixChangedDebounce}removeInput(e){e instanceof wo?delete this._localScreenAudioTrack:e instanceof fi?delete this._localAudioTrack:e instanceof Mo}addDenoiser(e){var r;this.denoiser=e,(r=this._localAudioTrack)==null||r.addDenoiser(e)}removeDenoiser(e){var r;delete this.denoiser,(r=this._localAudioTrack)==null||r.removeDenoiser(e)}destroy(){this.close()}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};function R_(i=30,t=2){return Ae((e,r)=>function(...o){return new Promise((s,a)=>{let d=setTimeout(()=>{let h=new ue({code:Y.API_CALL_TIMEOUT,message:`checkPendingPromise ${r}() timeout ${i}s`});U.warn(h),t===2?a(h):t===1&&s()},i*1e3);e.apply(this,o).then(s,a).finally(()=>{clearTimeout(d)})})})}var _i=class _i extends vo{constructor(e,r,o){super({userId:r.userId,sdkAppId:e.sdkAppId,mediaType:o,room:e});this.room=e;this.user=r;l(this,"tinyId");l(this,"isRemote",!0);l(this,"jitterBufferDelay",0);l(this,"_decodeCheckTimeoutId",-1);this.tinyId=r.tinyId}setMute(e){this.isAvailable&&super.setMute(e)}setInputMediaStreamTrack(e){super.setInputMediaStreamTrack(e),this.isAvailable&&this.isSubscribed&&this.player.setTrack(this.outMediaTrack)}waitHasMediaTrack(){return new Promise(e=>{this.mediaTrack?e():this.once("input-media-track-changed",e)})}get isSubscribing(){return this.state.toString()==="subscribeing"}get isSubscribed(){return this.state===_i.STATE_SUBSCRIBE}subscribe(e){return e}unsubscribe(){this.player.setTrack(null),this.streamType==="main"&&this.kind==="video"&&this.room.changeType(!1,this.user)}reportDecodeResult(e,r){let o=this.kind===D.AUDIO;X[e?"addSuccessEvent":"addFailedEvent"]({key:o?504700:514702}),e||(X.addEnum({key:o?504701:514703,value:ta()}),Ve.uploadEvent({log:`stat-decode-failed-${this.kind}-${ea()||_o()}`,userId:this.room.userId}),this._log.warn(`decode failed: isPlaying: ${this.player.isPlaying} ${this.kind===D.AUDIO?`audioLevel: ${this.getAudioLevel()}`:`framesDecoded: ${this.stat.framesDecoded>0}`}`),this.emit("decode-failed",{error:r}))}updatePlayingState(e){if(this.isPlayCalled&&this.player.isStopped===e){if(e&&(!this.isSubscribed||!this.isAvailable||!this.outMediaTrack)){this.log.info(`abort play, isSubscribed: ${this.isSubscribed} isAvailable: ${this.isAvailable} hasTrack: ${!!this.outMediaTrack} `);return}super.updatePlayingState(e)}}close(){super.close(),this.outMediaTrack&&this.uninstallTrackEvent(this.outMediaTrack)}onFlagChanged(){this.updatePlayingState(this.isAvailable)}onTrackMuted(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackMuted()}onTrackUnmuted(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackUnmuted()}onTrackEnded(){this.isAvailable&&(this.isSubscribed||this.isSubscribing)&&this.isPlayCalled&&super.onTrackEnded()}};l(_i,"STATE_SUBSCRIBE","subscribe"),G([R_(5,1)],_i.prototype,"waitHasMediaTrack",1),G([ye(re.INIT,_i.STATE_SUBSCRIBE,{success(){var r,o;this.log.info("subscribed"),F.emit(P.REMOTE_TRACK_SUBSCRIBED,{track:this}),this.updatePlayingState(!0),!((((o=(r=this.room)==null?void 0:r.networkQuality)==null?void 0:o.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&(this._decodeCheckTimeoutId=setTimeout(()=>{var a,d;if(!((((d=(a=this.room)==null?void 0:a.networkQuality)==null?void 0:d.downlinkNetworkQuality)||0)>3||this.player.isInAutoPlayFailedState)&&this.isSubscribed&&this.isPlayCalled&&this.stat.bytesReceived>0){let h=this.kind===D.AUDIO,m=this.player.isPlaying||(h?this.getAudioLevel()>0:this.stat.framesDecoded>0);this.reportDecodeResult(m)}},5e3),this.player.once(et.ERROR,s=>{s.code===MediaError.MEDIA_ERR_DECODE&&(clearTimeout(this._decodeCheckTimeoutId),this.reportDecodeResult(!1,3))}))},ignoreError:!0}),Fd(521716,!1)],_i.prototype,"subscribe",1),G([ye(_i.STATE_SUBSCRIBE,re.INIT,{sync:!0,success(){this.log.info("unsubscribed"),this.updatePlayingState(!1),F.emit(P.REMOTE_TRACK_UNSUBSCRIBED,{track:this}),clearTimeout(this._decodeCheckTimeoutId)}})],_i.prototype,"unsubscribe",1);var ks=_i;var Mo=class extends ks{constructor(e,r){super(e,r,1);l(this,"volume",0);l(this,"mediaType",1);l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.audioManager}decodeFrame(e){if(!this.manager)return e;let r=e;for(let o of this.manager.decodePipeline)if(o&&(r=o({frame:r,track:this}),!r))return;return r}getAudioLevel(){let e=this.volume||super.getAudioLevel();return e>1?1:e}get isAvailable(){return this.user.muteState.audioAvailable}};var eI=[-1,-1,1,-1,-1,1,1,1],tI=[0,0,1,0,0,1,1,1];var Vt=class extends re{constructor(e,r){super();this.context=e;l(this,"name");l(this,"input");l(this,"output");l(this,"texture");l(this,"ctx2d",null);l(this,"fbo");l(this,"width",0);l(this,"height",0);l(this,"x",0);l(this,"y",0);l(this,"program");l(this,"vertexShader");l(this,"fragmentShader");l(this,"totalFrames",0);l(this,"dropFrames",0);l(this,"matchInputSize",!0);l(this,"texCoordBuffer");l(this,"positionBuffer");l(this,"lastInfo",{name:"",timestamp:0,totalFrames:0,x:0,y:0,width:0,height:0,fps:0});l(this,"cost",0);l(this,"_canvas",null);l(this,"_image");l(this,"log");if(this.context.on("disconnect",this.close,this),this.name=r.name,this.log=r.logger,this.matchInputSize=r.matchInputSize!==!1,this.width=r.width||e.width,this.height=r.height||e.height,this._image=r.image,e instanceof Ct){e.ctx&&r.create2d&&(typeof OffscreenCanvas=="function"&&Yt!==16?this._canvas=new OffscreenCanvas(this.width,this.height):(this._canvas=document.createElement("canvas"),this._canvas.width=this.width,this._canvas.height=this.height),this.ctx2d=this._canvas.getContext("2d"),this._image=this._canvas);return}try{let o=e.ctx;this.texCoordBuffer=this.createBuffer(tI),this.positionBuffer=this.createBuffer(eI),r.createTexture!==!1&&(this.texture=o.createTexture(),this.useTexture(),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.pixelStorei(o.PACK_ALIGNMENT,1),o.pixelStorei(o.UNPACK_ALIGNMENT,1)),r.useFbo&&(this.fbo=o.createFramebuffer(),this.useBufferFrame(),this.useTexture(),o.texImage2D(o.TEXTURE_2D,0,o.RGBA,this.width,this.height,0,o.RGBA,o.UNSIGNED_BYTE,null),o.framebufferTexture2D(o.FRAMEBUFFER,o.COLOR_ATTACHMENT0,o.TEXTURE_2D,this.texture,0)),r.useDefaultProgram?this.program=e.defaultProgam:(r.vertexShaderSource||r.fragmentShaderSource)&&(this.vertexShader=r.vertexShaderSource?e.createShader(o.VERTEX_SHADER,r.vertexShaderSource):e.defaultVShader,this.fragmentShader=r.fragmentShaderSource?e.createShader(o.FRAGMENT_SHADER,r.fragmentShaderSource):e.defaultFShader,this.program=e.createProgram(this.vertexShader,this.fragmentShader))}catch(o){this.context.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${o.message||o}`}))}}get image(){return this._image}set image(e){this._image=e}createFramebuffer(e){let r=this.context.ctx,o=r.createFramebuffer();return r.bindFramebuffer(r.FRAMEBUFFER,o),r.framebufferTexture2D(r.FRAMEBUFFER,r.COLOR_ATTACHMENT0,r.TEXTURE_2D,e,0),o}connect(e,...r){return e.addInput(this,...r),this.output=e,e}addInput(e,...r){this.input=e,this.matchInputSize&&e.width&&e.height&&this.resize(e.width,e.height)}requestFrame(e){let r=Date.now();if(this.context instanceof _t&&this.render(e)||this.context instanceof Ct&&this.render2d(e))this.totalFrames++;else return!1;return this.cost=Date.now()-r,!0}render2d(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?this.draw2d(this.input.image,0,0,this.width,this.height):!1}update(e=0){var r;(r=this.output)==null||r.update(e)}disconnect(...e){var r;(r=this.output)==null||r.removeInput(this,...e),delete this.output}removeInput(e,...r){delete this.input}close(){var e,r;if(this.context.off("disconnect",this.close,this),(e=this.output)==null||e.removeInput(this),delete this.output,(r=this.input)==null||r.disconnect(),this.context instanceof _t){let o=this.context.ctx;o.deleteBuffer(this.texCoordBuffer),o.deleteBuffer(this.positionBuffer),this.fbo&&o.deleteFramebuffer(this.fbo),this.texture&&o.deleteTexture(this.texture),this.vertexShader&&this.vertexShader!==this.context.defaultVShader&&o.deleteShader(this.vertexShader),this.fragmentShader&&this.fragmentShader!==this.context.defaultFShader&&o.deleteShader(this.fragmentShader),this.program&&this.program!==this.context.defaultProgam&&o.deleteProgram(this.program)}this._canvas&&(this._canvas.width=0,this._canvas.height=0,this.ctx2d=null),this.removeAllListeners()}useTexture(){this.useTextures(this.texture)}useInputTexture(){var e;this.useTextures((e=this.input)==null?void 0:e.texture)}useTextures(...e){let r=this.context.ctx;e.forEach((o,s)=>{o&&(r.activeTexture(r.TEXTURE0+s),r.bindTexture(r.TEXTURE_2D,o))})}useProgram(){this.context.ctx.useProgram(this.program)}useBufferFrame(){let e=this.context.ctx;e.bindFramebuffer(e.FRAMEBUFFER,this.fbo||null)}createBuffer(e){let r=this.context.ctx,o=r.createBuffer();return r.bindBuffer(r.ARRAY_BUFFER,o),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW),o}setTexBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.texCoordBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}setPosBuffer(e){let r=this.context.ctx;r.bindBuffer(r.ARRAY_BUFFER,this.positionBuffer),r.bufferData(r.ARRAY_BUFFER,new Float32Array(e),r.STATIC_DRAW)}changeBufferData(e,r){let o=this.context.ctx;o.bindBuffer(o.ARRAY_BUFFER,e),o.bufferData(o.ARRAY_BUFFER,new Float32Array(r),o.STATIC_DRAW)}setAttributes(...e){let r=this.context.ctx;e.forEach((o,s)=>{r.enableVertexAttribArray(s),r.bindBuffer(r.ARRAY_BUFFER,o),r.vertexAttribPointer(s,2,r.FLOAT,!1,0,0)})}getVertexPoint(e,r){return[e/this.width*2-1,r/this.height*2-1]}layout2texCoords(e){return[...this.getVertexPoint(e.x,e.y),...this.getVertexPoint(e.x+e.width,e.y),...this.getVertexPoint(e.x,e.y+e.height),...this.getVertexPoint(e.x+e.width,e.y+e.height)]}resize(e,r){if(!(this.width===e&&this.height===r)){if(this.width=e,this.height=r,this._canvas&&(this._canvas.width=e,this._canvas.height=r),this.texture&&this.fbo){this.useTexture();let o=this.context.ctx;o.texImage2D(o.TEXTURE_2D,0,o.RGBA,e,r,0,o.RGBA,o.UNSIGNED_BYTE,null)}this.output&&this.output.matchInputSize&&this.output.resize(e,r)}}draw(e,r){this.setAttributes(e||this.positionBuffer,r||this.texCoordBuffer);let o=this.context.ctx;o.drawArrays(o.TRIANGLE_STRIP,0,4)}draw2d(e,r,o,s,a){return this.ctx2d&&e?(e instanceof ImageData?this.ctx2d.putImageData(e,r,o):(this.ctx2d.drawImage(e,r,o,s,a),typeof VideoFrame!="undefined"&&e instanceof VideoFrame&&e.close()),!0):!1}getInfo(){var I;let{totalFrames:e,x:r,y:o,width:s,height:a,name:d,cost:h}=this,m=Date.now(),T=(e-this.lastInfo.totalFrames)/((m-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:a,timestamp:m,fps:T,name:d,cost:h},J({parent:(I=this.input)==null?void 0:I.getInfo()},this.lastInfo)}createTexture(e){let r=this.context.ctx,o=r.createTexture();return this.useTextures(o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,e),o}};G([ye(re.INIT,"connected",{sync:!0})],Vt.prototype,"connect",1),G([ye("connected",re.INIT,{ignoreError:!0,sync:!0})],Vt.prototype,"disconnect",1),G([ye([],"closed",{sync:!0})],Vt.prototype,"close",1);var $p={};Kr($p,{Events:()=>tt,Inspect:()=>sr,LastSink:()=>Oo,Sink:()=>ne,Subscribe:()=>Po,TimeoutError:()=>Ra,audit:()=>VI,bindCallback:()=>AI,bindNodeCallback:()=>bI,buffer:()=>mI,bufferCount:()=>lI,bufferTime:()=>iS,call:()=>C_,catchError:()=>va,combineLatest:()=>N_,concat:()=>nI,concatMap:()=>XI,concatMapTo:()=>QI,count:()=>CI,create:()=>Re,debounce:()=>FI,debounceTime:()=>BI,defer:()=>w_,delay:()=>oS,deliver:()=>ce,dispose:()=>Hd,elementAt:()=>$I,empty:()=>ko,every:()=>qI,exhaustMap:()=>KI,exhaustMapTo:()=>eS,filter:()=>Uo,find:()=>HI,findIndex:()=>WI,first:()=>GI,fromAnimationFrame:()=>SI,fromArray:()=>fI,fromEvent:()=>De,fromEventPattern:()=>_I,fromFetch:()=>gI,fromIterable:()=>EI,fromPromise:()=>P_,fromReadableStream:()=>II,fromReader:()=>TI,groupBy:()=>tS,identity:()=>rI,ignoreElements:()=>MI,iif:()=>cI,inspect:()=>D_,interval:()=>dp,last:()=>jI,map:()=>Vs,mapTo:()=>zI,max:()=>DI,merge:()=>oI,mergeMap:()=>YI,mergeMapTo:()=>ZI,min:()=>NI,never:()=>RI,nothing:()=>Oe,of:()=>hI,pairwise:()=>JI,pipe:()=>be,race:()=>sI,range:()=>yI,reduce:()=>lp,retry:()=>aS,scan:()=>Up,share:()=>gi,shareReplay:()=>aI,skip:()=>PI,skipUntil:()=>xI,skipWhile:()=>Jd,startWith:()=>xo,subject:()=>gt,subscribe:()=>ke,sum:()=>wI,switchMap:()=>Fr,switchMapTo:()=>Vo,take:()=>Sr,takeLast:()=>OI,takeUntil:()=>We,takeWhile:()=>x_,tap:()=>Ca,throttle:()=>LI,throwError:()=>vI,timeInterval:()=>rS,timeout:()=>Bp,timer:()=>up,toPromise:()=>sS,toReadableStream:()=>nS,withLatestFrom:()=>uI,zip:()=>dI});function Oe(...i){}var C_=i=>i(),rI=i=>i;function Hd(){this.dispose()}var D_=()=>typeof __FASTRX_DEVTOOLS__!="undefined",iI=1,sr=class extends Function{toString(){return`${this.name}(${this.args.length?[...this.args].join(", "):""})`}subscribe(t){let e=new sp(t,this,this.streamId++);return tt.subscribe({id:this.id,end:!1},{nodeId:e.sourceId,streamId:e.id}),this(e),e}},Oo=class{constructor(){this.defers=new Set,this.disposed=!1}next(t){}complete(){this.dispose()}error(t){this.dispose()}get bindDispose(){return()=>this.dispose()}dispose(){this.disposed=!0,this.complete=Oe,this.error=Oe,this.next=Oe,this.dispose=Oe,this.subscribe=Oe,this.doDefer()}subscribe(t){return t instanceof sr?t.subscribe(this):t(this),this}get bindSubscribe(){return t=>this.subscribe(t)}doDefer(){this.defers.forEach(C_),this.defers.clear()}defer(t){this.defers.add(t)}removeDefer(t){this.defers.delete(t)}reset(){this.disposed=!1,delete this.complete,delete this.next,delete this.dispose,delete this.next,delete this.subscribe}resetNext(){delete this.next}resetComplete(){delete this.complete}resetError(){delete this.error}},ne=class extends Oo{constructor(t){super(),this.sink=t,t.defer(this.bindDispose)}next(t){this.sink.next(t)}complete(){this.sink.complete()}error(t){this.sink.error(t)}},Po=class extends Oo{constructor(t,e=Oe,r=Oe,o=Oe){if(super(),this._next=e,this._error=r,this._complete=o,this.then=Oe,t instanceof sr){let s={toString:()=>"subscribe",id:0,source:t};this.defer(()=>{tt.defer(s,0)}),tt.create(s),tt.pipe(s),this.sourceId=s.id,this.subscribe(t),tt.subscribe({id:s.id,end:!0}),e==Oe?this._next=a=>tt.next(s,0,a):this.next=a=>{tt.next(s,0,a),e(a)},o==Oe?this._complete=()=>tt.complete(s,0):this.complete=()=>{this.dispose(),tt.complete(s,0),o()},r==Oe?this._error=a=>tt.complete(s,0,a):this.error=a=>{this.dispose(),tt.complete(s,0,a),r()}}else this.subscribe(t)}next(t){this._next(t)}complete(){this.dispose(),this._complete()}error(t){this.dispose(),this._error(t)}};function be(i,...t){return t.reduce((e,r)=>r(e),i)}function Re(i,t,e){if(D_()){let r=Object.defineProperties(Object.setPrototypeOf(i,sr.prototype),{streamId:{value:0,writable:!0,configurable:!0},name:{value:t,writable:!0,configurable:!0},args:{value:e,writable:!0,configurable:!0},id:{value:0,writable:!0,configurable:!0}});tt.create(r);for(let o=0;o<e.length;o++){let s=e[o];typeof s=="function"&&s instanceof sr&&tt.addSource(r,s)}return r}return i}function ce(i,t){return function(...e){return r=>{if(r instanceof sr){let o=Re(s=>{let a=new i(s,...e);a.sourceId=o.id,a.subscribe(r)},t,arguments);return o.source=r,tt.pipe(o),o}else return o=>r(new i(o,...e))}}}function $i(i,t){window.postMessage({source:"fastrx-devtools-backend",payload:{event:i,payload:t}})}var sp=class extends ne{constructor(t,e,r){super(t),this.source=e,this.id=r,this.sourceId=t.sourceId,this.defer(()=>{tt.defer(this.source,this.id)})}next(t){tt.next(this.source,this.id,t),this.sink.next(t)}complete(){tt.complete(this.source,this.id),this.sink.complete()}error(t){tt.complete(this.source,this.id,t),this.sink.error(t)}},tt={addSource(i,t){$i("addSource",{id:i.id,name:i.toString(),source:{id:t.id,name:t.toString()}})},next(i,t,e){$i("next",{id:i.id,streamId:t,data:e&&e.toString()})},subscribe({id:i,end:t},e){$i("subscribe",{id:i,end:t,sink:{nodeId:e&&e.nodeId,streamId:e&&e.streamId}})},complete(i,t,e){$i("complete",{id:i.id,streamId:t,err:e?e.toString():null})},defer(i,t){$i("defer",{id:i.id,streamId:t})},pipe(i){$i("pipe",{name:i.toString(),id:i.id,source:{id:i.source.id,name:i.source.toString()}})},update(i){$i("update",{id:i.id,name:i.toString()})},create(i){i.id||(i.id=iI++),$i("create",{name:i.toString(),id:i.id})}},Ra=class extends Error{constructor(t){super(`timeout after ${t}ms`),this.timeout=t}};var Wd=class extends Oo{constructor(t){super(),this.source=t,this.sinks=new Set}add(t){t.defer(()=>this.remove(t)),this.sinks.add(t).size===1&&(this.reset(),this.subscribe(this.source))}remove(t){this.sinks.delete(t),this.sinks.size===0&&this.dispose()}next(t){this.sinks.forEach(e=>e.next(t))}complete(){this.sinks.forEach(t=>t.complete()),this.sinks.clear()}error(t){this.sinks.forEach(e=>e.error(t)),this.sinks.clear()}};function gi(){return i=>{let t=new Wd(i);if(i instanceof sr){let e=Re(r=>{t.add(r)},"share",arguments);return t.sourceId=e.id,e.source=i,tt.pipe(e),e}return Re(t.add.bind(t),"share",arguments)}}function oI(...i){return Re(t=>{let e=new ne(t),r=i.length;e.complete=()=>{--r===0&&t.complete()},i.forEach(e.bindSubscribe)},"merge",arguments)}function sI(...i){return Re(t=>{let e=new Map;i.forEach(r=>{let o=new ne(t);e.set(r,o),o.complete=()=>{e.delete(r),e.size===0?t.complete():o.dispose()},o.next=s=>{e.delete(r),e.forEach(a=>a.dispose()),o.resetNext(),o.resetComplete(),o.next(s)}}),i.forEach(r=>e.get(r).subscribe(r))},"race",arguments)}function nI(...i){return Re(t=>{let e=0,r=i.length,o=new ne(t);o.complete=()=>{e<r&&!o.disposed?(o.doDefer(),o.subscribe(i[e++])):t.complete()},o.complete()},"concat",arguments)}function aI(i){return t=>{let e=new Wd(t),r=[];return e.next=function(o){r.push(o),r.length>i&&r.shift(),this.sinks.forEach(s=>s.next(o))},Re(o=>{o.defer(()=>e.remove(o)),r.forEach(s=>o.next(s)),e.add(o)},"shareReplay",arguments)}}function cI(i,t,e){return Re(r=>i()?t(r):e(r),"iif",arguments)}function N_(...i){return Re(t=>{let e=i.length,r=e,o=e,s=new Array(e),a=()=>{--o===0&&t.complete()},d=(h,m)=>{let T=new ne(t);T.next=I=>{--r===0?(T.next=v=>{s[m]=v,t.next(s)},T.next(I)):s[m]=I},T.complete=a,T.subscribe(h)};i.forEach(d)},"combineLatest",arguments)}function dI(...i){return Re(t=>{let e=i.length,r=e,o=new Array(e),s=()=>{--r===0&&t.complete()},a=(d,h)=>{let m=new ne(t),T=[];o[h]=T,m.next=I=>{T.push(I),o.every(v=>v.length)&&t.next(o.map(v=>v.shift()))},m.complete=s,m.subscribe(d)};i.forEach(a)},"zip",arguments)}function xo(...i){return t=>Re((e,r=0,o=i.length)=>{for(;r<o&&!e.disposed;)e.next(i[r++]);e.disposed||e.subscribe(t)},"startWith",arguments)}var np=class extends ne{constructor(t,...e){super(t);let r=new ne(this.sink);r.next=o=>this.buffer=o,r.complete=Oe,r.subscribe(N_(...e))}next(t){this.buffer&&this.sink.next([t,...this.buffer])}},uI=ce(np,"withLatestFrom"),ap=class extends ne{constructor(t,e,r){super(t),this.bufferSize=e,this.startBufferEvery=r,this.buffer=[],this.count=0,this.startBufferEvery&&(this.buffers=[[]])}next(t){this.startBufferEvery?(this.count++===this.startBufferEvery&&(this.buffers.push([]),this.count=1),this.buffers.forEach(e=>{e.push(t)}),this.buffers[0].length===this.bufferSize&&this.sink.next(this.buffers.shift())):(this.buffer.push(t),this.buffer.length===this.bufferSize&&(this.sink.next(this.buffer),this.buffer=[]))}complete(){this.buffer.length?this.sink.next(this.buffer):this.buffers.length&&this.buffers.forEach(t=>this.sink.next(t)),super.complete()}},lI=ce(ap,"bufferCount"),cp=class extends ne{constructor(t,e){super(t),this.buffer=[];let r=new ne(t);r.next=o=>{t.next(this.buffer),this.buffer=[]},r.complete=Oe,r.subscribe(e)}next(t){this.buffer.push(t)}complete(){this.buffer.length&&this.sink.next(this.buffer),super.complete()}},mI=ce(cp,"buffer");var pI=function(i,t,e,r){function o(s){return s instanceof e?s:new e(function(a){a(s)})}return new(e||(e=Promise))(function(s,a){function d(T){try{m(r.next(T))}catch(I){a(I)}}function h(T){try{m(r.throw(T))}catch(I){a(I)}}function m(T){T.done?s(T.value):o(T.value).then(d,h)}m((r=r.apply(i,t||[])).next())})};function gt(i){let t=arguments,e=gi()(Re(r=>{e.next=o=>r.next(o),e.complete=()=>r.complete(),e.error=o=>r.error(o),i&&r.subscribe(i)},"subject",t));return e.next=Oe,e.complete=Oe,e.error=Oe,e}function w_(i){return Re(t=>t.subscribe(i()),"defer",arguments)}var M_=i=>t=>{setTimeout(()=>i(t))},O_=i=>M_(t=>{for(let e=0;!t.disposed&&e<i.length;e++)t.next(i[e]);t.complete()});function hI(...i){return Re(O_(i),"of",arguments)}function fI(i){return Re(O_(i),"fromArray",arguments)}function dp(i){return Re(t=>{let e=0,r=setInterval(()=>t.next(e++),i);return t.defer(()=>{clearInterval(r)}),"interval"},"interval",arguments)}function up(i,t){return Re(e=>{let r=0,o=setTimeout(()=>{if(e.removeDefer(s),e.next(r++),t){let a=setInterval(()=>e.next(r++),t);e.defer(()=>{clearInterval(a)})}else e.complete()},i),s=()=>{clearTimeout(o)};e.defer(s)},"timer",arguments)}function Gd(i,t){return e=>{let r=o=>e.next(o);e.defer(()=>t(r)),i(r)}}function _I(i,t){return Re(Gd(i,t),"fromEventPattern",arguments)}function De(i,t){if("on"in i&&"off"in i)return Re(Gd(e=>i.on(t,e),e=>i.off(t,e)),"fromEvent",arguments);if("addListener"in i&&"removeListener"in i)return Re(Gd(e=>i.addListener(t,e),e=>i.removeListener(t,e)),"fromEvent",arguments);if("addEventListener"in i)return Re(Gd(e=>i.addEventListener(t,e),e=>i.removeEventListener(t,e)),"fromEvent",arguments);throw"target is not a EventDispachter"}function P_(i){return Re(t=>{i.then(t.next.bind(t),t.error.bind(t))},"fromPromise",arguments)}function gI(i,t){return Re(w_(()=>P_(fetch(i,t))),"fromFetch",arguments)}function EI(i){return Re(M_(t=>{try{for(let e of i){if(t.disposed)return;t.next(e)}t.complete()}catch(e){t.error(e)}}),"fromIterable",arguments)}function TI(i){let t=e=>pI(this,void 0,void 0,function*(){if(e.disposed)return;let{done:r,value:o}=yield i.read();if(r){e.complete();return}else e.next(o),t(e)});return Re(e=>{t(e)},"fromReader",arguments)}function II(i){return Re(t=>{let e=new AbortController,r=e.signal;t.defer(()=>e.abort("cancelled")),i.pipeTo(new WritableStream({write(o){t.next(o)},close(){t.complete()},abort(o){t.error(o)}}),{signal:r}).then(()=>t.complete(),o=>t.error(o))},"fromReadableStream",arguments)}function SI(){return Re(i=>{let t=requestAnimationFrame(function e(r){i.disposed||(i.next(r),t=requestAnimationFrame(e))});i.defer(()=>cancelAnimationFrame(t))},"fromAnimationFrame",arguments)}function yI(i,t){return Re((e,r=i,o=t+i)=>{for(;r<o&&!e.disposed;)e.next(r++);return e.complete(),"range"},"range",arguments)}function AI(i,t,...e){return Re(r=>{let o=e.concat(s=>(r.next(s),r.complete()));i.apply(t,o)},"bindCallback",arguments)}function bI(i,t,...e){return Re(r=>{let o=e.concat((s,a)=>s?r.error(s):(r.next(a),r.complete()));i.apply(t,o)},"bindNodeCallback",arguments)}function RI(){return Re(()=>{},"never",arguments)}function vI(i){return Re(t=>t.error(i),"throwError",arguments)}function ko(){return Re(i=>i.complete(),"empty",arguments)}var Lo=class extends ne{constructor(t,e,r){super(t),this.f=e;let o=()=>{this.sink.next(this.acc),this.sink.complete()};typeof r=="undefined"?this.next=s=>{this.acc=s,this.complete=o,this.resetNext()}:(this.acc=r,this.complete=o)}next(t){this.acc=this.f(this.acc,t)}},lp=ce(Lo,"reduce"),CI=i=>ce(Lo,"count")((t,e)=>i(e)?t+1:t,0),DI=()=>ce(Lo,"max")(Math.max),NI=()=>ce(Lo,"min")(Math.min),wI=()=>ce(Lo,"sum")((i,t)=>i+t,0);var mp=class extends ne{constructor(t,e,r){super(t),this.filter=e,this.thisArg=r}next(t){this.filter.call(this.thisArg,t)&&this.sink.next(t)}},Uo=ce(mp,"filter"),pp=class extends ne{next(t){}},MI=ce(pp,"ignoreElements"),hp=class extends ne{constructor(t,e){super(t),this.count=e}next(t){this.sink.next(t),--this.count===0&&this.complete()}},Sr=ce(hp,"take"),fp=class extends ne{constructor(t,e){super(t);let r=new ne(t);r.next=()=>t.complete(),r.complete=Hd,r.subscribe(e)}},We=ce(fp,"takeUntil"),_p=class extends ne{constructor(t,e){super(t),this.f=e}next(t){this.f(t)?this.sink.next(t):this.complete()}},x_=ce(_p,"takeWhile"),OI=i=>lp((t,e)=>(t.push(e),t.length>i&&t.shift(),t),[]),gp=class extends ne{constructor(t,e){super(t),this.count=e}next(t){--this.count===0&&(this.next=super.next)}},PI=ce(gp,"skip"),Ep=class extends ne{constructor(t,e){super(t),t.next=Oe;let r=new ne(t);r.next=()=>{r.dispose(),t.resetNext()},r.complete=Hd,r.subscribe(e)}},xI=ce(Ep,"skipUntil"),Tp=class extends ne{constructor(t,e){super(t),this.f=e}next(t){this.f(t)||(this.next=super.next,this.next(t))}},Jd=ce(Tp,"skipWhile"),kI={leading:!0,trailing:!1},Ip=class extends ne{constructor(t,e,r){super(t),this.durationSelector=e,this.trailing=r}cacheValue(t){this.last=t,this.disposed&&this.throttle(t)}send(t){this.sink.next(t),this.throttle(t)}throttle(t){this.reset(),this.subscribe(this.durationSelector(t))}next(){this.complete()}complete(){this.dispose(),this.trailing&&this.send(this.last)}},jd=class extends ne{constructor(t,e,r=kI){super(t),this.durationSelector=e,this.config=r,this._throttle=new Ip(this.sink,this.durationSelector,this.config.trailing),this._throttle.dispose()}next(t){this._throttle.disposed&&this.config.leading?this._throttle.send(t):this._throttle.cacheValue(t)}complete(){this._throttle.throttle=Oe,this._throttle.complete(),super.complete()}},LI=ce(jd,"throttle"),UI={leading:!1,trailing:!0},VI=i=>ce(jd,"audit")(i,UI),Sp=class extends ne{next(){this.complete()}complete(){this.dispose(),this.sink.next(this.last)}},qd=class extends ne{constructor(t,e){super(t),this.durationSelector=e,this._debounce=new Sp(this.sink),this._debounce.dispose()}next(t){this._debounce.dispose(),this._debounce.reset(),this._debounce.last=t,this._debounce.subscribe(this.durationSelector(t))}complete(){this._debounce.complete(),super.complete()}},FI=ce(qd,"debounce"),BI=i=>ce(qd,"debounceTime")(t=>up(i)),yp=class extends ne{constructor(t,e,r){super(t),this.count=e,this.defaultValue=r}next(t){this.count--===0&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("not enough elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},$I=ce(yp,"elementAt"),HI=i=>t=>Sr(1)(Jd(e=>!i(e))(t)),Ap=class extends ne{constructor(t,e){super(t),this.f=e,this.i=0}next(t){this.f(t)?(this.sink.next(this.i++),this.complete()):++this.i}},WI=ce(Ap,"findIndex"),bp=class extends ne{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t,this.complete())}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},GI=ce(bp,"first"),Rp=class extends ne{constructor(t,e,r){super(t),this.f=e,this.defaultValue=r,this.index=0}next(t){(!this.f||this.f(t,this.index++))&&(this.defaultValue=t)}complete(){if(this.defaultValue===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.defaultValue);super.complete()}},jI=ce(Rp,"last"),vp=class extends ne{constructor(t,e){super(t),this.predicate=e,this.index=0}next(t){this.predicate(t,this.index++)?this.result=!0:(this.result=!1,this.complete())}complete(){if(this.result===void 0){this.error(new Error("no elements in sequence"));return}else this.sink.next(this.result);super.complete()}},qI=ce(vp,"every");var Cp=class extends ne{constructor(t,e,r){super(t),this.f=e,typeof r=="undefined"?this.next=o=>{this.acc=o,this.resetNext(),this.sink.next(this.acc)}:this.acc=r}next(t){this.sink.next(this.acc=this.f(this.acc,t))}},Up=ce(Cp,"scan"),Dp=class extends ne{constructor(){super(...arguments),this.hasLast=!1}next(t){this.hasLast?this.sink.next([this.last,t]):this.hasLast=!0,this.last=t}},JI=ce(Dp,"pairwise"),zd=class extends ne{constructor(t,e,r){super(t),this.mapper=e,this.thisArg=r}next(t){super.next(this.mapper.call(this.thisArg,t))}},Vs=ce(zd,"map"),zI=i=>ce(zd,"mapTo")(t=>i),Ls=class extends ne{constructor(t,e,r){super(t),this.data=e,this.context=r}next(t){let e=this.context.combineResults;e?this.sink.next(e(this.data,t)):this.sink.next(t)}tryComplete(){this.context.resetComplete(),this.dispose()}},Us=class extends ne{constructor(t,e,r){super(t),this.makeSource=e,this.combineResults=r,this.index=0}subInner(t,e){let r=this.currentSink=new e(this.sink,t,this);this.complete=this.tryComplete,r.complete=r.tryComplete,r.subscribe(this.makeSource(t,this.index++))}tryComplete(){this.currentSink.resetComplete(),this.dispose()}},Xd=class extends Ls{},Qd=class extends Us{next(t){this.subInner(t,Xd),this.next=e=>{this.currentSink.dispose(),this.subInner(e,Xd)}}},Fr=ce(Qd,"switchMap");function eu(i){return(t,e)=>i(()=>t,e)}var Vo=eu(ce(Qd,"switchMapTo")),Np=class extends Ls{tryComplete(){this.dispose(),this.context.sources.length?this.context.subNext():(this.context.resetNext(),this.context.resetComplete())}},Yd=class extends Us{constructor(){super(...arguments),this.sources=[],this.next2=this.sources.push.bind(this.sources)}next(t){this.next2(t),this.subNext()}subNext(){this.next=this.next2,this.subInner(this.sources.shift(),Np),this.disposed&&this.sources.length===0&&this.currentSink.resetComplete()}tryComplete(){this.sources.length===0&&this.currentSink.resetComplete(),this.dispose()}},XI=ce(Yd,"concatMap"),QI=eu(ce(Yd,"concatMapTo")),wp=class extends Ls{tryComplete(){this.context.inners.delete(this),super.dispose(),this.context.inners.size===0&&this.context.resetComplete()}},Zd=class extends Us{constructor(){super(...arguments),this.inners=new Set}next(t){this.subInner(t,wp),this.inners.add(this.currentSink)}tryComplete(){this.inners.size===1?this.inners.forEach(t=>t.resetComplete()):this.dispose()}},YI=ce(Zd,"mergeMap"),ZI=eu(ce(Zd,"mergeMapTo")),Mp=class extends Ls{dispose(){this.context.resetNext(),super.dispose()}},Kd=class extends Us{next(t){this.next=Oe,this.subInner(t,Mp)}},KI=ce(Kd,"exhaustMap"),eS=eu(ce(Kd,"exhaustMapTo")),Op=class extends ne{constructor(t,e){super(t),this.f=e,this.groups=new Map}next(t){let e=this.f(t),r=this.groups.get(e);typeof r=="undefined"&&(r=gt(),r.key=e,this.groups.set(e,r),super.next(r)),r.next(t)}complete(){this.groups.forEach(t=>t.complete()),super.complete()}error(t){this.groups.forEach(e=>e.error(t)),super.error(t)}},tS=ce(Op,"groupBy"),Pp=class extends ne{constructor(){super(...arguments),this.start=new Date}next(t){this.sink.next({value:t,interval:Number(new Date)-Number(this.start)}),this.start=new Date}},rS=ce(Pp,"timeInterval"),xp=class extends ne{constructor(t,e){super(t),this.miniseconds=e,this.buffer=[],this.id=setInterval(()=>{this.sink.next(this.buffer.concat()),this.buffer.length=0},this.miniseconds)}next(t){this.buffer.push(t)}complete(){this.sink.next(this.buffer),super.complete()}dispose(){clearInterval(this.id),super.dispose()}},iS=ce(xp,"bufferTime"),kp=class extends ne{constructor(t,e){super(t),this.buffer=[],this.delayTime=e}dispose(){clearTimeout(this.timeoutId),super.dispose()}delay(t){this.timeoutId=setTimeout(()=>{let e=this.buffer.shift();if(e){let{time:r,data:o}=e;super.next(o),this.buffer.length&&this.delay(Number(this.buffer[0].time)-Number(r))}},t)}next(t){this.buffer.length||this.delay(this.delayTime),this.buffer.push({time:new Date,data:t})}complete(){this.timeoutId=setTimeout(()=>super.complete(),this.delayTime)}},oS=ce(kp,"delay"),Lp=class extends ne{constructor(t,e){super(t),this.selector=e}error(t){this.dispose(),this.selector(t)(this.sink)}},va=ce(Lp,"catchError");var sS=()=>i=>new Promise((t,e)=>{let r;new Po(i,o=>r=o,e,()=>t(r))}),nS=()=>i=>{let t;return new ReadableStream({start(e){t=new Po(i,e.enqueue.bind(e),e.error.bind(e),e.close.bind(e))},cancel(){t.dispose()}})},ke=(i=Oe,t=Oe,e=Oe)=>r=>new Po(r,i,t,e),Vp=class extends ne{constructor(t,e){super(t),e instanceof Function?this.next=r=>{e(r),t.next(r)}:(e.next&&(this.next=r=>{e.next(r),t.next(r)}),e.complete&&(this.complete=()=>{e.complete(),t.complete()}),e.error&&(this.error=r=>{e.error(r),t.error(r)}))}},Ca=ce(Vp,"tap"),Fp=class extends ne{constructor(t,e){super(t),this.timeout=e,this.id=setTimeout(()=>this.error(new Ra(this.timeout)),this.timeout)}next(t){super.next(t),clearTimeout(this.id),this.next=super.next}dispose(){clearTimeout(this.id),super.dispose()}},Bp=ce(Fp,"timeout"),aS=(i=1/0)=>t=>{if(t instanceof sr){let e=Re(r=>{let o=i,s=new ne(r);s.error=a=>{o-- >0?s.subscribe(t):r.error(a)},s.sourceId=e.id,s.subscribe(t)},"retry",[i]);return e.source=t,tt.pipe(e),e}else return e=>{let r=i,o=new ne(e);o.error=s=>{r-- >0?t(o):e.error(s)},t(o)}};var k_=be(dp(250),Vs(()=>performance.now()),gi()),L_=i=>t=>{let e=0,r=performance.now();be(k_,Vs(o=>(o-r)/i>>0),Uo(o=>o!=e?(e=o,!0):!1))(t)},tu=i=>t=>{let e=performance.now();be(k_,Jd(r=>r-e<i),Sr(1))(t)};var dS=[0,1,1,1,0,0,1,0],Fo=class extends Vt{constructor(e,r){super(e,Object.assign({useDefaultProgram:!0,createTexture:!1,name:"destination"},r));l(this,"_intervalId",0);l(this,"_sequence",0);l(this,"checkGLError",!1);l(this,"checkVisibilityChange");e instanceof Ct?this.ctx2d=e.ctx||null:e.available&&(r!=null&&r.mirrorUpAndDown)&&this.setTexBuffer(dS)}start(e){this.log.info(`${this.name} start render ${e} fps`),ft.clearTask(this._intervalId),this._intervalId=ft.run("intervalInWorker",()=>{if(e!==this.context.frameRate&&(ft.clearTask(this._intervalId),this.start(this.context.frameRate)),this.requestFrame(this._sequence++),this.checkGLError&&this.context instanceof _t){let o=this.context.ctx.getError();o&&this.context.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:5,message:`${this.name} req ${this._sequence} render ${this.totalFrames} faild ${o}`}))}},{fps:this.context.frameRate})}render(e){var r;return(r=this.input)!=null&&r.requestFrame(e)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}addInput(e,...r){super.addInput(e,...r),this.start(this.context.frameRate)}update(e=0){if(this._intervalId&&(ft.clearTask(this._intervalId),this._intervalId=0,e===1)){this.log.info(`${this.name} use requestVideoFrameCallback`);let r=()=>{document.hidden&&(this.start(this.context.frameRate),this.log.info(`${this.name} use timer`),document.removeEventListener("visibilitychange",r))};document.addEventListener("visibilitychange",r)}this.requestFrame(this._sequence++)}removeInput(e){super.removeInput(e),ft.clearTask(this._intervalId)}resize(e,r){super.resize(e,r),this.context.setSize(e,r)}close(){super.close(),ft.clearTask(this._intervalId),document.removeEventListener("visibilitychange",this.checkVisibilityChange)}},Fs=class extends Fo{constructor(e,r){super(e,r);l(this,"_videoTrack");l(this,"_muteOb");l(this,"_closedOb",De(this,"closed"));l(this,"_subscription");l(this,"_canvasContainer");Number(Pi)<17&&(this._canvasContainer=document.createElement("div"),this._canvasContainer.style.display="none"),[this._videoTrack]=e._canvas.captureStream().getVideoTracks(),this._muteOb=De(this._videoTrack,"mute"),be(De(this._videoTrack,"ended"),We(this._closedOb),ke(()=>{this.context.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:8,message:"video track ended"}))}))}enableCheckMute(){this._subscription=be(this._muteOb,We(this._closedOb),Vo(tu(5e3)),ke(()=>{var e;(e=this._videoTrack)!=null&&e.muted&&this.context.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:7,message:"video track muted"}))}))}disableCheckMute(){var e;(e=this._subscription)==null||e.dispose()}get videoTrack(){return this._videoTrack}putCanvasIntoDom(){!this.context._canvas||!this._canvasContainer||document.getElementById(this.context._canvas.id)||(this.log.info(`${this.name} put canvas to body`),document.body.appendChild(this._canvasContainer),this._canvasContainer.appendChild(this.context._canvas))}render(e){return this.putCanvasIntoDom(),super.render(e)}render2d(e){return this.putCanvasIntoDom(),super.render2d(e)}close(){var e,r;super.close(),(e=this._videoTrack)==null||e.stop(),delete this._videoTrack,(r=this._canvasContainer)==null||r.remove()}},ru=class extends Fs{render(t){var e;return!!((e=this.input)!=null&&e.requestFrame(t))}};var iu=class extends Fs{constructor(e,r,o){super(e,{name:"smallDestination",logger:o});this.resolution=r}resize(e,r){let o,s=e*r,a=this.resolution.width*this.resolution.height;this.log.info(`big res: ${e}*${r} small res: ${this.resolution.width}*${this.resolution.height} `),s>a?o=s/a:(this.log.warn(`Small stream resolution is not smaller than big stream, which is invalid. big: ${e} * ${r} small: ${this.resolution.width} * ${this.resolution.height}`),o=s/(160*120)),super.resize(e/Math.sqrt(o),r/Math.sqrt(o))}};var Da=class extends Vt{constructor(e,r){super(e,J({name:"imageSource"},r));l(this,"_lastImage");l(this,"_totalFrames",0);l(this,"_autoResize",!1);l(this,"_canvasRendered");l(this,"_videoCallbackId",0);this._autoResize=(r==null?void 0:r.autoResize)!==!1,Yt===16&&(this._canvasRendered=gt(),be(this._canvasRendered,xo(this._image),Fr(o=>o instanceof HTMLCanvasElement?De(o,"rendered"):ko()),We(De(this,"closed")),ke(()=>{this.update()})))}tryVideoFrameCallback(e){this._videoCallbackId&&e.cancelVideoFrameCallback(this._videoCallbackId),Ao()&&!document.hidden&&(this._videoCallbackId=e.requestVideoFrameCallback((r,o)=>{document.hidden||(this._totalFrames=o.presentedFrames,this.update(1))}))}_render(e,r){var d;let{width:o,height:s}=this,{image:a}=this;if(a instanceof HTMLVideoElement){if(this.tryVideoFrameCallback(a),{videoWidth:o,videoHeight:s}=a,!o||!s)return!1;a.width=o,a.height=s}else if(a instanceof HTMLImageElement||a instanceof ImageData||a instanceof ImageBitmap){if({width:o,height:s}=a,a!==this._lastImage)this._lastImage=a;else if(o===this.width&&s===this.height)return!1}else a instanceof HTMLCanvasElement||a instanceof OffscreenCanvas?({width:o,height:s}=a,this._lastImage=a):typeof VideoFrame!="undefined"&&a instanceof VideoFrame&&({displayWidth:o,displayHeight:s}=a,(d=this._lastImage)==null||d.close(),this._lastImage=a);if(!this._autoResize)return!0;if(this.width===o&&this.height===s&&this.totalFrames){if(r){this.useTexture();let h=this.context.ctx;h.texSubImage2D(h.TEXTURE_2D,0,0,0,h.RGBA,h.UNSIGNED_BYTE,a)}}else{if(r){this.useTexture();let h=this.context.ctx;h.texImage2D(h.TEXTURE_2D,0,h.RGBA,h.RGBA,h.UNSIGNED_BYTE,a)}this.resize(o,s)}return!0}get image(){return this._image}set image(e){var r;(r=this._canvasRendered)==null||r.next(e),this._image=e}render(e){return this._render(e,!0)}render2d(e){return this._render(e,!1)}},Na=class extends Da{constructor(e,r,o){super(e,o);this._player=r;this.name="videoPlayerSource",be(De(this._player,et.PLAYER_STATE_CHANGED),We(De(this,"closed")),Uo(({state:s})=>s==="PLAYING"),ke(()=>{this.tryVideoFrameCallback(this._player.element)}))}get image(){return this._player.element}},Ei=class extends Na{constructor(t,e,r){super(t,new Zt({id:r.name,track:e,muted:!0,container:null,objectFit:"contain",log:r.logger}),r),this.name="videoTrackSource",this._player.play()}replaceTrack(t){this._player.setTrack(t),this._player.play()}close(){super.close(),this._player.stop()}};var lS=`
32
30
  // \u9876\u70B9\u7740\u8272\u5668
33
31
  attribute vec4 a_position;
34
32
  attribute vec2 a_texCoord;
@@ -38,7 +36,7 @@ void main() {
38
36
  gl_Position = a_position;
39
37
  v_texCoord = a_texCoord;
40
38
  }
41
- `,Hg=`
39
+ `,mS=`
42
40
  // \u7247\u5143\u7740\u8272\u5668
43
41
  precision mediump float;
44
42
  varying vec2 v_texCoord;
@@ -46,31 +44,65 @@ uniform sampler2D u_texture;
46
44
 
47
45
  void main() {
48
46
  gl_FragColor = texture2D(u_texture, v_texCoord);
49
- } `;var Mr=class extends Q{constructor(e){super();c(this,"frameRate");c(this,"_canvas");c(this,"log");c(this,"hasAlpha",!1);c(this,"name");c(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,t){this._canvas&&(this._canvas.width=e,this._canvas.height=t)}createVideoTrackSource(e,t){return new Li(this,e,{logger:this.log,name:t})}createVideoTrackDestination(e){return new Es(this,e)}createVideoImageSource(e,t){return new Fo(this,t?Object.assign(t,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,t){return new Ho(this,e,t?Object.assign(t,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};c(Mr,"_ids",0);var $g={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Ss=class Ss extends Mr{constructor(){super(...arguments);c(this,"defaultProgam");c(this,"defaultVShader");c(this,"defaultFShader");c(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Mr._ids++}`),this.ctx=this._canvas.getContext("webgl2",$g),!this.ctx)throw new b({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,Fg),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,Hg),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}),this.log.info("video context created use webgl")}destroy(e){let t="";return e&&(t=e.message,this.error=e,N.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${t}`?`: ${t}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var t;(t=this.ctx)==null||t.viewport(0,0,e,this.height),super.width=e}set height(e){var t;(t=this.ctx)==null||t.viewport(0,0,this.width,e),super.height=e}setSize(e,t){var r;(r=this.ctx)==null||r.viewport(0,0,e,t),super.setSize(e,t)}createShader(e,t){let r=this.ctx,o=r.createShader(e);return r.shaderSource(o,t),r.compileShader(o),o}createProgram(e,t){let r=this.ctx,o=r.createProgram();return r.attachShader(o,e),r.attachShader(o,t),r.linkProgram(o),r.getProgramParameter(o,r.LINK_STATUS)||this.log.error(r.getProgramInfoLog(o)),o}};c(Ss,"UNAVAILABLE","unavailable"),y([de(Q.INIT,"created",{sync:!0,fail(e){N.addFailedEvent({key:512700,error:e.cause||e})},success(){N.addSuccessEvent({key:512700})}})],Ss.prototype,"create",1),y([de("created",Q.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Ss.UNAVAILABLE,e),this.removeAllListeners()}})],Ss.prototype,"destroy",1);var De=Ss,Be=class extends Mr{constructor(){super(...arguments);c(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Mr._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new b({code:S.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this.log.info("video context created use 2d")}destroy(e){let t="";e&&(t=e.message,this.error=e,N.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${t?`: ${t}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),N.addSuccessEvent({key:512703})}};y([de(Q.INIT,"created",{sync:!0,fail(e){N.addFailedEvent({key:512701,error:e.cause||e})},success(){N.addSuccessEvent({key:512701})}})],Be.prototype,"create",1),y([de("created",Q.INIT,{ignoreError:!0,sync:!0})],Be.prototype,"destroy",1);function Gg(s){return[15,30,45,60].reduce((e,t)=>Math.abs(t-s)<Math.abs(e-s)?t:e)}var ii=class extends _s{constructor(e,t,r=4){super(e,t,r);c(this,"mediaType",4);c(this,"source");c(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",o=>{this.room.emit("first-video-frame",o)})}play(e,t){return(he(t==null?void 0:t.canvasRender)?t.canvasRender:ot===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,t).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Be({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let t=new Or(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(t),this.player.setCanvas(e._canvas),Sr()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let t=this.decodeFPS,r=Gg(t);if(!Y(t)||t<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${t} `);return}if(r===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${r} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${t}, closest: ${r}, current: ${e.frameRate}`),e.frameRate=r}get decodeFPS(){var n;let{msg_video_status:e}=((n=this.room.heartbeatReport)==null?void 0:n.msg_down_stream_info.find(a=>a.msg_user_info.str_identifier===this.userId))||{},t=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let r=e.find(a=>a.uint32_video_stream_type===t);return(r==null?void 0:r.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let t of this.manager.decodePipeline)if(t&&(e=t({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isAvailable(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},Is=class extends ii{constructor(e,t){super(e,t,2);c(this,"mediaType",2);c(this,"objectFit","contain")}get isAvailable(){return this.user.muteState.hasAuxiliary}};var As=new Map;E.on(T.JOIN_SUCCESS,({room:s})=>{ue(s.userId,{eventId:32788})});E.on(T.LEAVE_START,({room:s})=>{ue(s.userId,{eventId:32789})});E.on(T.LOCAL_TRACK_PUBLISHED,({track:s})=>{if(s.room){let i=32769;s.mediaType===4?i=32768:s.mediaType===2&&(i=32805),ue(s.room.userId,{eventId:i})}});E.on(T.LOCAL_TRACK_UNPUBLISHED,({track:s})=>{if(s.room){let i=32771;s.mediaType===4?i=32770:s.mediaType===2&&(i=32806),ue(s.room.userId,{eventId:i})}});E.on(T.TRACK_MUTED,({track:s})=>{s.room&&(s.kind===h.AUDIO?ue(s.room.userId,{eventId:s.isRemote?32785:32772,remoteUserId:s.isRemote?s.userId:void 0}):ue(s.room.userId,{eventId:s.isRemote?32784:32773,remoteUserId:s.isRemote?s.userId:void 0}))});E.on(T.TRACK_UNMUTED,({track:s})=>{s.room&&(s.kind===h.AUDIO?ue(s.room.userId,{eventId:s.isRemote?32787:32774,remoteUserId:s.isRemote?s.userId:void 0}):ue(s.room.userId,{eventId:s.isRemote?32786:32775,remoteUserId:s.isRemote?s.userId:void 0}))});E.on(T.REMOTE_TRACK_SUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&ue(s.room.userId,{eventId:32777,remoteUserId:s.userId}),s.mediaType===4&&ue(s.room.userId,{eventId:32776,remoteUserId:s.userId}),s.mediaType===8&&ue(s.room.userId,{eventId:32803,remoteUserId:s.userId}))});E.on(T.REMOTE_TRACK_UNSUBSCRIBED,({track:s})=>{s.room&&(s.mediaType===1&&ue(s.room.userId,{eventId:32779,remoteUserId:s.userId}),s.mediaType===4&&ue(s.room.userId,{eventId:32778,remoteUserId:s.userId}),s.mediaType===8&&ue(s.room.userId,{eventId:32804,remoteUserId:s.userId}))});E.on(T.SWITCH_DEVICE_SUCCESS,({track:s})=>{s.room&&ue(s.room.userId,{eventId:s.kind===h.VIDEO?32780:32781})});E.on(T.LOCAL_TRACK_REPLACED,({track:s})=>{s.room&&ue(s.room.userId,{eventId:s.kind===h.VIDEO?32782:32783})});E.on(T.SIGNAL_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e})=>{let t;switch(e){case"CONNECTED":i==="RECONNECTING"?t=32795:t=32791;break;case"DISCONNECTED":i==="RECONNECTING"?t=32796:t=32790;break;case"RECONNECTING":t=32794;break}t&&ue(s.userId,{eventId:t})});E.on(T.PEER_CONNECTION_STATE_CHANGED,({room:s,prevState:i,state:e,remoteUserId:t})=>{let r=!!t,o;switch(e){case"CONNECTED":i==="RECONNECTING"?o=r?32801:32798:o=r?32793:32792;break;case"DISCONNECTED":i==="RECONNECTING"&&(o=r?32802:32799);break;case"RECONNECTING":o=r?32800:32797;break}o&&ue(s.userId,{eventId:o,remoteUserId:t})});E.on(T.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:s,userId:i,remoteUserId:e,codec:t,isHWCodec:r,prevImplementation:o,streamType:n})=>{let a=r?1:0;o||(a=r?3:2);let d=t==="h264"?0:2,l={eventId:4004,param1:a,param2:d,streamType:n||2};e&&(l.remoteUserId=e,l.eventId=4005),ue(i,l),N.addEnum({key:e?514701:513701,value:a}),N.addEnum({key:e?514700:513700,value:d})});E.on(T.LOCAL_TRACK_RECAPTURE,({track:s,error:i})=>{if(s.userId){let e={eventId:2003,param1:0};s.kind===h.AUDIO?(e.streamType=1,i&&(e.param1=2)):(e.streamType=s.streamType==="auxiliary"?7:2,i&&(e.param1=8)),ue(s.userId,e)}});function ue(s,i){let e=k(v({},i),{timestamp:Bs()});As.has(s)?As.get(s).push(e):As.set(s,[e])}function dm(s){if(As.has(s)){let i=As.get(s).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return As.delete(s),i}return[]}var lm=ke(Ge(),1);var Pa=class extends lm.EventEmitter{constructor(e,t,r="userId"){super();this.mySelfId=e;this._log=t;this.key=r;c(this,"userMap",new Map);c(this,"remotePublishedUserMap",new Map)}get hasRobotUser(){return!![...this.remotePublishedUserMap.values()].find(e=>e.isRobot)}getPublishedUser(e){return this.remotePublishedUserMap.get(e)}addUser(e){let t=e[this.key],{userId:r,tinyId:o,role:n}=e;if(this.userMap.has(t))return;let a={userId:r,tinyId:o,role:n===20?"anchor":"audience"};this.userMap.set(t,a),this.emit("1",a)}deleteUser(e,t){let r=this.userMap.get(e);if(!r)return;let o=`peer leave [${e}]`;g(t)||(o+=`:${Nc[t]}`),this._log.info(o);let n=this.remotePublishedUserMap.get(e);if(n){let a=n.muteState;n.flag=0,this.emit("5",n.userId),this.deleteRemotePublishedUser(e),this.emit("6",{prevMuteState:a,muteState:n.muteState,flag:0})}this.userMap.delete(e),this.emit("2",r.userId)}setUserList(e){this.userMap.forEach(t=>{e.findIndex(r=>r[this.key]===t[this.key])<0&&this.deleteUser(t[this.key],0)}),e.forEach(t=>{!this.userMap.has(t[this.key])&&t[this.key]!==this.mySelfId&&this.addUser(t)})}addRemotePublishedUser(e){this.remotePublishedUserMap.has(e[this.key])||this.remotePublishedUserMap.set(e[this.key],e)}deleteRemotePublishedUser(e){this.remotePublishedUserMap.has(e)&&this.remotePublishedUserMap.delete(e)}setRemotePublishedUserList(e){this.remotePublishedUserMap.forEach(t=>{let r=t[this.key];if(e.findIndex(o=>o[this.key]===t[this.key])<0){this._log.info(`remote [${r}] unpublish`);let o=t.muteState;t.flag=0,this.emit("5",t.userId),this.deleteRemotePublishedUser(r),this.emit("6",{prevMuteState:o,muteState:t.muteState,flag:0})}}),e.forEach(t=>{var m;let r=t[this.key];if(r===this.mySelfId)return;let{flag:o,userId:n,tinyId:a}=t,d=ui(o,n),l=(m=this.remotePublishedUserMap.get(r))==null?void 0:m.muteState;if(l){let u=this.remotePublishedUserMap.get(r);u&&u.flag!==o&&(u.flag=o,this._log.info(`remote publish updated: ${JSON.stringify(u.muteState)}`),this.emit("6",{prevMuteState:l,muteState:d,flag:o}))}else this._log.info(`remote publish. state: ${JSON.stringify(d)}`),this.addUser({userId:n,tinyId:a,role:20}),this.emit("3",t),this.emit("6",{prevMuteState:ui(0,n),muteState:d,flag:o})})}clear(){this.userMap.clear(),this.remotePublishedUserMap.clear()}};function vl({timesInSecond:s,maxSizeInSecond:i,getSize:e}){return J((t,r)=>{let o=new WeakMap;return E.on(T.ROOM_DESTROY,({room:n})=>o.delete(n)),function(...n){let a=o.get(this);if(a||(a={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},o.set(this,a)),a.timestamp===0?a.timestamp=Date.now():Date.now()-a.timestamp>1e3&&(a.timestamp=Date.now(),a.callCountInSecond=0,a.totalSizeInSecond=0),e&&(a.totalSizeInSecond+=e(...n)),a.timestamp!==0&&Date.now()-a.timestamp<1e3&&(a.callCountInSecond>=s||a.totalSizeInSecond>i))throw new b({code:S.INVALID_OPERATION,message:U({key:x.CALL_FREQUENCY_LIMIT,data:{isTimes:a.callCountInSecond>=s,isSize:a.totalSizeInSecond>i,name:r,timesInSecond:s,maxSizeInSecond:i}})});a.callCountInSecond++,t.call(this,...n)}})}var Wg="2025-02-18 16:57:16",um=!0,hm=function(){var s;um&&(um=!1,C.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Bt}/en/index.html`),console.info(`* Changelog: ${Bt}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),C.info("TRTC Web SDK Version:",Ce),Ot||C.debug("Build Time:",Wg),C.info("UA:",navigator.userAgent),C.info(`URL: ${location.href}${((s=self.frameElement)==null?void 0:s.tagName)==="IFRAME"?" in iframe":""}`),uo().then(i=>{i&&C.info(Rt)}))};var Tt={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var V={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},Lt=(A=>(A[A.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",A[A.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",A[A.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",A[A.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",A[A.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",A[A.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",A[A.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",A[A.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",A[A.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",A[A.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",A[A.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",A[A.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",A[A.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",A[A.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",A[A.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",A[A.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",A[A.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",A[A.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",A[A.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",A[A.INVALID_OPERATION=5100]="INVALID_OPERATION",A[A.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",A[A.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",A[A.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",A[A.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",A[A.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",A[A.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",A[A.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",A[A.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",A[A.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",A[A.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",A[A.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",A[A.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",A[A.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",A[A.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",A[A.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",A[A.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",A[A.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",A[A.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",A[A.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",A[A.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",A[A.DEVICE_ERROR=5300]="DEVICE_ERROR",A[A.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",A[A.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",A[A.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",A[A.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",A[A.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",A[A.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",A[A.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",A[A.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",A[A.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",A[A.SERVER_ERROR=5400]="SERVER_ERROR",A[A.NEED_TO_BUY=5401]="NEED_TO_BUY",A[A.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",A[A.OPERATION_FAILED=5500]="OPERATION_FAILED",A[A.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",A[A.REJOIN_FAILED=5502]="REJOIN_FAILED",A[A.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",A[A.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",A[A.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",A[A.OPERATION_ABORT=5998]="OPERATION_ABORT",A[A.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",A))(Lt||{});function pm({code:s,params:i,enableDocLink:e=!1}){let t="",r,o=Lt[s];try{r=mm[o]}catch(n){r=mm.UNKNOWN_ERROR}return se(r)?t=r(i):K(r)&&(t=r),i.fnName&&!t.includes(i.fnName)&&(t[t.length-1]!=="."&&(t+="."),t+=` thrown from ${i.fnName}()`),e&&(t+=" doc:"),t}var mm=k(v({},ve),{INVALID_PARAMETER({fnName:s}){return`the parameters of the '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' is a required param when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_TYPE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o="";return Array.isArray(i.type)?o=i.type.join("|"):o=i.type,`'${r}' must be type of ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_EMPTY({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' cannot be '${t}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:s,rule:i,fnName:e,value:t}){let r=`${s||i.name}`,o=`${i.instanceOf.name||i.instanceOf}`;return`'${r}' must be instanceof ${o} when calling ${e}(), received type: ${Ae(t)}.`},INVALID_PARAMETER_RANGE({key:s,rule:i,fnName:e,value:t}){return`'${s||i.name}' must be one of ${i.values.join("|")} when calling ${e}(), received: ${t}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:s,rule:i,fnName:e}){return`'${s||i.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:s,rule:i,value:e}){return`the min value of ${s||i.name} is ${i.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:s,rule:i,value:e}){return`the max value of ${s||i.name} is ${i.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:s,fnName:i}){return`'${s}' is not found in the document object when calling ${i}().`},INVALID_ELEMENT_ID_TYPE({key:s,fnName:i,type:e}){return`the element corresponding to '${s}' must be instanceof HTMLElement when calling ${i}(), received: ${e}.`},INVALID_STREAM_ID({key:s}){return`'${s}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:s}){return`'${s}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:s}){return`'${s}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:s}){return`'${s}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_STREAM_TYPE:({fnName:s})=>`'streamType' is required when 'userId' is not '*', calling ${s}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:s}){return`the API '${s}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:s}){return`cannot ${s} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:s,value:i}){return`cannot ${s} because remote user(userId: ${i.userId}) does not publishing ${i.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:s}){return`you are already ${s}(), cannot repeated call '${s}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:s}){return`cannot call '${s}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:s}){return`cannot call '${s}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:s})=>`the buffer size of paramerter '${s}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:s})=>`you need to call ${s}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:s}){return`the current browser does not support the capability of the function '${s}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:s}){return`cannot call ${s} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:s,error:i}){return`'${s}' got device exception${i?`, error: ${i.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`NotFoundError, no ${i} detected, please check your device and the configuration on '${s}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`NotAllowedError, you have disabled ${i} access, please allow the current application to use the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`NotReadableError, the ${i} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${i}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${i}, and it is recommended to turn on the ${i} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:s,deviceType:i=kr(s),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:s}){return`camera recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},MICROPHONE_RECOVER_FAILED({error:s}){return`microphone recover capture failed ${(s==null?void 0:s.name)||""}: ${(s==null?void 0:s.originMessage)||(s==null?void 0:s.message)}`},OPERATION_FAILED({fnName:s,error:i}){return`'${s}' failed, reason: ${i==null?void 0:i.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:s}){return`an error was caught on trtc.on('${s}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:s,error:i}){return`video context error ${s} ${(i==null?void 0:i.name)||""} ${(i==null?void 0:i.message)||""}`},SERVER_ERROR({fnName:s,error:i}){return`'${s}' got server error: ${i==null?void 0:i.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:s,url:i}){return`You need to buy packages for ${s}. Refer to: ${i}`},ACCOUNT_NO_MONEY:({fnParams:s})=>`your TRTC account run out of credit, please recharge.${s.sdkAppId?` SDKAppId: ${s.sdkAppId}`:""}`,OPERATION_ABORT({fnName:s}){return`'${s}' abort`},UNKNOWN_ERROR({fnName:s,error:i}){return`'${s}' throw unknown exception${i?`, error: ${i.toString()}.`:"."}`}});function kr(s){if(!s)return"camera";let i=s.toLowerCase();return i.includes("screen")?"screen share":i.includes("audio")?"microphone":"camera"}var Dl=class s extends Error{constructor({code:e,extraCode:t,message:r="",messageParams:o,fnName:n="",originError:a}){var l;let d;r?d=r:d=pm({code:e===V.SERVER_ERROR?e:t||e,params:v({fnName:n,error:a},o)});super(d);c(this,"name","RtcError");c(this,"code");c(this,"extraCode");c(this,"functionName");c(this,"message");c(this,"handler");c(this,"originError");this.name=Lt[e],this.code=e,this.extraCode=t,this.functionName=n,this.originError=a,this.message=d,this.extraCode===5302&&((l=this.originError)!=null&&l.message.includes("system"))&&(this.handler=()=>{let m={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},u={startLocalVideo:"webcam",startLocalAudio:"microphone"},p=document.createElement("a");fi?p.href=`ms-settings:privacy-${u[this.functionName]}`:Nt&&(p.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${m[this.functionName]}`),p.href.length>0&&p.click()})}static convertFrom(e,t,r){let o=e;if(e instanceof b){let{stack:n}=e,a={code:V.UNKNOWN_ERROR,fnName:t,originError:e};switch(e.getCode()){case S.INVALID_PARAMETER:a.code=V.INVALID_PARAMETER,a.message=e.message;break;case S.INVALID_OPERATION:a.code=V.INVALID_OPERATION;break;case S.NOT_SUPPORTED:case S.NOT_SUPPORTED_H264:a.code=V.ENV_NOT_SUPPORTED,e.getCode()===S.NOT_SUPPORTED_H264&&(a.extraCode=e.message.includes(ve.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case S.JOIN_ROOM_FAILED:a.messageParams={fnParams:r};case S.SERVER_TIMEOUT:case S.SWITCH_ROLE_FAILED:a.code=V.SERVER_ERROR,a.extraCode=e.getExtraCode();break;case S.API_CALL_ABORTED:a.code=V.OPERATION_ABORT;break;case S.DEVICE_NOT_FOUND:case S.DEVICE_AUTO_RECOVER_FAILED:case S.INITIALIZE_FAILED:a.code=5300,e.name&&(a.extraCode=Jg(e.name));break;case S.UNKNOWN:break;default:a.code=V.OPERATION_FAILED}o=new s(a),n&&(o.stack+=n.substr(n.indexOf(`
50
- `)))}else{if(e instanceof s)return e;o=new s({code:V.UNKNOWN_ERROR,fnName:t,originError:e})}return o}};function Jg(s){let i;switch(s){case"NotFoundError":i=5301;break;case"NotAllowedError":i=5302;break;case"NotReadableError":i=5303;break;case"OverconstrainedError":i=5304;break;case"InvalidStateError":i=5305;break;case"SecurityError":i=5306;break;case"AbortError":i=5307;break;default:i=5300}return i}var w=Dl;var fm={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},_m={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},Cs={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(s,i,e){if(K(s)&&!document.getElementById(s))throw new w({code:V.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:i}})}},gm={name:"userId",required:!0,type:"string"},Tm={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[Tt.AUDIO_PROFILE_STANDARD,Tt.AUDIO_PROFILE_STANDARD_STEREO,Tt.AUDIO_PROFILE_HIGH,Tt.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function $o(s,i){if(!s)throw new w({code:V.INVALID_OPERATION,extraCode:5101,fnName:i})}function Em(s,i,e){if(!s)throw new w({code:V.INVALID_OPERATION,extraCode:5102,fnName:i,messageParams:{value:e}})}var TD={type:"number",notLessThanZero:!0},qg={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(s,i,e){if(this._room.isJoined)throw new w({code:V.INVALID_OPERATION,extraCode:5104,fnName:e});if(s.roomId){if(K(s.roomId))throw new w({code:V.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:i}});if(!(/^[1-9]\d*$/.test(String(s.roomId))&&s.roomId<4294967295))throw new w({code:V.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:i}})}else if(s.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(s.strRoomId))throw new w({code:V.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:i}})}else throw new w({code:V.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Cs,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:fm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.videoTrack)&&Ci())throw new w({code:V.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:k(v({},Cs),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:fm}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:Tm},validate(s){var i;if(!((i=s==null?void 0:s.option)!=null&&i.audioTrack)&&Ci())throw new w({code:V.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:Tm}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Cs,publish:{type:"boolean"},option:_m},validate(s,i,e,t,r){var o;if(!((o=s==null?void 0:s.option)!=null&&o.videoTrack)&&Ci())throw new w({code:V.ENV_NOT_SUPPORTED,extraCode:5201});if(!Eo())throw new w({code:V.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Cs,publish:{type:"boolean"},option:_m}},muteRemoteAudio:[gm,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[gm,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Cs,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){$o(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(Em(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new w({code:V.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:k(v({},Cs),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(s,i,e){$o(this._room.isJoined,e);let t=this._room.remotePublishedUserMap.get(s.userId);if(Em(!!t,e,s),t&&(s.streamType==="main"&&!t.muteState.videoAvailable||s.streamType==="sub"&&!t.muteState.hasAuxiliary))throw new w({code:V.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:s}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(s,i,e){if(s.userId!=="*"&&g(s.streamType))throw new w({code:V.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(s,i,e){$o(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(s,i,e,t){if(!Co)throw new w({code:V.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new w({code:V.INVALID_OPERATION,fnName:e,extraCode:5108});if(s.byteLength>1e3)throw new w({code:V.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new w({code:V.INVALID_PARAMETER,extraCode:5017,messageParams:{key:i},fnName:e});$o(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(s,i,e){if(!s&&!this._room.isMainStreamPublished||s&&!this._room.isAuxStreamPublished)throw new w({code:V.INVALID_OPERATION,extraCode:5109,messageParams:{key:i},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(s,i,e,t){if(s.byteLength>1e3)throw new w({code:V.INVALID_PARAMETER,extraCode:5018,fnName:e});if(s.byteLength===0)throw new w({code:V.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:i}})}}},validate(s,i,e){if($o(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new w({code:V.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:i}})}}},Oe={TRTC:qg};var Fe=class extends Error{};function jg(s,i){let e=lr(s);for(let t=0;t<i.length;t++)Ht(e[t],i[t]);return e}function Xg(s){this._resolve=Promise.resolve(s)}function Qg(s){this._reject=Promise.reject(s)}var tr=class tr{constructor(i,e){this.instance=i;this.group=e;c(this,"started",!1);c(this,"ops",[]);c(this,"startSame",()=>!0);c(this,"mergeUpdate",jg);let t=tr.instances.get(i);t?t.set(e,this):tr.instances.set(i,new Map([[e,this]]))}static get(i,e){if(!e)return;let t=tr.instances.get(i);return t&&t.get(e)||new tr(i,e)}static gets(i,e){let t=tr.instances.get(i),r=[];return t&&t.forEach((o,n)=>{e.test(n)&&r.push(o)}),r}action(i,e,t){let r=a=>{var d;return i===0?this.started=!0:i===3&&(this.started=!1),this.ops.shift(),(d=this.currentOp)==null||d.action(),a},o=a=>{var d,l;throw this.ops.shift(),i===0&&((d=this.currentOp)==null?void 0:d.type)===2&&this.ops.shift().reject(new Fe("start failed")),(l=this.currentOp)==null||l.action(),a},n={type:i,action:()=>e(...n.args).then(r,o),args:t,resolve:Xg,reject:Qg};try{switch(this.state){case 1:if(i===0)throw new Fe("already started");break;case 4:if(i===2)throw new Fe("not started");break;default:return this.cacheOp(n)}}catch(a){return Promise.reject(a)}return this.ops.push(n),n.promise=e(...n.args).then(r,o)}cacheOp(i){if(this.ops.length===1)switch(this.state){case 0:case 2:if(i.type===0)throw new Fe("already start");break;case 3:switch(i.type){case 2:throw new Fe("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Fe("unknown state")}else switch(i.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let t=new Fe("keep stop");if(this.ops.slice(1).forEach(r=>r.reject(t)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,i.args),this.lastOp.promise;case 3:throw new Fe("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Fe("start not allowed after update");case 0:throw new Fe("duplicate start");case 3:if(this.startSame(this.currentOp.args,i.args))throw this.ops.pop().reject(new Fe("keep start")),new Fe("already start")}}i.promise=new Promise((t,r)=>{i._resolve?i._resolve.then(t):i.resolve=t,i._reject?i._reject.catch(r):i.reject=r});let{action:e}=i;return i.action=()=>e().then(i.resolve,i.reject),this.ops.push(i),i.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};c(tr,"instances",new WeakMap);var Pi=tr;var wa=new WeakMap,xa=(s,i)=>{if(i instanceof Fe){let{stack:e}=i;i=new w({code:V.OPERATION_ABORT,message:`${s} abort: ${i.message}`,fnName:s}),e&&(i.stack+=e.substr(e.indexOf(`
51
- `)))}throw i};function ir(s,i){return J((e,t)=>function(...r){let o=Pi.get(this,typeof s=="string"?s:s.call(this,...r));return o?(i&&(o.startSame=i.bind(this)),o.action(0,e.bind(this),r).catch(xa.bind(null,t))):e.apply(this,r)})}function Lr(s,i){let{merge:e,debounce:t}=i||{};return J((r,o)=>function(...n){let a=Pi.get(this,typeof s=="string"?s:s.call(this,...n));if(!a)return r.apply(this,n);if(e&&(a.mergeUpdate=e.bind(this)),t&&t.isNeedToDebounce.apply(this,n)){let{delay:d,getKey:l}=t;return new Promise((m,u)=>{var I,R;let p=(I=wa.get(this))==null?void 0:I.get(l(...n));if(p){let{timeoutId:D,resolve:G}=p;clearTimeout(D),G()}let _=setTimeout(()=>{if(a.state===3||a.state===4)return m();a.action(2,r.bind(this),n).catch(xa.bind(null,o)).then(m,u)},d);wa.has(this)?(R=wa.get(this))==null||R.set(l(...n),{timeoutId:_,resolve:m}):wa.set(this,new Map([[l(...n),{timeoutId:_,resolve:m}]]))})}return a.action(2,r.bind(this),n).catch(xa.bind(null,o))})}function rr(s){return J((i,e)=>function(...t){let r=typeof s=="function"?s.call(this,...t):s;if(r instanceof RegExp)return Promise.all(Pi.gets(this,r).map(n=>n.action(3,()=>Promise.resolve(),t))).then(()=>i.call(this,...t));let o=Pi.get(this,r);return o?o.action(3,i.bind(this),t).catch(xa.bind(null,e)):i.apply(this,t)})}var M={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},Sm=new Set([M.ERROR,M.AUTOPLAY_FAILED,M.KICKED_OUT,M.REMOTE_USER_ENTER,M.REMOTE_USER_EXIT,M.REMOTE_AUDIO_AVAILABLE,M.REMOTE_AUDIO_UNAVAILABLE,M.REMOTE_VIDEO_AVAILABLE,M.REMOTE_VIDEO_UNAVAILABLE,M.CONNECTION_STATE_CHANGED,M.PUBLISH_STATE_CHANGED,M.SCREEN_SHARE_STOPPED,M.DEVICE_CHANGED,M.FIRST_VIDEO_FRAME]);function sr(s){return s==="sub"?"auxiliary":s==="auxiliary"?"sub":"main"}function Go(s){return s===Tt.QOS_PREFERENCE_CLEAR?"detail":s===Tt.QOS_PREFERENCE_SMOOTH?"motion":""}var Ml={};ni(Ml,{bytes2ms:()=>ku,convertObjectNumberToInt:()=>Ks,copyProperties:()=>Mu,deepClone:()=>lr,deepMerge:()=>Ht,delay:()=>hi,fibonacci:()=>hr,formatedTime:()=>Fu,getConstructorName:()=>zs,getContainerFromElement:()=>Bu,getEnv:()=>Du,getInternalVersion:()=>Uu,getLoggerUrl:()=>li,getMuteStateFromFlag:()=>ui,getNetworkType:()=>Dc,getNumNetworkType:()=>ur,getReconnectionTimeout:()=>Ct,getStringByteLength:()=>Ys,getTurnServer:()=>Vu,getUint32Version:()=>In,getValueType:()=>Ae,getViewListFromView:()=>Qr,glog:()=>kc,ipv4ToUint32:()=>Xr,isArray:()=>Te,isAudioWorkletSupported:()=>xu,isBoolean:()=>he,isConstructor:()=>Jr,isEmpty:()=>jr,isFunction:()=>se,isLangChinese:()=>At,isMediaStreamTrack:()=>Pu,isNumber:()=>Y,isObject:()=>ut,isOverseaSdkAppId:()=>Qs,isPlainObject:()=>Qe,isPortrait:()=>Sn,isPromise:()=>Wi,isRemoteTrack:()=>wu,isString:()=>K,isUndefined:()=>g,loadImage:()=>zr,ms2bytes:()=>Lu,ms2samples:()=>Mc,performanceNow:()=>L,promiseAny:()=>qr,samples2ms:()=>Oc,setNetworkType:()=>Tn,stringify:()=>ht,stringifyIncludeValue:()=>En,throttlePromise:()=>An});var Pl={};ni(Pl,{getAbilityConfigUrl:()=>Yg,getScheduleDomain:()=>Wo,isNeedToSchedule:()=>Ua,scheduleProxy:()=>Pt,sendScheduleRequest:()=>Ll,setIsNeedToSchedule:()=>wt,setScheduleProxy:()=>Va});var kl=null,Ua=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(di).map(s=>`<link rel="dns-prefetch" href="https://${s}">`).join(`\r
52
- `));function wt(s){he(s)&&s!==Ua&&(Ua=s,C.info(`setIsNeedToSchedule ${s}`))}E.on("28",()=>wt(!0));E.on("63",()=>wt(!0));E.on("84",()=>wt(!0));E.on("201",s=>{s.state==="RECONNECTING"&&wt(!0)});E.on("202",s=>{s.state==="RECONNECTING"&&wt(!0)});function zg(s,i,e){let t={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let r=performance.getEntriesByType("resource"),o=Rs(s,h.MAIN),n=Rs(s,h.BACKUP);for(let a of r)if(a.startTime>=e&&(a.name===o||a.name===n)&&a.transferSize>0){let d=a.name===o?h.MAIN:h.BACKUP,l=Math.round(a.duration),m=Math.round(a.domainLookupStart-a.startTime),u=a.redirectStart>0?Math.round(a.redirectEnd-a.redirectStart):0,p=a.fetchStart>0?Math.round(a.domainLookupStart-a.fetchStart):0,_=Math.round(a.domainLookupEnd-a.domainLookupStart),I=Math.round(a.requestStart-a.secureConnectionStart),R=Math.round(a.secureConnectionStart-a.connectStart),D=Math.round(a.responseStart-a.requestStart),G=Math.round(a.responseEnd-a.responseStart),te=[_,I,R,D,G];ee.uploadEvent({log:`stat-schedule-net:${l}(${m}(${u}->${p})->${te.join("->")}) ${d}`,userId:i}),t=k(v({},t),{totalCost:l,local:m,dns:_,tcp:R,tls:I,request:D,response:G});break}}catch(r){C.error("getScheduleDetailCost error",r)}return t}function Ll(l){return f(this,arguments,function*({userId:s,sdkAppId:i,useStringRoomId:e,roomId:t,userSig:r,version:o,frameWorkType:n,role:a,latencyLevel:d}){if(!Ua&&kl)return{isCached:!0,result:kl};let m={delta:0,count:[1,1],msg:[],detail:[]};try{let u=new FormData;u.append("userId",String(s)),u.append("sdkAppId",String(i)),u.append("isStrGroupId",String(e)),u.append("groupId",String(t)),u.append("sdkVersion",o),u.append("userSig",String(r)),a&&u.append("role",String(a)),d&&u.append("latencyLevel",String(d)),n&&u.append("frameWorkType",String(n));let p=L(),_=yield Zg(u,m,i);_.config&&(_.config.loggerDomain&&or(_.config.loggerDomain),he(_.config.scheduleCache)&&wt(!_.config.scheduleCache)),m.delta=L()-p;let I=zg(Number(i),s,p);return kl=_,{isCached:!1,result:_,detailCost:I}}catch(u){let p=Te(u)?u[0]:u,_=Y(p.code)?p.code:0,I=`schedule failed${p.message?`: ${p.message}`:""}`,R=new b({code:S.SCHEDULE_FAILED,extraCode:_,message:U({key:x.JOIN_ROOM_FAILED,data:{error:I,code:_}})});throw C.error(I,_),R}})}var Pt={main:"",backup:""};function Va(s){Te(s)?(Pt.main=s[0],Pt.backup=s[1]):Pt.main=s}function Rs(s,i=h.MAIN,e=!1){return`https://${Pt[i]||Wo(s,i,e)}/api/v1/config`}function Yg(s,i=h.MAIN){return`https://${Pt[i]||Wo(s,i)}/api/v1/trtcAutoConf`}function Wo(s,i=h.MAIN,e=!1){let t;return Qs(s)?e?t=i===h.MAIN?di.MAIN_OVERSEA_BACKUP:di.BACKUP_OVERSEA:t=i===h.MAIN?di.MAIN_OVERSEA:di.BACKUP_OVERSEA:t=i===h.MAIN?di.MAIN:di.BACKUP,t}function Kg(s,i,e){return new Promise((t,r)=>{mi({url:s,body:i,timeout:e.timeout,priority:"high"}).then(o=>{o.data.code===0?t(o.data.data):r({code:o.data.code,message:o.data.msg})}).catch(r)})}var Im=(s,i)=>Gt({retryFunction:Kg,settings:{retries:3,timeout:0},onError:i,onRetrying:s});function Zg(s,i,e){return new Promise((t,r)=>{let o=null;qr([Im(n=>i.count[0]=n+1,({error:n,retry:a,retriedCount:d,retryFuncArgs:l})=>{i.msg[0]=n.message,o||(d>=1&&(l[0]=Rs(e,h.MAIN,!0)),a())})(Rs(e,h.MAIN),s,{get timeout(){return hr(2+i.count[0])*1e3}}),Im(n=>i.count[1]=n+1,({error:n,retry:a,retriedCount:d,retryFuncArgs:l})=>{i.msg[1]=n.message,o||(d>=2&&(l[0]=Rs(e,h.BACKUP,!0)),a())})(Rs(e,h.BACKUP),s,{get timeout(){return hr(2+i.count[1])*1e3}})]).then(n=>{o=n,t(o)}).catch(r)})}var eT=s=>s.startsWith("data:application/octet-stream;base64,"),tT=s=>s.startsWith("file://"),Ba=class{constructor(){c(this,"_log");this._log=C.createLogger({id:"fd"})}download(i,e){return f(this,null,function*(){let{type:t="blob"}=e||{};try{let r=L(),o;if(se(fetch)?o=yield this.downloadWithFetch(i,t):o=yield this.downloadWithXHR(i,t),!o||!o.data)throw new Error("data is empty");let n=L()-r;return this._log.info(`downloaded: ${i}, return type: ${t}, cost: ${n}ms`),N.addSuccessEvent({key:522700,cost:L()-r}),o.data}catch(r){throw this._log.error(`failed to download: ${i}, error: ${r}`),N.addFailedEvent({key:522700,error:r}),r}})}downloadWithFetch(i,e){return f(this,null,function*(){this._log.info(`download with fetch: ${i}, return type: ${e}`);try{let t=yield fetch(i);if(!t.ok)throw new Error("network response was not ok");let r;return e==="arraybuffer"?r=yield t.arrayBuffer():r=yield t.blob(),{data:r}}catch(t){throw t}})}downloadWithXHR(i,e){return this._log.info(`download with xhr: ${i}, return type: ${e}`),new Promise((t,r)=>{let o=new XMLHttpRequest;o.open("GET",i,!0),o.responseType=e,o.onload=()=>{o.status===200||o.status===0&&o.response?t({data:o.response}):r(new Error("XHR failed"))},o.onerror=r,o.send(null)})}loadWasm(i,e){return f(this,null,function*(){this._log.info(`loadWasm ${i}, importObject: ${JSON.stringify(e)}`);let t=L(),r=null,o=null;if(se(WebAssembly.instantiateStreaming)&&!eT(i)&&!tT(i)&&se(fetch))try{let n=fetch(i);r=(yield WebAssembly.instantiateStreaming(n,e)).instance}catch(n){o=n}if(!r)try{let n=yield this.download(i,{type:"arraybuffer"});r=(yield WebAssembly.instantiate(n,e)).instance}catch(n){o=n}if(r){let n=L()-t;return this._log.info(`loadedWasm ${i}, cost: ${n}ms`),N.addSuccessEvent({key:522701,cost:n}),r}throw this._log.error(`failed to loadWasm ${i}, error: ${o}`),N.addFailedEvent({key:522701,error:o}),o})}};y([Ke({settings:{timeout:0,retries:3},onRetrying(i){this._log.warn(`download retrying: ${i}`)}})],Ba.prototype,"download",1);var Am=new Ba;function Cm({TRTC:s,room:i,errorModule:e,assetsPath:t}){return{TRTC:s,room:i,assetsPath:t,fileDownloader:Am,innerEmitter:E,constants:vc,environment:as,utils:Ml,eventLogger:ee,log:this.room.getLogger(),loggerManager:C,errorModule:e,kvStatManager:N,rtcDectection:jt,trtc:this,rx:Nl,enums:dd,schedule:Pl,clearStarted:(r,o)=>{let n=r.getAlias(),a=Pi.instances.get(this);if(a)if(o){let d=a.get(n+o);if(!d)return;d.started=!1}else a.forEach((d,l)=>{l.startsWith(n)&&(d.started=!1)})},startGetPCM:xo,createAudioNode:xd}}var Rm=(s,i)=>{let{emit:e}=s;return s.emit=(...t)=>{try{return e.apply(s,t)}catch(r){let o=U({key:x.CATCH_HANDLER_ERROR,data:{name:i,event:t[0]},addDocLink:!1});return C.warn(`${o}
47
+ } `;var Bo=class extends re{constructor(e){super();l(this,"frameRate");l(this,"_canvas");l(this,"log");l(this,"hasAlpha",!1);l(this,"name");l(this,"error");this.name=e.name,this.log=e.logger.createChild({id:`vc-${this.name}`}),this.frameRate=e.frameRate}set width(e){this._canvas&&(this._canvas.width=e)}get width(){var e;return((e=this._canvas)==null?void 0:e.width)||0}set height(e){this._canvas&&(this._canvas.height=e)}get height(){var e;return((e=this._canvas)==null?void 0:e.height)||0}setSize(e,r){this._canvas&&(this._canvas.width=e,this._canvas.height=r)}createVideoTrackSource(e,r){return new Ei(this,e,{logger:this.log,name:r})}createVideoTrackDestination(e){return new Fs(this,e)}createVideoImageSource(e,r){return new Da(this,r?Object.assign(r,{logger:this.log,image:e}):{logger:this.log,image:e})}createVideoPlayerSource(e,r){return new Na(this,e,r?Object.assign(r,{logger:this.log}):{logger:this.log})}get available(){return this.state==="created"}disconnect(){this.emit("disconnect")}};l(Bo,"_ids",0);var pS={alpha:!0,antialias:!1,premultipliedAlpha:!1,preserveDrawingBuffer:!1,depth:!1,stencil:!1,failIfMajorPerformanceCaveat:!0,powerPreference:"low-power"},Bs=class Bs extends Bo{constructor(){super(...arguments);l(this,"defaultProgam");l(this,"defaultVShader");l(this,"defaultFShader");l(this,"ctx")}create(){if(this._canvas||(this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Bo._ids++}`),this.ctx=this._canvas.getContext("webgl2",pS),!this.ctx)throw new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:2,message:"webgl2 not supported"});this.defaultVShader=this.createShader(this.ctx.VERTEX_SHADER,lS),this.defaultFShader=this.createShader(this.ctx.FRAGMENT_SHADER,mS),this.defaultProgam=this.createProgram(this.defaultVShader,this.defaultFShader),this._canvas.addEventListener("webglcontextlost",()=>{this.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:4,message:"webgl context lost"}))}),this.log.info("video context created use webgl")}destroy(e){let r="";return e&&(r=e.message,this.error=e,X.addFailedEvent({key:512702,error:e})),this.disconnect(),this.log.info(`video context destroy${r}`?`: ${r}`:""),this.ctx&&(this.ctx.deleteShader(this.defaultVShader),this.ctx.deleteShader(this.defaultFShader),this.ctx.deleteProgram(this.defaultProgam),delete this.ctx),e}set width(e){var r;(r=this.ctx)==null||r.viewport(0,0,e,this.height),super.width=e}set height(e){var r;(r=this.ctx)==null||r.viewport(0,0,this.width,e),super.height=e}setSize(e,r){var o;(o=this.ctx)==null||o.viewport(0,0,e,r),super.setSize(e,r)}createShader(e,r){let o=this.ctx,s=o.createShader(e);return o.shaderSource(s,r),o.compileShader(s),s}createProgram(e,r){let o=this.ctx,s=o.createProgram();return o.attachShader(s,e),o.attachShader(s,r),o.linkProgram(s),o.getProgramParameter(s,o.LINK_STATUS)||this.log.error(o.getProgramInfoLog(s)),s}};l(Bs,"UNAVAILABLE","unavailable"),G([ye(re.INIT,"created",{sync:!0,fail(e){X.addFailedEvent({key:512700,error:e.cause||e})},success(){X.addSuccessEvent({key:512700})}})],Bs.prototype,"create",1),G([ye("created",re.INIT,{ignoreError:!0,sync:!0,success(e){e&&this.emit(Bs.UNAVAILABLE,e),this.removeAllListeners()}})],Bs.prototype,"destroy",1);var _t=Bs,Ct=class extends Bo{constructor(){super(...arguments);l(this,"ctx")}create(e){if(this.hasAlpha=e.alpha,this._canvas=document.createElement("canvas"),this._canvas.id=`trtc_${this.name}_${Bo._ids++}`,this.ctx=this._canvas.getContext("2d",{alpha:e.alpha}),!this.ctx)throw new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:2,message:"2d context not supported"});this.log.info("video context created use 2d")}destroy(e){let r="";e&&(r=e.message,this.error=e,X.addFailedEvent({key:512703,error:e})),this.disconnect(),this.log.info(`video context destroy ${r?`: ${r}`:""}`),delete this.ctx,this._canvas&&(this._canvas.remove(),this._canvas.width=0,this._canvas.height=0,delete this._canvas),this.removeAllListeners(),X.addSuccessEvent({key:512703})}};G([ye(re.INIT,"created",{sync:!0,fail(e){X.addFailedEvent({key:512701,error:e.cause||e})},success(){X.addSuccessEvent({key:512701})}})],Ct.prototype,"create",1),G([ye("created",re.INIT,{ignoreError:!0,sync:!0})],Ct.prototype,"destroy",1);function hS(i){return[15,30,45,60].reduce((e,r)=>Math.abs(r-i)<Math.abs(e-i)?r:e)}var Hi=class extends ks{constructor(e,r,o=4){super(e,r,o);l(this,"mediaType",4);l(this,"source");l(this,"stat",{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,end2EndDelay:0,jitterBufferDelay:0});this.manager=e.videoManager,this.once("first-video-frame",s=>{this.room.emit("first-video-frame",s)})}play(e,r){return(nt(r==null?void 0:r.canvasRender)?r.canvasRender:Yt===17)&&!this.source&&this.useCanvasPlayer(),super.play(e,r).then(()=>{this.player.calculateStat()})}useCanvasPlayer(){if(this.log.info(`useCanvasPlayer(), has element:${!!this.player.element}`),!this.player.element)return;let e=new Ct({frameRate:15,logger:this.log,name:this.userId});e.create({alpha:!1});let r=new Fo(e,{name:"remotePlayer",logger:this.log});this.source=e.createVideoPlayerSource(this.player),this.source.connect(r),this.player.setCanvas(e._canvas),Ao()||(this.updateCanvasPlayerFPS=this.updateCanvasPlayerFPS.bind(this,e),this.room.on("heartbeat-report",this.updateCanvasPlayerFPS,this))}updateCanvasPlayerFPS(e){let r=this.decodeFPS,o=hS(r);if(!$e(r)||r<=0){this.log.debug(`updateCanvasPlayerFPS() ignore decoder: ${r} `);return}if(o===e.frameRate){this.log.debug(`updateCanvasPlayerFPS() ignore ClosestFPS ${o} == ${e.frameRate}`);return}this.log.info(`updateCanvasPlayerFPS() decoder: ${r}, closest: ${o}, current: ${e.frameRate}`),e.frameRate=o}get decodeFPS(){var a;let{msg_video_status:e}=((a=this.room.heartbeatReport)==null?void 0:a.msg_down_stream_info.find(d=>d.msg_user_info.str_identifier===this.userId))||{},r=this.mediaType===2?7:this.isSmall?3:2;if(!e||e.length===0)return 0;let o=e.find(d=>d.uint32_video_stream_type===r);return(o==null?void 0:o.uint32_video_dec_fps)||0}stop(){return this.room.off("heartbeat-report",this.updateCanvasPlayerFPS,this),super.stop()}decodeFrame(e){if(!this.manager)return e;for(let r of this.manager.decodePipeline)if(r&&(e=r({frame:e,track:this}),!e))return;return e}get isBig(){return this.mediaType===4}get isSmall(){return this.mediaType===8}changeType(e){this.room.changeType(e,this.user)}get isAvailable(){return this.user.muteState.videoAvailable}setMirror(e){e==="publish"||e==="both"||super.setMirror(e)}onDecodeDowngradeStateChanged(e){this.emit("decode-downgrade-state-changed",e)}},ou=class extends Hi{constructor(e,r){super(e,r,2);l(this,"mediaType",2);l(this,"objectFit","contain")}get isAvailable(){return this.user.muteState.hasAuxiliary}};var $s=new Map;F.on(P.JOIN_SUCCESS,({room:i})=>{ze(i.userId,{eventId:32788})});F.on(P.LEAVE_START,({room:i})=>{ze(i.userId,{eventId:32789})});F.on(P.LOCAL_TRACK_PUBLISHED,({track:i})=>{if(i.room){let t=32769;i.mediaType===4?t=32768:i.mediaType===2&&(t=32805),ze(i.room.userId,{eventId:t})}});F.on(P.LOCAL_TRACK_UNPUBLISHED,({track:i})=>{if(i.room){let t=32771;i.mediaType===4?t=32770:i.mediaType===2&&(t=32806),ze(i.room.userId,{eventId:t})}});F.on(P.TRACK_MUTED,({track:i})=>{i.room&&(i.kind===D.AUDIO?ze(i.room.userId,{eventId:i.isRemote?32785:32772,remoteUserId:i.isRemote?i.userId:void 0}):ze(i.room.userId,{eventId:i.isRemote?32784:32773,remoteUserId:i.isRemote?i.userId:void 0}))});F.on(P.TRACK_UNMUTED,({track:i})=>{i.room&&(i.kind===D.AUDIO?ze(i.room.userId,{eventId:i.isRemote?32787:32774,remoteUserId:i.isRemote?i.userId:void 0}):ze(i.room.userId,{eventId:i.isRemote?32786:32775,remoteUserId:i.isRemote?i.userId:void 0}))});F.on(P.REMOTE_TRACK_SUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&ze(i.room.userId,{eventId:32777,remoteUserId:i.userId}),i.mediaType===4&&ze(i.room.userId,{eventId:32776,remoteUserId:i.userId}),i.mediaType===8&&ze(i.room.userId,{eventId:32803,remoteUserId:i.userId}))});F.on(P.REMOTE_TRACK_UNSUBSCRIBED,({track:i})=>{i.room&&(i.mediaType===1&&ze(i.room.userId,{eventId:32779,remoteUserId:i.userId}),i.mediaType===4&&ze(i.room.userId,{eventId:32778,remoteUserId:i.userId}),i.mediaType===8&&ze(i.room.userId,{eventId:32804,remoteUserId:i.userId}))});F.on(P.SWITCH_DEVICE_SUCCESS,({track:i})=>{i.room&&ze(i.room.userId,{eventId:i.kind===D.VIDEO?32780:32781})});F.on(P.LOCAL_TRACK_REPLACED,({track:i})=>{i.room&&ze(i.room.userId,{eventId:i.kind===D.VIDEO?32782:32783})});F.on(P.SIGNAL_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e})=>{let r;switch(e){case"CONNECTED":t==="RECONNECTING"?r=32795:r=32791;break;case"DISCONNECTED":t==="RECONNECTING"?r=32796:r=32790;break;case"RECONNECTING":r=32794;break}r&&ze(i.userId,{eventId:r})});F.on(P.PEER_CONNECTION_STATE_CHANGED,({room:i,prevState:t,state:e,remoteUserId:r})=>{let o=!!r,s;switch(e){case"CONNECTED":t==="RECONNECTING"?s=o?32801:32798:s=o?32793:32792;break;case"DISCONNECTED":t==="RECONNECTING"&&(s=o?32802:32799);break;case"RECONNECTING":s=o?32800:32797;break}s&&ze(i.userId,{eventId:s,remoteUserId:r})});F.on(P.VIDEO_CODEC_IMPLEMENTATION_CHANGED,({implementation:i,userId:t,remoteUserId:e,codec:r,isHWCodec:o,prevImplementation:s,streamType:a})=>{let d=o?1:0;s||(d=o?3:2);let h=r==="h264"?0:2,m={eventId:4004,param1:d,param2:h,streamType:a||2};e&&(m.remoteUserId=e,m.eventId=4005),ze(t,m),X.addEnum({key:e?514701:513701,value:d}),X.addEnum({key:e?514700:513700,value:h})});F.on(P.LOCAL_TRACK_RECAPTURE,({track:i,error:t})=>{if(i.userId){let e={eventId:2003,param1:0};i.kind===D.AUDIO?(e.streamType=1,t&&(e.param1=2)):(e.streamType=i.streamType==="auxiliary"?7:2,t&&(e.param1=8)),ze(i.userId,e)}});function ze(i,t){let e=pe(J({},t),{timestamp:Cn()});$s.has(i)?$s.get(i).push(e):$s.set(i,[e])}function U_(i){if($s.has(i)){let t=$s.get(i).map(e=>({uint32_event_id:e.eventId,uint64_date:e.timestamp,str_userid:e.remoteUserId,uint32_param1:e.param1,uint32_param2:e.param2,uint32_video_stream_type:e.streamType}));return $s.delete(i),t}return[]}var fS=Ci(ki(),1);var Ti=class extends re{constructor(){super(...arguments);l(this,"decoder");l(this,"config")}initialize(){return A(this,null,function*(){this.decoder=new VideoDecoder({output:e=>{this.emit("videoFrame",e)},error:e=>{this.close(),this.emit("error",e)}})})}configure(e){this.config=e,this.decoder.configure(pe(J({},e),{codec:this.getCodec(e)}))}getCodec(e){switch(e.codec){case"hevc":return"hvc1.1.6.L0.12.34.56.78.9A.BC";case"av1":return"av01.0.05M.08";case"avc":return"avc1.420028";default:return e.codec}}decode(e){this.decoder.state==="configured"&&this.decoder.decode(new EncodedVideoChunk(e))}flush(){this.decoder.flush()}reset(){this.decoder.reset()}close(){this.decoder.state!=="closed"&&this.decoder.close()}};G([ye([re.INIT,"closed"],"initialized")],Ti.prototype,"initialize",1),G([ye("initialized","configured",{sync:!0})],Ti.prototype,"configure",1),G([Jf("configured")],Ti.prototype,"decode",1),G([ye([],re.INIT)],Ti.prototype,"reset",1),G([ye([],"closed",{ignoreError:!0,sync:!0})],Ti.prototype,"close",1);function _S(){var i;self.onmessage=t=>{if(t.data.type==="init"){let{canvas:e,wasmScript:r,wasmBinary:o}=t.data,s=e==null?void 0:e.getContext("2d"),a=0,d=0,h={wasmBinary:o,postRun:()=>{i=new h.VideoDecoder({videoInfo(m,T){a=m,d=T,console.log("video info",m,T)},yuvData(m,T){let I=a*d,v=I>>2,N=h.HEAPU32[m>>2],j=h.HEAPU32[(m>>2)+1],H=h.HEAPU32[(m>>2)+2],z=h.HEAPU8.subarray(N,N+I),Te=h.HEAPU8.subarray(j,j+v),Pe=h.HEAPU8.subarray(H,H+v),Xe=new Uint8Array(I+v+v);Xe.set(z),Xe.set(Te,I),Xe.set(Pe,I+v);let wt=new VideoFrame(Xe,{codedWidth:a,codedHeight:d,format:"I420",timestamp:T});e?(s==null||s.drawImage(wt,0,0,e.width,e.height),s==null||s.commit()):self.postMessage({type:"yuvData",videoFrame:wt},[wt])}}),self.postMessage({type:"ready"})}};Function("var _scriptDir = typeof document !== 'undefined' && document.currentScript ? document.currentScript.src : undefined;return "+r)()(h)}else if(t.data.type==="decode"){let{packet:e}=t.data;i==null||i.decode(e.data,e.type=="key",e.timestamp)}else if(t.data.type==="setCodec"){let{codec:e,format:r,description:o}=t.data;i==null||i.setCodec(e,r,o!=null?o:"")}}}var Br=class extends re{constructor(e,r,o=!1,s,a=!1){super();this.createModule=e;this.wasmBinary=r;this.workerMode=o;this.canvas=s;this.yuvMode=a;l(this,"worker");l(this,"decoder");l(this,"config");l(this,"module",{});l(this,"width",0);l(this,"height",0)}initialize(e){return A(this,null,function*(){var o;if(this.workerMode){let s=new RegExp("\\{(.+)\\}","s").exec(_S.toString())[1];this.worker=new Worker(URL.createObjectURL(new Blob([s],{type:"text/javascript"})));let a=(o=this.canvas)==null?void 0:o.transferControlToOffscreen(),d=yield this.wasmBinary;return console.warn("worker mode",d),this.worker.postMessage({type:"init",canvas:a,wasmScript:this.createModule.toString(),wasmBinary:d},a?[a,d]:[d]),new Promise(h=>{this.worker.onmessage=m=>{if(m.data.type==="ready")delete this.wasmBinary,h(),console.warn("worker mode initialize success");else if(m.data.type==="yuvData"){let{videoFrame:T}=m.data;this.emit("videoFrame",T)}}})}let r=this.module;return this.wasmBinary&&(r.wasmBinary=yield this.wasmBinary),r.print=s=>console.log(s),r.printErr=s=>console.log(`[JS] ERROR: ${s}`),r.onAbort=()=>console.log("[JS] FATAL: WASM ABORTED"),new Promise(s=>{r.postRun=a=>{this.decoder=new this.module.VideoDecoder(this),console.log("video soft decoder initialize success"),s()},e&&Object.assign(r,e),this.createModule(r)})})}configure(e){var r,o,s;this.config=e,(o=this.decoder)==null||o.setCodec(this.config.codec,this.config.description?"avcc":"annexb",(r=this.config.description)!=null?r:""),(s=this.worker)==null||s.postMessage({type:"setCodec",codec:this.config.codec,format:this.config.description?"avcc":"annexb",description:this.config.description})}decode(e){var r,o;(r=this.decoder)==null||r.decode(e.data,e.type=="key",e.timestamp),this.state==="configured"&&((o=this.worker)==null||o.postMessage({type:"decode",packet:e}))}flush(){}reset(){this.config=void 0,this.decoder&&this.decoder.clear()}close(){this.removeAllListeners(),this.decoder&&(this.decoder.clear(),this.decoder.delete())}videoInfo(e,r){this.width=e,this.height=r;let o={width:e,height:r};this.emit("videoCodecInfo",o)}yuvData(e,r){if(!this.module)return;let o=this.width*this.height,s=o>>2,a=this.module.HEAPU32[e>>2],d=this.module.HEAPU32[(e>>2)+1],h=this.module.HEAPU32[(e>>2)+2],m=this.module.HEAPU8.subarray(a,a+o),T=this.module.HEAPU8.subarray(d,d+s),I=this.module.HEAPU8.subarray(h,h+s);if(this.yuvMode){this.emit("videoFrame",[m,T,I]);return}let v=new Uint8Array(o+s+s);v.set(m),v.set(T,o),v.set(I,o+s),this.emit("videoFrame",new VideoFrame(v,{codedWidth:this.width,codedHeight:this.height,format:"I420",timestamp:r}))}errorInfo(e){let r={errMsg:e};this.emit("error",r)}};G([ye([re.INIT,"closed"],"initialized")],Br.prototype,"initialize",1),G([ye("initialized","configured")],Br.prototype,"configure",1),G([ye([],re.INIT)],Br.prototype,"reset",1),G([ye([],"closed")],Br.prototype,"close",1);var gS=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e=t,r,o;e.ready=new Promise((n,c)=>{r=n,o=c});var s=Object.assign({},e),a=[],d="./this.program",h=(n,c)=>{throw c},m=typeof window=="object",T=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",v="";function N(n){return e.locateFile?e.locateFile(n,v):v+n}var j,H,z,Te;(m||T)&&(T?v=self.location.href:typeof document!="undefined"&&document.currentScript&&(v=document.currentScript.src),i&&(v=i),v.indexOf("blob:")!==0?v=v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):v="",j=n=>{var c=new XMLHttpRequest;return c.open("GET",n,!1),c.send(null),c.responseText},T&&(z=n=>{var c=new XMLHttpRequest;return c.open("GET",n,!1),c.responseType="arraybuffer",c.send(null),new Uint8Array(c.response)}),H=(n,c,u)=>{var p=new XMLHttpRequest;p.open("GET",n,!0),p.responseType="arraybuffer",p.onload=()=>{if(p.status==200||p.status==0&&p.response){c(p.response);return}u()},p.onerror=u,p.send(null)},Te=n=>document.title=n);var Pe=e.print||console.log.bind(console),Xe=e.printErr||console.error.bind(console);Object.assign(e,s),s=null,e.arguments&&(a=e.arguments),e.thisProgram&&(d=e.thisProgram),e.quit&&(h=e.quit);var wt;e.wasmBinary&&(wt=e.wasmBinary);var fe=e.noExitRuntime||!0;typeof WebAssembly!="object"&&br("no native wasm support detected");var Xs,je,Qs=!1,Fu;function Hr(n,c){n||br(c)}var Le,rt,jt,qt,x,xe,Ys,Ha;function Wa(){var n=Xs.buffer;e.HEAP8=Le=new Int8Array(n),e.HEAP16=jt=new Int16Array(n),e.HEAP32=x=new Int32Array(n),e.HEAPU8=rt=new Uint8Array(n),e.HEAPU16=qt=new Uint16Array(n),e.HEAPU32=xe=new Uint32Array(n),e.HEAPF32=Ys=new Float32Array(n),e.HEAPF64=Ha=new Float64Array(n)}var Zs,Ks=[],en=[],Ga=[],Bu=!1;function $u(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)Wu(e.preRun.shift());sn(Ks)}function q(){Bu=!0,!e.noFSInit&&!g.init.initialized&&g.init(),g.ignorePermissions=!1,Rr.init(),sn(en)}function Hu(){if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)Wr(e.postRun.shift());sn(Ga)}function Wu(n){Ks.unshift(n)}function Gu(n){en.unshift(n)}function Wr(n){Ga.unshift(n)}var se=0,Gr=null,Qi=null;function bh(n){return n}function yi(n){se++,e.monitorRunDependencies&&e.monitorRunDependencies(se)}function qo(n){if(se--,e.monitorRunDependencies&&e.monitorRunDependencies(se),se==0&&(Gr!==null&&(clearInterval(Gr),Gr=null),Qi)){var c=Qi;Qi=null,c()}}function br(n){e.onAbort&&e.onAbort(n),n="Aborted("+n+")",Xe(n),Qs=!0,Fu=1,n+=". Build with -sASSERTIONS for more info.";var c=new WebAssembly.RuntimeError(n);throw o(c),c}var Ai="data:application/octet-stream;base64,";function tn(n){return n.startsWith(Ai)}var bi;bi="videodec.wasm",tn(bi)||(bi=N(bi));function rn(n){if(n==bi&&wt)return new Uint8Array(wt);if(z)return z(n);throw"both async and sync fetching of the wasm failed"}function ju(n){return!wt&&(m||T)&&typeof fetch=="function"?fetch(n,{credentials:"same-origin"}).then(c=>{if(!c.ok)throw"failed to load wasm binary file at '"+n+"'";return c.arrayBuffer()}).catch(()=>rn(n)):Promise.resolve().then(()=>rn(n))}function ja(n,c,u){return ju(n).then(p=>WebAssembly.instantiate(p,c)).then(p=>p).then(u,p=>{Xe("failed to asynchronously prepare wasm: "+p),br(p)})}function on(n,c,u,p){return!n&&typeof WebAssembly.instantiateStreaming=="function"&&!tn(c)&&typeof fetch=="function"?fetch(c,{credentials:"same-origin"}).then(E=>{var y=WebAssembly.instantiateStreaming(E,u);return y.then(p,function(R){return Xe("wasm streaming compile failed: "+R),Xe("falling back to ArrayBuffer instantiation"),ja(c,u,p)})}):ja(c,u,p)}function w(){var n={a:xg};function c(p,E){var y=p.exports;return je=y,Xs=je.E,Wa(),Zs=je.H,Gu(je.F),qo("wasm-instantiate"),y}yi("wasm-instantiate");function u(p){c(p.instance)}if(e.instantiateWasm)try{return e.instantiateWasm(n,c)}catch(p){Xe("Module.instantiateWasm callback failed with error: "+p),o(p)}return on(wt,bi,n,u).catch(o),{}}var de,Ge,sn=n=>{for(;n.length>0;)n.shift()(e)};function qu(n){this.excPtr=n,this.ptr=n-24,this.set_type=function(c){xe[this.ptr+4>>2]=c},this.get_type=function(){return xe[this.ptr+4>>2]},this.set_destructor=function(c){xe[this.ptr+8>>2]=c},this.get_destructor=function(){return xe[this.ptr+8>>2]},this.set_caught=function(c){c=c?1:0,Le[this.ptr+12>>0]=c},this.get_caught=function(){return Le[this.ptr+12>>0]!=0},this.set_rethrown=function(c){c=c?1:0,Le[this.ptr+13>>0]=c},this.get_rethrown=function(){return Le[this.ptr+13>>0]!=0},this.init=function(c,u){this.set_adjusted_ptr(0),this.set_type(c),this.set_destructor(u)},this.set_adjusted_ptr=function(c){xe[this.ptr+16>>2]=c},this.get_adjusted_ptr=function(){return xe[this.ptr+16>>2]},this.get_exception_ptr=function(){var c=Nh(this.get_type());if(c)return xe[this.excPtr>>2];var u=this.get_adjusted_ptr();return u!==0?u:this.excPtr}}var Jo=0,Ju=0;function qa(n,c,u){var p=new qu(n);throw p.init(c,u),Jo=n,Ju++,Jo}var Mt=n=>(x[Ch()>>2]=n,n),Ce={isAbs:n=>n.charAt(0)==="/",splitPath:n=>{var c=/^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/;return c.exec(n).slice(1)},normalizeArray:(n,c)=>{for(var u=0,p=n.length-1;p>=0;p--){var E=n[p];E==="."?n.splice(p,1):E===".."?(n.splice(p,1),u++):u&&(n.splice(p,1),u--)}if(c)for(;u;u--)n.unshift("..");return n},normalize:n=>{var c=Ce.isAbs(n),u=n.substr(-1)==="/";return n=Ce.normalizeArray(n.split("/").filter(p=>!!p),!c).join("/"),!n&&!c&&(n="."),n&&u&&(n+="/"),(c?"/":"")+n},dirname:n=>{var c=Ce.splitPath(n),u=c[0],p=c[1];return!u&&!p?".":(p&&(p=p.substr(0,p.length-1)),u+p)},basename:n=>{if(n==="/")return"/";n=Ce.normalize(n),n=n.replace(/\/$/,"");var c=n.lastIndexOf("/");return c===-1?n:n.substr(c+1)},join:function(){var n=Array.prototype.slice.call(arguments);return Ce.normalize(n.join("/"))},join2:(n,c)=>Ce.normalize(n+"/"+c)},jr=()=>{if(typeof crypto=="object"&&typeof crypto.getRandomValues=="function")return n=>crypto.getRandomValues(n);br("initRandomDevice")},Yi=n=>(Yi=jr())(n),yt={resolve:function(){for(var n="",c=!1,u=arguments.length-1;u>=-1&&!c;u--){var p=u>=0?arguments[u]:g.cwd();if(typeof p!="string")throw new TypeError("Arguments to path.resolve must be strings");if(!p)return"";n=p+"/"+n,c=Ce.isAbs(p)}return n=Ce.normalizeArray(n.split("/").filter(E=>!!E),!c).join("/"),(c?"/":"")+n||"."},relative:(n,c)=>{n=yt.resolve(n).substr(1),c=yt.resolve(c).substr(1);function u(M){for(var Z=0;Z<M.length&&M[Z]==="";Z++);for(var ie=M.length-1;ie>=0&&M[ie]==="";ie--);return Z>ie?[]:M.slice(Z,ie-Z+1)}for(var p=u(n.split("/")),E=u(c.split("/")),y=Math.min(p.length,E.length),R=y,b=0;b<y;b++)if(p[b]!==E[b]){R=b;break}for(var k=[],b=R;b<p.length;b++)k.push("..");return k=k.concat(E.slice(R)),k.join("/")}},Ne=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,qr=(n,c,u)=>{for(var p=c+u,E=c;n[E]&&!(E>=p);)++E;if(E-c>16&&n.buffer&&Ne)return Ne.decode(n.subarray(c,E));for(var y="";c<E;){var R=n[c++];if(!(R&128)){y+=String.fromCharCode(R);continue}var b=n[c++]&63;if((R&224)==192){y+=String.fromCharCode((R&31)<<6|b);continue}var k=n[c++]&63;if((R&240)==224?R=(R&15)<<12|b<<6|k:R=(R&7)<<18|b<<12|k<<6|n[c++]&63,R<65536)y+=String.fromCharCode(R);else{var M=R-65536;y+=String.fromCharCode(55296|M>>10,56320|M&1023)}}return y},Ri=[],Jr=n=>{for(var c=0,u=0;u<n.length;++u){var p=n.charCodeAt(u);p<=127?c++:p<=2047?c+=2:p>=55296&&p<=57343?(c+=4,++u):c+=3}return c},nn=(n,c,u,p)=>{if(!(p>0))return 0;for(var E=u,y=u+p-1,R=0;R<n.length;++R){var b=n.charCodeAt(R);if(b>=55296&&b<=57343){var k=n.charCodeAt(++R);b=65536+((b&1023)<<10)|k&1023}if(b<=127){if(u>=y)break;c[u++]=b}else if(b<=2047){if(u+1>=y)break;c[u++]=192|b>>6,c[u++]=128|b&63}else if(b<=65535){if(u+2>=y)break;c[u++]=224|b>>12,c[u++]=128|b>>6&63,c[u++]=128|b&63}else{if(u+3>=y)break;c[u++]=240|b>>18,c[u++]=128|b>>12&63,c[u++]=128|b>>6&63,c[u++]=128|b&63}}return c[u]=0,u-E};function Jt(n,c,u){var p=u>0?u:Jr(n)+1,E=new Array(p),y=nn(n,E,0,E.length);return c&&(E.length=y),E}var zu=()=>{if(!Ri.length){var n=null;if(typeof window!="undefined"&&typeof window.prompt=="function"?(n=window.prompt("Input: "),n!==null&&(n+=`
48
+ `)):typeof readline=="function"&&(n=readline(),n!==null&&(n+=`
49
+ `)),!n)return null;Ri=Jt(n,!0)}return Ri.shift()},Rr={ttys:[],init:function(){},shutdown:function(){},register:function(n,c){Rr.ttys[n]={input:[],output:[],ops:c},g.registerDevice(n,Rr.stream_ops)},stream_ops:{open:function(n){var c=Rr.ttys[n.node.rdev];if(!c)throw new g.ErrnoError(43);n.tty=c,n.seekable=!1},close:function(n){n.tty.ops.fsync(n.tty)},fsync:function(n){n.tty.ops.fsync(n.tty)},read:function(n,c,u,p,E){if(!n.tty||!n.tty.ops.get_char)throw new g.ErrnoError(60);for(var y=0,R=0;R<p;R++){var b;try{b=n.tty.ops.get_char(n.tty)}catch(k){throw new g.ErrnoError(29)}if(b===void 0&&y===0)throw new g.ErrnoError(6);if(b==null)break;y++,c[u+R]=b}return y&&(n.node.timestamp=Date.now()),y},write:function(n,c,u,p,E){if(!n.tty||!n.tty.ops.put_char)throw new g.ErrnoError(60);try{for(var y=0;y<p;y++)n.tty.ops.put_char(n.tty,c[u+y])}catch(R){throw new g.ErrnoError(29)}return p&&(n.node.timestamp=Date.now()),y}},default_tty_ops:{get_char:function(n){return zu()},put_char:function(n,c){c===null||c===10?(Pe(qr(n.output,0)),n.output=[]):c!=0&&n.output.push(c)},fsync:function(n){n.output&&n.output.length>0&&(Pe(qr(n.output,0)),n.output=[])},ioctl_tcgets:function(n){return{c_iflag:25856,c_oflag:5,c_cflag:191,c_lflag:35387,c_cc:[3,28,127,21,4,0,1,0,17,19,26,0,18,15,23,22,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]}},ioctl_tcsets:function(n,c,u){return 0},ioctl_tiocgwinsz:function(n){return[24,80]}},default_tty1_ops:{put_char:function(n,c){c===null||c===10?(Xe(qr(n.output,0)),n.output=[]):c!=0&&n.output.push(c)},fsync:function(n){n.output&&n.output.length>0&&(Xe(qr(n.output,0)),n.output=[])}}},Ja=n=>{br()},he={ops_table:null,mount(n){return he.createNode(null,"/",16895,0)},createNode(n,c,u,p){if(g.isBlkdev(u)||g.isFIFO(u))throw new g.ErrnoError(63);he.ops_table||(he.ops_table={dir:{node:{getattr:he.node_ops.getattr,setattr:he.node_ops.setattr,lookup:he.node_ops.lookup,mknod:he.node_ops.mknod,rename:he.node_ops.rename,unlink:he.node_ops.unlink,rmdir:he.node_ops.rmdir,readdir:he.node_ops.readdir,symlink:he.node_ops.symlink},stream:{llseek:he.stream_ops.llseek}},file:{node:{getattr:he.node_ops.getattr,setattr:he.node_ops.setattr},stream:{llseek:he.stream_ops.llseek,read:he.stream_ops.read,write:he.stream_ops.write,allocate:he.stream_ops.allocate,mmap:he.stream_ops.mmap,msync:he.stream_ops.msync}},link:{node:{getattr:he.node_ops.getattr,setattr:he.node_ops.setattr,readlink:he.node_ops.readlink},stream:{}},chrdev:{node:{getattr:he.node_ops.getattr,setattr:he.node_ops.setattr},stream:g.chrdev_stream_ops}});var E=g.createNode(n,c,u,p);return g.isDir(E.mode)?(E.node_ops=he.ops_table.dir.node,E.stream_ops=he.ops_table.dir.stream,E.contents={}):g.isFile(E.mode)?(E.node_ops=he.ops_table.file.node,E.stream_ops=he.ops_table.file.stream,E.usedBytes=0,E.contents=null):g.isLink(E.mode)?(E.node_ops=he.ops_table.link.node,E.stream_ops=he.ops_table.link.stream):g.isChrdev(E.mode)&&(E.node_ops=he.ops_table.chrdev.node,E.stream_ops=he.ops_table.chrdev.stream),E.timestamp=Date.now(),n&&(n.contents[c]=E,n.timestamp=E.timestamp),E},getFileDataAsTypedArray(n){return n.contents?n.contents.subarray?n.contents.subarray(0,n.usedBytes):new Uint8Array(n.contents):new Uint8Array(0)},expandFileStorage(n,c){var u=n.contents?n.contents.length:0;if(!(u>=c)){var p=1024*1024;c=Math.max(c,u*(u<p?2:1.125)>>>0),u!=0&&(c=Math.max(c,256));var E=n.contents;n.contents=new Uint8Array(c),n.usedBytes>0&&n.contents.set(E.subarray(0,n.usedBytes),0)}},resizeFileStorage(n,c){if(n.usedBytes!=c)if(c==0)n.contents=null,n.usedBytes=0;else{var u=n.contents;n.contents=new Uint8Array(c),u&&n.contents.set(u.subarray(0,Math.min(c,n.usedBytes))),n.usedBytes=c}},node_ops:{getattr(n){var c={};return c.dev=g.isChrdev(n.mode)?n.id:1,c.ino=n.id,c.mode=n.mode,c.nlink=1,c.uid=0,c.gid=0,c.rdev=n.rdev,g.isDir(n.mode)?c.size=4096:g.isFile(n.mode)?c.size=n.usedBytes:g.isLink(n.mode)?c.size=n.link.length:c.size=0,c.atime=new Date(n.timestamp),c.mtime=new Date(n.timestamp),c.ctime=new Date(n.timestamp),c.blksize=4096,c.blocks=Math.ceil(c.size/c.blksize),c},setattr(n,c){c.mode!==void 0&&(n.mode=c.mode),c.timestamp!==void 0&&(n.timestamp=c.timestamp),c.size!==void 0&&he.resizeFileStorage(n,c.size)},lookup(n,c){throw g.genericErrors[44]},mknod(n,c,u,p){return he.createNode(n,c,u,p)},rename(n,c,u){if(g.isDir(n.mode)){var p;try{p=g.lookupNode(c,u)}catch(y){}if(p)for(var E in p.contents)throw new g.ErrnoError(55)}delete n.parent.contents[n.name],n.parent.timestamp=Date.now(),n.name=u,c.contents[u]=n,c.timestamp=n.parent.timestamp,n.parent=c},unlink(n,c){delete n.contents[c],n.timestamp=Date.now()},rmdir(n,c){var u=g.lookupNode(n,c);for(var p in u.contents)throw new g.ErrnoError(55);delete n.contents[c],n.timestamp=Date.now()},readdir(n){var c=[".",".."];for(var u in n.contents)n.contents.hasOwnProperty(u)&&c.push(u);return c},symlink(n,c,u){var p=he.createNode(n,c,41471,0);return p.link=u,p},readlink(n){if(!g.isLink(n.mode))throw new g.ErrnoError(28);return n.link}},stream_ops:{read(n,c,u,p,E){var y=n.node.contents;if(E>=n.node.usedBytes)return 0;var R=Math.min(n.node.usedBytes-E,p);if(R>8&&y.subarray)c.set(y.subarray(E,E+R),u);else for(var b=0;b<R;b++)c[u+b]=y[E+b];return R},write(n,c,u,p,E,y){if(!p)return 0;var R=n.node;if(R.timestamp=Date.now(),c.subarray&&(!R.contents||R.contents.subarray)){if(y)return R.contents=c.subarray(u,u+p),R.usedBytes=p,p;if(R.usedBytes===0&&E===0)return R.contents=c.slice(u,u+p),R.usedBytes=p,p;if(E+p<=R.usedBytes)return R.contents.set(c.subarray(u,u+p),E),p}if(he.expandFileStorage(R,E+p),R.contents.subarray&&c.subarray)R.contents.set(c.subarray(u,u+p),E);else for(var b=0;b<p;b++)R.contents[E+b]=c[u+b];return R.usedBytes=Math.max(R.usedBytes,E+p),p},llseek(n,c,u){var p=c;if(u===1?p+=n.position:u===2&&g.isFile(n.node.mode)&&(p+=n.node.usedBytes),p<0)throw new g.ErrnoError(28);return p},allocate(n,c,u){he.expandFileStorage(n.node,c+u),n.node.usedBytes=Math.max(n.node.usedBytes,c+u)},mmap(n,c,u,p,E){if(!g.isFile(n.node.mode))throw new g.ErrnoError(43);var y,R,b=n.node.contents;if(!(E&2)&&b.buffer===Le.buffer)R=!1,y=b.byteOffset;else{if((u>0||u+c<b.length)&&(b.subarray?b=b.subarray(u,u+c):b=Array.prototype.slice.call(b,u,u+c)),R=!0,y=Ja(c),!y)throw new g.ErrnoError(48);Le.set(b,y)}return{ptr:y,allocated:R}},msync(n,c,u,p,E){return he.stream_ops.write(n,c,0,p,u,!1),0}}},an=(n,c,u,p)=>{var E=p?"":`al ${n}`;H(n,y=>{Hr(y,`Loading data file "${n}" failed (no arrayBuffer).`),c(new Uint8Array(y)),E&&qo(E)},y=>{if(u)u();else throw`Loading data file "${n}" failed.`}),E&&yi(E)},za=e.preloadPlugins||[];function Xu(n,c,u,p){typeof Browser!="undefined"&&Browser.init();var E=!1;return za.forEach(function(y){E||y.canHandle(c)&&(y.handle(n,c,u,p),E=!0)}),E}function Xa(n,c,u,p,E,y,R,b,k,M){var Z=c?yt.resolve(Ce.join2(n,c)):n,ie=`cp ${Z}`;function te(Q){function me(He){M&&M(),b||g.createDataFile(n,c,He,p,E,k),y&&y(),qo(ie)}Xu(Q,Z,me,()=>{R&&R(),qo(ie)})||me(Q)}yi(ie),typeof u=="string"?an(u,Q=>te(Q),R):te(u)}function Qa(n){var c={r:0,"r+":2,w:577,"w+":578,a:1089,"a+":1090},u=c[n];if(typeof u=="undefined")throw new Error(`Unknown file open mode: ${n}`);return u}function zo(n,c){var u=0;return n&&(u|=365),c&&(u|=146),u}var g={root:null,mounts:[],devices:{},streams:[],nextInode:1,nameTable:null,currentPath:"/",initialized:!1,ignorePermissions:!0,ErrnoError:null,genericErrors:{},filesystems:null,syncFSRequests:0,lookupPath:(n,c={})=>{if(n=yt.resolve(n),!n)return{path:"",node:null};var u={follow_mount:!0,recurse_count:0};if(c=Object.assign(u,c),c.recurse_count>8)throw new g.ErrnoError(32);for(var p=n.split("/").filter(ie=>!!ie),E=g.root,y="/",R=0;R<p.length;R++){var b=R===p.length-1;if(b&&c.parent)break;if(E=g.lookupNode(E,p[R]),y=Ce.join2(y,p[R]),g.isMountpoint(E)&&(!b||b&&c.follow_mount)&&(E=E.mounted.root),!b||c.follow)for(var k=0;g.isLink(E.mode);){var M=g.readlink(y);y=yt.resolve(Ce.dirname(y),M);var Z=g.lookupPath(y,{recurse_count:c.recurse_count+1});if(E=Z.node,k++>40)throw new g.ErrnoError(32)}}return{path:y,node:E}},getPath:n=>{for(var c;;){if(g.isRoot(n)){var u=n.mount.mountpoint;return c?u[u.length-1]!=="/"?`${u}/${c}`:u+c:u}c=c?`${n.name}/${c}`:n.name,n=n.parent}},hashName:(n,c)=>{for(var u=0,p=0;p<c.length;p++)u=(u<<5)-u+c.charCodeAt(p)|0;return(n+u>>>0)%g.nameTable.length},hashAddNode:n=>{var c=g.hashName(n.parent.id,n.name);n.name_next=g.nameTable[c],g.nameTable[c]=n},hashRemoveNode:n=>{var c=g.hashName(n.parent.id,n.name);if(g.nameTable[c]===n)g.nameTable[c]=n.name_next;else for(var u=g.nameTable[c];u;){if(u.name_next===n){u.name_next=n.name_next;break}u=u.name_next}},lookupNode:(n,c)=>{var u=g.mayLookup(n);if(u)throw new g.ErrnoError(u,n);for(var p=g.hashName(n.id,c),E=g.nameTable[p];E;E=E.name_next){var y=E.name;if(E.parent.id===n.id&&y===c)return E}return g.lookup(n,c)},createNode:(n,c,u,p)=>{var E=new g.FSNode(n,c,u,p);return g.hashAddNode(E),E},destroyNode:n=>{g.hashRemoveNode(n)},isRoot:n=>n===n.parent,isMountpoint:n=>!!n.mounted,isFile:n=>(n&61440)===32768,isDir:n=>(n&61440)===16384,isLink:n=>(n&61440)===40960,isChrdev:n=>(n&61440)===8192,isBlkdev:n=>(n&61440)===24576,isFIFO:n=>(n&61440)===4096,isSocket:n=>(n&49152)===49152,flagsToPermissionString:n=>{var c=["r","w","rw"][n&3];return n&512&&(c+="w"),c},nodePermissions:(n,c)=>g.ignorePermissions?0:c.includes("r")&&!(n.mode&292)||c.includes("w")&&!(n.mode&146)||c.includes("x")&&!(n.mode&73)?2:0,mayLookup:n=>{var c=g.nodePermissions(n,"x");return c||(n.node_ops.lookup?0:2)},mayCreate:(n,c)=>{try{var u=g.lookupNode(n,c);return 20}catch(p){}return g.nodePermissions(n,"wx")},mayDelete:(n,c,u)=>{var p;try{p=g.lookupNode(n,c)}catch(y){return y.errno}var E=g.nodePermissions(n,"wx");if(E)return E;if(u){if(!g.isDir(p.mode))return 54;if(g.isRoot(p)||g.getPath(p)===g.cwd())return 10}else if(g.isDir(p.mode))return 31;return 0},mayOpen:(n,c)=>n?g.isLink(n.mode)?32:g.isDir(n.mode)&&(g.flagsToPermissionString(c)!=="r"||c&512)?31:g.nodePermissions(n,g.flagsToPermissionString(c)):44,MAX_OPEN_FDS:4096,nextfd:()=>{for(var n=0;n<=g.MAX_OPEN_FDS;n++)if(!g.streams[n])return n;throw new g.ErrnoError(33)},getStreamChecked:n=>{var c=g.getStream(n);if(!c)throw new g.ErrnoError(8);return c},getStream:n=>g.streams[n],createStream:(n,c=-1)=>(g.FSStream||(g.FSStream=function(){this.shared={}},g.FSStream.prototype={},Object.defineProperties(g.FSStream.prototype,{object:{get(){return this.node},set(u){this.node=u}},isRead:{get(){return(this.flags&2097155)!==1}},isWrite:{get(){return(this.flags&2097155)!==0}},isAppend:{get(){return this.flags&1024}},flags:{get(){return this.shared.flags},set(u){this.shared.flags=u}},position:{get(){return this.shared.position},set(u){this.shared.position=u}}})),n=Object.assign(new g.FSStream,n),c==-1&&(c=g.nextfd()),n.fd=c,g.streams[c]=n,n),closeStream:n=>{g.streams[n]=null},chrdev_stream_ops:{open:n=>{var c=g.getDevice(n.node.rdev);n.stream_ops=c.stream_ops,n.stream_ops.open&&n.stream_ops.open(n)},llseek:()=>{throw new g.ErrnoError(70)}},major:n=>n>>8,minor:n=>n&255,makedev:(n,c)=>n<<8|c,registerDevice:(n,c)=>{g.devices[n]={stream_ops:c}},getDevice:n=>g.devices[n],getMounts:n=>{for(var c=[],u=[n];u.length;){var p=u.pop();c.push(p),u.push.apply(u,p.mounts)}return c},syncfs:(n,c)=>{typeof n=="function"&&(c=n,n=!1),g.syncFSRequests++,g.syncFSRequests>1&&Xe(`warning: ${g.syncFSRequests} FS.syncfs operations in flight at once, probably just doing extra work`);var u=g.getMounts(g.root.mount),p=0;function E(R){return g.syncFSRequests--,c(R)}function y(R){if(R)return y.errored?void 0:(y.errored=!0,E(R));++p>=u.length&&E(null)}u.forEach(R=>{if(!R.type.syncfs)return y(null);R.type.syncfs(R,n,y)})},mount:(n,c,u)=>{var p=u==="/",E=!u,y;if(p&&g.root)throw new g.ErrnoError(10);if(!p&&!E){var R=g.lookupPath(u,{follow_mount:!1});if(u=R.path,y=R.node,g.isMountpoint(y))throw new g.ErrnoError(10);if(!g.isDir(y.mode))throw new g.ErrnoError(54)}var b={type:n,opts:c,mountpoint:u,mounts:[]},k=n.mount(b);return k.mount=b,b.root=k,p?g.root=k:y&&(y.mounted=b,y.mount&&y.mount.mounts.push(b)),k},unmount:n=>{var c=g.lookupPath(n,{follow_mount:!1});if(!g.isMountpoint(c.node))throw new g.ErrnoError(28);var u=c.node,p=u.mounted,E=g.getMounts(p);Object.keys(g.nameTable).forEach(R=>{for(var b=g.nameTable[R];b;){var k=b.name_next;E.includes(b.mount)&&g.destroyNode(b),b=k}}),u.mounted=null;var y=u.mount.mounts.indexOf(p);u.mount.mounts.splice(y,1)},lookup:(n,c)=>n.node_ops.lookup(n,c),mknod:(n,c,u)=>{var p=g.lookupPath(n,{parent:!0}),E=p.node,y=Ce.basename(n);if(!y||y==="."||y==="..")throw new g.ErrnoError(28);var R=g.mayCreate(E,y);if(R)throw new g.ErrnoError(R);if(!E.node_ops.mknod)throw new g.ErrnoError(63);return E.node_ops.mknod(E,y,c,u)},create:(n,c)=>(c=c!==void 0?c:438,c&=4095,c|=32768,g.mknod(n,c,0)),mkdir:(n,c)=>(c=c!==void 0?c:511,c&=1023,c|=16384,g.mknod(n,c,0)),mkdirTree:(n,c)=>{for(var u=n.split("/"),p="",E=0;E<u.length;++E)if(u[E]){p+="/"+u[E];try{g.mkdir(p,c)}catch(y){if(y.errno!=20)throw y}}},mkdev:(n,c,u)=>(typeof u=="undefined"&&(u=c,c=438),c|=8192,g.mknod(n,c,u)),symlink:(n,c)=>{if(!yt.resolve(n))throw new g.ErrnoError(44);var u=g.lookupPath(c,{parent:!0}),p=u.node;if(!p)throw new g.ErrnoError(44);var E=Ce.basename(c),y=g.mayCreate(p,E);if(y)throw new g.ErrnoError(y);if(!p.node_ops.symlink)throw new g.ErrnoError(63);return p.node_ops.symlink(p,E,n)},rename:(n,c)=>{var u=Ce.dirname(n),p=Ce.dirname(c),E=Ce.basename(n),y=Ce.basename(c),R,b,k;if(R=g.lookupPath(n,{parent:!0}),b=R.node,R=g.lookupPath(c,{parent:!0}),k=R.node,!b||!k)throw new g.ErrnoError(44);if(b.mount!==k.mount)throw new g.ErrnoError(75);var M=g.lookupNode(b,E),Z=yt.relative(n,p);if(Z.charAt(0)!==".")throw new g.ErrnoError(28);if(Z=yt.relative(c,u),Z.charAt(0)!==".")throw new g.ErrnoError(55);var ie;try{ie=g.lookupNode(k,y)}catch(me){}if(M!==ie){var te=g.isDir(M.mode),Q=g.mayDelete(b,E,te);if(Q)throw new g.ErrnoError(Q);if(Q=ie?g.mayDelete(k,y,te):g.mayCreate(k,y),Q)throw new g.ErrnoError(Q);if(!b.node_ops.rename)throw new g.ErrnoError(63);if(g.isMountpoint(M)||ie&&g.isMountpoint(ie))throw new g.ErrnoError(10);if(k!==b&&(Q=g.nodePermissions(b,"w"),Q))throw new g.ErrnoError(Q);g.hashRemoveNode(M);try{b.node_ops.rename(M,k,y)}catch(me){throw me}finally{g.hashAddNode(M)}}},rmdir:n=>{var c=g.lookupPath(n,{parent:!0}),u=c.node,p=Ce.basename(n),E=g.lookupNode(u,p),y=g.mayDelete(u,p,!0);if(y)throw new g.ErrnoError(y);if(!u.node_ops.rmdir)throw new g.ErrnoError(63);if(g.isMountpoint(E))throw new g.ErrnoError(10);u.node_ops.rmdir(u,p),g.destroyNode(E)},readdir:n=>{var c=g.lookupPath(n,{follow:!0}),u=c.node;if(!u.node_ops.readdir)throw new g.ErrnoError(54);return u.node_ops.readdir(u)},unlink:n=>{var c=g.lookupPath(n,{parent:!0}),u=c.node;if(!u)throw new g.ErrnoError(44);var p=Ce.basename(n),E=g.lookupNode(u,p),y=g.mayDelete(u,p,!1);if(y)throw new g.ErrnoError(y);if(!u.node_ops.unlink)throw new g.ErrnoError(63);if(g.isMountpoint(E))throw new g.ErrnoError(10);u.node_ops.unlink(u,p),g.destroyNode(E)},readlink:n=>{var c=g.lookupPath(n),u=c.node;if(!u)throw new g.ErrnoError(44);if(!u.node_ops.readlink)throw new g.ErrnoError(28);return yt.resolve(g.getPath(u.parent),u.node_ops.readlink(u))},stat:(n,c)=>{var u=g.lookupPath(n,{follow:!c}),p=u.node;if(!p)throw new g.ErrnoError(44);if(!p.node_ops.getattr)throw new g.ErrnoError(63);return p.node_ops.getattr(p)},lstat:n=>g.stat(n,!0),chmod:(n,c,u)=>{var p;if(typeof n=="string"){var E=g.lookupPath(n,{follow:!u});p=E.node}else p=n;if(!p.node_ops.setattr)throw new g.ErrnoError(63);p.node_ops.setattr(p,{mode:c&4095|p.mode&-4096,timestamp:Date.now()})},lchmod:(n,c)=>{g.chmod(n,c,!0)},fchmod:(n,c)=>{var u=g.getStreamChecked(n);g.chmod(u.node,c)},chown:(n,c,u,p)=>{var E;if(typeof n=="string"){var y=g.lookupPath(n,{follow:!p});E=y.node}else E=n;if(!E.node_ops.setattr)throw new g.ErrnoError(63);E.node_ops.setattr(E,{timestamp:Date.now()})},lchown:(n,c,u)=>{g.chown(n,c,u,!0)},fchown:(n,c,u)=>{var p=g.getStreamChecked(n);g.chown(p.node,c,u)},truncate:(n,c)=>{if(c<0)throw new g.ErrnoError(28);var u;if(typeof n=="string"){var p=g.lookupPath(n,{follow:!0});u=p.node}else u=n;if(!u.node_ops.setattr)throw new g.ErrnoError(63);if(g.isDir(u.mode))throw new g.ErrnoError(31);if(!g.isFile(u.mode))throw new g.ErrnoError(28);var E=g.nodePermissions(u,"w");if(E)throw new g.ErrnoError(E);u.node_ops.setattr(u,{size:c,timestamp:Date.now()})},ftruncate:(n,c)=>{var u=g.getStreamChecked(n);if((u.flags&2097155)===0)throw new g.ErrnoError(28);g.truncate(u.node,c)},utime:(n,c,u)=>{var p=g.lookupPath(n,{follow:!0}),E=p.node;E.node_ops.setattr(E,{timestamp:Math.max(c,u)})},open:(n,c,u)=>{if(n==="")throw new g.ErrnoError(44);c=typeof c=="string"?Qa(c):c,u=typeof u=="undefined"?438:u,c&64?u=u&4095|32768:u=0;var p;if(typeof n=="object")p=n;else{n=Ce.normalize(n);try{var E=g.lookupPath(n,{follow:!(c&131072)});p=E.node}catch(k){}}var y=!1;if(c&64)if(p){if(c&128)throw new g.ErrnoError(20)}else p=g.mknod(n,u,0),y=!0;if(!p)throw new g.ErrnoError(44);if(g.isChrdev(p.mode)&&(c&=-513),c&65536&&!g.isDir(p.mode))throw new g.ErrnoError(54);if(!y){var R=g.mayOpen(p,c);if(R)throw new g.ErrnoError(R)}c&512&&!y&&g.truncate(p,0),c&=-131713;var b=g.createStream({node:p,path:g.getPath(p),flags:c,seekable:!0,position:0,stream_ops:p.stream_ops,ungotten:[],error:!1});return b.stream_ops.open&&b.stream_ops.open(b),e.logReadFiles&&!(c&1)&&(g.readFiles||(g.readFiles={}),n in g.readFiles||(g.readFiles[n]=1)),b},close:n=>{if(g.isClosed(n))throw new g.ErrnoError(8);n.getdents&&(n.getdents=null);try{n.stream_ops.close&&n.stream_ops.close(n)}catch(c){throw c}finally{g.closeStream(n.fd)}n.fd=null},isClosed:n=>n.fd===null,llseek:(n,c,u)=>{if(g.isClosed(n))throw new g.ErrnoError(8);if(!n.seekable||!n.stream_ops.llseek)throw new g.ErrnoError(70);if(u!=0&&u!=1&&u!=2)throw new g.ErrnoError(28);return n.position=n.stream_ops.llseek(n,c,u),n.ungotten=[],n.position},read:(n,c,u,p,E)=>{if(p<0||E<0)throw new g.ErrnoError(28);if(g.isClosed(n))throw new g.ErrnoError(8);if((n.flags&2097155)===1)throw new g.ErrnoError(8);if(g.isDir(n.node.mode))throw new g.ErrnoError(31);if(!n.stream_ops.read)throw new g.ErrnoError(28);var y=typeof E!="undefined";if(!y)E=n.position;else if(!n.seekable)throw new g.ErrnoError(70);var R=n.stream_ops.read(n,c,u,p,E);return y||(n.position+=R),R},write:(n,c,u,p,E,y)=>{if(p<0||E<0)throw new g.ErrnoError(28);if(g.isClosed(n))throw new g.ErrnoError(8);if((n.flags&2097155)===0)throw new g.ErrnoError(8);if(g.isDir(n.node.mode))throw new g.ErrnoError(31);if(!n.stream_ops.write)throw new g.ErrnoError(28);n.seekable&&n.flags&1024&&g.llseek(n,0,2);var R=typeof E!="undefined";if(!R)E=n.position;else if(!n.seekable)throw new g.ErrnoError(70);var b=n.stream_ops.write(n,c,u,p,E,y);return R||(n.position+=b),b},allocate:(n,c,u)=>{if(g.isClosed(n))throw new g.ErrnoError(8);if(c<0||u<=0)throw new g.ErrnoError(28);if((n.flags&2097155)===0)throw new g.ErrnoError(8);if(!g.isFile(n.node.mode)&&!g.isDir(n.node.mode))throw new g.ErrnoError(43);if(!n.stream_ops.allocate)throw new g.ErrnoError(138);n.stream_ops.allocate(n,c,u)},mmap:(n,c,u,p,E)=>{if((p&2)!==0&&(E&2)===0&&(n.flags&2097155)!==2)throw new g.ErrnoError(2);if((n.flags&2097155)===1)throw new g.ErrnoError(2);if(!n.stream_ops.mmap)throw new g.ErrnoError(43);return n.stream_ops.mmap(n,c,u,p,E)},msync:(n,c,u,p,E)=>n.stream_ops.msync?n.stream_ops.msync(n,c,u,p,E):0,munmap:n=>0,ioctl:(n,c,u)=>{if(!n.stream_ops.ioctl)throw new g.ErrnoError(59);return n.stream_ops.ioctl(n,c,u)},readFile:(n,c={})=>{if(c.flags=c.flags||0,c.encoding=c.encoding||"binary",c.encoding!=="utf8"&&c.encoding!=="binary")throw new Error(`Invalid encoding type "${c.encoding}"`);var u,p=g.open(n,c.flags),E=g.stat(n),y=E.size,R=new Uint8Array(y);return g.read(p,R,0,y,0),c.encoding==="utf8"?u=qr(R,0):c.encoding==="binary"&&(u=R),g.close(p),u},writeFile:(n,c,u={})=>{u.flags=u.flags||577;var p=g.open(n,u.flags,u.mode);if(typeof c=="string"){var E=new Uint8Array(Jr(c)+1),y=nn(c,E,0,E.length);g.write(p,E,0,y,void 0,u.canOwn)}else if(ArrayBuffer.isView(c))g.write(p,c,0,c.byteLength,void 0,u.canOwn);else throw new Error("Unsupported data type");g.close(p)},cwd:()=>g.currentPath,chdir:n=>{var c=g.lookupPath(n,{follow:!0});if(c.node===null)throw new g.ErrnoError(44);if(!g.isDir(c.node.mode))throw new g.ErrnoError(54);var u=g.nodePermissions(c.node,"x");if(u)throw new g.ErrnoError(u);g.currentPath=c.path},createDefaultDirectories:()=>{g.mkdir("/tmp"),g.mkdir("/home"),g.mkdir("/home/web_user")},createDefaultDevices:()=>{g.mkdir("/dev"),g.registerDevice(g.makedev(1,3),{read:()=>0,write:(p,E,y,R,b)=>R}),g.mkdev("/dev/null",g.makedev(1,3)),Rr.register(g.makedev(5,0),Rr.default_tty_ops),Rr.register(g.makedev(6,0),Rr.default_tty1_ops),g.mkdev("/dev/tty",g.makedev(5,0)),g.mkdev("/dev/tty1",g.makedev(6,0));var n=new Uint8Array(1024),c=0,u=()=>(c===0&&(c=Yi(n).byteLength),n[--c]);g.createDevice("/dev","random",u),g.createDevice("/dev","urandom",u),g.mkdir("/dev/shm"),g.mkdir("/dev/shm/tmp")},createSpecialDirectories:()=>{g.mkdir("/proc");var n=g.mkdir("/proc/self");g.mkdir("/proc/self/fd"),g.mount({mount:()=>{var c=g.createNode(n,"fd",16895,73);return c.node_ops={lookup:(u,p)=>{var E=+p,y=g.getStreamChecked(E),R={parent:null,mount:{mountpoint:"fake"},node_ops:{readlink:()=>y.path}};return R.parent=R,R}},c}},{},"/proc/self/fd")},createStandardStreams:()=>{e.stdin?g.createDevice("/dev","stdin",e.stdin):g.symlink("/dev/tty","/dev/stdin"),e.stdout?g.createDevice("/dev","stdout",null,e.stdout):g.symlink("/dev/tty","/dev/stdout"),e.stderr?g.createDevice("/dev","stderr",null,e.stderr):g.symlink("/dev/tty1","/dev/stderr");var n=g.open("/dev/stdin",0),c=g.open("/dev/stdout",1),u=g.open("/dev/stderr",1)},ensureErrnoError:()=>{g.ErrnoError||(g.ErrnoError=function(c,u){this.name="ErrnoError",this.node=u,this.setErrno=function(p){this.errno=p},this.setErrno(c),this.message="FS error"},g.ErrnoError.prototype=new Error,g.ErrnoError.prototype.constructor=g.ErrnoError,[44].forEach(n=>{g.genericErrors[n]=new g.ErrnoError(n),g.genericErrors[n].stack="<generic error, no stack>"}))},staticInit:()=>{g.ensureErrnoError(),g.nameTable=new Array(4096),g.mount(he,{},"/"),g.createDefaultDirectories(),g.createDefaultDevices(),g.createSpecialDirectories(),g.filesystems={MEMFS:he}},init:(n,c,u)=>{g.init.initialized=!0,g.ensureErrnoError(),e.stdin=n||e.stdin,e.stdout=c||e.stdout,e.stderr=u||e.stderr,g.createStandardStreams()},quit:()=>{g.init.initialized=!1;for(var n=0;n<g.streams.length;n++){var c=g.streams[n];c&&g.close(c)}},findObject:(n,c)=>{var u=g.analyzePath(n,c);return u.exists?u.object:null},analyzePath:(n,c)=>{try{var u=g.lookupPath(n,{follow:!c});n=u.path}catch(E){}var p={isRoot:!1,exists:!1,error:0,name:null,path:null,object:null,parentExists:!1,parentPath:null,parentObject:null};try{var u=g.lookupPath(n,{parent:!0});p.parentExists=!0,p.parentPath=u.path,p.parentObject=u.node,p.name=Ce.basename(n),u=g.lookupPath(n,{follow:!c}),p.exists=!0,p.path=u.path,p.object=u.node,p.name=u.node.name,p.isRoot=u.path==="/"}catch(E){p.error=E.errno}return p},createPath:(n,c,u,p)=>{n=typeof n=="string"?n:g.getPath(n);for(var E=c.split("/").reverse();E.length;){var y=E.pop();if(y){var R=Ce.join2(n,y);try{g.mkdir(R)}catch(b){}n=R}}return R},createFile:(n,c,u,p,E)=>{var y=Ce.join2(typeof n=="string"?n:g.getPath(n),c),R=zo(p,E);return g.create(y,R)},createDataFile:(n,c,u,p,E,y)=>{var R=c;n&&(n=typeof n=="string"?n:g.getPath(n),R=c?Ce.join2(n,c):n);var b=zo(p,E),k=g.create(R,b);if(u){if(typeof u=="string"){for(var M=new Array(u.length),Z=0,ie=u.length;Z<ie;++Z)M[Z]=u.charCodeAt(Z);u=M}g.chmod(k,b|146);var te=g.open(k,577);g.write(te,u,0,u.length,0,y),g.close(te),g.chmod(k,b)}return k},createDevice:(n,c,u,p)=>{var E=Ce.join2(typeof n=="string"?n:g.getPath(n),c),y=zo(!!u,!!p);g.createDevice.major||(g.createDevice.major=64);var R=g.makedev(g.createDevice.major++,0);return g.registerDevice(R,{open:b=>{b.seekable=!1},close:b=>{p&&p.buffer&&p.buffer.length&&p(10)},read:(b,k,M,Z,ie)=>{for(var te=0,Q=0;Q<Z;Q++){var me;try{me=u()}catch(He){throw new g.ErrnoError(29)}if(me===void 0&&te===0)throw new g.ErrnoError(6);if(me==null)break;te++,k[M+Q]=me}return te&&(b.node.timestamp=Date.now()),te},write:(b,k,M,Z,ie)=>{for(var te=0;te<Z;te++)try{p(k[M+te])}catch(Q){throw new g.ErrnoError(29)}return Z&&(b.node.timestamp=Date.now()),te}}),g.mkdev(E,y,R)},forceLoadFile:n=>{if(n.isDevice||n.isFolder||n.link||n.contents)return!0;if(typeof XMLHttpRequest!="undefined")throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");if(j)try{n.contents=Jt(j(n.url),!0),n.usedBytes=n.contents.length}catch(c){throw new g.ErrnoError(29)}else throw new Error("Cannot load without read() or XMLHttpRequest.")},createLazyFile:(n,c,u,p,E)=>{function y(){this.lengthKnown=!1,this.chunks=[]}if(y.prototype.get=function(Q){if(!(Q>this.length-1||Q<0)){var me=Q%this.chunkSize,He=Q/this.chunkSize|0;return this.getter(He)[me]}},y.prototype.setDataGetter=function(Q){this.getter=Q},y.prototype.cacheLength=function(){var Q=new XMLHttpRequest;if(Q.open("HEAD",u,!1),Q.send(null),!(Q.status>=200&&Q.status<300||Q.status===304))throw new Error("Couldn't load "+u+". Status: "+Q.status);var me=Number(Q.getResponseHeader("Content-length")),He,Je=(He=Q.getResponseHeader("Accept-Ranges"))&&He==="bytes",ct=(He=Q.getResponseHeader("Content-Encoding"))&&He==="gzip",kt=1024*1024;Je||(kt=me);var Ze=(Xt,Zr)=>{if(Xt>Zr)throw new Error("invalid range ("+Xt+", "+Zr+") or no bytes requested!");if(Zr>me-1)throw new Error("only "+me+" bytes available! programmer error!");var dt=new XMLHttpRequest;if(dt.open("GET",u,!1),me!==kt&&dt.setRequestHeader("Range","bytes="+Xt+"-"+Zr),dt.responseType="arraybuffer",dt.overrideMimeType&&dt.overrideMimeType("text/plain; charset=x-user-defined"),dt.send(null),!(dt.status>=200&&dt.status<300||dt.status===304))throw new Error("Couldn't load "+u+". Status: "+dt.status);return dt.response!==void 0?new Uint8Array(dt.response||[]):Jt(dt.responseText||"",!0)},so=this;so.setDataGetter(Xt=>{var Zr=Xt*kt,dt=(Xt+1)*kt-1;if(dt=Math.min(dt,me-1),typeof so.chunks[Xt]=="undefined"&&(so.chunks[Xt]=Ze(Zr,dt)),typeof so.chunks[Xt]=="undefined")throw new Error("doXHR failed!");return so.chunks[Xt]}),(ct||!me)&&(kt=me=1,me=this.getter(0).length,kt=me,Pe("LazyFiles on gzip forces download of the whole file when length is accessed")),this._length=me,this._chunkSize=kt,this.lengthKnown=!0},typeof XMLHttpRequest!="undefined"){if(!T)throw"Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";var R=new y;Object.defineProperties(R,{length:{get:function(){return this.lengthKnown||this.cacheLength(),this._length}},chunkSize:{get:function(){return this.lengthKnown||this.cacheLength(),this._chunkSize}}});var b={isDevice:!1,contents:R}}else var b={isDevice:!1,url:u};var k=g.createFile(n,c,b,p,E);b.contents?k.contents=b.contents:b.url&&(k.contents=null,k.url=b.url),Object.defineProperties(k,{usedBytes:{get:function(){return this.contents.length}}});var M={},Z=Object.keys(k.stream_ops);Z.forEach(te=>{var Q=k.stream_ops[te];M[te]=function(){return g.forceLoadFile(k),Q.apply(null,arguments)}});function ie(te,Q,me,He,Je){var ct=te.node.contents;if(Je>=ct.length)return 0;var kt=Math.min(ct.length-Je,He);if(ct.slice)for(var Ze=0;Ze<kt;Ze++)Q[me+Ze]=ct[Je+Ze];else for(var Ze=0;Ze<kt;Ze++)Q[me+Ze]=ct.get(Je+Ze);return kt}return M.read=(te,Q,me,He,Je)=>(g.forceLoadFile(k),ie(te,Q,me,He,Je)),M.mmap=(te,Q,me,He,Je)=>{g.forceLoadFile(k);var ct=Ja(Q);if(!ct)throw new g.ErrnoError(48);return ie(te,Le,ct,Q,me),{ptr:ct,allocated:!0}},k.stream_ops=M,k}},Ya=(n,c)=>n?qr(rt,n,c):"",Qe={DEFAULT_POLLMASK:5,calculateAt:function(n,c,u){if(Ce.isAbs(c))return c;var p;if(n===-100)p=g.cwd();else{var E=Qe.getStreamFromFD(n);p=E.path}if(c.length==0){if(!u)throw new g.ErrnoError(44);return p}return Ce.join2(p,c)},doStat:function(n,c,u){try{var p=n(c)}catch(b){if(b&&b.node&&Ce.normalize(c)!==Ce.normalize(g.getPath(b.node)))return-54;throw b}x[u>>2]=p.dev,x[u+4>>2]=p.mode,xe[u+8>>2]=p.nlink,x[u+12>>2]=p.uid,x[u+16>>2]=p.gid,x[u+20>>2]=p.rdev,Ge=[p.size>>>0,(de=p.size,+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[u+24>>2]=Ge[0],x[u+28>>2]=Ge[1],x[u+32>>2]=4096,x[u+36>>2]=p.blocks;var E=p.atime.getTime(),y=p.mtime.getTime(),R=p.ctime.getTime();return Ge=[Math.floor(E/1e3)>>>0,(de=Math.floor(E/1e3),+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[u+40>>2]=Ge[0],x[u+44>>2]=Ge[1],xe[u+48>>2]=E%1e3*1e3,Ge=[Math.floor(y/1e3)>>>0,(de=Math.floor(y/1e3),+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[u+56>>2]=Ge[0],x[u+60>>2]=Ge[1],xe[u+64>>2]=y%1e3*1e3,Ge=[Math.floor(R/1e3)>>>0,(de=Math.floor(R/1e3),+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[u+72>>2]=Ge[0],x[u+76>>2]=Ge[1],xe[u+80>>2]=R%1e3*1e3,Ge=[p.ino>>>0,(de=p.ino,+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[u+88>>2]=Ge[0],x[u+92>>2]=Ge[1],0},doMsync:function(n,c,u,p,E){if(!g.isFile(c.node.mode))throw new g.ErrnoError(43);if(p&2)return 0;var y=rt.slice(n,n+u);g.msync(c,y,E,u,p)},varargs:void 0,get(){Qe.varargs+=4;var n=x[Qe.varargs-4>>2];return n},getStr(n){var c=Ya(n);return c},getStreamFromFD:function(n){var c=g.getStreamChecked(n);return c}};function cn(n,c,u){Qe.varargs=u;try{var p=Qe.getStreamFromFD(n);switch(c){case 0:{var E=Qe.get();if(E<0)return-28;var y;return y=g.createStream(p,E),y.fd}case 1:case 2:return 0;case 3:return p.flags;case 4:{var E=Qe.get();return p.flags|=E,0}case 5:{var E=Qe.get(),R=0;return jt[E+R>>1]=2,0}case 6:case 7:return 0;case 16:case 8:return-28;case 9:return Mt(28),-1;default:return-28}}catch(b){if(typeof g=="undefined"||b.name!=="ErrnoError")throw b;return-b.errno}}function Zi(n,c,u,p){Qe.varargs=p;try{c=Qe.getStr(c),c=Qe.calculateAt(n,c);var E=p?Qe.get():0;return g.open(c,u,E).fd}catch(y){if(typeof g=="undefined"||y.name!=="ErrnoError")throw y;return-y.errno}}function Qu(n,c,u,p,E){}function dn(n){switch(n){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${n}`)}}function Ki(){for(var n=new Array(256),c=0;c<256;++c)n[c]=String.fromCharCode(c);Za=n}var Za=void 0;function Ot(n){for(var c="",u=n;rt[u];)c+=Za[rt[u++]];return c}var ar={},zr={},vr={},vi=void 0;function Me(n){throw new vi(n)}var Ka=void 0;function Xo(n){throw new Ka(n)}function eo(n,c,u){n.forEach(function(b){vr[b]=c});function p(b){var k=u(b);k.length!==n.length&&Xo("Mismatched type converter count");for(var M=0;M<n.length;++M)cr(n[M],k[M])}var E=new Array(c.length),y=[],R=0;c.forEach((b,k)=>{zr.hasOwnProperty(b)?E[k]=zr[b]:(y.push(b),ar.hasOwnProperty(b)||(ar[b]=[]),ar[b].push(()=>{E[k]=zr[b],++R,R===y.length&&p(E)}))}),y.length===0&&p(E)}function Cr(n,c,u={}){var p=c.name;if(n||Me(`type "${p}" must have a positive integer typeid pointer`),zr.hasOwnProperty(n)){if(u.ignoreDuplicateRegistrations)return;Me(`Cannot register type '${p}' twice`)}if(zr[n]=c,delete vr[n],ar.hasOwnProperty(n)){var E=ar[n];delete ar[n],E.forEach(y=>y())}}function cr(n,c,u={}){if(!("argPackAdvance"in c))throw new TypeError("registerType registeredInstance requires argPackAdvance");return Cr(n,c,u)}function Yu(n,c,u,p,E){var y=dn(u);c=Ot(c),cr(n,{name:c,fromWireType:function(R){return!!R},toWireType:function(R,b){return b?p:E},argPackAdvance:8,readValueFromPointer:function(R){var b;if(u===1)b=Le;else if(u===2)b=jt;else if(u===4)b=x;else throw new TypeError("Unknown boolean type size: "+c);return this.fromWireType(b[R>>y])},destructorFunction:null})}function Qo(n){if(!(this instanceof ur)||!(n instanceof ur))return!1;for(var c=this.$$.ptrType.registeredClass,u=this.$$.ptr,p=n.$$.ptrType.registeredClass,E=n.$$.ptr;c.baseClass;)u=c.upcast(u),c=c.baseClass;for(;p.baseClass;)E=p.upcast(E),p=p.baseClass;return c===p&&u===E}function un(n){return{count:n.count,deleteScheduled:n.deleteScheduled,preservePointerOnDelete:n.preservePointerOnDelete,ptr:n.ptr,ptrType:n.ptrType,smartPtr:n.smartPtr,smartPtrType:n.smartPtrType}}function Yo(n){function c(u){return u.$$.ptrType.registeredClass.name}Me(c(n)+" instance already deleted")}var ln=!1;function ec(n){}function mn(n){n.smartPtr?n.smartPtrType.rawDestructor(n.smartPtr):n.ptrType.registeredClass.rawDestructor(n.ptr)}function tc(n){n.count.value-=1;var c=n.count.value===0;c&&mn(n)}function rc(n,c,u){if(c===u)return n;if(u.baseClass===void 0)return null;var p=rc(n,c,u.baseClass);return p===null?null:u.downcast(p)}var ic={};function Zo(){return Object.keys(io).length}function Zu(){var n=[];for(var c in io)io.hasOwnProperty(c)&&n.push(io[c]);return n}var to=[];function pn(){for(;to.length;){var n=to.pop();n.$$.deleteScheduled=!1,n.delete()}}var ro=void 0;function dr(n){ro=n,to.length&&ro&&ro(pn)}function Ku(){e.getInheritedInstanceCount=Zo,e.getLiveInheritedInstances=Zu,e.flushPendingDeletes=pn,e.setDelayFunction=dr}var io={};function Ko(n,c){for(c===void 0&&Me("ptr should not be undefined");n.baseClass;)c=n.upcast(c),n=n.baseClass;return c}function oc(n,c){return c=Ko(n,c),io[c]}function es(n,c){(!c.ptrType||!c.ptr)&&Xo("makeClassHandle requires ptr and ptrType");var u=!!c.smartPtrType,p=!!c.smartPtr;return u!==p&&Xo("Both smartPtrType and smartPtr must be specified"),c.count={value:1},tr(Object.create(n,{$$:{value:c}}))}function el(n){var c=this.getPointee(n);if(!c)return this.destructor(n),null;var u=oc(this.registeredClass,c);if(u!==void 0){if(u.$$.count.value===0)return u.$$.ptr=c,u.$$.smartPtr=n,u.clone();var p=u.clone();return this.destructor(n),p}function E(){return this.isSmartPointer?es(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:c,smartPtrType:this,smartPtr:n}):es(this.registeredClass.instancePrototype,{ptrType:this,ptr:n})}var y=this.registeredClass.getActualType(c),R=ic[y];if(!R)return E.call(this);var b;this.isConst?b=R.constPointerType:b=R.pointerType;var k=rc(c,this.registeredClass,b.registeredClass);return k===null?E.call(this):this.isSmartPointer?es(b.registeredClass.instancePrototype,{ptrType:b,ptr:k,smartPtrType:this,smartPtr:n}):es(b.registeredClass.instancePrototype,{ptrType:b,ptr:k})}var tr=function(n){return typeof FinalizationRegistry=="undefined"?(tr=c=>c,n):(ln=new FinalizationRegistry(c=>{tc(c.$$)}),tr=c=>{var u=c.$$,p=!!u.smartPtr;if(p){var E={$$:u};ln.register(c,E,c)}return c},ec=c=>ln.unregister(c),tr(n))};function tl(){if(this.$$.ptr||Yo(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var n=tr(Object.create(Object.getPrototypeOf(this),{$$:{value:un(this.$$)}}));return n.$$.count.value+=1,n.$$.deleteScheduled=!1,n}function sc(){this.$$.ptr||Yo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Me("Object already scheduled for deletion"),ec(this),tc(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function nc(){return!this.$$.ptr}function hn(){return this.$$.ptr||Yo(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Me("Object already scheduled for deletion"),to.push(this),to.length===1&&ro&&ro(pn),this.$$.deleteScheduled=!0,this}function rl(){ur.prototype.isAliasOf=Qo,ur.prototype.clone=tl,ur.prototype.delete=sc,ur.prototype.isDeleted=nc,ur.prototype.deleteLater=hn}function ur(){}var il=48,ac=57;function oo(n){if(n===void 0)return"_unknown";n=n.replace(/[^a-zA-Z0-9_]/g,"$");var c=n.charCodeAt(0);return c>=il&&c<=ac?`_${n}`:n}function fn(n,c){return n=oo(n),{[n]:function(){return c.apply(this,arguments)}}[n]}function cc(n,c,u){if(n[c].overloadTable===void 0){var p=n[c];n[c]=function(){return n[c].overloadTable.hasOwnProperty(arguments.length)||Me(`Function '${u}' called with an invalid number of arguments (${arguments.length}) - expects one of (${n[c].overloadTable})!`),n[c].overloadTable[arguments.length].apply(this,arguments)},n[c].overloadTable=[],n[c].overloadTable[p.argCount]=p}}function ol(n,c,u){e.hasOwnProperty(n)?((u===void 0||e[n].overloadTable!==void 0&&e[n].overloadTable[u]!==void 0)&&Me(`Cannot register public name '${n}' twice`),cc(e,n,n),e.hasOwnProperty(u)&&Me(`Cannot register multiple overloads of a function with the same number of arguments (${u})!`),e[n].overloadTable[u]=c):(e[n]=c,u!==void 0&&(e[n].numArguments=u))}function dc(n,c,u,p,E,y,R,b){this.name=n,this.constructor=c,this.instancePrototype=u,this.rawDestructor=p,this.baseClass=E,this.getActualType=y,this.upcast=R,this.downcast=b,this.pureVirtualFunctions=[]}function Pt(n,c,u){for(;c!==u;)c.upcast||Me(`Expected null or instance of ${u.name}, got an instance of ${c.name}`),n=c.upcast(n),c=c.baseClass;return n}function uc(n,c){if(c===null)return this.isReference&&Me(`null is not a valid ${this.name}`),0;c.$$||Me(`Cannot pass "${Tn(c)}" as a ${this.name}`),c.$$.ptr||Me(`Cannot pass deleted object as a pointer of type ${this.name}`);var u=c.$$.ptrType.registeredClass,p=Pt(c.$$.ptr,u,this.registeredClass);return p}function sl(n,c){var u;if(c===null)return this.isReference&&Me(`null is not a valid ${this.name}`),this.isSmartPointer?(u=this.rawConstructor(),n!==null&&n.push(this.rawDestructor,u),u):0;c.$$||Me(`Cannot pass "${Tn(c)}" as a ${this.name}`),c.$$.ptr||Me(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&c.$$.ptrType.isConst&&Me(`Cannot convert argument of type ${c.$$.smartPtrType?c.$$.smartPtrType.name:c.$$.ptrType.name} to parameter type ${this.name}`);var p=c.$$.ptrType.registeredClass;if(u=Pt(c.$$.ptr,p,this.registeredClass),this.isSmartPointer)switch(c.$$.smartPtr===void 0&&Me("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:c.$$.smartPtrType===this?u=c.$$.smartPtr:Me(`Cannot convert argument of type ${c.$$.smartPtrType?c.$$.smartPtrType.name:c.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:u=c.$$.smartPtr;break;case 2:if(c.$$.smartPtrType===this)u=c.$$.smartPtr;else{var E=c.clone();u=this.rawShare(u,rs.toHandle(function(){E.delete()})),n!==null&&n.push(this.rawDestructor,u)}break;default:Me("Unsupporting sharing policy")}return u}function nl(n,c){if(c===null)return this.isReference&&Me(`null is not a valid ${this.name}`),0;c.$$||Me(`Cannot pass "${Tn(c)}" as a ${this.name}`),c.$$.ptr||Me(`Cannot pass deleted object as a pointer of type ${this.name}`),c.$$.ptrType.isConst&&Me(`Cannot convert argument of type ${c.$$.ptrType.name} to parameter type ${this.name}`);var u=c.$$.ptrType.registeredClass,p=Pt(c.$$.ptr,u,this.registeredClass);return p}function Xr(n){return this.fromWireType(x[n>>2])}function al(n){return this.rawGetPointee&&(n=this.rawGetPointee(n)),n}function _n(n){this.rawDestructor&&this.rawDestructor(n)}function cl(n){n!==null&&n.delete()}function dl(){lr.prototype.getPointee=al,lr.prototype.destructor=_n,lr.prototype.argPackAdvance=8,lr.prototype.readValueFromPointer=Xr,lr.prototype.deleteObject=cl,lr.prototype.fromWireType=el}function lr(n,c,u,p,E,y,R,b,k,M,Z){this.name=n,this.registeredClass=c,this.isReference=u,this.isConst=p,this.isSmartPointer=E,this.pointeeType=y,this.sharingPolicy=R,this.rawGetPointee=b,this.rawConstructor=k,this.rawShare=M,this.rawDestructor=Z,!E&&c.baseClass===void 0?p?(this.toWireType=uc,this.destructorFunction=null):(this.toWireType=nl,this.destructorFunction=null):this.toWireType=sl}function ul(n,c,u){e.hasOwnProperty(n)||Xo("Replacing nonexistant public symbol"),e[n].overloadTable!==void 0&&u!==void 0?e[n].overloadTable[u]=c:(e[n]=c,e[n].argCount=u)}var ll=(n,c,u)=>{var p=e["dynCall_"+n];return u&&u.length?p.apply(null,[c].concat(u)):p.call(null,c)},ts=[],lc=n=>{var c=ts[n];return c||(n>=ts.length&&(ts.length=n+1),ts[n]=c=Zs.get(n)),c},ml=(n,c,u)=>{if(n.includes("j"))return ll(n,c,u);var p=lc(c).apply(null,u);return p},mc=(n,c)=>{var u=[];return function(){return u.length=0,Object.assign(u,arguments),ml(n,c,u)}};function Qr(n,c){n=Ot(n);function u(){return n.includes("j")?mc(n,c):lc(c)}var p=u();return typeof p!="function"&&Me(`unknown function pointer with signature ${n}: ${c}`),p}function pc(n,c){var u=fn(c,function(p){this.name=c,this.message=p;var E=new Error(p).stack;E!==void 0&&(this.stack=this.toString()+`
50
+ `+E.replace(/^Error(:[^\n]*)?\n/,""))});return u.prototype=Object.create(n.prototype),u.prototype.constructor=u,u.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},u}var hc=void 0;function gn(n){var c=Dh(n),u=Ot(c);return Yr(c),u}function En(n,c){var u=[],p={};function E(y){if(!p[y]&&!zr[y]){if(vr[y]){vr[y].forEach(E);return}u.push(y),p[y]=!0}}throw c.forEach(E),new hc(`${n}: `+u.map(gn).join([", "]))}function pl(n,c,u,p,E,y,R,b,k,M,Z,ie,te){Z=Ot(Z),y=Qr(E,y),b&&(b=Qr(R,b)),M&&(M=Qr(k,M)),te=Qr(ie,te);var Q=oo(Z);ol(Q,function(){En(`Cannot construct ${Z} due to unbound types`,[p])}),eo([n,c,u],p?[p]:[],function(me){me=me[0];var He,Je;p?(He=me.registeredClass,Je=He.instancePrototype):Je=ur.prototype;var ct=fn(Q,function(){if(Object.getPrototypeOf(this)!==kt)throw new vi("Use 'new' to construct "+Z);if(Ze.constructor_body===void 0)throw new vi(Z+" has no accessible constructor");var dt=Ze.constructor_body[arguments.length];if(dt===void 0)throw new vi(`Tried to invoke ctor of ${Z} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(Ze.constructor_body).toString()}) parameters instead!`);return dt.apply(this,arguments)}),kt=Object.create(Je,{constructor:{value:ct}});ct.prototype=kt;var Ze=new dc(Z,ct,kt,te,He,y,b,M);Ze.baseClass&&(Ze.baseClass.__derivedClasses===void 0&&(Ze.baseClass.__derivedClasses=[]),Ze.baseClass.__derivedClasses.push(Ze));var so=new lr(Z,Ze,!0,!1,!1),Xt=new lr(Z+"*",Ze,!1,!1,!1),Zr=new lr(Z+" const*",Ze,!1,!0,!1);return ic[n]={pointerType:Xt,constPointerType:Zr},ul(Q,ct),[so,Xt,Zr]})}function fc(n,c){for(var u=[],p=0;p<n;p++)u.push(xe[c+p*4>>2]);return u}function hl(n){for(;n.length;){var c=n.pop(),u=n.pop();u(c)}}function _c(n,c){if(!(n instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof n} which is not a function`);var u=fn(n.name||"unknownFunctionName",function(){});u.prototype=n.prototype;var p=new u,E=n.apply(p,c);return E instanceof Object?E:p}function gc(n,c,u,p,E,y){var R=c.length;R<2&&Me("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var b=c[1]!==null&&u!==null,k=!1,M=1;M<c.length;++M)if(c[M]!==null&&c[M].destructorFunction===void 0){k=!0;break}for(var Z=c[0].name!=="void",ie="",te="",M=0;M<R-2;++M)ie+=(M!==0?", ":"")+"arg"+M,te+=(M!==0?", ":"")+"arg"+M+"Wired";var Q=`
51
+ return function ${oo(n)}(${ie}) {
52
+ if (arguments.length !== ${R-2}) {
53
+ throwBindingError('function ${n} called with ${arguments.length} arguments, expected ${R-2} args!');
54
+ }`;k&&(Q+=`var destructors = [];
55
+ `);var me=k?"destructors":"null",He=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],Je=[Me,p,E,hl,c[0],c[1]];b&&(Q+="var thisWired = classParam.toWireType("+me+`, this);
56
+ `);for(var M=0;M<R-2;++M)Q+="var arg"+M+"Wired = argType"+M+".toWireType("+me+", arg"+M+"); // "+c[M+2].name+`
57
+ `,He.push("argType"+M),Je.push(c[M+2]);if(b&&(te="thisWired"+(te.length>0?", ":"")+te),Q+=(Z||y?"var rv = ":"")+"invoker(fn"+(te.length>0?", ":"")+te+`);
58
+ `,k)Q+=`runDestructors(destructors);
59
+ `;else for(var M=b?1:2;M<c.length;++M){var ct=M===1?"thisWired":"arg"+(M-2)+"Wired";c[M].destructorFunction!==null&&(Q+=ct+"_dtor("+ct+"); // "+c[M].name+`
60
+ `,He.push(ct+"_dtor"),Je.push(c[M].destructorFunction))}return Z&&(Q+=`var ret = retType.fromWireType(rv);
61
+ return ret;
62
+ `),Q+=`}
63
+ `,He.push(Q),_c(Function,He).apply(null,Je)}function fl(n,c,u,p,E,y){var R=fc(c,u);E=Qr(p,E),eo([],[n],function(b){b=b[0];var k=`constructor ${b.name}`;if(b.registeredClass.constructor_body===void 0&&(b.registeredClass.constructor_body=[]),b.registeredClass.constructor_body[c-1]!==void 0)throw new vi(`Cannot register multiple constructors with identical number of parameters (${c-1}) for class '${b.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return b.registeredClass.constructor_body[c-1]=()=>{En(`Cannot construct ${b.name} due to unbound types`,R)},eo([],R,function(M){return M.splice(1,0,null),b.registeredClass.constructor_body[c-1]=gc(k,M,null,E,y),[]}),[]})}function _l(n,c,u,p,E,y,R,b,k){var M=fc(u,p);c=Ot(c),y=Qr(E,y),eo([],[n],function(Z){Z=Z[0];var ie=`${Z.name}.${c}`;c.startsWith("@@")&&(c=Symbol[c.substring(2)]),b&&Z.registeredClass.pureVirtualFunctions.push(c);function te(){En(`Cannot call ${ie} due to unbound types`,M)}var Q=Z.registeredClass.instancePrototype,me=Q[c];return me===void 0||me.overloadTable===void 0&&me.className!==Z.name&&me.argCount===u-2?(te.argCount=u-2,te.className=Z.name,Q[c]=te):(cc(Q,c,ie),Q[c].overloadTable[u-2]=te),eo([],M,function(He){var Je=gc(ie,He,Z,y,R,k);return Q[c].overloadTable===void 0?(Je.argCount=u-2,Q[c]=Je):Q[c].overloadTable[u-2]=Je,[]}),[]})}function gl(){Object.assign(Ec.prototype,{get(n){return this.allocated[n]},has(n){return this.allocated[n]!==void 0},allocate(n){var c=this.freelist.pop()||this.allocated.length;return this.allocated[c]=n,c},free(n){this.allocated[n]=void 0,this.freelist.push(n)}})}function Ec(){this.allocated=[void 0],this.freelist=[]}var xt=new Ec;function Tc(n){n>=xt.reserved&&--xt.get(n).refcount===0&&xt.free(n)}function El(){for(var n=0,c=xt.reserved;c<xt.allocated.length;++c)xt.allocated[c]!==void 0&&++n;return n}function Tl(){xt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),xt.reserved=xt.allocated.length,e.count_emval_handles=El}var rs={toValue:n=>(n||Me("Cannot use deleted val. handle = "+n),xt.get(n).value),toHandle:n=>{switch(n){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return xt.allocate({refcount:1,value:n})}}};function Ic(n,c){c=Ot(c),cr(n,{name:c,fromWireType:function(u){var p=rs.toValue(u);return Tc(u),p},toWireType:function(u,p){return rs.toHandle(p)},argPackAdvance:8,readValueFromPointer:Xr,destructorFunction:null})}function Tn(n){if(n===null)return"null";var c=typeof n;return c==="object"||c==="array"||c==="function"?n.toString():""+n}function Il(n,c){switch(c){case 2:return function(u){return this.fromWireType(Ys[u>>2])};case 3:return function(u){return this.fromWireType(Ha[u>>3])};default:throw new TypeError("Unknown float type: "+n)}}function Sc(n,c,u){var p=dn(u);c=Ot(c),cr(n,{name:c,fromWireType:function(E){return E},toWireType:function(E,y){return y},argPackAdvance:8,readValueFromPointer:Il(c,p),destructorFunction:null})}function Sl(n,c,u){switch(c){case 0:return u?function(E){return Le[E]}:function(E){return rt[E]};case 1:return u?function(E){return jt[E>>1]}:function(E){return qt[E>>1]};case 2:return u?function(E){return x[E>>2]}:function(E){return xe[E>>2]};default:throw new TypeError("Unknown integer type: "+n)}}function yl(n,c,u,p,E){c=Ot(c),E===-1&&(E=4294967295);var y=dn(u),R=ie=>ie;if(p===0){var b=32-8*u;R=ie=>ie<<b>>>b}var k=c.includes("unsigned"),M=(ie,te)=>{},Z;k?Z=function(ie,te){return M(te,this.name),te>>>0}:Z=function(ie,te){return M(te,this.name),te},cr(n,{name:c,fromWireType:R,toWireType:Z,argPackAdvance:8,readValueFromPointer:Sl(c,y,p!==0),destructorFunction:null})}function Al(n,c,u){var p=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],E=p[c];function y(R){R=R>>2;var b=xe,k=b[R],M=b[R+1];return new E(b.buffer,M,k)}u=Ot(u),cr(n,{name:u,fromWireType:y,argPackAdvance:8,readValueFromPointer:y},{ignoreDuplicateRegistrations:!0})}var bl=(n,c,u)=>nn(n,rt,c,u);function Rl(n,c){c=Ot(c);var u=c==="std::string";cr(n,{name:c,fromWireType:function(p){var E=xe[p>>2],y=p+4,R;if(u)for(var b=y,k=0;k<=E;++k){var M=y+k;if(k==E||rt[M]==0){var Z=M-b,ie=Ya(b,Z);R===void 0?R=ie:(R+="\0",R+=ie),b=M+1}}else{for(var te=new Array(E),k=0;k<E;++k)te[k]=String.fromCharCode(rt[y+k]);R=te.join("")}return Yr(p),R},toWireType:function(p,E){E instanceof ArrayBuffer&&(E=new Uint8Array(E));var y,R=typeof E=="string";R||E instanceof Uint8Array||E instanceof Uint8ClampedArray||E instanceof Int8Array||Me("Cannot pass non-string to std::string"),u&&R?y=Jr(E):y=E.length;var b=Ol(4+y+1),k=b+4;if(xe[b>>2]=y,u&&R)bl(E,k,y+1);else if(R)for(var M=0;M<y;++M){var Z=E.charCodeAt(M);Z>255&&(Yr(k),Me("String has UTF-16 code units that do not fit in 8 bits")),rt[k+M]=Z}else for(var M=0;M<y;++M)rt[k+M]=E[M];return p!==null&&p.push(Yr,b),b},argPackAdvance:8,readValueFromPointer:Xr,destructorFunction:function(p){Yr(p)}})}var In=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,vl=(n,c)=>{for(var u=n,p=u>>1,E=p+c/2;!(p>=E)&&qt[p];)++p;if(u=p<<1,u-n>32&&In)return In.decode(rt.subarray(n,u));for(var y="",R=0;!(R>=c/2);++R){var b=jt[n+R*2>>1];if(b==0)break;y+=String.fromCharCode(b)}return y},Cl=(n,c,u)=>{if(u===void 0&&(u=2147483647),u<2)return 0;u-=2;for(var p=c,E=u<n.length*2?u/2:n.length,y=0;y<E;++y){var R=n.charCodeAt(y);jt[c>>1]=R,c+=2}return jt[c>>1]=0,c-p},Rh=n=>n.length*2,Dl=(n,c)=>{for(var u=0,p="";!(u>=c/4);){var E=x[n+u*4>>2];if(E==0)break;if(++u,E>=65536){var y=E-65536;p+=String.fromCharCode(55296|y>>10,56320|y&1023)}else p+=String.fromCharCode(E)}return p},mr=(n,c,u)=>{if(u===void 0&&(u=2147483647),u<4)return 0;for(var p=c,E=p+u-4,y=0;y<n.length;++y){var R=n.charCodeAt(y);if(R>=55296&&R<=57343){var b=n.charCodeAt(++y);R=65536+((R&1023)<<10)|b&1023}if(x[c>>2]=R,c+=4,c+4>E)break}return x[c>>2]=0,c-p},Sn=n=>{for(var c=0,u=0;u<n.length;++u){var p=n.charCodeAt(u);p>=55296&&p<=57343&&++u,c+=4}return c},yc=function(n,c,u){u=Ot(u);var p,E,y,R,b;c===2?(p=vl,E=Cl,R=Rh,y=()=>qt,b=1):c===4&&(p=Dl,E=mr,R=Sn,y=()=>xe,b=2),cr(n,{name:u,fromWireType:function(k){for(var M=xe[k>>2],Z=y(),ie,te=k+4,Q=0;Q<=M;++Q){var me=k+4+Q*c;if(Q==M||Z[me>>b]==0){var He=me-te,Je=p(te,He);ie===void 0?ie=Je:(ie+="\0",ie+=Je),te=me+c}}return Yr(k),ie},toWireType:function(k,M){typeof M!="string"&&Me(`Cannot pass non-string to C++ string type ${u}`);var Z=R(M),ie=Ol(4+Z+c);return xe[ie>>2]=Z>>b,E(M,ie+4,Z+c),k!==null&&k.push(Yr,ie),ie},argPackAdvance:8,readValueFromPointer:Xr,destructorFunction:function(k){Yr(k)}})};function Nl(n,c){c=Ot(c),cr(n,{isVoid:!0,name:c,argPackAdvance:0,fromWireType:function(){},toWireType:function(u,p){}})}var wl={};function Ac(n){var c=wl[n];return c===void 0?Ot(n):c}var yn=[];function is(n,c,u,p){n=yn[n],c=rs.toValue(c),u=Ac(u),n(c,u,null,p)}function bc(n){var c=yn.length;return yn.push(n),c}function f(n,c){var u=zr[n];return u===void 0&&Me(c+" has unknown type "+gn(n)),u}function _(n,c){for(var u=new Array(n),p=0;p<n;++p)u[p]=f(xe[c+p*4>>2],"parameter "+p);return u}var S=[];function C(n,c){var u=_(n,c),p=u[0],E=p.name+"_$"+u.slice(1).map(function(me){return me.name}).join("_")+"$",y=S[E];if(y!==void 0)return y;for(var R=["retType"],b=[p],k="",M=0;M<n-1;++M)k+=(M!==0?", ":"")+"arg"+M,R.push("argType"+M),b.push(u[1+M]);for(var Z=oo("methodCaller_"+E),ie="return function "+Z+`(handle, name, destructors, args) {
64
+ `,te=0,M=0;M<n-1;++M)ie+=" var arg"+M+" = argType"+M+".readValueFromPointer(args"+(te?"+"+te:"")+`);
65
+ `,te+=u[M+1].argPackAdvance;ie+=" var rv = handle[name]("+k+`);
66
+ `;for(var M=0;M<n-1;++M)u[M+1].deleteObject&&(ie+=" argType"+M+".deleteObject(arg"+M+`);
67
+ `);p.isVoid||(ie+=` return retType.toWireType(destructors, rv);
68
+ `),ie+=`};
69
+ `,R.push(ie);var Q=_c(Function,R).apply(null,b);return y=bc(Q),S[E]=y,y}function O(n,c){return c+2097152>>>0<4194305-!!n?(n>>>0)+c*4294967296:NaN}var B=()=>{br("")};function W(){return Date.now()}var V=()=>rt.length,ee=()=>V(),$=(n,c,u)=>rt.copyWithin(n,c,c+u),_e=n=>{br("OOM")},Ie=n=>{var c=rt.length;n>>>=0,_e(n)},ve={},Ue=()=>d||"./this.program",Ye=()=>{if(!Ye.strings){var n=(typeof navigator=="object"&&navigator.languages&&navigator.languages[0]||"C").replace("-","_")+".UTF-8",c={USER:"web_user",LOGNAME:"web_user",PATH:"/",PWD:"/",HOME:"/home/web_user",LANG:n,_:Ue()};for(var u in ve)ve[u]===void 0?delete c[u]:c[u]=ve[u];var p=[];for(var u in c)p.push(`${u}=${c[u]}`);Ye.strings=p}return Ye.strings},Ft=(n,c)=>{for(var u=0;u<n.length;++u)Le[c++>>0]=n.charCodeAt(u);Le[c>>0]=0},At=(n,c)=>{var u=0;return Ye().forEach(function(p,E){var y=c+u;xe[n+E*4>>2]=y,Ft(p,y),u+=p.length+1}),0},Dr=(n,c)=>{var u=Ye();xe[n>>2]=u.length;var p=0;return u.forEach(function(E){p+=E.length+1}),xe[c>>2]=p,0};function An(n){try{var c=Qe.getStreamFromFD(n);return g.close(c),0}catch(u){if(typeof g=="undefined"||u.name!=="ErrnoError")throw u;return u.errno}}function zt(n,c){try{var u=0,p=0,E=0,y=Qe.getStreamFromFD(n),R=y.tty?2:g.isDir(y.mode)?3:g.isLink(y.mode)?7:4;return Le[c>>0]=R,jt[c+2>>1]=E,Ge=[u>>>0,(de=u,+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[c+8>>2]=Ge[0],x[c+12>>2]=Ge[1],Ge=[p>>>0,(de=p,+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[c+16>>2]=Ge[0],x[c+20>>2]=Ge[1],0}catch(b){if(typeof g=="undefined"||b.name!=="ErrnoError")throw b;return b.errno}}var Ml=(n,c,u,p)=>{for(var E=0,y=0;y<u;y++){var R=xe[c>>2],b=xe[c+4>>2];c+=8;var k=g.read(n,Le,R,b,p);if(k<0)return-1;if(E+=k,k<b)break;typeof p!="undefined"&&(p+=k)}return E};function Rc(n,c,u,p){try{var E=Qe.getStreamFromFD(n),y=Ml(E,c,u);return xe[p>>2]=y,0}catch(R){if(typeof g=="undefined"||R.name!=="ErrnoError")throw R;return R.errno}}function vc(n,c,u,p,E){var y=O(c,u);try{if(isNaN(y))return 61;var R=Qe.getStreamFromFD(n);return g.llseek(R,y,p),Ge=[R.position>>>0,(de=R.position,+Math.abs(de)>=1?de>0?+Math.floor(de/4294967296)>>>0:~~+Math.ceil((de-+(~~de>>>0))/4294967296)>>>0:0)],x[E>>2]=Ge[0],x[E+4>>2]=Ge[1],R.getdents&&y===0&&p===0&&(R.getdents=null),0}catch(b){if(typeof g=="undefined"||b.name!=="ErrnoError")throw b;return b.errno}}var Cc=(n,c,u,p)=>{for(var E=0,y=0;y<u;y++){var R=xe[c>>2],b=xe[c+4>>2];c+=8;var k=g.write(n,Le,R,b,p);if(k<0)return-1;E+=k,typeof p!="undefined"&&(p+=k)}return E};function Pg(n,c,u,p){try{var E=Qe.getStreamFromFD(n),y=Cc(E,c,u);return xe[p>>2]=y,0}catch(R){if(typeof g=="undefined"||R.name!=="ErrnoError")throw R;return R.errno}}var vh=function(n,c,u,p){n||(n=this),this.parent=n,this.mount=n.mount,this.mounted=null,this.id=g.nextInode++,this.name=c,this.mode=u,this.node_ops={},this.stream_ops={},this.rdev=p},Dc=365,Nc=146;Object.defineProperties(vh.prototype,{read:{get:function(){return(this.mode&Dc)===Dc},set:function(n){n?this.mode|=Dc:this.mode&=~Dc}},write:{get:function(){return(this.mode&Nc)===Nc},set:function(n){n?this.mode|=Nc:this.mode&=~Nc}},isFolder:{get:function(){return g.isDir(this.mode)}},isDevice:{get:function(){return g.isChrdev(this.mode)}}}),g.FSNode=vh,g.createPreloadedFile=Xa,g.staticInit(),Ki(),vi=e.BindingError=class extends Error{constructor(c){super(c),this.name="BindingError"}},Ka=e.InternalError=class extends Error{constructor(c){super(c),this.name="InternalError"}},rl(),Ku(),dl(),hc=e.UnboundTypeError=pc(Error,"UnboundTypeError"),gl(),Tl();var xg={p:qa,C:cn,w:Zi,t:Qu,n:Yu,r:pl,q:fl,d:_l,D:Ic,k:Sc,c:yl,b:Al,j:Rl,f:yc,o:Nl,g:is,m:Tc,l:C,a:B,e:W,v:ee,A:$,u:Ie,y:At,z:Dr,i:An,x:zt,B:Rc,s:vc,h:Pg},py=w(),kg=()=>(kg=je.F)(),Ol=n=>(Ol=je.G)(n),Yr=n=>(Yr=je.I)(n),Ch=()=>(Ch=je.J)(),Dh=n=>(Dh=je.K)(n),Lg=e.__embind_initialize_bindings=()=>(Lg=e.__embind_initialize_bindings=je.L)(),Nh=n=>(Nh=je.M)(n),Ug=e.dynCall_jiji=(n,c,u,p,E)=>(Ug=e.dynCall_jiji=je.N)(n,c,u,p,E),hy=e._ff_h264_cabac_tables=67061,wc;Qi=function n(){wc||wh(),wc||(Qi=n)};function wh(){if(se>0||($u(),se>0))return;function n(){wc||(wc=!0,e.calledRun=!0,!Qs&&(q(),r(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),Hu()))}e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),n()},1)):n()}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return wh(),t.ready}})(),F_=gS;var su=class extends Br{constructor(t){super(F_,t!=null&&t.wasmPath?fetch(t==null?void 0:t.wasmPath).then(e=>e.arrayBuffer()):void 0,t==null?void 0:t.workerMode,t==null?void 0:t.canvas,t==null?void 0:t.yuvMode)}};var ES=(()=>{var i=typeof document!="undefined"&&document.currentScript?document.currentScript.src:void 0;return function(t={}){var e=t,r,o;e.ready=new Promise((f,_)=>{r=f,o=_});var s=Object.assign({},e),a=[],d="./this.program",h=(f,_)=>{throw _},m=typeof window=="object",T=typeof importScripts=="function",I=typeof process=="object"&&typeof process.versions=="object"&&typeof process.versions.node=="string",v="";function N(f){return e.locateFile?e.locateFile(f,v):v+f}var j,H,z,Te;(m||T)&&(T?v=self.location.href:typeof document!="undefined"&&document.currentScript&&(v=document.currentScript.src),i&&(v=i),v.indexOf("blob:")!==0?v=v.substr(0,v.replace(/[?#].*/,"").lastIndexOf("/")+1):v="",j=f=>{var _=new XMLHttpRequest;return _.open("GET",f,!1),_.send(null),_.responseText},T&&(z=f=>{var _=new XMLHttpRequest;return _.open("GET",f,!1),_.responseType="arraybuffer",_.send(null),new Uint8Array(_.response)}),H=(f,_,S)=>{var C=new XMLHttpRequest;C.open("GET",f,!0),C.responseType="arraybuffer",C.onload=()=>{if(C.status==200||C.status==0&&C.response){_(C.response);return}S()},C.onerror=S,C.send(null)},Te=f=>document.title=f);var Pe=e.print||console.log.bind(console),Xe=e.printErr||console.error.bind(console);Object.assign(e,s),s=null,e.arguments&&(a=e.arguments),e.thisProgram&&(d=e.thisProgram),e.quit&&(h=e.quit);var wt;e.wasmBinary&&(wt=e.wasmBinary);var fe=e.noExitRuntime||!0;typeof WebAssembly!="object"&&yi("no native wasm support detected");var Xs,je,Qs=!1,Fu,Hr,Le,rt,jt,qt,x,xe,Ys;function Ha(){var f=Xs.buffer;e.HEAP8=Hr=new Int8Array(f),e.HEAP16=rt=new Int16Array(f),e.HEAP32=qt=new Int32Array(f),e.HEAPU8=Le=new Uint8Array(f),e.HEAPU16=jt=new Uint16Array(f),e.HEAPU32=x=new Uint32Array(f),e.HEAPF32=xe=new Float32Array(f),e.HEAPF64=Ys=new Float64Array(f)}var Wa,Zs=[],Ks=[],en=[],Ga=!1;function Bu(){if(e.preRun)for(typeof e.preRun=="function"&&(e.preRun=[e.preRun]);e.preRun.length;)Hu(e.preRun.shift());on(Zs)}function $u(){Ga=!0,on(Ks)}function q(){if(e.postRun)for(typeof e.postRun=="function"&&(e.postRun=[e.postRun]);e.postRun.length;)Gu(e.postRun.shift());on(en)}function Hu(f){Zs.unshift(f)}function Wu(f){Ks.unshift(f)}function Gu(f){en.unshift(f)}var Wr=0,se=null,Gr=null;function Qi(f){Wr++,e.monitorRunDependencies&&e.monitorRunDependencies(Wr)}function bh(f){if(Wr--,e.monitorRunDependencies&&e.monitorRunDependencies(Wr),Wr==0&&(se!==null&&(clearInterval(se),se=null),Gr)){var _=Gr;Gr=null,_()}}function yi(f){e.onAbort&&e.onAbort(f),f="Aborted("+f+")",Xe(f),Qs=!0,Fu=1,f+=". Build with -sASSERTIONS for more info.";var _=new WebAssembly.RuntimeError(f);throw o(_),_}var qo="data:application/octet-stream;base64,";function br(f){return f.startsWith(qo)}var Ai;Ai="videodec_simd.wasm",br(Ai)||(Ai=N(Ai));function tn(f){if(f==Ai&&wt)return new Uint8Array(wt);if(z)return z(f);throw"both async and sync fetching of the wasm failed"}function bi(f){return!wt&&(m||T)&&typeof fetch=="function"?fetch(f,{credentials:"same-origin"}).then(_=>{if(!_.ok)throw"failed to load wasm binary file at '"+f+"'";return _.arrayBuffer()}).catch(()=>tn(f)):Promise.resolve().then(()=>tn(f))}function rn(f,_,S){return bi(f).then(C=>WebAssembly.instantiate(C,_)).then(C=>C).then(S,C=>{Xe("failed to asynchronously prepare wasm: "+C),yi(C)})}function ju(f,_,S,C){return!f&&typeof WebAssembly.instantiateStreaming=="function"&&!br(_)&&typeof fetch=="function"?fetch(_,{credentials:"same-origin"}).then(O=>{var B=WebAssembly.instantiateStreaming(O,S);return B.then(C,function(W){return Xe("wasm streaming compile failed: "+W),Xe("falling back to ArrayBuffer instantiation"),rn(_,S,C)})}):rn(_,S,C)}function ja(){var f={a:Cl};function _(C,O){var B=C.exports;return je=B,Xs=je.v,Ha(),Wa=je.z,Wu(je.w),bh("wasm-instantiate"),B}Qi("wasm-instantiate");function S(C){_(C.instance)}if(e.instantiateWasm)try{return e.instantiateWasm(f,_)}catch(C){Xe("Module.instantiateWasm callback failed with error: "+C),o(C)}return ju(wt,Ai,f,S).catch(o),{}}var on=f=>{for(;f.length>0;)f.shift()(e)};function w(f){this.excPtr=f,this.ptr=f-24,this.set_type=function(_){x[this.ptr+4>>2]=_},this.get_type=function(){return x[this.ptr+4>>2]},this.set_destructor=function(_){x[this.ptr+8>>2]=_},this.get_destructor=function(){return x[this.ptr+8>>2]},this.set_caught=function(_){_=_?1:0,Hr[this.ptr+12>>0]=_},this.get_caught=function(){return Hr[this.ptr+12>>0]!=0},this.set_rethrown=function(_){_=_?1:0,Hr[this.ptr+13>>0]=_},this.get_rethrown=function(){return Hr[this.ptr+13>>0]!=0},this.init=function(_,S){this.set_adjusted_ptr(0),this.set_type(_),this.set_destructor(S)},this.set_adjusted_ptr=function(_){x[this.ptr+16>>2]=_},this.get_adjusted_ptr=function(){return x[this.ptr+16>>2]},this.get_exception_ptr=function(){var _=Ac(this.get_type());if(_)return x[this.excPtr>>2];var S=this.get_adjusted_ptr();return S!==0?S:this.excPtr}}var de=0,Ge=0;function sn(f,_,S){var C=new w(f);throw C.init(_,S),de=f,Ge++,de}function qu(f,_,S,C,O){}function Jo(f){switch(f){case 1:return 0;case 2:return 1;case 4:return 2;case 8:return 3;default:throw new TypeError(`Unknown type size: ${f}`)}}function Ju(){for(var f=new Array(256),_=0;_<256;++_)f[_]=String.fromCharCode(_);qa=f}var qa=void 0;function Mt(f){for(var _="",S=f;Le[S];)_+=qa[Le[S++]];return _}var Ce={},jr={},Yi={},yt=void 0;function Ne(f){throw new yt(f)}var qr=void 0;function Ri(f){throw new qr(f)}function Jr(f,_,S){f.forEach(function(V){Yi[V]=_});function C(V){var ee=S(V);ee.length!==f.length&&Ri("Mismatched type converter count");for(var $=0;$<f.length;++$)Jt(f[$],ee[$])}var O=new Array(_.length),B=[],W=0;_.forEach((V,ee)=>{jr.hasOwnProperty(V)?O[ee]=jr[V]:(B.push(V),Ce.hasOwnProperty(V)||(Ce[V]=[]),Ce[V].push(()=>{O[ee]=jr[V],++W,W===B.length&&C(O)}))}),B.length===0&&C(O)}function nn(f,_,S={}){var C=_.name;if(f||Ne(`type "${C}" must have a positive integer typeid pointer`),jr.hasOwnProperty(f)){if(S.ignoreDuplicateRegistrations)return;Ne(`Cannot register type '${C}' twice`)}if(jr[f]=_,delete Yi[f],Ce.hasOwnProperty(f)){var O=Ce[f];delete Ce[f],O.forEach(B=>B())}}function Jt(f,_,S={}){if(!("argPackAdvance"in _))throw new TypeError("registerType registeredInstance requires argPackAdvance");return nn(f,_,S)}function zu(f,_,S,C,O){var B=Jo(S);_=Mt(_),Jt(f,{name:_,fromWireType:function(W){return!!W},toWireType:function(W,V){return V?C:O},argPackAdvance:8,readValueFromPointer:function(W){var V;if(S===1)V=Hr;else if(S===2)V=rt;else if(S===4)V=qt;else throw new TypeError("Unknown boolean type size: "+_);return this.fromWireType(V[W>>B])},destructorFunction:null})}function Rr(f){if(!(this instanceof Cr)||!(f instanceof Cr))return!1;for(var _=this.$$.ptrType.registeredClass,S=this.$$.ptr,C=f.$$.ptrType.registeredClass,O=f.$$.ptr;_.baseClass;)S=_.upcast(S),_=_.baseClass;for(;C.baseClass;)O=C.upcast(O),C=C.baseClass;return _===C&&S===O}function Ja(f){return{count:f.count,deleteScheduled:f.deleteScheduled,preservePointerOnDelete:f.preservePointerOnDelete,ptr:f.ptr,ptrType:f.ptrType,smartPtr:f.smartPtr,smartPtrType:f.smartPtrType}}function he(f){function _(S){return S.$$.ptrType.registeredClass.name}Ne(_(f)+" instance already deleted")}var an=!1;function za(f){}function Xu(f){f.smartPtr?f.smartPtrType.rawDestructor(f.smartPtr):f.ptrType.registeredClass.rawDestructor(f.ptr)}function Xa(f){f.count.value-=1;var _=f.count.value===0;_&&Xu(f)}function Qa(f,_,S){if(_===S)return f;if(S.baseClass===void 0)return null;var C=Qa(f,_,S.baseClass);return C===null?null:S.downcast(C)}var zo={};function g(){return Object.keys(Ki).length}function Ya(){var f=[];for(var _ in Ki)Ki.hasOwnProperty(_)&&f.push(Ki[_]);return f}var Qe=[];function cn(){for(;Qe.length;){var f=Qe.pop();f.$$.deleteScheduled=!1,f.delete()}}var Zi=void 0;function Qu(f){Zi=f,Qe.length&&Zi&&Zi(cn)}function dn(){e.getInheritedInstanceCount=g,e.getLiveInheritedInstances=Ya,e.flushPendingDeletes=cn,e.setDelayFunction=Qu}var Ki={};function Za(f,_){for(_===void 0&&Ne("ptr should not be undefined");f.baseClass;)_=f.upcast(_),f=f.baseClass;return _}function Ot(f,_){return _=Za(f,_),Ki[_]}function ar(f,_){(!_.ptrType||!_.ptr)&&Ri("makeClassHandle requires ptr and ptrType");var S=!!_.smartPtrType,C=!!_.smartPtr;return S!==C&&Ri("Both smartPtrType and smartPtr must be specified"),_.count={value:1},vr(Object.create(f,{$$:{value:_}}))}function zr(f){var _=this.getPointee(f);if(!_)return this.destructor(f),null;var S=Ot(this.registeredClass,_);if(S!==void 0){if(S.$$.count.value===0)return S.$$.ptr=_,S.$$.smartPtr=f,S.clone();var C=S.clone();return this.destructor(f),C}function O(){return this.isSmartPointer?ar(this.registeredClass.instancePrototype,{ptrType:this.pointeeType,ptr:_,smartPtrType:this,smartPtr:f}):ar(this.registeredClass.instancePrototype,{ptrType:this,ptr:f})}var B=this.registeredClass.getActualType(_),W=zo[B];if(!W)return O.call(this);var V;this.isConst?V=W.constPointerType:V=W.pointerType;var ee=Qa(_,this.registeredClass,V.registeredClass);return ee===null?O.call(this):this.isSmartPointer?ar(V.registeredClass.instancePrototype,{ptrType:V,ptr:ee,smartPtrType:this,smartPtr:f}):ar(V.registeredClass.instancePrototype,{ptrType:V,ptr:ee})}var vr=function(f){return typeof FinalizationRegistry=="undefined"?(vr=_=>_,f):(an=new FinalizationRegistry(_=>{Xa(_.$$)}),vr=_=>{var S=_.$$,C=!!S.smartPtr;if(C){var O={$$:S};an.register(_,O,_)}return _},za=_=>an.unregister(_),vr(f))};function vi(){if(this.$$.ptr||he(this),this.$$.preservePointerOnDelete)return this.$$.count.value+=1,this;var f=vr(Object.create(Object.getPrototypeOf(this),{$$:{value:Ja(this.$$)}}));return f.$$.count.value+=1,f.$$.deleteScheduled=!1,f}function Me(){this.$$.ptr||he(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ne("Object already scheduled for deletion"),za(this),Xa(this.$$),this.$$.preservePointerOnDelete||(this.$$.smartPtr=void 0,this.$$.ptr=void 0)}function Ka(){return!this.$$.ptr}function Xo(){return this.$$.ptr||he(this),this.$$.deleteScheduled&&!this.$$.preservePointerOnDelete&&Ne("Object already scheduled for deletion"),Qe.push(this),Qe.length===1&&Zi&&Zi(cn),this.$$.deleteScheduled=!0,this}function eo(){Cr.prototype.isAliasOf=Rr,Cr.prototype.clone=vi,Cr.prototype.delete=Me,Cr.prototype.isDeleted=Ka,Cr.prototype.deleteLater=Xo}function Cr(){}var cr=48,Yu=57;function Qo(f){if(f===void 0)return"_unknown";f=f.replace(/[^a-zA-Z0-9_]/g,"$");var _=f.charCodeAt(0);return _>=cr&&_<=Yu?`_${f}`:f}function un(f,_){return f=Qo(f),{[f]:function(){return _.apply(this,arguments)}}[f]}function Yo(f,_,S){if(f[_].overloadTable===void 0){var C=f[_];f[_]=function(){return f[_].overloadTable.hasOwnProperty(arguments.length)||Ne(`Function '${S}' called with an invalid number of arguments (${arguments.length}) - expects one of (${f[_].overloadTable})!`),f[_].overloadTable[arguments.length].apply(this,arguments)},f[_].overloadTable=[],f[_].overloadTable[C.argCount]=C}}function ln(f,_,S){e.hasOwnProperty(f)?((S===void 0||e[f].overloadTable!==void 0&&e[f].overloadTable[S]!==void 0)&&Ne(`Cannot register public name '${f}' twice`),Yo(e,f,f),e.hasOwnProperty(S)&&Ne(`Cannot register multiple overloads of a function with the same number of arguments (${S})!`),e[f].overloadTable[S]=_):(e[f]=_,S!==void 0&&(e[f].numArguments=S))}function ec(f,_,S,C,O,B,W,V){this.name=f,this.constructor=_,this.instancePrototype=S,this.rawDestructor=C,this.baseClass=O,this.getActualType=B,this.upcast=W,this.downcast=V,this.pureVirtualFunctions=[]}function mn(f,_,S){for(;_!==S;)_.upcast||Ne(`Expected null or instance of ${S.name}, got an instance of ${_.name}`),f=_.upcast(f),_=_.baseClass;return f}function tc(f,_){if(_===null)return this.isReference&&Ne(`null is not a valid ${this.name}`),0;_.$$||Ne(`Cannot pass "${_n(_)}" as a ${this.name}`),_.$$.ptr||Ne(`Cannot pass deleted object as a pointer of type ${this.name}`);var S=_.$$.ptrType.registeredClass,C=mn(_.$$.ptr,S,this.registeredClass);return C}function rc(f,_){var S;if(_===null)return this.isReference&&Ne(`null is not a valid ${this.name}`),this.isSmartPointer?(S=this.rawConstructor(),f!==null&&f.push(this.rawDestructor,S),S):0;_.$$||Ne(`Cannot pass "${_n(_)}" as a ${this.name}`),_.$$.ptr||Ne(`Cannot pass deleted object as a pointer of type ${this.name}`),!this.isConst&&_.$$.ptrType.isConst&&Ne(`Cannot convert argument of type ${_.$$.smartPtrType?_.$$.smartPtrType.name:_.$$.ptrType.name} to parameter type ${this.name}`);var C=_.$$.ptrType.registeredClass;if(S=mn(_.$$.ptr,C,this.registeredClass),this.isSmartPointer)switch(_.$$.smartPtr===void 0&&Ne("Passing raw pointer to smart pointer is illegal"),this.sharingPolicy){case 0:_.$$.smartPtrType===this?S=_.$$.smartPtr:Ne(`Cannot convert argument of type ${_.$$.smartPtrType?_.$$.smartPtrType.name:_.$$.ptrType.name} to parameter type ${this.name}`);break;case 1:S=_.$$.smartPtr;break;case 2:if(_.$$.smartPtrType===this)S=_.$$.smartPtr;else{var O=_.clone();S=this.rawShare(S,Xr.toHandle(function(){O.delete()})),f!==null&&f.push(this.rawDestructor,S)}break;default:Ne("Unsupporting sharing policy")}return S}function ic(f,_){if(_===null)return this.isReference&&Ne(`null is not a valid ${this.name}`),0;_.$$||Ne(`Cannot pass "${_n(_)}" as a ${this.name}`),_.$$.ptr||Ne(`Cannot pass deleted object as a pointer of type ${this.name}`),_.$$.ptrType.isConst&&Ne(`Cannot convert argument of type ${_.$$.ptrType.name} to parameter type ${this.name}`);var S=_.$$.ptrType.registeredClass,C=mn(_.$$.ptr,S,this.registeredClass);return C}function Zo(f){return this.fromWireType(qt[f>>2])}function Zu(f){return this.rawGetPointee&&(f=this.rawGetPointee(f)),f}function to(f){this.rawDestructor&&this.rawDestructor(f)}function pn(f){f!==null&&f.delete()}function ro(){dr.prototype.getPointee=Zu,dr.prototype.destructor=to,dr.prototype.argPackAdvance=8,dr.prototype.readValueFromPointer=Zo,dr.prototype.deleteObject=pn,dr.prototype.fromWireType=zr}function dr(f,_,S,C,O,B,W,V,ee,$,_e){this.name=f,this.registeredClass=_,this.isReference=S,this.isConst=C,this.isSmartPointer=O,this.pointeeType=B,this.sharingPolicy=W,this.rawGetPointee=V,this.rawConstructor=ee,this.rawShare=$,this.rawDestructor=_e,!O&&_.baseClass===void 0?C?(this.toWireType=tc,this.destructorFunction=null):(this.toWireType=ic,this.destructorFunction=null):this.toWireType=rc}function Ku(f,_,S){e.hasOwnProperty(f)||Ri("Replacing nonexistant public symbol"),e[f].overloadTable!==void 0&&S!==void 0?e[f].overloadTable[S]=_:(e[f]=_,e[f].argCount=S)}var io=(f,_,S)=>{var C=e["dynCall_"+f];return S&&S.length?C.apply(null,[_].concat(S)):C.call(null,_)},Ko=[],oc=f=>{var _=Ko[f];return _||(f>=Ko.length&&(Ko.length=f+1),Ko[f]=_=Wa.get(f)),_},es=(f,_,S)=>{if(f.includes("j"))return io(f,_,S);var C=oc(_).apply(null,S);return C},el=(f,_)=>{var S=[];return function(){return S.length=0,Object.assign(S,arguments),es(f,_,S)}};function tr(f,_){f=Mt(f);function S(){return f.includes("j")?el(f,_):oc(_)}var C=S();return typeof C!="function"&&Ne(`unknown function pointer with signature ${f}: ${_}`),C}function tl(f,_){var S=un(_,function(C){this.name=_,this.message=C;var O=new Error(C).stack;O!==void 0&&(this.stack=this.toString()+`
70
+ `+O.replace(/^Error(:[^\n]*)?\n/,""))});return S.prototype=Object.create(f.prototype),S.prototype.constructor=S,S.prototype.toString=function(){return this.message===void 0?this.name:`${this.name}: ${this.message}`},S}var sc=void 0;function nc(f){var _=yc(f),S=Mt(_);return mr(_),S}function hn(f,_){var S=[],C={};function O(B){if(!C[B]&&!jr[B]){if(Yi[B]){Yi[B].forEach(O);return}S.push(B),C[B]=!0}}throw _.forEach(O),new sc(`${f}: `+S.map(nc).join([", "]))}function rl(f,_,S,C,O,B,W,V,ee,$,_e,Ie,ve){_e=Mt(_e),B=tr(O,B),V&&(V=tr(W,V)),$&&($=tr(ee,$)),ve=tr(Ie,ve);var Ue=Qo(_e);ln(Ue,function(){hn(`Cannot construct ${_e} due to unbound types`,[C])}),Jr([f,_,S],C?[C]:[],function(Ye){Ye=Ye[0];var Ft,At;C?(Ft=Ye.registeredClass,At=Ft.instancePrototype):At=Cr.prototype;var Dr=un(Ue,function(){if(Object.getPrototypeOf(this)!==An)throw new yt("Use 'new' to construct "+_e);if(zt.constructor_body===void 0)throw new yt(_e+" has no accessible constructor");var Cc=zt.constructor_body[arguments.length];if(Cc===void 0)throw new yt(`Tried to invoke ctor of ${_e} with invalid number of parameters (${arguments.length}) - expected (${Object.keys(zt.constructor_body).toString()}) parameters instead!`);return Cc.apply(this,arguments)}),An=Object.create(At,{constructor:{value:Dr}});Dr.prototype=An;var zt=new ec(_e,Dr,An,ve,Ft,B,V,$);zt.baseClass&&(zt.baseClass.__derivedClasses===void 0&&(zt.baseClass.__derivedClasses=[]),zt.baseClass.__derivedClasses.push(zt));var Ml=new dr(_e,zt,!0,!1,!1),Rc=new dr(_e+"*",zt,!1,!1,!1),vc=new dr(_e+" const*",zt,!1,!0,!1);return zo[f]={pointerType:Rc,constPointerType:vc},Ku(Ue,Dr),[Ml,Rc,vc]})}function ur(f,_){for(var S=[],C=0;C<f;C++)S.push(x[_+C*4>>2]);return S}function il(f){for(;f.length;){var _=f.pop(),S=f.pop();S(_)}}function ac(f,_){if(!(f instanceof Function))throw new TypeError(`new_ called with constructor type ${typeof f} which is not a function`);var S=un(f.name||"unknownFunctionName",function(){});S.prototype=f.prototype;var C=new S,O=f.apply(C,_);return O instanceof Object?O:C}function oo(f,_,S,C,O,B){var W=_.length;W<2&&Ne("argTypes array size mismatch! Must at least get return value and 'this' types!");for(var V=_[1]!==null&&S!==null,ee=!1,$=1;$<_.length;++$)if(_[$]!==null&&_[$].destructorFunction===void 0){ee=!0;break}for(var _e=_[0].name!=="void",Ie="",ve="",$=0;$<W-2;++$)Ie+=($!==0?", ":"")+"arg"+$,ve+=($!==0?", ":"")+"arg"+$+"Wired";var Ue=`
71
+ return function ${Qo(f)}(${Ie}) {
72
+ if (arguments.length !== ${W-2}) {
73
+ throwBindingError('function ${f} called with ${arguments.length} arguments, expected ${W-2} args!');
74
+ }`;ee&&(Ue+=`var destructors = [];
75
+ `);var Ye=ee?"destructors":"null",Ft=["throwBindingError","invoker","fn","runDestructors","retType","classParam"],At=[Ne,C,O,il,_[0],_[1]];V&&(Ue+="var thisWired = classParam.toWireType("+Ye+`, this);
76
+ `);for(var $=0;$<W-2;++$)Ue+="var arg"+$+"Wired = argType"+$+".toWireType("+Ye+", arg"+$+"); // "+_[$+2].name+`
77
+ `,Ft.push("argType"+$),At.push(_[$+2]);if(V&&(ve="thisWired"+(ve.length>0?", ":"")+ve),Ue+=(_e||B?"var rv = ":"")+"invoker(fn"+(ve.length>0?", ":"")+ve+`);
78
+ `,ee)Ue+=`runDestructors(destructors);
79
+ `;else for(var $=V?1:2;$<_.length;++$){var Dr=$===1?"thisWired":"arg"+($-2)+"Wired";_[$].destructorFunction!==null&&(Ue+=Dr+"_dtor("+Dr+"); // "+_[$].name+`
80
+ `,Ft.push(Dr+"_dtor"),At.push(_[$].destructorFunction))}return _e&&(Ue+=`var ret = retType.fromWireType(rv);
81
+ return ret;
82
+ `),Ue+=`}
83
+ `,Ft.push(Ue),ac(Function,Ft).apply(null,At)}function fn(f,_,S,C,O,B){var W=ur(_,S);O=tr(C,O),Jr([],[f],function(V){V=V[0];var ee=`constructor ${V.name}`;if(V.registeredClass.constructor_body===void 0&&(V.registeredClass.constructor_body=[]),V.registeredClass.constructor_body[_-1]!==void 0)throw new yt(`Cannot register multiple constructors with identical number of parameters (${_-1}) for class '${V.name}'! Overload resolution is currently only performed using the parameter count, not actual type info!`);return V.registeredClass.constructor_body[_-1]=()=>{hn(`Cannot construct ${V.name} due to unbound types`,W)},Jr([],W,function($){return $.splice(1,0,null),V.registeredClass.constructor_body[_-1]=oo(ee,$,null,O,B),[]}),[]})}function cc(f,_,S,C,O,B,W,V,ee){var $=ur(S,C);_=Mt(_),B=tr(O,B),Jr([],[f],function(_e){_e=_e[0];var Ie=`${_e.name}.${_}`;_.startsWith("@@")&&(_=Symbol[_.substring(2)]),V&&_e.registeredClass.pureVirtualFunctions.push(_);function ve(){hn(`Cannot call ${Ie} due to unbound types`,$)}var Ue=_e.registeredClass.instancePrototype,Ye=Ue[_];return Ye===void 0||Ye.overloadTable===void 0&&Ye.className!==_e.name&&Ye.argCount===S-2?(ve.argCount=S-2,ve.className=_e.name,Ue[_]=ve):(Yo(Ue,_,Ie),Ue[_].overloadTable[S-2]=ve),Jr([],$,function(Ft){var At=oo(Ie,Ft,_e,B,W,ee);return Ue[_].overloadTable===void 0?(At.argCount=S-2,Ue[_]=At):Ue[_].overloadTable[S-2]=At,[]}),[]})}function ol(){Object.assign(dc.prototype,{get(f){return this.allocated[f]},has(f){return this.allocated[f]!==void 0},allocate(f){var _=this.freelist.pop()||this.allocated.length;return this.allocated[_]=f,_},free(f){this.allocated[f]=void 0,this.freelist.push(f)}})}function dc(){this.allocated=[void 0],this.freelist=[]}var Pt=new dc;function uc(f){f>=Pt.reserved&&--Pt.get(f).refcount===0&&Pt.free(f)}function sl(){for(var f=0,_=Pt.reserved;_<Pt.allocated.length;++_)Pt.allocated[_]!==void 0&&++f;return f}function nl(){Pt.allocated.push({value:void 0},{value:null},{value:!0},{value:!1}),Pt.reserved=Pt.allocated.length,e.count_emval_handles=sl}var Xr={toValue:f=>(f||Ne("Cannot use deleted val. handle = "+f),Pt.get(f).value),toHandle:f=>{switch(f){case void 0:return 1;case null:return 2;case!0:return 3;case!1:return 4;default:return Pt.allocate({refcount:1,value:f})}}};function al(f,_){_=Mt(_),Jt(f,{name:_,fromWireType:function(S){var C=Xr.toValue(S);return uc(S),C},toWireType:function(S,C){return Xr.toHandle(C)},argPackAdvance:8,readValueFromPointer:Zo,destructorFunction:null})}function _n(f){if(f===null)return"null";var _=typeof f;return _==="object"||_==="array"||_==="function"?f.toString():""+f}function cl(f,_){switch(_){case 2:return function(S){return this.fromWireType(xe[S>>2])};case 3:return function(S){return this.fromWireType(Ys[S>>3])};default:throw new TypeError("Unknown float type: "+f)}}function dl(f,_,S){var C=Jo(S);_=Mt(_),Jt(f,{name:_,fromWireType:function(O){return O},toWireType:function(O,B){return B},argPackAdvance:8,readValueFromPointer:cl(_,C),destructorFunction:null})}function lr(f,_,S){switch(_){case 0:return S?function(O){return Hr[O]}:function(O){return Le[O]};case 1:return S?function(O){return rt[O>>1]}:function(O){return jt[O>>1]};case 2:return S?function(O){return qt[O>>2]}:function(O){return x[O>>2]};default:throw new TypeError("Unknown integer type: "+f)}}function ul(f,_,S,C,O){_=Mt(_),O===-1&&(O=4294967295);var B=Jo(S),W=Ie=>Ie;if(C===0){var V=32-8*S;W=Ie=>Ie<<V>>>V}var ee=_.includes("unsigned"),$=(Ie,ve)=>{},_e;ee?_e=function(Ie,ve){return $(ve,this.name),ve>>>0}:_e=function(Ie,ve){return $(ve,this.name),ve},Jt(f,{name:_,fromWireType:W,toWireType:_e,argPackAdvance:8,readValueFromPointer:lr(_,B,C!==0),destructorFunction:null})}function ll(f,_,S){var C=[Int8Array,Uint8Array,Int16Array,Uint16Array,Int32Array,Uint32Array,Float32Array,Float64Array],O=C[_];function B(W){W=W>>2;var V=x,ee=V[W],$=V[W+1];return new O(V.buffer,$,ee)}S=Mt(S),Jt(f,{name:S,fromWireType:B,argPackAdvance:8,readValueFromPointer:B},{ignoreDuplicateRegistrations:!0})}var ts=(f,_,S,C)=>{if(!(C>0))return 0;for(var O=S,B=S+C-1,W=0;W<f.length;++W){var V=f.charCodeAt(W);if(V>=55296&&V<=57343){var ee=f.charCodeAt(++W);V=65536+((V&1023)<<10)|ee&1023}if(V<=127){if(S>=B)break;_[S++]=V}else if(V<=2047){if(S+1>=B)break;_[S++]=192|V>>6,_[S++]=128|V&63}else if(V<=65535){if(S+2>=B)break;_[S++]=224|V>>12,_[S++]=128|V>>6&63,_[S++]=128|V&63}else{if(S+3>=B)break;_[S++]=240|V>>18,_[S++]=128|V>>12&63,_[S++]=128|V>>6&63,_[S++]=128|V&63}}return _[S]=0,S-O},lc=(f,_,S)=>ts(f,Le,_,S),ml=f=>{for(var _=0,S=0;S<f.length;++S){var C=f.charCodeAt(S);C<=127?_++:C<=2047?_+=2:C>=55296&&C<=57343?(_+=4,++S):_+=3}return _},mc=typeof TextDecoder!="undefined"?new TextDecoder("utf8"):void 0,Qr=(f,_,S)=>{for(var C=_+S,O=_;f[O]&&!(O>=C);)++O;if(O-_>16&&f.buffer&&mc)return mc.decode(f.subarray(_,O));for(var B="";_<O;){var W=f[_++];if(!(W&128)){B+=String.fromCharCode(W);continue}var V=f[_++]&63;if((W&224)==192){B+=String.fromCharCode((W&31)<<6|V);continue}var ee=f[_++]&63;if((W&240)==224?W=(W&15)<<12|V<<6|ee:W=(W&7)<<18|V<<12|ee<<6|f[_++]&63,W<65536)B+=String.fromCharCode(W);else{var $=W-65536;B+=String.fromCharCode(55296|$>>10,56320|$&1023)}}return B},pc=(f,_)=>f?Qr(Le,f,_):"";function hc(f,_){_=Mt(_);var S=_==="std::string";Jt(f,{name:_,fromWireType:function(C){var O=x[C>>2],B=C+4,W;if(S)for(var V=B,ee=0;ee<=O;++ee){var $=B+ee;if(ee==O||Le[$]==0){var _e=$-V,Ie=pc(V,_e);W===void 0?W=Ie:(W+="\0",W+=Ie),V=$+1}}else{for(var ve=new Array(O),ee=0;ee<O;++ee)ve[ee]=String.fromCharCode(Le[B+ee]);W=ve.join("")}return mr(C),W},toWireType:function(C,O){O instanceof ArrayBuffer&&(O=new Uint8Array(O));var B,W=typeof O=="string";W||O instanceof Uint8Array||O instanceof Uint8ClampedArray||O instanceof Int8Array||Ne("Cannot pass non-string to std::string"),S&&W?B=ml(O):B=O.length;var V=Sn(4+B+1),ee=V+4;if(x[V>>2]=B,S&&W)lc(O,ee,B+1);else if(W)for(var $=0;$<B;++$){var _e=O.charCodeAt($);_e>255&&(mr(ee),Ne("String has UTF-16 code units that do not fit in 8 bits")),Le[ee+$]=_e}else for(var $=0;$<B;++$)Le[ee+$]=O[$];return C!==null&&C.push(mr,V),V},argPackAdvance:8,readValueFromPointer:Zo,destructorFunction:function(C){mr(C)}})}var gn=typeof TextDecoder!="undefined"?new TextDecoder("utf-16le"):void 0,En=(f,_)=>{for(var S=f,C=S>>1,O=C+_/2;!(C>=O)&&jt[C];)++C;if(S=C<<1,S-f>32&&gn)return gn.decode(Le.subarray(f,S));for(var B="",W=0;!(W>=_/2);++W){var V=rt[f+W*2>>1];if(V==0)break;B+=String.fromCharCode(V)}return B},pl=(f,_,S)=>{if(S===void 0&&(S=2147483647),S<2)return 0;S-=2;for(var C=_,O=S<f.length*2?S/2:f.length,B=0;B<O;++B){var W=f.charCodeAt(B);rt[_>>1]=W,_+=2}return rt[_>>1]=0,_-C},fc=f=>f.length*2,hl=(f,_)=>{for(var S=0,C="";!(S>=_/4);){var O=qt[f+S*4>>2];if(O==0)break;if(++S,O>=65536){var B=O-65536;C+=String.fromCharCode(55296|B>>10,56320|B&1023)}else C+=String.fromCharCode(O)}return C},_c=(f,_,S)=>{if(S===void 0&&(S=2147483647),S<4)return 0;for(var C=_,O=C+S-4,B=0;B<f.length;++B){var W=f.charCodeAt(B);if(W>=55296&&W<=57343){var V=f.charCodeAt(++B);W=65536+((W&1023)<<10)|V&1023}if(qt[_>>2]=W,_+=4,_+4>O)break}return qt[_>>2]=0,_-C},gc=f=>{for(var _=0,S=0;S<f.length;++S){var C=f.charCodeAt(S);C>=55296&&C<=57343&&++S,_+=4}return _},fl=function(f,_,S){S=Mt(S);var C,O,B,W,V;_===2?(C=En,O=pl,W=fc,B=()=>jt,V=1):_===4&&(C=hl,O=_c,W=gc,B=()=>x,V=2),Jt(f,{name:S,fromWireType:function(ee){for(var $=x[ee>>2],_e=B(),Ie,ve=ee+4,Ue=0;Ue<=$;++Ue){var Ye=ee+4+Ue*_;if(Ue==$||_e[Ye>>V]==0){var Ft=Ye-ve,At=C(ve,Ft);Ie===void 0?Ie=At:(Ie+="\0",Ie+=At),ve=Ye+_}}return mr(ee),Ie},toWireType:function(ee,$){typeof $!="string"&&Ne(`Cannot pass non-string to C++ string type ${S}`);var _e=W($),Ie=Sn(4+_e+_);return x[Ie>>2]=_e>>V,O($,Ie+4,_e+_),ee!==null&&ee.push(mr,Ie),Ie},argPackAdvance:8,readValueFromPointer:Zo,destructorFunction:function(ee){mr(ee)}})};function _l(f,_){_=Mt(_),Jt(f,{isVoid:!0,name:_,argPackAdvance:0,fromWireType:function(){},toWireType:function(S,C){}})}var gl={};function Ec(f){var _=gl[f];return _===void 0?Mt(f):_}var xt=[];function Tc(f,_,S,C){f=xt[f],_=Xr.toValue(_),S=Ec(S),f(_,S,null,C)}function El(f){var _=xt.length;return xt.push(f),_}function Tl(f,_){var S=jr[f];return S===void 0&&Ne(_+" has unknown type "+nc(f)),S}function rs(f,_){for(var S=new Array(f),C=0;C<f;++C)S[C]=Tl(x[_+C*4>>2],"parameter "+C);return S}var Ic=[];function Tn(f,_){var S=rs(f,_),C=S[0],O=C.name+"_$"+S.slice(1).map(function(Ye){return Ye.name}).join("_")+"$",B=Ic[O];if(B!==void 0)return B;for(var W=["retType"],V=[C],ee="",$=0;$<f-1;++$)ee+=($!==0?", ":"")+"arg"+$,W.push("argType"+$),V.push(S[1+$]);for(var _e=Qo("methodCaller_"+O),Ie="return function "+_e+`(handle, name, destructors, args) {
84
+ `,ve=0,$=0;$<f-1;++$)Ie+=" var arg"+$+" = argType"+$+".readValueFromPointer(args"+(ve?"+"+ve:"")+`);
85
+ `,ve+=S[$+1].argPackAdvance;Ie+=" var rv = handle[name]("+ee+`);
86
+ `;for(var $=0;$<f-1;++$)S[$+1].deleteObject&&(Ie+=" argType"+$+".deleteObject(arg"+$+`);
87
+ `);C.isVoid||(Ie+=` return retType.toWireType(destructors, rv);
88
+ `),Ie+=`};
89
+ `,W.push(Ie);var Ue=ac(Function,W).apply(null,V);return B=El(Ue),Ic[O]=B,B}var Il=()=>{yi("")},Sc;Sc=()=>performance.now();var Sl=(f,_,S)=>Le.copyWithin(f,_,_+S),yl=f=>{yi("OOM")},Al=f=>{var _=Le.length;f>>>=0,yl(f)},bl=[null,[],[]],Rl=(f,_)=>{var S=bl[f];_===0||_===10?((f===1?Pe:Xe)(Qr(S,0)),S.length=0):S.push(_)},In={varargs:void 0,get(){In.varargs+=4;var f=qt[In.varargs-4>>2];return f},getStr(f){var _=pc(f);return _}},vl=(f,_,S,C)=>{for(var O=0,B=0;B<S;B++){var W=x[_>>2],V=x[_+4>>2];_+=8;for(var ee=0;ee<V;ee++)Rl(f,Le[W+ee]);O+=V}return x[C>>2]=O,0};Ju(),yt=e.BindingError=class extends Error{constructor(_){super(_),this.name="BindingError"}},qr=e.InternalError=class extends Error{constructor(_){super(_),this.name="InternalError"}},eo(),dn(),ro(),sc=e.UnboundTypeError=tl(Error,"UnboundTypeError"),ol(),nl();var Cl={o:sn,r:qu,m:zu,q:rl,p:fn,d:cc,u:al,k:dl,b:ul,a:ll,j:hc,g:fl,n:_l,e:Tc,l:uc,h:Tn,f:Il,c:Sc,t:Sl,s:Al,i:vl},Rh=ja(),Dl=()=>(Dl=je.w)(),mr=f=>(mr=je.x)(f),Sn=f=>(Sn=je.y)(f),yc=f=>(yc=je.A)(f),Nl=e.__embind_initialize_bindings=()=>(Nl=e.__embind_initialize_bindings=je.B)(),wl=()=>(wl=je.__errno_location)(),Ac=f=>(Ac=je.C)(f),yn=e.dynCall_jiji=(f,_,S,C,O)=>(yn=e.dynCall_jiji=je.D)(f,_,S,C,O),is;Gr=function f(){is||bc(),is||(Gr=f)};function bc(){if(Wr>0||(Bu(),Wr>0))return;function f(){is||(is=!0,e.calledRun=!0,!Qs&&($u(),r(e),e.onRuntimeInitialized&&e.onRuntimeInitialized(),q()))}e.setStatus?(e.setStatus("Running..."),setTimeout(function(){setTimeout(function(){e.setStatus("")},1),f()},1)):f()}if(e.preInit)for(typeof e.preInit=="function"&&(e.preInit=[e.preInit]);e.preInit.length>0;)e.preInit.pop()();return bc(),t.ready}})(),B_=ES;var nu=class extends Br{constructor(t){super(B_,t!=null&&t.wasmPath?fetch(t.wasmPath).then(e=>e.arrayBuffer()):void 0,t==null?void 0:t.workerMode,t==null?void 0:t.canvas,t==null?void 0:t.yuvMode)}};var au=class au{constructor(t){this.core=t;l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.createDecoder=this.createDecoder.bind(this)}getAlias(){return"videoDecoder"}getGroup(t){return t!=null&&t.track?`${t.track.userId}${t.track.streamType}`:"*"}getName(){return au.Name}getValidateRule(t){return{type:this.core.enums.BASIC_TYPE.Object}}createDecoder(t,e){switch(t){case"wasm":return this.core.rtcDectection.isSIMDSupported()?new nu(pe(J({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec_simd.wasm`})):new su(pe(J({},e),{wasmPath:`${this.core.assetsPath||"."}/videodec.wasm`}));case"webCodecs":return new Ti;case"mse":throw new Error("mse decoder not supported yet");default:throw new Error("Unsupported decoder type")}}start(t){this.decodeProcessorMap.set(t.track,this.decode(t)),this.core.room.videoManager.addDecodeProcessor({processor:({frame:e,track:r})=>{var o;return((o=this.decodeProcessorMap.get(r))==null?void 0:o({frame:e,track:r}))||e},type:3})}decode(t){let{pipe:e,take:r,subscribe:o}=this.core.rx;return({frame:s,track:a})=>{if(a!==t.track||s.type==="empty")return s;if(this.contextMap.has(a))return this.contextMap.get(a).decode(s);let d=this.core.room.videoManager.createDecodeContext(pe(J({},t),{createDecoder:this.createDecoder}));return e(d.trackDoneOB,r(1),o(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:a})})),this.contextMap.set(a,d),d.decode(s)}}stop(t){if(!(t!=null&&t.track))this.contextMap.forEach((e,r)=>{e.close("stop"),this.contextMap.delete(r)});else{let e=this.contextMap.get(t.track);e&&(e.close("stop"),this.contextMap.delete(t.track))}this.contextMap.size===0&&this.core.room.videoManager.removeDecodeProcessor({type:3})}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(this.core.enums.DECODE_FAILED_ERROR_CODE.TEST);return}e.close("update"),this.contextMap.set(t.track,this.core.room.videoManager.createDecodeContext(pe(J({},t),{createDecoder:this.createDecoder})))}}};l(au,"Name","TRTCVideoDecoder");var wa=au;var cg=Ci(ki());function Hp({timesInSecond:i,maxSizeInSecond:t,getSize:e}){return Ae((r,o)=>{let s=new WeakMap;return F.on(P.ROOM_DESTROY,({room:a})=>s.delete(a)),function(...a){let d=s.get(this);if(d||(d={callCountInSecond:0,timestamp:0,totalSizeInSecond:0},s.set(this,d)),d.timestamp===0?d.timestamp=Date.now():Date.now()-d.timestamp>1e3&&(d.timestamp=Date.now(),d.callCountInSecond=0,d.totalSizeInSecond=0),e&&(d.totalSizeInSecond+=e(...a)),d.timestamp!==0&&Date.now()-d.timestamp<1e3&&(d.callCountInSecond>=i||d.totalSizeInSecond>t))throw new ue({code:Y.INVALID_OPERATION,message:st({key:ot.CALL_FREQUENCY_LIMIT,data:{isTimes:d.callCountInSecond>=i,isSize:d.totalSizeInSecond>t,name:o,timesInSecond:i,maxSizeInSecond:t}})});d.callCountInSecond++,r.call(this,...a)}})}var TS="2025-02-18 19:08:36",$_=!0,H_=function(){var i;$_&&($_=!1,U.getLogLevel()!==5&&(console.info("******************************************************************************"),console.info("* TRTC Web SDK"),console.info(`* API Document: ${Nr}/en/index.html`),console.info(`* Changelog: ${Nr}/en/tutorial-01-info-changelog.html`),console.info("* Report issues: https://github.com/LiteAVSDK/TRTC_Web/issues"),console.info("******************************************************************************")),U.info("TRTC Web SDK Version:",Ke),Tr||U.debug("Build Time:",TS),U.info("UA:",navigator.userAgent),U.info(`URL: ${location.href}${((i=self.frameElement)==null?void 0:i.tagName)==="IFRAME"?" in iframe":""}`),Kn().then(t=>{t&&U.info(fr)}))};var nr={SCENE_LIVE:"live",SCENE_RTC:"rtc",ROLE_ANCHOR:"anchor",ROLE_AUDIENCE:"audience",STREAM_TYPE_MAIN:"main",STREAM_TYPE_SUB:"sub",AUDIO_PROFILE_STANDARD:"standard",AUDIO_PROFILE_STANDARD_STEREO:"standard-stereo",AUDIO_PROFILE_HIGH:"high",AUDIO_PROFILE_HIGH_STEREO:"high-stereo",QOS_PREFERENCE_SMOOTH:"smooth",QOS_PREFERENCE_CLEAR:"clear",SPEAKER:"Speakerphone",HEADSET:"Headset earpiece"};var ae={INVALID_PARAMETER:5e3,INVALID_OPERATION:5100,ENV_NOT_SUPPORTED:5200,DEVICE_ERROR:5300,SERVER_ERROR:5400,OPERATION_FAILED:5500,OPERATION_ABORT:5998,UNKNOWN_ERROR:5999},yr=(w=>(w[w.INVALID_PARAMETER=5e3]="INVALID_PARAMETER",w[w.INVALID_PARAMETER_REQUIRED=5001]="INVALID_PARAMETER_REQUIRED",w[w.INVALID_PARAMETER_TYPE=5002]="INVALID_PARAMETER_TYPE",w[w.INVALID_PARAMETER_EMPTY=5003]="INVALID_PARAMETER_EMPTY",w[w.INVALID_PARAMETER_INSTANCE=5004]="INVALID_PARAMETER_INSTANCE",w[w.INVALID_PARAMETER_RANGE=5005]="INVALID_PARAMETER_RANGE",w[w.INVALID_PARAMETER_LESS_THAN_ZERO=5006]="INVALID_PARAMETER_LESS_THAN_ZERO",w[w.INVALID_PARAMETER_MIN=5007]="INVALID_PARAMETER_MIN",w[w.INVALID_PARAMETER_MAX=5008]="INVALID_PARAMETER_MAX",w[w.INVALID_ELEMENT_ID=5009]="INVALID_ELEMENT_ID",w[w.INVALID_ELEMENT_ID_TYPE=5010]="INVALID_ELEMENT_ID_TYPE",w[w.INVALID_STREAM_ID=5011]="INVALID_STREAM_ID",w[w.INVALID_ROOM_ID_STRING=5012]="INVALID_ROOM_ID_STRING",w[w.INVALID_ROOM_ID_INTEGER=5013]="INVALID_ROOM_ID_INTEGER",w[w.INVALID_STREAM_TYPE=5014]="INVALID_STREAM_TYPE",w[w.INVALID_ROOM_ID_REQUIED=5015]="INVALID_ROOM_ID_REQUIED",w[w.INVALID_ROOM_ID_INTEGER_STRING=5016]="INVALID_ROOM_ID_INTEGER_STRING",w[w.INVALID_BUFFER_EMPTY=5017]="INVALID_BUFFER_EMPTY",w[w.INVALID_BUFFER_OVERSIZE=5018]="INVALID_BUFFER_OVERSIZE",w[w.INVALID_OPERATION=5100]="INVALID_OPERATION",w[w.INVALID_OPERATION_NOT_JOINED=5101]="INVALID_OPERATION_NOT_JOINED",w[w.INVALID_OPERATION_REMOTE_USER_NOT_EXIST=5102]="INVALID_OPERATION_REMOTE_USER_NOT_EXIST",w[w.INVALID_OPERATION_STREAM_TYPE_NOT_EXIST=5103]="INVALID_OPERATION_STREAM_TYPE_NOT_EXIST",w[w.INVALID_OPERATION_REPEAT_CALL=5104]="INVALID_OPERATION_REPEAT_CALL",w[w.INVALID_OPERATION_NEED_VIDEO=5105]="INVALID_OPERATION_NEED_VIDEO",w[w.INVALID_OPERATION_NEED_AUDIO=5106]="INVALID_OPERATION_NEED_AUDIO",w[w.INVALID_ROLE_AUDIENCE=5107]="INVALID_ROLE_AUDIENCE",w[w.INVALID_NOT_ENABLE_SEI=5108]="INVALID_NOT_ENABLE_SEI",w[w.INVALID_NEED_CALL_PUBLISHED=5109]="INVALID_NEED_CALL_PUBLISHED",w[w.ENV_NOT_SUPPORTED=5200]="ENV_NOT_SUPPORTED",w[w.NOT_SUPPORTED_HTTP=5201]="NOT_SUPPORTED_HTTP",w[w.NOT_SUPPORTED_WEBRTC=5202]="NOT_SUPPORTED_WEBRTC",w[w.NOT_SUPPORTED_H264_ENCODE=5203]="NOT_SUPPORTED_H264_ENCODE",w[w.NOT_SUPPORTED_H264_DECODE=5204]="NOT_SUPPORTED_H264_DECODE",w[w.NOT_SUPPORTED_SCREEN_SHARE=5205]="NOT_SUPPORTED_SCREEN_SHARE",w[w.NOT_SUPPORTED_SMALL_VIDEO=5206]="NOT_SUPPORTED_SMALL_VIDEO",w[w.NOT_SUPPORTED_SEI=5207]="NOT_SUPPORTED_SEI",w[w.NOT_SUPPORTED_WEBGL=5208]="NOT_SUPPORTED_WEBGL",w[w.NOT_SUPPORTED_CHROME_VERSION=5209]="NOT_SUPPORTED_CHROME_VERSION",w[w.NOT_SUPPORTED_PLUGIN=5210]="NOT_SUPPORTED_PLUGIN",w[w.DEVICE_ERROR=5300]="DEVICE_ERROR",w[w.DEVICE_NOT_FOUND_ERROR=5301]="DEVICE_NOT_FOUND_ERROR",w[w.DEVICE_NOT_ALLOWED_ERROR=5302]="DEVICE_NOT_ALLOWED_ERROR",w[w.DEVICE_NOT_READABLE_ERROR=5303]="DEVICE_NOT_READABLE_ERROR",w[w.DEVICE_OVERCONSTRAINED_ERROR=5304]="DEVICE_OVERCONSTRAINED_ERROR",w[w.DEVICE_INVALID_STATE_ERROR=5305]="DEVICE_INVALID_STATE_ERROR",w[w.DEVICE_SECURITY_ERROR=5306]="DEVICE_SECURITY_ERROR",w[w.DEVICE_ABORT_ERROR=5307]="DEVICE_ABORT_ERROR",w[w.CAMERA_RECOVER_FAILED=5308]="CAMERA_RECOVER_FAILED",w[w.MICROPHONE_RECOVER_FAILED=5309]="MICROPHONE_RECOVER_FAILED",w[w.SERVER_ERROR=5400]="SERVER_ERROR",w[w.NEED_TO_BUY=5401]="NEED_TO_BUY",w[w.ACCOUNT_NO_MONEY=-100013]="ACCOUNT_NO_MONEY",w[w.OPERATION_FAILED=5500]="OPERATION_FAILED",w[w.FIREWALL_RESTRICTION=5501]="FIREWALL_RESTRICTION",w[w.REJOIN_FAILED=5502]="REJOIN_FAILED",w[w.EVENT_HANDLER_ERROR=5503]="EVENT_HANDLER_ERROR",w[w.VIDEO_CONTEXT_ERROR=5504]="VIDEO_CONTEXT_ERROR",w[w.VIDEO_DECODE_ERROR=5505]="VIDEO_DECODE_ERROR",w[w.OPERATION_ABORT=5998]="OPERATION_ABORT",w[w.UNKNOWN_ERROR=5999]="UNKNOWN_ERROR",w))(yr||{});function G_({code:i,params:t,enableDocLink:e=!1}){let r="",o,s=yr[i];try{o=W_[s]}catch(a){o=W_.UNKNOWN_ERROR}return Fe(o)?r=o(t):Se(o)&&(r=o),t.fnName&&!r.includes(t.fnName)&&(r[r.length-1]!=="."&&(r+="."),r+=` thrown from ${t.fnName}()`),e&&(r+=" doc:"),r}var W_=pe(J({},Wt),{INVALID_PARAMETER({fnName:i}){return`the parameters of the '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_PARAMETER_REQUIRED({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' is a required param when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_TYPE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s="";return Array.isArray(t.type)?s=t.type.join("|"):s=t.type,`'${o}' must be type of ${s} when calling ${e}(), received type: ${ut(r)}.`},INVALID_PARAMETER_EMPTY({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' cannot be '${r}' when calling ${e}().`},INVALID_PARAMETER_INSTANCE({key:i,rule:t,fnName:e,value:r}){let o=`${i||t.name}`,s=`${t.instanceOf.name||t.instanceOf}`;return`'${o}' must be instanceof ${s} when calling ${e}(), received type: ${ut(r)}.`},INVALID_PARAMETER_RANGE({key:i,rule:t,fnName:e,value:r}){return`'${i||t.name}' must be one of ${t.values.join("|")} when calling ${e}(), received: ${r}.`},INVALID_PARAMETER_LESS_THAN_ZERO({key:i,rule:t,fnName:e}){return`'${i||t.name}' cannot be less than 0 when calling ${e}().`},INVALID_PARAMETER_MIN({key:i,rule:t,value:e}){return`the min value of ${i||t.name} is ${t.min}, received: ${e}.`},INVALID_PARAMETER_MAX({key:i,rule:t,value:e}){return`the max value of ${i||t.name} is ${t.max}, received: ${e}.`},INVALID_ELEMENT_ID({key:i,fnName:t}){return`'${i}' is not found in the document object when calling ${t}().`},INVALID_ELEMENT_ID_TYPE({key:i,fnName:t,type:e}){return`the element corresponding to '${i}' must be instanceof HTMLElement when calling ${t}(), received: ${e}.`},INVALID_STREAM_ID({key:i}){return`'${i}' can only consist of uppercase and lowercase english letters (a-zA-Z), numbers (0-9), hyphens and underscores.`},INVALID_ROOM_ID_STRING({key:i}){return`'${i}' must be a valid string.`},INVALID_ROOM_ID_INTEGER({key:i}){return`'${i}' must be an integer between [1, 4294967294].`},INVALID_ROOM_ID_INTEGER_STRING({key:i}){return`'${i}' must be an integer but go a string, use 'parseInt' to convert it or use 'strRoomId' instead.`},INVALID_ROOM_ID_REQUIED(){return"at least one of 'roomId'(between [1, 4294967294]) and 'strRoomId'(not empty) is required."},INVALID_STREAM_TYPE:({fnName:i})=>`'streamType' is required when 'userId' is not '*', calling ${i}()`,INVALID_IMAGE_URL:"The 'src' param must be filled in when the background type is image.",INVALID_OPERATION({fnName:i}){return`the API '${i}' you called does not meet the requirements, please check the API documentation.`},INVALID_OPERATION_NOT_JOINED({fnName:i}){return`cannot ${i} because you are not enter room yet.`},INVALID_OPERATION_REMOTE_USER_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing stream.`},INVALID_OPERATION_STREAM_TYPE_NOT_EXIST({fnName:i,value:t}){return`cannot ${i} because remote user(userId: ${t.userId}) does not publishing ${t.streamType} video.`},INVALID_OPERATION_REPEAT_CALL({fnName:i}){return`you are already ${i}(), cannot repeated call '${i}'.`},INVALID_OPERATION_NEED_VIDEO({fnName:i}){return`cannot call '${i}' because the camera is not turned on.`},INVALID_OPERATION_NEED_AUDIO({fnName:i}){return`cannot call '${i}' because the microphone is not turned on.`},INVALID_BUFFER_EMPTY:({key:i})=>`the buffer size of paramerter '${i}' cannot be empty`,INVALID_BUFFER_OVERSIZE:()=>"buffer size is over 1000 Bytes",INVALID_ROLE_AUDIENCE:()=>"role: 'audience' cannot call this api.",INVALID_NOT_ENABLE_SEI:()=>"you need to enable SEI in TRTC.create({ enableSEI: true })",INVALID_NEED_CALL_PUBLISHED:({fnName:i})=>`you need to call ${i}() after publish stream.`,ENV_NOT_SUPPORTED({fnName:i}){return`the current browser does not support the capability of the function '${i}' you are calling, please check the API documentation.`},NOT_SUPPORTED_WEBRTC:"the current browser does not support WebRTC capability, please check the SDK documentation.",NOT_SUPPORTED_H264_ENCODE:"this browser does not support H264 encode.",NOT_SUPPORTED_H264_DECODE:"this browser does not support H264 decode.",NOT_SUPPORTED_SCREEN_SHARE:"this browser does not support screen share, please check the browser version.",NOT_SUPPORTED_SMALL_VIDEO:"this browser does not support small video, please check the browser version.",NOT_SUPPORTED_SEI:"this browser does not support SEI, please check the browser version.",NOT_SUPPORTED_WEBGL:"this browser does not support WebGL, please check the browser version.",NOT_SUPPORTED_CHROME_VERSION({fnName:i}){return`cannot call ${i} because the browser version is too low, please upgrade to the latest version`},DEVICE_ERROR({fnName:i,error:t}){return`'${i}' got device exception${t?`, error: ${t.toString()}.`:"."}`},DEVICE_NOT_FOUND_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`NotFoundError, no ${t} detected, please check your device and the configuration on '${i}'${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_ALLOWED_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`NotAllowedError, you have disabled ${t} access, please allow the current application to use the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_NOT_READABLE_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`NotReadableError, the ${t} maybe in use by another APP, please check if the device is pre-occupied by another APP.`},DEVICE_OVERCONSTRAINED_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`OverconstrainedError, the device ID is incorrect, please check whether the device ID passed in is correct${e?`, error: ${e.toString()}.`:"."}`},DEVICE_INVALID_STATE_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`InvalidStateError, after the user clicks and interacts with the page, turn on the ${t}${e?`, error: ${e.toString()}.`:"."}`},DEVICE_SECURITY_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`SecurityError, check whether the system security policy restricts the use of the ${t}, and it is recommended to turn on the ${t} after the user interacts with the page${e?`, error: ${e.toString()}.`:"."}`},DEVICE_ABORT_ERROR({fnName:i,deviceType:t=$o(i),error:e}){return`AbortError, an unknown exception in the system makes the device unusable, recommended to change the device or browser and re-check whether the device is normal${e?` error: ${e.toString()}.`:"."}`},CAMERA_RECOVER_FAILED({error:i}){return`camera recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},MICROPHONE_RECOVER_FAILED({error:i}){return`microphone recover capture failed ${(i==null?void 0:i.name)||""}: ${(i==null?void 0:i.originMessage)||(i==null?void 0:i.message)}`},OPERATION_FAILED({fnName:i,error:t}){return`'${i}' failed, reason: ${t==null?void 0:t.toString()}`},FIREWALL_RESTRICTION(){return"media connection failure due to firewall restrictions, please try to change your network."},EVENT_HANDLER_ERROR({eventName:i}){return`an error was caught on trtc.on('${i}', handler), please check your code on 'handler'.`},VIDEO_CONTEXT_ERROR({reason:i,error:t}){return`video context error ${i} ${(t==null?void 0:t.name)||""} ${(t==null?void 0:t.message)||""}`},SERVER_ERROR({fnName:i,error:t}){return`'${i}' got server error: ${t==null?void 0:t.toString()}, please check the SDK documentation.`},NEED_TO_BUY({value:i,url:t}){return`You need to buy packages for ${i}. Refer to: ${t}`},ACCOUNT_NO_MONEY:({fnParams:i})=>`your TRTC account run out of credit, please recharge.${i.sdkAppId?` SDKAppId: ${i.sdkAppId}`:""}`,OPERATION_ABORT({fnName:i}){return`'${i}' abort`},UNKNOWN_ERROR({fnName:i,error:t}){return`'${i}' throw unknown exception${t?`, error: ${t.toString()}.`:"."}`}});function $o(i){if(!i)return"camera";let t=i.toLowerCase();return t.includes("screen")?"screen share":t.includes("audio")?"microphone":"camera"}var Wp=class i extends Error{constructor({code:e,extraCode:r,message:o="",messageParams:s,fnName:a="",originError:d}){var m;let h;o?h=o:h=G_({code:e===ae.SERVER_ERROR?e:r||e,params:J({fnName:a,error:d},s)});super(h);l(this,"name","RtcError");l(this,"code");l(this,"extraCode");l(this,"functionName");l(this,"message");l(this,"handler");l(this,"originError");this.name=yr[e],this.code=e,this.extraCode=r,this.functionName=a,this.originError=d,this.message=h,this.extraCode===5302&&((m=this.originError)!=null&&m.message.includes("system"))&&(this.handler=()=>{let T={startLocalVideo:"Camera",startLocalAudio:"Microphone",startScreenShare:"ScreenCapture"},I={startLocalVideo:"webcam",startLocalAudio:"microphone"},v=document.createElement("a");ho?v.href=`ms-settings:privacy-${I[this.functionName]}`:Er&&(v.href=`x-apple.systempreferences:com.apple.preference.security?Privacy_${T[this.functionName]}`),v.href.length>0&&v.click()})}static convertFrom(e,r,o){let s=e;if(e instanceof ue){let{stack:a}=e,d={code:ae.UNKNOWN_ERROR,fnName:r,originError:e};switch(e.getCode()){case Y.INVALID_PARAMETER:d.code=ae.INVALID_PARAMETER,d.message=e.message;break;case Y.INVALID_OPERATION:d.code=ae.INVALID_OPERATION;break;case Y.NOT_SUPPORTED:case Y.NOT_SUPPORTED_H264:d.code=ae.ENV_NOT_SUPPORTED,e.getCode()===Y.NOT_SUPPORTED_H264&&(d.extraCode=e.message.includes(Wt.NOT_SUPPORTED_H264ENCODE)?5203:5204);break;case Y.JOIN_ROOM_FAILED:d.messageParams={fnParams:o};case Y.SERVER_TIMEOUT:case Y.SWITCH_ROLE_FAILED:d.code=ae.SERVER_ERROR,d.extraCode=e.getExtraCode();break;case Y.API_CALL_ABORTED:d.code=ae.OPERATION_ABORT;break;case Y.DEVICE_NOT_FOUND:case Y.DEVICE_AUTO_RECOVER_FAILED:case Y.INITIALIZE_FAILED:d.code=5300,e.name&&(d.extraCode=IS(e.name));break;case Y.UNKNOWN:break;default:d.code=ae.OPERATION_FAILED}s=new i(d),a&&(s.stack+=a.substr(a.indexOf(`
90
+ `)))}else{if(e instanceof i)return e;s=new i({code:ae.UNKNOWN_ERROR,fnName:r,originError:e})}return s}};function IS(i){let t;switch(i){case"NotFoundError":t=5301;break;case"NotAllowedError":t=5302;break;case"NotReadableError":t=5303;break;case"OverconstrainedError":t=5304;break;case"InvalidStateError":t=5305;break;case"SecurityError":t=5306;break;case"AbortError":t=5307;break;default:t=5300}return t}var oe=Wp;var j_={type:"object",properties:{cameraId:{type:"string"},useFrontCamera:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:["string","boolean"],values:[!0,!1,"view","publish","both"]},small:{properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack}}},q_={type:"object",properties:{systemAudio:{type:"boolean"},fillMode:{type:"string",values:["contain","cover","fill"]},profile:{type:["string","object"],properties:{width:{type:"number"},height:{type:"number"},frameRate:{type:"number"},bitrate:{type:"number"}}},videoTrack:{instanceOf:MediaStreamTrack},audioTrack:{instanceOf:MediaStreamTrack}}},Hs={type:["string",HTMLElement,null,"array"],arrayItem:{instanceOf:HTMLElement},validate(i,t,e){if(Se(i)&&!document.getElementById(i))throw new oe({code:ae.INVALID_PARAMETER,extraCode:5009,fnName:e,messageParams:{key:t}})}},J_={name:"userId",required:!0,type:"string"},z_={type:"object",properties:{microphoneId:{type:"string"},audioTrack:{instanceOf:MediaStreamTrack},captureVolume:{type:"number",min:0},earMonitorVolume:{type:"number",min:0,max:100},profile:{values:[nr.AUDIO_PROFILE_STANDARD,nr.AUDIO_PROFILE_STANDARD_STEREO,nr.AUDIO_PROFILE_HIGH,nr.AUDIO_PROFILE_HIGH_STEREO]},echoCancellation:{type:"boolean"},autoGainControl:{type:"boolean"},noiseSuppression:{type:"boolean"}}};function Ma(i,t){if(!i)throw new oe({code:ae.INVALID_OPERATION,extraCode:5101,fnName:t})}function X_(i,t,e){if(!i)throw new oe({code:ae.INVALID_OPERATION,extraCode:5102,fnName:t,messageParams:{value:e}})}var NP={type:"number",notLessThanZero:!0},SS={create:[{name:"RoomConfig",instanceOf:Function},{name:"CreateConfig",type:"object",properties:{plugins:{type:"array",arrayItem:{instanceOf:Function}}}}],enterRoom:{name:"EnterRoomConfig",type:"object",required:!0,validate(i,t,e){if(this._room.isJoined)throw new oe({code:ae.INVALID_OPERATION,extraCode:5104,fnName:e});if(i.roomId){if(Se(i.roomId))throw new oe({code:ae.INVALID_PARAMETER,extraCode:5016,fnName:e,messageParams:{key:t}});if(!(/^[1-9]\d*$/.test(String(i.roomId))&&i.roomId<4294967295))throw new oe({code:ae.INVALID_PARAMETER,extraCode:5013,fnName:e,messageParams:{key:t}})}else if(i.strRoomId){if(!/^[A-Za-z\d\s!#$%&()+\-:;<=.>?@[\]^_{}|~,]{1,64}$/.test(i.strRoomId))throw new oe({code:ae.INVALID_PARAMETER,extraCode:5012,fnName:e,messageParams:{key:t}})}else throw new oe({code:ae.INVALID_PARAMETER,extraCode:5015,fnName:e})},properties:{sdkAppId:{required:!0,type:"number",allowEmpty:!1},userId:{required:!0,type:"string",allowEmpty:!1},userSig:{required:!0,type:"string",allowEmpty:!1},scene:{type:"string",values:["live","rtc"]},role:{type:"string",values:["audience","anchor"]},roomId:{type:["string","number"]},strRoomId:{type:"string"},proxy:{type:["object","string"],properties:{websocketProxy:{type:"string"},turnServer:{type:["object","array"],properties:{url:{required:!0,type:"string"},username:{type:"string"},credential:{type:"string"},credentialType:{type:"string",values:["password"]}}},loggerProxy:{type:"string"},webtransportProxy:{type:"string"}}},enableAutoPlayDialog:{type:"boolean"},userDefineRecordId:{type:"string"},latencyLevel:{type:"number"}}},startLocalVideo:{name:"LocalVideoConfig",type:"object",properties:{view:Hs,mute:{type:["boolean","string"]},publish:{type:"boolean"},option:j_},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.videoTrack)&&mi())throw new oe({code:ae.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalVideo:{name:"updateLocalVideoConfig",type:"object",required:!0,properties:{view:pe(J({},Hs),{required:!1}),publish:{type:"boolean"},mute:{type:["boolean","string"]},option:j_}},startLocalAudio:{name:"LocalAudioConfig",type:"object",properties:{publish:{type:"boolean"},option:z_},validate(i){var t;if(!((t=i==null?void 0:i.option)!=null&&t.audioTrack)&&mi())throw new oe({code:ae.ENV_NOT_SUPPORTED,extraCode:5201})}},updateLocalAudio:{name:"updateLocalAudioConfig",type:"object",required:!0,properties:{publish:{type:"boolean"},mute:{type:"boolean"},option:z_}},startScreenShare:{name:"ScreenShareConfig",type:"object",properties:{view:Hs,publish:{type:"boolean"},option:q_},validate(i,t,e,r,o){var s;if(!((s=i==null?void 0:i.option)!=null&&s.videoTrack)&&mi())throw new oe({code:ae.ENV_NOT_SUPPORTED,extraCode:5201});if(!da())throw new oe({code:ae.ENV_NOT_SUPPORTED,fnName:e,extraCode:5205})}},updateScreenShare:{name:"updateScreenShareConfig",type:"object",required:!0,properties:{view:Hs,publish:{type:"boolean"},option:q_}},muteRemoteAudio:[J_,{name:"mute",required:!0,type:"boolean"}],setRemoteAudioVolume:[J_,{name:"volume",required:!0,type:"number",min:0}],startRemoteVideo:{name:"startRemoteVideoConfig",type:"object",required:!0,properties:{view:Hs,userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){Ma(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(X_(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new oe({code:ae.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},updateRemoteVideo:{name:"updateRemoteVideoConfig",type:"object",required:!0,properties:{view:pe(J({},Hs),{required:!1}),userId:{type:"string",required:!0},streamType:{values:["main","sub"],required:!0},option:{type:"object",properties:{fillMode:{type:"string",values:["contain","cover","fill"]},mirror:{type:"boolean"}}}},validate(i,t,e){Ma(this._room.isJoined,e);let r=this._room.remotePublishedUserMap.get(i.userId);if(X_(!!r,e,i),r&&(i.streamType==="main"&&!r.muteState.videoAvailable||i.streamType==="sub"&&!r.muteState.hasAuxiliary))throw new oe({code:ae.INVALID_OPERATION,extraCode:5103,fnName:e,messageParams:{value:i}})}},stopRemoteVideo:{name:"stopRemoteVideoConfig",type:"object",required:!0,properties:{userId:{type:"string",required:!0},streamType:{values:["main","sub"]}},validate(i,t,e){if(i.userId!=="*"&&L(i.streamType))throw new oe({code:ae.INVALID_PARAMETER,extraCode:5014,fnName:e})}},switchRole:{name:"role",required:!0,values:["anchor","audience"],validate(i,t,e){Ma(this._room.isJoining||this._room.isJoined,e)}},enableAudioVolumeEvaluation:[{name:"interval",type:"number"},{name:"enableInBackground",type:"boolean"}],sendSEIMessage:[{name:"buffer",required:!0,instanceOf:ArrayBuffer,validate(i,t,e,r){if(!pa)throw new oe({code:ae.ENV_NOT_SUPPORTED,fnName:e,extraCode:5207});if(!this._room.enableSEI)throw new oe({code:ae.INVALID_OPERATION,fnName:e,extraCode:5108});if(i.byteLength>1e3)throw new oe({code:ae.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new oe({code:ae.INVALID_PARAMETER,extraCode:5017,messageParams:{key:t},fnName:e});Ma(this._room.isJoined,e)}},{name:"options",type:"object",properties:{seiPayloadType:{type:"number",values:[5,243]},toSubStream:{type:"boolean",validate(i,t,e){if(!i&&!this._room.isMainStreamPublished||i&&!this._room.isAuxStreamPublished)throw new oe({code:ae.INVALID_OPERATION,extraCode:5109,messageParams:{key:t},fnName:e})}}}}],sendCustomMessage:{name:"message",required:!0,type:"object",properties:{cmdId:{type:"number",required:!0,min:1,max:10},data:{instanceOf:ArrayBuffer,required:!0,validate(i,t,e,r){if(i.byteLength>1e3)throw new oe({code:ae.INVALID_PARAMETER,extraCode:5018,fnName:e});if(i.byteLength===0)throw new oe({code:ae.INVALID_PARAMETER,extraCode:5017,fnName:e,messageParams:{key:t}})}}},validate(i,t,e){if(Ma(this._room.isJoined,e),this._room.scene==="live"&&this._room.role==="audience")throw new oe({code:ae.INVALID_OPERATION,extraCode:5107,fnName:e,messageParams:{key:t}})}}},Et={TRTC:SS};var Dt=class extends Error{};function yS(i,t){let e=lo(i);for(let r=0;r<t.length;r++)Or(e[r],t[r]);return e}function AS(i){this._resolve=Promise.resolve(i)}function bS(i){this._reject=Promise.reject(i)}var Wi=class Wi{constructor(t,e){this.instance=t;this.group=e;l(this,"started",!1);l(this,"ops",[]);l(this,"startSame",()=>!0);l(this,"mergeUpdate",yS);let r=Wi.instances.get(t);r?r.set(e,this):Wi.instances.set(t,new Map([[e,this]]))}static get(t,e){if(!e)return;let r=Wi.instances.get(t);return r&&r.get(e)||new Wi(t,e)}static gets(t,e){let r=Wi.instances.get(t),o=[];return r&&r.forEach((s,a)=>{e.test(a)&&o.push(s)}),o}action(t,e,r){let o=d=>{var h;return t===0?this.started=!0:t===3&&(this.started=!1),this.ops.shift(),(h=this.currentOp)==null||h.action(),d},s=d=>{var h,m;throw this.ops.shift(),t===0&&((h=this.currentOp)==null?void 0:h.type)===2&&this.ops.shift().reject(new Dt("start failed")),(m=this.currentOp)==null||m.action(),d},a={type:t,action:()=>e(...a.args).then(o,s),args:r,resolve:AS,reject:bS};try{switch(this.state){case 1:if(t===0)throw new Dt("already started");break;case 4:if(t===2)throw new Dt("not started");break;default:return this.cacheOp(a)}}catch(d){return Promise.reject(d)}return this.ops.push(a),a.promise=e(...a.args).then(o,s)}cacheOp(t){if(this.ops.length===1)switch(this.state){case 0:case 2:if(t.type===0)throw new Dt("already start");break;case 3:switch(t.type){case 2:throw new Dt("update not allowed when stopping");case 3:return this.currentOp.promise}break;default:throw new Dt("unknown state")}else switch(t.type){case 3:switch(this.lastOpType){case 3:return this.lastOp.promise;default:let r=new Dt("keep stop");if(this.ops.slice(1).forEach(o=>o.reject(r)),this.ops=this.ops.slice(0,1),this.state===3)return this.currentOp.promise}break;case 2:switch(this.lastOpType){case 2:return this.lastOp.args=this.mergeUpdate(this.lastOp.args,t.args),this.lastOp.promise;case 3:throw new Dt("update not allowed after stop")}break;case 0:switch(this.lastOpType){case 2:throw new Dt("start not allowed after update");case 0:throw new Dt("duplicate start");case 3:if(this.startSame(this.currentOp.args,t.args))throw this.ops.pop().reject(new Dt("keep start")),new Dt("already start")}}t.promise=new Promise((r,o)=>{t._resolve?t._resolve.then(r):t.resolve=r,t._reject?t._reject.catch(o):t.reject=o});let{action:e}=t;return t.action=()=>e().then(t.resolve,t.reject),this.ops.push(t),t.promise}get lastOp(){return this.ops[this.ops.length-1]}get lastOpType(){return this.lastOp.type}get currentOp(){return this.ops[0]}get state(){return this.currentOp?this.currentOp.type:this.started?1:4}};l(Wi,"instances",new WeakMap);var Ii=Wi;var cu=new WeakMap,du=(i,t)=>{if(t instanceof Dt){let{stack:e}=t;t=new oe({code:ae.OPERATION_ABORT,message:`${i} abort: ${t.message}`,fnName:i}),e&&(t.stack+=e.substr(e.indexOf(`
91
+ `)))}throw t};function Gi(i,t){return Ae((e,r)=>function(...o){let s=Ii.get(this,typeof i=="string"?i:i.call(this,...o));return s?(t&&(s.startSame=t.bind(this)),s.action(0,e.bind(this),o).catch(du.bind(null,r))):e.apply(this,o)})}function Ho(i,t){let{merge:e,debounce:r}=t||{};return Ae((o,s)=>function(...a){let d=Ii.get(this,typeof i=="string"?i:i.call(this,...a));if(!d)return o.apply(this,a);if(e&&(d.mergeUpdate=e.bind(this)),r&&r.isNeedToDebounce.apply(this,a)){let{delay:h,getKey:m}=r;return new Promise((T,I)=>{var j,H;let v=(j=cu.get(this))==null?void 0:j.get(m(...a));if(v){let{timeoutId:z,resolve:Te}=v;clearTimeout(z),Te()}let N=setTimeout(()=>{if(d.state===3||d.state===4)return T();d.action(2,o.bind(this),a).catch(du.bind(null,s)).then(T,I)},h);cu.has(this)?(H=cu.get(this))==null||H.set(m(...a),{timeoutId:N,resolve:T}):cu.set(this,new Map([[m(...a),{timeoutId:N,resolve:T}]]))})}return d.action(2,o.bind(this),a).catch(du.bind(null,s))})}function ji(i){return Ae((t,e)=>function(...r){let o=typeof i=="function"?i.call(this,...r):i;if(o instanceof RegExp)return Promise.all(Ii.gets(this,o).map(a=>a.action(3,()=>Promise.resolve(),r))).then(()=>t.call(this,...r));let s=Ii.get(this,o);return s?s.action(3,t.bind(this),r).catch(du.bind(null,e)):t.apply(this,r)})}var K={ERROR:"error",AUTOPLAY_FAILED:"autoplay-failed",KICKED_OUT:"kicked-out",REMOTE_USER_ENTER:"remote-user-enter",REMOTE_USER_EXIT:"remote-user-exit",REMOTE_AUDIO_AVAILABLE:"remote-audio-available",REMOTE_AUDIO_UNAVAILABLE:"remote-audio-unavailable",REMOTE_VIDEO_AVAILABLE:"remote-video-available",REMOTE_VIDEO_UNAVAILABLE:"remote-video-unavailable",AUDIO_VOLUME:"audio-volume",AUDIO_FRAME:"audio-frame",NETWORK_QUALITY:"network-quality",CONNECTION_STATE_CHANGED:"connection-state-changed",AUDIO_PLAY_STATE_CHANGED:"audio-play-state-changed",VIDEO_PLAY_STATE_CHANGED:"video-play-state-changed",SCREEN_SHARE_STOPPED:"screen-share-stopped",DEVICE_CHANGED:"device-changed",PUBLISH_STATE_CHANGED:"publish-state-changed",TRACK:"track",STATISTICS:"statistics",SEI_MESSAGE:"sei-message",CUSTOM_MESSAGE:"custom-message",VIDEO_DECODE_DOWNGRADE_STATE_CHANGED:"video-decode-downgrade-state-changed",LAYER_DATA:"layerData",FIRST_VIDEO_FRAME:"first-video-frame"},Q_=new Set([K.ERROR,K.AUTOPLAY_FAILED,K.KICKED_OUT,K.REMOTE_USER_ENTER,K.REMOTE_USER_EXIT,K.REMOTE_AUDIO_AVAILABLE,K.REMOTE_AUDIO_UNAVAILABLE,K.REMOTE_VIDEO_AVAILABLE,K.REMOTE_VIDEO_UNAVAILABLE,K.CONNECTION_STATE_CHANGED,K.PUBLISH_STATE_CHANGED,K.SCREEN_SHARE_STOPPED,K.DEVICE_CHANGED,K.FIRST_VIDEO_FRAME]);function qi(i){return i==="sub"?"auxiliary":i==="auxiliary"?"sub":"main"}function Oa(i){return i===nr.QOS_PREFERENCE_CLEAR?"detail":i===nr.QOS_PREFERENCE_SMOOTH?"motion":""}var jp={};Kr(jp,{bytes2ms:()=>jh,convertObjectNumberToInt:()=>Fn,copyProperties:()=>Gh,deepClone:()=>lo,deepMerge:()=>Or,delay:()=>Bn,fibonacci:()=>mo,formatedTime:()=>Gc,getConstructorName:()=>Un,getContainerFromElement:()=>Kh,getEnv:()=>$h,getInternalVersion:()=>Yh,getLoggerUrl:()=>ii,getMuteStateFromFlag:()=>Vn,getNetworkType:()=>kn,getNumNetworkType:()=>$c,getReconnectionTimeout:()=>Jh,getStringByteLength:()=>ef,getTurnServer:()=>Zh,getUint32Version:()=>Jc,getValueType:()=>ut,getViewListFromView:()=>ls,glog:()=>Ln,ipv4ToUint32:()=>us,isArray:()=>it,isAudioWorkletSupported:()=>Qh,isBoolean:()=>nt,isConstructor:()=>ds,isEmpty:()=>Wc,isFunction:()=>Fe,isLangChinese:()=>hr,isMediaStreamTrack:()=>zh,isNumber:()=>$e,isObject:()=>rr,isOverseaSdkAppId:()=>xn,isPlainObject:()=>Bt,isPortrait:()=>qc,isPromise:()=>Ni,isRemoteTrack:()=>Xh,isString:()=>Se,isUndefined:()=>L,loadImage:()=>ms,ms2bytes:()=>qh,ms2samples:()=>zl,performanceNow:()=>ge,promiseAny:()=>Hc,samples2ms:()=>Jl,setNetworkType:()=>Wh,stringify:()=>ir,stringifyIncludeValue:()=>jc,throttlePromise:()=>zc});var zp={};Kr(zp,{getAbilityConfigUrl:()=>vS,getScheduleDomain:()=>Pa,isNeedToSchedule:()=>uu,scheduleProxy:()=>Ar,sendScheduleRequest:()=>Jp,setIsNeedToSchedule:()=>Wo,setScheduleProxy:()=>lu});var qp=null,uu=!0;typeof document!="undefined"&&document.head.insertAdjacentHTML("beforeend",Object.values(ri).map(i=>`<link rel="dns-prefetch" href="https://${i}">`).join(`\r
92
+ `));function Wo(i){nt(i)&&i!==uu&&(uu=i,U.info(`setIsNeedToSchedule ${i}`))}F.on("28",()=>Wo(!0));F.on("63",()=>Wo(!0));F.on("84",()=>Wo(!0));F.on("201",i=>{i.state==="RECONNECTING"&&Wo(!0)});F.on("202",i=>{i.state==="RECONNECTING"&&Wo(!0)});function RS(i,t,e){let r={totalCost:0,local:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let o=performance.getEntriesByType("resource"),s=Ws(i,D.MAIN),a=Ws(i,D.BACKUP);for(let d of o)if(d.startTime>=e&&(d.name===s||d.name===a)&&d.transferSize>0){let h=d.name===s?D.MAIN:D.BACKUP,m=Math.round(d.duration),T=Math.round(d.domainLookupStart-d.startTime),I=d.redirectStart>0?Math.round(d.redirectEnd-d.redirectStart):0,v=d.fetchStart>0?Math.round(d.domainLookupStart-d.fetchStart):0,N=Math.round(d.domainLookupEnd-d.domainLookupStart),j=Math.round(d.requestStart-d.secureConnectionStart),H=Math.round(d.secureConnectionStart-d.connectStart),z=Math.round(d.responseStart-d.requestStart),Te=Math.round(d.responseEnd-d.responseStart),Pe=[N,j,H,z,Te];Ve.uploadEvent({log:`stat-schedule-net:${m}(${T}(${I}->${v})->${Pe.join("->")}) ${h}`,userId:t}),r=pe(J({},r),{totalCost:m,local:T,dns:N,tcp:H,tls:j,request:z,response:Te});break}}catch(o){U.error("getScheduleDetailCost error",o)}return r}function Jp(m){return A(this,arguments,function*({userId:i,sdkAppId:t,useStringRoomId:e,roomId:r,userSig:o,version:s,frameWorkType:a,role:d,latencyLevel:h}){if(!uu&&qp)return{isCached:!0,result:qp};let T={delta:0,count:[1,1],msg:[],detail:[]};try{let I=new FormData;I.append("userId",String(i)),I.append("sdkAppId",String(t)),I.append("isStrGroupId",String(e)),I.append("groupId",String(r)),I.append("sdkVersion",s),I.append("userSig",String(o)),d&&I.append("role",String(d)),h&&I.append("latencyLevel",String(h)),a&&I.append("frameWorkType",String(a));let v=ge(),N=yield DS(I,T,t);N.config&&(N.config.loggerDomain&&no(N.config.loggerDomain),nt(N.config.scheduleCache)&&Wo(!N.config.scheduleCache)),T.delta=ge()-v;let j=RS(Number(t),i,v);return qp=N,{isCached:!1,result:N,detailCost:j}}catch(I){let v=it(I)?I[0]:I,N=$e(v.code)?v.code:0,j=`schedule failed${v.message?`: ${v.message}`:""}`,H=new ue({code:Y.SCHEDULE_FAILED,extraCode:N,message:st({key:ot.JOIN_ROOM_FAILED,data:{error:j,code:N}})});throw U.error(j,N),H}})}var Ar={main:"",backup:""};function lu(i){it(i)?(Ar.main=i[0],Ar.backup=i[1]):Ar.main=i}function Ws(i,t=D.MAIN,e=!1){return`https://${Ar[t]||Pa(i,t,e)}/api/v1/config`}function vS(i,t=D.MAIN){return`https://${Ar[t]||Pa(i,t)}/api/v1/trtcAutoConf`}function Pa(i,t=D.MAIN,e=!1){let r;return xn(i)?e?r=t===D.MAIN?ri.MAIN_OVERSEA_BACKUP:ri.BACKUP_OVERSEA:r=t===D.MAIN?ri.MAIN_OVERSEA:ri.BACKUP_OVERSEA:r=t===D.MAIN?ri.MAIN:ri.BACKUP,r}function CS(i,t,e){return new Promise((r,o)=>{oi({url:i,body:t,timeout:e.timeout,priority:"high"}).then(s=>{s.data.code===0?r(s.data.data):o({code:s.data.code,message:s.data.msg})}).catch(o)})}var Y_=(i,t)=>Mi({retryFunction:CS,settings:{retries:3,timeout:0},onError:t,onRetrying:i});function DS(i,t,e){return new Promise((r,o)=>{let s=null;Hc([Y_(a=>t.count[0]=a+1,({error:a,retry:d,retriedCount:h,retryFuncArgs:m})=>{t.msg[0]=a.message,s||(h>=1&&(m[0]=Ws(e,D.MAIN,!0)),d())})(Ws(e,D.MAIN),i,{get timeout(){return mo(2+t.count[0])*1e3}}),Y_(a=>t.count[1]=a+1,({error:a,retry:d,retriedCount:h,retryFuncArgs:m})=>{t.msg[1]=a.message,s||(h>=2&&(m[0]=Ws(e,D.BACKUP,!0)),d())})(Ws(e,D.BACKUP),i,{get timeout(){return mo(2+t.count[1])*1e3}})]).then(a=>{s=a,r(s)}).catch(o)})}var NS=i=>i.startsWith("data:application/octet-stream;base64,"),wS=i=>i.startsWith("file://"),mu=class{constructor(){l(this,"_log");this._log=U.createLogger({id:"fd"})}download(t,e){return A(this,null,function*(){let{type:r="blob"}=e||{};try{let o=ge(),s;if(Fe(fetch)?s=yield this.downloadWithFetch(t,r):s=yield this.downloadWithXHR(t,r),!s||!s.data)throw new Error("data is empty");let a=ge()-o;return this._log.info(`downloaded: ${t}, return type: ${r}, cost: ${a}ms`),X.addSuccessEvent({key:522700,cost:ge()-o}),s.data}catch(o){throw this._log.error(`failed to download: ${t}, error: ${o}`),X.addFailedEvent({key:522700,error:o}),o}})}downloadWithFetch(t,e){return A(this,null,function*(){this._log.info(`download with fetch: ${t}, return type: ${e}`);try{let r=yield fetch(t);if(!r.ok)throw new Error("network response was not ok");let o;return e==="arraybuffer"?o=yield r.arrayBuffer():o=yield r.blob(),{data:o}}catch(r){throw r}})}downloadWithXHR(t,e){return this._log.info(`download with xhr: ${t}, return type: ${e}`),new Promise((r,o)=>{let s=new XMLHttpRequest;s.open("GET",t,!0),s.responseType=e,s.onload=()=>{s.status===200||s.status===0&&s.response?r({data:s.response}):o(new Error("XHR failed"))},s.onerror=o,s.send(null)})}loadWasm(t,e){return A(this,null,function*(){this._log.info(`loadWasm ${t}, importObject: ${JSON.stringify(e)}`);let r=ge(),o=null,s=null;if(Fe(WebAssembly.instantiateStreaming)&&!NS(t)&&!wS(t)&&Fe(fetch))try{let a=fetch(t);o=(yield WebAssembly.instantiateStreaming(a,e)).instance}catch(a){s=a}if(!o)try{let a=yield this.download(t,{type:"arraybuffer"});o=(yield WebAssembly.instantiate(a,e)).instance}catch(a){s=a}if(o){let a=ge()-r;return this._log.info(`loadedWasm ${t}, cost: ${a}ms`),X.addSuccessEvent({key:522701,cost:a}),o}throw this._log.error(`failed to loadWasm ${t}, error: ${s}`),X.addFailedEvent({key:522701,error:s}),s})}};G([Ui({settings:{timeout:0,retries:3},onRetrying(t){this._log.warn(`download retrying: ${t}`)}})],mu.prototype,"download",1);var Z_=new mu;function K_({TRTC:i,room:t,errorModule:e,assetsPath:r}){return{TRTC:i,room:t,assetsPath:r,fileDownloader:Z_,innerEmitter:F,constants:ql,environment:bs,utils:jp,eventLogger:Ve,log:this.room.getLogger(),loggerManager:U,errorModule:e,kvStatManager:X,rtcDectection:Li,trtc:this,rx:$p,enums:vm,schedule:zp,clearStarted:(o,s)=>{let a=o.getAlias(),d=Ii.instances.get(this);if(d)if(s){let h=d.get(a+s);if(!h)return;h.started=!1}else d.forEach((h,m)=>{m.startsWith(a)&&(h.started=!1)})},startGetPCM:ba,createAudioNode:Qm}}var eg=(i,t)=>{let{emit:e}=i;return i.emit=(...r)=>{try{return e.apply(i,r)}catch(o){let s=st({key:ot.CATCH_HANDLER_ERROR,data:{name:t,event:r[0]},addDocLink:!1});return U.warn(`${s}
53
93
 
54
- ${r.stack}`),!1}},s};var ys=new WeakMap;function ym(s){let i=ys.get(s);i&&(i.forEach(e=>clearTimeout(e)),ys.delete(s))}function bm(s,i){return J((e,t)=>function(...r){let o=ys.get(this);o||(o=new Map,ys.set(this,o));let n=i(...r),a=o.get(n);if(!a||a<=0){e.apply(this,r);let d=setTimeout(()=>{var l;(l=ys.get(this))==null||l.delete(n)},s);o.set(n,d)}else{clearTimeout(a);let d=window.setTimeout(()=>{var l;e.apply(this,r),(l=ys.get(this))==null||l.delete(n)},s);o.set(n,d)}})}var Nm="5.9.0-wasm.11";function He(...s){return J((i,e)=>function(...t){try{Ha.call(this,s,t,e,this._name)}catch(r){return Promise.reject(r)}return i.apply(this,t)})}function wl(...s){return J((i,e)=>function(...t){try{Ha.call(this,s,t,e,this._name)}catch(r){throw r}return i.apply(this,t)})}function Ha(s,i,e,t){if(Te(s))for(let r=0;r<s.length;r++)Fa.call(this,{rule:s[r],value:i[r],key:s[r].name,fnName:e,className:t});else Fa.call(this,{rule:s,value:i[0],key:s.name,fnName:e,className:t})}function Fa({rule:s,value:i,key:e,fnName:t,className:r}){function o(d){return{code:V.INVALID_PARAMETER,extraCode:d,fnName:t,messageParams:{key:e,rule:s,value:i}}}if(g(i)){if(s.required)throw new w(o(5001));if(g(s.defaultValue)){se(s.validate)&&s.validate.call(this,i,e,t,r,this);return}i=s.defaultValue}if(Array.isArray(s.type)){let d=!1;for(let l=0;l<s.type.length;l++)s.type[l]===null&&i===null&&(d=!0),se(s.type[l])&&i instanceof s.type[l]&&(d=!0),K(s.type[l])&&Ae(i)===s.type[l].toLowerCase()&&(d=!0);if(!d)throw new w({code:V.INVALID_PARAMETER,extraCode:5002,fnName:t,messageParams:{key:e,rule:{type:s.type.map(l=>Jr(l)?zs(l):K(l)?l:Ae(l))},value:i}})}else if(!g(s.type)&&Ae(i)!==s.type)throw new w(o(5002));if(s.allowEmpty===!1){let d=Y(i)&&(i===0||Number.isNaN(i)),l=K(i)&&i.trim()==="";if(d||l)throw new w(o(5003))}if(s.notLessThanZero&&Y(i)&&i<0)throw new w(o(5006));if(!g(s.min)&&Y(i)&&i<s.min)throw new w(o(5007));if(!g(s.max)&&Y(i)&&i>s.max)throw new w(o(5008));if(K(s.instanceOf)){if(!i||i._name!==s.instanceOf)throw new w(o(5004))}else if(se(s.instanceOf)&&!(i instanceof s.instanceOf))throw new w(o(5004));if(Array.isArray(s.values)&&!s.values.includes(i))throw new w(o(5005));let{properties:n}=s;Qe(n)&&ut(i)&&Object.keys(n).forEach(d=>{Fa.call(this,{rule:n[d],value:i&&i[d],key:`${d}`,fnName:t,className:r})});let{arrayItem:a}=s;Qe(a)&&Te(i)&&i.forEach((d,l)=>{Fa.call(this,{rule:a,value:d,key:`${e}[${l}]`,fnName:t,className:r})}),se(s.validate)&&s.validate.call(this,i,e,t,r,this)}function le(s={}){let{getRemoteId:i=()=>"",replaceArg:e,getKVReportKey:t,ignoreLog:r}=s;return J((o,n)=>function(...a){var u;function d(p,_,I){if(I&&I.includes(p))return"hided";if(e){let R=e(...a);if(a[R.argIndex]===_)return R.value}if(_===a||p in a)return _;try{return _ instanceof HTMLElement?`id: ${_.id} type:${Ae(_)}`:(JSON.stringify(_),_)}catch(R){return`type:${Ae(_)}`}}let l=this._log||C;if(r!=null&&r(...a))return o.apply(this,a);a.length>0?l.info(`${n}() ${JSON.stringify(a,(p,_)=>d(p,_,["userSig","privateMapKey"]))}`):l.info(`${n}()`);let m=t?t(...a):qn[n];try{let p=o.apply(this,a),_=L();return Wi(p)?p.then(I=>(l.info(`${n}() success ${i.call(this,...a)}`),N.addSuccessEvent({key:m,cost:L()-_}),I)).catch(I=>{var G;I=w.convertFrom.call(this,I,n,a.length===1?a[0]:a);let R=I.extraCode||I.code,D=(G=I.message)!=null&&G.includes(R)?"":` code:${R}`;throw l.error(`${n}() failed ${i.call(this,...a)} ${I}${D} params: ${JSON.stringify(a,d)}`),N.addFailedEvent({key:m,error:I}),I}):(N.addSuccessEvent({key:m}),p)}catch(p){p=w.convertFrom.call(this,p,n);let _=p.extraCode||p.code,I=(u=p.message)!=null&&u.includes(_)?"":` code:${_}`;throw l.error(`${n}() failed ${p}${I} params: ${JSON.stringify(a,d)}`),N.addFailedEvent({key:m,error:p}),p}})}var $a=s=>J((i,e)=>function(t,r){return f(this,null,function*(){let o=this._plugins.get(t);if(!o)throw this._log.error(`plugin ${String(t)} is not found`),new w({code:V.OPERATION_ABORT,message:`plugin ${String(t)} is not found`,fnName:e});if(se(o.constructor.isSupported)&&!o.constructor.isSupported())throw this._log.error(`plugin ${String(t)} is not supported`),new w({code:V.ENV_NOT_SUPPORTED,message:`plugin ${String(t)} is not supported`,extraCode:5210,fnName:e});return Ha.call(this,o.getValidateRule(s),[r],e,"TRTC"),i.call(this,o,r)})});var Ga=0,xl=class{constructor(i,e){c(this,"player");c(this,"publisher");c(this,"mixInput");this.mixInput=new ps(e),i.url?(this.player=new Audio(i.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(i.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(i.track),this.mixInput.connect()}updateSettings(i){this.player&&(g(i.volume)||(this.volume=i.volume),g(i.loop)||(this.loop=i.loop),g(i.playbackRate)||(this.playbackRate=i.playbackRate))}updateListener(i){if(this.player){if(i.onDurationChange){let{onDurationChange:e}=i;this.player.ondurationchange=t=>{e(t.target.duration)}}if(i.onTimeUpdate){let e=i.onTimeUpdate,{player:t}=this;t.ontimeupdate=()=>{e(t.currentTime,t.duration)}}i.onEnded&&(this.player.onended=i.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(i){this.player&&(i<0&&i>this.player.duration||(this.player.currentTime=i,this.publisher.currentTime=i))}play(){var i,e;return(i=this.publisher)==null||i.play(),(e=this.player)==null?void 0:e.play()}pause(){var i,e;(i=this.player)==null||i.pause(),(e=this.publisher)==null||e.pause()}stop(){var i;(i=this.player)==null||i.pause(),this.mixInput.disconnect()}setOperation(i){i==="pause"&&this.pause(),i==="resume"&&(this.pause(),this.play()),i==="stop"&&(this.pause(),this.seek(0))}set volume(i){!this.player||!this.publisher||(this.player.volume=i,this.publisher.volume=i)}set loop(i){!this.player||!this.publisher||(this.player.loop=i,this.publisher.loop=i)}set playbackRate(i){!this.player||!this.publisher||(this.player.playbackRate=i,this.publisher.playbackRate=i)}};function bs(s,i){if(i&&typeof i!="function")throw new w({code:V.INVALID_PARAMETER,message:`start audioMixer plugin: param ${s} should be a function.`})}var ri=class ri{constructor(i){this.core=i;c(this,"log");c(this,"mixedMusicMap",new Map);c(this,"cacheMusicMap",new Map);Ga=Ga+1,this.log=i.log.createChild({id:`${this.getAlias()}${Ga}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${Ga}`),this.core=i}getName(){return ri.Name}getAlias(){return"ax"}getGroup(i){return i==null?void 0:i.id}getValidateRule(i){switch(i){case"start":return ri.startValidateRule;case"update":return ri.updateValidateRule;case"stop":return ri.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${i.id} url: ${i.url}, track: ${i.track}`);let{id:t,url:r}=i;if(this.mixedMusicMap.has(t))return;let o=this.cacheMusicMap.get(t);o?i.url?o.reset():(o.mixInput.replaceSource(i.track),o.mixInput.connect()):(o=new xl(i,e.audioManager),this.cacheMusicMap.set(t,o)),o.updateListener(i),o.updateSettings(i),yield o.play(),this.mixedMusicMap.set(t,o),this.log.info(`start mix audio track ${t} success.`),N.addEnum({key:502700,value:3}),this.kvUpload(i)})}update(i){return f(this,null,function*(){let{id:e,operation:t,seekFrom:r,playbackRate:o}=i;this.log.info(`update music source, ${JSON.stringify(i)}`);let n=this.mixedMusicMap.get(e);if(!n){this.log.warn(`update music source failed, music id: ${e} not found.`);return}n.updateSettings(i),n.updateListener(i),g(t)||n.setOperation(t),g(r)||n.seek(r),this.kvUpload(i)})}stop(e){return f(this,arguments,function*({id:i}){var t;this.mixedMusicMap.has(i)&&(this.log.info(`remove music source, music id: ${i}`),(t=this.mixedMusicMap.get(i))==null||t.stop(),this.mixedMusicMap.delete(i)),i==="*"&&this.destroyAllMusic()})}kvUpload(i){let{track:e,loop:t,volume:r,playbackRate:o,operation:n,seekFrom:a,onTimeUpdate:d,onDurationChange:l,onEnded:m}=i;e&&N.addCount({key:502711}),t&&N.addCount({key:502703}),r&&N.addCount({key:502704}),o&&N.addCount({key:502705}),n&&N.addCount({key:502706}),a&&N.addCount({key:502707}),typeof d!="function"&&N.addCount({key:502709}),typeof m!="function"&&N.addCount({key:502710}),typeof l!="function"&&N.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((i,e)=>this.stop({id:e}))}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};c(ri,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(i,e,t){if(i.url&&i.url!=="*"){let r=i.url.split("?")[0],o=["mp3","ogg","wav","flac"],n=r.split(".").pop(),a=o.indexOf(n)>=0,d=r.startsWith("blob"),l=r.startsWith("data");if(!(a||d||l))throw new w({code:V.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:t})}if(!i.url&&!i.track)throw new w({code:V.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:t});bs("onTimeUpdate",i.onTimeUpdate),bs("onEnded",i.onEnded),bs("onDurationChange",i.onDurationChange)}}),c(ri,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(i,e,t){bs("onTimeUpdate",i.onTimeUpdate),bs("onEnded",i.onEnded),bs("onDurationChange",i.onDurationChange)}}),c(ri,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),c(ri,"Name","AudioMixer");var Wa=ri;var Ja=0,Ul,wi=class wi{constructor(i){this.core=i;c(this,"log");c(this,"audioContext",Ze("denoiser"));c(this,"workletNode");Ja=Ja+1,this.log=i.log.createChild({id:`${this.getAlias()}${Ja}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Ja}`),i.assetsPath&&this.preload(`${i.assetsPath}/denoiser-wasm.js`)}static startValidateRule(i){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,t,r,o){if(!i.room.audioManager.hasAudioTrack)throw new w({code:V.INVALID_OPERATION,extraCode:5106,fnName:r})}}}preload(i){return Ul||(Ul=this.doPreload(i)),Ul}doPreload(i){return f(this,null,function*(){let e=yield this.core.fileDownloader.download(i,{type:"blob"}),t=URL.createObjectURL(e);try{yield Ir(this.audioContext,t)}finally{URL.revokeObjectURL(t)}})}getName(){return wi.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(i){switch(i){case"start":return wi.startValidateRule(this.core);case"update":return wi.updateValidateRule;case"stop":return wi.stopValidateRule}}start(i){return f(this,null,function*(){let{room:e}=this.core;if(yield this.preload(`${i.assetsPath}/denoiser-wasm.js`),!this.workletNode){let t=String(Date.now()).slice(0,-3),{auth:r,sign:o,status:n,message:a}=yield sT(k(v({},i),{timestamp:t}));if(!r)throw this.log.info(`RTCAIDenoiser: ${i.userId} auth result: ${r}. Message: ${a}`),new w({code:V.INVALID_PARAMETER,message:a});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(i.sdkAppId),userId:i.userId,timestamp:t,sign:o,status:n}}),this.workletNode.port.onmessage=d=>{let{data:l}=d;l.type==="cost"&&this.log.debug(`[RTCAIDenoiser] ${l.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return f(this,null,function*(){})}stop(){return f(this,null,function*(){if(!this.workletNode)return;let{room:i}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield i.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};c(wi,"updateValidateRule",{type:"object"}),c(wi,"stopValidateRule",{type:"object"}),c(wi,"Name","AIDenoiser");var qa=wi;function rT(s,i=h.MAIN){return`https://${Pt[i]||Wo(s,i)}/api/v1/audioAiAuth`}function sT(r){return f(this,arguments,function*({sdkAppId:s,userId:i,userSig:e,timestamp:t}){let n=`${rT(s)}?sdkAppId=${s}&userId=${i}&userSig=${e}&timestamp=${t}`,a=yield fetch(n),{data:{errCode:d,errMsg:l,sign:m,status:u}}=yield a.json();if(u==="1")return{auth:!0,sign:m,status:u,message:l};let p="Init RTCAIDenoiser failed.",_="";switch(d){case 1:_="Please check your params.";break;case 2:_="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:_="Server is invalid. Please contact our engineer. ";break;case 4:_="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:_="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:_="Your version is not supported.";break}return{auth:!1,status:u,message:l?`${p} Reason: ${l}. ${_}`:`${p}, ${_}`}})}var vm=ke(Ge(),1);var Vl=class extends vm.EventEmitter{constructor(){super();c(this,"observer");c(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return f(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!me&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){ee.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let t=this.stateNum,r=e[e.length-1];this.state=r.state,(this.stateNum>3||t>3)&&C.info(`${r.source}: ${r.state}`),this.emit("state-changed",{type:r.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(t){ee.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:t})}}},oT=new Vl,Bl=oT;function Fl([s,i]){let e=i.byteLength,t=parseInt(String(e/255),10),r=e%255,o=[];o.push(0,0,0,1,6,s);for(let a=0;a<t;a++)o.push(255);o.push(r);let n=new DataView(i);return o.push(...new Uint8Array(n.buffer)),o.push(128),new vi(new DataView(new Uint8Array(o).buffer),!0)}function Hl(s){return s.type==="empty"||s.data.byteLength===0}function $l(s){return s.getInt32(0)===1&&s.getInt8(4)===6}function Gl(s){let i=0,e=0,t=new DataView(s);for(let r=0;r<s.byteLength;r++)switch(t.getUint8(r)){case 0:i++;break;case 1:(i===2||i===3)&&e++,i=0;break;default:i=0;break}return e}function Wl({frame:s,seiMessageList:i}){if(!i||i.length===0||s.data.byteLength===0)return s;let t=9-Gl(s.data);if(t<=0)return s;let r=i.splice(0,t).reverse().map(Fl),o=r.reduce((m,u)=>m+u.dataView.byteLength,0),n=new ArrayBuffer(o+s.data.byteLength),a=new DataView(n),d=new DataView(s.data),l=0;for(let m=0;m<r.length;m++)for(let u=0;u<r[m].dataView.byteLength;u++)a.setInt8(l++,r[m].dataView.getInt8(u));for(let m=0;m<s.data.byteLength;m++)a.setInt8(l++,d.getInt8(m));return s.data=n,s}function Jl({frame:s,onSEI:i}){try{let e=new DataView(s.data);if(Hl(s)||!$l(e))return s;let t=[],r=0,o=-1,n=-1;for(let a=0;a<s.data.byteLength;a++){let d=e.getUint8(a);if(d===0)r++;else if(d===1){if(r===2||r===3){let l=a-r;if(o===-1?o=l:n===-1&&(n=l,t.push(new vi(new DataView(e.buffer.slice(o,n)))),o=l,n=-1),!(e.getUint8(a+1)===6)){s.data=e.buffer.slice(l);break}}r=0}else r=0}i==null||i(t.reverse())}catch(e){}return s}var ql=0,Jo=class Jo{constructor(i){this.core=i;c(this,"log");c(this,"_seiMessageList",[]);c(this,"_smallSeiMessageList",[]);c(this,"_subStreamSeiMessageList",[]);ql++,this.log=i.log.createChild({id:`${this.getAlias()}${ql}`}),this.log.info(`[sei] created id=${this.getAlias()}${ql}`),this.core=i,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:i,mediaType:e}){try{let t=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return Wl({frame:i,seiMessageList:t})}catch(t){this.log.warn(t)}return i}decode({frame:i,track:e}){return Jl({frame:i,onSEI:t=>{t.forEach(r=>{this.core.trtc.emit(M.SEI_MESSAGE,{seiPayloadType:r.seiPayloadType,data:r.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(i){switch(i){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:Ri?this.encode:Wl,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:Ri?this.decode:Jl,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:i,options:e}){var o;let t=[e.seiPayloadType,i],r=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(t):(this._seiMessageList.push(t),r&&this._smallSeiMessageList.push(t)),(o=this.core.room.scriptTransformWorker)==null||o.postMessage({type:"sei",data:t,isMain:!e.toSubStream,small:r})}getName(){return Jo.Name}getAlias(){return"sei"}getGroup(){return"sei"}};c(Jo,"autoStart",!0),c(Jo,"Name","SEI");var ja=Jo;function jl({frame:s,onDump:i}){return i==null||i(),s}function Xl({frame:s,onDump:i}){return i==null||i(),s}var Dm={"play() error: NotAllowedError:":{tips:s=>s.includes("main <video>")||s.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:s=>s.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
94
+ ${o.stack}`),!1}},i};var Gs=new WeakMap;function tg(i){let t=Gs.get(i);t&&(t.forEach(e=>clearTimeout(e)),Gs.delete(i))}function rg(i,t){return Ae((e,r)=>function(...o){let s=Gs.get(this);s||(s=new Map,Gs.set(this,s));let a=t(...o),d=s.get(a);if(!d||d<=0){e.apply(this,o);let h=setTimeout(()=>{var m;(m=Gs.get(this))==null||m.delete(a)},i);s.set(a,h)}else{clearTimeout(d);let h=window.setTimeout(()=>{var m;e.apply(this,o),(m=Gs.get(this))==null||m.delete(a)},i);s.set(a,h)}})}var ig="5.9.0-wasm.12";function Nt(...i){return Ae((t,e)=>function(...r){try{hu.call(this,i,r,e,this._name)}catch(o){return Promise.reject(o)}return t.apply(this,r)})}function Xp(...i){return Ae((t,e)=>function(...r){try{hu.call(this,i,r,e,this._name)}catch(o){throw o}return t.apply(this,r)})}function hu(i,t,e,r){if(it(i))for(let o=0;o<i.length;o++)pu.call(this,{rule:i[o],value:t[o],key:i[o].name,fnName:e,className:r});else pu.call(this,{rule:i,value:t[0],key:i.name,fnName:e,className:r})}function pu({rule:i,value:t,key:e,fnName:r,className:o}){function s(h){return{code:ae.INVALID_PARAMETER,extraCode:h,fnName:r,messageParams:{key:e,rule:i,value:t}}}if(L(t)){if(i.required)throw new oe(s(5001));if(L(i.defaultValue)){Fe(i.validate)&&i.validate.call(this,t,e,r,o,this);return}t=i.defaultValue}if(Array.isArray(i.type)){let h=!1;for(let m=0;m<i.type.length;m++)i.type[m]===null&&t===null&&(h=!0),Fe(i.type[m])&&t instanceof i.type[m]&&(h=!0),Se(i.type[m])&&ut(t)===i.type[m].toLowerCase()&&(h=!0);if(!h)throw new oe({code:ae.INVALID_PARAMETER,extraCode:5002,fnName:r,messageParams:{key:e,rule:{type:i.type.map(m=>ds(m)?Un(m):Se(m)?m:ut(m))},value:t}})}else if(!L(i.type)&&ut(t)!==i.type)throw new oe(s(5002));if(i.allowEmpty===!1){let h=$e(t)&&(t===0||Number.isNaN(t)),m=Se(t)&&t.trim()==="";if(h||m)throw new oe(s(5003))}if(i.notLessThanZero&&$e(t)&&t<0)throw new oe(s(5006));if(!L(i.min)&&$e(t)&&t<i.min)throw new oe(s(5007));if(!L(i.max)&&$e(t)&&t>i.max)throw new oe(s(5008));if(Se(i.instanceOf)){if(!t||t._name!==i.instanceOf)throw new oe(s(5004))}else if(Fe(i.instanceOf)&&!(t instanceof i.instanceOf))throw new oe(s(5004));if(Array.isArray(i.values)&&!i.values.includes(t))throw new oe(s(5005));let{properties:a}=i;Bt(a)&&rr(t)&&Object.keys(a).forEach(h=>{pu.call(this,{rule:a[h],value:t&&t[h],key:`${h}`,fnName:r,className:o})});let{arrayItem:d}=i;Bt(d)&&it(t)&&t.forEach((h,m)=>{pu.call(this,{rule:d,value:h,key:`${e}[${m}]`,fnName:r,className:o})}),Fe(i.validate)&&i.validate.call(this,t,e,r,o,this)}function qe(i={}){let{getRemoteId:t=()=>"",replaceArg:e,getKVReportKey:r,ignoreLog:o}=i;return Ae((s,a)=>function(...d){var I;function h(v,N,j){if(j&&j.includes(v))return"hided";if(e){let H=e(...d);if(d[H.argIndex]===N)return H.value}if(N===d||v in d)return N;try{return N instanceof HTMLElement?`id: ${N.id} type:${ut(N)}`:(JSON.stringify(N),N)}catch(H){return`type:${ut(N)}`}}let m=this._log||U;if(o!=null&&o(...d))return s.apply(this,d);d.length>0?m.info(`${a}() ${JSON.stringify(d,(v,N)=>h(v,N,["userSig","privateMapKey"]))}`):m.info(`${a}()`);let T=r?r(...d):Sd[a];try{let v=s.apply(this,d),N=ge();return Ni(v)?v.then(j=>(m.info(`${a}() success ${t.call(this,...d)}`),X.addSuccessEvent({key:T,cost:ge()-N}),j)).catch(j=>{var Te;j=oe.convertFrom.call(this,j,a,d.length===1?d[0]:d);let H=j.extraCode||j.code,z=(Te=j.message)!=null&&Te.includes(H)?"":` code:${H}`;throw m.error(`${a}() failed ${t.call(this,...d)} ${j}${z} params: ${JSON.stringify(d,h)}`),X.addFailedEvent({key:T,error:j}),j}):(X.addSuccessEvent({key:T}),v)}catch(v){v=oe.convertFrom.call(this,v,a);let N=v.extraCode||v.code,j=(I=v.message)!=null&&I.includes(N)?"":` code:${N}`;throw m.error(`${a}() failed ${v}${j} params: ${JSON.stringify(d,h)}`),X.addFailedEvent({key:T,error:v}),v}})}var fu=i=>Ae((t,e)=>function(r,o){return A(this,null,function*(){let s=this._plugins.get(r);if(!s)throw this._log.error(`plugin ${String(r)} is not found`),new oe({code:ae.OPERATION_ABORT,message:`plugin ${String(r)} is not found`,fnName:e});if(Fe(s.constructor.isSupported)&&!s.constructor.isSupported())throw this._log.error(`plugin ${String(r)} is not supported`),new oe({code:ae.ENV_NOT_SUPPORTED,message:`plugin ${String(r)} is not supported`,extraCode:5210,fnName:e});return hu.call(this,s.getValidateRule(i),[o],e,"TRTC"),t.call(this,s,o)})});var _u=0,Qp=class{constructor(t,e){l(this,"player");l(this,"publisher");l(this,"mixInput");this.mixInput=new Ps(e),t.url?(this.player=new Audio(t.url),this.player.crossOrigin="anonymous",this.publisher=new Audio(t.url),this.publisher.crossOrigin="anonymous",this.mixInput.replaceSource(this.publisher)):this.mixInput.replaceSource(t.track),this.mixInput.connect()}updateSettings(t){this.player&&(L(t.volume)||(this.volume=t.volume),L(t.loop)||(this.loop=t.loop),L(t.playbackRate)||(this.playbackRate=t.playbackRate))}updateListener(t){if(this.player){if(t.onDurationChange){let{onDurationChange:e}=t;this.player.ondurationchange=r=>{e(r.target.duration)}}if(t.onTimeUpdate){let e=t.onTimeUpdate,{player:r}=this;r.ontimeupdate=()=>{e(r.currentTime,r.duration)}}t.onEnded&&(this.player.onended=t.onEnded)}}reset(){this.seek(0),this.mixInput.connect()}seek(t){this.player&&(t<0&&t>this.player.duration||(this.player.currentTime=t,this.publisher.currentTime=t))}play(){var t,e;return(t=this.publisher)==null||t.play(),(e=this.player)==null?void 0:e.play()}pause(){var t,e;(t=this.player)==null||t.pause(),(e=this.publisher)==null||e.pause()}stop(){var t;(t=this.player)==null||t.pause(),this.mixInput.disconnect()}setOperation(t){t==="pause"&&this.pause(),t==="resume"&&(this.pause(),this.play()),t==="stop"&&(this.pause(),this.seek(0))}set volume(t){!this.player||!this.publisher||(this.player.volume=t,this.publisher.volume=t)}set loop(t){!this.player||!this.publisher||(this.player.loop=t,this.publisher.loop=t)}set playbackRate(t){!this.player||!this.publisher||(this.player.playbackRate=t,this.publisher.playbackRate=t)}};function js(i,t){if(t&&typeof t!="function")throw new oe({code:ae.INVALID_PARAMETER,message:`start audioMixer plugin: param ${i} should be a function.`})}var $r=class $r{constructor(t){this.core=t;l(this,"log");l(this,"mixedMusicMap",new Map);l(this,"cacheMusicMap",new Map);_u=_u+1,this.log=t.log.createChild({id:`${this.getAlias()}${_u}`}),this.log.info(`[audioMixer] created id=${this.getAlias()}${_u}`),this.core=t}getName(){return $r.Name}getAlias(){return"ax"}getGroup(t){return t==null?void 0:t.id}getValidateRule(t){switch(t){case"start":return $r.startValidateRule;case"update":return $r.updateValidateRule;case"stop":return $r.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e}=this.core;this.log.info(`add music source, id: ${t.id} url: ${t.url}, track: ${t.track}`);let{id:r,url:o}=t;if(this.mixedMusicMap.has(r))return;let s=this.cacheMusicMap.get(r);s?t.url?s.reset():(s.mixInput.replaceSource(t.track),s.mixInput.connect()):(s=new Qp(t,e.audioManager),this.cacheMusicMap.set(r,s)),s.updateListener(t),s.updateSettings(t),yield s.play(),this.mixedMusicMap.set(r,s),this.log.info(`start mix audio track ${r} success.`),X.addEnum({key:502700,value:3}),this.kvUpload(t)})}update(t){return A(this,null,function*(){let{id:e,operation:r,seekFrom:o,playbackRate:s}=t;this.log.info(`update music source, ${JSON.stringify(t)}`);let a=this.mixedMusicMap.get(e);if(!a){this.log.warn(`update music source failed, music id: ${e} not found.`);return}a.updateSettings(t),a.updateListener(t),L(r)||a.setOperation(r),L(o)||a.seek(o),this.kvUpload(t)})}stop(e){return A(this,arguments,function*({id:t}){var r;this.mixedMusicMap.has(t)&&(this.log.info(`remove music source, music id: ${t}`),(r=this.mixedMusicMap.get(t))==null||r.stop(),this.mixedMusicMap.delete(t)),t==="*"&&this.destroyAllMusic()})}kvUpload(t){let{track:e,loop:r,volume:o,playbackRate:s,operation:a,seekFrom:d,onTimeUpdate:h,onDurationChange:m,onEnded:T}=t;e&&X.addCount({key:502711}),r&&X.addCount({key:502703}),o&&X.addCount({key:502704}),s&&X.addCount({key:502705}),a&&X.addCount({key:502706}),d&&X.addCount({key:502707}),typeof h!="function"&&X.addCount({key:502709}),typeof T!="function"&&X.addCount({key:502710}),typeof m!="function"&&X.addCount({key:502708})}destroyAllMusic(){this.log.info("destroy all music source."),this.mixedMusicMap.forEach((t,e)=>this.stop({id:e}))}destroyAllCache(){this.log.info("destroy all music cache."),this.cacheMusicMap.clear()}destroy(){this.log.info("destroy audio mixer plugin."),this.destroyAllMusic(),this.destroyAllCache()}};l($r,"startValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},url:{type:"string",required:!1},track:{required:!1},loop:{type:"boolean"},volume:{type:"number"}},validate(t,e,r){if(t.url&&t.url!=="*"){let o=t.url.split("?")[0],s=["mp3","ogg","wav","flac"],a=o.split(".").pop(),d=s.indexOf(a)>=0,h=o.startsWith("blob"),m=o.startsWith("data");if(!(d||h||m))throw new oe({code:ae.INVALID_PARAMETER,message:"start audioMixer plugin: music url is invalid, please check your file format.",fnName:r})}if(!t.url&&!t.track)throw new oe({code:ae.INVALID_PARAMETER,message:"start audioMixer plugin: param url or track is required.",fnName:r});js("onTimeUpdate",t.onTimeUpdate),js("onEnded",t.onEnded),js("onDurationChange",t.onDurationChange)}}),l($r,"updateValidateRule",{name:"options",required:!0,type:"object",properties:{id:{type:"string",required:!0},loop:{type:"boolean"},volume:{type:"number"},seekFrom:{type:"number"},operation:{type:"string",values:["pause","resume","stop"]}},validate(t,e,r){js("onTimeUpdate",t.onTimeUpdate),js("onEnded",t.onEnded),js("onDurationChange",t.onDurationChange)}}),l($r,"stopValidateRule",{name:"options",type:"object",required:!0,properties:{id:{type:"string",required:!0}}}),l($r,"Name","AudioMixer");var gu=$r;var Eu=0,Yp,Si=class Si{constructor(t){this.core=t;l(this,"log");l(this,"audioContext",lt("denoiser"));l(this,"workletNode");Eu=Eu+1,this.log=t.log.createChild({id:`${this.getAlias()}${Eu}`}),this.log.info(`[audioDenoiser] created id=${this.getAlias()}${Eu}`),t.assetsPath&&this.preload(`${t.assetsPath}/denoiser-wasm.js`)}static startValidateRule(t){return{name:"options",required:!0,type:"object",properties:{sdkAppId:{type:"number",required:!0},userId:{type:"string",required:!0},userSig:{type:"string",required:!0}},validate(e,r,o,s){if(!t.room.audioManager.hasAudioTrack)throw new oe({code:ae.INVALID_OPERATION,extraCode:5106,fnName:o})}}}preload(t){return Yp||(Yp=this.doPreload(t)),Yp}doPreload(t){return A(this,null,function*(){let e=yield this.core.fileDownloader.download(t,{type:"blob"}),r=URL.createObjectURL(e);try{yield Ro(this.audioContext,r)}finally{URL.revokeObjectURL(r)}})}getName(){return Si.Name}getAlias(){return"ad"}getGroup(){return`AIDenoiser_${Date.now()}`}getValidateRule(t){switch(t){case"start":return Si.startValidateRule(this.core);case"update":return Si.updateValidateRule;case"stop":return Si.stopValidateRule}}start(t){return A(this,null,function*(){let{room:e}=this.core;if(yield this.preload(`${t.assetsPath}/denoiser-wasm.js`),!this.workletNode){let r=String(Date.now()).slice(0,-3),{auth:o,sign:s,status:a,message:d}=yield PS(pe(J({},t),{timestamp:r}));if(!o)throw this.log.info(`RTCAIDenoiser: ${t.userId} auth result: ${o}. Message: ${d}`),new oe({code:ae.INVALID_PARAMETER,message:d});this.workletNode=new AudioWorkletNode(this.audioContext,"trtc-denoiser-processor",{numberOfInputs:1,numberOfOutputs:1}),this.workletNode.port.postMessage({type:"init",data:{sdkAppId:String(t.sdkAppId),userId:t.userId,timestamp:r,sign:s,status:a}}),this.workletNode.port.onmessage=h=>{let{data:m}=h;m.type==="cost"&&this.log.debug(`[RTCAIDenoiser] ${m.value}`)}}this.workletNode.port.postMessage({type:"enable"}),e.audioManager.addDenoiser(this.workletNode),e.sendAbilityStatus({ai_denoise:1})})}update(){return A(this,null,function*(){})}stop(){return A(this,null,function*(){if(!this.workletNode)return;let{room:t}=this.core;this.workletNode.port.postMessage({type:"disable"}),yield t.audioManager.removeDenoiser(this.workletNode)})}destroy(){this.workletNode&&(this.workletNode.port.onmessage=null)}};l(Si,"updateValidateRule",{type:"object"}),l(Si,"stopValidateRule",{type:"object"}),l(Si,"Name","AIDenoiser");var Tu=Si;function OS(i,t=D.MAIN){return`https://${Ar[t]||Pa(i,t)}/api/v1/audioAiAuth`}function PS(o){return A(this,arguments,function*({sdkAppId:i,userId:t,userSig:e,timestamp:r}){let a=`${OS(i)}?sdkAppId=${i}&userId=${t}&userSig=${e}&timestamp=${r}`,d=yield fetch(a),{data:{errCode:h,errMsg:m,sign:T,status:I}}=yield d.json();if(I==="1")return{auth:!0,sign:T,status:I,message:m};let v="Init RTCAIDenoiser failed.",N="";switch(h){case 1:N="Please check your params.";break;case 2:N="You need to buy packages. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 3:N="Server is invalid. Please contact our engineer. ";break;case 4:N="Your packages is not active. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 5:N="Your packages is expired. Refer to: https://cloud.tencent.com/document/product/647/44247";break;case 6:N="Your version is not supported.";break}return{auth:!1,status:I,message:m?`${v} Reason: ${m}. ${N}`:`${v}, ${N}`}})}var og=Ci(ki(),1);var Zp=class extends og.EventEmitter{constructor(){super();l(this,"observer");l(this,"state","nominal");this.onPressureChange=this.onPressureChange.bind(this)}get stateNum(){switch(this.state){case"nominal":return 1;case"fair":return 2;case"serious":return 3;case"critical":return 4}}start(){return A(this,null,function*(){if(!this.observer)try{"PressureObserver"in window&&!pt&&(this.observer=new PressureObserver(this.onPressureChange),yield this.observer.observe("cpu",{sampleInterval:2e3}))}catch(e){Ve.uploadEvent({log:"stat-pressure-detector-start-failed",error:e})}})}onPressureChange(e){let r=this.stateNum,o=e[e.length-1];this.state=o.state,(this.stateNum>3||r>3)&&U.info(`${o.source}: ${o.state}`),this.emit("state-changed",{type:o.source,state:this.state})}destroy(){var e;try{(e=this.observer)==null||e.disconnect(),this.observer=null}catch(r){Ve.uploadEvent({log:"stat-pressure-detector-destroy-failed",error:r})}}},xS=new Zp,Kp=xS;function kS([i,t]){let e=t.byteLength,r=parseInt(String(e/255),10),o=e%255,s=[];s.push(0,0,0,1,6,i);for(let d=0;d<r;d++)s.push(255);s.push(o);let a=new DataView(t);return s.push(...new Uint8Array(a.buffer)),s.push(128),new Do(new DataView(new Uint8Array(s).buffer),!0)}function LS(i){return i.type==="empty"||i.data.byteLength===0}function US(i){return i.getInt32(0)===1&&i.getInt8(4)===6}function VS(i){let t=0,e=0,r=new DataView(i);for(let o=0;o<i.byteLength;o++)switch(r.getUint8(o)){case 0:t++;break;case 1:(t===2||t===3)&&e++,t=0;break;default:t=0;break}return e}function eh({frame:i,seiMessageList:t}){if(!t||t.length===0||i.data.byteLength===0)return i;let r=9-VS(i.data);if(r<=0)return i;let o=t.splice(0,r).reverse().map(kS),s=o.reduce((T,I)=>T+I.dataView.byteLength,0),a=new ArrayBuffer(s+i.data.byteLength),d=new DataView(a),h=new DataView(i.data),m=0;for(let T=0;T<o.length;T++)for(let I=0;I<o[T].dataView.byteLength;I++)d.setInt8(m++,o[T].dataView.getInt8(I));for(let T=0;T<i.data.byteLength;T++)d.setInt8(m++,h.getInt8(T));return i.data=a,i}function th({frame:i,onSEI:t}){try{let e=new DataView(i.data);if(LS(i)||!US(e))return i;let r=[],o=0,s=-1,a=-1;for(let d=0;d<i.data.byteLength;d++){let h=e.getUint8(d);if(h===0)o++;else if(h===1){if(o===2||o===3){let m=d-o;if(s===-1?s=m:a===-1&&(a=m,r.push(new Do(new DataView(e.buffer.slice(s,a)))),s=m,a=-1),!(e.getUint8(d+1)===6)){i.data=e.buffer.slice(m);break}}o=0}else o=0}t==null||t(r.reverse())}catch(e){}return i}var rh=0,xa=class xa{constructor(t){this.core=t;l(this,"log");l(this,"_seiMessageList",[]);l(this,"_smallSeiMessageList",[]);l(this,"_subStreamSeiMessageList",[]);rh++,this.log=t.log.createChild({id:`${this.getAlias()}${rh}`}),this.log.info(`[sei] created id=${this.getAlias()}${rh}`),this.core=t,this.encode=this.encode.bind(this),this.decode=this.decode.bind(this)}encode({frame:t,mediaType:e}){try{let r=e===8?this._smallSeiMessageList:e===2?this._subStreamSeiMessageList:this._seiMessageList;return eh({frame:t,seiMessageList:r})}catch(r){this.log.warn(r)}return t}decode({frame:t,track:e}){return th({frame:t,onSEI:r=>{r.forEach(o=>{this.core.trtc.emit(K.SEI_MESSAGE,{seiPayloadType:o.seiPayloadType,data:o.seiPayload.buffer,userId:e.userId,streamType:e.mediaType===2?"sub":"main"})})}})}destroy(){this.log.debug("destory"),this.stop(),delete this.core}getValidateRule(t){switch(t){case"start":return{type:"object"};case"update":return{type:"object"};case"stop":return{type:"object"}}}start(){this.core.room.videoManager.addEncodeProcessor({processor:ma?this.encode:eh,type:2}),this.core.room.videoManager.addDecodeProcessor({processor:ma?this.decode:th,type:2})}stop(){this.core.room.videoManager.removeEncodeProcessor({type:2}),this.core.room.videoManager.removeDecodeProcessor({type:2})}update({buffer:t,options:e}){var s;let r=[e.seiPayloadType,t],o=!!e.small;e.toSubStream?this._subStreamSeiMessageList.push(r):(this._seiMessageList.push(r),o&&this._smallSeiMessageList.push(r)),(s=this.core.room.scriptTransformWorker)==null||s.postMessage({type:"sei",data:r,isMain:!e.toSubStream,small:o})}getName(){return xa.Name}getAlias(){return"sei"}getGroup(){return"sei"}};l(xa,"autoStart",!0),l(xa,"Name","SEI");var Iu=xa;function ih({frame:i,onDump:t}){return t==null||t(),i}function oh({frame:i,onDump:t}){return t==null||t(),i}var sg={"play() error: NotAllowedError:":{tips:i=>i.includes("main <video>")||i.includes("main <audio>")?"Remote stream auto play is restricted and playback fails":"Local stream playback failure, generally only occurs in Android WeChat devices, no need to handle",color:"red",class:"red"},"updateStream() try to recover local stream":{tips:"Device acquisition exception, automatic recovery is in progress"},"updateStream() recover local stream successfully":{tips:"Device acquisition exception, automatic recovery is successful"},"updateStream() failed to recover local stream":{tips:"Device acquisition exception, automatic recovery failed"},"main stream - video track is muted":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is muted":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is muted":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unable to provide media output":{tips:"Indicates that the received video data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - audio track is unable to provide media output":{tips:"Indicates that the received audio data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"auxiliary stream - video track is unable to provide media output":{tips:"Indicates that the received screen sharing data is not enough for playback. This is usually caused by network reasons. When enough data is received for playback, the state will change to unmuted."},"main stream - video track is unmuted":{tips:"Received enough playback video data"},"main stream - audio track is unmuted":{tips:"Received enough playback audio data"},"auxiliary stream - video track is unmuted":{tips:"Received enough playback screen sharing data"},"main stream - audio player track is ended":{tips:"Remote audio track stopped"},"main stream - video player track is ended":{tips:"Remote video track stopped"},"auxiliary stream - video player track is ended":{tips:"Received enough playback screen sharing data"},"stream - video track is muted":{tips:"Camera capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"stream - video track is unable to provide media output":{tips:"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked, and the customer needs to re-acquire. SDK v4.11.4+ will automatically resume acquisition without customer intervention",color:"orange"},"video track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"The camera acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"video player track is ended":{tips:"The camera acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"stream - audio track is muted":{tips:"Microphone capture is paused, usually due to the device being occupied by other applications or the browser media permission being revoked. The client needs to re-capture.",color:"orange"},"audio track is unable to provide media output":{tips:i=>i.includes("\u2193")?"The remote track is temporarily unable to decode data, which may be caused by network fluctuations":"Microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio track is unable to provide media output":{tips:"The microphone acquisition is paused, usually because the device is occupied by other applications or the browser media permissions are revoked. The SDK will automatically resume the acquisition.",color:"orange"},"stream - audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"audio player track is ended":{tips:"The microphone acquisition stops, usually because the device is unplugged. In this case, the SDK will automatically resume acquisition, and the access side does not need to handle it. It may also be caused by the device being occupied by other applications or the browser media permissions being reclaimed. It is recommended to remind the user to re-acquire on the page."},"is adding audio track to current published local stream":{tips:"add audio track",color:"orange"},"is removing audio track from current published local stream":{tips:"remove audio track",color:"orange"},"is removing video track from current published local stream":{tips:"remove video track",color:"orange"},"is adding video track to current published local stream":{tips:"add video track",color:"orange"},"is replacing audio track to current published local main stream":{tips:"replace audio track",color:"orange"},"is replacing video track to current published local main stream":{tips:"replace video track",color:"orange"},"downlink network quality change":{tips:"Downstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"uplink network quality change":{tips:"Upstream network quality change: 1: excellent, 2: good, 3: average, 4: poor, 5: extremely poor"},"localStream mute video":{tips:"mute upstream video stream",color:"orange"},"localStream unmute video":{tips:"unmute upstream video stream",color:"orange"},"localStream mute audio":{tips:"mute upstream audio stream",color:"orange"},"localStream unmute audio":{tips:"unmute upstream audio stream",color:"orange"},"black detected":{tips:"Detect black screen, which means fps = 0. It is usually caused by network, and the network will be recovered after a while. If the network is normal but has not been restored, it is an abnormal situation."},'main stream start to play with options: {"muted":true}':{tips:"Play the remote stream in silent mode. Generally, the remote stream does not need to be played in silent mode. You need to confirm whether the parameters passed in the client stream.play API call are correct.",color:"orange"},"main stream - audio player is starting playing":{tips:"Remote stream audio playback success",color:"#0dd90d",class:"success"},"main stream - video player is starting playing":{tips:"Remote stream video playback success",color:"#0dd90d",class:"success"},"video player is playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"audio player is playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"stream - video player is starting playing":{tips:"Local video playback success",color:"#0dd90d",class:"success"},"stream - audio player is starting playing":{tips:"Local audio playback success",color:"#0dd90d",class:"success"},"switch camera success":{tips:"Switch camera success",color:"#0dd90d",class:"success"},"switch microphone success":{tips:"Switch microphone success",color:"#0dd90d",class:"success"},gotStream:{tips:"Local stream capture success"},"local stream is published successfully":{tips:"Publish success",color:"#0dd90d",class:"success"},"encoderImplementation change to OpenH264":{tips:"Use software encoding"},"encoderImplementation change to ExternalEncoder":{tips:"Use hardware encoding"},"getUserMedia with constraints":{tips:"Start media (camera/microphone) capture"},"getDisplayMedia with constraints":{tips:"Start screen sharing capture"},"client-banned":{tips:"Kicked out of the room",color:"red",class:"red",textColor:"#fff"},user_timeout:{tips:"The backend is too long without receiving SDK heartbeat, which is usually caused by the JS thread being blocked for a long time. If the reproduction probability is high, the application browser Performance tool analyzes where the JS thread is blocked.",color:"red",class:"red",textColor:"#fff"},"schedule failed":{tips:"Signaling request failed, does not affect the normal room entry process, SDK will connect to the default signaling domain."},"updateStream() video flag is true, but no camera detected, set video to false":{tips:"When trying to resume camera acquisition, the camera acquisition is not resumed because it is detected that there is no camera.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to bandwidth":{tips:"bandwidth estimation is not enough to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"qualityLimitationReason change to cpu":{tips:"cpu load is too high to limit the quality of the encoding, which may cause the code rate, frame rate, and resolution to be lowered.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: hidden":{tips:"User page switched to backend, in mobile devices, this will cause the device to pause the capture, and it will be restored when the user switches backend to the frontend.",color:"orange",class:"orange",textColor:"#fff"},"visibility change: visible":{tips:"User page switched to frontend",color:"orange",class:"orange",textColor:"#fff"},"main stream - audio player is paused":{tips:`The remote stream audio playback is paused, which usually has two possibilities:
55
95
  1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
56
96
  2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},"main stream - video player is paused":{tips:`The remote stream video playback is paused, which usually has two possibilities:
57
97
  1. The business side passes in the div tag container for playing audio and video to be removed by the business side from the DOM.
58
- 2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(s=>{Dm[`${s}()`]={tips:`Call trtc.${s}`,color:"blue",class:"blue",textColor:"#fff"}});var kM=Object.keys(Dm);var nT=0,Xa,Ns=class Ns{constructor(i){this.core=i;c(this,"_core");c(this,"log");c(this,"dumpLocalVideoMap",{});c(this,"dumpRemoteVideoMap",{});c(this,"dialog");this._core=i,this.log=i.log.createChild({id:`${this.getAlias()}${++nT}`}),this.log.info("created")}getName(){return Ns.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(i){switch(i){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return f(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return f(this,null,function*(){try{if(Xa)yield Xa;else{let i=Date.now();Xa=this.loadScript(`https://web.sdk.qcloud.com/trtc/webrtc/assets/debug/debug-dialog@${Ce}.js`),yield Xa,this.log.info(`download debug dialog script cost: ${Date.now()-i}ms`)}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(i){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(i))}})}closeDebugDiaLog(){var i;(i=this.dialog)==null||i.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):jl,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):Xl,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:i,mediaType:e}){return jl({frame:i,onDump:()=>{if(!e)return;let t=e===2?"sub":"main",r=this.dumpLocalVideoMap[t];r&&(r.data.push(i.data),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}decodeVideo({frame:i,track:e}){return Xl({frame:i,onDump:()=>{if(!e)return;let t=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];t&&(t.data.push(i.data),t.duration>0&&Date.now()-t.startTimestamp>t.duration*1e3&&t.onDumpEnd())}})}loadScript(i){return new Promise((e,t)=>{this.log.info(`loading debug dialog from ${i}`);let r=document.createElement("script");r.type="text/javascript",r.onload=e,r.onerror=t,r.crossOrigin="anonymous",r.src=i,document.head.append?document.head.append(r):document.getElementsByTagName("head")[0].appendChild(r)})}};c(Ns,"Name","Debug"),c(Ns,"autoStart",!0),y([Ke({settings:{timeout:3e3,retries:3},onError(i,e,t){var r;(r=i==null?void 0:i.message)!=null&&r.includes("timeout")?e():t(i)}})],Ns.prototype,"loadScript",1);var Qa=Ns;var Om=s=>{switch(s){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},za=class{constructor(i,e,t){c(this,"trackDoneOB");c(this,"startOB");c(this,"stopOB");c(this,"inputFrameCount",0);c(this,"decodedFrameCount",0);c(this,"type","auto");c(this,"config");c(this,"decoder");c(this,"_decodeSink");let{kvStatManager:r,trtc:o}=i;this.config=t.config,this.trackDoneOB=Ie(e,Q.INIT),this.stopOB=rt(this.trackDoneOB),this.startOB=rt(),t.type==="auto"?this.type="webCodecs":this.type=t.type;let n=rt(),a=d=>{let l=this.pipe(e);return n.next("STARTING"),e.log.info(`decoder type: ${this.type}`),_e(l,Pe(this.stopOB),be(()=>{},m=>{e.log.error(m),r.addFailedEvent({key:Om(this.type),error:m}),d>4?this.startOB.error(m):this.startOB.next(d+1)})),_e(l,ki(1),Bo(vr))};_e(this.startOB,Nr(0),er(a),Pe(this.stopOB),be(()=>{e.player.setOutput(),n.next("STARTED")},d=>{n.next("FAILED")},()=>{r.addSuccessEvent({key:Om(this.type)}),r.addSuccessEvent({key:504702})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}pipe(i){return Mi()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var r;(r=this.decoder)==null||r.close()});let{type:t}=this;try{switch(t){case"webCodecs":this.decoder=new AudioDecoder({error:r=>{i.log.error(r),e.error(4)},output:r=>{this.decodedFrameCount++,e.next(r),i.player.write(r)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(r){i.log.error(r),e.error(t==="webCodecs"?2:6)}}))}decodeFrame(i){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:i.data,timestamp:i.timestamp,type:"key"}))}},aT={type:"object"},qo=class qo{constructor(i){this.core=i;c(this,"log");c(this,"contextMap",new Map);c(this,"decodeProcessorMap",new WeakMap);this.log=i.log.createChild({id:`${this.getAlias()}`})}getAlias(){return qo.Name}getGroup(i){return i.track.userId+i.track.streamType}getName(){return qo.Name}getValidateRule(i){return aT}start(i){let{track:e}=i;this.decodeProcessorMap.set(e,this.decode(i)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:t,track:r})=>this.decodeProcessorMap.has(r)?this.decodeProcessorMap.get(r)({frame:t,track:r}):t,type:3})}decode(i){return({frame:e,track:t})=>{if(t!==i.track)return e;if(this.contextMap.has(t))return this.contextMap.get(t).decodeFrame(e);let r=new za(this.core,t,i);return _e(r.trackDoneOB,ki(1),be(()=>{this.core.clearStarted(this,this.getGroup(i)),this.stop({track:t})})),this.contextMap.set(t,r),r.decodeFrame(e)}}stop({track:i}){let e=this.contextMap.get(i);e&&(e.close("stop"),this.contextMap.delete(i),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(i){let e=this.contextMap.get(i.track);if(e){if(i.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(i.track,new za(this.core,i.track,i))}}};c(qo,"Name","TRTCAudioDecoder");var jo=qo;var Mm=0,Xo=new Set,Me=null;fc(Nm);cs.checkStorage();Cd();var cT={RtcError:w,ErrorCode:V,ErrorCodeDictionary:Lt},H=class H extends km.EventEmitter{constructor(e,t){super();c(this,"_room");c(this,"_eventListened",new Set);c(this,"_localVideoTrack",null);c(this,"_localAudioTrack",null);c(this,"_localScreenTrack",null);c(this,"_localScreenAudioTrack",null);c(this,"_localVideoConfig",null);c(this,"_localScreenConfig",null);c(this,"_localAudioConfig",null);c(this,"_remoteVideoConfigMap",new Map);c(this,"_remoteAudioConfigMap",new Map);c(this,"_remoteAudioVolumeMap",new Map);c(this,"_remoteAudioMuteMap",new Map);c(this,"_mediaTrackMap",new WeakMap);c(this,"_log",C.createLogger({id:`t${++Mm}`}));c(this,"_plugins",new Map);c(this,"_networkQuality",null);c(this,"_speakerId");c(this,"_getPCMAbortCtrl");this._room=new e(v({logger:this._log,frameWorkType:H.frameWorkType},t)),this._room.videoDecodeFallbackType=t.videoDecodeFallback,this._log.debug(`TRTC.create() ${JSON.stringify(t,(r,o)=>r==="plugins"?o.map(n=>n.Name):o)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(r){return this._room.audioManager.dump(r)}}}),t.plugins&&t.plugins.forEach(r=>{this._use(r,t.assetsPath)}),this._use(Wa,t.assetsPath),this._use(qa,t.assetsPath),this._use(jo,t.assetsPath||cn),this._use(Qa),t.enableSEI&&Co&&this._use(ja),this._room.on("audio-volume",r=>{!r.find(o=>o.userId==="")&&this._localAudioTrack&&r.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),this.emit(M.AUDIO_VOLUME,{result:r.sort((o,n)=>n.volume-o.volume)})}),this._room.videoManager.on("error",r=>{this._log.error(new w({code:V.OPERATION_FAILED,extraCode:5504,message:r.message,originError:r}))}),this._listenEvents(),this._initActiveSpeaker(),Rm(this,"trtc")}static create(e){}static _create(e,t){hm();let r=new H(e,t||{});return Xo.add(r),r}get room(){return this._room}_listenEvents(){Ue(this,this._room).add("peer-join",e=>{let{userId:t}=e;this.emit(M.REMOTE_USER_ENTER,{userId:t})}).add("peer-leave",e=>{this.emit(M.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().then(()=>{this.emit(M.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().then(()=>{this.emit(M.ERROR,w.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(M.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let t=k(v({},e),{uplinkRTT:Math.min(e.uplinkRTT,js),downlinkRTT:Math.min(e.downlinkRTT,js)});this.emit(M.NETWORK_QUALITY,t)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Ue(r,r).add("player-state-changed",o=>{let n=k(v({},o),{userId:e.userId});r.kind===h.VIDEO&&(n.streamType=sr(r.streamType)),this.emit(r.kind===h.AUDIO?M.AUDIO_PLAY_STATE_CHANGED:M.VIDEO_PLAY_STATE_CHANGED,n)}).add("error",o=>{o.getCode()===S.PLAY_NOT_ALLOWED&&this.emit(M.AUTOPLAY_FAILED,{userId:r.userId,resume:()=>r.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(r=>{Se(r)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:t})=>{let{userId:r}=t,o=e.audioAvailable,n=e.videoAvailable,{audioAvailable:a,videoAvailable:d}=t;a||this._remoteAudioConfigMap.delete(r),d||this._remoteVideoConfigMap.delete(`${r}_main`),t.hasAuxiliary||this._remoteVideoConfigMap.delete(`${r}_sub`),n!==d&&(d?this._onVideoAvailable({userId:r,streamType:"main"}):this._onVideoUnavailable({userId:r,streamType:"main"}),this.emit(d?M.REMOTE_VIDEO_AVAILABLE:M.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"main"})),o!==a&&(a?this._onAudioAvailable({userId:r}):this._onAudioUnavailable({userId:r,muteState:t}),this.emit(a?M.REMOTE_AUDIO_AVAILABLE:M.REMOTE_AUDIO_UNAVAILABLE,{userId:r})),e.hasAuxiliary!==t.hasAuxiliary&&(t.hasAuxiliary?this._onVideoAvailable({userId:r,streamType:"sub"}):this._onVideoUnavailable({userId:r,streamType:"sub"}),this.emit(t.hasAuxiliary?M.REMOTE_VIDEO_AVAILABLE:M.REMOTE_VIDEO_UNAVAILABLE,{userId:r,streamType:"sub"}))}).add("sei-message",e=>{this.emit(M.SEI_MESSAGE,k(v({},e),{streamType:sr(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(M.ERROR,new w({code:V.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var o,n,a,d,l,m,u;let t={2:"big",3:"small",7:"sub"},r={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((o=e.msg_down_stream_info[0])==null?void 0:o.msg_network_status.uint32_rtt)||((n=this._networkQuality)==null?void 0:n.uplinkRTT)||((a=this._networkQuality)==null?void 0:a.downlinkRTT)||0,js),upLoss:((d=this._networkQuality)==null?void 0:d.uplinkLoss)||0,downLoss:((l=this._networkQuality)==null?void 0:l.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((m=e.msg_up_stream_info.msg_audio_status)==null?void 0:m.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((u=e.msg_up_stream_info.msg_audio_status)==null?void 0:u.uint32_audio_level)||0)/mt},video:e.msg_up_stream_info.msg_video_status.filter(p=>t[p.uint32_video_stream_type]).map(p=>({bitrate:(p.uint32_video_codec_bitrate||0)/1e3,width:p.uint32_video_width,height:p.uint32_video_height,frameRate:p.uint32_video_enc_fps,videoType:t[p.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(p=>({userId:p.msg_user_info.str_identifier,audio:{bitrate:(p.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(p.msg_audio_status.uint32_audio_level||0)/mt},video:p.msg_video_status.map(_=>({bitrate:(_.uint32_video_codec_bitrate||0)/1e3,width:_.uint32_video_width,height:_.uint32_video_height,frameRate:_.uint32_video_dec_fps,videoType:t[_.uint32_video_stream_type]}))}))};this.emit(M.STATISTICS,r)}).add("custom-message",e=>{this.emit(M.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(M.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(M.FIRST_VIDEO_FRAME,k(v({},e),{streamType:sr(e.streamType)}))}),Ue(this,ye).add("audioInputAdded",e=>{this.emit(M.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(M.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(M.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(M.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>f(this,null,function*(){if(this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Me&&Me.deviceId===qs){let t=(yield Ki()).find(r=>r.deviceId===qs);t&&Me.groupId!==t.groupId&&(Me=t,this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}})).add("audioOutputRemoved",e=>f(this,null,function*(){this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let t=(yield Ki())[0];if(!t||!Me||Me.groupId===t.groupId)return;let r=Me.deviceId===e.deviceId,o=Me.deviceId===qs&&Me.deviceId===t.deviceId;(r||o)&&(Me=t,this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:t}))}))}use(e){let t,r;"plugin"in e?(t=e.plugin,r=e.assetsPath):t=e,this._use(t,r||cn)}_use(e,t){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let o=new e(Cm.call(this,{TRTC:H,room:this._room,errorModule:cT,assetsPath:t}));this._plugins.set(e.Name,o),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return f(this,null,function*(){var d,l;let{scene:t="rtc",enableAutoPlayDialog:r=!0,autoReceiveAudio:o=!0,autoReceiveVideo:n=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!K(e.proxy)&&e.proxy.turnServer&&((l=(d=this._room).setTurnServer)==null||l.call(d,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=r,this._room.autoReceiveAudio=o,this._room.autoReceiveVideo=n,he(e.preferHW)&&(this._room.preferHW=e.preferHW);let a={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(a,t,H.frameWorkType),this._checkTrackToPublish(),Bl.start()})}exitRoom(){return f(this,null,function*(){return yield this._exitRoom()})}switchRole(e,t){return f(this,null,function*(){t!=null&&t.privateMapKey&&(this._room.privateMapKey=t.privateMapKey),t!=null&&t.latencyLevel&&(this._room.latencyLevel=t.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){Se(this),this.removeAllListeners(),this._room.destroy(),Xo.delete(this),Xo.size===0&&Bl.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var t;return(t=e.destroy)==null?void 0:t.call(e)}),this._plugins.clear(),E.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return f(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:t=!0,mute:r,option:o}=e,n=new _t(this._room.audioManager),a={},d={muted:!0};o&&(g(o.microphoneId)?g(o.audioTrack)||(a.customSource=o.audioTrack):a.deviceId=o.microphoneId,o&&Y(o.captureVolume)&&n.setCaptureVolume(o.captureVolume),g(o.profile)||(K(o.profile)?un[o.profile]&&n.setProfile(un[o.profile]):n.setProfile(o.profile)),Y(o.earMonitorVolume)&&(d.muted=!(o.earMonitorVolume>0),d.volume=o.earMonitorVolume),g(o.echoCancellation)||(n.profile.echoCancellation=o.echoCancellation),g(o.noiseSuppression)||(n.profile.noiseSuppression=o.noiseSuppression),g(o.autoGainControl)||(n.profile.autoGainControl=o.autoGainControl)),n.on("5",l=>{this.emit(M.ERROR,new w({code:V.DEVICE_ERROR,extraCode:5309,messageParams:{error:l}}))}),n.on("2",l=>{this.emit(M.DEVICE_CHANGED,{type:"microphone",action:"active",device:l})}),n.on("4",l=>{let m;l.error&&(m=w.convertFrom(l.error)),this.emit(M.PUBLISH_STATE_CHANGED,k(v({},l),{error:m}))}),this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId),yield n.capture(a),g(r)||n.setMute(r),Ue(n,n).add("player-state-changed",l=>{this.emit(M.AUDIO_PLAY_STATE_CHANGED,k(v({},l),{userId:""}))}),this.listeners(M.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(l=>{this.emit(H.EVENT.AUDIO_FRAME,{data:l})})),this._getPCMAbortCtrl&&n.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(l=>{this.emit(H.EVENT.AUDIO_FRAME,{data:l})}))}),t&&this._room.isJoined&&this._room.publish(n).catch(()=>{}),this._localAudioTrack=n,this._localAudioConfig=k(v({},e),{publish:t}),yield this._updateAudioPlayOption({playOption:d,track:n})})}updateLocalAudio(e){return f(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:t,mute:r,option:o}=e,n={};o&&(o.microphoneId?yield this._localAudioTrack.switchDevice(o.microphoneId):g(o.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(o.audioTrack)),g(o.captureVolume)||this._localAudioTrack.setCaptureVolume(o.captureVolume),g(o.earMonitorVolume)||(n.muted=!(o.earMonitorVolume>0),n.volume=o.earMonitorVolume),yield this._localAudioTrack.update3A(o)),this._room.isJoined&&!g(t)&&(t&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!t&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),g(r)||this._localAudioTrack.setMute(r),yield this._updateAudioPlayOption({playOption:n,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Ht(this._localAudioConfig,e)})}stopLocalAudio(){return f(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),Se(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return f(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:t,publish:r=!0,mute:o,option:n}=e,a=new Ve(this._room.videoManager),d={},l={};n&&(n.cameraId?d.deviceId=n.cameraId:g(n.useFrontCamera)?g(n.videoTrack)||(d.customSource=n.videoTrack):d.facingMode=n.useFrontCamera?h.FACING_MODE_USER:h.FACING_MODE_ENVIRONMENT,n.qosPreference&&(d.contentHint=Go(n.qosPreference)),g(n.profile)||(K(n.profile)?lt[n.profile]&&a.setProfile(lt[n.profile]):a.setProfile(n.profile)),g(n.fillMode)||(l.objectFit=n.fillMode),g(n.mirror)||(l.mirror=n.mirror),g(n.small)||(So()?K(n.small)?a.small=lt[n.small]:n.small===!0?a.small=lt["120p"]:a.small=n.small:this._log.warn("small stream is not supported"))),a.once("first-video-frame",m=>{this.emit(M.FIRST_VIDEO_FRAME,k(v({},m),{streamType:sr(m.streamType)}))}),a.on("5",m=>{this.emit(M.ERROR,new w({code:V.DEVICE_ERROR,extraCode:5308,messageParams:{error:m}}))}),a.on("2",m=>{this.emit(M.DEVICE_CHANGED,{type:"camera",action:"active",device:m})}),a.on("4",m=>{let u;m.error&&(u=w.convertFrom(m.error)),this.emit(M.PUBLISH_STATE_CHANGED,k(v({},m),{error:u}))}),this._listenOutputTrackChanged(a),yield a.capture(d),g(o)||(yield a.setMute(o)),Ue(a,a).add("player-state-changed",m=>{this.emit(M.VIDEO_PLAY_STATE_CHANGED,k(v({},m),{userId:"",streamType:"main"}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localVideoTrack=a,this._localVideoConfig=k(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:a})})}updateLocalVideo(e){return f(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:t,publish:r,mute:o,option:n}=e,a={};if(n)if(g(n.profile)||(K(n.profile)?lt[n.profile]&&this._localVideoTrack.setProfile(lt[n.profile]):this._localVideoTrack.setProfile(n.profile),(!n.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(n.cameraId))&&g(n.useFrontCamera)&&this._localVideoTrack.applyProfile()),n.cameraId?yield this._localVideoTrack.switchDevice(n.cameraId):g(n.useFrontCamera)?g(n.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(n.videoTrack)):yield this._localVideoTrack.switchDevice(n.useFrontCamera?h.FACING_MODE_USER:h.FACING_MODE_ENVIRONMENT),g(n.fillMode)||(a.objectFit=n.fillMode),g(n.mirror)||(a.mirror=n.mirror),n.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Go(n.qosPreference)),n.small){let d=!this._localVideoTrack.small;So()?(n.small===!0?this._localVideoTrack.small=lt["120p"]:K(n.small)?this._localVideoTrack.small=lt[n.small]:this._localVideoTrack.small=n.small,this._room.videoManager.update(),d&&this._room.enableSmall(!0)):this._log.warn("small stream is not supported")}else n.small===!1&&this._localVideoTrack.small&&(delete this._localVideoTrack.small,this._room.videoManager.update(),this._room.enableSmall(!1));this._room.isJoined&&!g(r)&&(r&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!r&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),g(o)||(yield this._localVideoTrack.setMute(o)),yield this._updateVideoPlayOption({view:t,playOption:a,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Ht(this._localVideoConfig,e)})}stopLocalVideo(){return f(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),Se(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return f(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:t=null,publish:r=!0,option:o}=e,n=new it(this._room.videoManager);n.on("4",u=>{let p;u.error&&(p=w.convertFrom(u.error)),this.emit(M.PUBLISH_STATE_CHANGED,k(v({},u),{error:p}))}),n.once("first-video-frame",u=>{this.emit(M.FIRST_VIDEO_FRAME,k(v({},u),{streamType:sr(u.streamType)}))}),this._listenOutputTrackChanged(n),e.streamType==="main"&&(n.mediaType=4);let a=null,d={},l={};o&&(g(o.profile)||(K(o.profile)?hn[o.profile]&&n.setProfile(hn[o.profile]):n.setProfile(o.profile)),o.systemAudio&&(d.systemAudio=!0,d.echoCancellation=o.echoCancellation,d.noiseSuppression=o.noiseSuppression,d.autoGainControl=o.autoGainControl),g(o.fillMode)||(l.objectFit=o.fillMode),o.videoTrack&&(d.videoTrack=o.videoTrack),o.audioTrack&&(d.audioTrack=o.audioTrack),o.captureElement&&(d.captureElement=o.captureElement),o.preferDisplaySurface&&(d.preferDisplaySurface=o.preferDisplaySurface),o.qosPreference&&(d.contentHint=Go(o.qosPreference)));let m=yield n.capture(d);if(n.mediaTrack.addEventListener(h.ENDED,()=>{this._stopScreenShare(),this.emit(M.SCREEN_SHARE_STOPPED)}),m.getAudioTracks()[0]&&(a=new ti(this._room.audioManager),yield a.setInputMediaStreamTrack(m.getAudioTracks()[0]),this._speakerId&&a.setAudioOutput(this._speakerId)),Ue(n,n).add("player-state-changed",u=>{this.emit(M.VIDEO_PLAY_STATE_CHANGED,k(v({},u),{userId:"",streamType:"sub"}))}),r&&this._room.isJoined){let u=[n];a&&u.push(a),this._room.publish(...u).catch(()=>{})}this._localScreenTrack=n,this._localScreenAudioTrack=a,this._localScreenConfig=k(v({},e),{view:t,publish:r}),yield this._updateVideoPlayOption({view:t,playOption:l,track:n})})}updateScreenShare(e){return f(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:t,publish:r,option:o}=e,n={};if(o&&(g(o.fillMode)||(n.objectFit=o.fillMode),o.qosPreference)){let a=Go(o.qosPreference);this._localScreenTrack.setContentHint(a)}this._room.isJoined&&!g(r)&&(r&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!r&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:t,playOption:n,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Ht(this._localScreenConfig,e)})}stopScreenShare(){return f(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return f(this,null,function*(){let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`;if(this._remoteVideoConfigMap.has(a)){this._log.warn(`remote video has already started. userId:${r}, streamType:${o}`);return}let d=this._room.remotePublishedUserMap.get(r);if(!d)return;let l={},m=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack;this._listenOutputTrackChanged(m),n&&(g(n.fillMode)||(l.objectFit=n.fillMode),g(n.mirror)||(l.mirror=n.mirror),l.canvasRender=n.canvasRender,o==="main"&&!g(n.small)&&(!d.remoteVideoTrack.isSubscribing&&!d.remoteVideoTrack.isSubscribed&&d.remoteVideoTrack.setMediaType(n.small?8:4),this._room.changeType(n.small,m.user))),yield this._room.subscribe(m),yield this._enableVideoDecodeFallback(m,o),yield this._updateVideoPlayOption({view:t,playOption:l,track:m}),this._emitTrackEvent(m),this._remoteVideoConfigMap.set(a,{config:e}),n&&!g(n.receiveWhenViewVisible)&&this._observeView({remoteTrack:m,view:t,receiveWhenViewVisible:n.receiveWhenViewVisible,viewRoot:n==null?void 0:n.viewRoot})})}updateRemoteVideo(e){return f(this,null,function*(){var D,G;let{view:t,userId:r,streamType:o,option:n}=e,a=`${r}_${o}`,d=this._remoteVideoConfigMap.get(a);if(!d||!this._room.remotePublishedUserMap.has(r))return;let l={};n&&(g(n.fillMode)||(l.objectFit=n.fillMode),g(n.mirror)||(l.mirror=n.mirror));let m=null,u=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(u!=null&&u.muteState.hasVideo)&&(m=u.remoteVideoTrack),o==="sub"&&(u!=null&&u.muteState.hasAuxiliary)&&(m=u.remoteAuxiliaryTrack),!m)return;let{config:p}=d;o==="main"&&n&&!g(n.small)&&this._room.changeType(n.small,m.user),yield this._updateVideoPlayOption({view:t,playOption:l,track:m,prevConfig:p}),Ht(p,e);let _=g(n==null?void 0:n.receiveWhenViewVisible)?(D=p.option)==null?void 0:D.receiveWhenViewVisible:n.receiveWhenViewVisible,I=g(t)?p.view:t,R=g(n==null?void 0:n.viewRoot)?(G=p.option)==null?void 0:G.viewRoot:n.viewRoot;this._observeView({remoteTrack:m,view:I,receiveWhenViewVisible:_,viewRoot:R})})}stopRemoteVideo(e){return f(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,t=!0){return f(this,null,function*(){let r=[],o=this._room.remotePublishedUserMap.get(e.userId);if(o){let{muteState:a,remoteVideoTrack:d,remoteAuxiliaryTrack:l}=o;e.streamType==="main"&&(d.stop(),a.hasVideo&&r.push(d)),e.streamType==="sub"&&(l.stop(),a.hasAuxiliary&&r.push(l))}for(let a of r)t&&(yield this._room.unsubscribe(a),this._mediaTrackMap.delete(a.outMediaTrack));let n=this._remoteVideoConfigMap.get(`${e.userId}_${e.streamType}`);n&&n.observer&&n.observer.disconnect(),this._remoteVideoConfigMap.delete(`${e.userId}_${e.streamType}`)})}muteRemoteAudio(e,t){return f(this,null,function*(){this._remoteAudioMuteMap.set(e,t);try{if(e==="*")if(t)yield this._stopRemoteAudio({userId:e});else{let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)o.muteState.hasAudio&&!this._remoteAudioConfigMap.has(o.userId)&&(yield this._startRemoteAudio({userId:o.userId}))}else t?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(r){throw this._remoteAudioMuteMap.delete(e),r}})}setRemoteAudioVolume(e,t){if(e==="*"){let r=[...this._room.remotePublishedUserMap.values()];for(let o of r)this._remoteAudioVolumeMap.set(o.userId,t),o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:o.remoteAudioTrack})}else if(e){let r=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,t),r&&r.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:t},track:r.remoteAudioTrack})}}startPlugin(e,t){return f(this,null,function*(){return e.start(t)})}updatePlugin(e,t){return f(this,null,function*(){return e.update(t)})}stopPlugin(e,t){return f(this,null,function*(){return e.stop(t)})}enableAudioVolumeEvaluation(e=2e3,t=!1){this._room.enableAudioVolumeEvaluation(e,t)}on(e,t,r){return this.listeners(e).includes(t)?this:(this._log.debug("on",e),super.on(e,t,r),this._eventListened.add(e),e===H.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(H.EVENT.AUDIO_FRAME,{data:o})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(o=>{this.emit(H.EVENT.AUDIO_FRAME,{data:o})}))})),this)}emit(e,...t){try{Sm.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(t)}`)}catch(r){}return super.emit(e,...t)}off(e,t,r){var o,n;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(o=this._getPCMAbortCtrl)==null||o.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,t,r),e===H.EVENT.AUDIO_FRAME&&((n=this._getPCMAbortCtrl)==null||n.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let t,r=null,o="main",n=!1;if(K(e)?t=e:(t=e.userId,n=e.processed===!0,e.streamType&&(o=e.streamType)),t){let a=this._room.remotePublishedUserMap.get(t);a&&(r=a.remoteAudioTrack)}else r=o==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return r?n&&r.outMediaTrack&&r.outMediaTrack!==r.mediaTrack?r.outMediaTrack.clone():r.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:t="",streamType:r="main",processed:o=!1}=e,n=null;if(t==="")r==="main"&&this._localVideoTrack&&(n=this._localVideoTrack),r==="sub"&&this._localScreenTrack&&(n=this._localScreenTrack);else{let a=this._room.remotePublishedUserMap.get(t);a&&(n=r==="main"?a.remoteVideoTrack:a.remoteAuxiliaryTrack)}return n?o&&n.outMediaTrack&&n.outMediaTrack!==n.mediaTrack?n.outMediaTrack.clone():n.mediaTrack:null}getVideoSnapshot(e={}){let{userId:t,streamType:r="main"}=e;if(t){let o=this._room.remotePublishedUserMap.get(t);if(r==="main"&&(o!=null&&o.muteState.hasVideo))return o.remoteVideoTrack.getVideoFrame();if(r==="sub"&&(o!=null&&o.muteState.hasAuxiliary))return o.remoteAuxiliaryTrack.getVideoFrame()}else{if(r==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(r==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var t,r;this._speakerId=e,(t=this._localAudioTrack)==null||t.setAudioOutput(e),(r=this._localScreenAudioTrack)==null||r.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(o=>o.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return f(this,null,function*(){(yield Ki()).forEach(r=>{r.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}),Me=r)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return f(this,null,function*(){let{userId:t}=e;if(this._remoteAudioConfigMap.has(t)){this._log.warn(`remote audio has already started. userId:${t}`);return}let r=this._room.remotePublishedUserMap.get(t);if(!r)return;let o={},n=r.remoteAudioTrack;this._listenOutputTrackChanged(n),this._speakerId&&n.setAudioOutput(this._speakerId);try{let a=this._remoteAudioVolumeMap.get(t),d=Y(a)?a:100;o.volume=d,this._remoteAudioConfigMap.set(t,e),yield this._room.subscribe(n),_e(Ie(n,"decode-failed"),Pe(Ie(n,Q.INIT)),be(()=>{this.startPlugin(jo.Name,{track:n,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:o,track:n})}catch(a){throw this._remoteAudioConfigMap.delete(t),a}this._emitTrackEvent(n)})}_stopRemoteAudio(e,t=!0){return f(this,null,function*(){let r=this._room.remotePublishedUserMap.get(e.userId);r&&(r.remoteAudioTrack.stop(),r.muteState.hasAudio&&t&&(yield this._room.unsubscribe(r.remoteAudioTrack)),this._mediaTrackMap.delete(r.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`)})}_enableVideoDecodeFallback(e,t){let r=this._room.videoDecodeFallbackType;!r||!this._plugins.has("TRTCVideoDecoder")||(this._log.debug("remote video will fall back when decode failed"),_e(Ie(e,"decode-failed"),Pe(Ie(e,Q.INIT)),bl(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:r})}),Vo(Ie(e,"decode-downgrade-state-changed")),be(o=>{this.emit(M.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,k(v({},o),{streamType:t,userId:e.userId}))},o=>{this._log.error("fallback",o)},()=>this._log.info("fallback complete"))))}_updateVideoPlayOption(n){return f(this,arguments,function*({view:e,playOption:t,track:r,prevConfig:o}){if(r.setMirror(t.mirror),g(e)&&o&&o.view&&!jr(t)){let a=Qr(o.view);a.length>0&&(yield r.play(a,t))}if(!g(e)){let a=Qr(e);a.length>0?yield r.play(a,t):r.stop()}})}_updateAudioPlayOption(o){return f(this,arguments,function*({playOption:e={},track:t,prevConfig:r}){if(!t.isPlayCalled)try{yield t.play(null,e)}catch(n){}g(e.muted)||t.setPlayerMute(e.muted),g(e.volume)||t.setAudioVolume(e.volume/100)})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,t=!0){let r=e.isRemote?e.userId:"";e.outMediaTrack&&(t&&this._mediaTrackMap.get(e.outMediaTrack)===r||(this._mediaTrackMap.set(e.outMediaTrack,r),this.emit(M.TRACK,{userId:r,streamType:sr(e.streamType),track:e.outMediaTrack})))}_checkTrackToPublish(){var t,r,o;let e=[];if((t=this._localAudioConfig)!=null&&t.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(r=this._localVideoConfig)!=null&&r.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(o=this._localScreenConfig)!=null&&o.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:t,receiveWhenViewVisible:r=!1,viewRoot:o}){if(g(t))return;let n=this._remoteVideoConfigMap.get(`${e.userId}_${sr(e.streamType)}`);if(!n)return;let a=n.observer||void 0;if(t===null||Te(t)&&t.length===0||!r){a==null||a.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let l=n.visibleViewMap||new Map,m=-1;(!a||a.root!==o)&&(a==null||a.disconnect(),l.clear(),a=new IntersectionObserver(p=>{p.forEach(_=>{l.set(_.target,_.isIntersecting)}),clearTimeout(m),m=window.setTimeout(()=>{[...l.values()].find(I=>I)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:o}));let u=new Set(Qr(t));l.forEach((p,_)=>{u.has(_)||(a.unobserve(_),l.delete(_))}),u.forEach(p=>{l.set(p,!0),a.observe(p)}),a.takeRecords().forEach(p=>{l.set(p.target,p.isIntersecting)}),n.visibleViewMap=l,n.observer=a}_exitRoom(){return f(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let t=e.includes("main")?"main":"sub",r=e.split(`_${t}`)[0];r&&this._stopRemoteVideo({userId:r,streamType:t}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),ym(this),this._room.remotePublishedUserMap.forEach(e=>{Se(e.remoteAudioTrack),Se(e.remoteVideoTrack),Se(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return f(this,null,function*(){var e;if(this._localScreenTrack){if(this._room.isJoined){let t=[this._localScreenTrack];this._localScreenAudioTrack&&t.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...t).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),Se(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Me||fs(Me))&&(this._initActiveSpeaker(),E.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return f(this,null,function*(){if(Me&&!fs(Me))this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:Me});else{let e=yield Ki();e[0]&&!fs(e[0])?(Me=e[0],this.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):E.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let t=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(t===!1||this._room.autoReceiveAudio&&!t)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:t}){if(!this._room.autoReceiveVideo)return;let r=this._room.remotePublishedUserMap.get(e);if(r){let o=t==="main"?r.remoteVideoTrack:r.remoteAuxiliaryTrack,n=[o];this._room.autoReceiveAudio&&n.push(r.remoteAudioTrack),this._room.subscribe(...n).then(()=>{this._emitTrackEvent(o)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:t}){t.hasAudio&&t.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:t}){this._stopRemoteVideo({userId:e,streamType:t},!1).catch(()=>{})}sendSEIMessage(e,t){var o;let r=this._plugins.get("SEI");r&&(r.update({buffer:e,options:k(v({seiPayloadType:243},t),{small:!!((o=this._localVideoTrack)!=null&&o.small)})}),N.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var t,r;(r=(t=this._room).sendCustomMessage)==null||r.call(t,e),N.addCount({key:500001,useUV:!0})}static setLogLevel(e,t){C.setLogLevel(e),g(t)||(t?C.enableUploadLog():C.disableUploadLog())}static isSupported(){return zn()}static getCameraList(e=!0){return dt(e)}static getMicrophoneList(e=!0){return et(e)}static getSpeakerList(e=!0){return Ki(e)}static setCurrentSpeaker(e){return f(this,null,function*(){if(me&&(e===Tt.SPEAKER||e===Tt.HEADSET)){let r=yield H.getMicrophoneList(),o="";if(r.forEach(n=>{n.label===e&&(o=n.deviceId)}),!o)return;Xo.forEach(n=>f(this,null,function*(){n._localAudioTrack&&(yield n.updateLocalAudio({option:{microphoneId:o}}))}));return}(yield Ki()).forEach(r=>{r.deviceId===e&&(Xo.forEach(o=>{o._setCurrentSpeaker(e),o.emit(M.DEVICE_CHANGED,{type:"speaker",action:"active",device:r})}),Me=r)})})}static _addKVStat({type:e,key:t,value:r,base:o,useUV:n,version:a}){switch(a&&(Tr.version=a),e){case"count":Tr.addCount({key:t,useUV:n});break;case"enum":Tr.addEnum({key:t,value:r,useUV:n});break;case"number":Tr.addNumber({key:t,value:r,split:o});break}}};c(H,"_loggerManager",C),c(H,"EVENT",M),c(H,"ERROR_CODE",V),c(H,"TYPE",Tt),c(H,"frameWorkType",30),y([le({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],H.prototype,"use",1),y([He(Oe.TRTC.enterRoom),ir("room",([e],[t])=>(e.roomId||e.strRoomId)===(t.roomId||t.strRoomId)&&e.userId===t.userId&&e.sdkAppId===t.sdkAppId),J(e=>function(t){return this._log.setUserId(t.userId),this._log.setSdkAppId(t.sdkAppId),e.call(this,t)}),le()],H.prototype,"enterRoom",1),y([le()],H.prototype,"exitRoom",1),y([He(Oe.TRTC.switchRole),Lr("room",{merge:(e,t)=>t}),le()],H.prototype,"switchRole",1),y([le()],H.prototype,"destroy",1),y([He(Oe.TRTC.startLocalAudio),ir("audio",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.microphoneId)===((o=t==null?void 0:t.option)==null?void 0:o.microphoneId)}),le()],H.prototype,"startLocalAudio",1),y([He(Oe.TRTC.updateLocalAudio),Lr("audio",{debounce:{delay:200,getKey:()=>`${Mm}-localAudio`,isNeedToDebounce:e=>{var t;return!g((t=e.option)==null?void 0:t.captureVolume)}}}),le()],H.prototype,"updateLocalAudio",1),y([rr("audio"),le()],H.prototype,"stopLocalAudio",1),y([He(Oe.TRTC.startLocalVideo),ir("video",([e],[t])=>{var r,o;return((r=e==null?void 0:e.option)==null?void 0:r.cameraId)===((o=t==null?void 0:t.option)==null?void 0:o.cameraId)}),le()],H.prototype,"startLocalVideo",1),y([He(Oe.TRTC.updateLocalVideo),Lr("video"),le()],H.prototype,"updateLocalVideo",1),y([rr("video"),le()],H.prototype,"stopLocalVideo",1),y([He(Oe.TRTC.startScreenShare),ir("screen",()=>!0),le()],H.prototype,"startScreenShare",1),y([He(Oe.TRTC.updateScreenShare),Lr("screen"),le()],H.prototype,"updateScreenShare",1),y([le()],H.prototype,"stopScreenShare",1),y([He(Oe.TRTC.startRemoteVideo),ir(e=>`v${e.userId}${e.streamType}`,()=>!0),le({getRemoteId:e=>`${e.userId}_${e.streamType}`})],H.prototype,"startRemoteVideo",1),y([He(Oe.TRTC.updateRemoteVideo),Lr(e=>`v${e.userId}${e.streamType}`),le({getRemoteId:e=>`${e.userId}_${e.streamType}`})],H.prototype,"updateRemoteVideo",1),y([He(Oe.TRTC.stopRemoteVideo),J(e=>function(t){return f(this,null,function*(){if(t.userId==="*"){let r=[];return this._room.remotePublishedUserMap.forEach(o=>{this._remoteVideoConfigMap.has(`${o.userId}_main`)&&r.push(this.stopRemoteVideo({streamType:"main",userId:o.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${o.userId}_sub`)&&r.push(this.stopRemoteVideo({streamType:"sub",userId:o.userId}).catch(()=>{}))}),Promise.all(r)}return e.call(this,t)})}),le({getRemoteId:e=>`${e.userId}_${e.streamType}`})],H.prototype,"stopRemoteVideo",1),y([rr(e=>`v${e.userId}${e.streamType}`)],H.prototype,"_stopRemoteVideo",1),y([He(...Oe.TRTC.muteRemoteAudio),le({getRemoteId:e=>e})],H.prototype,"muteRemoteAudio",1),y([wl(...Oe.TRTC.setRemoteAudioVolume),bm(200,e=>e),le({getRemoteId:e=>e})],H.prototype,"setRemoteAudioVolume",1),y([$a("start"),Je(e=>{var t;return(t=e.afterStart)==null?void 0:t.call(e)}),ir((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),le({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>hd[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],H.prototype,"startPlugin",1),y([$a("update"),Lr((e,t)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(t)),le({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>md[e.getName()]})],H.prototype,"updatePlugin",1),y([$a("stop"),rr((e,t)=>{if(e.disableRandomCall)return null;let r=e.getGroup(t),o=e.getAlias();return r==="*"?new RegExp(`${o}.*`):o+r}),le({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>pd[e.getName()]})],H.prototype,"stopPlugin",1),y([wl(...Oe.TRTC.enableAudioVolumeEvaluation)],H.prototype,"enableAudioVolumeEvaluation",1),y([le()],H.prototype,"getVideoSnapshot",1),y([le()],H.prototype,"_setCurrentSpeaker",1),y([ir(e=>`a${e.userId}`,()=>!0)],H.prototype,"_startRemoteAudio",1),y([J(e=>function(t){return f(this,null,function*(){return t.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(r=>this._stopRemoteAudio(k(v({},t),{userId:r.userId})).catch(()=>{}))):e.call(this,t)})}),rr(e=>`a${e.userId}`)],H.prototype,"_stopRemoteAudio",1),y([rr("room")],H.prototype,"_exitRoom",1),y([rr("screen")],H.prototype,"_stopScreenShare",1),y([He(...Oe.TRTC.sendSEIMessage),vl({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],H.prototype,"sendSEIMessage",1),y([He(Oe.TRTC.sendCustomMessage),vl({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],H.prototype,"sendCustomMessage",1),y([He(Oe.TRTC.create)],H,"_create",1);var Ql=H,Qo=Ql;var zl=class{constructor(){c(this,"_set",new Set);E.on(T.LEAVE_SUCCESS,this.delete,this)}add({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,e||i.roomId,i.sdkAppId,i.useStringRoomId);this._set.add(t)}delete({room:i,roomId:e}){if(i.scene==="rtc")return;let t=this.getKey(i.userId,i.roomId||e,i.sdkAppId,i.useStringRoomId);this._set.delete(t)}getKey(i,e,t,r){return`${t}_${e}_${i}_${r}`}isJoined({userId:i,roomId:e,sdkAppId:t,room:r}){return r.scene==="rtc"?!1:this._set.has(this.getKey(i,e,t,r.useStringRoomId))}};function dT(){return f(this,null,function*(){let s,i;try{let u=yield et();s=u&&u.length}catch(u){}try{let u=yield dt();i=u&&u.length}catch(u){}let e={microphone:s,camera:i},{isH264EncodeSupported:t,isVp8EncodeSupported:r,isH264DecodeSupported:o,isVp8DecodeSupported:n}=this.checkSystemResult.detail,a=jt.basis(),d={webRTC:a.isWebRTCSupported,getUserMedia:a.isGetUserMediaSupported,webSocket:a.isWebSocketsSupported,screenShare:a.isScreenShareSupported,webAudio:a.isWebAudioSupported,h264Encode:t,h264Decode:o,vp8Encode:r,vp8Decode:n},l={browser:a.browser,os:a.os,trtc:d,devices:e},m={isWebCodecSupported:a.isWebCodecSupported,isMediaSessionSupported:a.isMediaSessionSupported,isWebTransportSupported:a.isWebTransportSupported};ee.uploadEvent({log:`trtcstats-${JSON.stringify(l)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(l)}`),ee.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(m)}`,userId:this.userId})})}function Lm(){return J(s=>{let i=new zl;return function(e,t,r){return f(this,null,function*(){let o=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=t,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new b({code:S.INVALID_OPERATION,message:U({key:x.INVALID_JOIN})});if(this.checkDestroy(),i.isJoined({userId:this.userId,roomId:o,sdkAppId:this.sdkAppId,room:this}))throw new b({code:S.INVALID_OPERATION,message:U({key:x.REPEAT_JOIN,data:this.userId})});i.add({room:this,roomId:o}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${o} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),E.emit(T.JOIN_START,{room:this,roomId:o,params:e});let n=st.getEnv();n||(n=ai.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(mn.OLD_CLOUD_LADDER)?n=ai.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(mn.WEBRTC)&&(n=ai.WEBRTC))),ee.setConfig({env:n,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:o}),jt.checkSystemRequirementsInternal().then(a=>{this.checkSystemResult=a,dT.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!st.getEnv()&&(yield this.schedule(e,r));let a=yield s.call(this,e,t,r);return this.roomId=o,this._joinedTimestamp=st.performanceNow(),E.emit(T.JOIN_SUCCESS,{room:this}),r===30&&!e.component&&ee.uploadEvent({log:`stat-conv-${Number(Ot)}-${location.hostname}`,userId:this.userId}),a}catch(a){throw i.delete({room:this,roomId:o}),E.emit(T.JOIN_FAILED,{room:this,error:a}),a}})}})}var Pm=()=>J(s=>function(...i){return f(this,null,function*(){E.emit(T.LEAVE_START,{room:this}),yield s.call(this),E.emit(T.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function wm(){return J(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>!t.isSubscribed&&t.subscribe(e)),e})}var Um=ke(Ge());var Ee={SETUP_SUCCESS:"1",CONNECTION_STATE_CHANGED:"2",CONNECTED:"3",RECONNECT_FAILED:"4",SETUP_FAILED:"5",DISCONNECTED:"6"};var xt={CLIENT_BANNED:9,CHANNEL_SETUP_RESULT:19,CHANNEL_RECONNECT_RESULT:514,JOIN_ROOM_RESULT:20,PEER_JOIN:4134,PEER_LEAVE:4135,STREAM_ADDED:16,STREAM_REMOVED:18,UPLINK_NETWORK_STATS:22,UPDATE_REMOTE_MUTE_STAT:23,PUBLISH_RESULT:4098,PUBLISH_STATE_CHANGE_RESULT:4112,UNPUBLISH_RESULT:4100,SUBSCRIBE_RESULT:4102,UNSUBSCRIBE_RESULT:4104,SUBSCRIBE_CHANGE_RESULT:4106,MUTE_RESULT:4108,UPDATE_OFFER_RESULT:4128,START_PUBLISH_TENCENT_CDN_RES:1286,STOP_PUBLISH_TENCENT_CDN_RES:1288,START_PUBLISH_GIVEN_CDN_RES:777,STOP_PUBLISH_GIVEN_CDN_RES:779,START_MIX_TRANSCODE_RES:781,STOP_MIX_TRANSCODE_RES:783,START_PUBLISH_CDN_STREAM_RES:8196,UPDATE_PUBLISH_CDN_STREAM_RES:8198,STOP_PUBLISH_CDN_STREAM_RES:8200,USER_LIST_RES:4137,SWITCH_ROLE_RES:4110,UPDATE_CONSTRAINT_CONFIG_RES:772,REBUILD_PEER_CONNECTION_RES:4150,SPC_PUBLISH_RESULT:4146,SPC_SUBSCRIBE_RESULT:4156,ABILITY_STATUS_REPORT_RESULT:4158,SERVER_FIRST_PACKAGE_RECEIVED:5e3,RECEIVE_CUSTOM_MSG:4140},xm=[xt.UPDATE_REMOTE_MUTE_STAT,xt.UPLINK_NETWORK_STATS,xt.USER_LIST_RES,xt.MUTE_RESULT,xt.SERVER_FIRST_PACKAGE_RECEIVED,xt.RECEIVE_CUSTOM_MSG],B={CLIENT_BANNED:"client-banned",CHANNEL_SETUP_RESULT:"channel-setup-result",CHANNEL_RECONNECT_RESULT:"channel-reconnect-result",JOIN_ROOM_RESULT:"join-room-result",PEER_JOIN:"peer-join",PEER_LEAVE:"peer-leave",STREAM_ADDED:"stream-added",STREAM_REMOVED:"stream-removed",UPLINK_NETWORK_STATS:"uplink-network-stats",UPDATE_REMOTE_MUTE_STAT:"update-remote-mute-stat",PUBLISH_RESULT:"publish-result",PUBLISH_STATE_CHANGE_RESULT:"publish-state-change-result",UNPUBLISH_RESULT:"unpublish-result",SUBSCRIBE_RESULT:"subscribe-result",SUBSCRIBE_CHANGE_RESULT:"subscribe-change-result",UNSUBSCRIBE_RESULT:"unsubscribe-result",UPDATE_OFFER_RESULT:"update-offer-result",START_PUBLISH_TENCENT_CDN_RES:"start-publish-tencent-cdn-res",STOP_PUBLISH_TENCENT_CDN_RES:"stop-publish-tencent-cdn-res",START_PUBLISH_GIVEN_CDN_RES:"start-publish-given-cdn-res",STOP_PUBLISH_GIVEN_CDN_RES:"stop-publish-given-cdn-res",START_MIX_TRANSCODE_RES:"start-mix-transcode-res",STOP_MIX_TRANSCODE_RES:"stop-mix-transcode-res",START_PUBLISH_CDN_STREAM_RES:"start-publish-cdn-stream-res",UPDATE_PUBLISH_CDN_STREAM_RES:"update-publish-cdn-stream-res",STOP_PUBLISH_CDN_STREAM_RES:"stop-publish-cdn-stream-res",USER_LIST_RES:"user-list-res",SWITCH_ROLE_RES:"switch_role_res",MUTE_RESULT:"mute-result",UPDATE_CONSTRAINT_CONFIG_RES:"update-contraint-config-res",REBUILD_PEER_CONNECTION_RES:"rebuild-pc-res",SPC_PUBLISH_RESULT:"spc-publish-result",SPC_SUBSCRIBE_RESULT:"spc-subscribe-result",ABILITY_STATUS_REPORT_RESULT:"ability-status-report",SERVER_FIRST_PACKAGE_RECEIVED:"first-pkg-received",RECEIVE_CUSTOM_MSG:"receive-custom-msg"},q={PUBLISH_CHANGE:"publish_change",JOIN_ROOM:"join",LEAVE_ROOM:"leave",ON_QUALITY_REPORT:"quality_report",UPDATE_MUTE_STAT:"mute_uplink",PUBLISH:"publish",PUBLISH_STATE_CHANGE:"publish_state_change",UNPUBLISH:"unpublish",SUBSCRIBE:"subscribe",RECEIVE_DATA_USER_LIST:"receive_data_userlist",UNSUBSCRIBE:"unsubscribe",SUBSCRIBE_CHANGE:"subscribe_change",START_PUBLISH_TENCENT_CDN:"start_publishing",STOP_PUBLISH_TENCENT_CDN:"stop_publishing",START_PUBLISH_GIVEN_CDN:"start_push_user_cdn",STOP_PUBLISH_GIVEN_CDN:"stop_push_user_cdn",START_MIX_TRANSCODE:"start_mcu_mix",STOP_MIX_TRANSCODE:"stop_mcu_mix",START_PUBLISH_CDN_STREAM:"start_publish_cdn_stream",UPDATE_PUBLISH_CDN_STREAM:"update_publish_cdn_stream",STOP_PUBLISH_CDN_STREAM:"stop_publish_cdn_stream",GET_USER_LIST:"get_user_list",SWITCH_ROLE:"change_role",UPDATE_CONSTRAINT_CONFIG:"update_constraint_config",REBUILD_PEER_CONNECTION:"rebuild_pc",READY_TO_RECEIVE_DATA:"ready_to_receive",SPC_JOIN_ROOM:"join/v2",SPC_PUBLISH:"publish/v2",SPC_SUBSCRIBE:"subscribe/v3",ABILITY_STATUS_REPORT:"ability_status_report",RECONNECT_WS:"reconnect",SEND_CUSTOM_MSG:"channel_msg"};var Ya=new Set;function Vm(s){let i=[...Ya.values()].find(e=>e.room.userId===s&&!e.room.isJoined);return i||null}var vs=class extends Um.default{constructor(e){var r,o;super();c(this,"room");c(this,"url");c(this,"backupUrl");c(this,"race");c(this,"destroyed",!1);c(this,"_socketInUse");c(this,"_socket");c(this,"_backupSocket");c(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});c(this,"_currentState","DISCONNECTED");c(this,"_isReconnecting",!1);c(this,"_seq",0);c(this,"_log");c(this,"_lastMessageTime",-1);c(this,"_connnectStartTime",-1);c(this,"_stopConnectRetry");c(this,"bytesSent",0);c(this,"bytesReceived",0);c(this,"keepAlive",!1);c(this,"signalDomainWhenUnifiedProxy");c(this,"stopKeepAliveTimeout");c(this,"rtt",0);this.room=e.room,this.race=g(e.race)?!0:e.race,this.signalDomainWhenUnifiedProxy=e.signalDomainWhenUnifiedProxy,(((o=(r=this.room.scheduleResult)==null?void 0:r.config)==null?void 0:o.keepAliveClient)||0)-Ya.size>0&&this.room.enableSPC&&(this.keepAlive=!0,Ya.add(this)),this.url=e.url,this.backupUrl=e.backupUrl,this._seq=0,this._log=C.createLogger({id:"ws",userId:this.userId,sdkAppId:this.sdkAppId}),this.onmessage=this.onmessage.bind(this),this.onerror=this.onerror.bind(this),this.onclose=this.onclose.bind(this)}get urlParam(){let e=`?sdkAppId=${encodeURIComponent(this.sdkAppId)}&userId=${encodeURIComponent(this.userId)}&userSig=${encodeURIComponent(this.userSig)}&keepAlive=${encodeURIComponent(Number(this.keepAlive))}`;this.signalDomainWhenUnifiedProxy&&(e+=`&signalDomain=${encodeURIComponent(this.signalDomainWhenUnifiedProxy)}`);let t=new URLSearchParams(location.search).get("clientIp");return t&&(e+=`&clientIp=${t}`),this.race?`${e}&race=1`:e}get _urlWithParam(){return`${this.url}${this.race?"/v2/ws":""}${this.urlParam}`}get _backupUrlWithParam(){return`${this.backupUrl}${this.race?"/v2/ws":""}${this.urlParam}`}get isConnected(){return this._currentState==="CONNECTED"}get isConnecting(){return this._currentState==="CONNECTING"}get sdkAppId(){return this.room.sdkAppId}get userId(){return this.room.userId}get userSig(){return this.room.userSig}get isOnline(){return this._currentState==="CONNECTED"&&Date.now()-this._lastMessageTime<12*1e3}connect(){return f(this,arguments,function*(e=10*1e3){if(this.isConnected)return Promise.resolve();this._log.info(`connect to [${this.url}, ${this.backupUrl}]${e?` timeout: ${e}`:""} keepAlive: ${Number(this.keepAlive)}`),this.emitConnectionStateChanged("CONNECTING"),this._connnectStartTime=L();let t=[this.connectWS({url:this._urlWithParam,isMain:!0,timeout:e})];this.race&&this._backupUrlWithParam!==this._urlWithParam&&t.push(this.connectWS({url:this._backupUrlWithParam,isMain:!1,timeout:e})),this._socketInUse=yield qr(t),this.unbindAndCloseSocket(this._socketInUse===this._socket?h.BACKUP:h.MAIN),this.emitConnectionStateChanged("CONNECTED")})}connectWS({url:e,timeout:t,isMain:r}){let o=new WebSocket(e);this.bindSocket(o),r?this._socket=o:this._backupSocket=o;let n=-1;return new Promise((a,d)=>{o.onclose=d,o.onerror=d,o.onopen=()=>a(o),t&&(n=setTimeout(()=>{this.unbindAndCloseSocket(r?h.MAIN:h.BACKUP),d(new b({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"ws connect timeout"}))},t))}).finally(()=>{o.onclose=null,o.onerror=null,o.onopen=null,clearTimeout(n)})}bindSocket(e){e.addEventListener("close",this.onclose),e.addEventListener("error",this.onerror),e.addEventListener("message",this.onmessage)}unbindSocket(e){e.removeEventListener("close",this.onclose),e.removeEventListener("error",this.onerror),e.removeEventListener("message",this.onmessage)}unbindAndCloseSocket(e){if(e===h.MAIN){if(this._socket){this.unbindSocket(this._socket);try{this._socket.close(1e3)}catch(t){}this._socket=null}}else if(this._backupSocket){this.unbindSocket(this._backupSocket);try{this._backupSocket.close(1e3)}catch(t){}this._backupSocket=null}}onclose(e){e.target===this._socketInUse&&(this._log.warn(`${e.target===this._socket?"main":"backup"} is closed code:${e.code} ${e.reason}`),this.emitConnectionStateChanged("DISCONNECTED"),(!e.wasClean||e.code!==1e3)&&this.startReconnection(),this.room.isJoining&&this.emit(Ee.SETUP_FAILED,new b({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onclose"})))}onerror(e){this._log.error(`${e.target===this._socket?"main":"backup"} error observed`),this.emitConnectionStateChanged("DISCONNECTED"),e.target===this._socketInUse&&(this.unbindAndCloseSocket(h.MAIN),this.unbindAndCloseSocket(h.BACKUP),this._socketInUse=null,this.reconnect()),this.room.isJoining&&this.emit(Ee.SETUP_FAILED,new b({code:S.SIGNAL_CHANNEL_SETUP_FAILED,message:"websocket onerror"}))}onmessage(e){if(!this.isConnected)return;this._lastMessageTime=Date.now(),this.bytesReceived+=Ys(e.data);let t=JSON.parse(e.data),{cmd:r,data:o}=t,n=Object.values(xt),d=Object.keys(xt)[n.indexOf(r)],l=B[d]||r;switch(xm.includes(r)||(this._log.debug(`received ${r} msg: ${e.data}`),l&&this._log.info(`Received event: [ ${l} ]`)),r){case xt.CHANNEL_SETUP_RESULT:{if(t.code===0)this._signalInfo.clientIp=o.clientIp,this._signalInfo.signalIp=o.signalInnerIp,o.svrTime&&Ru(o.svrTime),this._log.info(`ChannelSetup Success ${L()-this._connnectStartTime}`),N.addSuccessEvent({key:521701,cost:L()-this._connnectStartTime}),this._connnectStartTime=-1,this.emit(Ee.SETUP_SUCCESS,{signalInfo:this._signalInfo});else{let m=new b({code:S.SIGNAL_CHANNEL_SETUP_FAILED,extraCode:t.code,message:U({key:x.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:t.code,errorMsg:t.message}})});this._log.error(`${t.code}, ${t.message}`),this.close(),N.addFailedEvent({key:521701,error:m}),this.emit(Ee.SETUP_FAILED,m)}break}case xt.JOIN_ROOM_RESULT:{t.code===0&&(this._signalInfo.relayIp=o.relayOuterIp,this._signalInfo.relayInnerIp=o.relayInnerIp,this._signalInfo.relayPort=o.relayPort,this._signalInfo.tinyId=t.tinyId,this._signalInfo.endReportExtend=o.endReportExtend,this._log.info(`signalIp:${this._signalInfo.signalIp} clientIp:${this._signalInfo.clientIp} relayIp: ${this._signalInfo.relayIp}`)),this.emit(l,{data:t});break}default:this.emit(String(l),{data:t});break}}reGetSignalChannelUrl(){return f(this,null,function*(){try{if(!this.room.joinParams)return;wt(!0),yield this.room.schedule(this.room.joinParams);let{mainUrl:e,backupUrl:t}=this.room.getSignalChannelUrl();this.url=e,this.backupUrl=t}catch(e){}})}startReconnection(){if(!this._socketInUse)return;this._socketInUse.onclose=null,this._socketInUse.close(4011);let e=this._socketInUse===this._socket;this.unbindAndCloseSocket(e?h.MAIN:h.BACKUP),this._socketInUse=null,this.emitConnectionStateChanged("DISCONNECTED"),this.reconnect()}reconnect(){return f(this,null,function*(){if(!this._isReconnecting){if(!this.room.isJoined&&this.keepAlive){this.close();return}this._isReconnecting=!0;try{this._log.warn("reconnect"),yield this.connect();let{roomId:e,useStringRoomId:t}=this.room,{relayIp:r,relayInnerIp:o,relayPort:n}=this._signalInfo,{data:a}=yield this.sendWaitForResponse({command:q.RECONNECT_WS,data:{roomId:e,useStringRoomId:t,relayInnerIp:o,relayOuterIp:r,relayPort:n},responseCommand:B.CHANNEL_RECONNECT_RESULT});a.code===0?(this._log.warn("reconnect success"),this.stopReconnection(),N.addSuccessEvent({key:521702,cost:L()-this._connnectStartTime}),this._connnectStartTime=-1,this.room.syncUserList(),this.room.checkConnectionsToReconnect()):(N.addFailedEvent({key:521702,error:a.code}),this._log.warn(`reconnect failed, ${a.code} ${a.message}`),this.room.reJoin())}catch(e){this._log.error(e),this.room.reJoin()}}})}send(e,t={}){if(this.isConnected&&!this.room.isLeft){let r={cmd:e,data:t,userId:this.userId,tinyId:this._signalInfo.tinyId,seq:++this._seq},o=JSON.stringify(r);return this._socketInUse.send(o),this.bytesSent+=Ys(o),r.seq}}sendWaitForResponse({command:e,data:t,timeout:r=5e3,responseCommand:o,commandDesc:n,enableLog:a=!0,addReceiveTime:d=!1}){return new Promise((l,m)=>{let u=setTimeout(()=>{this.off(o,_);let R=new b({code:S.API_CALL_TIMEOUT,message:U({key:x.API_CALL_TIMEOUT,data:{commandDesc:n,command:e}})});a&&this._log.warn(R),m(R)},r),p=Date.now(),_=R=>{R.data.seq===I&&(clearTimeout(u),this.off(o,_),d&&(R.data.receiveTime=Date.now()),l(R))};this.on(o,_);let I=this.send(e,t)})}sendWaitForResponseWithRetry(e){let{commandDesc:t,command:r,retries:o=0,retryTimeout:n=0}=e;return Gt({retryFunction:this.sendWaitForResponse,onError:({retry:a})=>{this.isOnline?a():(this._log.warn(`retry ${r} when connected`),this.once(Ee.CONNECTED,a))},onRetrying:a=>{this._log.warn(`${t||r} timeout observed, retrying [${a}/${o}]`)},settings:{retries:o,timeout:n},context:this})(e)}getCurrentState(){return this._currentState}getSignalInfo(){return this._signalInfo}stopReconnection(){this._isReconnecting=!1,this._stopConnectRetry&&this._stopConnectRetry()}close(){this._log.info("closed"),clearTimeout(this.stopKeepAliveTimeout),Ya.delete(this),this.stopReconnection(),this._signalInfo={tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0},this._socketInUse=null,this.bytesSent=0,this.bytesReceived=0,this._stopConnectRetry&&this._stopConnectRetry(),this.unbindAndCloseSocket(h.MAIN),this.unbindAndCloseSocket(h.BACKUP),this.emitConnectionStateChanged("DISCONNECTED")}destroy(){this.close(),this.destroyed=!0}stopKeepAliveIn(e=3600){if(this.keepAlive){this._log.info(`stopKeepAlive in ${e}s`),this.stopKeepAliveTimeout=setTimeout(()=>{this.keepAlive=!1,this._log.info(`close due to not used ${e}s`),this.close(),this.off(B.JOIN_ROOM_RESULT,t)},e*1e3);let t=r=>{r.data.code===0&&(this._log.info("stopKeepAlive clear timeout"),clearTimeout(this.stopKeepAliveTimeout),this.off(B.JOIN_ROOM_RESULT,t))};this.on(B.JOIN_ROOM_RESULT,t)}}emitConnectionStateChanged(e){e!==this._currentState&&(this._log.info(`${this._currentState} -> ${e}`),this.emit(Ee.CONNECTION_STATE_CHANGED,{prevState:this._currentState,state:e}),this._currentState=e,e==="CONNECTED"?this.emit(Ee.CONNECTED):e==="DISCONNECTED"&&this.emit(Ee.DISCONNECTED))}};y([Ke({settings:{retries:1/0,timeout:2e3},onError(e,t){!this.room.isDestroyed&&!this.destroyed&&t()},onRetrying(e,t){this._log.warn(`retrying to connect ${e}`),e>=3&&e%3===0&&this.reGetSignalChannelUrl(),t&&(this._stopConnectRetry=t,(this.room.isDestroyed||this.destroyed)&&t())}})],vs.prototype,"connect",1);var Bm=ke(Ge());var Yl=0,Kl=!1,Ka=new Set,uT=s=>Yl>2&&!Kl&&Ka.size===0&&s,Zl=!1,je=class{constructor(i){c(this,"userId");c(this,"tinyId");c(this,"_sdpSemantics");c(this,"_isUplink");c(this,"_room");c(this,"_log");c(this,"_signalChannel");c(this,"_isErrorObserved",!1);c(this,"_waitForPeerConnectionConnectedPromise");c(this,"_waitForPeerConnectionConnectedPromiseReject",null);c(this,"_peerConnection",null);c(this,"_emitter",new Bm.default);c(this,"_currentState","DISCONNECTED");c(this,"_isReconnecting",!1);c(this,"_reconnectionCount",0);c(this,"_reconnectionTimer",-1);c(this,"_isFirstConnection",!0);c(this,"_prevTime",-1);c(this,"_localAddress");c(this,"_remoteAddress");this.userId=i.userId,this.tinyId=i.tinyId,this._room=i.room,this._sdpSemantics=i.room.sdpSemantics,this._isUplink=i.isUplink,this._log=C.createLogger({id:"n-mpc",userId:this._room.userId,remoteUserId:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink}),this._signalChannel=i.signalChannel}beforeConnect(){this._prevTime<0&&(this._prevTime=L())}afterConnect(){try{this._isFirstConnection?(this._isFirstConnection=!1,N.addSuccessEvent({key:521705,cost:Math.min(L()-this._prevTime,30*1e3)})):this._isReconnecting&&N.addSuccessEvent({key:521706,cost:L()-this._prevTime}),this._prevTime=-1}catch(i){throw this._isFirstConnection?(this._isFirstConnection=!1,N.addFailedEvent({key:521705,error:i})):this._isReconnecting&&this._reconnectionCount>=3&&N.addFailedEvent({key:521706,error:i}),i}}initialize(){let i={iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"};this._peerConnection=new RTCPeerConnection(i),this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this)}close(i){this._log.info("close connection"),this._emitter.emit("closed",i),this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),Ka.delete(this)}closePeerConnection(i=!1){this._peerConnection&&(this._log.info("close pc"),this._peerConnection.onconnectionstatechange=null,this._peerConnection.close(),this._peerConnection=null,i&&this.emitConnectionStateChangedEvent("DISCONNECTED")),this._waitForPeerConnectionConnectedPromiseReject&&this._waitForPeerConnectionConnectedPromiseReject(new b({code:S.API_CALL_ABORTED,message:"connection closed"}))}getDTLSTransportState(){if(!this._peerConnection)return It;let i=null;if(this._isUplink){if(!Yi()||this._peerConnection.getSenders().length===0)return It;i=this._peerConnection.getSenders()[0].transport}else{if(!Er()||this._peerConnection.getReceivers().length===0)return It;i=this._peerConnection.getReceivers()[0].transport}return i?i.state:It}onConnectionStateChange(i){let e=this._peerConnection.iceConnectionState,t=this.getDTLSTransportState();if(this._log.info(`connectionState: ${i.target.connectionState}, ICE: ${e}, DTLS: ${t}`),i.target.connectionState===ce.CONNECTING&&this.emitConnectionStateChangedEvent("CONNECTING"),i.target.connectionState===ce.FAILED||i.target.connectionState===ce.CLOSED){let r=`connection ${i.target.connectionState}. ICE Transport state: ${e}, DTLS Transport state: ${t}`,o=new b({message:r,code:S.ICE_TRANSPORT_ERROR});this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection(),this._isErrorObserved||this._emitter.emit("error",o)}(i.target.connectionState===ce.CONNECTED||i.target.connectionState===ce.COMPLETED)&&(this.logSelectedCandidate(),ee.logSuccessEvent({userId:this._room.userId,eventType:Xe.ICE_CONNECTION_STATE}),this.emitConnectionStateChangedEvent("CONNECTED"))}emitConnectionStateChangedEvent(i){return i===this._currentState?!1:(i==="CONNECTED"?(Yl=0,Kl=!1,Zl=!0,Ka.add(this)):Ka.delete(this),E.emit(T.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:i,remoteUserId:this._isUplink?void 0:this.userId}),this._emitter.emit("connection-state-changed",{prevState:this._currentState,state:i}),this._currentState=i,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let i=yield this._peerConnection.getStats();for(let[,e]of i)if(zi(e)){let t=i.get(e.localCandidateId),r=i.get(e.remoteCandidateId);t&&(this._log.info(`local candidate: ${t.candidateType} ${t.protocol}:${t.ip||t.address}:${t.port} ${t.networkType||""} ${t.candidateType==="relay"?`relayProtocol:${t.relayProtocol}`:""}`),this._localAddress=`${t.ip||t.address}:${t.port}`),r&&(this._log.info(`remote candidate: ${r.candidateType} ${r.protocol}:${r.ip||r.address}:${r.port}`),this._remoteAddress=`${r.protocol}:${r.ip||r.address}`);break}})}getCurrentState(){return this._currentState}waitForPeerConnectionConnected(){return this._waitForPeerConnectionConnectedPromise?this._waitForPeerConnectionConnectedPromise:(this._waitForPeerConnectionConnectedPromise=new Promise((i,e)=>{if(this._currentState==="CONNECTED")return i();this._waitForPeerConnectionConnectedPromiseReject=e;let t=a=>{a.state==="CONNECTED"&&(clearTimeout(n),o(),i())},r=({room:a})=>{a===this._room&&(clearTimeout(n),o(),e(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:"leave room"})})))},o=()=>{E.off(T.LEAVE_SUCCESS,r,this),this._emitter.off("connection-state-changed",t,this)},n=setTimeout(()=>{o();let a=new b({code:S.API_CALL_TIMEOUT,message:"connection timeout"});Yl+=1,uT(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),Kl=!0,this._emitter.emit("firewall-restriction")),e(a)},Js);E.on(T.LEAVE_SUCCESS,r,this),this._emitter.on("connection-state-changed",t,this)}),this._waitForPeerConnectionConnectedPromise=this._waitForPeerConnectionConnectedPromise.finally(()=>{this._waitForPeerConnectionConnectedPromise=null,this._waitForPeerConnectionConnectedPromiseReject=null}),this._waitForPeerConnectionConnectedPromise)}getReconnectionCount(){return this._reconnectionCount}startReconnection(){this._isReconnecting=!0,this.reconnect()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}stopReconnection(){this._log.info("stop reconnection"),this._isReconnecting=!1,this._reconnectionCount=0,this.clearReconnectionTimer(),this._signalChannel.off(Ee.CONNECTED,this.reconnect,this)}beforeReconnect(){if(this._reconnectionTimer!==-1)return this._log.warn("reconnect() is reconnecting, ignore"),-1;if(this._reconnectionCount>=ci()){this._log.warn(`SDK has tried reconnect for ${this._reconnectionCount} times, but all failed, please check your network`),this.stopReconnection();let i=new b({code:this._isUplink?S.UPLINK_RECONNECTION_FAILED:S.DOWNLINK_RECONNECTION_FAILED,message:U({key:this._isUplink?x.UPLINK_RECONNECTION_FAILED:x.DOWNLINK_RECONNECTION_FAILED})});return this.emitConnectionStateChangedEvent("DISCONNECTED"),this._emitter.emit("error",i),-1}return this._signalChannel.isConnected?(this._reconnectionCount+=1,this._log.warn(`reconnect() trying [${this._reconnectionCount}]`),1):(this._log.warn("reconnect() signal channel is not connected, suspend reconnection until signal is connected"),this._signalChannel.once(Ee.CONNECTED,this.reconnect,this),-1)}on(i,e,t){this._emitter.on(i,e,t)}off(i,e,t){this._emitter.off(i,e,t)}getIsReconnecting(){return this._isReconnecting}get isH264(){var i,e;return!!((e=(i=this._peerConnection)==null?void 0:i.remoteDescription)!=null&&e.sdp.includes("H264"))}setOffer(i){var e;return(e=this._peerConnection)==null?void 0:e.setLocalDescription(i)}setAnswer(i){var e;return(e=this._peerConnection)==null?void 0:e.setRemoteDescription(i)}};y([tt(521712,!1)],je.prototype,"setOffer",1),y([tt(521713,!1)],je.prototype,"setAnswer",1);var ru=ke(iu());var ge=function(s){return ru.default.parse(s)},Et=function(s){return ru.default.write(s)},jm=function(s){let i=ge(s);return i.media.forEach(e=>{e.type===h.AUDIO&&e.fmtp.forEach(t=>{t.config+=";sprop-stereo=1;stereo=1"})}),Et(i)};function Xm(s){let i=ge(s);return i.media.forEach(e=>{var t,r;if(e.type===h.VIDEO){let o=new Set;e.rtp.forEach(({payload:a,codec:d})=>d==="H264"&&o.add(a)),e.fmtp.forEach(({payload:a,config:d})=>{let l=d.match(/apt=(\d+)/);l&&l[1]&&o.has(Number(l[1]))&&o.add(a)});let n=({payload:a})=>!o.has(a);e.rtp=e.rtp.filter(n),e.rtcpFb=(t=e.rtcpFb)==null?void 0:t.filter(n),e.fmtp=e.fmtp.filter(n),e.payloads=(r=e.payloads)==null?void 0:r.split(" ").filter(a=>!o.has(Number(a))).join(" ")}}),Et(i)}function Za(s){return Object.keys(s).filter(i=>s[i])}var Os=class Os extends je{constructor(e){super(k(v({},e),{isUplink:!1}));c(this,"_flag",0);c(this,"isRobot",!1);c(this,"role","anchor");c(this,"remoteAudioTrack");c(this,"remoteVideoTrack");c(this,"remoteAuxiliaryTrack");c(this,"ssrc",{audio:0,video:0,auxiliary:0});c(this,"_isSDPExchanging",!1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=e.remoteAudioTrack||new Di(this._room,this),this.remoteVideoTrack=e.remoteVideoTrack||new ii(this._room,this),this.remoteAuxiliaryTrack=e.remoteAuxiliaryTrack||new Is(this._room,this)}get videoCodec(){var t,r;let e=(r=(t=this._peerConnection)==null?void 0:t.remoteDescription)==null?void 0:r.sdp;return e?e.includes("H264")?"h264":"vp8":"h264"}get subscribeState(){let e={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?e.smallVideo=!0:e.video=!0),this.remoteAudioTrack.isSubscribed&&(e.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(e.auxiliary=!0),e}get muteState(){return ui(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===h.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){super.initialize(),this.installEvents(),this._peerConnection.ontrack=this.onTrack.bind(this)}close(e){super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents()}installEvents(){}uninstallEvents(){this._emitter.removeAllListeners()}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){let t=e.streams[0],{track:r}=e,o=t.id===Ws?h.MAIN:h.AUXILIARY;this._log.debug(`ontrack ${o} ${r.kind}`);let n=h.AUDIO;r.kind===h.VIDEO&&(n=o===h.MAIN?h.VIDEO:h.AUXILIARY);let a=this.remoteAudioTrack;n===h.VIDEO?a=this.remoteVideoTrack:n===h.AUXILIARY&&(a=this.remoteAuxiliaryTrack),a.setInputMediaStreamTrack(r)}addRRTRLine(e){let t=e.split(`\r
59
- `),r=new Map;t.forEach((n,a)=>{/^a=rtcp-fb:/.test(n)&&t[a+1]&&!/^a=rtcp-fb:/.test(t[a+1])&&r.set(a+1,`${n.match(/^a=rtcp-fb:\d+/)[0]} rrtr`)});let o=[...r];for(let n=0;n<o.length;n++){let[a,d]=o[n];t.splice(a+n,0,d)}return t.join(`\r
60
- `)}addSPSDescription(e){let t=ge(e);return t.media.forEach(r=>{r.type===h.VIDEO&&r.fmtp.forEach(o=>{o.config+=";sps-pps-idr-in-keyframe=1"})}),Et(t)}removeSDESDescription(e){let t=["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"],r=ge(e);return r.media.forEach(o=>{o.ext&&(o.ext=o.ext.filter(n=>!t.includes(n.uri)))}),Et(r)}isSubscriptionStateNotChanged(e){return JSON.stringify(e)===JSON.stringify(this.subscribeState)}subscribe(e,t){return f(this,null,function*(){var r,o;try{if((((r=this._peerConnection)==null?void 0:r.connectionState)===ce.NEW||((o=this._peerConnection)==null?void 0:o.connectionState)===ce.CONNECTING)&&(yield this.waitForPeerConnectionConnected()),this.isSubscriptionStateNotChanged(e)){this._peerConnection||(this.initialize(),yield this.connect(e));return}if(this._log.info(`subscribe ${t} ${JSON.stringify(e)}`),this._peerConnection||this._isSDPExchanging){let n="subscribe_change";Object.values(e).find(a=>a===!0)||(n="unsubscribe"),yield this.sendSubscription(n,e)}else this.initialize(),yield this.connect(e)}catch(n){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${n.message} ${JSON.stringify(this.muteState)}`),new b({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):n}})}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){if(this._currentState==="CONNECTED"&&(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed)){this._log.info(`${t} stream already unsubscribed`);return}let o=v({},this.subscribeState);e.forEach(a=>{switch(a.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(a=>a===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Za(o)}]`),yield this.sendSubscription(n,o),n==="unsubscribe"&&(this.closePeerConnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"))})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=q.UNSUBSCRIBE,n=B.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=q.SUBSCRIBE_CHANGE,n=B.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponse({command:o,data:r,responseCommand:n,timeout:1e4}).then(({data:a})=>{if(a.code!==0){let d=new b({code:a.code,message:U({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(d),d}})}connect(){return f(this,arguments,function*(e=this.subscribeState){try{yield this.exchangeSDP(e),yield this.waitForPeerConnectionConnected()}catch(t){throw this.closePeerConnection(!0),t}})}exchangeSDP(e){return f(this,null,function*(){try{this._isSDPExchanging=!0,yield this.createOffer(),this._log.info("createOffer success, sending offer");let{type:t,sdp:r}=this._peerConnection.localDescription,o={type:t,sdp:r,srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo},n=yield this._signalChannel.sendWaitForResponse({command:q.SUBSCRIBE,commandDesc:"exchange sdp",data:o,responseCommand:B.SUBSCRIBE_RESULT,timeout:yc});if(!this._peerConnection){let a=new b({code:S.INVALID_OPERATION,message:U({key:x.CONNECTION_CLOSED})});throw this._log.warn(a),a}yield this.onSubscribeResult(n),this._isSDPExchanging=!1}catch(t){throw this._isSDPExchanging=!1,t}})}createOffer(){return f(this,null,function*(){let e={voiceActivityDetection:!1};pt()&&this._sdpSemantics===Hi?(this._peerConnection.addTransceiver(h.AUDIO,{direction:z.RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:z.RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:z.RECVONLY})):(e.offerToReceiveAudio=!0,e.offerToReceiveVideo=!0);let t=yield this._peerConnection.createOffer(e);if(t.sdp){let{isH264DecodeSupported:r}=yield Qn();r||(this._log.warn("remove h264 desc from sdp"),t.sdp=Xm(t.sdp)),t.sdp=this.addRRTRLine(t.sdp),t.sdp=this.addSPSDescription(t.sdp),t.sdp=jm(t.sdp),this._sdpSemantics===Hi&&(t.sdp=this.removeSDESDescription(t.sdp))}yield this.setOffer(t)})}onSubscribeResult(e){return f(this,null,function*(){let{code:t,message:r=""}=e&&e.data||{},{type:o,sdp:n}=e&&e.data&&e.data.data||{};if(t===ar)throw new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264DECODE})});try{if(t!==0)throw new b({code:t,message:U({key:x.EXCHANGE_SDP_FAILED,data:{errMsg:r}})});this._log.debug(`accept remote answer: ${n}`),yield this.setAnswer({type:o,sdp:n}),this.updateSSRC(n)}catch(a){throw this._log.error(a),a}})}updateSSRC(e){try{ge(e).media.forEach(r=>{if(r.ssrcs)if(r.type===h.AUDIO){let o=r.ssrcs.find(n=>{var a;return(a=n.value)==null?void 0:a.includes(Ws)});o&&(this.ssrc.audio=Number(o.id))}else{let o=r.ssrcs.find(a=>{var d;return(d=a.value)==null?void 0:d.includes(Ws)}),n=r.ssrcs.find(a=>{var d;return(d=a.value)==null?void 0:d.includes(Sc)});o&&(this.ssrc.video=Number(o.id)),n&&(this.ssrc.auxiliary=Number(n.id))}})}catch(t){}}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}reconnect(){return f(this,null,function*(){if(!(Le(Os.prototype,this,"beforeReconnect").call(this)<0))try{this.closePeerConnection(),this.initialize(),yield this.connect(),this.stopReconnection(),this._log.warn("reconnect() success")}catch(t){let r=Ct(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}getIsReconnecting(){return this._isReconnecting}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}getCurrentState(){return this._currentState}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}get audioReceiver(){var e;return((e=this._peerConnection)==null?void 0:e.getReceivers()[0])||null}};y([J(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],Os.prototype,"subscribe",1),y([tt(521717,!1)],Os.prototype,"unsubscribe",1),y([Je(je.prototype.afterConnect),la(je.prototype.beforeConnect)],Os.prototype,"connect",1);var su=Os,ou=su;var zm={voiceActivityDetection:!1},Ms=class Ms extends je{constructor(e){super(k(v({},e),{isUplink:!0}));c(this,"localMainAudioTrack",null);c(this,"localMainVideoTrack",null);c(this,"localAuxAudioTrack",null);c(this,"localAuxVideoTrack",null);c(this,"ssrc",{audio:0,video:0,small:0,auxiliary:0});c(this,"_isPublishingAux",!1);c(this,"_publishingLocalAudioTrack");c(this,"_publishingLocalVideoTrack");c(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});c(this,"flag",0)}get videoCodec(){return this._mediaSettings.videoCodec.toLowerCase()||"h264"}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Jt()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(d=>{d.track&&(d.track.kind===h.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}initialize(){super.initialize(),this.installEvents()}reset(){this._isReconnecting&&this.stopReconnection(),this.closePeerConnection(),this.uninstallEvents()}close(e){super.close(e),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this._emitter.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this._emitter.on("connection-state-changed",this.handleConnectionStateChange,this)}uninstallEvents(){this._emitter.off("connection-state-changed",this.handleConnectionStateChange,this)}emitConnectionStateChangedEvent(e,t){var n,a,d;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(d=this._publishingLocalVideoTrack)==null||d.emit("connection-state-changed",{prevState:r,state:e}))),o}publish(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){this._peerConnection||this.initialize(),e&&(this._publishingLocalAudioTrack=e),t&&(this._publishingLocalVideoTrack=t),this._isPublishingAux=r;let n;t&&!r&&t.small&&(n=this._room.videoManager.smallTrack),this.sendMediaSettings(),pt()?yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:n,isAuxiliary:r}):yield this.publishByAddTrack({localAudioTrack:e,localVideoTrack:t,smallTrack:n}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,r?(t&&(this.localAuxVideoTrack=t),e&&(this.localAuxAudioTrack=e)):(t&&(this.localMainVideoTrack=t),e&&(this.localMainAudioTrack=e)),this.installTrackMuteEvents(e,t),this.sendMutedFlag()})}publishByTransceiver(n){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){this._log.info("publish by transceiver");let a=new MediaStream,d=t==null?void 0:t.outMediaTrack,l=e==null?void 0:e.outMediaTrack;l&&a.addTrack(l),d&&a.addTrack(d);let m=this._peerConnection.getTransceivers();if(m.length===0)this._peerConnection.addTransceiver(l||h.AUDIO,{direction:z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?h.VIDEO:d||h.VIDEO,{direction:z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(r||h.VIDEO,{direction:z.SENDONLY,streams:[a]}),this._peerConnection.addTransceiver(o?d||h.VIDEO:h.VIDEO,{direction:z.SENDONLY,streams:[a]}),yield this.connect();else{let u=[];if(l&&(m[0].sender.track||u.push(0),yield m[0].sender.replaceTrack(l),yield this.setBandwidth({bandwidth:(e==null?void 0:e.profile.bitrate)||40,type:h.AUDIO})),d){let p=o?3:1;yield m[p].sender.replaceTrack(d),yield this.setBandwidth({bandwidth:t.profile.bitrate,type:h.VIDEO,videoType:o?h.AUXILIARY:h.BIG}),u.push(p),r&&(yield m[2].sender.replaceTrack(r),yield this.setBandwidth({bandwidth:t.small.bitrate,type:h.VIDEO,videoType:h.SMALL}),u.push(2))}yield this.setTransceiverDirection(z.SENDONLY,u),yield this.doPublishChange(),t==null||t.emit("connection-state-changed",{prevState:"DISCONNECTED",state:"CONNECTING"}),t==null||t.emit("connection-state-changed",{prevState:"CONNECTING",state:"CONNECTED"})}})}publishByAddTrack(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,smallTrack:r}){this._log.info("publish by addtrack");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack;if(this._peerConnection&&this._peerConnection.connectionState!=="new"){e&&a&&(yield this.addTrack(e)),n&&(yield this.addTrack(t));return}let d=new MediaStream;if(a&&d.addTrack(a),n&&d.addTrack(n),a&&this._peerConnection.addTrack(a,d),n&&(this._peerConnection.addTrack(n,d),r)){let l=new MediaStream;l.addTrack(r),this._peerConnection.addTrack(r,l)}yield this.connect()})}enableSmall(e){return f(this,null,function*(){let t=this._peerConnection.getTransceivers();e?this._room.videoManager.smallTrack&&(yield t[2].sender.replaceTrack(this._room.videoManager.smallTrack),yield this.setTransceiverDirection(z.SENDONLY,[2])):(yield t[2].sender.replaceTrack(null),yield this.setTransceiverDirection(z.INACTIVE,[2])),this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){if(!Jt()){if(e&&e.outMediaTrack&&!t&&this.localMainVideoTrack){yield this.removeTrack(e),this.localMainAudioTrack=null;return}if(t&&t.outMediaTrack&&!e&&this.localMainAudioTrack){yield this.removeTrack(t),this.localMainVideoTrack=null;return}yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),this.emitConnectionStateChangedEvent("DISCONNECTED",t);return}let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),d=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localAuxAudioTrack&&!this.localMainAudioTrack&&(yield a[0].replaceTrack(null),d.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=k(v({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),d.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=k(v({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),d.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.setTransceiverDirection(z.INACTIVE,d),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponse({command:q.PUBLISH_STATE_CHANGE,data:t,responseCommand:B.PUBLISH_STATE_CHANGE_RESULT,enableLog:e});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:q.UNPUBLISH,commandDesc:"unpublish",responseCommand:B.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),qt){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:q.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:B.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?h.AUXILIARY:h.MAIN} stream`),pt()?yield this.addTrackByTransceiver(e,t):yield this.addTrackBySender(e)})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===z.INACTIVE&&(yield this.setTransceiverDirection(z.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}addTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;let t=e.outMediaTrack;Jt()&&this._peerConnection.getTransceivers().findIndex(o=>o.direction==="stopped")>=0&&(this._log.warn("transceiver is stopping, negotiate sdp first"),yield this.updateOffer("remove",t));let r=this._peerConnection.getSenders().find(o=>o.track&&o.track.kind===t.kind);if(r&&r.track){this._log.warn("sender already exists, remove sender first");let o=r.track;this.removeSender(r),yield this.updateOffer("remove",o)}if(t&&this._peerConnection.addTrack(t,new MediaStream([t])),t.kind===h.VIDEO&&e instanceof Ve&&e.small){let o=new MediaStream,{smallTrack:n}=this._room.videoManager;o.addTrack(n),this._peerConnection.addTrack(n,o)}yield this.updateOffer("add",t)})}isNeedToResetOfferOrder(){if(this._sdpSemantics===Hr||!this._peerConnection||!this._peerConnection.localDescription)return!1;let{sdp:e}=this._peerConnection.localDescription,t=ge(e);for(let r=0;r<t.media.length;r++)if(Number(t.media[r].mid)===0&&t.media[r].type===h.VIDEO)return!0;return!1}removeSender(e){let t=null;Jt()&&(t=this._peerConnection.getTransceivers().find(r=>r.sender&&r.sender.track===e.track)),this._peerConnection.removeTrack(e),t&&se(t.stop)&&(this._log.info("stop transceiver"),t.stop())}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?h.AUXILIARY:h.MAIN} stream`),pt()?yield this.removeTrackByTransceiver(e,t):yield this.removeTrackBySender(e)})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.outMediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&e.small&&(yield r[2].sender.replaceTrack(null)),yield this.setTransceiverDirection(z.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ae)return;let r=!1,o=!1;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let n=this._peerConnection.getTransceivers();if(t.forEach(l=>{n[l].direction!==e&&(n[l].direction=e,r=!0)}),r){this._log.info("updating offer");let l=yield this._peerConnection.createOffer();yield this.setOffer(l)}let a=-1,d=this._peerConnection.remoteDescription.sdp.split(`\r
61
- `).map(l=>{if(l.match(new RegExp(`a=(${z.INACTIVE}|${z.RECVONLY}|${z.SENDONLY})`))&&a++,t.includes(a)){if(e===z.INACTIVE&&l.includes(`a=${z.RECVONLY}`))return o=!0,`a=${e}`;if(e===z.SENDONLY&&l.includes(`a=${z.INACTIVE}`))return o=!0,`a=${z.RECVONLY}`}return l}).join(`\r
62
- `);o&&(this._log.info("updating answer"),yield this.setAnswer({type:"answer",sdp:d}))})}removeTrackBySender(e){return f(this,null,function*(){if(!e.outMediaTrack)return;if(e.kind===h.VIDEO&&this.isNeedToResetOfferOrder()&&this.localMainAudioTrack){this.reset(),this.initialize(),yield this.publish({localAudioTrack:this.localMainAudioTrack,isAuxiliary:!1});return}let t=this._peerConnection.getSenders().find(r=>r.track===e.outMediaTrack);t&&(this.removeSender(t),e.kind===h.VIDEO&&e.small&&this._peerConnection.getSenders().forEach(r=>{r.track&&r.track.kind===h.VIDEO&&this.removeSender(r)})),yield this.updateOffer("remove",e.outMediaTrack)})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders();if(!t||t.length===0||!e.mediaTrack)return!1;let r;if(pt()?r=e.kind===h.AUDIO?t[0]:t[1]:r=t.find(a=>a.track&&a.track.kind===e.kind),!r)return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${e.kind} track on ${o?h.AUXILIARY:h.MAIN} stream`),e.kind===h.AUDIO?yield r.replaceTrack(e.outMediaTrack):e.kind===h.VIDEO&&(o?t[3]&&(yield t[3].replaceTrack(e.outMediaTrack)):yield r.replaceTrack(e.outMediaTrack)),!0})}updateOffer(e,t){return f(this,null,function*(){try{let r=yield this._peerConnection.createOffer(zm);ae&&r.sdp&&(r.sdp=this.setSDPDirection(r.sdp,"sendrecv")),yield this.setOffer(r);let o=this.updateMediaSettings(),n={action:e,trackId:t.id,kind:t.kind===h.VIDEO?"bigVideo":t.kind,type:"offer",sdp:this._peerConnection.localDescription.sdp,constraintConfig:o,state:this.publishState};this._log.info("createOffer success, sending updated offer to remote server"),this._log.debug(`updatedOffer: ${n.sdp}`);let a=yield this._signalChannel.sendWaitForResponse({command:q.PUBLISH_CHANGE,data:n,responseCommand:B.UPDATE_OFFER_RESULT,timeout:Rc,commandDesc:"update offer"}),{code:d,message:l}=a.data;d!==0&&this.checkPublishResultCode(d,l),yield this.acceptAnswer(a.data.data),r.sdp&&this.updateSSRC(r.sdp)}catch(r){throw this._log.error(r),r}})}setBandwidth(n){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r,sdp:o}){if(!Ao())return o?t===h.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e):void 0;let a,d=this._peerConnection.getSenders();if(pt()){let l=0;t===h.VIDEO&&(r===h.SMALL?l=2:r===h.AUXILIARY?l=3:l=1),a=d[l]}else a=d.find(l=>l.track&&l.track.kind===t);if(a){let l=a.getParameters();(!l.encodings||l.encodings.length===0)&&(l.encodings=[{}]),l.encodings[0].maxBitrate=e*1e3;try{return yield a.setParameters(l),this._log.info(`${r||""}${t} bandwidth ${e} kbps`),o}catch(m){if(this._log.info(`failed to set bandwidth by setting maxBitrate: ${m}`),o)return t===h.VIDEO?this.updateVideoBandwidthRestriction(o,e,r):this.updateAudioBandwidthRestriction(o,e)}}return o})}updateVideoBandwidthRestriction(e,t,r){let o="AS";ae&&(o="TIAS",t=t*1e3);let n=0,a=-1;return r===h.SMALL?n=1:r===h.AUXILIARY&&(n=2),e=e.replace(/m=video (.*)\r\nc=IN (.*)\r\n/g,d=>(a+=1,a===n?`${d}b=${o}:${t}\r
63
- `:d)),e}updateAudioBandwidthRestriction(e,t){let r="AS";return ae&&(r="TIAS",t=t*1e3),e=e.replace(/m=audio (.*)\r\nc=IN (.*)\r\n/,`m=audio $1\r
64
- c=IN $2\r
65
- b=${r}:${t}\r
66
- `),e}removeBandwidthRestriction(e){return e.replace(/b=AS:.*\r\n/,"").replace(/b=TIAS:.*\r\n/,"")}removeVideoOrientation(e){return e.replace(/urn:3gpp:video-orientation/,"")}connect(){return f(this,null,function*(){try{yield this.exchangeSDP(),yield this.waitForPeerConnectionConnected()}catch(e){throw this.closePeerConnection(!0),this.uninstallEvents(),e}})}exchangeSDP(){return f(this,null,function*(){try{yield this.createOffer(),this._log.info("createOffer success, sending offer to remote server"),yield this.doExchangeSDP()}catch(e){throw e}})}createOffer(){return f(this,null,function*(){try{let e=yield this._peerConnection.createOffer(zm);yield this.setOffer(e),e.sdp&&this.updateSSRC(e.sdp)}catch(e){throw e}})}doExchangeSDP(){let e={command:q.PUBLISH,responseCommand:B.PUBLISH_RESULT,data:{type:this._peerConnection.localDescription.type,sdp:this.removeVideoOrientation(this._peerConnection.localDescription.sdp),screen:this.localMainVideoTrack instanceof it||this.localAuxVideoTrack instanceof it,state:this.publishState,constraintConfig:this._mediaSettings},enableLog:!1};return this._log.debug(`sending sdp offer: ${e.data.sdp}`),this._signalChannel.sendWaitForResponse(e).then(t=>{let{code:r,message:o,data:n}=t.data;return r===0?this.acceptAnswer(n):this.checkPublishResultCode(r,o)})}setSDPDirection(e,t,r="all"){let o=ge(e);return o.media.forEach(n=>{(r==="all"||n.type===r)&&(n.direction=t)}),Et(o)}acceptAnswer(e){return f(this,null,function*(){var t,r,o,n,a;try{let d;if(this._publishingLocalAudioTrack||this._publishingLocalVideoTrack||this.isMainStreamPublished){let u=((t=this._publishingLocalVideoTrack)==null?void 0:t.profile.bitrate)||((r=this.localMainVideoTrack)==null?void 0:r.profile.bitrate),p=((o=this._publishingLocalAudioTrack)==null?void 0:o.profile.bitrate)||((n=this.localMainAudioTrack)==null?void 0:n.profile.bitrate);if(u){let _=this._isPublishingAux?h.AUXILIARY:h.BIG;d=yield this.setBandwidth({bandwidth:u,type:h.VIDEO,sdp:d,videoType:_})}p&&(d=yield this.setBandwidth({bandwidth:p,type:h.AUDIO,sdp:d}))}if(d=this.removeVideoOrientation(e.sdp),(a=this._publishingLocalVideoTrack)!=null&&a.small){let{smallStreamConfig:u}=this._room;d=yield this.setBandwidth({bandwidth:this._publishingLocalVideoTrack.small.bitrate||u.bitrate,type:h.VIDEO,videoType:h.SMALL,sdp:d})}let m={type:e.type,sdp:d};yield this.setAnswer(m),this._log.debug(`accepted answer: ${d}`)}catch(d){throw this._log.error(`failed to accept remote answer ${d}`),d}})}sendMutedFlag(e){var o,n,a;if(e===this.localAuxAudioTrack||e===this.localAuxVideoTrack)return;let r={audio:!!((o=this.localMainAudioTrack)!=null&&o.muted),bigVideo:!!((n=this.localMainVideoTrack)!=null&&n.muted),auxVideo:!!((a=this.localAuxVideoTrack)!=null&&a.muted)};this._log.info(`send muted state: ${JSON.stringify(r)}`),this._signalChannel.send(q.UPDATE_MUTE_STAT,r)}getIsReconnecting(){return this._isReconnecting}reconnect(){return f(this,null,function*(){if(!(Le(Ms.prototype,this,"beforeReconnect").call(this)<0))try{yield this._signalChannel.sendWaitForResponse({command:q.UNPUBLISH,responseCommand:B.UNPUBLISH_RESULT,enableLog:!1}),this.closePeerConnection(),this.initialize(),this.isMainStreamPublished&&(yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0})),this._log.warn("reconnect() uplink reconnect successfully"),this.stopReconnection()}catch(t){let r=Ct(this._reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${r/1e3}s`),this._reconnectionTimer=setTimeout(()=>{this.clearReconnectionTimer(),this.reconnect()},r)}})}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(T.SEND_FIRST_VIDEO_FRAME,{room:this._room})}updateSSRC(e){try{ge(e).media.forEach((r,o)=>{if(r.type===h.AUDIO){let n=r.ssrcs&&r.ssrcs[0];n&&(this.ssrc.audio=Number(n.id))}else{if(this._sdpSemantics===Hr&&r.ssrcGroups){r.ssrcGroups.forEach((a,d)=>{let l=Number(a.ssrcs.split(" ")[0]);d===0?this.ssrc.video=l:d===1&&(this.ssrc.small=l)});return}let n=r.ssrcs&&r.ssrcs[0];if(!n)return;switch(o){case 1:this.ssrc.video=Number(n.id);break;case 2:this.ssrc.small=Number(n.id);break;case 3:this.ssrc.auxiliary=Number(n.id);break;default:break}}})}catch(t){}}getVideoTrackId(e=h.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===h.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===h.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===h.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===h.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===ar?(this._log.error(ve.NOT_SUPPORTED_H264ENCODE),new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264ENCODE})})):new b({code:S.UNKNOWN,message:U({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:B.PUBLISH_RESULT,code:e,message:t}})})}};y([J(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this._emitter.off("closed",n),o(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:a})}))};this._emitter.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this._emitter.off("closed",n)})})})],Ms.prototype,"publish",1),y([tt(521715,!1)],Ms.prototype,"unpublish",1),y([Je(je.prototype.afterConnect),la(je.prototype.beforeConnect)],Ms.prototype,"connect",1);var nu=Ms,Yo=nu;var Ko=class{constructor(i,e){this.room=i;c(this,"_log");c(this,"_prevReportTime",0);c(this,"_prevReport",{});c(this,"_prevStats",null);c(this,"_prevEncoderImplementation","");c(this,"_prevAuxEncoderImpl","");c(this,"_prevQualityLimitationReason","");c(this,"_prevAuxQualityLimitationReason","");c(this,"_prevDecoderImplementationMap",new Map);c(this,"totalBytesSent",0);c(this,"totalBytesReceived",0);c(this,"_spcStats",null);this._log=e}get statInterval(){return this._prevReportTime===0?2:(Date.now()-this._prevReportTime)/1e3}getSenderStats(i){return f(this,null,function*(){var o;let e={audio:{bytesSent:0,packetsSent:0,audioLevel:0,totalAudioEnergy:0},video:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},small:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},auxiliary:{bytesSent:0,packetsSent:0,framesEncoded:0,frameWidth:0,frameHeight:0,framesSent:0,fpsCapture:0},rtt:0},t=i.getPeerConnection(),r=i.getSSRC();if(t)try{if((this._spcStats||(yield t.getStats())).forEach(a=>{var m,u,p;let d,l;if(a.type==="outbound-rtp")if((a.mediaType||a.kind)===h.VIDEO){if(a.ssrc===r.video?(d=h.VIDEO,l=i.localMainVideoTrack):a.ssrc===r.small?d=h.SMALL:a.ssrc===r.auxiliary&&(l=i.localAuxVideoTrack,d=h.AUXILIARY),!d)return;if(e[d].bytesSent=a.bytesSent,e[d].packetsSent=a.packetsSent,e[d].framesEncoded=a.framesEncoded,g(a.keyFramesEncoded)||(e[d].keyFramesEncoded=a.keyFramesEncoded),g(a.nackCount)||(e[d].nackCount=a.nackCount),g(a.pliCount)||(e[d].pliCount=a.pliCount),g(a.retransmittedPacketsSent)||(e[d].retransmittedPacketsSent=a.retransmittedPacketsSent),g(a.totalEncodeTime)||(e[d].totalEncodeTime=a.totalEncodeTime),g(a.totalPacketSendDelay)||(e[d].totalPacketSendDelay=a.totalPacketSendDelay),!g(a.encoderImplementation)&&(d===h.VIDEO&&this._prevEncoderImplementation!==a.encoderImplementation||d===h.AUXILIARY&&this._prevAuxEncoderImpl!==a.encoderImplementation)){let I=2,R=this._prevEncoderImplementation;d===h.AUXILIARY&&(I=7,R=this._prevAuxEncoderImpl),E.emit("262",{userId:i.userId,streamType:I,prevImplementation:R,implementation:a.encoderImplementation,codec:i.videoCodec,isHWCodec:a.powerEfficientEncoder}),this[d===h.VIDEO?"_prevEncoderImplementation":"_prevAuxEncoderImpl"]=a.encoderImplementation,this._log.info(`${d===h.AUXILIARY?"aux ":""}encoderImplementation change to ${a.encoderImplementation}(${i.videoCodec}) HWEncoder: ${a.powerEfficientEncoder}`)}a.ssrc===r.video?!g(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevQualityLimitationReason,streamType:2,isQosClearFirst:(m=i.localMainVideoTrack)==null?void 0:m.isQosClearFirst}),this._prevQualityLimitationReason=a.qualityLimitationReason):a.ssrc===r.auxiliary&&!g(a.qualityLimitationReason)&&a.bytesSent!==0&&this._prevAuxQualityLimitationReason!==a.qualityLimitationReason&&(this._log.info(`aux qualityLimitationReason change to ${a.qualityLimitationReason}`),E.emit("263",{userId:i.userId,reason:a.qualityLimitationReason,prevReason:this._prevAuxQualityLimitationReason,streamType:7,isQosClearFirst:(u=i.localAuxVideoTrack)==null?void 0:u.isQosClearFirst}),this._prevAuxQualityLimitationReason=a.qualityLimitationReason)}else e.audio.bytesSent=a.bytesSent,e.audio.packetsSent=a.packetsSent;else a.type==="candidate-pair"?zi(a)&&(this.totalBytesSent=a.bytesSent,Y(a.currentRoundTripTime)&&(e.rtt=Math.floor(a.currentRoundTripTime*1e3))):a.type==="media-source"&&(a.kind===h.AUDIO?(e.audio.audioLevel=a.audioLevel||0,e.audio.totalAudioEnergy=a.totalAudioEnergy||0,a.echoReturnLoss,a.totalSamplesDuration&&(e.audio.totalSamplesDuration=a.totalSamplesDuration)):a.kind===h.VIDEO&&(a.trackIdentifier===i.getVideoTrackId(h.VIDEO)?e.video.fpsCapture=a.framesPerSecond:a.trackIdentifier===i.getVideoTrackId(h.AUXILIARY)?e.auxiliary.fpsCapture=a.framesPerSecond:e.small.fpsCapture=a.framesPerSecond));if(!g(a.audioLevel)&&((p=i.localMainAudioTrack)!=null&&p.mediaTrack)&&a.trackIdentifier===i.localMainAudioTrack.mediaTrack.id&&(e.audio.audioLevel=a.audioLevel||0),!g(a.frameWidth)){let _=h.SMALL;a.trackIdentifier===i.getVideoTrackId(h.VIDEO)||a.ssrc===r.video?_=h.VIDEO:(a.trackIdentifier===i.getVideoTrackId(h.AUXILIARY)||a.ssrc===r.auxiliary)&&(_=h.AUXILIARY),e[_].frameWidth=a.frameWidth,e[_].frameHeight=a.frameHeight,e[_].framesSent=a.framesSent}}),i.localMainAudioTrack){let a=i.localMainAudioTrack.getInternalAudioLevel();e.audio.micAudioLevel=a,e.audio.audioLevel===0&&(e.audio.audioLevel=a)}this.totalBytesSent||(this.totalBytesSent+=e.audio.bytesSent+e.video.bytesSent+e.auxiliary.bytesSent),Object.keys(e).forEach(a=>{a===h.AUDIO?(i.localMainAudioTrack&&(i.localMainAudioTrack.stat=e[a]),i.localAuxAudioTrack&&(i.localAuxAudioTrack.stat=e[a])):a===h.VIDEO?i.localMainVideoTrack&&(i.localMainVideoTrack.stat=e[a]):a===h.AUXILIARY&&i.localAuxVideoTrack&&(i.localAuxVideoTrack.stat=e[a])})}catch(n){this._log.warn(`failed to getStats on sender connection ${n}`)}return e.rtt===0&&(e.rtt=((o=this.room.networkQuality)==null?void 0:o.uplinkRTT)||0),e})}getReceiverStats(i){return f(this,null,function*(){var r,o,n;let e={tinyId:i.tinyId,userId:i.userId,rtt:0,hasAudio:!1,hasVideo:!1,hasAuxiliary:!1,isSmallSubscribed:!1,audio:{bytesReceived:0,packetsReceived:0,packetsLost:0,p2pDelay:0,totalJitter:0,totalJitterCount:0,audioLevel:0,totalAudioEnergy:0,insertedSamplesForDeceleration:0,removedSamplesForAcceleration:0},video:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,freezeCount:0,totalFreezesDuration:0,totalJitter:0,totalJitterCount:0},auxiliary:{bytesReceived:0,packetsReceived:0,packetsLost:0,framesReceived:0,framesDecoded:0,frameWidth:0,frameHeight:0,fpsDecoded:0,totalJitter:0,totalJitterCount:0}},t=i.getPeerConnection();if(t)try{let{ssrc:a}=i,{muteState:d,subscribeState:l}=i;(this._spcStats||(yield t.getStats())).forEach(u=>{if(u.type==="inbound-rtp"){let p=(u.mediaType||u.kind)===h.AUDIO;if(p){if(u.ssrc!==a.audio||!d.hasAudio)return;e.audio.packetsReceived=u.packetsReceived,e.audio.bytesReceived=u.bytesReceived,e.audio.packetsLost=u.packetsLost,u.insertedSamplesForDeceleration&&(e.audio.insertedSamplesForDeceleration=u.insertedSamplesForDeceleration),u.removedSamplesForAcceleration&&(e.audio.removedSamplesForAcceleration=u.removedSamplesForAcceleration),u.totalSamplesDuration&&(e.audio.totalSamplesDuration=u.totalSamplesDuration),u.totalSamplesReceived&&(e.audio.totalSamplesReceived=u.totalSamplesReceived),u.concealedSamples&&(e.audio.concealedSamples=u.concealedSamples);let{remoteAudioTrack:_}=i;_.stat.packetsReceived=u.packetsReceived,_.stat.bytesReceived=u.bytesReceived,_.stat.packetsLost=u.packetsLost,e.audio.p2pDelay=_.stat.end2EndDelay,e.hasAudio=!0}else{if(ae&&u.bytesReceived===0)return;let _;u.ssrc===a.video&&d.hasVideo&&(e.video.packetsReceived=u.packetsReceived,e.video.bytesReceived=u.bytesReceived,e.video.packetsLost=u.packetsLost,e.video.framesReceived=u.framesReceived,e.video.framesDecoded=u.framesDecoded,e.video.fpsDecoded=u.framesPerSecond,e.hasVideo=!0,_=i.remoteVideoTrack,d.hasSmall&&l.smallVideo&&(e.isSmallSubscribed=!0),u.decoderImplementation&&(!this._prevDecoderImplementationMap.has(e.userId)||this._prevDecoderImplementationMap.get(e.userId)!==u.decoderImplementation)&&(this._log.info(`${e.userId} decoderImplementation change to ${u.decoderImplementation} HWDecoder: ${u.powerEfficientDecoder}`),E.emit("262",{userId:this.room.userId,remoteUserId:e.userId,prevImplementation:this._prevDecoderImplementationMap.get(e.userId),implementation:u.decoderImplementation,codec:i.videoCodec,isHWCodec:u.powerEfficientDecoder}),this._prevDecoderImplementationMap.set(e.userId,u.decoderImplementation))),u.ssrc===a.auxiliary&&d.hasAuxiliary&&(e.auxiliary.packetsReceived=u.packetsReceived,e.auxiliary.bytesReceived=u.bytesReceived,e.auxiliary.packetsLost=u.packetsLost,e.auxiliary.framesReceived=u.framesReceived,e.auxiliary.framesDecoded=u.framesDecoded,e.auxiliary.fpsDecoded=u.framesPerSecond,_=i.remoteAuxiliaryTrack,e.hasAuxiliary=!0),_&&(_.stat.packetsReceived=u.packetsReceived,_.stat.bytesReceived=u.bytesReceived,_.stat.packetsLost=u.packetsLost,_.stat.framesReceived=u.framesReceived,_.stat.framesDecoded=u.framesDecoded,u.jitterBufferDelay&&(_.stat.jitterBufferDelay=Math.floor(u.jitterBufferDelay/u.jitterBufferEmittedCount*1e3)))}u.jitterBufferDelay&&(p?(e.audio.totalJitter=u.jitterBufferDelay,e.audio.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.video&&d.hasVideo?(e.video.totalJitter=u.jitterBufferDelay,e.video.totalJitterCount=u.jitterBufferEmittedCount):u.ssrc===a.auxiliary&&d.hasAuxiliary&&(e.auxiliary.totalJitter=u.jitterBufferDelay,e.auxiliary.totalJitterCount=u.jitterBufferEmittedCount))}else u.type==="candidate-pair"&&zi(u)&&(this.totalBytesReceived=u.bytesReceived,Y(u.currentRoundTripTime)&&(e.rtt=Math.floor(u.currentRoundTripTime*1e3)));g(u.frameWidth)||((u.trackIdentifier===i.getMainStreamVideoTrackId()||u.ssrc===a.video)&&(e.video.frameWidth=u.frameWidth,e.video.frameHeight=u.frameHeight,i.remoteVideoTrack.stat.frameWidth=u.frameWidth,i.remoteVideoTrack.stat.frameHeight=u.frameHeight),(u.trackIdentifier===i.getAuxStreamVideoTrackId()||u.ssrc===a.auxiliary)&&(e.auxiliary.frameWidth=u.frameWidth,e.auxiliary.frameHeight=u.frameHeight,i.remoteAuxiliaryTrack.stat.frameWidth=u.frameWidth,i.remoteAuxiliaryTrack.stat.frameHeight=u.frameHeight)),!g(u.audioLevel)&&i.muteState.audioAvailable&&i.remoteAudioTrack.mediaTrack&&u.trackIdentifier===i.remoteAudioTrack.mediaTrack.id&&(e.audio.audioLevel=u.audioLevel||0,e.audio.totalAudioEnergy=u.totalAudioEnergy||0)}),e.audio.audioLevel===0&&i.muteState.audioAvailable&&(e.audio.audioLevel=i.remoteAudioTrack.getInternalAudioLevel()||0),this.totalBytesReceived||(this.totalBytesReceived+=e.audio.bytesReceived+e.video.bytesReceived+e.auxiliary.bytesReceived),g((r=i.remoteVideoTrack.player.stat)==null?void 0:r.fps)||(e.video.fpsRender=i.remoteVideoTrack.player.stat.fps),g((o=i.remoteAuxiliaryTrack.player.stat)==null?void 0:o.fps)||(e.auxiliary.fpsRender=i.remoteAuxiliaryTrack.player.stat.fps)}catch(a){this._log.warn(`failed to getStats on receiver connection ${a}`)}return e.rtt===0&&(e.rtt=((n=this.room.networkQuality)==null?void 0:n.uplinkRTT)||0),e})}getStats(i,e){return f(this,null,function*(){let t={},r=[];if(this.room.singlePC){let o=this.room.singlePC.getPeerConnection();if(!o)return{senderStats:t,receiverStats:r};let n=L(),a=yield o.getStats(),d=L();d-n>2e3&&this._log.warn(`getStats cost ${d-n}ms`);let l=[],m=new Set(["inbound-rtp","outbound-rtp","track","candidate-pair","media-source"]);a.forEach(u=>m.has(u.type)&&l.push(u)),this._spcStats=l}i&&(t=yield this.getSenderStats(i));for(let[o,n]of e){let a=yield this.getReceiverStats(n);r.push(a)}return{senderStats:t,receiverStats:r}})}getDifferenceValue(i,e){if(Kt(i))return e;let t=e-i;return t<0?0:t}prepareReport({stats:i,report:e,freezeMap:t}){var u;if(!Kt(i.senderStats)){let p={uint32_audio_level:i.senderStats.audio.audioLevel*mt,uint32_audio_energy:(i.senderStats.audio.totalAudioEnergy||0)*1e6,uint32_audio_codec_bitrate:i.senderStats.audio.bytesSent};i.senderStats.audio.micAudioLevel&&(p.uint32_mic_audio_level=i.senderStats.audio.micAudioLevel*mt),i.senderStats.audio.totalSamplesDuration&&(e.msg_device_info.uint32_audio_capture_cost=i.senderStats.audio.totalSamplesDuration);let _=[];if(i.senderStats.video.bytesSent){let R={uint32_video_stream_type:2,uint32_video_codec_fps:i.senderStats.video.framesSent,uint32_video_capture_fps:i.senderStats.video.fpsCapture,uint32_video_width:i.senderStats.video.frameWidth,uint32_video_height:i.senderStats.video.frameHeight,uint32_video_codec_bitrate:i.senderStats.video.bytesSent,uint32_video_enc_fps:i.senderStats.video.framesEncoded,uint32_key_frame_count:i.senderStats.video.keyFramesEncoded,uint32_nack_count:i.senderStats.video.nackCount,uint32_pli_count:i.senderStats.video.pliCount,uint32_encode_cost:(i.senderStats.video.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.video.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.video.retransmittedPacketsSent};_.push(R)}if(i.senderStats.small.bytesSent){let R={uint32_video_stream_type:3,uint32_video_codec_fps:i.senderStats.small.framesSent||0,uint32_video_capture_fps:i.senderStats.small.fpsCapture||0,uint32_video_width:i.senderStats.small.frameWidth||0,uint32_video_height:i.senderStats.small.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.small.bytesSent,uint32_video_enc_fps:i.senderStats.small.framesEncoded||0,uint32_key_frame_count:i.senderStats.small.keyFramesEncoded,uint32_nack_count:i.senderStats.small.nackCount,uint32_pli_count:i.senderStats.small.pliCount,uint32_encode_cost:(i.senderStats.small.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.small.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.small.retransmittedPacketsSent};_.push(R)}if(i.senderStats.auxiliary.bytesSent){let R={uint32_video_stream_type:7,uint32_video_codec_fps:i.senderStats.auxiliary.framesSent||0,uint32_video_capture_fps:i.senderStats.auxiliary.fpsCapture||0,uint32_video_width:i.senderStats.auxiliary.frameWidth||0,uint32_video_height:i.senderStats.auxiliary.frameHeight||0,uint32_video_codec_bitrate:i.senderStats.auxiliary.bytesSent,uint32_video_enc_fps:i.senderStats.auxiliary.framesEncoded||0,uint32_key_frame_count:i.senderStats.auxiliary.keyFramesEncoded,uint32_nack_count:i.senderStats.auxiliary.nackCount,uint32_pli_count:i.senderStats.auxiliary.pliCount,uint32_encode_cost:(i.senderStats.auxiliary.totalEncodeTime||0)*1e3,uint32_send_packet_cost:(i.senderStats.auxiliary.totalPacketSendDelay||0)*1e3,uint32_video_arq_packets:i.senderStats.auxiliary.retransmittedPacketsSent};_.push(R)}let I={uint32_bitrate:0,uint32_lost:0,uint32_rtt:i.senderStats.rtt};e.msg_up_stream_info={msg_audio_status:p,msg_video_status:_,msg_network_status:I}}let{statInterval:r}=this;e.msg_down_stream_info=[],i.receiverStats.forEach(p=>{let _={msg_user_info:{str_identifier:p.userId,uint64_tinyid:p.tinyId},msg_network_status:{uint32_rtt:p.rtt,uint32_bitrate:0,uint32_lost:0},msg_audio_status:{},msg_video_status:[]};if(p.hasAudio){let I={uint32_audio_p2p_delay:p.audio.p2pDelay,uint32_audio_cache_ms:p.audio.totalJitter,uint32_audio_cache_ms_count:p.audio.totalJitterCount,uint32_audio_codec_bitrate:p.audio.bytesReceived,uint32_audio_total_bitrate:p.audio.bytesReceived,uint32_audio_level:p.audio.audioLevel*1e8,uint32_audio_energy:p.audio.totalAudioEnergy*1e6,uint32_audio_receive:p.audio.packetsReceived,uint32_audio_origin_lost:p.audio.packetsLost};_.msg_audio_status=I}if(p.hasVideo){let I=t.get(`${p.userId}_${Ic}`),R=I?I.duration:0,D={uint32_video_stream_type:p.isSmallSubscribed?3:2,uint32_video_receive_fps:p.video.framesReceived,uint32_video_width:p.video.frameWidth,uint32_video_height:p.video.frameHeight,uint32_video_codec_bitrate:p.video.bytesReceived,uint32_video_receive:p.video.packetsReceived,uint32_video_origin_lost:p.video.packetsLost,uint32_video_block_time:R,uint32_video_dec_fps:p.video.framesDecoded,uint32_video_codec_fps:p.video.fpsRender,uint32_video_cache_ms:p.video.totalJitter,uint32_video_cache_ms_count:p.video.totalJitterCount};_.msg_video_status.push(D)}if(p.hasAuxiliary){let I=t.get(`${p.userId}_${Ac}`),R=I?I.duration:0,D={uint32_video_stream_type:7,uint32_video_receive_fps:p.auxiliary.framesReceived,uint32_video_width:p.auxiliary.frameWidth,uint32_video_height:p.auxiliary.frameHeight,uint32_video_codec_bitrate:p.auxiliary.bytesReceived,uint32_video_receive:p.auxiliary.packetsReceived+p.auxiliary.packetsLost,uint32_video_origin_lost:p.auxiliary.packetsLost,uint32_video_block_time:R,uint32_video_dec_fps:p.auxiliary.framesDecoded,uint32_video_codec_fps:p.video.fpsRender,uint32_video_cache_ms:p.auxiliary.totalJitter,uint32_video_cache_ms_count:p.auxiliary.totalJitterCount};_.msg_video_status.push(D)}e.msg_down_stream_info.push(_)});let o=this._prevReport,n=this._prevStats;if(this._prevReport=JSON.parse(JSON.stringify(e)),this._prevStats=JSON.parse(JSON.stringify(i)),e.msg_up_stream_info.msg_audio_status&&o.msg_up_stream_info.msg_audio_status){let p=o.msg_up_stream_info.msg_audio_status,_=e.msg_up_stream_info.msg_audio_status;if(p.uint32_audio_codec_bitrate===0)_.uint32_audio_codec_bitrate=0;else{let I=this.getDifferenceValue(p.uint32_audio_codec_bitrate,_.uint32_audio_codec_bitrate);_.uint32_audio_codec_bitrate=Math.round(I*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=_.uint32_audio_codec_bitrate}(u=o.msg_device_info)!=null&&u.uint32_audio_capture_cost?e.msg_device_info.uint32_audio_capture_cost=2*Math.floor(this.getDifferenceValue(o.msg_device_info.uint32_audio_capture_cost,e.msg_device_info.uint32_audio_capture_cost)*1e3/r):delete e.msg_device_info.uint32_audio_capture_cost}let a=o.msg_up_stream_info.msg_video_status;e.msg_up_stream_info.msg_video_status.forEach(p=>{let _=a.find(te=>te.uint32_video_stream_type===p.uint32_video_stream_type);if(!_||_.uint32_video_codec_bitrate===0){p.uint32_video_codec_bitrate=0,p.uint32_video_enc_fps=0,p.uint32_video_codec_fps=0;return}let I=0,R=0,D=0;_&&p.uint32_video_codec_bitrate>=_.uint32_video_codec_bitrate&&(I=_.uint32_video_codec_bitrate,R=_.uint32_video_enc_fps,D=_.uint32_video_codec_fps);let G=this.getDifferenceValue(I,p.uint32_video_codec_bitrate);p.uint32_video_codec_bitrate=Math.round(G*8/r),e.msg_up_stream_info.msg_network_status.uint32_bitrate+=p.uint32_video_codec_bitrate,p.uint32_video_enc_fps=Math.round(this.getDifferenceValue(R,p.uint32_video_enc_fps)/r),p.uint32_video_codec_fps=Math.round(this.getDifferenceValue(D,p.uint32_video_codec_fps)/r),fi&&_i()===115&&_.uint32_video_width===0&&_.uint32_video_height===0&&_.uint32_video_codec_fps===0&&(p.uint32_video_codec_fps=p.uint32_video_enc_fps),g(_.uint32_key_frame_count)||(p.uint32_key_frame_count=Math.round(this.getDifferenceValue(_.uint32_key_frame_count,p.uint32_key_frame_count))),g(_.uint32_nack_count)||(p.uint32_nack_count=Math.round(this.getDifferenceValue(_.uint32_nack_count,p.uint32_nack_count))),g(_.uint32_pli_count)||(p.uint32_pli_count=Math.round(this.getDifferenceValue(_.uint32_pli_count,p.uint32_pli_count))),g(_.uint32_video_arq_packets)||(p.uint32_video_arq_packets=Math.round(this.getDifferenceValue(_.uint32_video_arq_packets,p.uint32_video_arq_packets))),g(_.uint32_encode_cost)||(p.uint32_encode_cost=Math.round(this.getDifferenceValue(_.uint32_encode_cost,p.uint32_encode_cost)/r)),g(_.uint32_send_packet_cost)||(p.uint32_send_packet_cost=Math.round(this.getDifferenceValue(_.uint32_send_packet_cost,p.uint32_send_packet_cost)/r))});let l=o.msg_down_stream_info;e.msg_down_stream_info=e.msg_down_stream_info.filter(p=>l.find(_=>_.msg_user_info.uint64_tinyid===p.msg_user_info.uint64_tinyid));let m=e.msg_down_stream_info;return m.forEach(p=>{let _=l.find(I=>I.msg_user_info.uint64_tinyid===p.msg_user_info.uint64_tinyid);if(!Kt(p.msg_audio_status)&&!Kt(_.msg_audio_status)){let I=p.msg_audio_status,R=_.msg_audio_status,D=this.getDifferenceValue(R.uint32_audio_cache_ms_count,I.uint32_audio_cache_ms_count);delete I.uint32_audio_cache_ms_count,I.uint32_audio_cache_ms=Math.floor(1e3*this.getDifferenceValue(R.uint32_audio_cache_ms,I.uint32_audio_cache_ms)/D)||0;let G=this.room.remotePublishedUserMap.get(p.msg_user_info.str_identifier);G&&(G.remoteAudioTrack.stat.jitterBufferDelay=I.uint32_audio_cache_ms),I.uint32_audio_origin_lost=this.getDifferenceValue(R.uint32_audio_origin_lost,I.uint32_audio_origin_lost),I.uint32_audio_receive=this.getDifferenceValue(R.uint32_audio_receive,I.uint32_audio_receive),I.uint32_audio_receive+=I.uint32_audio_origin_lost;let te=this.getDifferenceValue(R.uint32_audio_codec_bitrate,I.uint32_audio_codec_bitrate);I.uint32_audio_codec_bitrate=Math.round(te*8/r),I.uint32_audio_total_bitrate=Math.round(te*8/r)}else p.msg_audio_status={};if(p.msg_video_status&&_.msg_video_status){let I=_.msg_video_status;p.msg_video_status=p.msg_video_status.filter(D=>I.find(G=>G.uint32_video_stream_type===D.uint32_video_stream_type)),p.msg_video_status.forEach(D=>{let G=I.find(Mp=>Mp.uint32_video_stream_type===D.uint32_video_stream_type),te=G.uint32_video_receive,sn=G.uint32_video_origin_lost,bp=G.uint32_video_codec_bitrate,j=G.uint32_video_receive_fps,Np=G.uint32_video_dec_fps;D.uint32_video_origin_lost=this.getDifferenceValue(sn,D.uint32_video_origin_lost),D.uint32_video_receive=this.getDifferenceValue(te,D.uint32_video_receive)+D.uint32_video_origin_lost;let vp=this.getDifferenceValue(bp,D.uint32_video_codec_bitrate);D.uint32_video_codec_bitrate=Math.round(vp*8/r);let Dp=this.getDifferenceValue(j,D.uint32_video_receive_fps);D.uint32_video_receive_fps=Math.round(Dp/r),D.uint32_video_dec_fps=Math.round(this.getDifferenceValue(Np,D.uint32_video_dec_fps)/r);let Op=this.getDifferenceValue(G.uint32_video_cache_ms_count,D.uint32_video_cache_ms_count);delete D.uint32_video_cache_ms_count,D.uint32_video_cache_ms=Math.floor(1e3*this.getDifferenceValue(G.uint32_video_cache_ms,D.uint32_video_cache_ms)/Op)||0})}}),n&&i.receiverStats.forEach(p=>{if(p.audio.concealedSamples&&p.audio.totalSamplesReceived){let _=n.receiverStats.find(I=>I.userId===p.userId);if(_&&_.audio.concealedSamples&&_.audio.totalSamplesReceived){let I=p.audio.concealedSamples-_.audio.concealedSamples,R=p.audio.totalSamplesReceived-_.audio.totalSamplesReceived,D=Math.floor(I/R*1e3*r);if(D>r*1e3/5){let G=m.find(te=>te.msg_user_info.str_identifier===p.userId);G&&(G.msg_audio_status.uint32_audio_block_time=D)}}}}),e}getStatsReport(r){return f(this,arguments,function*({uplinkConnection:i,downlinkConnections:e,freezeMap:t}){let o={msg_device_info:{},msg_up_stream_info:{msg_audio_status:{uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_level:0,uint32_audio_energy:0},msg_video_status:[],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}},msg_down_stream_info:[{msg_user_info:{str_identifier:"",uint64_tinyid:0},msg_audio_status:{uint32_audio_cache_ms:0,uint32_audio_format:11,uint32_audio_sample_rate:0,uint32_audio_codec_bitrate:0,uint32_audio_total_bitrate:0,uint32_audio_level:0,uint32_audio_energy:0,uint32_audio_receive:0,uint32_audio_origin_lost:0,uint32_audio_final_lost:0},msg_video_status:[{uint32_video_cache_ms:0,uint32_video_stream_type:0,uint32_video_receive_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_codec_bitrate:0,uint32_video_receive:0,uint32_video_origin_lost:0,uint32_video_block_time:0,uint32_video_dec_fps:0}],msg_network_status:{uint32_bitrate:0,uint32_rtt:0,uint32_lost:0}}]},n=yield this.getStats(i,e);return JSON.stringify(this._prevReport)==="{}"&&(this._prevReport=JSON.parse(JSON.stringify(o))),this.prepareReport({stats:n,report:o,freezeMap:t}),this._prevReportTime=Date.now(),o})}reset(){this._prevReportTime=0,this._prevReport={},this._prevEncoderImplementation="",this._prevQualityLimitationReason="",this._prevDecoderImplementationMap=new Map}};var Zm=ke(Ge());function Ym(s){let i={totalCost:0,local:0,redirect:0,httpCache:0,dns:0,tcp:0,tls:0,request:0,response:0};try{let e=performance.getEntriesByType("resource").reverse();for(let t of e)if(t.name===s){let r=Math.round(t.duration),o=Math.max(Math.round(t.domainLookupStart-t.startTime),0),n=t.redirectStart>0?Math.max(Math.round(t.redirectEnd-t.redirectStart),0):0,a=t.fetchStart>0?Math.max(Math.round(t.domainLookupStart-t.fetchStart),0):0,d=Math.round(t.domainLookupEnd-t.domainLookupStart),l=Math.round(t.requestStart-t.secureConnectionStart),m=Math.round(t.secureConnectionStart-t.connectStart),u=Math.round(t.responseStart-t.requestStart),p=Math.round(t.responseEnd-(t.responseStart||t.startTime));i=k(v({},i),{totalCost:r,local:o,redirect:n,httpCache:a,dns:d,tcp:m,tls:l,request:u,response:p});break}}catch(e){}return i}function Km(s){return new Promise(i=>f(this,null,function*(){let e=setTimeout(()=>{i({totalCost:1e4,local:0,dns:0,tcp:0,tls:0,request:0,response:0})},1e4),t=Date.now(),r=`https://${s}/?t=${t}`;try{yield fetch(r)}catch(n){}clearTimeout(e);let o=Ym(r);o.totalCost===0&&(o.totalCost=Date.now()-t),i(o)}))}var IT=700,wr=class wr extends Zm.default{constructor({signalChannel:e,room:t}){super();c(this,"_room");c(this,"_signalChannel");c(this,"_log");c(this,"uplinkRTT",0);c(this,"uplinkLoss",0);c(this,"downlinkRTT",0);c(this,"downlinkLoss",0);c(this,"pingResults",{});c(this,"_downlinkPrevStatMap",new Map);c(this,"_downlinkLossAndRTTMap",new Map);c(this,"_interval",-1);c(this,"_uplinkNetworkQuality",0);c(this,"_downlinkNetworkQuality",0);this._room=t,this._signalChannel=e,this._log=C.createLogger({id:"q",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this.initialize()}get uplinkNetworkQuality(){return this._uplinkNetworkQuality}set uplinkNetworkQuality(e){e!==this._uplinkNetworkQuality&&this._log.info(`uplink ${this.uplinkNetworkQuality} -> ${e}, rtt: ${this.uplinkRTT}, loss: ${this.uplinkLoss} ws-rtt: ${this._signalChannel.rtt}`),this._uplinkNetworkQuality=e}get downlinkNetworkQuality(){return this._downlinkNetworkQuality}set downlinkNetworkQuality(e){if(e!==this._downlinkNetworkQuality){let{rtt:t,loss:r}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this._log.info(`downlink ${this.downlinkNetworkQuality} -> ${e}, rtt: ${t}, loss: ${r} ws-rtt: ${this._signalChannel.rtt}`)}this._downlinkNetworkQuality=e}initialize(){this._signalChannel.on(B.UPLINK_NETWORK_STATS,e=>{this.handleUplinkNetworkQuality(e)}),this._signalChannel.on(Ee.CONNECTION_STATE_CHANGED,this.handleSignalConnectionStateChange.bind(this)),this.start()}handleUplinkNetworkQuality(e){var d,l;if(e.data.code!==0)return;let t=e.data.data;if(t.delay&&this.updateDelay(t.delay),this._room.signalChannel&&t.wsRtt&&(this._room.signalChannel.rtt=t.wsRtt),!this._room.uplinkConnection){this.uplinkNetworkQuality=0,this.uplinkLoss=0,this.uplinkRTT=0;return}let r=(l=(d=this._room)==null?void 0:d.uplinkConnection)==null?void 0:l.getPeerConnection();if(r&&this.isPeerConnectionDisconnected(r)){this.uplinkNetworkQuality=6,this.uplinkLoss=0,this.uplinkRTT=0;return}let o=t.expectAudPkg+t.expectVidPkg,n=t.recvAudPkg+t.recvVidPkg,a=o-n;o===0&&n===0||(a<=0?this.uplinkLoss=0:this.uplinkLoss=Math.round(a/o*100),this.uplinkRTT=t.rtt,this.uplinkNetworkQuality=this.getNetworkQuality(this.uplinkLoss,this.uplinkRTT))}handleDownlinkNetworkQuality(){return f(this,null,function*(){if(this._room.remotePublishedUserMap.size===0){this.downlinkNetworkQuality=0;return}let e=[...this._room.remotePublishedUserMap.values()],t=e.filter(a=>{var d;return((d=a.getPeerConnection())==null?void 0:d.connectionState)===ce.CONNECTED});if(e.filter(a=>this.isPeerConnectionDisconnected(a.getPeerConnection())).length===e.length){this.downlinkNetworkQuality=6;return}for(let a=0;a<t.length;a++){let d=t[a].getPeerConnection();if(!d)return;let{rtt:l,totalPacketsLost:m,totalPacketsReceived:u}=yield this.getStat(d);if(!this._downlinkPrevStatMap.has(d)){this._downlinkPrevStatMap.set(d,{totalPacketsLost:m,totalPacketsReceived:u});continue}let p=0,_=this._downlinkPrevStatMap.get(d),I=m-_.totalPacketsLost,R=u-_.totalPacketsReceived;I<=0||R<0?p=0:p=Math.round(I/(I+R)*100),this._downlinkPrevStatMap.set(d,{totalPacketsLost:m,totalPacketsReceived:u}),this._downlinkLossAndRTTMap.set(d,{rtt:l,loss:p,userId:t[a].getUserId(),audioDelay:t[a].remoteAudioTrack.stat.end2EndDelay,videoDelay:t[a].remoteVideoTrack.stat.end2EndDelay})}if([...this._downlinkPrevStatMap.keys()].forEach(a=>{this.isPeerConnectionDisconnected(a)&&(this._downlinkPrevStatMap.delete(a),this._downlinkLossAndRTTMap.delete(a))}),this._downlinkLossAndRTTMap.size===0){this.downlinkRTT=0,this.downlinkLoss=0,this.downlinkNetworkQuality=0;return}let{rtt:o,loss:n}=this.getAverageLossAndRTT([...this._downlinkLossAndRTTMap.values()]);this.downlinkRTT=o,this.downlinkLoss=n,this.downlinkNetworkQuality=this.getNetworkQuality(n,o)})}getStat(e){return f(this,null,function*(){let t={rtt:0,totalPacketsLost:0,totalPacketsReceived:0};if(!e||!Er())return t;let r=e.getReceivers();try{for(let o=0;o<r.length;o++)(yield r[o].getStats()).forEach(d=>{d.type==="candidate-pair"&&Y(d.currentRoundTripTime)&&(t.rtt=Math.round(d.currentRoundTripTime*1e3)),d.type==="inbound-rtp"&&(d.mediaType===h.AUDIO||d.mediaType===h.VIDEO)&&(t.totalPacketsLost+=d.packetsLost,t.totalPacketsReceived+=d.packetsReceived)});return t.rtt===0&&(t.rtt=this.uplinkRTT),t}catch(o){return t}})}getAverageLossAndRTT(e){let t={rtt:0,loss:0};return Array.isArray(e)&&e.length>0&&(e.forEach(r=>{t.rtt+=r.rtt,t.loss+=r.loss}),Object.keys(t).forEach(r=>{t[r]=Math.round(t[r]/e.length)})),t}getNetworkQuality(e,t){return e>50||t>500?5:e>30||t>350?4:e>20||t>200?3:e>10||t>100?2:e>=0||t>=0?1:0}handleSignalConnectionStateChange(e){e.state==="DISCONNECTED"?(this.uplinkRTT=0,this.uplinkLoss=0,this.uplinkNetworkQuality=6):e.state==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}handleUplinkConnectionStateChange({state:e}){e==="DISCONNECTED"?(this.uplinkLoss=0,this.uplinkRTT=0,this.uplinkNetworkQuality=6):e==="CONNECTED"&&this.uplinkNetworkQuality===6&&(this.uplinkNetworkQuality=5)}isPeerConnectionDisconnected(e){return!!(e&&(e.connectionState===ce.DISCONNECTED||e.connectionState===ce.FAILED||e.connectionState===ce.CLOSED))}setUplinkConnection(e){this._room.uplinkConnection=e,this._room.uplinkConnection?this._room.uplinkConnection.on("connection-state-changed",this.handleUplinkConnectionStateChange.bind(this)):(this.uplinkNetworkQuality=0,this.uplinkRTT=0,this.uplinkLoss=0)}start(){if(this._interval!==-1){this._log.info("network quality calculating is already started");return}this._log.debug("start network quality calculating"),this._interval=re.run($i,()=>{var n;this.handleDownlinkNetworkQuality();let e=[...this._downlinkLossAndRTTMap.values()];E.emit(T.NETWORK_QUALITY,{room:this._room,uplink:{rtt:this.uplinkRTT,loss:this.uplinkLoss},downlinks:e});let t=(n=this._room.scheduleResult.config)==null?void 0:n.pingDomainInfo,r={uplinkNetworkQuality:this.uplinkNetworkQuality,downlinkNetworkQuality:this.downlinkNetworkQuality,uplinkRTT:this.uplinkRTT,uplinkLoss:this.uplinkLoss,downlinkRTT:this.downlinkRTT,downlinkLoss:this.downlinkLoss};t&&(r=k(v({},r),{pingResults:this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold?this.pingResults:{}})),this.emit(wr.EVENT_NETWORK_QUALITY,r);let o=Date.now();if(t&&(this.uplinkRTT>t.rttThreshold||this.downlinkRTT>t.rttThreshold)&&o-wr.lastPingTime>t.interval*1e3){wr.lastPingTime=Date.now();let a=t.domain.map(d=>Km(d).then(l=>({domain:d,cost:l.totalCost})));Promise.all(a).then(d=>{this.pingResults.isPoorNetwork=d.some(l=>l.cost>IT),this.pingResults.timestamp=o,this.pingResults.data=d,d.forEach(l=>{N.addSuccessEvent({key:521718,cost:l.cost})}),this._log.warn(`All ping results: ${JSON.stringify(d)}`)}).catch(d=>{this._log.warn(`Error during pinging domains: ${d}`)})}},{delay:2e3})}stop(){this._log.debug("stopped"),this._interval!==-1&&(re.clearTask(this._interval),this._interval=-1),this._downlinkLossAndRTTMap.clear(),this._downlinkPrevStatMap.clear()}updateDelay(e){let{tinyIdToUserIdMap:t}=this._room;e.forEach(({srcTinyId:r,videoDelay:o,audioDelay:n})=>{let a=t.get(r);if(a){let d=this._room.remotePublishedUserMap.get(a);d==null||d.setDelay({videoDelay:o,audioDelay:n})}})}};c(wr,"EVENT_NETWORK_QUALITY","0"),c(wr,"lastPingTime",0);var ks=wr;function AT({fn:s,context:i}){return function(...e){try{let t=s.apply(i,e);return Wi(t)?t.catch(r=>C.error(`${s.name}() error observed ${r}`)):t}catch(t){C.error(`${s.name}() error observed ${t}`)}}}var ec=class{constructor(i){c(this,"_frameWorkType");c(this,"_component");c(this,"_language");c(this,"connectionType");c(this,"_room");c(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});c(this,"_keyPrefix");c(this,"_log");c(this,"_intervalId");c(this,"_firstPublishedUserList");c(this,"_networkQuality");c(this,"_basicInfo");c(this,"_pathJoinRoom");c(this,"_pathLeaveRoom");c(this,"_pathMainVideoMap");c(this,"_pathMainAudioMap");c(this,"_pathAuxiliaryMap");c(this,"_remoteStreamStatMap");c(this,"_localStreamStat");c(this,"_eventMap",new Map);c(this,"_captureCostSum",0);c(this,"_captureCostCount",0);c(this,"isDestroyed",!1);this._frameWorkType=i.frameWorkType||30,this._component=i.component||0,this.connectionType=i.connectionType||1,this._language=i.language||0,this._room=i.room,this._keyPrefix="key_point",this._log=C.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&se(this[e])&&(this[e]=AT({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Ce,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,uo().then(i=>{this._basicInfo.string_os_version=Ti(),i?this._basicInfo.string_device_name=i.mobile?i.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(i,e){return this._eventMap.set(i,e),E.on(i,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(T.JOIN_START,this.handleJoinStart).addEvent(T.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(T.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(T.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(T.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(T.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(T.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(T.JOIN_FAILED,this.handleJoinFailed).addEvent(T.LEAVE_START,this.handleLeaveStart).addEvent(T.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(T.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(T.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(T.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(T.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(T.PUBLISH_START,this.handlePublishStart).addEvent(T.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(T.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(T.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(T.PLAY_TRACK_START,this.handlePlayStart).addEvent(T.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(T.PLAYER_STATE_CHANGED,({track:i,state:e,type:t})=>{!i.isRemote||!this.hitTest(i.room)||e==="PLAYING"&&(t===h.AUDIO?this.handleAudioPlaying(i):this.handleVideoPlaying(i))}).addEvent(T.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(T.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(T.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(T.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let r=e.hasAudio||e.hasVideo||e.hasSmall,o=e.hasAuxiliary,n=t.hasAudio||t.hasVideo||t.hasSmall,a=t.hasAuxiliary;!r&&n&&this.handleRemoteStreamAdded(t.userId,"main"),!o&&a&&this.handleRemoteStreamAdded(t.userId,"auxiliary")}).addEvent(T.SINGLE_CONNECTION_STAT,({room:i,stat:e})=>{this.hitTest(i)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("pagehide",this.handleUnload),this._eventMap.forEach((i,e)=>E.off(e,i)),this._eventMap.clear()}destroy(){this.uninstallEvents(),re.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(i){this.hitTest(i.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),i.params&&(g(i.params.frameWorkType)||(this._frameWorkType=i.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),g(i.params.component)||(this._component=i.params.component,this._basicInfo.uint32_component=this._component),g(i.params.language)||(this._language=i.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:i,detailCost:e}){if(this.hitTest(i)&&e){let{totalCost:t,local:r,dns:o,tcp:n,tls:a,request:d,response:l}=e;this._pathJoinRoom.int32_schedule_cost=t,this._pathJoinRoom.int32_schedule_local=r,this._pathJoinRoom.int32_schedule_dns=o,this._pathJoinRoom.int32_schedule_tcp=n,this._pathJoinRoom.int32_schedule_tls=a,this._pathJoinRoom.int32_schedule_request=d,this._pathJoinRoom.int32_schedule_response=l}}handleSignalConnectionStart({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:i,error:e}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof b?Number(e.getExtraCode()||e.getCode()):S.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=i.code,i.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=i.room.getSignalInfo())}handleJoinFailed({room:i,error:e}){this.hitTest(i)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(i){this.hitTest(i.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=i.publishedUserList||[])}handleSendFirstVideoFrame({room:i}){this.hitTest(i)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(i){this.hitTest(i.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(i){this.hitTest(i.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleRemoteStreamAdded(i,e){var r;let t=`${i}_${e}`;if(!this._remoteStreamStatMap.has(t)){let o={userId:i,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:k(v({},CT),{msg_user_info:new Zo({userId:i,tinyId:(r=this._room.remotePublishedUserMap.get(i))==null?void 0:r.tinyId,role:20})})};o.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(t,o)}}handleSubscribeStart({room:i,remotePublishedUser:e,streamType:t,subscribeState:r}){if(!this.hitTest(i))return;let{userId:o,tinyId:n,role:a}=e,d=new Zo({userId:o,tinyId:n,role:a==="anchor"?20:21}),l=Date.now(),m=`${o}_${t}`,u=this._remoteStreamStatMap.get(m);u&&u.subscribeStartTime===0&&(u.subscribeStartTime=l),t==="main"?(e.muteState.hasVideo&&(r.video||r.smallVideo)&&!this._pathMainVideoMap.has(m)&&this._pathMainVideoMap.set(m,{statsToReport:{msg_user_info:d,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:o,sendSubscribeCMDTime:l}),e.muteState.hasAudio&&r.audio&&!this._pathMainAudioMap.has(m)&&this._pathMainAudioMap.set(m,{statsToReport:{msg_user_info:d,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:o,sendSubscribeCMDTime:l})):e.muteState.hasAuxiliary&&r.auxiliary&&!this._pathAuxiliaryMap.has(m)&&this._pathAuxiliaryMap.set(m,{sendSubscribeCMDTime:l})}handleSubscribed({room:i,remotePublishedUser:e,streamType:t}){if(this.hitTest(i)){let r=`${e.userId}_${t}`,o=this._remoteStreamStatMap.get(r);o&&o.subscribedTime===0&&(o.subscribedTime=Date.now())}}handlePlayStart({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._remoteStreamStatMap.get(e);(t==null?void 0:t.playStreamTime)===0&&(t.playStreamTime=Date.now())}handleVideoLoadedData({track:i}){if(!i.isRemote||!this.hitTest(i.room))return;let e=`${i.userId}_${i.streamType}`,t=this._pathMainVideoMap.get(e);t&&t.statsToReport.uint64_combine_first_frame_time===0&&(t.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(i){let e=`${i.userId}_${i.streamType}`,t=Date.now(),r=this._pathMainVideoMap.get(e),o=this._remoteStreamStatMap.get(e);if(r&&(r.statsToReport.uint64_render_first_frame_time===0&&(r.statsToReport.uint64_render_first_frame_time=t),o)){let{statsToReport:a,playStreamTime:d,subscribedTime:l}=o;a.uint32_video_render_first===0&&d-l<=100&&(a.uint32_video_render_first=t-this._pathJoinRoom.uint64_start_time)}if(this._pathAuxiliaryMap.get(e)&&o){let{statsToReport:a,playStreamTime:d,subscribedTime:l}=o;a.uint32_video_render_first===0&&d-l<=100&&(a.uint32_video_render_first=t-this._pathJoinRoom.uint64_start_time)}}handleAudioPlaying(i){let e=`${i.userId}_${i.streamType}`,t=this._pathMainAudioMap.get(e);t&&t.statsToReport.uint64_play_first_frame_time===0&&(t.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(i){this.hitTest(i.room)&&(this._networkQuality.totalUplinkLoss+=i.uplink.loss,this._networkQuality.totalUplinkRTT+=i.uplink.rtt,this._networkQuality.count++,i.downlinks.forEach(({rtt:e,loss:t,userId:r,videoDelay:o,audioDelay:n})=>{let a=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(a)a.totalRTT+=e,a.totalLoss+=t,o&&(a.totalVideoDelay=(a.totalVideoDelay||0)+o,a.videoDelayCount=(a.videoDelayCount||0)+1),n&&(a.totalAudioDelay=(a.totalAudioDelay||0)+n,a.audioDelayCount=(a.audioDelayCount||0)+1),a.count++;else{let d,l,m,u;o&&(l=o,m=1),n&&(d=n,u=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(r,{totalRTT:e,totalLoss:t,count:1,totalAudioDelay:d,totalVideoDelay:l,audioDelayCount:u,videoDelayCount:m})}}))}handleHeartbeatStats(i){if(this.hitTest(i.room)){let{msg_device_info:e,msg_up_stream_info:t,msg_down_stream_info:r}=i.report;if(t.msg_video_status[0]){let{uint32_video_codec_bitrate:o,uint32_video_enc_fps:n,uint32_video_width:a,uint32_video_height:d}=t.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=o,this._localStreamStat.totalVideoFPS+=n,this._localStreamStat.totalVideoWidth+=a,this._localStreamStat.totalVideoHeight+=d,this._localStreamStat.videoCount++}if(t.msg_audio_status){let{uint32_audio_level:o}=t.msg_audio_status;Math.floor(o/mt*100)>0&&(this._localStreamStat.totalAudioLevel+=o/mt,this._localStreamStat.audioLevelCount++)}r.forEach(o=>{let{msg_user_info:n,msg_audio_status:a,msg_video_status:d}=o,l=n.str_identifier,m=this._room.remotePublishedUserMap.get(l);if(d.forEach(u=>{let p=u.uint32_video_stream_type===2,_=u.uint32_video_stream_type===7,I=`${l}_${p?"main":"auxiliary"}`,R=this._remoteStreamStatMap.get(I);if(R&&(p&&(m!=null&&m.remoteVideoTrack.isSubscribed)||_&&(m!=null&&m.remoteAuxiliaryTrack))){R.totalVideoFPS+=u.uint32_video_receive_fps,R.totalVideoBitrate+=u.uint32_video_codec_bitrate,R.videoCount++,R.statsToReport.uint32_video_width===0&&(R.statsToReport.uint32_video_width=u.uint32_video_width),R.statsToReport.uint32_video_height===0&&(R.statsToReport.uint32_video_height=u.uint32_video_height);let D=p?m.remoteVideoTrack:m.remoteAuxiliaryTrack;D.stat.jitterBufferDelay&&(R.videoJitterBufferDelay=D.stat.jitterBufferDelay),D.stat.framesReceived&&(R.statsToReport.uint32_video_consume_render_rate=Math.floor(D.stat.framesDecoded/D.stat.framesReceived*Us(10,6)))}}),!jr(a)){let u=`${l}_main`,p=this._remoteStreamStatMap.get(u);this._remoteStreamStatMap.has(u)&&p&&m!=null&&m.remoteAudioTrack.isSubscribed&&(p.totalAudioBitrate+=a.uint32_audio_codec_bitrate,p.audioCount++,m.remoteAudioTrack.stat.jitterBufferDelay&&(p.audioJitterBufferDelay=m.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(a.uint32_audio_level/mt*100)>0&&(p.totalAudioLevel+=a.uint32_audio_level/mt,p.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:i}){this.hitTest(i)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:i}){i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:i,error:e}){let r={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof b?e.getExtraCode()||e.getCode():S.UNKNOWN);i.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=r,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),i.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=r,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Bi)>=0}hasAudioFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&Fi)>=0}hasAuxFlag(i){return this._firstPublishedUserList.findIndex(e=>e.userId===i&&e.flag&nr)>=0}hitTest(i){return i===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let i=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=i<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((i,e)=>{let{userId:t}=i,r=this._networkQuality.totalDownlinkRTTAndLossMap.get(t);if(r){let{totalLoss:m,count:u,audioDelayCount:p,videoDelayCount:_,totalAudioDelay:I,totalVideoDelay:R}=r;i.statsToReport.uint32_avg_down_loss=Math.floor(m/u),p&&I&&(i.statsToReport.uint32_audio_network_p2p_delay=Math.floor(I/p),i.audioJitterBufferDelay&&(i.statsToReport.uint32_p2p_delay=Math.floor(i.statsToReport.uint32_audio_network_p2p_delay+i.audioJitterBufferDelay))),_&&R&&(i.statsToReport.uint32_video_network_p2p_delay=Math.floor(R/_))}i.videoCount>0&&(i.statsToReport.uint32_video_avg_fps=Math.floor(i.totalVideoFPS/i.videoCount),i.statsToReport.uint32_video_avg_bitrate=Math.floor(i.totalVideoBitrate/i.videoCount)),i.audioCount>0&&(i.statsToReport.uint32_audio_recv_bitrate=i.statsToReport.uint32_audio_bitrate=Math.floor(i.totalAudioBitrate/i.audioCount)),i.audioLevelCount>0&&(i.statsToReport.uint32_audio_play_db=Math.floor(i.totalAudioLevel/i.audioLevelCount*100));let{callDurationCalculator:o}=this._room;o&&(i.statsToReport.uint32_audio_play_time=o.getDuration(e,h.AUDIO),i.statsToReport.uint32_video_play_time=o.getDuration(e,h.VIDEO)),i.statsToReport.uint32_video_render_first=Math.min(i.statsToReport.uint32_video_render_first,xr);let{badCaseDetector:n}=this._room,{dataFreeze:a,count:d}=n.getDataFreezeDuration(e),{renderFreeze:l}=n.getRenderFreezeDuration(e);i.statsToReport.uint32_video_block_count=d,i.statsToReport.uint32_video_block_time=Math.min(a,i.statsToReport.uint32_video_play_time),i.statsToReport.uint32_video_external_block_time=Math.min(l,i.statsToReport.uint32_video_play_time),n.isBlackStream(e)&&i.statsToReport.uint32_video_avg_fps===0?i.statsToReport.uint32_video_black_screen_subjective=1:i.statsToReport.uint32_video_black_screen_subjective=0,(i.subscribeStartTime===0||i.subscribeStartTime-i.streamAddedTime>100||i.playStreamTime===0)&&(this._pathMainAudioMap.delete(e),this._pathMainVideoMap.delete(e),i.statsToReport.uint32_video_render_first=0)}),this._pathMainAudioMap.forEach((i,e)=>{if(!this.hasAudioFlag(i.userId)){this._pathMainAudioMap.delete(e);return}i.statsToReport.uint64_play_first_frame_time-i.statsToReport.uint64_start_enter_time>xr&&(i.statsToReport.uint64_play_first_frame_time=i.statsToReport.uint64_start_enter_time+xr)}),this._pathMainVideoMap.forEach((i,e)=>{if(!this.hasVideoFlag(i.userId)){this._pathMainVideoMap.delete(e);return}i.statsToReport.uint64_render_first_frame_time-i.statsToReport.uint64_start_enter_time>xr&&(i.statsToReport.uint64_render_first_frame_time=i.statsToReport.uint64_start_enter_time+xr)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>xr&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+xr)}getReportData(){this._basicInfo.uint32_networkType=ur();let i={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Zo({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:Xr(this._signalInfo.relayIp),uint32_client_ip:Xr(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Us(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:Xr(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Ks(i),i}report(){return f(this,null,function*(){try{this.prepareReport();let i=this.getReportData();yield this.upload(i),this.initData()}catch(i){this._log.warn(i)}finally{this.isDestroyed&&(this._room=null)}})}upload(i){return f(this,null,function*(){if(i.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),t=yield Lc(i),r=t instanceof ArrayBuffer,o=`${li(e,Vi.KEY_POINT)}&gzip=${+r}`,n=!1;navigator.sendBeacon&&(n=navigator.sendBeacon(o,t));let a=[this.uploadKVStat(N),this.uploadKVStat(Tr)];n||a.push(mi({url:o,body:t,priority:"low"})),yield Promise.all(a)})}setConnectionType(i){this.connectionType=i,this._basicInfo.uint32_connection_type=i}uploadKVStat(i){return f(this,null,function*(){let e=i.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=k(v({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let t=yield Lc(e),r=`${li(+this._room.sdkAppId,Vi.KV_STAT)}&gzip=${+(t instanceof ArrayBuffer)}`,o=!1;navigator.sendBeacon&&(o=navigator.sendBeacon(r,t)),o||mi({url:r,body:t})})}};y([Ke({settings:{timeout:500,retries:3}})],ec.prototype,"upload",1);var xr=5e3,CT={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_render_first:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Zo=class{constructor(i){c(this,"str_identifier");c(this,"str_tinyid");c(this,"uint32_role");this.str_identifier=String(i.userId),this.str_tinyid=String(i.tinyId||0),this.uint32_role=i.role}},ep=ec;var au=class{constructor(){c(this,"_startTime");c(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=L())}stop(){this._endTime===0&&(this._endTime=L())}getDuration(){return this._endTime===0?L()-this._startTime:this._endTime-this._startTime}get endTime(){return this._endTime}},Ls=au;var cu=class{constructor(i){c(this,"_room",null);c(this,"_durationMap");c(this,"_eventMap",new Map);this._room=i.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(T.SUBSCRIBE_SUCCESS,this.handleSubscribed).set(T.UNSUBSCRIBE_SUCCESS,this.handleStreamStopped).set(T.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{var n;let{userId:r}=t;if(!this.hitTest(i))return;e.hasAudio&&!t.hasAudio&&this.stopDurationItem(`${r}_main`,h.AUDIO),e.hasVideo&&!t.hasVideo&&this.stopDurationItem(`${r}_main`,h.VIDEO),e.hasAuxiliary&&!t.hasAuxiliary&&this.stopDurationItem(`${r}_auxiliary`,h.VIDEO);let o=(n=this._room)==null?void 0:n.remotePublishedUserMap.get(r);o&&(!e.hasAudio&&t.hasAudio&&o.remoteAudioTrack.isSubscribed&&this.addDuractionItem(r,h.AUDIO,"main"),!e.hasVideo&&t.hasVideo&&o.remoteVideoTrack.isSubscribed&&this.addDuractionItem(r,h.VIDEO,"main"),!e.hasAuxiliary&&t.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(r,h.VIDEO,"auxiliary"))}),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}handleSubscribed({room:i,streamType:e,remotePublishedUser:t}){if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;if(t.muteState.hasAudio&&e==="main")if(t.remoteAudioTrack.isSubscribed){let n=new Ls,a=this._durationMap.get(o);a?this.isRecording(a.audio)||a.audio.push(n):this._durationMap.set(o,{userId:r,type:e,audio:[n],video:[]})}else this.stopDurationItem(o,h.AUDIO);if(t.muteState.hasVideo||t.muteState.hasAuxiliary)if(t.remoteVideoTrack.isSubscribed||t.remoteAuxiliaryTrack.isSubscribed){let n=new Ls,a=this._durationMap.get(o);a?this.isRecording(a.video)||a.video.push(n):this._durationMap.set(o,{userId:r,type:e,audio:[],video:[n]})}else this.stopDurationItem(o,h.VIDEO)}handleStreamStopped({room:i,streamType:e,remotePublishedUser:t}){if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDurationItem(o,h.AUDIO),this.stopDurationItem(o,h.VIDEO)}isRecording(i){return i.findIndex(e=>e.endTime===0)>=0}addDuractionItem(i,e,t){let r=`${i}_${t}`,o=new Ls,n=this._durationMap.get(r);n?this.isRecording(n[e])||n[e].push(o):this._durationMap.set(r,{userId:i,type:t,audio:e===h.AUDIO?[o]:[],video:e===h.AUDIO?[]:[o]})}stopDurationItem(i,e){if(this._durationMap.has(i)){let r=this._durationMap.get(i)[e].find(o=>o.endTime===0);r&&r.stop()}}hitTest(i){return this._room===i}getDuration(i,e){return this._durationMap.has(i)?this._durationMap.get(i)[e].reduce((r,o)=>r+o.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},tp=cu;var du=class{constructor(i){c(this,"_room");c(this,"_renderFreezeMap",new Map);c(this,"_isVideoPlayingEventFiredMap",new Map);c(this,"_dataFreezeMap",new Map);c(this,"_monitorFreezeData",new Map);c(this,"_eventMap",new Map);this._room=i.room,this.installEvents()}getRenderFreezeMap(){return this._renderFreezeMap}installEvents(){this._eventMap.set(T.LEAVE_SUCCESS,({room:i})=>{this.hitTest(i)&&this.stop()}).set(T.PLAY_TRACK_START,this.onPlayTrackStart).set(T.UNSUBSCRIBE_SUCCESS,({room:i,streamType:e,remotePublishedUser:t})=>{if(!this.hitTest(i))return;let{userId:r}=t,o=`${r}_${e}`;this.stopDataFreeze({key:o,userId:r,type:e})}).set(T.REMOTE_PUBLISH_STATE_CHANGED,({room:i,prevMuteState:e,muteState:t})=>{if(!this.hitTest(i))return;let{userId:r}=t;if(e.hasVideo&&!t.hasVideo){let o="main",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}if(e.hasAuxiliary&&!t.hasAuxiliary){let o="auxiliary",n=`${t.userId}_${o}`;this.stopDataFreeze({key:n,userId:r,type:o})}}).set(T.PLAYER_STATE_CHANGED,({track:i,state:e,reason:t,type:r})=>{if(!(!i.isRemote||!i.room||!this.hitTest(i.room)||r!==h.VIDEO)){if(e==="PLAYING"){let o=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.set(o,!0)}t===h.MUTE?this.onVideoTrackMuted(i):t===h.UNMUTE&&this.onVideoTrackUnmuted(i)}}).set(T.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((i,e)=>E.on(e,i,this))}uninstallEvents(){this._eventMap.forEach((i,e)=>E.off(e,i,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`,o=this._dataFreezeMap.get(r),n=new Ls;o?o.durationItemList.push(n):this._dataFreezeMap.set(r,{userId:e,type:t,durationItemList:[n],isFreezing(){let a=this.durationItemList[this.durationItemList.length-1];return a&&a.endTime===0}})}onVideoTrackUnmuted(i){if(!i.isSubscribed)return;let{userId:e,streamType:t}=i,r=`${e}_${t}`;this.stopDataFreeze({key:r,userId:e,type:t})}onHearBeatReport({room:i,report:e}){this.hitTest(i)&&e.msg_down_stream_info.forEach(t=>{let r=this._room.remotePublishedUserMap.get(t.msg_user_info.str_identifier);if(!r)return;let{userId:o,muteState:n}=r;t.msg_video_status.forEach(a=>{a.uint32_video_stream_type===2&&n.hasVideo&&!n.videoMuted&&r.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"main"}),a.uint32_video_stream_type===7&&n.hasAuxiliary&&r.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:o,fps:a.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:i,userId:e,type:t}){let r=this._dataFreezeMap.get(i);if(!r||!r.isFreezing())return;let o=r.durationItemList[r.durationItemList.length-1];o.stop();let n=o.getDuration();n>_n?this._monitorFreezeData.set(i,{userId:e,type:t,duration:n}):r.durationItemList.pop()}getTotalDuration(i){return i.reduce((e,t)=>{let r=t.getDuration();return e+Math.min(r,5e3)},0)}handleRenderFreeze(r){return f(this,arguments,function*({userId:i,fps:e,type:t}){let o=`${i}_${t}`,n=this._renderFreezeMap.get(o);if(e<=2){let a=L();n&&!n.isFreeze&&(n.freezeTimeline.push({startTime:a,endTime:0}),n.isFreeze=!0),n||this._renderFreezeMap.set(o,{userId:i,type:t,isFreeze:!0,freezeTimeline:[{startTime:a,endTime:0}],renderFreezeTotal:0})}else if(n&&n.isFreeze){n.isFreeze=!1;let a=n.freezeTimeline.pop();if(a){a.endTime=L();let d=a.endTime-a.startTime;n.freezeTimeline.push(a),n.renderFreezeTotal+=Math.min(5e3,d)}}})}onPlayTrackStart({track:i}){if(!i.isRemote||!this.hitTest(i.room)||i.kind!==h.VIDEO||!i.isAvailable)return;let e=`${i.userId}_${i.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(i){let e={dataFreeze:0,count:0},t=this._dataFreezeMap.get(i);if(t){if(t.isFreezing()){let r=t.durationItemList[t.durationItemList.length-1];r.stop(),r.getDuration()<_n&&t.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(t.durationItemList),e.count=t.durationItemList.length}return e}getRenderFreezeDuration(i){let e=this._renderFreezeMap.get(i),t=0,r=0;if(e)if(!e.isFreeze)t=e.renderFreezeTotal;else{let o=L(),n=e.freezeTimeline[e.freezeTimeline.length-1],a=o-n.startTime;t=e.renderFreezeTotal+Math.min(a,5e3),r=e.freezeTimeline.length}return{renderFreeze:t,count:r}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(i){return this._isVideoPlayingEventFiredMap.has(i)?!this._isVideoPlayingEventFiredMap.get(i):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(i){return i===this._room}destroy(){this.uninstallEvents()}},ip=du;var sp=ke(Ge(),1);var RT=[1,0,0,0,1,1,0,1],tc=class extends qe{constructor(i,e){if(super(i,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),i instanceof De)try{this.setTexBuffer(RT)}catch(t){i.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${t.message||t}`}))}}draw2d(i,e,t,r,o){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let n=super.draw2d(i,e,t,r,o);return this.ctx2d.restore(),n}return!1}render(i){var e;return(e=this.input)!=null&&e.requestFrame(i)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var lu=class{constructor(i,e){this.node=i;this.layout=e;c(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},ic=class extends qe{constructor(e,t){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:t});c(this,"inputs",[])}addInput(e,t){if(this.inputs[t.zIndex])throw new Error("input already exists");let r=new lu(e,t);this.inputs[t.zIndex]=r}resize(e,t){let r=this.inputs.reduce((o,n)=>n?Object.assign(o,{width:Math.max(o.width,n.right),height:Math.max(o.height,n.bottom)}):o,{width:0,height:0});super.resize(r.width,r.height),this.context instanceof De&&this.inputs.forEach(o=>{if(o){let n=this.layout2texCoords(o);o.positionBuffer?this.changeBufferData(o.positionBuffer,n):o.positionBuffer=this.createBuffer(n)}})}connect(e,...t){return super.connect(e,...t),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(t=>(t==null?void 0:t.node)===e)]=void 0}render(e){let t=this.context.ctx;if(t.clearColor(0,0,0,0),!this.inputs.reduce((o,n)=>(!n||!n.node.requestFrame(e))&&o,!0)&&t){this.useProgram(),t.enable(t.BLEND),t.blendFunc(t.SRC_ALPHA,t.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let o=0;o<this.inputs.length;o++){let n=this.inputs[o];n&&(n.node.useTexture(),this.draw(n.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((r,o)=>(!o||!o.node.requestFrame(e))&&r,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let r=0;r<this.inputs.length;r++){let o=this.inputs[r];o&&this.draw2d(o.node.image,o.x,o.y,o.width,o.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:t,y:r,width:o,height:n,name:a}=this,d=Date.now(),l=(e-this.lastInfo.totalFrames)/((d-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:t,y:r,width:o,height:n,timestamp:d,fps:l,name:a},v({parent:this.inputs.filter(m=>m).map(m=>m.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var t,r;if(e&&((t=e.node)==null||t.disconnect(),e.positionBuffer&&this.context instanceof De))try{(r=this.context.ctx)==null||r.deleteBuffer(e.positionBuffer)}catch(o){}})}};var yT=`#version 300 es
98
+ 2. If the user is in Chrome 70 and below, when the div container is moved, the playback will be paused.`,color:"orange",class:"orange",textColor:"#fff"},'"displaySurface":"window"':{tips:"Screen sharing captures the application window",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"monitor"':{tips:"Screen sharing captures the entire screen",color:"blue",class:"blue",textColor:"#fff"},'"displaySurface":"browser"':{tips:"Screen sharing captures a certain tab page",color:"blue",class:"blue",textColor:"#fff"},updateMediaSettings:{tips:"The resolution and frame rate below are the actual resolution and frame rate captured",color:"blue",class:"blue",textColor:"#fff"},"main stream start to play with":{tips:"Call remoteStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"stream start to play with":{tips:"Call localStream.play interface",color:"blue",class:"blue",textColor:"#fff"},"main setAudioVolume to 0":{tips:"Business side calls remoteStream.setAudioVolume(0) interface to set the playback volume to 0, which will cause the playback to be silent",color:"orange",class:"orange",textColor:"#fff"},"screen sharing was stopped because the video track is ended":{tips:"Screen sharing capture stopped, possible reasons: user clicks the stop button, the window/page shared by the user is closed, etc.",color:"orange",class:"orange",textColor:"#fff"},"Join() => joining room":{tips:"Call client.join interface",color:"blue",class:"blue",textColor:"#fff"},"publish() => publishing local stream":{tips:"Call client.publish interface",color:"blue",class:"blue",textColor:"#fff"},"subscribe() => subscribe to":{tips:"Call client.subscribe interface",color:"blue",class:"blue",textColor:"#fff"},"switchRole() => switch role":{tips:"Call client.switchRole interface",color:"blue",class:"blue",textColor:"#fff"}};["enterRoom","exitRoom","switchRole","destroy","startLocalAudio","updateLocalAudio","stopLocalAudio","startLocalVideo","updateLocalVideo","stopLocalVideo","startScreenShare","updateScreenShare","stopScreenShare","startRemoteVideo","updateRemoteVideo","stopRemoteVideo","muteRemoteAudio","setRemoteAudioVolume"].forEach(i=>{sg[`${i}()`]={tips:`Call trtc.${i}`,color:"blue",class:"blue",textColor:"#fff"}});var Wk=Object.keys(sg);var FS=0,Su,qs=class qs{constructor(t){this.core=t;l(this,"_core");l(this,"log");l(this,"dumpLocalVideoMap",{});l(this,"dumpRemoteVideoMap",{});l(this,"dialog");this._core=t,this.log=t.log.createChild({id:`${this.getAlias()}${++FS}`}),this.log.info("created")}getName(){return qs.Name}getAlias(){return"dm"}getGroup(){return"dm"}getValidateRule(t){switch(t){case"start":return{name:"StartDebugOptions",required:!1};case"update":return{name:"UpdateDebugOptions",required:!1};case"stop":return{name:"StopDebugOptions",required:!1}}}start(){return A(this,null,function*(){var e;!new URLSearchParams(location.search).has("trtcDebug")&&((e=window.sessionStorage)==null?void 0:e.getItem("TRTC_ENABLE_DEBUG_PLUGIN"))!=="true"||(yield this.openDebugDiaLog(),this.addVideoProcessor())})}update(){}stop(){this.closeDebugDiaLog(),this.removeVideoProcessor()}destroy(){this.stop()}openDebugDiaLog(){return A(this,null,function*(){try{if(Su)yield Su;else{let t=Date.now();Su=this.loadScript(`https://web.sdk.qcloud.com/trtc/webrtc/assets/debug/debug-dialog@${Ke}.js`),yield Su,this.log.info(`download debug dialog script cost: ${Date.now()-t}ms`)}this.dialog=new TRTCDebugDialog(this._core,this.log,this.dumpLocalVideoMap,this.dumpRemoteVideoMap),this._core.kvStatManager.addSuccessEvent({key:592705})}catch(t){this._core.kvStatManager.addFailedEvent({key:592705}),this.log.error("load debug dialog script failed: ",JSON.stringify(t))}})}closeDebugDiaLog(){var t;(t=this.dialog)==null||t.closeDialog(),this.dialog=null}addVideoProcessor(){this._core.room.videoManager.addEncodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.encodeVideo.bind(this):ih,type:1}),this._core.room.videoManager.addDecodeProcessor({processor:this._core.rtcDectection.IS_INSERTABLE_STREAM_SUPPORTED?this.decodeVideo.bind(this):oh,type:1})}removeVideoProcessor(){this._core.room.videoManager.removeEncodeProcessor({type:1}),this._core.room.videoManager.removeDecodeProcessor({type:1})}encodeVideo({frame:t,mediaType:e}){return ih({frame:t,onDump:()=>{if(!e)return;let r=e===2?"sub":"main",o=this.dumpLocalVideoMap[r];o&&(o.data.push(t.data),o.duration>0&&Date.now()-o.startTimestamp>o.duration*1e3&&o.onDumpEnd())}})}decodeVideo({frame:t,track:e}){return oh({frame:t,onDump:()=>{if(!e)return;let r=this.dumpRemoteVideoMap[`${e.userId}-${e.streamType}`];r&&(r.data.push(t.data),r.duration>0&&Date.now()-r.startTimestamp>r.duration*1e3&&r.onDumpEnd())}})}loadScript(t){return new Promise((e,r)=>{this.log.info(`loading debug dialog from ${t}`);let o=document.createElement("script");o.type="text/javascript",o.onload=e,o.onerror=r,o.crossOrigin="anonymous",o.src=t,document.head.append?document.head.append(o):document.getElementsByTagName("head")[0].appendChild(o)})}};l(qs,"Name","Debug"),l(qs,"autoStart",!0),G([Ui({settings:{timeout:3e3,retries:3},onError(t,e,r){var o;(o=t==null?void 0:t.message)!=null&&o.includes("timeout")?e():r(t)}})],qs.prototype,"loadScript",1);var yu=qs;var ng=i=>{switch(i){case"webCodecs":return 504703;case"wasm":return 504704}throw new Error("decoder type not supported")},Au=class{constructor(t,e,r){l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"type","auto");l(this,"config");l(this,"decoder");l(this,"_decodeSink");let{kvStatManager:o,trtc:s}=t;this.config=r.config,this.trackDoneOB=De(e,re.INIT),this.stopOB=gt(this.trackDoneOB),this.startOB=gt(),r.type==="auto"?this.type="webCodecs":this.type=r.type;let a=gt(),d=h=>{let m=this.pipe(e);return a.next("STARTING"),e.log.info(`decoder type: ${this.type}`),be(m,We(this.stopOB),ke(()=>{},T=>{e.log.error(T),o.addFailedEvent({key:ng(this.type),error:T}),h>4?this.startOB.error(T):this.startOB.next(h+1)})),be(m,Sr(1),va(ko))};be(this.startOB,xo(0),Fr(d),We(this.stopOB),ke(()=>{e.player.setOutput(),a.next("STARTED")},h=>{a.next("FAILED")},()=>{o.addSuccessEvent({key:ng(this.type)}),o.addSuccessEvent({key:504702})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}pipe(t){return gi()(e=>A(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o;(o=this.decoder)==null||o.close()});let{type:r}=this;try{switch(r){case"webCodecs":this.decoder=new AudioDecoder({error:o=>{t.log.error(o),e.error(4)},output:o=>{this.decodedFrameCount++,e.next(o),t.player.write(o)}});break;case"wasm":break}this.decoder.configure(this.config)}catch(o){t.log.error(o),e.error(r==="webCodecs"?2:6)}}))}decodeFrame(t){var e;this.inputFrameCount++,((e=this.decoder)==null?void 0:e.state)==="configured"&&this.decoder.decode(new EncodedAudioChunk({data:t.data,timestamp:t.timestamp,type:"key"}))}},BS={type:"object"},ka=class ka{constructor(t){this.core=t;l(this,"log");l(this,"contextMap",new Map);l(this,"decodeProcessorMap",new WeakMap);this.log=t.log.createChild({id:`${this.getAlias()}`})}getAlias(){return ka.Name}getGroup(t){return t.track.userId+t.track.streamType}getName(){return ka.Name}getValidateRule(t){return BS}start(t){let{track:e}=t;this.decodeProcessorMap.set(e,this.decode(t)),this.core.room.audioManager.addDecodeProcessor({processor:({frame:r,track:o})=>this.decodeProcessorMap.has(o)?this.decodeProcessorMap.get(o)({frame:r,track:o}):r,type:3})}decode(t){return({frame:e,track:r})=>{if(r!==t.track)return e;if(this.contextMap.has(r))return this.contextMap.get(r).decodeFrame(e);let o=new Au(this.core,r,t);return be(o.trackDoneOB,Sr(1),ke(()=>{this.core.clearStarted(this,this.getGroup(t)),this.stop({track:r})})),this.contextMap.set(r,o),o.decodeFrame(e)}}stop({track:t}){let e=this.contextMap.get(t);e&&(e.close("stop"),this.contextMap.delete(t),this.contextMap.size===0&&this.core.room.audioManager.removeDecodeProcessor({type:3}))}update(t){let e=this.contextMap.get(t.track);if(e){if(t.type==="mock"){e.mock(10);return}e.close("update"),this.contextMap.set(t.track,new Au(this.core,t.track,t))}}};l(ka,"Name","TRTCAudioDecoder");var La=ka;var ag=0,Ua=new Set,Tt=null;Ll(ig);Rs.checkStorage();Vm();var $S={RtcError:oe,ErrorCode:ae,ErrorCodeDictionary:yr},le=class le extends cg.EventEmitter{constructor(e,r){super();l(this,"_room");l(this,"_eventListened",new Set);l(this,"_localVideoTrack",null);l(this,"_localAudioTrack",null);l(this,"_localScreenTrack",null);l(this,"_localScreenAudioTrack",null);l(this,"_localVideoConfig",null);l(this,"_localScreenConfig",null);l(this,"_localAudioConfig",null);l(this,"_remoteVideoConfigMap",new Map);l(this,"_remoteAudioConfigMap",new Map);l(this,"_remoteAudioVolumeMap",new Map);l(this,"_remoteAudioMuteMap",new Map);l(this,"_mediaTrackMap",new WeakMap);l(this,"_log",U.createLogger({id:`t${++ag}`}));l(this,"_plugins",new Map);l(this,"_networkQuality",null);l(this,"_speakerId");l(this,"_getPCMAbortCtrl");this._room=new e(J({logger:this._log,frameWorkType:le.frameWorkType},r)),this._room.videoDecodeFallbackType=r.videoDecodeFallback,this._log.debug(`TRTC.create() ${JSON.stringify(r,(o,s)=>o==="plugins"?s.map(a=>a.Name):s)}`),Object.defineProperties(this,{dumpAudio:{enumerable:!1,value(o){return this._room.audioManager.dump(o)}}}),r.plugins&&r.plugins.forEach(o=>{this._use(o,r.assetsPath)}),this._use(gu,r.assetsPath),this._use(Tu,r.assetsPath),this._use(La,r.assetsPath||Oc),this._use(yu),r.enableSEI&&pa&&this._use(Iu),this._room.on("audio-volume",o=>{!o.find(s=>s.userId==="")&&this._localAudioTrack&&o.push({userId:"",volume:Math.floor(this._localAudioTrack.getAudioLevel()*100)}),this.emit(K.AUDIO_VOLUME,{result:o.sort((s,a)=>a.volume-s.volume)})}),this._room.videoManager.on("error",o=>{this._log.error(new oe({code:ae.OPERATION_FAILED,extraCode:5504,message:o.message,originError:o}))}),this._listenEvents(),this._initActiveSpeaker(),eg(this,"trtc")}static create(e){}static _create(e,r){H_();let o=new le(e,r||{});return Ua.add(o),o}get room(){return this._room}_listenEvents(){vt(this,this._room).add("peer-join",e=>{let{userId:r}=e;this.emit(K.REMOTE_USER_ENTER,{userId:r})}).add("peer-leave",e=>{this.emit(K.REMOTE_USER_EXIT,{userId:e}),this._remoteAudioVolumeMap.delete(e)}).add("banned",e=>{this._exitRoom().then(()=>{this.emit(K.KICKED_OUT,{reason:e.reason})})}).add("error",e=>{this._exitRoom().then(()=>{this.emit(K.ERROR,oe.convertFrom(e))})}).add("signal-connection-state-changed",e=>{this.emit(K.CONNECTION_STATE_CHANGED,e)}).add("network-quality",e=>{this._networkQuality=e;let r=pe(J({},e),{uplinkRTT:Math.min(e.uplinkRTT,On),downlinkRTT:Math.min(e.downlinkRTT,On)});this.emit(K.NETWORK_QUALITY,r)}).add("remote-published",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{vt(o,o).add("player-state-changed",s=>{let a=pe(J({},s),{userId:e.userId});o.kind===D.VIDEO&&(a.streamType=qi(o.streamType)),this.emit(o.kind===D.AUDIO?K.AUDIO_PLAY_STATE_CHANGED:K.VIDEO_PLAY_STATE_CHANGED,a)}).add("error",s=>{s.getCode()===Y.PLAY_NOT_ALLOWED&&this.emit(K.AUTOPLAY_FAILED,{userId:o.userId,resume:()=>o.player.resume()})})})}).add("remote-unpublished",e=>{[e.remoteAudioTrack,e.remoteVideoTrack,e.remoteAuxiliaryTrack].forEach(o=>{at(o)})}).add("remote-publish-state-changed",({prevMuteState:e,muteState:r})=>{let{userId:o}=r,s=e.audioAvailable,a=e.videoAvailable,{audioAvailable:d,videoAvailable:h}=r;d||this._remoteAudioConfigMap.delete(o),h||this._remoteVideoConfigMap.delete(`${o}_main`),r.hasAuxiliary||this._remoteVideoConfigMap.delete(`${o}_sub`),a!==h&&(h?this._onVideoAvailable({userId:o,streamType:"main"}):this._onVideoUnavailable({userId:o,streamType:"main"}),this.emit(h?K.REMOTE_VIDEO_AVAILABLE:K.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"main"})),s!==d&&(d?this._onAudioAvailable({userId:o}):this._onAudioUnavailable({userId:o,muteState:r}),this.emit(d?K.REMOTE_AUDIO_AVAILABLE:K.REMOTE_AUDIO_UNAVAILABLE,{userId:o})),e.hasAuxiliary!==r.hasAuxiliary&&(r.hasAuxiliary?this._onVideoAvailable({userId:o,streamType:"sub"}):this._onVideoUnavailable({userId:o,streamType:"sub"}),this.emit(r.hasAuxiliary?K.REMOTE_VIDEO_AVAILABLE:K.REMOTE_VIDEO_UNAVAILABLE,{userId:o,streamType:"sub"}))}).add("sei-message",e=>{this.emit(K.SEI_MESSAGE,pe(J({},e),{streamType:qi(e.streamType)}))}).add("firewall-restriction",()=>{this.emit(K.ERROR,new oe({code:ae.OPERATION_FAILED,extraCode:5501}))}).add("heartbeat-report",e=>{var s,a,d,h,m,T,I;let r={2:"big",3:"small",7:"sub"},o={rtt:Math.min(e.msg_up_stream_info.msg_network_status.uint32_rtt||((s=e.msg_down_stream_info[0])==null?void 0:s.msg_network_status.uint32_rtt)||((a=this._networkQuality)==null?void 0:a.uplinkRTT)||((d=this._networkQuality)==null?void 0:d.downlinkRTT)||0,On),upLoss:((h=this._networkQuality)==null?void 0:h.uplinkLoss)||0,downLoss:((m=this._networkQuality)==null?void 0:m.downlinkLoss)||0,bytesSent:e.bytes_sent||0,bytesReceived:e.bytes_received||0,localStatistics:{audio:{bitrate:(((T=e.msg_up_stream_info.msg_audio_status)==null?void 0:T.uint32_audio_codec_bitrate)||0)/1e3,audioLevel:(((I=e.msg_up_stream_info.msg_audio_status)==null?void 0:I.uint32_audio_level)||0)/di},video:e.msg_up_stream_info.msg_video_status.filter(v=>r[v.uint32_video_stream_type]).map(v=>({bitrate:(v.uint32_video_codec_bitrate||0)/1e3,width:v.uint32_video_width,height:v.uint32_video_height,frameRate:v.uint32_video_enc_fps,videoType:r[v.uint32_video_stream_type]}))},remoteStatistics:e.msg_down_stream_info.map(v=>({userId:v.msg_user_info.str_identifier,audio:{bitrate:(v.msg_audio_status.uint32_audio_codec_bitrate||0)/1e3,audioLevel:(v.msg_audio_status.uint32_audio_level||0)/di},video:v.msg_video_status.map(N=>({bitrate:(N.uint32_video_codec_bitrate||0)/1e3,width:N.uint32_video_width,height:N.uint32_video_height,frameRate:N.uint32_video_dec_fps,videoType:r[N.uint32_video_stream_type]}))}))};this.emit(K.STATISTICS,o)}).add("custom-message",e=>{this.emit(K.CUSTOM_MESSAGE,e)}).add("layerData",e=>this.emit(K.LAYER_DATA,e)).add("first-video-frame",e=>{this.emit(K.FIRST_VIDEO_FRAME,pe(J({},e),{streamType:qi(e.streamType)}))}),vt(this,ht).add("audioInputAdded",e=>{this.emit(K.DEVICE_CHANGED,{type:"microphone",action:"add",device:e})}).add("audioInputRemoved",e=>{this.emit(K.DEVICE_CHANGED,{type:"microphone",action:"remove",device:e})}).add("videoInputAdded",e=>{this.emit(K.DEVICE_CHANGED,{type:"camera",action:"add",device:e})}).add("videoInputRemoved",e=>{this.emit(K.DEVICE_CHANGED,{type:"camera",action:"remove",device:e})}).add("audioOutputAdded",e=>A(this,null,function*(){if(this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"add",device:e}),Tt&&Tt.deviceId===Mn){let r=(yield Vi()).find(o=>o.deviceId===Mn);r&&Tt.groupId!==r.groupId&&(Tt=r,this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}})).add("audioOutputRemoved",e=>A(this,null,function*(){this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"remove",device:e});let r=(yield Vi())[0];if(!r||!Tt||Tt.groupId===r.groupId)return;let o=Tt.deviceId===e.deviceId,s=Tt.deviceId===Mn&&Tt.deviceId===r.deviceId;(o||s)&&(Tt=r,this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"active",device:r}))}))}use(e){let r,o;"plugin"in e?(r=e.plugin,o=e.assetsPath):r=e,this._use(r,o||Oc)}_use(e,r){if(this._plugins.get(e.Name)){this._log.warn("duplicate install plugin",e.Name);return}let s=new e(K_.call(this,{TRTC:le,room:this._room,errorModule:$S,assetsPath:r}));this._plugins.set(e.Name,s),e.autoStart&&this.startPlugin(e.Name)}enterRoom(e){return A(this,null,function*(){var h,m;let{scene:r="rtc",enableAutoPlayDialog:o=!0,autoReceiveAudio:s=!0,autoReceiveVideo:a=!1}=e;e.proxy&&(this._room.setProxyServer(e.proxy),!Se(e.proxy)&&e.proxy.turnServer&&((m=(h=this._room).setTurnServer)==null||m.call(h,e.proxy.turnServer,e.proxy.iceTransportPolicy))),this._room.enableAutoPlayDialog=o,this._room.autoReceiveAudio=s,this._room.autoReceiveVideo=a,nt(e.preferHW)&&(this._room.preferHW=e.preferHW);let d={sdkAppId:e.sdkAppId,userId:e.userId,userSig:e.userSig,privateMapKey:e.privateMapKey||null,latencyLevel:e.latencyLevel,role:e.role==="audience"?21:20,roomId:e.roomId||0,strRoomId:e.strRoomId||"",businessInfo:e.businessInfo||null,streamId:null,userDefineRecordId:e.userDefineRecordId||null,frameWorkType:e.frameWorkType,component:e.component,language:e.language,priority:e.priority,useVp8:e.useVp8};e.strRoomId&&!e.roomId?this._room.useStringRoomId=!0:this._room.useStringRoomId=!1,yield this._room.join(d,r,le.frameWorkType),this._checkTrackToPublish(),Kp.start()})}exitRoom(){return A(this,null,function*(){return yield this._exitRoom()})}switchRole(e,r){return A(this,null,function*(){r!=null&&r.privateMapKey&&(this._room.privateMapKey=r.privateMapKey),r!=null&&r.latencyLevel&&(this._room.latencyLevel=r.latencyLevel),yield this._room.switchRole(e),e==="anchor"&&this._checkTrackToPublish()})}destroy(){at(this),this.removeAllListeners(),this._room.destroy(),Ua.delete(this),Ua.size===0&&Kp.destroy(),this._localAudioTrack&&this.stopLocalAudio(),this._localVideoTrack&&this.stopLocalVideo(),this._localScreenTrack&&this.stopScreenShare(),this._plugins.forEach(e=>{var r;return(r=e.destroy)==null?void 0:r.call(e)}),this._plugins.clear(),F.off("102",this._onLocalTrackCaptured,this)}startLocalAudio(){return A(this,arguments,function*(e={publish:!0}){if(this._localAudioTrack){this._log.warn("local audio is already started");return}let{publish:r=!0,mute:o,option:s}=e,a=new fi(this._room.audioManager),d={},h={muted:!0};s&&(L(s.microphoneId)?L(s.audioTrack)||(d.customSource=s.audioTrack):d.deviceId=s.microphoneId,s&&$e(s.captureVolume)&&a.setCaptureVolume(s.captureVolume),L(s.profile)||(Se(s.profile)?xc[s.profile]&&a.setProfile(xc[s.profile]):a.setProfile(s.profile)),$e(s.earMonitorVolume)&&(h.muted=!(s.earMonitorVolume>0),h.volume=s.earMonitorVolume),L(s.echoCancellation)||(a.profile.echoCancellation=s.echoCancellation),L(s.noiseSuppression)||(a.profile.noiseSuppression=s.noiseSuppression),L(s.autoGainControl)||(a.profile.autoGainControl=s.autoGainControl)),a.on("5",m=>{this.emit(K.ERROR,new oe({code:ae.DEVICE_ERROR,extraCode:5309,messageParams:{error:m}}))}),a.on("2",m=>{this.emit(K.DEVICE_CHANGED,{type:"microphone",action:"active",device:m})}),a.on("4",m=>{let T;m.error&&(T=oe.convertFrom(m.error)),this.emit(K.PUBLISH_STATE_CHANGED,pe(J({},m),{error:T}))}),this._listenOutputTrackChanged(a),this._speakerId&&a.setAudioOutput(this._speakerId),yield a.capture(d),L(o)||a.setMute(o),vt(a,a).add("player-state-changed",m=>{this.emit(K.AUDIO_PLAY_STATE_CHANGED,pe(J({},m),{userId:""}))}),this.listeners(K.AUDIO_FRAME).length>0&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(m=>{this.emit(le.EVENT.AUDIO_FRAME,{data:m})})),this._getPCMAbortCtrl&&a.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(m=>{this.emit(le.EVENT.AUDIO_FRAME,{data:m})}))}),r&&this._room.isJoined&&this._room.publish(a).catch(()=>{}),this._localAudioTrack=a,this._localAudioConfig=pe(J({},e),{publish:r}),yield this._updateAudioPlayOption({playOption:h,track:a})})}updateLocalAudio(e){return A(this,null,function*(){if(!this._localAudioTrack||!this._localAudioConfig)return;let{publish:r,mute:o,option:s}=e,a={};s&&(s.microphoneId?yield this._localAudioTrack.switchDevice(s.microphoneId):L(s.audioTrack)||(yield this._localAudioTrack.setInputMediaStreamTrack(s.audioTrack)),L(s.captureVolume)||this._localAudioTrack.setCaptureVolume(s.captureVolume),L(s.earMonitorVolume)||(a.muted=!(s.earMonitorVolume>0),a.volume=s.earMonitorVolume),yield this._localAudioTrack.update3A(s)),this._room.isJoined&&!L(r)&&(r&&!this._localAudioConfig.publish&&this._room.publish(this._localAudioTrack).catch(()=>{}),this._localAudioConfig.publish&&!r&&this._room.unpublish(this._localAudioTrack).catch(()=>{})),L(o)||this._localAudioTrack.setMute(o),yield this._updateAudioPlayOption({playOption:a,track:this._localAudioTrack,prevConfig:this._localAudioConfig}),Or(this._localAudioConfig,e)})}stopLocalAudio(){return A(this,null,function*(){this._localAudioTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localAudioTrack).catch(()=>{})),this._localAudioTrack.stop(),this._localAudioTrack.close(),this._room.audioManager.removeInput(this._localAudioTrack),at(this._localAudioTrack),this._localAudioTrack=null,this._localAudioConfig=null,this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("stopLocalAudio"),delete this._getPCMAbortCtrl))})}startLocalVideo(){return A(this,arguments,function*(e={publish:!0,view:null}){if(this._localVideoTrack){this._log.warn("local video is already started");return}let{view:r,publish:o=!0,mute:s,option:a}=e,d=new Ir(this._room.videoManager),h={},m={};a&&(a.cameraId?h.deviceId=a.cameraId:L(a.useFrontCamera)?L(a.videoTrack)||(h.customSource=a.videoTrack):h.facingMode=a.useFrontCamera?D.FACING_MODE_USER:D.FACING_MODE_ENVIRONMENT,a.qosPreference&&(h.contentHint=Oa(a.qosPreference)),L(a.profile)||(Se(a.profile)?wr[a.profile]&&d.setProfile(wr[a.profile]):d.setProfile(a.profile)),L(a.fillMode)||(m.objectFit=a.fillMode),L(a.mirror)||(m.mirror=a.mirror),L(a.small)||(ua()?Se(a.small)?d.small=wr[a.small]:a.small===!0?d.small=wr["120p"]:d.small=a.small:this._log.warn("small stream is not supported"))),d.once("first-video-frame",T=>{this.emit(K.FIRST_VIDEO_FRAME,pe(J({},T),{streamType:qi(T.streamType)}))}),d.on("5",T=>{this.emit(K.ERROR,new oe({code:ae.DEVICE_ERROR,extraCode:5308,messageParams:{error:T}}))}),d.on("2",T=>{this.emit(K.DEVICE_CHANGED,{type:"camera",action:"active",device:T})}),d.on("4",T=>{let I;T.error&&(I=oe.convertFrom(T.error)),this.emit(K.PUBLISH_STATE_CHANGED,pe(J({},T),{error:I}))}),this._listenOutputTrackChanged(d),yield d.capture(h),L(s)||(yield d.setMute(s)),vt(d,d).add("player-state-changed",T=>{this.emit(K.VIDEO_PLAY_STATE_CHANGED,pe(J({},T),{userId:"",streamType:"main"}))}),o&&this._room.isJoined&&this._room.publish(d).catch(()=>{}),this._localVideoTrack=d,this._localVideoConfig=pe(J({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:d})})}updateLocalVideo(e){return A(this,null,function*(){if(!this._localVideoTrack||!this._localVideoConfig)return;let{view:r,publish:o,mute:s,option:a}=e,d={};if(a)if(L(a.profile)||(Se(a.profile)?wr[a.profile]&&this._localVideoTrack.setProfile(wr[a.profile]):this._localVideoTrack.setProfile(a.profile),(!a.cameraId||!this._localVideoTrack.isNeedToSwitchDevice(a.cameraId))&&L(a.useFrontCamera)&&this._localVideoTrack.applyProfile()),a.cameraId?yield this._localVideoTrack.switchDevice(a.cameraId):L(a.useFrontCamera)?L(a.videoTrack)||(yield this._localVideoTrack.setInputMediaStreamTrack(a.videoTrack)):yield this._localVideoTrack.switchDevice(a.useFrontCamera?D.FACING_MODE_USER:D.FACING_MODE_ENVIRONMENT),L(a.fillMode)||(d.objectFit=a.fillMode),L(a.mirror)||(d.mirror=a.mirror),a.qosPreference&&this._localVideoTrack.mediaTrack&&this._localVideoTrack.setContentHint(Oa(a.qosPreference)),a.small){let h=!this._localVideoTrack.small;ua()?(a.small===!0?this._localVideoTrack.small=wr["120p"]:Se(a.small)?this._localVideoTrack.small=wr[a.small]:this._localVideoTrack.small=a.small,this._room.videoManager.update(),h&&this._room.enableSmall(!0)):this._log.warn("small stream is not supported")}else a.small===!1&&this._localVideoTrack.small&&(delete this._localVideoTrack.small,this._room.videoManager.update(),this._room.enableSmall(!1));this._room.isJoined&&!L(o)&&(o&&!this._localVideoConfig.publish&&this._room.publish(this._localVideoTrack).catch(()=>{}),this._localVideoConfig.publish&&!o&&this._room.unpublish(this._localVideoTrack).catch(()=>{})),L(s)||(yield this._localVideoTrack.setMute(s)),yield this._updateVideoPlayOption({view:r,playOption:d,track:this._localVideoTrack,prevConfig:this._localVideoConfig}),Or(this._localVideoConfig,e)})}stopLocalVideo(){return A(this,null,function*(){this._localVideoTrack&&(this._room.isJoined&&(yield this._room.unpublish(this._localVideoTrack).catch(()=>{})),this._localVideoTrack.stop(),this._localVideoTrack.close(),at(this._localVideoTrack),this._localVideoTrack=null,this._localVideoConfig=null)})}startScreenShare(){return A(this,arguments,function*(e={publish:!0,view:null}){if(this._localScreenTrack){this._log.warn("screen share is already started");return}let{view:r=null,publish:o=!0,option:s}=e,a=new Bi(this._room.videoManager);a.on("4",I=>{let v;I.error&&(v=oe.convertFrom(I.error)),this.emit(K.PUBLISH_STATE_CHANGED,pe(J({},I),{error:v}))}),a.once("first-video-frame",I=>{this.emit(K.FIRST_VIDEO_FRAME,pe(J({},I),{streamType:qi(I.streamType)}))}),this._listenOutputTrackChanged(a),e.streamType==="main"&&(a.mediaType=4);let d=null,h={},m={};s&&(L(s.profile)||(Se(s.profile)?kc[s.profile]&&a.setProfile(kc[s.profile]):a.setProfile(s.profile)),s.systemAudio&&(h.systemAudio=!0,h.echoCancellation=s.echoCancellation,h.noiseSuppression=s.noiseSuppression,h.autoGainControl=s.autoGainControl),L(s.fillMode)||(m.objectFit=s.fillMode),s.videoTrack&&(h.videoTrack=s.videoTrack),s.audioTrack&&(h.audioTrack=s.audioTrack),s.captureElement&&(h.captureElement=s.captureElement),s.preferDisplaySurface&&(h.preferDisplaySurface=s.preferDisplaySurface),s.qosPreference&&(h.contentHint=Oa(s.qosPreference)));let T=yield a.capture(h);if(a.mediaTrack.addEventListener(D.ENDED,()=>{this._stopScreenShare(),this.emit(K.SCREEN_SHARE_STOPPED)}),T.getAudioTracks()[0]&&(d=new wo(this._room.audioManager),yield d.setInputMediaStreamTrack(T.getAudioTracks()[0]),this._speakerId&&d.setAudioOutput(this._speakerId)),vt(a,a).add("player-state-changed",I=>{this.emit(K.VIDEO_PLAY_STATE_CHANGED,pe(J({},I),{userId:"",streamType:"sub"}))}),o&&this._room.isJoined){let I=[a];d&&I.push(d),this._room.publish(...I).catch(()=>{})}this._localScreenTrack=a,this._localScreenAudioTrack=d,this._localScreenConfig=pe(J({},e),{view:r,publish:o}),yield this._updateVideoPlayOption({view:r,playOption:m,track:a})})}updateScreenShare(e){return A(this,null,function*(){if(!this._localScreenTrack||!this._localScreenConfig)return;let{view:r,publish:o,option:s}=e,a={};if(s&&(L(s.fillMode)||(a.objectFit=s.fillMode),s.qosPreference)){let d=Oa(s.qosPreference);this._localScreenTrack.setContentHint(d)}this._room.isJoined&&!L(o)&&(o&&!this._localScreenConfig.publish&&(this._room.publish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.publish(this._localScreenAudioTrack).catch(()=>{})),this._localScreenConfig.publish&&!o&&(this._room.unpublish(this._localScreenTrack).catch(()=>{}),this._localScreenAudioTrack&&this._room.unpublish(this._localScreenAudioTrack).catch(()=>{}))),yield this._updateVideoPlayOption({view:r,playOption:a,track:this._localScreenTrack,prevConfig:this._localScreenConfig}),Or(this._localScreenConfig,e)})}stopScreenShare(){return A(this,null,function*(){return yield this._stopScreenShare()})}startRemoteVideo(e){return A(this,null,function*(){let{view:r,userId:o,streamType:s,option:a}=e,d=`${o}_${s}`;if(this._remoteVideoConfigMap.has(d)){this._log.warn(`remote video has already started. userId:${o}, streamType:${s}`);return}let h=this._room.remotePublishedUserMap.get(o);if(!h)return;let m={},T=s==="main"?h.remoteVideoTrack:h.remoteAuxiliaryTrack;this._listenOutputTrackChanged(T),a&&(L(a.fillMode)||(m.objectFit=a.fillMode),L(a.mirror)||(m.mirror=a.mirror),m.canvasRender=a.canvasRender,s==="main"&&!L(a.small)&&(h.remoteVideoTrack.setMediaType(a.small?8:4),this._room.changeType(a.small,T.user))),yield this._room.subscribe(T),yield this._enableVideoDecodeFallback(T,s),yield this._updateVideoPlayOption({view:r,playOption:m,track:T}),this._emitTrackEvent(T),this._remoteVideoConfigMap.set(d,{config:e}),a&&!L(a.receiveWhenViewVisible)&&this._observeView({remoteTrack:T,view:r,receiveWhenViewVisible:a.receiveWhenViewVisible,viewRoot:a==null?void 0:a.viewRoot})})}updateRemoteVideo(e){return A(this,null,function*(){var z,Te;let{view:r,userId:o,streamType:s,option:a}=e,d=`${o}_${s}`,h=this._remoteVideoConfigMap.get(d);if(!h||!this._room.remotePublishedUserMap.has(o))return;let m={};a&&(L(a.fillMode)||(m.objectFit=a.fillMode),L(a.mirror)||(m.mirror=a.mirror));let T=null,I=this._room.remotePublishedUserMap.get(o);if(s==="main"&&(I!=null&&I.muteState.hasVideo)&&(T=I.remoteVideoTrack),s==="sub"&&(I!=null&&I.muteState.hasAuxiliary)&&(T=I.remoteAuxiliaryTrack),!T)return;let{config:v}=h;s==="main"&&a&&!L(a.small)&&this._room.changeType(a.small,T.user),yield this._updateVideoPlayOption({view:r,playOption:m,track:T,prevConfig:v}),Or(v,e);let N=L(a==null?void 0:a.receiveWhenViewVisible)?(z=v.option)==null?void 0:z.receiveWhenViewVisible:a.receiveWhenViewVisible,j=L(r)?v.view:r,H=L(a==null?void 0:a.viewRoot)?(Te=v.option)==null?void 0:Te.viewRoot:a.viewRoot;this._observeView({remoteTrack:T,view:j,receiveWhenViewVisible:N,viewRoot:H})})}stopRemoteVideo(e){return A(this,null,function*(){return this._stopRemoteVideo(e)})}_stopRemoteVideo(e,r=!0){return A(this,null,function*(){let o=[],s=this._room.remotePublishedUserMap.get(e.userId);if(s){let{muteState:d,remoteVideoTrack:h,remoteAuxiliaryTrack:m}=s;e.streamType==="main"&&(h.stop(),d.hasVideo&&o.push(h)),e.streamType==="sub"&&(m.stop(),d.hasAuxiliary&&o.push(m))}for(let d of o)r&&(yield this._room.unsubscribe(d),this._mediaTrackMap.delete(d.outMediaTrack));let a=this._remoteVideoConfigMap.get(`${e.userId}_${e.streamType}`);a&&a.observer&&a.observer.disconnect(),this._remoteVideoConfigMap.delete(`${e.userId}_${e.streamType}`)})}muteRemoteAudio(e,r){return A(this,null,function*(){this._remoteAudioMuteMap.set(e,r);try{if(e==="*")if(r)yield this._stopRemoteAudio({userId:e});else{let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)s.muteState.hasAudio&&!this._remoteAudioConfigMap.has(s.userId)&&(yield this._startRemoteAudio({userId:s.userId}))}else r?yield this._stopRemoteAudio({userId:e}):this._remoteAudioConfigMap.has(e)||(yield this._startRemoteAudio({userId:e}))}catch(o){throw this._remoteAudioMuteMap.delete(e),o}})}setRemoteAudioVolume(e,r){if(e==="*"){let o=[...this._room.remotePublishedUserMap.values()];for(let s of o)this._remoteAudioVolumeMap.set(s.userId,r),s.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:s.remoteAudioTrack})}else if(e){let o=this._room.remotePublishedUserMap.get(e);this._remoteAudioVolumeMap.set(e,r),o&&o.remoteAudioTrack.isSubscribed&&this._updateAudioPlayOption({playOption:{volume:r},track:o.remoteAudioTrack})}}startPlugin(e,r){return A(this,null,function*(){return e.start(r)})}updatePlugin(e,r){return A(this,null,function*(){return e.update(r)})}stopPlugin(e,r){return A(this,null,function*(){return e.stop(r)})}enableAudioVolumeEvaluation(e=2e3,r=!1){this._room.enableAudioVolumeEvaluation(e,r)}on(e,r,o){return this.listeners(e).includes(r)?this:(this._log.debug("on",e),super.on(e,r,o),this._eventListened.add(e),e===le.EVENT.AUDIO_FRAME&&!this._getPCMAbortCtrl&&(this._getPCMAbortCtrl=this._room.audioManager.getPCM(s=>{this.emit(le.EVENT.AUDIO_FRAME,{data:s})}),this._localAudioTrack&&this._localAudioTrack.on("input-media-track-changed",()=>{this._getPCMAbortCtrl&&(this._getPCMAbortCtrl.abort("inputMediaTrackChanged"),this._getPCMAbortCtrl=this._room.audioManager.getPCM(s=>{this.emit(le.EVENT.AUDIO_FRAME,{data:s})}))})),this)}emit(e,...r){try{Q_.has(e)&&this._log.debug(`emit ${e} ${JSON.stringify(r)}`)}catch(o){}return super.emit(e,...r)}off(e,r,o){var s,a;return this._log.debug("off",e),e==="*"?(this._eventListened.clear(),this.removeAllListeners(),(s=this._getPCMAbortCtrl)==null||s.abort("off"),delete this._getPCMAbortCtrl):(super.off(e,r,o),e===le.EVENT.AUDIO_FRAME&&((a=this._getPCMAbortCtrl)==null||a.abort("off"),delete this._getPCMAbortCtrl)),this}getAudioTrack(e={userId:"",streamType:"main"}){let r,o=null,s="main",a=!1;if(Se(e)?r=e:(r=e.userId,a=e.processed===!0,e.streamType&&(s=e.streamType)),r){let d=this._room.remotePublishedUserMap.get(r);d&&(o=d.remoteAudioTrack)}else o=s==="sub"?this._localScreenAudioTrack:this._localAudioTrack;return o?a&&o.outMediaTrack&&o.outMediaTrack!==o.mediaTrack?o.outMediaTrack.clone():o.mediaTrack:null}getVideoTrack(e={userId:"",streamType:"main"}){let{userId:r="",streamType:o="main",processed:s=!1}=e,a=null;if(r==="")o==="main"&&this._localVideoTrack&&(a=this._localVideoTrack),o==="sub"&&this._localScreenTrack&&(a=this._localScreenTrack);else{let d=this._room.remotePublishedUserMap.get(r);d&&(a=o==="main"?d.remoteVideoTrack:d.remoteAuxiliaryTrack)}return a?s&&a.outMediaTrack&&a.outMediaTrack!==a.mediaTrack?a.outMediaTrack.clone():a.mediaTrack:null}getVideoSnapshot(e={}){let{userId:r,streamType:o="main"}=e;if(r){let s=this._room.remotePublishedUserMap.get(r);if(o==="main"&&(s!=null&&s.muteState.hasVideo))return s.remoteVideoTrack.getVideoFrame();if(o==="sub"&&(s!=null&&s.muteState.hasAuxiliary))return s.remoteAuxiliaryTrack.getVideoFrame()}else{if(o==="main"&&this._localVideoTrack)return this._localVideoTrack.getVideoFrame();if(o==="sub"&&this._localScreenTrack)return this._localScreenTrack.getVideoFrame()}return""}_setCurrentSpeaker(e){var r,o;this._speakerId=e,(r=this._localAudioTrack)==null||r.setAudioOutput(e),(o=this._localScreenAudioTrack)==null||o.setAudioOutput(e),this._room.remotePublishedUserMap.forEach(s=>s.remoteAudioTrack.setAudioOutput(e))}setCurrentSpeaker(e){return A(this,null,function*(){(yield Vi()).forEach(o=>{o.deviceId===e&&(this._setCurrentSpeaker(e),this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"active",device:o}),Tt=o)}),this._log.warn('the "setCurrentSpeaker" method of the instance will be deprecated in the future, please use "TRTC.setCurrentSpeaker" instead. For more information, please visit: https://web.sdk.qcloud.com/trtc/webrtc/v5/doc/en/TRTC.html#.setCurrentSpeaker')})}_startRemoteAudio(e){return this._doStartRemoteAudio(e)}_doStartRemoteAudio(e){return A(this,null,function*(){let{userId:r}=e;if(this._remoteAudioConfigMap.has(r)){this._log.warn(`remote audio has already started. userId:${r}`);return}let o=this._room.remotePublishedUserMap.get(r);if(!o)return;let s={},a=o.remoteAudioTrack;this._listenOutputTrackChanged(a),this._speakerId&&a.setAudioOutput(this._speakerId);try{let d=this._remoteAudioVolumeMap.get(r),h=$e(d)?d:100;s.volume=h,this._remoteAudioConfigMap.set(r,e),yield this._room.subscribe(a),be(De(a,"decode-failed"),We(De(a,re.INIT)),ke(()=>{this.startPlugin(La.Name,{track:a,type:"auto",config:{codec:"opus",sampleRate:48e3,numberOfChannels:1}})})),yield this._updateAudioPlayOption({playOption:s,track:a})}catch(d){throw this._remoteAudioConfigMap.delete(r),d}this._emitTrackEvent(a)})}_stopRemoteAudio(e,r=!0){return A(this,null,function*(){let o=this._room.remotePublishedUserMap.get(e.userId);o&&(o.remoteAudioTrack.stop(),o.muteState.hasAudio&&r&&(yield this._room.unsubscribe(o.remoteAudioTrack)),this._mediaTrackMap.delete(o.remoteAudioTrack.outMediaTrack)),this._remoteAudioConfigMap.delete(`${e.userId}`)})}_enableVideoDecodeFallback(e,r){let o=this._room.videoDecodeFallbackType;!o||!this._plugins.has("TRTCVideoDecoder")||(this._log.debug("remote video will fall back when decode failed"),be(De(e,"decode-failed"),We(De(e,re.INIT)),Ca(()=>{this.startPlugin("TRTCVideoDecoder",{type:"auto",renderer:"videoFrame",track:e,config:{codec:"avc1.420028"},fallback:o})}),Vo(De(e,"decode-downgrade-state-changed")),ke(s=>{this.emit(K.VIDEO_DECODE_DOWNGRADE_STATE_CHANGED,pe(J({},s),{streamType:r,userId:e.userId}))},s=>{this._log.error("fallback",s)},()=>this._log.info("fallback complete"))))}_updateVideoPlayOption(a){return A(this,arguments,function*({view:e,playOption:r,track:o,prevConfig:s}){if(o.setMirror(r.mirror),L(e)&&s&&s.view&&!Wc(r)){let d=ls(s.view);d.length>0&&(yield o.play(d,r))}if(!L(e)){let d=ls(e);d.length>0?yield o.play(d,r):o.stop()}})}_updateAudioPlayOption(s){return A(this,arguments,function*({playOption:e={},track:r,prevConfig:o}){if(!r.isPlayCalled)try{yield r.play(null,e)}catch(a){}L(e.muted)||r.setPlayerMute(e.muted),L(e.volume)||r.setAudioVolume(e.volume/100)})}_listenOutputTrackChanged(e){e.listeners("output-media-track-changed").length===0&&e.on("output-media-track-changed",()=>this._emitTrackEvent(e,!1))}_emitTrackEvent(e,r=!0){let o=e.isRemote?e.userId:"";e.outMediaTrack&&(r&&this._mediaTrackMap.get(e.outMediaTrack)===o||(this._mediaTrackMap.set(e.outMediaTrack,o),this.emit(K.TRACK,{userId:o,streamType:qi(e.streamType),track:e.outMediaTrack})))}_checkTrackToPublish(){var r,o,s;let e=[];if((r=this._localAudioConfig)!=null&&r.publish&&this._localAudioTrack&&e.push(this._localAudioTrack),(o=this._localVideoConfig)!=null&&o.publish&&this._localVideoTrack&&e.push(this._localVideoTrack),(s=this._localScreenConfig)!=null&&s.publish&&(this._localScreenTrack&&e.push(this._localScreenTrack),this._localScreenAudioTrack&&e.push(this._localScreenAudioTrack)),e.length!==0)return this._room.publish(...e).catch(()=>{})}_observeView({remoteTrack:e,view:r,receiveWhenViewVisible:o=!1,viewRoot:s}){if(L(r))return;let a=this._remoteVideoConfigMap.get(`${e.userId}_${qi(e.streamType)}`);if(!a)return;let d=a.observer||void 0;if(r===null||it(r)&&r.length===0||!o){d==null||d.disconnect(),e.isSubscribed||this._room.subscribe(e).catch(()=>{});return}let m=a.visibleViewMap||new Map,T=-1;(!d||d.root!==s)&&(d==null||d.disconnect(),m.clear(),d=new IntersectionObserver(v=>{v.forEach(N=>{m.set(N.target,N.isIntersecting)}),clearTimeout(T),T=window.setTimeout(()=>{[...m.values()].find(j=>j)?e.isSubscribed||this._room.subscribe(e).catch(()=>{}):e.isSubscribed&&this._room.unsubscribe(e).catch(()=>{})},200)},{root:s}));let I=new Set(ls(r));m.forEach((v,N)=>{I.has(N)||(d.unobserve(N),m.delete(N))}),I.forEach(v=>{m.set(v,!0),d.observe(v)}),d.takeRecords().forEach(v=>{m.set(v.target,v.isIntersecting)}),a.visibleViewMap=m,a.observer=d}_exitRoom(){return A(this,null,function*(){this._room.isJoined&&(yield this._room.leave()),new Set([...this._remoteAudioConfigMap.keys(),...this._remoteAudioMuteMap.keys()]).forEach(e=>{this._stopRemoteAudio({userId:e}).catch()}),[...this._remoteVideoConfigMap.keys()].forEach(e=>{let r=e.includes("main")?"main":"sub",o=e.split(`_${r}`)[0];o&&this._stopRemoteVideo({userId:o,streamType:r}).catch()}),this._remoteVideoConfigMap.clear(),this._remoteAudioConfigMap.clear(),this._remoteAudioMuteMap.clear(),this._remoteAudioVolumeMap.clear(),tg(this),this._room.remotePublishedUserMap.forEach(e=>{at(e.remoteAudioTrack),at(e.remoteVideoTrack),at(e.remoteAuxiliaryTrack)})})}_stopScreenShare(){return A(this,null,function*(){var e;if(this._localScreenTrack){if(this._room.isJoined){let r=[this._localScreenTrack];this._localScreenAudioTrack&&r.push(this._localScreenAudioTrack),yield(e=this._room)==null?void 0:e.unpublish(...r).catch(()=>{})}this._localScreenTrack.stop(),this._localScreenTrack.close(),this._localScreenAudioTrack&&(this._localScreenAudioTrack.stop(),this._localScreenAudioTrack.close(),this._room.audioManager.removeInput(this._localScreenAudioTrack),this._localScreenAudioTrack=null),at(this._localScreenTrack),this._localScreenTrack=null,this._localScreenConfig=null}})}_onLocalTrackCaptured({track:e}){e.kind==="audio"&&(!Tt||xs(Tt))&&(this._initActiveSpeaker(),F.off("102",this._onLocalTrackCaptured,this))}_initActiveSpeaker(){return A(this,null,function*(){if(Tt&&!xs(Tt))this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"active",device:Tt});else{let e=yield Vi();e[0]&&!xs(e[0])?(Tt=e[0],this.emit(K.DEVICE_CHANGED,{type:"speaker",action:"active",device:e[0]})):F.on("102",this._onLocalTrackCaptured,this)}})}_onAudioAvailable({userId:e}){let r=this._remoteAudioMuteMap.has(e)?this._remoteAudioMuteMap.get(e):this._remoteAudioMuteMap.get("*");(r===!1||this._room.autoReceiveAudio&&!r)&&this._doStartRemoteAudio({userId:e}).catch(()=>{})}_onVideoAvailable({userId:e,streamType:r}){if(!this._room.autoReceiveVideo)return;let o=this._room.remotePublishedUserMap.get(e);if(o){let s=r==="main"?o.remoteVideoTrack:o.remoteAuxiliaryTrack,a=[s];this._room.autoReceiveAudio&&a.push(o.remoteAudioTrack),this._room.subscribe(...a).then(()=>{this._emitTrackEvent(s)}).catch(()=>{})}}_onAudioUnavailable({userId:e,muteState:r}){r.hasAudio&&r.audioMuted||this._stopRemoteAudio({userId:e},!1).catch(()=>{})}_onVideoUnavailable({userId:e,streamType:r}){this._stopRemoteVideo({userId:e,streamType:r},!1).catch(()=>{})}sendSEIMessage(e,r){var s;let o=this._plugins.get("SEI");o&&(o.update({buffer:e,options:pe(J({seiPayloadType:243},r),{small:!!((s=this._localVideoTrack)!=null&&s.small)})}),X.addCount({key:5e5,useUV:!0}))}sendCustomMessage(e){var r,o;(o=(r=this._room).sendCustomMessage)==null||o.call(r,e),X.addCount({key:500001,useUV:!0})}static setLogLevel(e,r){U.setLogLevel(e),L(r)||(r?U.enableUploadLog():U.disableUploadLog())}static isSupported(){return Rd()}static getCameraList(e=!0){return er(e)}static getMicrophoneList(e=!0){return Gt(e)}static getSpeakerList(e=!0){return Vi(e)}static setCurrentSpeaker(e){return A(this,null,function*(){if(pt&&(e===nr.SPEAKER||e===nr.HEADSET)){let o=yield le.getMicrophoneList(),s="";if(o.forEach(a=>{a.label===e&&(s=a.deviceId)}),!s)return;Ua.forEach(a=>A(this,null,function*(){a._localAudioTrack&&(yield a.updateLocalAudio({option:{microphoneId:s}}))}));return}(yield Vi()).forEach(o=>{o.deviceId===e&&(Ua.forEach(s=>{s._setCurrentSpeaker(e),s.emit(K.DEVICE_CHANGED,{type:"speaker",action:"active",device:o})}),Tt=o)})})}static _addKVStat({type:e,key:r,value:o,base:s,useUV:a,version:d}){switch(d&&(yo.version=d),e){case"count":yo.addCount({key:r,useUV:a});break;case"enum":yo.addEnum({key:r,value:o,useUV:a});break;case"number":yo.addNumber({key:r,value:o,split:s});break}}};l(le,"_loggerManager",U),l(le,"EVENT",K),l(le,"ERROR_CODE",ae),l(le,"TYPE",nr),l(le,"frameWorkType",30),G([qe({replaceArg:e=>({argIndex:0,value:{name:"plugin"in e?e.plugin.Name:e.Name,assetsPath:"assetsPath"in e?e==null?void 0:e.assetsPath:"default"}})})],le.prototype,"use",1),G([Nt(Et.TRTC.enterRoom),Gi("room",([e],[r])=>(e.roomId||e.strRoomId)===(r.roomId||r.strRoomId)&&e.userId===r.userId&&e.sdkAppId===r.sdkAppId),Ae(e=>function(r){return this._log.setUserId(r.userId),this._log.setSdkAppId(r.sdkAppId),e.call(this,r)}),qe()],le.prototype,"enterRoom",1),G([qe()],le.prototype,"exitRoom",1),G([Nt(Et.TRTC.switchRole),Ho("room",{merge:(e,r)=>r}),qe()],le.prototype,"switchRole",1),G([qe()],le.prototype,"destroy",1),G([Nt(Et.TRTC.startLocalAudio),Gi("audio",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.microphoneId)===((s=r==null?void 0:r.option)==null?void 0:s.microphoneId)}),qe()],le.prototype,"startLocalAudio",1),G([Nt(Et.TRTC.updateLocalAudio),Ho("audio",{debounce:{delay:200,getKey:()=>`${ag}-localAudio`,isNeedToDebounce:e=>{var r;return!L((r=e.option)==null?void 0:r.captureVolume)}}}),qe()],le.prototype,"updateLocalAudio",1),G([ji("audio"),qe()],le.prototype,"stopLocalAudio",1),G([Nt(Et.TRTC.startLocalVideo),Gi("video",([e],[r])=>{var o,s;return((o=e==null?void 0:e.option)==null?void 0:o.cameraId)===((s=r==null?void 0:r.option)==null?void 0:s.cameraId)}),qe()],le.prototype,"startLocalVideo",1),G([Nt(Et.TRTC.updateLocalVideo),Ho("video"),qe()],le.prototype,"updateLocalVideo",1),G([ji("video"),qe()],le.prototype,"stopLocalVideo",1),G([Nt(Et.TRTC.startScreenShare),Gi("screen",()=>!0),qe()],le.prototype,"startScreenShare",1),G([Nt(Et.TRTC.updateScreenShare),Ho("screen"),qe()],le.prototype,"updateScreenShare",1),G([qe()],le.prototype,"stopScreenShare",1),G([Nt(Et.TRTC.startRemoteVideo),Gi(e=>`v${e.userId}${e.streamType}`,()=>!0),qe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],le.prototype,"startRemoteVideo",1),G([Nt(Et.TRTC.updateRemoteVideo),Ho(e=>`v${e.userId}${e.streamType}`),qe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],le.prototype,"updateRemoteVideo",1),G([Nt(Et.TRTC.stopRemoteVideo),Ae(e=>function(r){return A(this,null,function*(){if(r.userId==="*"){let o=[];return this._room.remotePublishedUserMap.forEach(s=>{this._remoteVideoConfigMap.has(`${s.userId}_main`)&&o.push(this.stopRemoteVideo({streamType:"main",userId:s.userId}).catch(()=>{})),this._remoteVideoConfigMap.has(`${s.userId}_sub`)&&o.push(this.stopRemoteVideo({streamType:"sub",userId:s.userId}).catch(()=>{}))}),Promise.all(o)}return e.call(this,r)})}),qe({getRemoteId:e=>`${e.userId}_${e.streamType}`})],le.prototype,"stopRemoteVideo",1),G([ji(e=>`v${e.userId}${e.streamType}`)],le.prototype,"_stopRemoteVideo",1),G([Nt(...Et.TRTC.muteRemoteAudio),qe({getRemoteId:e=>e})],le.prototype,"muteRemoteAudio",1),G([Xp(...Et.TRTC.setRemoteAudioVolume),rg(200,e=>e),qe({getRemoteId:e=>e})],le.prototype,"setRemoteAudioVolume",1),G([fu("start"),Fi(e=>{var r;return(r=e.afterStart)==null?void 0:r.call(e)}),Gi((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),qe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Nm[e.getName()],ignoreLog:e=>e.getName()==="Debug"})],le.prototype,"startPlugin",1),G([fu("update"),Ho((e,r)=>e.disableRandomCall?null:e.getAlias()+e.getGroup(r)),qe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>wm[e.getName()]})],le.prototype,"updatePlugin",1),G([fu("stop"),ji((e,r)=>{if(e.disableRandomCall)return null;let o=e.getGroup(r),s=e.getAlias();return o==="*"?new RegExp(`${s}.*`):s+o}),qe({replaceArg:e=>({argIndex:0,value:e.getName()}),getKVReportKey:e=>Mm[e.getName()]})],le.prototype,"stopPlugin",1),G([Xp(...Et.TRTC.enableAudioVolumeEvaluation)],le.prototype,"enableAudioVolumeEvaluation",1),G([qe()],le.prototype,"getVideoSnapshot",1),G([qe()],le.prototype,"_setCurrentSpeaker",1),G([Gi(e=>`a${e.userId}`,()=>!0)],le.prototype,"_startRemoteAudio",1),G([Ae(e=>function(r){return A(this,null,function*(){return r.userId==="*"?Promise.all([...this._room.remotePublishedUserMap.values()].map(o=>this._stopRemoteAudio(pe(J({},r),{userId:o.userId})).catch(()=>{}))):e.call(this,r)})}),ji(e=>`a${e.userId}`)],le.prototype,"_stopRemoteAudio",1),G([ji("room")],le.prototype,"_exitRoom",1),G([ji("screen")],le.prototype,"_stopScreenShare",1),G([Nt(...Et.TRTC.sendSEIMessage),Hp({timesInSecond:30,maxSizeInSecond:8e3,getSize:(...e)=>e[0].byteLength})],le.prototype,"sendSEIMessage",1),G([Nt(Et.TRTC.sendCustomMessage),Hp({timesInSecond:30,maxSizeInSecond:8e3,getSize:e=>e.data.byteLength})],le.prototype,"sendCustomMessage",1),G([Nt(Et.TRTC.create)],le,"_create",1);var sh=le,Js=sh;var bu=class{constructor(t,e){l(this,"_flag");l(this,"terminalType");l(this,"userId");l(this,"tinyId");l(this,"role");l(this,"remoteAudioTrack");l(this,"remoteVideoTrack");l(this,"remoteAuxiliaryTrack");this.userId=e.userId||"",this.tinyId=e.tinyId||"",this.role=e.role||"audience",this.terminalType=e.terminalType,this.remoteAudioTrack=new Mo(t,this),this.remoteVideoTrack=new Hi(t,this),this.remoteAuxiliaryTrack=new ou(t,this),this.flag=e.flag||0}get subscribeState(){let t={audio:!1,video:!1,auxiliary:!1,smallVideo:!1};return this.remoteVideoTrack.isSubscribed&&(this.remoteVideoTrack.mediaType&8?t.smallVideo=!0:t.video=!0),this.remoteAudioTrack.isSubscribed&&(t.audio=!0),this.remoteAuxiliaryTrack.isSubscribed&&(t.auxiliary=!0),t}get muteState(){return Vn(this.flag,this.userId)}get flag(){return this._flag}set flag(t){if(t===this._flag)return;let e,r=this.muteState;this._flag=t;let o=this.muteState;for(e in o)r[e]!=o[e]&&console.log(this.userId,e,r[e],"->",o[e]);this.remoteAudioTrack.onFlagChanged(),this.remoteVideoTrack.onFlagChanged(),this.remoteAuxiliaryTrack.onFlagChanged()}};var nh=class{constructor(){l(this,"_set",new Set);F.on(P.LEAVE_SUCCESS,this.delete,this)}add({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,e||t.roomId,t.sdkAppId,t.useStringRoomId);this._set.add(r)}delete({room:t,roomId:e}){if(t.scene==="rtc")return;let r=this.getKey(t.userId,t.roomId||e,t.sdkAppId,t.useStringRoomId);this._set.delete(r)}getKey(t,e,r,o){return`${r}_${e}_${t}_${o}`}isJoined({userId:t,roomId:e,sdkAppId:r,room:o}){return o.scene==="rtc"?!1:this._set.has(this.getKey(t,e,r,o.useStringRoomId))}};function HS(){return A(this,null,function*(){let i,t;try{let I=yield Gt();i=I&&I.length}catch(I){}try{let I=yield er();t=I&&I.length}catch(I){}let e={microphone:i,camera:t},{isH264EncodeSupported:r,isVp8EncodeSupported:o,isH264DecodeSupported:s,isVp8DecodeSupported:a}=this.checkSystemResult.detail,d=Li.basis(),h={webRTC:d.isWebRTCSupported,getUserMedia:d.isGetUserMediaSupported,webSocket:d.isWebSocketsSupported,screenShare:d.isScreenShareSupported,webAudio:d.isWebAudioSupported,h264Encode:r,h264Decode:s,vp8Encode:o,vp8Decode:a},m={browser:d.browser,os:d.os,trtc:h,devices:e},T={isWebCodecSupported:d.isWebCodecSupported,isMediaSessionSupported:d.isMediaSessionSupported,isWebTransportSupported:d.isWebTransportSupported};Ve.uploadEvent({log:`trtcstats-${JSON.stringify(m)}`,userId:this.userId}),this._log.info(`TrtcStats-${JSON.stringify(m)}`),Ve.uploadEvent({log:`trtcadvancedstats-${JSON.stringify(T)}`,userId:this.userId})})}function dg(){return Ae(i=>{let t=new nh;return function(e,r,o){return A(this,null,function*(){let s=String(e.roomId||e.strRoomId);if(this.userId=e.userId,this.sdkAppId=e.sdkAppId,this.userSig=e.userSig,this._log.setSdkAppId(this.sdkAppId),this._log.setUserId(this.userId),this.scene=r,e.privateMapKey=e.privateMapKey||"",this.isJoined)throw new ue({code:Y.INVALID_OPERATION,message:st({key:ot.INVALID_JOIN})});if(this.checkDestroy(),t.isJoined({userId:this.userId,roomId:s,sdkAppId:this.sdkAppId,room:this}))throw new ue({code:Y.INVALID_OPERATION,message:st({key:ot.REPEAT_JOIN,data:this.userId})});t.add({room:this,roomId:s}),this.role=e.role===21?"audience":"anchor",this._log.info(`Join() => joining room: ${s} useStringRoomId: ${this.useStringRoomId} scene: ${this.scene} role: ${this.role}`),F.emit(P.JOIN_START,{room:this,roomId:s,params:e});let a=Pr.getEnv();a||(a=ei.QCLOUD,this.proxy_ws&&(this.proxy_ws.startsWith(Lc.OLD_CLOUD_LADDER)?a=ei.OLD_CLOUD_LADDER:this.proxy_ws.startsWith(Lc.WEBRTC)&&(a=ei.WEBRTC))),Ve.setConfig({env:a,sdkAppId:String(this.sdkAppId),userId:this.userId,roomId:s}),Li.checkSystemRequirementsInternal().then(d=>{this.checkSystemResult=d,HS.call(this)});try{!this.proxy_ws&&!this.proxy_wt&&!this.scheduleResult.domains&&!Pr.getEnv()&&(yield this.schedule(e,o));let d=yield i.call(this,e,r,o);return this.roomId=s,this._joinedTimestamp=Pr.performanceNow(),F.emit(P.JOIN_SUCCESS,{room:this}),o===30&&!e.component&&Ve.uploadEvent({log:`stat-conv-${Number(Tr)}-${location.hostname}`,userId:this.userId}),d}catch(d){throw t.delete({room:this,roomId:s}),F.emit(P.JOIN_FAILED,{room:this,error:d}),d}})}})}var ug=()=>Ae(i=>function(...t){return A(this,null,function*(){F.emit(P.LEAVE_START,{room:this}),yield i.call(this),F.emit(P.LEAVE_SUCCESS,{room:this,roomId:this.roomId})})});function lg(){return Ae(i=>function(...t){return A(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(t=t.filter(r=>r.outMediaTrack&&r.state==="capture"),!t.length))return;F.emit("61",{room:this});let e=i.apply(this,t);return t.forEach(r=>r.publish(this,e)),e})})}function mg(){return Ae(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>r.unpublish()),e})}function pg(){return Ae(i=>function(...t){let e=i.apply(this,t);return t.forEach(r=>!r.isSubscribed&&r.subscribe(e)),e})}function WS({fn:i,context:t}){return function(...e){try{let r=i.apply(t,e);return Ni(r)?r.catch(o=>U.error(`${i.name}() error observed ${o}`)):r}catch(r){U.error(`${i.name}() error observed ${r}`)}}}var Ru=class{constructor(t){l(this,"_frameWorkType");l(this,"_component");l(this,"_language");l(this,"connectionType");l(this,"_room");l(this,"_signalInfo",{tinyId:void 0,clientIp:"",signalIp:"",relayIp:"",relayInnerIp:"",relayPort:0,endReportExtend:void 0});l(this,"_keyPrefix");l(this,"_log");l(this,"_intervalId");l(this,"_firstPublishedUserList");l(this,"_networkQuality");l(this,"_basicInfo");l(this,"_pathJoinRoom");l(this,"_pathLeaveRoom");l(this,"_pathMainVideoMap");l(this,"_pathMainAudioMap");l(this,"_pathAuxiliaryMap");l(this,"_remoteStreamStatMap");l(this,"_localStreamStat");l(this,"_eventMap",new Map);l(this,"_captureCostSum",0);l(this,"_captureCostCount",0);l(this,"isDestroyed",!1);this._frameWorkType=t.frameWorkType||30,this._component=t.component||0,this.connectionType=t.connectionType||1,this._language=t.language||0,this._room=t.room,this._keyPrefix="key_point",this._log=U.createLogger({id:"kpm",userId:this._room.userId,sdkAppId:this._room.sdkAppId}),Object.getOwnPropertyNames(this.__proto__).forEach(e=>{e.startsWith("handle")&&Fe(this[e])&&(this[e]=WS({fn:this[e],context:this}))}),this.initData(),this.installEvents()}initData(){this._firstPublishedUserList=[],this._networkQuality={totalUplinkRTT:0,totalUplinkLoss:0,count:0,totalDownlinkRTTAndLossMap:new Map},this._basicInfo={string_sdk_version:Ke,uint32_os_type:15,string_device_name:"",string_http_user_agent:navigator.userAgent,string_os_version:"",uint32_avg_rtt:0,uint32_avg_up_loss:0,uint32_scene:this._room.scene==="live"?1:0,uint32_joining_duration:0,uint32_networkType:0,uint32_framework:this._frameWorkType,uint32_component:this._component,uint32_connection_type:this.connectionType,uint32_caller_coding_language:this._language,string_domain:location.hostname},this._pathJoinRoom={uint64_start_time:0,uint64_send_request_acc_ip_cmd_start_time:0,uint64_send_request_acc_ip_cmd_end_time:0,uint64_send_request_enter_room_cmd_start_time:0,uint64_send_request_enter_room_cmd_end_time:0,uint64_send_first_video_frame_time:0,uint64_recv_userlist_time:0,uint64_end_time:0,int32_send_request_acc_ip_cmd_ret:0,int32_send_request_enter_room_cmd_ret:0,int32_end_ret:0},this._pathLeaveRoom={uint64_start_time:0,uint64_send_request_exit_room_cmd_start_time:0,uint64_send_request_exit_room_cmd_end_time:0,uint64_end_time:0,int32_send_request_exit_room_cmd_ret:0,int32_end_ret:0},this._localStreamStat={totalVideoBitrate:0,totalVideoFPS:0,totalVideoHeight:0,totalVideoWidth:0,totalAudioLevel:0,videoCount:0,audioLevelCount:0,publishStartTime:0,statsToReport:{uint32_audio_capture_db:0,uint32_video_big_capture_fps:0,uint32_video_big_bitrate:0,uint32_video_big_resolution:0}},this._pathMainVideoMap=new Map,this._pathMainAudioMap=new Map,this._pathAuxiliaryMap=new Map,this._remoteStreamStatMap=new Map,Kn().then(t=>{this._basicInfo.string_os_version=_o(),t?this._basicInfo.string_device_name=t.mobile?t.model:this._basicInfo.string_os_version:this._basicInfo.string_device_name=this._basicInfo.string_os_version})}addEvent(t,e){return this._eventMap.set(t,e),F.on(t,e),this}installEvents(){this.handleUnload=this.handleUnload.bind(this),window.addEventListener("pagehide",this.handleUnload),this._room.once("banned",()=>this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})),this.addEvent(P.JOIN_START,this.handleJoinStart).addEvent(P.JOIN_SCHEDULE_SUCCESS,this.handleJoinScheduleSuccess).addEvent(P.JOIN_SIGNAL_CONNECTION_START,this.handleSignalConnectionStart).addEvent(P.JOIN_SIGNAL_CONNECTION_END,this.handleSignalConnectionEnd).addEvent(P.JOIN_SEND_CMD,this.handleJoinSendCMD).addEvent(P.JOIN_RECEIVED_CMD_RES,this.handleJoinReceivedCMDResponce).addEvent(P.JOIN_SUCCESS,this.handleJoinSuccess).addEvent(P.JOIN_FAILED,this.handleJoinFailed).addEvent(P.LEAVE_START,this.handleLeaveStart).addEvent(P.LEAVE_SUCCESS,this.handleLeaveSuccess).addEvent(P.LEAVE_SEND_CMD,this.handleLeaveSendCMD).addEvent(P.LOCAL_TRACK_CAPTURE_START,this.handleTrackCaptureStart).addEvent(P.LOCAL_TRACK_CAPTURE_SUCCESS,this.handleTrackCaptureSuccess).addEvent(P.LOCAL_TRACK_CAPTURE_FAILED,this.handleTrackCaptureFailed).addEvent(P.PUBLISH_START,this.handlePublishStart).addEvent(P.SEND_FIRST_VIDEO_FRAME,this.handleSendFirstVideoFrame).addEvent(P.SUBSCRIBE_START,this.handleSubscribeStart).addEvent(P.SUBSCRIBE_SUCCESS,this.handleSubscribed).addEvent(P.PLAY_TRACK_START,this.handlePlayStart).addEvent(P.VIDEO_LOADED_DATA,this.handleVideoLoadedData).addEvent(P.PLAYER_STATE_CHANGED,({track:t,state:e,type:r})=>{!t.isRemote||!this.hitTest(t.room)||e==="PLAYING"&&(r===D.AUDIO?this.handleAudioPlaying(t):this.handleVideoPlaying(t))}).addEvent(P.NETWORK_QUALITY,this.handleNetworkQuality).addEvent(P.HEARTBEAT_REPORT,this.handleHeartbeatStats).addEvent(P.RECEIVED_PUBLISHED_USER_LIST,this.handleReceivedPublishUserList).addEvent(P.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let o=e.hasAudio||e.hasVideo||e.hasSmall,s=e.hasAuxiliary,a=r.hasAudio||r.hasVideo||r.hasSmall,d=r.hasAuxiliary;!o&&a&&this.handleRemoteStreamAdded(r.userId,"main"),!s&&d&&this.handleRemoteStreamAdded(r.userId,"auxiliary")}).addEvent(P.SINGLE_CONNECTION_STAT,({room:t,stat:e})=>{this.hitTest(t)&&(this._pathJoinRoom.int32_ice_cost=e.ice,this._pathJoinRoom.int32_dtls_cost=e.dtls,this._pathJoinRoom.int32_peer_connection_cost=e.peerConnection)})}uninstallEvents(){window.removeEventListener("unload",this.handleUnload),this._eventMap.forEach((t,e)=>F.off(e,t)),this._eventMap.clear()}destroy(){this.uninstallEvents(),ft.clearTask(this._intervalId),this._pathJoinRoom.uint64_start_time===0&&(this._room=null),this.isDestroyed=!0}handleUnload(){this._room.isJoined&&this.handleLeaveSuccess({room:this._room,roomId:this._room.roomId})}handleJoinStart(t){this.hitTest(t.room)&&(this._pathJoinRoom.uint64_start_time===0&&(this._pathJoinRoom.uint64_start_time=Date.now()),t.params&&(L(t.params.frameWorkType)||(this._frameWorkType=t.params.frameWorkType,this._basicInfo.uint32_framework=this._frameWorkType),L(t.params.component)||(this._component=t.params.component,this._basicInfo.uint32_component=this._component),L(t.params.language)||(this._language=t.params.language,this._basicInfo.uint32_caller_coding_language=this._language)))}handleJoinScheduleSuccess({room:t,detailCost:e}){if(this.hitTest(t)&&e){let{totalCost:r,local:o,dns:s,tcp:a,tls:d,request:h,response:m}=e;this._pathJoinRoom.int32_schedule_cost=r,this._pathJoinRoom.int32_schedule_local=o,this._pathJoinRoom.int32_schedule_dns=s,this._pathJoinRoom.int32_schedule_tcp=a,this._pathJoinRoom.int32_schedule_tls=d,this._pathJoinRoom.int32_schedule_request=h,this._pathJoinRoom.int32_schedule_response=m}}handleSignalConnectionStart({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_start_time=Date.now())}handleSignalConnectionEnd({room:t,error:e}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_acc_ip_cmd_end_time=Date.now(),e&&(this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret=e instanceof ue?Number(e.getExtraCode()||e.getCode()):Y.UNKNOWN,this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret))}handleJoinSendCMD(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_start_time=Date.now())}handleJoinReceivedCMDResponce(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time===0&&(this._pathJoinRoom.uint64_send_request_enter_room_cmd_end_time=Date.now(),this._pathJoinRoom.int32_send_request_enter_room_cmd_ret=t.code,t.code!==0&&(this._pathJoinRoom.int32_end_ret=this._pathJoinRoom.int32_send_request_enter_room_cmd_ret))}handleJoinSuccess(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_end_time===0&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret=0,this._signalInfo=t.room.getSignalInfo())}handleJoinFailed({room:t,error:e}){this.hitTest(t)&&(this._pathJoinRoom.uint64_end_time=Date.now(),this._pathJoinRoom.int32_end_ret===0&&(this._pathJoinRoom.int32_end_ret=e.code||this._pathJoinRoom.int32_send_request_enter_room_cmd_ret||this._pathJoinRoom.int32_send_request_acc_ip_cmd_ret),setTimeout(()=>{this.report()}))}handleReceivedPublishUserList(t){this.hitTest(t.room)&&this._pathJoinRoom.uint64_recv_userlist_time===0&&(this._pathJoinRoom.uint64_recv_userlist_time=Date.now(),this._firstPublishedUserList=t.publishedUserList||[])}handleSendFirstVideoFrame({room:t}){this.hitTest(t)&&this._pathJoinRoom.uint64_send_first_video_frame_time===0&&this._pathJoinRoom.uint64_start_time!==0&&(this._pathJoinRoom.uint64_send_first_video_frame_time=Date.now())}handleLeaveStart(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_start_time=Date.now())}handleLeaveSuccess(t){this.hitTest(t.room)&&this._pathLeaveRoom.uint64_end_time===0&&(this._pathLeaveRoom.uint64_end_time=Date.now(),this._pathJoinRoom.uint64_end_time!==0?this._basicInfo.uint32_joining_duration=this._pathLeaveRoom.uint64_end_time-this._pathJoinRoom.uint64_end_time:this._log.warn("pathJoinRoom endTime is 0"),this.report())}handleLeaveSendCMD(t){this.hitTest(t.room)&&(this._pathLeaveRoom.uint64_send_request_exit_room_cmd_start_time=Date.now(),this._pathLeaveRoom.uint64_send_request_exit_room_cmd_end_time=Date.now())}handleRemoteStreamAdded(t,e){var o;let r=`${t}_${e}`;if(!this._remoteStreamStatMap.has(r)){let s={userId:t,totalVideoFPS:0,totalVideoBitrate:0,totalAudioLevel:0,totalAudioBitrate:0,totalLoss:0,audioCount:0,audioLevelCount:0,videoCount:0,networkQualityCount:0,streamAddedTime:Date.now(),subscribeStartTime:0,subscribedTime:0,playStreamTime:0,statsToReport:pe(J({},GS),{msg_user_info:new Va({userId:t,tinyId:(o=this._room.remotePublishedUserMap.get(t))==null?void 0:o.tinyId,role:20})})};s.statsToReport.uint32_stream_type=e==="main"?2:7,this._remoteStreamStatMap.set(r,s)}}handleSubscribeStart({room:t,remotePublishedUser:e,streamType:r,subscribeState:o}){if(!this.hitTest(t))return;let{userId:s,tinyId:a,role:d}=e,h=new Va({userId:s,tinyId:a,role:d==="anchor"?20:21}),m=Date.now(),T=`${s}_${r}`,I=this._remoteStreamStatMap.get(T);I&&I.subscribeStartTime===0&&(I.subscribeStartTime=m),r==="main"?(e.muteState.hasVideo&&(o.video||o.smallVideo)&&!this._pathMainVideoMap.has(T)&&this._pathMainVideoMap.set(T,{statsToReport:{msg_user_info:h,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_render_first_frame_time:0,uint64_combine_first_frame_time:0},userId:s,sendSubscribeCMDTime:m}),e.muteState.hasAudio&&o.audio&&!this._pathMainAudioMap.has(T)&&this._pathMainAudioMap.set(T,{statsToReport:{msg_user_info:h,uint64_start_enter_time:this._pathJoinRoom.uint64_start_time,uint64_play_first_frame_time:0},userId:s,sendSubscribeCMDTime:m})):e.muteState.hasAuxiliary&&o.auxiliary&&!this._pathAuxiliaryMap.has(T)&&this._pathAuxiliaryMap.set(T,{sendSubscribeCMDTime:m})}handleSubscribed({room:t,remotePublishedUser:e,streamType:r}){if(this.hitTest(t)){let o=`${e.userId}_${r}`,s=this._remoteStreamStatMap.get(o);s&&s.subscribedTime===0&&(s.subscribedTime=Date.now())}}handlePlayStart({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._remoteStreamStatMap.get(e);(r==null?void 0:r.playStreamTime)===0&&(r.playStreamTime=Date.now())}handleVideoLoadedData({track:t}){if(!t.isRemote||!this.hitTest(t.room))return;let e=`${t.userId}_${t.streamType}`,r=this._pathMainVideoMap.get(e);r&&r.statsToReport.uint64_combine_first_frame_time===0&&(r.statsToReport.uint64_combine_first_frame_time=Date.now())}handleVideoPlaying(t){let e=`${t.userId}_${t.streamType}`,r=Date.now(),o=this._pathMainVideoMap.get(e),s=this._remoteStreamStatMap.get(e);if(o&&(o.statsToReport.uint64_render_first_frame_time===0&&(o.statsToReport.uint64_render_first_frame_time=r),s)){let{statsToReport:d,playStreamTime:h,subscribedTime:m}=s;d.uint32_video_render_first===0&&h-m<=100&&(d.uint32_video_render_first=r-o.sendSubscribeCMDTime)}let a=this._pathAuxiliaryMap.get(e);if(a&&s){let{statsToReport:d,playStreamTime:h,subscribedTime:m}=s;d.uint32_video_render_first===0&&h-m<=100&&(d.uint32_video_render_first=r-a.sendSubscribeCMDTime)}}handleAudioPlaying(t){let e=`${t.userId}_${t.streamType}`,r=this._pathMainAudioMap.get(e);r&&r.statsToReport.uint64_play_first_frame_time===0&&(r.statsToReport.uint64_play_first_frame_time=Date.now())}handleNetworkQuality(t){this.hitTest(t.room)&&(this._networkQuality.totalUplinkLoss+=t.uplink.loss,this._networkQuality.totalUplinkRTT+=t.uplink.rtt,this._networkQuality.count++,t.downlinks.forEach(({rtt:e,loss:r,userId:o,videoDelay:s,audioDelay:a})=>{let d=this._networkQuality.totalDownlinkRTTAndLossMap.get(o);if(d)d.totalRTT+=e,d.totalLoss+=r,s&&(d.totalVideoDelay=(d.totalVideoDelay||0)+s,d.videoDelayCount=(d.videoDelayCount||0)+1),a&&(d.totalAudioDelay=(d.totalAudioDelay||0)+a,d.audioDelayCount=(d.audioDelayCount||0)+1),d.count++;else{let h,m,T,I;s&&(m=s,T=1),a&&(h=a,I=1),this._networkQuality.totalDownlinkRTTAndLossMap.set(o,{totalRTT:e,totalLoss:r,count:1,totalAudioDelay:h,totalVideoDelay:m,audioDelayCount:I,videoDelayCount:T})}}))}handleHeartbeatStats(t){if(this.hitTest(t.room)){let{msg_device_info:e,msg_up_stream_info:r,msg_down_stream_info:o}=t.report;if(r.msg_video_status[0]){let{uint32_video_codec_bitrate:s,uint32_video_enc_fps:a,uint32_video_width:d,uint32_video_height:h}=r.msg_video_status[0];this._localStreamStat.totalVideoBitrate+=s,this._localStreamStat.totalVideoFPS+=a,this._localStreamStat.totalVideoWidth+=d,this._localStreamStat.totalVideoHeight+=h,this._localStreamStat.videoCount++}if(r.msg_audio_status){let{uint32_audio_level:s}=r.msg_audio_status;Math.floor(s/di*100)>0&&(this._localStreamStat.totalAudioLevel+=s/di,this._localStreamStat.audioLevelCount++)}o.forEach(s=>{let{msg_user_info:a,msg_audio_status:d,msg_video_status:h}=s,m=a.str_identifier,T=this._room.remotePublishedUserMap.get(m);if(h.forEach(I=>{let v=I.uint32_video_stream_type===2,N=I.uint32_video_stream_type===7,j=`${m}_${v?"main":"auxiliary"}`,H=this._remoteStreamStatMap.get(j);if(H&&(v&&(T!=null&&T.remoteVideoTrack.isSubscribed)||N&&(T!=null&&T.remoteAuxiliaryTrack))){H.totalVideoFPS+=I.uint32_video_receive_fps,H.totalVideoBitrate+=I.uint32_video_codec_bitrate,H.videoCount++,H.statsToReport.uint32_video_width===0&&(H.statsToReport.uint32_video_width=I.uint32_video_width),H.statsToReport.uint32_video_height===0&&(H.statsToReport.uint32_video_height=I.uint32_video_height);let z=v?T.remoteVideoTrack:T.remoteAuxiliaryTrack;z.stat.jitterBufferDelay&&(H.videoJitterBufferDelay=z.stat.jitterBufferDelay),z.stat.framesReceived&&(H.statsToReport.uint32_video_consume_render_rate=Math.floor(z.stat.framesDecoded/z.stat.framesReceived*Rn(10,6)))}}),d){let I=`${m}_main`,v=this._remoteStreamStatMap.get(I);this._remoteStreamStatMap.has(I)&&v&&T!=null&&T.remoteAudioTrack.isSubscribed&&(v.totalAudioBitrate+=d.uint32_audio_codec_bitrate,v.audioCount++,T.remoteAudioTrack.stat.jitterBufferDelay&&(v.audioJitterBufferDelay=T.remoteAudioTrack.stat.jitterBufferDelay),Math.floor(d.uint32_audio_level/di*100)>0&&(v.totalAudioLevel+=d.uint32_audio_level/di,v.audioLevelCount++))}}),e.uint32_audio_capture_cost&&(this._captureCostSum+=e.uint32_audio_capture_cost,this._captureCostCount+=1,this._captureCostCount>=100&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0))}}handlePublishStart({room:t}){this.hitTest(t)&&this._localStreamStat.publishStartTime===0&&(this._localStreamStat.publishStartTime=Date.now())}handleTrackCaptureStart({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_start_time&&(this._pathJoinRoom.uint64_init_audio_start_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_start_time&&(this._pathJoinRoom.uint64_init_camera_start_time=Date.now())}handleTrackCaptureSuccess({track:t}){t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=0,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=0,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}handleTrackCaptureFailed({track:t,error:e}){let o={NotFoundError:1,NotAllowedError:2,NotReadableError:3,OverConstrainedError:4,AbortError:5,InvalidStateError:6,SecurityError:7,TypeError:8}[e.name]||(e instanceof ue?e.getExtraCode()||e.getCode():Y.UNKNOWN);t.mediaType===1&&!this._pathJoinRoom.uint64_init_audio_end_time&&(this._pathJoinRoom.int32_init_audio_ret=o,this._pathJoinRoom.uint64_init_audio_end_time=Date.now()),t.mediaType===4&&!this._pathJoinRoom.uint64_init_camera_end_time&&(this._pathJoinRoom.int32_init_camera_ret=o,this._pathJoinRoom.uint64_init_camera_end_time=Date.now())}hasVideoFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&ss)>=0}hasAudioFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&ns)>=0}hasAuxFlag(t){return this._firstPublishedUserList.findIndex(e=>e.userId===t&&e.flag&wn)>=0}hitTest(t){return t===this._room}prepareReport(){if(this._captureCostCount>0&&!this._basicInfo.uint32_audio_capture_cost&&(this._basicInfo.uint32_audio_capture_cost=Math.floor(this._captureCostSum/this._captureCostCount),this._captureCostSum=0,this._captureCostCount=0),this._networkQuality.count>0&&(this._basicInfo.uint32_avg_rtt=Math.floor(this._networkQuality.totalUplinkRTT/this._networkQuality.count),this._basicInfo.uint32_avg_up_loss=Math.floor(this._networkQuality.totalUplinkLoss/this._networkQuality.count)),this._localStreamStat.videoCount>0){this._localStreamStat.statsToReport.uint32_video_big_capture_fps=Math.floor(this._localStreamStat.totalVideoFPS/this._localStreamStat.videoCount),this._localStreamStat.statsToReport.uint32_video_big_bitrate=Math.floor(this._localStreamStat.totalVideoBitrate/this._localStreamStat.videoCount);let t=Math.floor(this._localStreamStat.totalVideoWidth/this._localStreamStat.videoCount),e=Math.floor(this._localStreamStat.totalVideoHeight/this._localStreamStat.videoCount);this._localStreamStat.statsToReport.uint32_video_big_resolution=t<<16|e}this._localStreamStat.audioLevelCount>0&&(this._localStreamStat.statsToReport.uint32_audio_capture_db=Math.floor(this._localStreamStat.totalAudioLevel/this._localStreamStat.audioLevelCount*100)),this._remoteStreamStatMap.forEach((t,e)=>{let{userId:r}=t,o=this._networkQuality.totalDownlinkRTTAndLossMap.get(r);if(o){let{totalLoss:T,count:I,audioDelayCount:v,videoDelayCount:N,totalAudioDelay:j,totalVideoDelay:H}=o;t.statsToReport.uint32_avg_down_loss=Math.floor(T/I),v&&j&&(t.statsToReport.uint32_audio_network_p2p_delay=Math.floor(j/v),t.audioJitterBufferDelay&&(t.statsToReport.uint32_p2p_delay=Math.floor(t.statsToReport.uint32_audio_network_p2p_delay+t.audioJitterBufferDelay))),N&&H&&(t.statsToReport.uint32_video_network_p2p_delay=Math.floor(H/N))}t.videoCount>0&&(t.statsToReport.uint32_video_avg_fps=Math.floor(t.totalVideoFPS/t.videoCount),t.statsToReport.uint32_video_avg_bitrate=Math.floor(t.totalVideoBitrate/t.videoCount)),t.audioCount>0&&(t.statsToReport.uint32_audio_recv_bitrate=t.statsToReport.uint32_audio_bitrate=Math.floor(t.totalAudioBitrate/t.audioCount)),t.audioLevelCount>0&&(t.statsToReport.uint32_audio_play_db=Math.floor(t.totalAudioLevel/t.audioLevelCount*100));let{callDurationCalculator:s}=this._room;s&&(t.statsToReport.uint32_audio_play_time=s.getDuration(e,D.AUDIO),t.statsToReport.uint32_video_play_time=s.getDuration(e,D.VIDEO)),t.statsToReport.uint32_video_render_first=Math.min(t.statsToReport.uint32_video_render_first,Go);let{badCaseDetector:a}=this._room,{dataFreeze:d,count:h}=a.getDataFreezeDuration(e),{renderFreeze:m}=a.getRenderFreezeDuration(e);t.statsToReport.uint32_video_block_count=h,t.statsToReport.uint32_video_block_time=Math.min(d,t.statsToReport.uint32_video_play_time),t.statsToReport.uint32_video_external_block_time=Math.min(m,t.statsToReport.uint32_video_play_time),a.isBlackStream(e)&&t.statsToReport.uint32_video_avg_fps===0?t.statsToReport.uint32_video_black_screen_subjective=1:t.statsToReport.uint32_video_black_screen_subjective=0,(t.subscribeStartTime===0||t.subscribeStartTime-t.streamAddedTime>100||t.playStreamTime===0)&&(this._pathMainAudioMap.delete(e),this._pathMainVideoMap.delete(e),t.statsToReport.uint32_video_render_first=0)}),this._pathMainAudioMap.forEach((t,e)=>{if(!this.hasAudioFlag(t.userId)){this._pathMainAudioMap.delete(e);return}t.statsToReport.uint64_play_first_frame_time-t.statsToReport.uint64_start_enter_time>Go&&(t.statsToReport.uint64_play_first_frame_time=t.statsToReport.uint64_start_enter_time+Go)}),this._pathMainVideoMap.forEach((t,e)=>{if(!this.hasVideoFlag(t.userId)){this._pathMainVideoMap.delete(e);return}t.statsToReport.uint64_render_first_frame_time-t.statsToReport.uint64_start_enter_time>Go&&(t.statsToReport.uint64_render_first_frame_time=t.statsToReport.uint64_start_enter_time+Go)}),this._pathJoinRoom.uint64_end_time-this._pathJoinRoom.uint64_start_time>Go&&(this._pathJoinRoom.uint64_end_time=this._pathJoinRoom.uint64_start_time+Go)}getReportData(){this._basicInfo.uint32_networkType=$c();let t={uint32_sdk_app_id:Number(this._room.sdkAppId),msg_user_info:new Va({userId:this._room.userId,tinyId:this._room.tinyId,role:this._room.role==="anchor"?20:21}),msg_basic_info:this._basicInfo,uint32_acc_ip:us(this._signalInfo.relayIp),uint32_client_ip:us(this._signalInfo.clientIp,!1),uint32_acc_port:this._signalInfo.relayPort||0,uint64_timestamp:Date.now(),uint32_seq:Math.floor(Math.random()*Rn(2,31)),msg_path_enter_room:this._pathJoinRoom,msg_path_exit_room:this._pathLeaveRoom,msg_path_recv_video:[...this._pathMainVideoMap.values()].map(e=>e.statsToReport),msg_quality_statistics:[...this._remoteStreamStatMap.values()].map(e=>e.statsToReport),str_room_name:String(this._room.roomId||0),msg_path_recv_audio:[...this._pathMainAudioMap.values()].map(e=>e.statsToReport),uint32_info_client_ip:us(this._signalInfo.clientIp,!1),error_code:[],msg_local_statistics:this._localStreamStat.statsToReport,bytes_report_buf_from_0x1:this._signalInfo.endReportExtend};return Fn(t),t}report(){return A(this,null,function*(){try{this.prepareReport();let t=this.getReportData();yield this.upload(t),this.initData()}catch(t){this._log.warn(t)}finally{this.isDestroyed&&(this._room=null)}})}upload(t){return A(this,null,function*(){if(t.msg_path_enter_room.uint64_start_time===0)return;let e=Number(this._room.sdkAppId),r=yield Xl(t),o=r instanceof ArrayBuffer,s=`${ii(e,Di.KEY_POINT)}&gzip=${+o}`,a=!1;navigator.sendBeacon&&(a=navigator.sendBeacon(s,r));let d=[this.uploadKVStat(X),this.uploadKVStat(yo)];a||d.push(oi({url:s,body:r,priority:"low"})),yield Promise.all(d)})}setConnectionType(t){this.connectionType=t,this._basicInfo.uint32_connection_type=t}uploadKVStat(t){return A(this,null,function*(){let e=t.getReportData();if(e.stats_count.length===0&&e.stats_distribution.length===0)return;e.msg_sdk_basic_info=pe(J({},e.msg_sdk_basic_info),{bytes_device_name:this._basicInfo.string_device_name||"",bytes_os_version:this._basicInfo.string_os_version||"",uint32_framework:this._frameWorkType,uint32_network_type:this._basicInfo.uint32_networkType||0}),this._log.debug(e);let r=yield Xl(e),o=`${ii(+this._room.sdkAppId,Di.KV_STAT)}&gzip=${+(r instanceof ArrayBuffer)}`,s=!1;navigator.sendBeacon&&(s=navigator.sendBeacon(o,r)),s||oi({url:o,body:r})})}};G([Ui({settings:{timeout:500,retries:3}})],Ru.prototype,"upload",1);var Go=5e3,GS={msg_user_info:null,uint32_video_avg_fps:0,uint32_video_width:0,uint32_video_height:0,uint32_video_avg_bitrate:0,uint32_video_block_time:0,uint32_video_play_time:0,uint32_audio_block_time:0,uint32_audio_play_time:0,uint32_audio_play_db:0,uint32_avg_down_loss:0,uint32_stream_type:0,uint32_video_render_first:0,uint32_video_block_count:0,uint32_audio_block_count:0,uint32_audio_bitrate:0,uint32_video_black_screen_subjective:0,uint32_audio_recv_bitrate:0,uint32_video_external_block_time:0,uint32_video_consume_render_rate:0},Va=class{constructor(t){l(this,"str_identifier");l(this,"str_tinyid");l(this,"uint32_role");this.str_identifier=String(t.userId),this.str_tinyid=String(t.tinyId||0),this.uint32_role=t.role}},hg=Ru;var ah=class{constructor(){l(this,"_startTime");l(this,"_endTime");this._startTime=0,this._endTime=0,this.start()}start(){this._startTime===0&&(this._startTime=ge())}stop(){this._endTime===0&&(this._endTime=ge())}getDuration(){return this._endTime===0?ge()-this._startTime:this._endTime-this._startTime}get endTime(){return this._endTime}},zs=ah;var ch=class{constructor(t){l(this,"_room",null);l(this,"_durationMap");l(this,"_eventMap",new Map);this._room=t.room,this._durationMap=new Map,this.installEvents()}installEvents(){this._eventMap.set(P.SUBSCRIBE_SUCCESS,this.handleSubscribed).set(P.UNSUBSCRIBE_SUCCESS,this.handleStreamStopped).set(P.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{var a;let{userId:o}=r;if(!this.hitTest(t))return;e.hasAudio&&!r.hasAudio&&this.stopDurationItem(`${o}_main`,D.AUDIO),e.hasVideo&&!r.hasVideo&&this.stopDurationItem(`${o}_main`,D.VIDEO),e.hasAuxiliary&&!r.hasAuxiliary&&this.stopDurationItem(`${o}_auxiliary`,D.VIDEO);let s=(a=this._room)==null?void 0:a.remotePublishedUserMap.get(o);s&&(!e.hasAudio&&r.hasAudio&&s.remoteAudioTrack.isSubscribed&&this.addDuractionItem(o,D.AUDIO,"main"),!e.hasVideo&&r.hasVideo&&s.remoteVideoTrack.isSubscribed&&this.addDuractionItem(o,D.VIDEO,"main"),!e.hasAuxiliary&&r.hasAuxiliary&&s.remoteAuxiliaryTrack.isSubscribed&&this.addDuractionItem(o,D.VIDEO,"auxiliary"))}),this._eventMap.forEach((t,e)=>F.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>F.off(e,t,this)),this._eventMap.clear()}handleSubscribed({room:t,streamType:e,remotePublishedUser:r}){if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;if(r.muteState.hasAudio&&e==="main")if(r.remoteAudioTrack.isSubscribed){let a=new zs,d=this._durationMap.get(s);d?this.isRecording(d.audio)||d.audio.push(a):this._durationMap.set(s,{userId:o,type:e,audio:[a],video:[]})}else this.stopDurationItem(s,D.AUDIO);if(r.muteState.hasVideo||r.muteState.hasAuxiliary)if(r.remoteVideoTrack.isSubscribed||r.remoteAuxiliaryTrack.isSubscribed){let a=new zs,d=this._durationMap.get(s);d?this.isRecording(d.video)||d.video.push(a):this._durationMap.set(s,{userId:o,type:e,audio:[],video:[a]})}else this.stopDurationItem(s,D.VIDEO)}handleStreamStopped({room:t,streamType:e,remotePublishedUser:r}){if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDurationItem(s,D.AUDIO),this.stopDurationItem(s,D.VIDEO)}isRecording(t){return t.findIndex(e=>e.endTime===0)>=0}addDuractionItem(t,e,r){let o=`${t}_${r}`,s=new zs,a=this._durationMap.get(o);a?this.isRecording(a[e])||a[e].push(s):this._durationMap.set(o,{userId:t,type:r,audio:e===D.AUDIO?[s]:[],video:e===D.AUDIO?[]:[s]})}stopDurationItem(t,e){if(this._durationMap.has(t)){let o=this._durationMap.get(t)[e].find(s=>s.endTime===0);o&&o.stop()}}hitTest(t){return this._room===t}getDuration(t,e){return this._durationMap.has(t)?this._durationMap.get(t)[e].reduce((o,s)=>o+s.getDuration(),0):0}getDurationMap(){return this._durationMap}reset(){this._durationMap.clear()}destroy(){this._room=null,this.uninstallEvents()}},fg=ch;var dh=class{constructor(t){l(this,"_room");l(this,"_renderFreezeMap",new Map);l(this,"_isVideoPlayingEventFiredMap",new Map);l(this,"_dataFreezeMap",new Map);l(this,"_monitorFreezeData",new Map);l(this,"_eventMap",new Map);this._room=t.room,this.installEvents()}installEvents(){this._eventMap.set(P.LEAVE_SUCCESS,({room:t})=>{this.hitTest(t)&&this.stop()}).set(P.PLAY_TRACK_START,this.onPlayTrackStart).set(P.UNSUBSCRIBE_SUCCESS,({room:t,streamType:e,remotePublishedUser:r})=>{if(!this.hitTest(t))return;let{userId:o}=r,s=`${o}_${e}`;this.stopDataFreeze({key:s,userId:o,type:e})}).set(P.REMOTE_PUBLISH_STATE_CHANGED,({room:t,prevMuteState:e,muteState:r})=>{if(!this.hitTest(t))return;let{userId:o}=r;if(e.hasVideo&&!r.hasVideo){let s="main",a=`${r.userId}_${s}`;this.stopDataFreeze({key:a,userId:o,type:s})}if(e.hasAuxiliary&&!r.hasAuxiliary){let s="auxiliary",a=`${r.userId}_${s}`;this.stopDataFreeze({key:a,userId:o,type:s})}}).set(P.PLAYER_STATE_CHANGED,({track:t,state:e,reason:r,type:o})=>{if(!(!t.isRemote||!t.room||!this.hitTest(t.room)||o!==D.VIDEO)){if(e==="PLAYING"){let s=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.set(s,!0)}r===D.MUTE?this.onVideoTrackMuted(t):r===D.UNMUTE&&this.onVideoTrackUnmuted(t)}}).set(P.HEARTBEAT_REPORT,this.onHearBeatReport),this._eventMap.forEach((t,e)=>F.on(e,t,this))}uninstallEvents(){this._eventMap.forEach((t,e)=>F.off(e,t,this)),this._eventMap.clear()}stop(){this._renderFreezeMap.clear(),this._dataFreezeMap.clear(),this._isVideoPlayingEventFiredMap.clear()}onVideoTrackMuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`,s=this._dataFreezeMap.get(o),a=new zs;s?s.durationItemList.push(a):this._dataFreezeMap.set(o,{userId:e,type:r,durationItemList:[a],isFreezing(){let d=this.durationItemList[this.durationItemList.length-1];return d&&d.endTime===0}})}onVideoTrackUnmuted(t){if(!t.isSubscribed)return;let{userId:e,streamType:r}=t,o=`${e}_${r}`;this.stopDataFreeze({key:o,userId:e,type:r})}onHearBeatReport({room:t,report:e}){this.hitTest(t)&&e.msg_down_stream_info.forEach(r=>{let o=this._room.remotePublishedUserMap.get(r.msg_user_info.str_identifier);if(!o)return;let{userId:s,muteState:a}=o;r.msg_video_status.forEach(d=>{d.uint32_video_stream_type===2&&a.hasVideo&&!a.videoMuted&&o.remoteVideoTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:d.uint32_video_dec_fps,type:"main"}),d.uint32_video_stream_type===7&&a.hasAuxiliary&&o.remoteAuxiliaryTrack.isSubscribed&&this.handleRenderFreeze({userId:s,fps:d.uint32_video_dec_fps,type:"auxiliary"})})})}stopDataFreeze({key:t,userId:e,type:r}){let o=this._dataFreezeMap.get(t);if(!o||!o.isFreezing())return;let s=o.durationItemList[o.durationItemList.length-1];s.stop();let a=s.getDuration();a>Fc?this._monitorFreezeData.set(t,{userId:e,type:r,duration:a}):o.durationItemList.pop()}getTotalDuration(t){return t.reduce((e,r)=>{let o=r.getDuration();return e+Math.min(o,5e3)},0)}handleRenderFreeze(o){return A(this,arguments,function*({userId:t,fps:e,type:r}){let s=`${t}_${r}`,a=this._renderFreezeMap.get(s);if(e<=2){let d=ge();a&&!a.isFreeze&&(a.freezeTimeline.push({startTime:d,endTime:0}),a.isFreeze=!0),a||this._renderFreezeMap.set(s,{userId:t,type:r,isFreeze:!0,freezeTimeline:[{startTime:d,endTime:0}],renderFreezeTotal:0})}else if(a&&a.isFreeze){a.isFreeze=!1;let d=a.freezeTimeline.pop();if(d){d.endTime=ge();let h=d.endTime-d.startTime;a.freezeTimeline.push(d),a.renderFreezeTotal+=Math.min(5e3,h)}}})}onPlayTrackStart({track:t}){if(!t.isRemote||!this.hitTest(t.room)||t.kind!==D.VIDEO||!t.isAvailable)return;let e=`${t.userId}_${t.streamType}`;this._isVideoPlayingEventFiredMap.has(e)||this._isVideoPlayingEventFiredMap.set(e,!1)}getDataFreezeDuration(t){let e={dataFreeze:0,count:0},r=this._dataFreezeMap.get(t);if(r){if(r.isFreezing()){let o=r.durationItemList[r.durationItemList.length-1];o.stop(),o.getDuration()<Fc&&r.durationItemList.pop()}e.dataFreeze=this.getTotalDuration(r.durationItemList),e.count=r.durationItemList.length}return e}getRenderFreezeDuration(t){let e=this._renderFreezeMap.get(t),r=0,o=0;if(e)if(!e.isFreeze)r=e.renderFreezeTotal;else{let s=ge(),a=e.freezeTimeline[e.freezeTimeline.length-1],d=s-a.startTime;r=e.renderFreezeTotal+Math.min(d,5e3),o=e.freezeTimeline.length}return{renderFreeze:r,count:o}}getMonitorFreeze(){return this._monitorFreezeData}isBlackStream(t){return this._isVideoPlayingEventFiredMap.has(t)?!this._isVideoPlayingEventFiredMap.get(t):!1}resetMonitor(){this._monitorFreezeData.clear()}hitTest(t){return t===this._room}destroy(){this.uninstallEvents()}},_g=dh;var Eg=Ci(ki(),1);var jS=[1,0,0,0,1,1,0,1],vu=class extends Vt{constructor(t,e){if(super(t,{useDefaultProgram:!0,useFbo:!0,create2d:!0,name:"mirror",logger:e}),t instanceof _t)try{this.setTexBuffer(jS)}catch(r){t.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:3,message:`create video node ${this.name} error ${r.message||r}`}))}}draw2d(t,e,r,o,s){if(this.ctx2d){this.ctx2d.save(),this.ctx2d.scale(-1,1),this.ctx2d.translate(-this.width,0);let a=super.draw2d(t,e,r,o,s);return this.ctx2d.restore(),a}return!1}render(t){var e;return(e=this.input)!=null&&e.requestFrame(t)?(this.useProgram(),this.useBufferFrame(),this.useInputTexture(),this.draw(),!0):!1}};var uh=class{constructor(t,e){this.node=t;this.layout=e;l(this,"positionBuffer")}get x(){return this.layout.x||this.node.x}get y(){return this.layout.y||this.node.y}get width(){return this.layout.width||this.node.width}get height(){return this.layout.height||this.node.height}get right(){return this.x+this.width}get bottom(){return this.y+this.height}},Cu=class extends Vt{constructor(e,r){super(e,{useDefaultProgram:!0,useFbo:!0,name:"mix",create2d:!0,logger:r});l(this,"inputs",[])}addInput(e,r){if(this.inputs[r.zIndex])throw new Error("input already exists");let o=new uh(e,r);this.inputs[r.zIndex]=o}resize(e,r){let o=this.inputs.reduce((s,a)=>a?Object.assign(s,{width:Math.max(s.width,a.right),height:Math.max(s.height,a.bottom)}):s,{width:0,height:0});super.resize(o.width,o.height),this.context instanceof _t&&this.inputs.forEach(s=>{if(s){let a=this.layout2texCoords(s);s.positionBuffer?this.changeBufferData(s.positionBuffer,a):s.positionBuffer=this.createBuffer(a)}})}connect(e,...r){return super.connect(e,...r),this.resize(0,0),e}removeInput(e){this.inputs[this.inputs.findIndex(r=>(r==null?void 0:r.node)===e)]=void 0}render(e){let r=this.context.ctx;if(r.clearColor(0,0,0,0),!this.inputs.reduce((s,a)=>(!a||!a.node.requestFrame(e))&&s,!0)&&r){this.useProgram(),r.enable(r.BLEND),r.blendFunc(r.SRC_ALPHA,r.ONE_MINUS_SRC_ALPHA),this.useBufferFrame();for(let s=0;s<this.inputs.length;s++){let a=this.inputs[s];a&&(a.node.useTexture(),this.draw(a.positionBuffer))}return!0}return!1}render2d(e){if(!this.inputs.reduce((o,s)=>(!s||!s.node.requestFrame(e))&&o,!0)&&this.ctx2d){this.ctx2d.clearRect(0,0,this.width,this.height);for(let o=0;o<this.inputs.length;o++){let s=this.inputs[o];s&&this.draw2d(s.node.image,s.x,s.y,s.width,s.height)}return!0}return!1}getInfo(){let{totalFrames:e,x:r,y:o,width:s,height:a,name:d}=this,h=Date.now(),m=(e-this.lastInfo.totalFrames)/((h-this.lastInfo.timestamp)/1e3)>>0;return this.lastInfo={totalFrames:e,x:r,y:o,width:s,height:a,timestamp:h,fps:m,name:d},J({parent:this.inputs.filter(T=>T).map(T=>T.node.getInfo())},this.lastInfo)}close(){super.close(),this.inputs.forEach(e=>{var r,o;if(e&&((r=e.node)==null||r.disconnect(),e.positionBuffer&&this.context instanceof _t))try{(o=this.context.ctx)==null||o.deleteBuffer(e.positionBuffer)}catch(s){}})}};var qS=`#version 300 es
67
99
  in vec2 a_position;
68
100
  in vec2 a_texCoord;
69
101
  out vec2 v_texCoord;
70
102
  void main() {
71
103
  gl_Position = vec4(a_position.x, a_position.y, 0, 1);
72
104
  v_texCoord = a_texCoord;
73
- }`,bT=`#version 300 es
105
+ }`,JS=`#version 300 es
74
106
  precision highp float;
75
107
  uniform sampler2D u_texture;
76
108
  uniform sampler2D mask;
@@ -79,7 +111,7 @@ in vec2 v_texCoord;
79
111
  out vec4 outColor;
80
112
  void main() {
81
113
  outColor = vec4(texture(u_texture, v_texCoord).rgb, texture(mask, v_texCoord).a);
82
- }`,rc=class extends Li{constructor(e,t){super(e,t.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,logger:e.log});c(this,"_bgTexture");c(this,"_waterMarkTexture");c(this,"_lastMaskTexture");c(this,"_lastMaskFbo");c(this,"_textureValid",!1);c(this,"_selfieTextureValid",!1);c(this,"_selfieSegmentation");c(this,"wasm");c(this,"_prePrograme");c(this,"_segmentationMask");c(this,"_weixin",!1);t.selfieSegmentation&&(this._selfieSegmentation=t.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(t)}catch(r){e.log.error(r),e.destroy(new b({code:S.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${r.message||r}`}))}}init(e){var o,n;let t=e.Wasm,r=this.context.ctx;if(this.wasm=new t.AllIn1(r),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,e.waterMark){let{x:a,y:d,width:l,height:m}=e.waterMark;this.wasm.setWaterMark(a,d,l,m)}if(e.beautyParams){let{beauty:a,brightness:d,ruddy:l}=e.beautyParams;this.wasm.setBeauty(a,d,l,(o=this.context._canvas)==null?void 0:o.width,(n=this.context._canvas)==null?void 0:n.height)}if(this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(r.uniform1i(r.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(r.uniform1i(r.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),r.uniform1i(r.getUniformLocation(this.program,"lastMask"),4),this._weixin){let a=this.context.createShader(r.FRAGMENT_SHADER,bT),d=this.context.createShader(r.VERTEX_SHADER,yT);this._prePrograme=this.context.createProgram(d,a),r.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),r.uniform1i(r.getUniformLocation(this._prePrograme,"mask"),1)}}onPredict(e){var r;let t=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),t.activeTexture(t.TEXTURE1),(r=this._selfieSegmentation)==null||r.bindTexture2d(e),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),t.drawArrays(t.TRIANGLE_STRIP,0,4),this._segmentationMask=e,this.totalFrames++}render(e){var d,l,m,u;let t=this.context.ctx,{image:r}=this;this.tryVideoFrameCallback(r);let{videoWidth:o,videoHeight:n}=r;r.width=o,r.height=n;let a=!1;if(this.totalFrames)this._weixin?this.useTexture():(d=this._selfieSegmentation)==null||d.bindTexture(),a=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;a=this._textureValid,this._textureValid=!0}return this.width!==o||this.height!==n||!a?(this.resize(o,n),t.texImage2D(t.TEXTURE_2D,0,t.RGBA,t.RGBA,t.UNSIGNED_BYTE,r)):t.texSubImage2D(t.TEXTURE_2D,0,0,0,t.RGBA,t.UNSIGNED_BYTE,r),this._weixin&&(t.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(t.activeTexture(t.TEXTURE1),(l=this._selfieSegmentation)==null||l.bindTexture2d(this._segmentationMask),t.bindFramebuffer(t.FRAMEBUFFER,this._lastMaskFbo||null)),t.drawArrays(t.TRIANGLE_STRIP,0,4),(m=this._selfieSegmentation)==null||m.bindTexture(),this._segmentationMask?t.copyTexSubImage2D(t.TEXTURE_2D,0,0,0,0,0,o,n):t.copyTexImage2D(t.TEXTURE_2D,0,t.RGBA,0,0,o,n,0)),(u=this._selfieSegmentation)==null||u.send(o,n),this.totalFrames||(t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this._bgTexture||null),t.activeTexture(t.TEXTURE3),t.bindTexture(t.TEXTURE_2D,this._waterMarkTexture||null),t.drawArrays(t.TRIANGLE_STRIP,0,4)),!1}close(){var t;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(t=this.wasm)==null||t.close()}};var sc=class extends qe{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
114
+ }`,Du=class extends Ei{constructor(e,r){super(e,r.input,{name:"vb",create2d:!1,useDefaultProgram:!1,useFbo:!1,createTexture:!0,logger:e.log});l(this,"_bgTexture");l(this,"_waterMarkTexture");l(this,"_lastMaskTexture");l(this,"_lastMaskFbo");l(this,"_textureValid",!1);l(this,"_selfieTextureValid",!1);l(this,"_selfieSegmentation");l(this,"wasm");l(this,"_prePrograme");l(this,"_segmentationMask");l(this,"_weixin",!1);r.selfieSegmentation&&(this._selfieSegmentation=r.selfieSegmentation,this._selfieSegmentation.onResults=this.onPredict.bind(this));try{this.init(r)}catch(o){e.log.error(o),e.destroy(new ue({code:Y.VIDEO_MANAGER_ERROR,extraCode:6,message:`init vb node error ${o.message||o}`}))}}init(e){var s,a;let r=e.Wasm,o=this.context.ctx;if(this.wasm=new r.AllIn1(o),this.wasm.blurRadius=e.blurRadius||3,this.wasm.mirror=!!e.mirror,this.wasm.vbMode=e.bg==="blur"?1:e.bg instanceof HTMLImageElement?2:e.bg==="green"?3:0,e.waterMark){let{x:d,y:h,width:m,height:T}=e.waterMark;this.wasm.setWaterMark(d,h,m,T)}if(e.beautyParams){let{beauty:d,brightness:h,ruddy:m}=e.beautyParams;this.wasm.setBeauty(d,h,m,(s=this.context._canvas)==null?void 0:s.width,(a=this.context._canvas)==null?void 0:a.height)}if(this.program=this.wasm.init(),this.useProgram(),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this.program,"mask"),1),e.bg instanceof HTMLImageElement&&(o.uniform1i(o.getUniformLocation(this.program,"bg"),2),this._bgTexture=this.createTexture(e.bg)),e.waterMark&&(o.uniform1i(o.getUniformLocation(this.program,"waterMark"),3),this._waterMarkTexture=this.createTexture(e.waterMark.image)),o.uniform1i(o.getUniformLocation(this.program,"lastMask"),4),this._weixin){let d=this.context.createShader(o.FRAGMENT_SHADER,JS),h=this.context.createShader(o.VERTEX_SHADER,qS);this._prePrograme=this.context.createProgram(h,d),o.useProgram(this._prePrograme),this.setAttributes(this.positionBuffer,this.texCoordBuffer),o.uniform1i(o.getUniformLocation(this._prePrograme,"mask"),1)}}onPredict(e){var o;let r=this.context.ctx;this._weixin&&(this._lastMaskTexture||(this._lastMaskTexture=this.createTexture(this.image),this._lastMaskFbo=this.createFramebuffer(this._lastMaskTexture))),this.useProgram(),this._weixin?this.useTexture():this==null||this._selfieSegmentation.bindTexture(),r.activeTexture(r.TEXTURE1),(o=this._selfieSegmentation)==null||o.bindTexture2d(e),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),this.useBufferFrame(),r.drawArrays(r.TRIANGLE_STRIP,0,4),this._segmentationMask=e,this.totalFrames++}render(e){var h,m,T,I;let r=this.context.ctx,{image:o}=this;this.tryVideoFrameCallback(o);let{videoWidth:s,videoHeight:a}=o;o.width=s,o.height=a;let d=!1;if(this.totalFrames)this._weixin?this.useTexture():(h=this._selfieSegmentation)==null||h.bindTexture(),d=this._selfieTextureValid,this._selfieTextureValid=!0;else{if(this.program)this.useTexture();else return!1;d=this._textureValid,this._textureValid=!0}return this.width!==s||this.height!==a||!d?(this.resize(s,a),r.texImage2D(r.TEXTURE_2D,0,r.RGBA,r.RGBA,r.UNSIGNED_BYTE,o)):r.texSubImage2D(r.TEXTURE_2D,0,0,0,r.RGBA,r.UNSIGNED_BYTE,o),this._weixin&&(r.useProgram(this._prePrograme),this.useTexture(),this._segmentationMask&&(r.activeTexture(r.TEXTURE1),(m=this._selfieSegmentation)==null||m.bindTexture2d(this._segmentationMask),r.bindFramebuffer(r.FRAMEBUFFER,this._lastMaskFbo||null)),r.drawArrays(r.TRIANGLE_STRIP,0,4),(T=this._selfieSegmentation)==null||T.bindTexture(),this._segmentationMask?r.copyTexSubImage2D(r.TEXTURE_2D,0,0,0,0,0,s,a):r.copyTexImage2D(r.TEXTURE_2D,0,r.RGBA,0,0,s,a,0)),(I=this._selfieSegmentation)==null||I.send(s,a),this.totalFrames||(r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this._bgTexture||null),r.activeTexture(r.TEXTURE3),r.bindTexture(r.TEXTURE_2D,this._waterMarkTexture||null),r.drawArrays(r.TRIANGLE_STRIP,0,4)),!1}close(){var r;super.close();let e=this.context.ctx;this._bgTexture&&e.deleteTexture(this._bgTexture),this._waterMarkTexture&&e.deleteTexture(this._waterMarkTexture),this._lastMaskTexture&&e.deleteTexture(this._lastMaskTexture),this._lastMaskFbo&&e.deleteFramebuffer(this._lastMaskFbo),this._prePrograme&&e.deleteProgram(this._prePrograme),(r=this.wasm)==null||r.close()}};var Nu=class extends Vt{constructor(e){super(e,{name:"yuv-source",useDefaultProgram:!1,create2d:!1,useFbo:!1,createTexture:!1,logger:e.log,fragmentShaderSource:`
83
115
  precision highp float;
84
116
  uniform sampler2D ySampler;
85
117
  uniform sampler2D uSampler;
@@ -104,13 +136,4 @@ void main() {
104
136
  void main() {
105
137
  gl_Position = vertexPos;
106
138
  textureCoord = texturePos;
107
- }`});c(this,"yTextureRef");c(this,"uTextureRef");c(this,"vTextureRef");c(this,"Y");c(this,"U");c(this,"V");this.useProgram();let t=this.context.ctx;t.pixelStorei(t.PACK_ALIGNMENT,1),t.pixelStorei(t.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,t){let r=this.context.ctx,o=r.createTexture();return r.bindTexture(r.TEXTURE_2D,o),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MAG_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_MIN_FILTER,r.LINEAR),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_S,r.CLAMP_TO_EDGE),r.texParameteri(r.TEXTURE_2D,r.TEXTURE_WRAP_T,r.CLAMP_TO_EDGE),r.bindTexture(r.TEXTURE_2D,null),r.uniform1i(r.getUniformLocation(this.program,e),t),o}render(e){let t=this.context.ctx,r=this.width,o=this.height;return this.useProgram(),t.viewport(0,0,r,o),t.activeTexture(t.TEXTURE0),t.bindTexture(t.TEXTURE_2D,this.yTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r,o,t.LUMINANCE,t.UNSIGNED_BYTE,this.Y),t.activeTexture(t.TEXTURE1),t.bindTexture(t.TEXTURE_2D,this.uTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.U),t.activeTexture(t.TEXTURE2),t.bindTexture(t.TEXTURE_2D,this.vTextureRef),t.texSubImage2D(t.TEXTURE_2D,0,0,0,r/2,o/2,t.LUMINANCE,t.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,t){super.resize(e,t);let r=this.context.ctx;r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e,t,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texImage2D(r.TEXTURE_2D,0,r.LUMINANCE,e/2,t/2,0,r.LUMINANCE,r.UNSIGNED_BYTE,null)}};var uu=[s=>{s.codec="avc1.420028"},s=>{delete s.hardwareAcceleration}],rp=(s,i)=>{switch(s){case"webCodecs":return i==="videoFrame"?514705:514706;case"wasm":return i==="webgl"?514707:i==="videoFrame"?514708:514709}throw new Error("decoder type not supported")},oc=class{constructor(i){c(this,"trackDoneOB");c(this,"startOB");c(this,"stopOB");c(this,"decoder");c(this,"videoContext");c(this,"gop",0);c(this,"gop_helper",0);c(this,"waitFirstKeyFrame",!0);c(this,"startTimestamp",0);c(this,"startTime",0);c(this,"startPerformanceTime",0);c(this,"inputFrameCount",0);c(this,"decodedFrameCount",0);c(this,"downgradeLevel",0);c(this,"config");c(this,"videoElement");c(this,"type","wasm");c(this,"renderer","2d");c(this,"wasmOption");c(this,"createDecoder");c(this,"_decodeSink");c(this,"isReported",!1);let{track:e,createDecoder:t}=i;if(this.createDecoder=t,this.wasmOption={yuvMode:i.renderer==="webgl",wasmPath:i.wasmPath,workerMode:i.workerMode,canvas:i.canvas},this.config=i.config,this.videoElement=i.videoElement,this.renderer=i.renderer,this.trackDoneOB=Ie(e,Q.INIT),this.stopOB=rt(this.trackDoneOB),i.type==="auto"){switch(i.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=i.type;this.changeRenderer(this.renderer),this.startOB=rt();let r=rt(),o;_e(r,Al((a,d)=>(a!==d&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:o,prevState:a,state:d}),d),"INITIALIZED"),Pe(this.stopOB),be());let n=a=>{let d=this.pipe(e);return r.next("STARTING"),e.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`),_e(d,Pe(this.stopOB),be(()=>{e.stat.framesDecoded++},l=>{if(e.log.error(l),N.addFailedEvent({key:rp(this.type,this.renderer),error:l}),a>4)this.startOB.error(l);else{switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.startOB.next(a+1)}})),_e(d,ki(1),Bo(vr))};_e(this.startOB,Nr(0),er(n),Pe(this.stopOB),be(()=>{e.player.handlePlaying("canvas"),r.next("STARTED")},a=>{o=a,r.next("FAILED")},()=>{N.addSuccessEvent({key:rp(this.type,this.renderer)}),N.addSuccessEvent({key:514704})}))}mock(i){this._decodeSink?this._decodeSink.error(i):this.startOB.next(0)}close(i){this.stopOB.next(i)}changeRenderer(i){this.renderer=i,this.renderer==="videoFrame"&&!Td()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(i){var r;if(this.inputFrameCount++,((r=this.decoder)==null?void 0:r.state)!=="configured")return i;let e=i.type==="key",{timestamp:t}=i;if(e?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder&&this.decoder.state==="configured"){if(this.waitFirstKeyFrame)if(e)this.waitFirstKeyFrame=!1,this.startTimestamp=t,this.startTime=Date.now(),this.startPerformanceTime=L();else return;let o=(t-this.startTimestamp)/90,a=Date.now()-this.startTime-o,d=a<500?0:a/1e3>>0;switch(e&&(d>0?this.downgradeLevel++:this.downgradeLevel>3&&this.downgradeLevel--),this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}this.decoder.decode(i);return}return i}pipe(i){return Mi()(e=>f(this,null,function*(){this._decodeSink=e,e.defer(()=>{var o,n;(o=this.decoder)==null||o.close(),(n=this.videoContext)==null||n.destroy(),delete this._decodeSink});let{renderer:t,type:r}=this;try{switch(r){case"wasm":this.decoder=this.createDecoder(r,this.wasmOption);break;case"webCodecs":for(let o=0;o<=uu.length;o++){let{supported:n}=yield VideoDecoder.isConfigSupported(this.config);if(n)break;if(o===uu.length){e.error(3);return}uu[o](this.config)}this.decoder=this.createDecoder(r);break;case"mse":throw new Error("not supported yet")}if(this.decoder.on("videoFrame",o=>{this.decodedFrameCount++,e.next(o)}),this.decoder.on("error",o=>{i.log.error(o),e.error(r==="webCodecs"?4:8)}),yield this.decoder.initialize(this.videoElement),this.decoder.configure(this.config),r==="wasm"&&t==="webgl"){this.videoContext=new De({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create(),this.videoContext.on(De.UNAVAILABLE,n=>{i.log.error(n),e.error(7)});let o=new sc(this.videoContext);this.decoder.on("videoCodecInfo",n=>o.resize(n.width,n.height)),this.decoder.on("videoFrame",n=>{[o.Y,o.U,o.V]=n,this.downgradeLevel===1?this.decodedFrameCount%2===0&&o.render(this.decodedFrameCount):o.render(this.decodedFrameCount)}),i.source=o,i.player.setCanvas(this.videoContext._canvas,2)}else if(t==="videoFrame"){i.player.setCanvas();let o=new MediaStreamTrackGenerator({kind:"video"}),n=o.writable.getWriter();i.setInputMediaStreamTrack(o);let a=0;this.decoder.on("videoFrame",d=>{a++,a<=10&&i.log.info(`Frame ${a} decoded width: ${d.displayWidth} height: ${d.displayHeight}`),n.write(d)}),o.onmute=()=>{e.error(r==="webCodecs"?5:9)},e.defer(()=>o.onmute=null)}else{this.videoContext=new Be({frameRate:15,logger:i.log,name:i.userId}),this.videoContext.create({alpha:!1});let o=this.videoContext.createVideoImageSource();this.decoder.on("videoFrame",a=>{o.image=a,o.update()});let n=new Or(this.videoContext,{name:"remotePlayer",logger:i.log});o.connect(n),i.source=o,i.player.setCanvas(this.videoContext._canvas,2)}}catch(o){i.log.error(o),e.error(r==="webCodecs"?2:6)}}))}};var en=class extends sp.EventEmitter{constructor(e){super();this.room=e;c(this,"videoContext");c(this,"_glVideoContext");c(this,"_2dVideoContext");c(this,"destination");c(this,"smallVideoContext");c(this,"smallDestination");c(this,"smallTrackSource");c(this,"smallImageSource");c(this,"_isMirror",!1);c(this,"cameraTrack");c(this,"cameraNode");c(this,"mirrorNode");c(this,"mixNode");c(this,"screenTrack");c(this,"screenNode");c(this,"selfModel",!1);c(this,"blurRadius",3);c(this,"arTrack");c(this,"Wasm");c(this,"waterMarkNode");c(this,"_waterMarkOption");c(this,"watermarkImageList",[]);c(this,"_beautyParams");c(this,"isUsingArTrack",!1);c(this,"_isMixScreen",!1);c(this,"_virtualBackground");c(this,"_virtualBackgroundAbortCallback");c(this,"virtualBackgroundInstance");c(this,"_bgAssetPath");c(this,"log",C.createLogger({id:"vm"}));c(this,"_checkId",0);c(this,"_use2d",!1);c(this,"_autoSwitchRenderMode",!0);c(this,"_selfieSegmentation");c(this,"encodePipeline",[]);c(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Be({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let t=e==="2d";this._use2d!==t&&(this._use2d=t,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Be({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new De({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on("unavailable",e=>{var t;this.emit("error",e),this.log.warn("video context unavailable",e),(t=this._virtualBackgroundAbortCallback)==null||t.call(this,e),this.update().catch(r=>{this.log.error(r)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=re.run(dr,()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,t;(e=this._2dVideoContext)==null||e.destroy(),(t=this._glVideoContext)==null||t.destroy(),this.smallVideoContext.destroy(),re.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Ji||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",t){let r=e==="videoCtxGl"?512700:512701;t?N.addFailedEvent({key:r,error:t}):N.addSuccessEvent({key:r})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let t=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(t)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new De({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e){return this._selfieSegmentation=e,this._selfieSegmentation.changeModel()}_setMainOutput(e){var t;try{let r=this.cameraTrack,{small:o,settings:n,player:a}=r;o?(this.smallVideoContext.available||(this.smallVideoContext.create({alpha:!1}),this.smallDestination=new La(this.smallVideoContext,o,this.log)),this.smallVideoContext.frameRate=o.frameRate,this.smallDestination.resolution=o,e?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.connect(this.smallDestination))):(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource?this.smallTrackSource.replaceTrack(this.initialTrack):(this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource"),this.smallTrackSource.width=n.width,this.smallTrackSource.height=n.height,this.smallTrackSource.connect(this.smallDestination)))):this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource),Ji&&a.setCanvas(e);let d=e&&((t=this.destination)==null?void 0:t.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),d=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${d?d.label:"no output track"}`),r.setOutputMediaStreamTrack(d)}catch(r){this.log.error("set main output failed",r)}}update(){return f(this,null,function*(){var r,o;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:t}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),ot===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Li?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Li?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(e.width,e.height)):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new ka(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new rc(this.videoContext,{input:this.cameraTrack.mediaTrack,mirror:this._isMirror,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()),this.videoContext.frameRate=t.frameRate,this._use2d){let n=this.cameraNode;n.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new tc(this.videoContext,this.log)),n=n.connect(this.mirrorNode),n.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new ic(this.videoContext,this.log),n.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption&&(this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y),(r=this.waterMarkNode)==null||r.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(o=this.screenNode)==null||o.connect(this.mixNode,{zIndex:0}),n=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),n.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var t,r,o,n;if(e instanceof it)return this.log.info("change screen input",(t=e.mediaTrack)==null?void 0:t.label),this.setScreenTrack(e);if(e instanceof Ve)return this.log.info("change video input",(r=e.mediaTrack)==null?void 0:r.label),this.setCameraTrack(e);if(e instanceof ii){this.log.info("change remote input",(o=e.mediaTrack)==null?void 0:o.label);let a=e.mediaTrack;return e.setOutputMediaStreamTrack(a)}this.log.warn("change unknown input",(n=e.mediaTrack)==null?void 0:n.label)}removeInput(e){var t;e instanceof it?((t=this.screenNode)==null||t.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Ve?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof ii&&e.source&&e.source.context.destroy()}setCameraTrack(e){return f(this,null,function*(){this.cameraTrack=e,this.update()})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,t){return f(this,null,function*(){let r=document.createElement("canvas");t&&e&&(r.height=t,r.width=e);let o=r.getContext("2d");if(!o)throw new b({code:S.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((n,a)=>n.zIndex-a.zIndex),this.watermarkImageList.forEach(({image:n,x:a,y:d,width:l,height:m})=>{o.drawImage(n,a,d,l,m)}),zr(r.toDataURL())})}pushWaterMarkImageList(e){let{type:t}=e;this.watermarkImageList.some(o=>o.imageUrl===e.imageUrl&&o.height===e.height&&o.width===e.width&&o.x===e.x&&o.y===e.y&&o.type===e.type&&o.zIndex===e.zIndex)||((t==="mute"||t==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(o=>o.type!==t)),this.watermarkImageList.push(e))}setBeautyParams(e){return f(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return f(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return f(this,null,function*(){var u,p;let t;try{t=yield zr((e==null?void 0:e.imageElement)||e.imageUrl)}catch(_){throw new b({code:S.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:r=0,y:o=0,width:n=t.width,height:a=t.height,type:d="watermark",zIndex:l=2}=e;this.watermarkImageList.some(_=>_.type===d)?(this.watermarkImageList=this.watermarkImageList.filter(_=>_.type!==d),this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:d,imageUrl:e.imageUrl}),t=yield this.getWatermarkImage((u=this.cameraTrack)==null?void 0:u.settings.width,(p=this.cameraTrack)==null?void 0:p.settings.height),this._waterMarkOption={x:0,y:0,width:t.width,height:t.height,image:t},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(t.width,t.height),this.waterMarkNode.image=t):this.update()):(this.pushWaterMarkImageList({x:r,y:o,width:n,height:a,image:t,zIndex:l,type:d,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(_,I)=>_==="imageUrl"?void 0:I))})}deleteWatermark(e="watermark"){return f(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(t=>t.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(t,r)=>t==="imageUrl"?void 0:r)),yield this.freshWatermark()})}freshWatermark(){return f(this,null,function*(){var t,r,o;(t=this.waterMarkNode)==null||t.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((r=this.cameraTrack)==null?void 0:r.settings.width,(o=this.cameraTrack)==null?void 0:o.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return f(this,null,function*(){if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield zr(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type)}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new b({code:S.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var t;this._isMixScreen=e,this._isMixScreen||((t=this.screenNode)==null||t.close(),delete this.screenNode),this.update()}set mirror(e){var t;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((t=this.mirrorNode)==null||t.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return f(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new oc(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.mirrorNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:t}){var r;this.encodePipeline.includes(e)||(this.encodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}addDecodeProcessor({processor:e,type:t}){var r;this.decodePipeline.includes(e)||(this.decodePipeline[t]=e,(r=this.room)==null||r.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};y([ua(function(e){this.log.error("update failed",e)})],en.prototype,"update",1);var NT=0;var nc=class extends Q{constructor(e){super("room");c(this,"seq",++NT);c(this,"sdkAppId");c(this,"userId");c(this,"userSig");c(this,"privateMapKey");c(this,"latencyLevel");c(this,"tinyId");c(this,"scene");c(this,"roomId");c(this,"useStringRoomId");c(this,"role","anchor");c(this,"joinParams",null);c(this,"localTracks",new Set);c(this,"enableAutoPlayDialog",!0);c(this,"autoReceiveAudio",!0);c(this,"autoReceiveVideo",!0);c(this,"proxy_ws");c(this,"proxy_wt");c(this,"proxy_unified");c(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}});c(this,"keyPointManager");c(this,"audioManager");c(this,"videoManager");c(this,"callDurationCalculator");c(this,"badCaseDetector");c(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});c(this,"videoDecodeFallbackType");c(this,"_isUsingCachedSchedule",!1);c(this,"_log",C.createLogger({id:`r${this.seq}`}));c(this,"_joinedTimestamp",0);c(this,"_sdkType");c(this,"heartbeatReport");c(this,"quality");c(this,"enableSEI");c(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,he(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),he(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),he(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new ep({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new tp({room:this}),this.badCaseDetector=new ip({room:this}),this.audioManager=new _a(this),this.videoManager=new en(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return f(this,null,function*(){return this.publish(e)})}removeTrack(e){return f(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return f(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(K(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Qe(e)){let{websocketProxy:t,webtransportProxy:r,loggerProxy:o,scheduleProxy:n,unifiedProxy:a}=e;this.proxy_ws=t,this.proxy_wt=r,this.proxy_unified=a,a?(Va([a,a]),or(`https://${a}`)):(o&&or(o),n&&Va(n))}E.once(T.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Pt.main,sched_back_domain:Pt.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return f(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(t=>{e[t.userId]=t.remoteAudioTrack.stat}),e})}getTransportStats(){return f(this,null,function*(){var t;let e={rtt:((t=this.quality)==null?void 0:t.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let r of this.quality.downlinkInfo)e.downlinksRTT[r.userId]=r.rtt;return e})}getRemoteVideoStats(){return f(this,arguments,function*(e="main"){let t={};return this.remotePublishedUserMap.forEach(r=>{let o=e==="auxiliary"?r.remoteAuxiliaryTrack:r.remoteVideoTrack;t[r.userId]=o.stat}),t})}checkDestroy(){if(this.isDestroyed)throw new b({code:S.INVALID_OPERATION,message:U({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(ve.INVALID_DESTROY),new b({code:S.INVALID_OPERATION,message:U({key:x.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,E.emit(T.ROOM_DESTROY,{room:this})}schedule(e,t){return f(this,null,function*(){var o,n,a;let r=L();try{let{isCached:d,result:l,detailCost:m}=yield Ll({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Ce,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:t,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=d,this._log.info(`schedule cache:${+d} ${ht(l,{keysToExclude:["username","credential"]})}`),d&&E.once(T.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=v(v({},this.scheduleResult),l),Y((o=l.config)==null?void 0:o.retryCount)&&Cc(l.config.retryCount),K((n=l.config)==null?void 0:n.loggerDomain)&&or(l.config.loggerDomain),this.videoDecodeFallbackType=((a=l.config)==null?void 0:a.videoDecodeFallback)||this.videoDecodeFallbackType,E.emit(T.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:m}),N.addSuccessEvent({key:521700,cost:L()-r,split:50})}catch(d){throw N.addFailedEvent({key:521700,error:d}),d}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};var _p=ke(Ge());var hu=ke(iu());var op=s=>{let i=ge(s),e={audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0};return i.media.forEach((t,r)=>{var o;if(t.ssrcs&&!g(t.ssrcs[0].id)){let n=Number(t.ssrcs[0].id),a=Number((o=t.ssrcs.filter(d=>d.attribute==="cname")[1])==null?void 0:o.id);switch(r){case 0:e.audioSsrc=n;break;case 1:e.bigVideoSsrc=n,e.bigVideoRtxSsrc=a;break;case 2:e.smallVideoSsrc=n,e.smallVideoRtxSsrc=a;break;case 3:e.auxVideoSsrc=n,e.auxVideoRtxSsrc=a;break}}}),e};function np(s){var e;let i=[];for(let t=0;t<s.rtp.length;t++){if(["rtx","red","ulpfec"].includes(s.rtp[t].codec))continue;let r=s.fmtp.filter(o=>o.payload===s.rtp[t].payload)[0];i.push({payload:s.rtp[t].payload,codec:s.rtp[t].codec,fmtp:r?r.config:"",rate:s.rtp[t].rate,rtx:((e=s.rtp[t+1])==null?void 0:e.codec)==="rtx"?s.rtp[t+1].payload:0,rtcpfb:((s==null?void 0:s.rtcpFb)||[]).filter(o=>o.payload===s.rtp[t].payload).map(({type:o,subtype:n})=>({id:o,params:n?[n]:[]}))})}return i}function vT(){return f(this,null,function*(){let s=new RTCPeerConnection;s.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY});let i=yield s.createOffer();if(!i.sdp)return[];let e=ge(i.sdp),t=np(e.media[0]);return s.close(),t})}var ap=(s,i)=>f(void 0,null,function*(){var d;let e=ge(s),t={ice:{ufrag:"",password:""},dtls:{hash:"",fingerprint:"",setup:""},audio:{codecs:[],extensions:[]},video:{codecs:[],decoders:[],extensions:[]},useDataChannel:!1};t.ice.ufrag=String(e.media[0].iceUfrag),t.ice.password=e.media[0].icePwd||"",e.fingerprint&&(t.dtls.hash=e.fingerprint.type,t.dtls.fingerprint=e.fingerprint.hash,t.dtls.setup=e.setup||""),e.media[0].fingerprint&&(t.dtls.hash=e.media[0].fingerprint.type,t.dtls.fingerprint=e.media[0].fingerprint.hash),t.dtls.setup=e.media[0].setup||"";let r=e.media[0],o=e.media[1];r.ext&&(t.audio.extensions=r.ext.map(l=>({id:l.value,uri:l.uri}))),o.ext&&(t.video.extensions=o.ext.map(l=>({id:l.value,uri:l.uri})));let n={codec:r.rtp[0].codec,fmtp:r.fmtp[0].config,payload:r.fmtp[0].payload,rate:r.rtp[0].rate,channels:r.rtp[0].encoding,rtcpfb:[],rtx:0};(d=r.rtcpFb)==null||d.forEach(({payload:l,type:m,subtype:u})=>{if(l===n.payload){let p={id:m,params:[]};u&&p.params.push(u),n.rtcpfb.push(p)}}),t.audio.codecs.push(n);let a=["h264","vp8"];return i&&a.shift(),t.video.codecs=[...np(o)].filter(l=>a.includes(l.codec.toLocaleLowerCase())),t.video.decoders=(yield vT()).filter(l=>["h264","vp8"].includes(l.codec.toLocaleLowerCase())),t}),cp=({serverAbility:s,clientAbility:i,offerSDP:e,enableCustomMessage:t})=>{let r=ge(e),o={extmapAllowMixed:"extmap-allow-mixed",groups:r.groups,icelite:"ice-lite",media:[],msidSemantic:{semantic:"",token:"WMS"},name:"-",origin:{address:"127.0.0.1",username:"-",sessionId:String(Date.now()),sessionVersion:1,netType:"IN",ipVer:4},timing:{start:0,stop:0},version:0},n={candidates:s.candidates.map(a=>({component:1,foundation:"1",generation:0,ip:a.ip,port:a.port,priority:a.priority,transport:a.foundation,type:a.type})),connection:{version:4,ip:"0.0.0.0"},direction:h.TRANSCEIVER_DIRECTION_RECVONLY,ext:s.audio.extensions.map(a=>({value:a.id,uri:a.uri})),fingerprint:{type:s.dtls.hash,hash:s.dtls.fingerprint},fmtp:[{payload:s.audio.codecs[0].payload,config:s.audio.codecs[0].fmtp}],icePwd:s.ice.password,iceUfrag:s.ice.ufrag,mid:"0",payloads:String(s.audio.codecs[0].payload),port:r.media[0].port,protocol:r.media[0].protocol,type:h.AUDIO,setup:s.dtls.setup,rtcpFb:s.audio.codecs[0].rtcpfb.map(a=>({payload:s.audio.codecs[0].payload,type:a.id,subtype:a.params[0]})),rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[{payload:s.audio.codecs[0].payload,codec:s.audio.codecs[0].codec,rate:s.audio.codecs[0].rate,encoding:s.audio.codecs[0].channels}]};return o.media.push(n),[1,2,3].forEach(a=>{o.media.push(mu({mid:a,serverAbility:s,clientAbility:i,parsedOffer:r}))}),t&&o.media.push(r.media.find(a=>a.mid==="dc")),Et(o)},mu=({mid:s,serverAbility:i,clientAbility:e,parsedOffer:t,isDownlink:r=!1})=>{let o={candidates:i.candidates.map(n=>({component:1,foundation:"1",generation:0,ip:n.ip,port:n.port,priority:n.priority,transport:n.foundation,type:n.type})),connection:{version:4,ip:"0.0.0.0"},direction:h.TRANSCEIVER_DIRECTION_RECVONLY,ext:i.video.extensions.map(n=>({value:n.id,uri:n.uri})),fingerprint:{type:i.dtls.hash,hash:i.dtls.fingerprint},fmtp:[],icePwd:i.ice.password,iceUfrag:i.ice.ufrag,mid:String(s),payloads:"",port:t.media[0].port,protocol:t.media[0].protocol,type:h.VIDEO,setup:i.dtls.setup,rtcpFb:[],rtcpMux:"rtcp-mux",rtcpRsize:"rtcp-rsize",rtp:[]};if(r){let n=i.video.decoders;(!n||n.length===0)&&(n=i.video.codecs),(!n||n.length===0)&&(n=e.video.decoders),n.forEach(a=>{Ur(o,a)})}else{let n=i.video.codecs.findIndex(d=>d.codec.toLowerCase()===(i.useVp8?"vp8":"h264")),a=i.video.codecs[n]||e.video.codecs[0];Ur(o,a)}return o},Ur=(s,i)=>{s.payloads=`${s.payloads} ${i.payload}`.trim(),s.fmtp.push({payload:i.payload,config:i.fmtp}),s.rtcpFb=[...s.rtcpFb||[],...i.rtcpfb.map(e=>({payload:i.payload,type:e.id,subtype:e.params[0]}))],s.rtp.push({payload:i.payload,codec:i.codec.toUpperCase(),rate:i.rate}),i.rtx&&(s.payloads=`${s.payloads} ${i.rtx}`,s.fmtp.push({payload:i.rtx,config:`apt=${i.payload}`}),s.rtp.push({payload:i.rtx,codec:"rtx",rate:i.rate}))};function DT(s){let i=new Set(["urn:ietf:params:rtp-hdrext:sdes:mid","urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id","urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id"]);s.ext&&(s.ext=s.ext.filter(e=>!i.has(e.uri)))}function OT(s){if(!s.rtcpFb)return;let i=[];s.rtcpFb.forEach((e,t)=>{var r;i.push(e),s.rtcpFb&&((r=s.rtcpFb[t+1])==null?void 0:r.payload)!==e.payload&&e.type!=="rrtr"&&i.push({payload:e.payload,type:"rrtr"})}),s.rtcpFb=i}function MT(s){s.type===h.VIDEO&&s.fmtp&&s.fmtp.forEach(i=>{i.config.includes("apt")||(i.config+=";sps-pps-idr-in-keyframe=1")})}function kT(s){s.type===h.AUDIO&&s.fmtp&&s.fmtp.forEach(i=>{i.config+=";sprop-stereo=1;stereo=1"})}var dp=(s,i,e)=>{let t=hu.default.parse(s);return t.media.forEach((r,o)=>{var n;if((r.type===h.AUDIO||r.type===h.VIDEO)&&(OT(r),MT(r),kT(r),DT(r),r.type===h.VIDEO)){if(o<4)r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[],i.video.codecs.forEach(a=>Ur(r,a));else if(e){r.payloads="",r.fmtp=[],r.rtp=[],r.rtcpFb=[];let a=e.video.decoders;(!a||a.length===0)&&(a=e.video.codecs),(!a||a.length===0)&&(a=i.video.decoders),a.forEach(d=>Ur(r,d))}}(n=r.payloads)!=null&&n.includes("datachannel")&&t.groups&&r.mid&&(t.groups[0].mids=t.groups[0].mids.replace(r.mid,"dc"),r.mid="dc")}),hu.default.write(t)};var lp=ke(Ge());var ac=class extends lp.EventEmitter{constructor(e){super();this.room=e;c(this,"mainFpsHealth",1);c(this,"mainBitrateHealth",1);c(this,"badMainBitrateHealthCount",0);c(this,"lastEmitBadHealthTime",0);c(this,"log");!me&&vt&&E.on("262",this.onVideoCodecChanged,this),this.log=e.getLogger().createChild({id:"h-d"})}onVideoCodecChanged({remoteUserId:e,streamType:t,isHWCodec:r,codec:o}){if(!(e||t===7||o!=="h264")){if(!r){this.room.off("heartbeat-report",this.onHeartbeatReport,this);return}this.room.listeners("heartbeat-report").includes(this.onHeartbeatReport)||this.room.on("heartbeat-report",this.onHeartbeatReport,this)}}onHeartbeatReport(e){Date.now()-this.lastEmitBadHealthTime<30*1e3||(e.msg_up_stream_info.msg_video_status.forEach(t=>{if(t.uint32_video_enc_fps&&t.uint32_video_capture_fps){let r=t.uint32_video_enc_fps/t.uint32_video_capture_fps;t.uint32_video_stream_type===2&&(this.mainFpsHealth=r)}if(t.uint32_video_codec_bitrate&&t.uint32_video_stream_type===2){let{localMainVideoTrack:r}=this.room;r&&(this.mainBitrateHealth=t.uint32_video_codec_bitrate/1e3/r.profile.bitrate)}}),this.log.debug(`mainBitrateHealth: ${this.mainBitrateHealth} mainFpsHealth: ${this.mainFpsHealth}`),this.mainBitrateHealth>.5&&(this.badMainBitrateHealthCount=0),this.mainFpsHealth>.9&&this.mainBitrateHealth<.5&&(this.badMainBitrateHealthCount++,this.badMainBitrateHealthCount>3&&(this.badMainBitrateHealthCount=0,this.lastEmitBadHealthTime=Date.now(),this.log.warn(`bad main bitrate health: ${this.mainBitrateHealth}`),this.emit("1",{isAux:!1}))))}destroy(){E.off("262",this.onVideoCodecChanged,this),this.room.off("heartbeat-report",this.onHeartbeatReport,this)}};c(ac,"EVENT_BAD_HEALTH","bad_health");var up=ac;function hp({seiMessageList:s,isAudio:i,isMain:e}){return new TransformStream({transform(t,r){let o=t;i?audioEncodePipeline.forEach(n=>{o=n({frame:o})}):videoEncodePipeline.forEach(n=>{o=n({frame:o,seiMessageList:s,onDump:()=>{self.postMessage({type:"dump",isAudio:i,data:o.data,userId:"",streamType:e?"main":"auxiliary"})}})}),r.enqueue(o)}})}function mp(s,i,e){return new TransformStream({transform(t,r){let o=t;videoDecodePipeline.forEach(n=>{o=n({frame:o,onSEI:a=>{a.forEach(d=>{self.postMessage({type:"sei",seiPayloadType:d.seiPayloadType,data:d.seiPayload.buffer,userId:s,streamType:i})})},onDump:()=>{self.postMessage({type:"dump",isAudio:e,data:o.data,userId:s,streamType:i})}})}),r.enqueue(o)}})}function pp(s){let i=[vi],e=[Gl,Hl,$l,Fl,hp,mp],t=()=>{let l=[],m=[],u=[];self.onmessage=p=>{p.data.type==="sei"&&(p.data.isMain?(l.push(p.data.data),p.data.small&&u.push(p.data.data)):m.push(p.data.data))},self.onrtctransform=p=>{let{options:_}=p.transformer,I=_.isReceiver?mp(_.userId,_.streamType,_.isAudio):hp({isAudio:_.isAudio,seiMessageList:_.isMain?_.small?u:l:m,isMain:_.isMain});p.transformer.readable.pipeThrough(I).pipeTo(p.transformer.writable)}},r=`const videoEncodePipeline=[${s.videoEncodePipeline.toString()}];
108
- const videoDecodePipeline=[${s.videoDecodePipeline.toString()}];
109
- const audioEncodePipeline = [${s.audioEncodePipeline.toString()}];
110
- const audioDecodePipeline = [${s.audioDecodePipeline.toString()}];`,o=`(()=>{${i.map(l=>`const ${l.name}=(()=>${l.toString()})()`).join(`
111
- `)}
112
- ${e.map(l=>l.toString()).join(`
113
- `)};(${t})();${r}})()`,n=new Blob([o],{type:"text/javascript"}),a=URL.createObjectURL(n),d=new Worker(a);return URL.revokeObjectURL(a),d}var si=(l=>(l.TRACK="track",l.DATA_CHANNEL_MESSAGE="data_channel_msg",l[l.CONNECTION_STATE_CHANGED="connection-state-changed"]="CONNECTION_STATE_CHANGED",l[l.FIREWALL_RESTRICTION="firewall-restriction"]="FIREWALL_RESTRICTION",l.RECONNECTED="spc-reconnected",l.RECONNECT_FAILED="spc-reconnect-failed",l.ERROR="error",l.SEI_MESSAGE="sei-message",l.DUMP="dump",l))(si||{}),gp=0,Tp=!1,LT=new Set,PT=s=>gp>2&&!Tp&&LT.size===0&&s,wT=1,Ut=class extends _p.default{constructor({signalChannel:e,room:t,enableCustomMessage:r}){super();c(this,"stat",{iceStartTime:0,iceEndTime:0,dtlsStartTime:0,dtlsEndTime:0,peerConnectionStartTime:0,peerConnectionEndTime:0});c(this,"currentState","DISCONNECTED");c(this,"_room");c(this,"_signalChannel");c(this,"_peerConnection",null);c(this,"_datachannel",null);c(this,"_enableCustomMessage");c(this,"_log");c(this,"_downlinkMIDMap",new Map);c(this,"_downlinkMIDUserIDMap",new Map);c(this,"_reconnectionTimer",-1);c(this,"reconnectionCount",0);c(this,"clientAbility");c(this,"_serverAbility",null);c(this,"addDownlinkQueue",new Set);c(this,"removeDownlinkQueue",new Set);c(this,"_parsedAnswer",null);c(this,"_updateSDPPromise",null);c(this,"_waitForPCConnectedPromise");c(this,"clearConnectTimeout");c(this,"_isSDPLogged",!1);c(this,"enableInsertableStreams",!1);c(this,"insertableStreamsAbortMap",new Map);c(this,"receiverRemoteTrackMap",new WeakMap);c(this,"scriptTransformWorker");c(this,"_isRelayTried",!1);c(this,"_rttOverCount",0);this._room=t,this._enableCustomMessage=r,this._signalChannel=e,this._log=C.createLogger({id:`spc${wT++}`,userId:this._room.userId,sdkAppId:this._room.sdkAppId}),this._room.enableCodecPipeline&&(Ri?this.enableInsertableStreams=!0:this.initScriptTransformWorker()),this._room.healthDetector.on("1",this.onBadHealth,this)}get isH264EncodeSupported(){let e=this._room.checkSystemResult.detail.isH264EncodeSupported;return this._serverAbility&&(e=e&&!!this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="h264")),e}addAbortController(e,t){var r;(r=this.insertableStreamsAbortMap.get(e))==null||r.abort("destory"),this.insertableStreamsAbortMap.set(e,t)}get isVP8EncodeSupported(){let e=this._room.checkSystemResult.detail.isVp8EncodeSupported;return this._serverAbility&&(e=e&&this._serverAbility.video.codecs.find(t=>t.codec.toLowerCase()==="vp8")),e}get videoCodec(){var t,r;let e=(t=this._parsedAnswer)==null?void 0:t.media[1].rtp.find(o=>["h264","vp8"].includes(o.codec.toLowerCase()));return e?e.codec.toLowerCase():(r=this._serverAbility)!=null&&r.useVp8?"vp8":"h264"}get downlinkVideoCodec(){var e;return(e=this._serverAbility)!=null&&e.video.decoders.find(t=>t.codec.toLowerCase()==="h264")?"h264":"vp8"}get isUsingH264(){return this.videoCodec==="h264"}get is42001fSupported(){return this.clientAbility?!!this.clientAbility.video.codecs.find(e=>e.fmtp.includes("42001f")):!1}get uplinkSSRC(){return this._peerConnection&&this._peerConnection.localDescription?op(this._peerConnection.localDescription.sdp):{audioSsrc:0,audioRtxSsrc:0,bigVideoSsrc:0,bigVideoRtxSsrc:0,smallVideoSsrc:0,smallVideoRtxSsrc:0,auxVideoSsrc:0,auxVideoRtxSsrc:0}}onBadHealth({isAux:e}){this.useHWEncoder(!1,e?7:2)}initScriptTransformWorker(){Yn&&(this.scriptTransformWorker=pp({videoEncodePipeline:this._room.videoManager.encodePipeline,videoDecodePipeline:this._room.videoManager.decodePipeline,audioEncodePipeline:this._room.audioManager.encodePipeline,audioDecodePipeline:this._room.audioManager.decodePipeline}),this.scriptTransformWorker.onmessage=e=>{e.data.type==="sei"&&this.emit("sei-message",e.data),e.data.type==="dump"&&this.emit("dump",e.data)},this.scriptTransformWorker.onerror=e=>{this._log.error("scriptTransformWorker error: ",e)})}get isReconnecting(){return this.currentState==="RECONNECTING"||this._reconnectionTimer>0||this.reconnectionCount>0}get dtlsTransport(){if(!this._peerConnection)return null;let e=this._peerConnection.getSenders();return e.length===0?null:e[0].transport}initialize(){return f(this,null,function*(){var t;let e;try{return this._peerConnection=new RTCPeerConnection({encodedInsertableStreams:this.enableInsertableStreams,offerExtmapAllowMixed:!0,iceServers:this._room.getIceServers(),iceTransportPolicy:this._room.getIceTransportPolicy(),sdpSemantics:this._room.sdpSemantics,bundlePolicy:"max-bundle",rtcpMuxPolicy:"require",tcpCandidatePolicy:"disable",IceTransportsType:"nohost"}),this._peerConnection.oniceconnectionstatechange=()=>{if(!this._peerConnection)return;let r=this._peerConnection.iceConnectionState;this._log.debug(`ice state: ${r}`),r==="checking"&&this.stat.iceStartTime===0?this.stat.iceStartTime=Date.now():r==="connected"&&this.stat.iceEndTime===0?(this.stat.iceEndTime=Date.now(),N.addSuccessEvent({key:521711,cost:this.stat.iceEndTime-this.stat.iceStartTime})):r==="failed"&&N.addFailedEvent({key:521711})},this._peerConnection.onsignalingstatechange=()=>{var o;let r=((o=this._peerConnection)==null?void 0:o.signalingState)||"";this._log[r==="closed"?"debug":"info"](`signaling state: ${r}`)},this._peerConnection.onconnectionstatechange=this.onConnectionStateChange.bind(this),this._peerConnection.ontrack=r=>this.emit("track",r),this._enableCustomMessage&&(this._datachannel=this._peerConnection.createDataChannel(`${this._room.userId}dc`),this._datachannel.binaryType="arraybuffer",this._datachannel.onopen=()=>{this._log.info("datachannel open")},this._datachannel.onclose=()=>{this._log.warn("datachannel close")},this._datachannel.onmessage=r=>{let o=new fu(r.data);this.emit("data_channel_msg",{data:o})},this._datachannel.onerror=r=>{this._log.warn("datachannel error",r)}),this._peerConnection.addTransceiver(h.AUDIO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_SENDONLY}),e=yield this._peerConnection.createOffer(),this.clientAbility=yield ap(e.sdp,((t=this._room.scheduleResult.config)==null?void 0:t.remove264FromSDP)||!1),yield this.setOffer(e),this.dtlsTransport&&(this.dtlsTransport.onstatechange=()=>{let{dtlsTransport:r}=this;r&&(this._log.debug(`dtls state: ${r.state}`),r.state==="connecting"&&this.stat.dtlsStartTime===0?this.stat.dtlsStartTime=Date.now():r.state==="connected"&&this.stat.dtlsEndTime===0&&(this.stat.dtlsEndTime=Date.now()))}),N.addSuccessEvent({key:521707}),this.clientAbility}catch(r){throw N.addFailedEvent({key:521707,error:r}),this._log.error(`initialize failed ${r}
114
- offer: ${e==null?void 0:e.sdp}`),r}})}setPriority(e="high"){if(this._peerConnection)try{this._peerConnection.getSenders().forEach(r=>{let o=r.getParameters();o.encodings[0]&&(o.encodings[0].priority=e,o.encodings[0].networkPriority=e,r.setParameters(o).catch(n=>{this._log.warn("setPriority error ",n)}))})}catch(t){this._log.warn("setPriority error ",t)}}connect(e,t=!1){return f(this,null,function*(){var r,o;try{if(this.currentState==="CONNECTED")return;let n=L(),a={type:"answer",sdp:cp({serverAbility:e,clientAbility:this.clientAbility,offerSDP:this._peerConnection.localDescription.sdp,enableCustomMessage:this._enableCustomMessage})};this._serverAbility=e,yield this.setAnswer(a),yield this.waitForPeerConnectionConnected();let d=((r=this._room.scheduleResult.config)==null?void 0:r.priority)||((o=this._room.joinParams)==null?void 0:o.priority)||new URLSearchParams(location.search).get("priority");d&&this.setPriority(d),t||N.addSuccessEvent({key:521703,cost:L()-n})}catch(n){let a=n instanceof b&&n.code===S.API_CALL_ABORTED;throw a||this._log.error(`connect failed: ${n}`,e),this.reset(),!a&&!this.isReconnecting&&(N.addFailedEvent({key:521703,error:n}),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.startReconnection()),n}})}reconnect(){return f(this,null,function*(){if(this._reconnectionTimer!==-1){this._log.warn("reconnect() is reconnecting, ignore current reconnection");return}if(!this._signalChannel.isConnected){this._log.warn("reconnect() wait signal channel is connected"),this._signalChannel.once(Ee.CONNECTED,this.reconnect,this);return}try{this.reconnectionCount++,this._log.warn(`reconnect() trying [${this.reconnectionCount}]`),this.reset();let e=yield this.initialize(),t=yield this._signalChannel.sendWaitForResponse({command:q.REBUILD_PEER_CONNECTION,responseCommand:B.REBUILD_PEER_CONNECTION_RES,data:{ability:e},enableLog:!1});if(t.data.code!==0)throw new b({code:t.data.code,message:t.data.message});yield this.connect(t.data.data.ability,!0),N.addSuccessEvent({key:521704}),this._log.warn("reconnect() success"),this.stopReconnection(),E.emit(T.SPC_RECONNECTED,{room:this._room}),this.emit("spc-reconnected")}catch(e){if(!this.isReconnecting)return;if(e!=null&&e.message.includes("timeout")){let t=Ct(this.reconnectionCount);this._log.warn(`reconnect() timeout, try again after ${t/1e3}s`),yield hi(t,r=>{this._reconnectionTimer=r}),this.clearReconnectionTimer(),yield this.reconnect()}else this._log.error(`reconnect() failed ${e==null?void 0:e.code} ${e}`),N.addFailedEvent({key:521704,error:e}),this.reconnectionCount>=ci()&&this._log.warn(`SDK has tried reconnect for ${ci()} times, but all failed, please check your network`),this.stopReconnection(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.emit("error")}})}getPeerConnection(){return this._peerConnection}startReconnection(){return f(this,null,function*(){this.isReconnecting||(this._log.warn("start reconnect"),this._updateSDPPromise=null,this.emitConnectionStateChangedEvent("RECONNECTING"),yield this.reconnect())})}stopReconnection(){var e;this.isReconnecting&&(this._log.info("stop reconnect"),this.reconnectionCount=0,this.clearReconnectionTimer(),(e=this.clearConnectTimeout)==null||e.call(this),this._signalChannel.off(Ee.CONNECTED,this.reconnect,this),this.currentState==="RECONNECTING"&&this.emitConnectionStateChangedEvent("DISCONNECTED"))}checkPeerConnectionToReconnect(){var e;!this.isReconnecting&&((e=this._peerConnection)==null?void 0:e.connectionState)===ce.CLOSED&&this.startReconnection()}clearReconnectionTimer(){this._reconnectionTimer!==-1&&(clearTimeout(this._reconnectionTimer),this._reconnectionTimer=-1)}onConnectionStateChange(e){var o;let t=((o=this._peerConnection)==null?void 0:o.iceConnectionState)||"closed",r=this.getDTLSTransportState();this._log.info(`connectionState: ${e.target.connectionState} ICE: ${t} DTLS: ${r}`),e.target.connectionState===ce.CONNECTING&&(this.stat.peerConnectionStartTime===0&&(this.stat.peerConnectionStartTime=Date.now()),this.emitConnectionStateChangedEvent("CONNECTING")),(e.target.connectionState===ce.FAILED||e.target.connectionState===ce.CLOSED)&&(this.emitConnectionStateChangedEvent("DISCONNECTED"),this._room.forceRelay?this.switchRelay(!1):this.startReconnection()),(e.target.connectionState===ce.CONNECTED||e.target.connectionState===ce.COMPLETED)&&(this.stat.peerConnectionEndTime===0&&(this.stat.peerConnectionEndTime=Date.now()),E.emit(T.SINGLE_CONNECTION_STAT,{room:this._room,stat:{ice:this.stat.iceEndTime-this.stat.iceStartTime,dtls:this.stat.dtlsEndTime-this.stat.dtlsStartTime,peerConnection:this.stat.peerConnectionEndTime-this.stat.peerConnectionStartTime}}),this.logSelectedCandidate(),this.emitConnectionStateChangedEvent("CONNECTED"))}getDTLSTransportState(){if(!this._peerConnection)return It;let e=null;return!Yi()||this._peerConnection.getSenders().length===0?It:(e=this._peerConnection.getSenders()[0].transport,!Er()||this._peerConnection.getReceivers().length===0?It:e?e.state:It)}emitConnectionStateChangedEvent(e){e!==this.currentState&&(this.currentState==="RECONNECTING"&&e==="CONNECTING"||(this.emit(si.CONNECTION_STATE_CHANGED,{prevState:this.currentState,state:e}),this.currentState=e))}logSelectedCandidate(){return f(this,null,function*(){if(!this._peerConnection)return;let e=yield this._peerConnection.getStats();for(let[t,r]of e)if(zi(r)){let o=e.get(r.localCandidateId),n=e.get(r.remoteCandidateId);o&&(this._log.info(`local candidate: ${o.candidateType} ${o.protocol}:${o.ip||o.address}:${o.port} ${o.networkType||""} ${o.candidateType==="relay"?`relayProtocol:${o.relayProtocol}`:""}`),o.networkType&&Tn(o.networkType)),n&&this._log.info(`remote candidate: ${n.candidateType} ${n.protocol}:${n.ip||n.address}:${n.port}`);break}})}waitForPeerConnectionConnected(){return this._waitForPCConnectedPromise?this._waitForPCConnectedPromise:(this._waitForPCConnectedPromise=new Promise((e,t)=>{if(this.currentState==="CONNECTED")return e();let r=d=>{d.state==="CONNECTED"&&(clearTimeout(a),n(),e())},o=({room:d})=>{d===this._room&&(clearTimeout(a),n(),t(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:"leave room"})})))},n=()=>{E.off(T.LEAVE_SUCCESS,o,this),this.off(si.CONNECTION_STATE_CHANGED,r,this)},a=setTimeout(()=>{n();let d=new b({code:S.API_CALL_TIMEOUT,message:"connection timeout"});gp+=1,PT(this._signalChannel.isConnected)&&(this._log.warn("firewall restriction"),Tp=!0,this.emit(si.FIREWALL_RESTRICTION)),t(d)},Js);this.clearConnectTimeout=()=>{n(),clearTimeout(a),delete this.clearConnectTimeout},E.on(T.LEAVE_SUCCESS,o,this),this.on(si.CONNECTION_STATE_CHANGED,r,this)}),this._waitForPCConnectedPromise=this._waitForPCConnectedPromise.finally(()=>{this._waitForPCConnectedPromise=null,delete this.clearConnectTimeout}),this._waitForPCConnectedPromise)}waitForReconnected(){return this.isReconnecting?new Promise((e,t)=>{this.once("spc-reconnected",e),this.once("error",t)}):Promise.resolve()}addDownlink(e){return f(this,null,function*(){if(this._log.info(`addDownlink(${e.userId}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise),this.updateLocalAndRemoteSDPConfig(e),this.addDownlinkQueue.size===0)try{yield this.updateSDP(),this._log.info(`addDownlink(${e.userId}) done`)}catch(t){this._log.error(`addDownlink(${e.userId}) failed ${t}`),yield this.startReconnection()}})}updateLocalAndRemoteSDPConfig({ssrc:e,userId:t,tinyId:r}){if(!this._peerConnection)return;this._log.info(`updateLocalAndRemoteSDPConfig ${t} ${JSON.stringify(e)}`);let o=this._peerConnection.getTransceivers().slice(4).filter(p=>p.direction==="inactive").slice(0,3).map(p=>(p.direction=h.TRANSCEIVER_DIRECTION_RECVONLY,Number(p.mid)));this._parsedAnswer||(this._parsedAnswer=ge(this._peerConnection.remoteDescription.sdp));let n=this._parsedAnswer.media.filter(p=>{var _;return(_=p.ssrcs)==null?void 0:_.find(I=>{var R;return(R=I.value)==null?void 0:R.includes(r)})}),a,d,l;if(n.length===3)a=n[0],d=n[1],l=n[2];else if(o.length===3)a=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[0])),d=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[1])),l=this._parsedAnswer.media.find(p=>Number(p.mid)===Number(o[2]));else if(o.length===0){this._peerConnection.addTransceiver(h.AUDIO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY}),this._peerConnection.addTransceiver(h.VIDEO,{direction:h.TRANSCEIVER_DIRECTION_RECVONLY}),a=JSON.parse(JSON.stringify(this._parsedAnswer.media[0]));let p=mu({mid:1,serverAbility:this._serverAbility,clientAbility:this.clientAbility,parsedOffer:ge(this._peerConnection.localDescription.sdp),isDownlink:!0});d=JSON.parse(JSON.stringify(p)),l=JSON.parse(JSON.stringify(p)),a.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(a),d.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(d),l.mid=this._parsedAnswer.media.length,this._parsedAnswer.media.push(l)}a.direction=h.TRANSCEIVER_DIRECTION_SENDONLY;let m=`${r}-${e.audio}`;a.ssrcs=[{id:e.audio,attribute:"cname",value:`${m}`},{id:e.audio,attribute:"msid",value:`${m}-${h.MAIN} ${m}-audio`}],d.direction=h.TRANSCEIVER_DIRECTION_SENDONLY,d.ssrcs=[{id:e.video,attribute:"cname",value:`${m}`},{id:e.video,attribute:"msid",value:`${m}-${h.MAIN} ${m}-bigvideo`},{id:e.videoRtx,attribute:"cname",value:`${m}`},{id:e.videoRtx,attribute:"msid",value:`${m}-${h.MAIN} ${m}-bigvideo`}],d.ssrcGroups=[{semantics:"FID",ssrcs:`${e.video} ${e.videoRtx}`}],l.direction=h.TRANSCEIVER_DIRECTION_SENDONLY;let u=`${m}-aux`;l.ssrcs=[{id:e.auxiliary,attribute:"cname",value:u},{id:e.auxiliary,attribute:"msid",value:`${u} ${m}-aux${h.VIDEO}`},{id:e.auxiliaryRtx,attribute:"cname",value:`${u} ${m}-aux${h.VIDEO}`},{id:e.auxiliaryRtx,attribute:"msid",value:`${u} ${m}-aux${h.VIDEO}`}],l.ssrcGroups=[{semantics:"FID",ssrcs:`${e.auxiliary} ${e.auxiliaryRtx}`}],this._parsedAnswer.groups&&(this._parsedAnswer.groups[0].mids=this._parsedAnswer.media.map(p=>p.mid).join(" ")),this._downlinkMIDMap.set(t,[a.mid,d.mid,l.mid]),this._downlinkMIDUserIDMap.set(a.mid,t),this._downlinkMIDUserIDMap.set(d.mid,t),this._downlinkMIDUserIDMap.set(l.mid,t)}removeDownlink(e){return f(this,null,function*(){if(!this._downlinkMIDMap.has(e)||!this._peerConnection)return;this._log.info(`removeDownlink(${e}) trying`),this.isReconnecting&&(yield this.waitForReconnected()),this._updateSDPPromise&&(yield this._updateSDPPromise);let t=this._downlinkMIDMap.get(e),r=!1;this._peerConnection.getTransceivers().forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive")}),this._parsedAnswer||(this._parsedAnswer=ge(this._peerConnection.remoteDescription.sdp)),this._parsedAnswer.media.forEach(o=>{t!=null&&t.includes(Number(o.mid))&&(r=!0,o.direction="inactive",o.ssrcs=[],o.ssrcGroups=[])}),this.removeDownlinkQueue.size===0&&r&&(yield this.updateSDP()),this._downlinkMIDMap.delete(e),t==null||t.forEach(o=>this._downlinkMIDUserIDMap.delete(o)),this._log.info(`removeDownlink(${e}) done`)})}setBandwidth(e){return f(this,null,function*(){if(!this._peerConnection)return;let{audio:t,bigVideo:r,smallVideo:o,auxVideo:n}=e;try{if(Ao()){let a=this._peerConnection.getSenders().slice(0,4);for(let l=0;l<a.length;l++){let m=a[l],u;l===0&&t?u=t:l===1&&r?u=r:l===2&&o?u=o:l===3&&n&&(u=n),u&&(yield this.setSenderMaxBitrate(m,u))}let d=!1;r&&a[1].track&&(d=this.setStartBitrate(1,r)),n&&a[3].track&&(d=this.setStartBitrate(3,n)||d),d&&(yield this.updateSDP())}else yield this.setBandwidthBySDP(e);this._log.info(`setBandwidth ${JSON.stringify(e)}`)}catch(a){this._log.error(`failed to set bandwidth: ${a}`)}})}setStartBitrate(e,t){var r,o;return(r=this._peerConnection)!=null&&r.remoteDescription&&(this._parsedAnswer||(this._parsedAnswer=ge(this._peerConnection.remoteDescription.sdp)),(o=this._parsedAnswer.media[e])!=null&&o.fmtp[0])?(this._parsedAnswer.media[e].fmtp[0].config+=`;x-google-start-bitrate=${t>5e3?5e3:t}`,!0):!1}setSenderMaxBitrate(e,t){let r=e.getParameters();return(!r.encodings||r.encodings.length===0)&&(r.encodings=[{}]),t==="unlimited"?delete r.encodings[0].maxBitrate:r.encodings[0].maxBitrate=t*1e3,e.setParameters(r)}setBandwidthBySDP({audio:e,bigVideo:t,smallVideo:r,auxVideo:o}){if(!this._peerConnection||!this._peerConnection.localDescription)return;let n=ge(this._peerConnection.localDescription.sdp);this._parsedAnswer||(this._parsedAnswer=ge(this._peerConnection.remoteDescription.sdp));let a=ae?"TIAS":"AS";e&&(n.media[0].bandwidth=[{type:a,limit:ae?e*1e3:e}],this._parsedAnswer.media[0].bandwidth=[{type:a,limit:ae?e*1e3:e}]),t&&(n.media[1].bandwidth=[{type:a,limit:ae?t*1e3:t}],this._parsedAnswer.media[1].bandwidth=[{type:a,limit:ae?t*1e3:t}]),r&&(n.media[2].bandwidth=[{type:a,limit:ae?r*1e3:r}],this._parsedAnswer.media[2].bandwidth=[{type:a,limit:ae?r*1e3:r}]),o&&(n.media[3].bandwidth=[{type:a,limit:ae?o*1e3:o}],this._parsedAnswer.media[3].bandwidth=[{type:a,limit:ae?o*1e3:o}]);let d={type:"offer",sdp:Et(n)};return this.updateSDP({localDescription:d})}setScaleResolutionDownBy(e,t,r){let o=e.getParameters();(!o.encodings||o.encodings.length===0)&&(o.encodings=[{}]);let n=o.encodings[0].scaleResolutionDownBy;if(g(n)?t===1:t===n)return;let a=`setScaleResolutionDownBy ${r} ${t}`;return n&&(a+=` prevScale: ${n}`),this._log.warn(a),o.encodings[0].scaleResolutionDownBy=t,e.setParameters(o)}updateSDP({localDescription:e}={}){if(!this._parsedAnswer)return Promise.resolve();let t=Et(this._parsedAnswer);return this._updateSDPPromise=new Promise((r,o)=>f(this,null,function*(){var n,a;try{!e&&this._peerConnection&&(this._log.info("creating offer"),e=yield this._peerConnection.createOffer()),e&&(yield this.setOffer(e)),yield this.setAnswer({type:"answer",sdp:t}),this._updateSDPPromise=null,r()}catch(d){this._log.error(d),!this._isSDPLogged&&this._peerConnection&&(this._log.warn(`current offer: ${this.filterSDPDirection((n=this._peerConnection.localDescription)==null?void 0:n.sdp)}
115
- next offer: ${this.filterSDPDirection(e==null?void 0:e.sdp)}`),this._log.warn(`current answer: ${this.filterSDPDirection((a=this._peerConnection.remoteDescription)==null?void 0:a.sdp)}
116
- next answer: ${this.filterSDPDirection(t)}`),this._log.warn(`offer: ${e==null?void 0:e.sdp}`),this._log.warn(`answer: ${t}`),this._log.warn(`transceivers: ${JSON.stringify(this._peerConnection.getTransceivers().map(({mid:l,currentDirection:m,direction:u,stopped:p})=>({mid:l,currentDirection:m,direction:u,stopped:p})))}`),this._log.warn(`parsedAnswer: ${JSON.stringify(this._parsedAnswer)}`),this._isSDPLogged=!0),this._updateSDPPromise=null,o(d)}})),this._updateSDPPromise}setTransceiverDirection(e,t){return f(this,null,function*(){if(!ae||!this._peerConnection||!this._parsedAnswer)return;this._log.info(`setting transceiver ${t.join(",")} direction to ${e}`);let r=this._peerConnection.getTransceivers();t.forEach(o=>{r[o].direction!==e&&(r[o].direction=e)});for(let o of t){let n=this._parsedAnswer.media[o].direction;e===z.INACTIVE&&n===z.RECVONLY&&(this._parsedAnswer.media[o].direction=e),e===z.SENDONLY&&n===z.INACTIVE&&(this._parsedAnswer.media[o].direction=z.RECVONLY)}yield this.updateSDP()})}filterSDPDirection(e=""){return ge(e).media.map(r=>r.direction)}setOffer(e){this._log.info("setting offer");let t=dp(e.sdp,this.clientAbility,this._serverAbility);return this._log.debug(t),this._peerConnection.setLocalDescription({type:"offer",sdp:t})}setAnswer(e){return this._log.info("setting answer"),this._log.debug(e.sdp),this._peerConnection.setRemoteDescription(e)}switchVideoEncoder(e){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let t=!1;this._parsedAnswer.media.forEach(r=>{var o;if(r.type===h.VIDEO){let n=this._serverAbility.video.codecs.find(a=>a.codec.toLowerCase()===e);n&&!((o=r.payloads)!=null&&o.includes(String(n.payload)))&&(r.fmtp=[],r.payloads="",r.rtp=[],r.rtcpFb=[],Ur(r,n),t=!0)}}),t&&(this._log.warn(`switch video encoder to ${e}`),yield this.updateSDP())})}useHWEncoder(e=!0,t){return f(this,null,function*(){if(!this._peerConnection||!this._parsedAnswer||!this._serverAbility)return;let r=!1,o=[];g(t)?o=this._parsedAnswer.media.slice(1,4):t===2?o.push(this._parsedAnswer.media[1]):t===3?o.push(this._parsedAnswer.media[2]):t===7&&o.push(this._parsedAnswer.media[3]),o.forEach(n=>{var a;if(n.type===h.VIDEO){let d;e&&this.is42001fSupported?d=this.clientAbility.video.codecs.find(l=>l.fmtp.includes("42001f")):e||(d=this._serverAbility.video.codecs.find(l=>l.codec.toLowerCase()===(this._serverAbility.useVp8?"vp8":"h264"))),d&&!((a=n.payloads)!=null&&a.includes(String(d.payload)))&&(n.fmtp=[],n.payloads="",n.rtp=[],n.rtcpFb=[],Ur(n,d),r=!0)}}),r&&(this._log.warn(`use ${e?"hw":"sw"} encoder`),yield this.updateSDP())})}sendDataChannelMessage(e){var t;(t=this._datachannel)==null||t.send(e)}reset(){this._peerConnection&&(this._peerConnection.close(),this._peerConnection.removeEventListener("track",this._peerConnection._onaddstreampoly,this),this._peerConnection._onaddstreampoly=null,this._peerConnection=null),this._waitForPCConnectedPromise=null,this._parsedAnswer=null}close(){this._log.info("close pc"),this.removeRTCListener(),this.insertableStreamsAbortMap.forEach(e=>$t(e.abort)&&e.abort("destroy")),this.insertableStreamsAbortMap.clear(),this.reset(),this.emitConnectionStateChangedEvent("DISCONNECTED"),this._downlinkMIDMap.clear(),this.stopReconnection(),this.removeAllListeners(),this._room.healthDetector.off("1",this.onBadHealth,this)}getReceiversByUserId(e){if(!this._peerConnection)return[];let t=this._peerConnection.getReceivers();return(this._downlinkMIDMap.get(e)||[]).map(r=>t[r])}get isUsingRelay(){return this._room.getIceTransportPolicy()==="relay"}detectTCPAndUDP({uplinkRTT:e,downlinkRTT:t}){var m;if(this.currentState!=="CONNECTED"||this._isRelayTried&&!this._room.forceRelay||this._room.getIceServers().length===0)return;let r=this._signalChannel.rtt,o=Math.max(e,t),{rttRatioThreshold:n,rttThreshold:a}=((m=this._room.scheduleResult.config)==null?void 0:m.useTurnTcpInfo)||{};if(!n||!a||!r||!o)return;let d=Math.floor(o/r),l=(this._isRelayTried||d>n)&&o>a;if(!l){this._rttOverCount=0;return}++this._rttOverCount<5||(this._log.warn(`detectTCPAndUDP ws-rtt: ${r} upRTT: ${e} downRTT: ${t} ratio: ${d} over-count: ${this._rttOverCount} isOver: ${l} isRelayTried: ${this._isRelayTried} force-relay: ${this._room.forceRelay}`),!this.isUsingRelay&&!this._isRelayTried?(this._isRelayTried=!0,this._rttOverCount=0,this.switchRelay(!0)):this._room.forceRelay&&this.switchRelay(!1))}switchRelay(e,t=!1){return f(this,null,function*(){if(this.isUsingRelay===e)return;let r=e?"relay":"udp",o=e?521709:521710;try{this._room.forceRelay=e,this._log.warn(`switchRelay ${r}`);let n=Date.now();yield this.doSwitchRelay(r),this._log.warn(`switchRelay ${r} success`),N.addSuccessEvent({key:o,cost:Date.now()-n})}catch(n){this._log.warn(`switchRelay ${r} failed`,n),N.addFailedEvent({key:o,error:n}),t?this._room.reJoin():yield this.switchRelay(!e,!0)}})}doSwitchRelay(e){return new Promise((t,r)=>{let o=setTimeout(()=>{this.stopReconnection(),r(new Error(`switch ${e} timeout`))},1e4);this.startReconnection().then(t,r).finally(()=>clearTimeout(o))})}removeRTCListener(){this._peerConnection&&(this._peerConnection.oniceconnectionstatechange=null,this._peerConnection.onconnectionstatechange=null,this._peerConnection.onsignalingstatechange=null,this._peerConnection.ontrack=null),this.dtlsTransport&&(this.dtlsTransport.onstatechange=null)}};y([pa("reconnect")],Ut.prototype,"startReconnection",1),y([Ni(e=>e.userId)],Ut.prototype,"addDownlink",1),y([Ni(e=>e)],Ut.prototype,"removeDownlink",1),y([Zt(!0)],Ut.prototype,"updateSDP",1),y([tt(521712,!1)],Ut.prototype,"setOffer",1),y([tt(521713,!1)],Ut.prototype,"setAnswer",1);var pu=class{constructor(i){c(this,"tag");c(this,"len");c(this,"data");let e=new DataView(i);this.tag=e.getUint16(),this.len=e.getUint16(2),this.data=new Uint8Array(i).slice(4,4+this.len).buffer}},fu=class{constructor(i){c(this,"tinyId");c(this,"data");let e=new DataView(i),t=0,r=[];for(;t<e.byteLength;){let o=e.getUint16(t+2),n=new pu(new Uint8Array(i).slice(t,t+2+2+o).buffer);r.push(n),t+=4+o}r.forEach(o=>{o.tag===1?this.tinyId=new TextDecoder().decode(o.data):o.tag===2&&(this.data=o.data)})}},fp=new Set;function Vr(){let s=Math.floor(Math.random()*4294967296);return fp.has(s)?Vr():(fp.add(s),s)}var Ep=ke(Ge());var Br=class extends Ep.default{constructor(e){super();c(this,"userId");c(this,"tinyId");c(this,"_sdpSemantics");c(this,"_isUplink");c(this,"_room");c(this,"_log");c(this,"_currentState","DISCONNECTED");c(this,"_prevTime",-1);this.userId=e.userId,this.tinyId=e.tinyId,this._room=e.room,this._sdpSemantics=e.room.sdpSemantics,this._isUplink=e.isUplink,this._log=C.createLogger({id:"n",userId:this._room.userId,remoteUserId:this._isUplink?void 0:this.userId,sdkAppId:this._room.sdkAppId,isLocal:this._isUplink})}get _peerConnection(){var e;return((e=this.singlePC)==null?void 0:e.getPeerConnection())||null}get singlePC(){return this._room.singlePC}get _signalChannel(){return this._room.signalChannel}close(e){this._log.info("close connection"),this.emit("closed",e)}emitConnectionStateChangedEvent(e){return e===this._currentState?!1:(E.emit(T.PEER_CONNECTION_STATE_CHANGED,{room:this._room,prevState:this._currentState,state:e,remoteUserId:this._isUplink?void 0:this.userId}),this.emit("connection-state-changed",{prevState:this._currentState,state:e}),this._currentState=e,!0)}getPeerConnection(){return this._peerConnection}getRoom(){return this._room}getUserId(){return this.userId}getTinyId(){return this.tinyId}getCurrentState(){return this._currentState}get isH264(){var e,t;return!!((t=(e=this._peerConnection)==null?void 0:e.remoteDescription)!=null&&t.sdp.includes("H264"))}};var tn=class extends Br{constructor(e){super(k(v({},e),{isUplink:!0}));c(this,"localMainAudioTrack",null);c(this,"localMainVideoTrack",null);c(this,"localAuxAudioTrack",null);c(this,"localAuxVideoTrack",null);c(this,"_isPublishingAux",!1);c(this,"_publishingLocalAudioTrack");c(this,"_publishingLocalVideoTrack");c(this,"_mediaSettings",{videoCodec:"",videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioCodec:"opus",audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0,auxVideoWidth:0,auxVideoHeight:0,auxVideoFps:0,auxVideoBps:0});c(this,"_flag",0);c(this,"_checkPublishStateTimeoutId",-1);this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.videoCodec)||"h264"}get ssrc(){if(!this.singlePC)return{audio:0,video:0,videoRtx:0,small:0,smallRtx:0,auxiliary:0,auxiliaryRtx:0};let{audioSsrc:e,bigVideoSsrc:t,bigVideoRtxSsrc:r,smallVideoSsrc:o,smallVideoRtxSsrc:n,auxVideoSsrc:a,auxVideoRtxSsrc:d}=this.singlePC.uplinkSSRC;return{audio:e||0,video:t||0,videoRtx:r||0,small:o||0,smallRtx:n||0,auxiliary:a||0,auxiliaryRtx:d||0}}get flag(){return this._flag}set flag(e){this._flag!==e&&(this._flag=e,this.checkPublishState())}checkPublishState(e=!1){if(!e&&this._checkPublishStateTimeoutId>0)return;let{publishState:t,serverPublishState:r}=this,o=Object.keys(t).find(n=>t[n]!==r[n]);if(o)if(e)this._log.warn(`publish state not matched, ${o} local:${t[o]} server:${r[o]} ${Ti()} ${pr()}`),N.addCount({key:521e3});else{this._checkPublishStateTimeoutId=re.run(Gi,()=>this.checkPublishState(!0),{delay:10*1e3,count:1});return}re.clearTask(this._checkPublishStateTimeoutId),this._checkPublishStateTimeoutId=-1}get isMainStreamPublished(){return!!(this.localMainAudioTrack||this.localMainVideoTrack)}get isAuxStreamPublished(){return!!(this.localAuxVideoTrack||this.localAuxAudioTrack)}get publishState(){var t,r,o,n;let e={audio:!1,bigVideo:!1,smallVideo:!1,auxVideo:!1};if(this._peerConnection){let a=this._peerConnection.getSenders();a&&(Jt()?(e.audio=!!((t=a[0])!=null&&t.track),e.bigVideo=!!((r=a[1])!=null&&r.track),e.smallVideo=!!((o=a[2])!=null&&o.track),e.auxVideo=!!((n=a[3])!=null&&n.track)):a.forEach(d=>{d.track&&(d.track.kind===h.AUDIO?e.audio=!0:(e.bigVideo=!0,this._room.videoManager.hasSmall&&(e.smallVideo=!0)))}))}return e}get publishingState(){let{publishState:e}=this,t=v({},e);return this._publishingLocalAudioTrack&&(t.audio=!0),this._publishingLocalVideoTrack&&(this._isPublishingAux?t.auxVideo=!0:(t.bigVideo=!0,this._publishingLocalVideoTrack.small&&(t.smallVideo=!0))),t}get serverPublishState(){return{audio:!!(this.flag&Fi),bigVideo:!!(this.flag&Bi),smallVideo:!!(this.flag&Gs),auxVideo:!!(this.flag&nr)}}get muteState(){var e,t,r;return{audio:!!((e=this.localMainAudioTrack)!=null&&e.muted),bigVideo:!!((t=this.localMainVideoTrack)!=null&&t.muted),auxVideo:!!((r=this.localAuxVideoTrack)!=null&&r.muted)}}initialize(){this.installEvents()}close(e){var r;let t=((r=this._peerConnection)==null?void 0:r.getSenders())||[];for(let o of t)o.replaceTrack(null);super.close(e),this.uninstallEvents(),this.uninstallTrackMuteEvents(this.localMainAudioTrack,this.localMainVideoTrack,this.localAuxVideoTrack),this.emitConnectionStateChangedEvent("DISCONNECTED")}installEvents(){this.listeners("connection-state-changed").includes(this.handleConnectionStateChange)||this.on("connection-state-changed",this.handleConnectionStateChange,this),this.installSPCEvents()}installSPCEvents(){var e,t;(e=this.singlePC)!=null&&e.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||(t=this.singlePC)==null||t.on("spc-reconnected",this.onSinglePCReconnected,this)}uninstallSPCEvents(){var e;(e=this.singlePC)==null||e.off("spc-reconnected",this.onSinglePCReconnected,this)}uninstallEvents(){this.off("connection-state-changed",this.handleConnectionStateChange,this),this.uninstallSPCEvents()}emitConnectionStateChangedEvent(e,t){var n,a,d;let r=this._currentState,o=super.emitConnectionStateChangedEvent(e);return o&&r!==e&&(t?t.emit("connection-state-changed",{prevState:r,state:e}):((n=this.localMainVideoTrack)==null||n.emit("connection-state-changed",{prevState:r,state:e}),(a=this.localAuxVideoTrack)==null||a.emit("connection-state-changed",{prevState:r,state:e}),(d=this._publishingLocalVideoTrack)==null||d.emit("connection-state-changed",{prevState:r,state:e}))),o}onVideoEncodeFailed(e){var t,r;e&&e.isMediaTrackActive&&this.videoCodec==="h264"&&(this._log.warn("h264 encoder not working"),(t=this.singlePC)!=null&&t.isVP8EncodeSupported&&(this._log.warn("switch to vp8"),(r=this.singlePC)==null||r.switchVideoEncoder("vp8")))}publish(o){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t,isAuxiliary:r}){var l,m,u,p,_,I,R;if(!this.singlePC)return;this.installEvents(),yield this.singlePC.waitForPeerConnectionConnected();let{publishState:n,muteState:a}=this;if(e&&(this._publishingLocalAudioTrack=e,n.audio=!0,a.audio=e.muted),t){if(!this.singlePC.isH264EncodeSupported&&!this.singlePC.isVP8EncodeSupported)throw new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264ENCODE})});me&&_i()===115&&t.profile.width*t.profile.height<=640*360&&(this._log.warn("fallback video to 480p"),t.setProfile(lt["480p_2"]),yield t.applyProfile()),this._publishingLocalVideoTrack=t,r?(n.auxVideo=!0,a.auxVideo=t.muted):(n.bigVideo=!0,a.bigVideo=t.muted)}this._isPublishingAux=r;let d;if(t&&!r&&t.small&&(d=this._room.videoManager.smallTrack,n.smallVideo=!0),yield this._signalChannel.sendWaitForResponseWithRetry({command:q.SPC_PUBLISH,responseCommand:B.SPC_PUBLISH_RESULT,data:k(v({},this.singlePC.uplinkSSRC),{state:n,muteState:a}),retries:3}),yield this.publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:d,isAuxiliary:r}),this._publishingLocalAudioTrack=null,this._publishingLocalVideoTrack=null,this._isPublishingAux=!1,t){this[r?"localAuxVideoTrack":"localMainVideoTrack"]=t;let{scaleResolutionDownBy:D}=t;yield this.singlePC.setScaleResolutionDownBy(this._peerConnection.getSenders()[r?3:1],D,t.streamType)}e&&(this[r?"localAuxAudioTrack":"localMainAudioTrack"]=e),yield this.singlePC.setBandwidth({audio:((l=this.localMainAudioTrack)==null?void 0:l.profile.bitrate)||((m=this.localAuxAudioTrack)==null?void 0:m.profile.bitrate),bigVideo:(u=this.localMainVideoTrack)==null?void 0:u.profile.bitrate,smallVideo:(_=(p=this.localMainVideoTrack)==null?void 0:p.small)==null?void 0:_.bitrate,auxVideo:(I=this.localAuxVideoTrack)==null?void 0:I.profile.bitrate}),this.sendMediaSettings(),this.installTrackMuteEvents(e,t),(this._room.preferHW||(R=this._room.scheduleResult.config)!=null&&R.preferHW)&&t&&t.profile.width*t.profile.height>=1280*720&&this.singlePC.useHWEncoder(!0,r?7:2)})}publishByTransceiver({localAudioTrack:e,localVideoTrack:t,smallTrack:r,isAuxiliary:o}){if(!pt())return;this._log.info("publish by transceiver");let n=t==null?void 0:t.outMediaTrack,a=e==null?void 0:e.outMediaTrack,d=this._peerConnection.getTransceivers(),l=[],m=[],u=(_,I,R)=>{var G,te;let D=d[I].sender.replaceTrack(R);m.push(I),(G=this.singlePC)!=null&&G.enableInsertableStreams&&D.then(()=>this.createEncodedStreams(d[I].sender,_)),(te=this.singlePC)!=null&&te.scriptTransformWorker&&this.initSenderTransfrom(d[I].sender,_),l.push(D)};a&&u(e.mediaType,0,a),n&&u(t.mediaType,o?3:1,n),r&&u(8,2,r);let p=this.singlePC.setTransceiverDirection(z.SENDONLY,m);return l.push(p),Promise.all(l)}getTrackByMediaType(e){switch(e){case 1:return this.localMainAudioTrack||this._publishingLocalAudioTrack;case 4:case 8:return this.localMainVideoTrack||this._publishingLocalVideoTrack;case 2:return this.localAuxVideoTrack||this._publishingLocalVideoTrack;default:return null}}createEncodedStreams(e,t){var a,d;if(this.singlePC.insertableStreamsAbortMap.has(e))return;let r=e.createEncodedStreams(),o=new AbortController;(a=this.singlePC)==null||a.addAbortController(e,o),((d=this.getTrackByMediaType(t))!=null&&d.enableEncodeFrame?r.readable.pipeThrough(new TransformStream({transform:(l,m)=>{var p;let u=this.getTrackByMediaType(t);m.enqueue((p=this.singlePC)!=null&&p.isUsingH264&&u?u.encodeFrame(l,t===8):l)}}),o):r.readable).pipeTo(r.writable,o).catch(l=>{this._log.debug("encoded stream error",l),l!=="destory"&&this._log.warn(l)})}initSenderTransfrom(e,t){if(!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker)return;let r=t!==2,o=t===8;e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!1,isAudio:t===1,isMain:r,isSmall:o}))}enableSmall(e){return f(this,null,function*(){var r;if(!this.singlePC)return;let t=this._peerConnection.getTransceivers();if(e){if(this._room.videoManager.smallTrack){let{sender:o}=t[2];(r=this.singlePC)!=null&&r.enableInsertableStreams&&this.createEncodedStreams(o,8),yield o.replaceTrack(this._room.videoManager.smallTrack),yield this.singlePC.setTransceiverDirection(z.SENDONLY,[2])}}else yield t[2].sender.replaceTrack(null),yield this.singlePC.setTransceiverDirection(z.INACTIVE,[2]);this.updateMediaSettings(),yield this.doPublishChange()})}installTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.on("mute",this.sendMutedFlag,this),t==null||t.on("unmute",this.sendMutedFlag,this))})}uninstallTrackMuteEvents(...e){e.forEach(t=>{t&&(t==null||t.off("mute",this.sendMutedFlag,this),t==null||t.off("unmute",this.sendMutedFlag,this))})}unpublish(r){return f(this,arguments,function*({localAudioTrack:e,localVideoTrack:t}){let o=t&&t===this.localAuxVideoTrack,n=t==null?void 0:t.outMediaTrack,a=this._peerConnection.getSenders(),d=[];e&&(o?this.localAuxAudioTrack=null:this.localMainAudioTrack=null,!this.localMainAudioTrack&&!this.localAuxAudioTrack&&(yield a[0].replaceTrack(null),d.push(0))),n&&(o?(yield a[3].replaceTrack(null),this.localAuxVideoTrack=null,this._mediaSettings=k(v({},this._mediaSettings),{auxVideoBps:0,auxVideoFps:0,auxVideoWidth:0,auxVideoHeight:0}),d.push(3)):(yield a[1].replaceTrack(null),yield a[2].replaceTrack(null),this.localMainVideoTrack=null,this._mediaSettings=k(v({},this._mediaSettings),{videoWidth:0,videoHeight:0,videoBps:0,videoFps:0,audioFs:0,audioChannel:0,audioBps:0,smallVideoWidth:0,smallVideoHeight:0,smallVideoFps:0,smallVideoBps:0}),d.push(1,2))),this.isMainStreamPublished||this.isAuxStreamPublished?(yield this.singlePC.setTransceiverDirection(z.INACTIVE,d),yield this.doPublishChange(!1)):yield this.doUnpublish(),this.uninstallTrackMuteEvents(e,t),t==null||t.emit("connection-state-changed",{prevState:this._currentState,state:"DISCONNECTED"})})}doPublishChange(e=!0){return f(this,null,function*(){let t={state:this.publishingState,constraintConfig:this._mediaSettings},r=yield this._signalChannel.sendWaitForResponseWithRetry({command:q.PUBLISH_STATE_CHANGE,data:t,responseCommand:B.PUBLISH_STATE_CHANGE_RESULT,enableLog:e,retries:3});this.checkPublishResultCode(r.data.code,r.data.message)})}doUnpublish(e=!1){return this._signalChannel.sendWaitForResponse({command:q.UNPUBLISH,commandDesc:"unpublish",responseCommand:B.UNPUBLISH_RESULT,enableLog:e}).catch(t=>{if(t.getCode()===S.API_CALL_TIMEOUT)return Promise.resolve();throw t})}updateMediaSettings(){let{detail:{isH264EncodeSupported:e,isVp8EncodeSupported:t}}=this._room.checkSystemResult;e?this._mediaSettings.videoCodec="H264":t&&(this._mediaSettings.videoCodec="VP8");let r=this._publishingLocalAudioTrack||this.localMainAudioTrack||this.localAuxAudioTrack,{localMainVideoTrack:o,localAuxVideoTrack:n}=this;if(this._publishingLocalVideoTrack&&(this._isPublishingAux?n=this._publishingLocalVideoTrack:o=this._publishingLocalVideoTrack),qt){if(r&&r.outMediaTrack){let a=r.outMediaTrack.getSettings();this._mediaSettings.audioChannel=a.channelCount||1,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=a.sampleRate||0}if(o&&o.outMediaTrack){let a=o.outMediaTrack.getSettings();this._mediaSettings.videoWidth=a.width||0,this._mediaSettings.videoHeight=a.height||0,this._mediaSettings.videoFps=a.frameRate||0,this._mediaSettings.videoBps=o.profile.bitrate*1e3,o.small&&(this._mediaSettings.smallVideoWidth=o.small.width,this._mediaSettings.smallVideoHeight=o.small.height,this._mediaSettings.smallVideoFps=o.small.frameRate,this._mediaSettings.smallVideoBps=o.small.bitrate*1e3)}if(n&&n.outMediaTrack){let a=n.outMediaTrack.getSettings();this._mediaSettings.auxVideoWidth=a.width||0,this._mediaSettings.auxVideoHeight=a.height||0,this._mediaSettings.auxVideoFps=a.frameRate||0,this._mediaSettings.auxVideoBps=n.profile.bitrate*1e3}}else r&&r.outMediaTrack&&(this._mediaSettings.audioChannel=r.profile.channelCount,this._mediaSettings.audioBps=r.profile.bitrate*1e3,this._mediaSettings.audioFs=r.profile.sampleRate),o&&o.outMediaTrack&&(this._mediaSettings.videoWidth=o.profile.width,this._mediaSettings.videoHeight=o.profile.height,this._mediaSettings.videoFps=o.profile.frameRate,this._mediaSettings.videoBps=o.profile.bitrate*1e3);this._log.info(`updateMediaSettings: ${JSON.stringify(this._mediaSettings)}`)}sendMediaSettings(){this.updateMediaSettings(),this._signalChannel.sendWaitForResponse({command:q.UPDATE_CONSTRAINT_CONFIG,data:this._mediaSettings,responseCommand:B.UPDATE_CONSTRAINT_CONFIG_RES}).then(e=>{e.data.code!==0&&this._log.warn(e.data.message)}).catch(()=>{})}addTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is adding ${e.kind} track to current published local ${t?h.AUXILIARY:h.MAIN} stream`),Jt()&&(yield this.addTrackByTransceiver(e,t))})}addTrackByTransceiver(e,t){return f(this,null,function*(){var o;if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.AUDIO)yield r[0].sender.replaceTrack(e.outMediaTrack);else{let n=t?3:1;yield r[n].sender.replaceTrack(e.outMediaTrack),n===1&&((o=this.localMainVideoTrack)!=null&&o.small)&&(yield r[2].sender.replaceTrack(this._room.videoManager.smallTrack)),r[n].direction===z.INACTIVE&&(yield this.singlePC.setTransceiverDirection(z.SENDONLY,[n]))}this.updateMediaSettings(),yield this.doPublishChange()})}removeTrack(e){return f(this,null,function*(){if(!this._peerConnection)return;let t=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;this._log.info(`is removing ${e.kind} track from current published local ${t?h.AUXILIARY:h.MAIN} stream`),Jt()&&(yield this.removeTrackByTransceiver(e,t))})}removeTrackByTransceiver(e,t){return f(this,null,function*(){if(!e.mediaTrack)return;let r=this._peerConnection.getTransceivers();if(e.kind===h.AUDIO)yield r[0].sender.replaceTrack(null);else{let o=t?3:1;yield r[o].sender.replaceTrack(null),o===1&&this._room.videoManager.hasSmall&&(yield r[2].sender.replaceTrack(null)),yield this.singlePC.setTransceiverDirection(z.INACTIVE,[o])}this.updateMediaSettings(),yield this.doPublishChange()})}replaceTrack(e){return f(this,null,function*(){var n;let t=(n=this._peerConnection)==null?void 0:n.getSenders(),r=e.outMediaTrack||e.mediaTrack;if(!t||t.length===0||!r||t.find(a=>a.track===r))return!1;let o=e===this.localAuxAudioTrack||e===this.localAuxVideoTrack;return this._log.info(`is replacing ${r.kind} track ${r.id} ${r.label} on ${o?h.AUXILIARY:h.MAIN} stream`),r.kind===h.AUDIO&&t[0]&&(yield t[0].replaceTrack(r)),r.kind===h.VIDEO&&(!o&&t[1]&&(yield t[1].replaceTrack(r)),o&&t[3]&&(yield t[3].replaceTrack(r))),!0})}setBandwidth(o){return f(this,arguments,function*({bandwidth:e,type:t,videoType:r}){if(this.singlePC){let n={};t===h.AUDIO?n.audio=e:r==="big"?n.bigVideo=e:r==="small"?n.smallVideo=e:n.auxVideo=e,yield this.singlePC.setBandwidth(n)}})}sendMutedFlag(e){e===this.localAuxAudioTrack||e===this.localAuxVideoTrack||(this._log.info(`send muted state: ${JSON.stringify(this.muteState)}`),this._signalChannel.sendWaitForResponseWithRetry({command:q.UPDATE_MUTE_STAT,responseCommand:B.MUTE_RESULT,data:this.muteState,retries:3}).catch(()=>{}))}handleConnectionStateChange(e){e.state==="CONNECTED"&&(this.localMainVideoTrack||this._publishingLocalVideoTrack&&!this._isPublishingAux)&&E.emit(T.SEND_FIRST_VIDEO_FRAME,{room:this._room})}getVideoTrackId(e=h.VIDEO){if(this._peerConnection){let t=this._peerConnection.getSenders();if(e===h.AUXILIARY&&t[3]&&t[3].track)return t[3].track.id;if(e===h.VIDEO&&t[1]&&t[1].track)return t[1].track.id}if(this.localMainVideoTrack&&e===h.VIDEO){let t=this.localMainVideoTrack.mediaTrack;if(t)return t.id}if(this.localAuxVideoTrack&&e===h.AUXILIARY){let t=this.localAuxVideoTrack.mediaTrack;if(t)return t.id}return""}getSSRC(){return this.ssrc}checkPublishResultCode(e,t){if(e!==0)throw e===ar?(this._log.error(ve.NOT_SUPPORTED_H264ENCODE),new b({code:S.NOT_SUPPORTED_H264,message:U({key:x.NOT_SUPPORTED_H264ENCODE})})):new b({code:S.UNKNOWN,message:U({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:B.PUBLISH_RESULT,code:e,message:t}})})}onSinglePCReconnected(){return f(this,null,function*(){this.isMainStreamPublished&&(this._log.warn("republish main stream"),yield this.publish({localAudioTrack:this.localMainAudioTrack,localVideoTrack:this.localMainVideoTrack,isAuxiliary:!1})),this.isAuxStreamPublished&&(this._log.warn("republish aux stream"),yield this.publish({localAudioTrack:this.localAuxAudioTrack,localVideoTrack:this.localAuxVideoTrack,isAuxiliary:!0}))})}};y([Je(function({localVideoTrack:e}){e==null||e.once("6",this.onVideoEncodeFailed,this)})],tn.prototype,"publish",1),y([Je(function({localVideoTrack:e}){e==null||e.off("6",this.onVideoEncodeFailed,this)})],tn.prototype,"unpublish",1);var _u=tn;function Sp(s){return Object.keys(s).filter(i=>s[i])}var Ps=class extends Br{constructor(e){super(k(v({},e),{isUplink:!1}));c(this,"_flag",0);c(this,"isRobot",!1);c(this,"role","anchor");c(this,"remoteAudioTrack");c(this,"remoteVideoTrack");c(this,"remoteAuxiliaryTrack");c(this,"ssrc",{audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0});c(this,"jitterBufferTimeoutId",-1);this.flag=e.flag,this.isRobot=e.isRobot||!1,this.remoteAudioTrack=new Di(this._room,this),this.remoteVideoTrack=new ii(this._room,this),this.remoteAuxiliaryTrack=new Is(this._room,this),this.initialize()}get videoCodec(){var e;return((e=this.singlePC)==null?void 0:e.downlinkVideoCodec)||"h264"}get subscribeState(){return{audio:this.remoteAudioTrack.isSubscribed||this.remoteAudioTrack.isSubscribing,video:this.remoteVideoTrack.isBig&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),smallVideo:this.remoteVideoTrack.isSmall&&(this.remoteVideoTrack.isSubscribed||this.remoteVideoTrack.isSubscribing),auxiliary:this.remoteAuxiliaryTrack.isSubscribed||this.remoteAuxiliaryTrack.isSubscribing}}get muteState(){return ui(this.flag,this.userId)}get flag(){return this._flag}set flag(e){var t,r,o;e!==this._flag&&(this._flag=e,(t=this.remoteAudioTrack)==null||t.onFlagChanged(),(r=this.remoteVideoTrack)==null||r.onFlagChanged(),(o=this.remoteAuxiliaryTrack)==null||o.onFlagChanged())}get hasMainStream(){return this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall}get hasAuxStream(){return this.muteState.hasAuxiliary}get isMainStreamSubscribed(){return(this.subscribeState.audio||this.subscribeState.video||this.subscribeState.smallVideo)&&(this.muteState.hasAudio||this.muteState.hasVideo||this.muteState.hasSmall)}get isAuxStreamSubscribed(){return this.subscribeState.auxiliary&&this.muteState.hasAuxiliary}get isSmallStreamSubscribed(){return this.subscribeState.smallVideo&&this.muteState.hasSmall}get isBigStreamSubscribed(){return this.subscribeState.video&&this.muteState.hasVideo}isStreamUnpublished(e){return e===h.MAIN?!this.muteState.hasAudio&&!this.muteState.hasVideo:!this.muteState.hasAuxiliary}initialize(){this.installEvents()}close(e){clearTimeout(this.jitterBufferTimeoutId),super.close(e),this.emitConnectionStateChangedEvent("DISCONNECTED"),this.remoteAudioTrack.close(),this.remoteVideoTrack.close(),this.remoteAuxiliaryTrack.close(),this.uninstallEvents(),this.removeDownlink()}installEvents(){this.singlePC&&(this.listeners("track").includes(this.onTrack)||this.singlePC.on("track",this.onTrack,this),this.listeners("spc-reconnected").includes(this.onSinglePCReconnected)||this.singlePC.on("spc-reconnected",this.onSinglePCReconnected,this))}uninstallEvents(){this.singlePC&&(this.singlePC.off("track",this.onTrack,this),this.singlePC.off("spc-reconnected",this.onSinglePCReconnected,this))}emitConnectionStateChangedEvent(e){var o,n;let t=this._currentState,r=super.emitConnectionStateChangedEvent(e);return r&&t!==e&&((o=this.remoteVideoTrack)==null||o.emit("connection-state-changed",{prevState:t,state:e}),(n=this.remoteAuxiliaryTrack)==null||n.emit("connection-state-changed",{prevState:t,state:e})),r}onTrack(e){var m,u;let t=e.streams[0],{track:r,receiver:o}=e;if(!t.id.includes(this.tinyId))return;let a=t.id.includes("aux")?"auxiliary":"main";this._log.debug(`ontrack ${a} ${r.kind}`);let d=h.AUDIO;r.kind===h.VIDEO&&(d=a===h.MAIN?h.VIDEO:h.AUXILIARY);let l=this.remoteAudioTrack;d===h.VIDEO?l=this.remoteVideoTrack:d===h.AUXILIARY&&(l=this.remoteAuxiliaryTrack),(m=this.singlePC)==null||m.receiverRemoteTrackMap.set(o,l),(u=this.singlePC)!=null&&u.scriptTransformWorker&&this.initReceiverTransform(o,a,r.kind===h.AUDIO),this.singlePC.enableInsertableStreams&&this.createEncodedStreams(o),l.setInputMediaStreamTrack(r)}createEncodedStreams(e){if(!this.singlePC.insertableStreamsAbortMap.has(e)){let t=e.createEncodedStreams(),r=new AbortController,o={abortController:r,enqueue:n=>{var d,l;let a=(d=this.singlePC)==null?void 0:d.receiverRemoteTrackMap.get(e);return!a||a.kind==="video"&&!((l=this.singlePC)!=null&&l.isUsingH264)?n:a.decodeFrame(n)}};t.readable.pipeThrough(new TransformStream({transform:(n,a)=>{let d=o.enqueue(n);d&&a.enqueue(d)}})).pipeTo(t.writable,r).catch(n=>{n!=="destory"&&this._log.warn(n)}),this.singlePC.addAbortController(e,r)}}initReceiverTransform(e,t,r){!this._peerConnection||!this.singlePC||!this.singlePC.scriptTransformWorker||e.transform||(e.transform=new RTCRtpScriptTransform(this.singlePC.scriptTransformWorker,{isReceiver:!0,isAudio:r,userId:this.userId,streamType:t}))}subscribe(e,t){return f(this,null,function*(){try{if(this._log.info(`subscribe ${t} ${Sp(e)}`),this.hasSSRC){let r="subscribe_change";Object.values(e).find(o=>o===!0)||(r="unsubscribe"),yield this.sendSubscription(r,e)}else yield this.doSubscribe(e),this.checkTrackEnded(e)}catch(r){throw this._room.isJoined&&this.isStreamUnpublished(t)?(this._log.warn(`${r.message} ${JSON.stringify(this.muteState)}`),new b({code:S.REMOTE_STREAM_NOT_EXIST,message:`remote user ${this.userId} unpublished stream`})):r}})}checkTrackEnded(e){var t,r,o;if((e.audio&&((t=this.remoteAudioTrack.mediaTrack)==null?void 0:t.readyState)==="ended"||e.video&&((r=this.remoteVideoTrack.mediaTrack)==null?void 0:r.readyState)==="ended"||e.auxiliary&&((o=this.remoteAuxiliaryTrack.mediaTrack)==null?void 0:o.readState)==="ended")&&this.singlePC&&!this.singlePC.isReconnecting){if(this._log.warn("remote track ended start spc reconnect"),vt&&Dt<92)return;this.singlePC.startReconnection()}}unsubscribe(r){return f(this,arguments,function*({remoteTracks:e,streamType:t}){var a;if(t==="main"&&!this.isMainStreamSubscribed||t==="auxiliary"&&!this.isAuxStreamSubscribed){this._log.info(`${t} stream already unsubscribed`);return}let o=v({},this.subscribeState);e.forEach(d=>{switch(d.mediaType){case 1:o.audio=!1;break;case 4:o.video=!1;break;case 8:o.smallVideo=!1;break;case 2:o.auxiliary=!1;break;default:break}});let n="subscribe_change";Object.values(o).find(d=>d===!0)||(n="unsubscribe"),this._log.info(`${n==="unsubscribe"?n:"subscribe"} ${t} [${Sp(o)}]`),n==="unsubscribe"&&((a=this.singlePC)==null||a.removeDownlinkQueue.add(this.tinyId)),yield this.sendSubscription(n,o),n==="unsubscribe"&&(yield this.removeDownlink())})}sendSubscription(e,t=this.subscribeState){let r={srcTinyId:this.tinyId,srcUserId:this.userId},o=q.UNSUBSCRIBE,n=B.UNSUBSCRIBE_RESULT;return e==="subscribe_change"&&(r={audio:t.audio,bigVideo:t.video,auxVideo:t.auxiliary,smallVideo:t.smallVideo,srcTinyId:this.tinyId},o=q.SUBSCRIBE_CHANGE,n=B.SUBSCRIBE_CHANGE_RESULT),this._signalChannel.sendWaitForResponseWithRetry({command:o,data:r,responseCommand:n,timeout:1e4,retries:3}).then(({data:a})=>{if(a.code!==0){let d=new b({code:a.code,message:U({key:x.ERROR_MESSAGE,data:{type:e,message:a.message}})});throw this._log.error(d),d}})}getMainStreamVideoTrackId(){return this.remoteVideoTrack&&this.remoteVideoTrack.mediaTrack?this.remoteVideoTrack.mediaTrack.id:""}getAuxStreamVideoTrackId(){return this.remoteAuxiliaryTrack&&this.remoteAuxiliaryTrack.mediaTrack?this.remoteAuxiliaryTrack.mediaTrack.id:""}setDelay({audioDelay:e,videoDelay:t}){this.remoteAudioTrack.stat.end2EndDelay=e,this.remoteVideoTrack.stat.end2EndDelay=t}onSinglePCReconnected(){(this.ssrc.audio||this.ssrc.video||this.ssrc.auxiliary)&&(this._log.warn(`resubscribe ${JSON.stringify(this.subscribeState)}`),this.doSubscribe(this.subscribeState))}get hasSSRC(){return this.ssrc.audio&&this.ssrc.video&&this.ssrc.auxiliary}doSubscribe(){return f(this,arguments,function*(e=this.subscribeState,t=!0){if(this.singlePC){this.singlePC.addDownlinkQueue.add(this.tinyId),yield this.singlePC.waitForPeerConnectionConnected();try{if(t||!this.hasSSRC){let r={audioSsrc:Vr(),bigVideoSsrc:Vr(),bigVideoRtxSsrc:Vr(),auxVideoSsrc:Vr(),auxVideoRtxSsrc:Vr()},{audioSsrc:o,bigVideoSsrc:n,bigVideoRtxSsrc:a,auxVideoSsrc:d,auxVideoRtxSsrc:l}=r;this.ssrc={audio:o,video:n,videoRtx:a,auxiliary:d,auxiliaryRtx:l},this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc});try{let m=yield this._signalChannel.sendWaitForResponseWithRetry({command:q.SPC_SUBSCRIBE,responseCommand:B.SPC_SUBSCRIBE_RESULT,data:{srcUserId:this.userId,srcTinyId:this.tinyId,audio:e.audio,bigVideo:e.video,auxVideo:e.auxiliary,smallVideo:e.smallVideo,customData:!1,ssrc:r},retries:3,retryTimeout:0});if(m.data.code!==0)throw new b({code:m.data.code,message:m.data.message})}catch(m){throw yield this.removeDownlink(),m}return}this.singlePC.addDownlinkQueue.delete(this.tinyId),yield this.singlePC.addDownlink({userId:this.userId,tinyId:this.tinyId,ssrc:this.ssrc})}finally{let r=this._room.scheduleResult.config;Rd&&(r!=null&&r.jitterDelay||r!=null&&r.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:r.jitterDelay,auxDelay:r.jitterDelayAux})}}})}removeDownlink(){return f(this,null,function*(){if(!this.singlePC)return;this.ssrc={audio:0,video:0,videoRtx:0,auxiliary:0,auxiliaryRtx:0},this.singlePC.removeDownlinkQueue.delete(this.tinyId);let e=this._room.scheduleResult.config;(e!=null&&e.jitterDelay||e!=null&&e.jitterDelayAux)&&this.setJitterBufferDelay({mainDelay:0,auxDelay:0}),yield this.singlePC.removeDownlink(this.userId)})}setJitterBufferDelay({mainDelay:e,auxDelay:t}){if(!this.singlePC||!this._peerConnection||pi(e)&&pi(t))return Promise.resolve();this._log.info(`set jitterBuffer main: ${e} aux: ${t}`);let r=this.singlePC.getReceiversByUserId(this.userId);return Y(e)&&(this.remoteAudioTrack.jitterBufferDelay=e,this.remoteVideoTrack.jitterBufferDelay=e),Y(t)&&(this.remoteAuxiliaryTrack.jitterBufferDelay=t,pi(e)&&(this.remoteAudioTrack.jitterBufferDelay=t)),new Promise(o=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})})}doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o}){try{if(e===0&&t===0)return r.forEach(a=>a.jitterBufferTarget=0),o();if(r.forEach(a=>{var u;let d=a.track===this.remoteAuxiliaryTrack.outMediaTrack||pi(e)&&a.track===this.remoteAudioTrack.outMediaTrack;if(d&&pi(t)||!d&&pi(e))return;let l=d?t||0:e,m=(a.jitterBufferTarget||0)+100;m>l||(a.jitterBufferTarget=m,this._log.debug(`set ${d?"aux ":""}${(u=a==null?void 0:a.track)==null?void 0:u.kind} jitterBuffer delay ${m} -> ${l}`))}),!r.find(a=>{let d=a.track===this.remoteAuxiliaryTrack.outMediaTrack?t||0:e;return a.jitterBufferTarget<d}))return this._log.info(`set jitterBuffer main: ${e} aux: ${t} done`),o();this.jitterBufferTimeoutId=setTimeout(()=>{this.doSetJitterBufferDelay({mainDelay:e,auxDelay:t,receivers:r,resolve:o})},1e3)}catch(n){this._log.warn(`set jitterBuffer delay error: ${n}`),clearTimeout(this.jitterBufferTimeoutId),o()}}get audioReceiver(){var e;return((e=this.singlePC)==null?void 0:e.getReceiversByUserId(this.userId)[0])||null}};y([Zt(),J(e=>function(...t){return new Promise((r,o)=>{let n=a=>{this.off("closed",n),o(new b({code:S.API_CALL_ABORTED,message:U({key:x.CONNECTION_ABORTED,data:a})}))};this.on("closed",n),e.apply(this,t).then(r,o).finally(()=>{this.off("closed",n)})})})],Ps.prototype,"subscribe",1),y([Zt()],Ps.prototype,"unsubscribe",1),y([Ni(()=>"jitter")],Ps.prototype,"setJitterBufferDelay",1);var Ip=Ps;function Ap(){return J(s=>function(...i){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||(i=i.filter(t=>t.outMediaTrack&&t.state==="capture"),!i.length))return;E.emit("61",{room:this});let e=s.apply(this,i);return i.forEach(t=>t.publish(this,e)),e})})}function Cp(){return J(s=>function(...i){let e=s.apply(this,i);return i.forEach(t=>t.unpublish()),e})}var Rp=ke(Ge());function xT(){return Math.floor(Math.random()*16383)}var dc=class dc extends Rp.EventEmitter{constructor(e,t){super();this.room=e;this.signalChannel=t;c(this,"log");c(this,"cmdIdSeqMap",new Map);c(this,"messageMap",new Map);this.log=C.createLogger({id:"cmm",userId:e.userId}),this.onReceiveMsg=this.onReceiveMsg.bind(this),t.on(B.RECEIVE_CUSTOM_MSG,this.onReceiveMsg),this.room.on("peer-leave",r=>{[...this.messageMap.keys()].forEach(o=>{o.split("_").slice(0,-1).join("_")===r&&this.messageMap.delete(o)})})}send({cmdId:e,data:t}){let r=this.cmdIdSeqMap.get(e)||xT(),o={cmdId:e,msg:btoa(String.fromCharCode(...new Uint8Array(t))),ordered:!0,reliable:!0,streamSeq:r};this.cmdIdSeqMap.set(e,r+1),this.signalChannel.send(q.SEND_CUSTOM_MSG,o),this.log.debug(`send custom msg: ${JSON.stringify(o)}`)}onReceiveMsg(e){let{data:t}=e.data,r=this.room.tinyIdToUserIdMap.get(t.srcTinyId);if(r){let o={userId:r,cmdId:t.cmdId,seq:t.streamSeq,data:Uint8Array.from(atob(t.msg),n=>n.charCodeAt(0)).buffer};if(t.ordered){let n=`${r}_${o.cmdId}`,a=this.messageMap.get(n);if(!a||a.lastSeq===0)a||(a={lastSeq:0,cachedMessageMap:new Map},this.messageMap.set(n,a),setTimeout(()=>this.emitMessage(o,!0),100)),a.cachedMessageMap.set(o.seq,{message:o});else if(Math.abs(a.lastSeq-o.seq)>dc.SEQ_INTERVAL)this.messageMap.set(n,{lastSeq:o.seq,cachedMessageMap:new Map}),this.emitMessage(o);else if(o.seq>a.lastSeq){if(o.seq===a.lastSeq+1)this.emitMessage(o);else if(!a.cachedMessageMap.has(o.seq)){let d=setTimeout(()=>this.emitMessage(o,!0),5e3);a.cachedMessageMap.set(o.seq,{message:o,timeoutId:d})}}else this.log.debug(`drop message ${o.userId}-${o.cmdId}-${o.seq}`)}else this.emit("message",o)}else{this.log.warn(`receive msg from unknown user, wait peer-join tinyId: ${t.srcTinyId}`);let o=n=>{n.tinyId===t.srcTinyId&&(this.room.off("peer-join",o),this.onReceiveMsg(e))};this.room.on("peer-join",o),hi(2e3).then(()=>this.room.off("peer-join",o))}}emitMessage(e,t=!1){var a;let r=this.messageMap.get(`${e.userId}_${e.cmdId}`),o=e;if(r){if(t){let d=[...r.cachedMessageMap.values()].sort((l,m)=>l.message.seq-m.message.seq);d[0]&&(o=d[0].message)}r.lastSeq!==0&&o.seq-r.lastSeq>1&&this.log.debug(`msg lost userId: ${o.userId} seq: ${r.lastSeq} -> ${o.seq}`),r.lastSeq=o.seq,clearTimeout((a=r.cachedMessageMap.get(o.seq))==null?void 0:a.timeoutId),r.cachedMessageMap.delete(o.seq)}this.log.debug(`receive custom msg: ${JSON.stringify(o)}`),this.emit("message",o);let n=r==null?void 0:r.cachedMessageMap.get(o.seq+1);n&&this.emitMessage(n.message)}};c(dc,"SEQ_INTERVAL",300);var cc=dc;var{isString:yp,isUndefined:ws,getNetworkType:UT,isEmpty:rn}=st,Vt=class extends nc{constructor(e){super(e);c(this,"_businessInfo");c(this,"userManager");c(this,"_version");c(this,"_heartbeat",-1);c(this,"_lastHeartBeatTime",-1);c(this,"_stats");c(this,"_joinTimeout",-1);c(this,"_firstPublishedList",null);c(this,"_joinReject",null);c(this,"_isRelayChanged",!1);c(this,"sdpSemantics");c(this,"signalChannel",null);c(this,"uplinkConnection",null);c(this,"singlePC",null);c(this,"enableSPC",us);c(this,"_changeBigSmallRecords",new Map);c(this,"networkQuality");c(this,"_iceTransportPolicy");c(this,"forceRelay",!1);c(this,"_turnServers",[]);c(this,"_syncUserListInterval",-1);c(this,"_smallStreamConfig",{bitrate:100,frameRate:15,height:120,width:160});c(this,"enableSEI",!1);c(this,"_enableAudioVolumeEvaluation",!1);c(this,"_audioVolumeIntervalId",0);c(this,"_enableMultiAuxStream",!1);c(this,"_pureAudioPushMode",!1);c(this,"_customMessageManager");c(this,"preferHW",!1);c(this,"healthDetector");c(this,"_updateAudioLevelTaskId",-1);this._stats=new Ko(this,this._log),this.userManager=new Pa(this.userId,this._log),this._version=Ce,this.sdpSemantics=Hr,ws(e.sdpSemantics)?jt.isUnifiedPlanDefault()&&(this.sdpSemantics=Hi):this.sdpSemantics=e.sdpSemantics,this._log.info(`sdpSemantics: ${this.sdpSemantics}, netType: ${UT()}`),e.iceTransportPolicy&&(this._iceTransportPolicy=e.iceTransportPolicy),this._enableMultiAuxStream=ws(e.enableMultiAuxStream)?!1:e.enableMultiAuxStream,this.enableSEI=e.enableSEI&&us,!ws(e.enableSPC)&&us&&(this.enableSPC=e.enableSPC),this.preferHW=!!e.preferHW,this._initBusinessInfo(e),this.healthDetector=new up(this)}get isMainStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isMainStreamPublished)}get isMainAudioPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.localMainAudioTrack)}get isAuxStreamPublished(){var e;return!!((e=this.uplinkConnection)!=null&&e.isAuxStreamPublished)}get hasAuxStream(){return[...this.remotePublishedUserMap.values()].findIndex(e=>e.muteState.hasAuxiliary)>=0}get userMap(){return this.userManager.userMap}get remotePublishedUserMap(){return this.userManager.remotePublishedUserMap}get tinyIdToUserIdMap(){return new Map([...this.userMap.values()].map(e=>[e.tinyId,e.userId]))}join(e,t,r){return f(this,null,function*(){return this.userManager.mySelfId=this.userId,this.userManager.on("1",o=>{this.emit("peer-join",o)}),this.userManager.on("2",o=>{this.closeDownLinkConnection(o,"remote user exitRoom"),this.emit("peer-leave",o)}),this.userManager.on("3",this.createDownlinkConnection,this),this.userManager.on("5",this.closeDownLinkConnection,this),this.userManager.on("6",n=>{var o=Su(n,[]);E.emit(T.REMOTE_PUBLISH_STATE_CHANGED,v({room:this},o)),this.emit("remote-publish-state-changed",v({},o))}),this.joinParams=e,new Promise((o,n)=>f(this,null,function*(){var a,d;this._joinReject=n;try{this.checkDestroy();try{yield Promise.all([this.initialize(),this.initSinglePC()])}catch(m){if(m instanceof b&&m.code===S.SPC_INITIALIZED_FAILED)(a=this.signalChannel)==null||a.destroy(),yield this.initialize();else return n(m)}let l=L();yield this.doJoin(e,(d=this.singlePC)==null?void 0:d.clientAbility),N.addSuccessEvent({key:521708,cost:L()-l}),o(),this._firstPublishedList&&this.onPublishedUserList({data:{userList:this._firstPublishedList}})}catch(l){N.addFailedEvent({key:521708,error:l}),n(l)}this._joinReject=null}))})}initSinglePC(){return f(this,null,function*(){if(!(!this.enableSPC||this.singlePC)){this.singlePC=new Ut({signalChannel:this.signalChannel,room:this,enableCustomMessage:!1}),this.singlePC.on("sei-message",e=>this.emit("sei-message",e)),this.singlePC.on("dump",e=>this.emit("dump",e)),this.singlePC.once("error",()=>this.fallbackToMPC());try{return yield this.singlePC.initialize()}catch(e){throw this.fallbackToMPC(),new b({code:S.SPC_INITIALIZED_FAILED,message:e==null?void 0:e.message})}}})}doJoin(e,t){return new Promise((r,o)=>f(this,null,function*(){var d,l,m;e.privateMapKey&&(this.privateMapKey=e.privateMapKey),e.latencyLevel&&(this.latencyLevel=e.latencyLevel),this.signalChannel.once(Ee.SETUP_FAILED,u=>{this.clearJoinTimeout(),E.emit(T.JOIN_SIGNAL_CONNECTION_END,{room:this,error:u}),o(u)}),he((l=(d=this.scheduleResult)==null?void 0:d.config)==null?void 0:l.singlePC)&&us&&(this.enableSPC=this.scheduleResult.config.singlePC),this.keyPointManager.setConnectionType(this.singlePC?1:2);let n={roomId:String(e.roomId||e.strRoomId),useStringRoomId:this.useStringRoomId,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel,trtcRole:e.role,trtcScene:this.scene==="live"?2:1,sdpSemantics:this.sdpSemantics,version:this._version,ua:navigator&&navigator.userAgent||"",terminalType:Xc(),netType:ur(),bussinessInfo:this._businessInfo,ability:t,sdkType:this._sdkType,userSig:this.userSig,receiveMix:!0};this._log.debug(`join room signal data: ${JSON.stringify(n)}`);let a=5e3;(m=this.scheduleResult.config)!=null&&m.enterRoomTimeout&&this.scheduleResult.config.enterRoomTimeout>=1&&(a=this.scheduleResult.config.enterRoomTimeout*1e3),this._joinTimeout=window.setTimeout(()=>{o(new b({code:S.JOIN_ROOM_FAILED,message:U({key:x.JOIN_ROOM_TIMEOUT})}))},a),E.emit(T.JOIN_SEND_CMD,{room:this}),this.signalChannel.send(this.singlePC?q.SPC_JOIN_ROOM:q.JOIN_ROOM,n),this.signalChannel.once(B.JOIN_ROOM_RESULT,u=>{this.clearJoinTimeout();let{code:p,message:_,data:I,tinyId:R}=u.data;E.emit(T.JOIN_RECEIVED_CMD_RES,{room:this,code:p}),p===0?(this._log.info("Join room success, start heartbeat"),R&&(this.tinyId=R),this.startHeartbeat(),this.syncUserList(),this.startSyncUserListInterval(),this._firstPublishedList=I.publishers,this.singlePC&&this.singlePC.connect(k(v({},I.ability),{useVp8:I.ability.useVp8||!!e.useVp8})).catch(()=>{}),r()):(this._log.error(`Join room failed result: ${p} error: ${_}`),o(new b({code:S.JOIN_ROOM_FAILED,extraCode:p,message:U({key:x.JOIN_ROOM_FAILED,data:{error:_,code:p}})})))})}))}reJoin(e=!0){return f(this,null,function*(){if(!this.isJoined){this._log.warn("reJoin abort");return}try{this._log.warn(`reJoin pending: ${this.joinParams.roomId}`);let t,r=[];if(this.singlePC&&(this.singlePC.close(),this.singlePC=null,r.push(this.initSinglePC().then(o=>(t=o,o)))),this.signalChannel&&(this.signalChannel.race=e,this.signalChannel.close(),r.push(this.signalChannel.connect())),yield Promise.all(r),yield this.doJoin(k(v({},this.joinParams),{role:this.role==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel}),t),this._log.warn("reJoin success"),ee.logSuccessEvent({userId:this.userId,eventType:Xe.REJOIN}),this.singlePC){let o=n=>{var a;n.state==="CONNECTED"&&((a=this.singlePC)==null||a.off(si.CONNECTION_STATE_CHANGED,o),this.uplinkConnection instanceof _u&&(this.uplinkConnection.installEvents(),this.uplinkConnection.onSinglePCReconnected()),this.remotePublishedUserMap.forEach(d=>{d.installEvents(),d.onSinglePCReconnected()}))};this.singlePC.on(si.CONNECTION_STATE_CHANGED,o),this.checkConnectionsToReconnect(),this.uplinkConnection instanceof Yo&&!this.uplinkConnection.getIsReconnecting()&&this.uplinkConnection.startReconnection()}}catch(t){this._log.warn(`reJoin fail ${t}`),this.reset(),ee.logFailedEvent({userId:this.userId,eventType:Xe.REJOIN,error:t}),this.emit("error",new b({code:S.JOIN_ROOM_FAILED,message:U({key:x.REJOIN_ROOM_FAILED,data:{roomId:this.joinParams.roomId}})}))}})}initialize(){return f(this,null,function*(){let{mainUrl:e,backupUrl:t}=this.getSignalChannelUrl(),r=this.signalChannel||Vm(this.userId),o=!!(r&&r.isConnected&&r.keepAlive),n;return Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(n=this.scheduleResult.domains[0]),this._log.info(`${o?"reuse":"setup"} signal channel`),o?(r.url=e,r.backupUrl=t,r.room=this,this.signalChannel=r):(this.signalChannel=new vs({sdkAppId:this.sdkAppId,userId:this.userId,userSig:this.userSig,url:e,backupUrl:t,race:this.enableSPC&&!this.proxy_ws,room:this,signalDomainWhenUnifiedProxy:this.proxy_unified?n:void 0}),this._customMessageManager=new cc(this,this.signalChannel),this._customMessageManager.on("message",a=>{this.emit("custom-message",a)})),this.networkQuality||(this.networkQuality=new ks({signalChannel:this.signalChannel,room:this}),this.networkQuality.on(ks.EVENT_NETWORK_QUALITY,a=>{var d;this.emit("network-quality",a),(d=this.singlePC)==null||d.detectTCPAndUDP(a)})),Ue(this,this.signalChannel).add(Ee.CONNECTION_STATE_CHANGED,a=>{E.emit(T.SIGNAL_CONNECTION_STATE_CHANGED,v({room:this},a)),this.emit("signal-connection-state-changed",a)}).add(Ee.RECONNECT_FAILED,a=>{this.reset(),this.emit("error",a)}).add(B.PEER_JOIN,a=>{let{srcTinyId:d,userId:l,role:m}=a.data.data;this.userManager.addUser({userId:l,tinyId:d,role:m})}).add(B.PEER_LEAVE,a=>{let{userId:d,reason:l=0}=a.data.data;this.userManager.deleteUser(d,l)}).add(B.UPDATE_REMOTE_MUTE_STAT,a=>{this._lastHeartBeatTime>0&&Date.now()-this._lastHeartBeatTime>=10*1e3&&this.doHeartbeat(),this.onPublishedUserList(a.data)}).add(B.CLIENT_BANNED,a=>{let d=a.data.data,{reason:l}=d;if(ee.uploadEvent({log:`stat-banned:${l}`,userId:this.userId}),l==="user_time_out"){this._log.warn(`${l} last heart beat time: ${this._lastHeartBeatTime} interval: ${Date.now()-this._lastHeartBeatTime}, visibility: ${document.visibilityState}`),this.reJoin();return}this._log[l==="kick"?"error":"info"](`user was banned because of [${l}]`),this.reset(),this.emit("banned",{reason:l})}),this.signalChannel.once(Ee.SETUP_SUCCESS,a=>{this.tinyId=a.signalInfo.tinyId,E.emit(T.JOIN_SIGNAL_CONNECTION_END,{room:this})}),E.emit(T.JOIN_SIGNAL_CONNECTION_START,{room:this}),yield this.signalChannel.connect(),o&&E.emit(T.JOIN_SIGNAL_CONNECTION_END,{room:this}),o})}setSignalChannel(e){this.signalChannel=e,e||Se(this)}leave(){return f(this,null,function*(){var e;try{yield this.doHeartbeat()}catch(t){}this._log.info("leave() => leaving room"),E.emit(T.LEAVE_SEND_CMD,{room:this}),(e=this.signalChannel)==null||e.send(q.LEAVE_ROOM)})}clearNetworkQuality(){this.networkQuality&&(this.networkQuality.stop(),delete this.networkQuality)}closeConnections(){this.remotePublishedUserMap.forEach(e=>{this.closeDownLinkConnection(e.userId,"you exitRoom")})}clearJoinTimeout(){clearTimeout(this._joinTimeout),this._joinTimeout=-1}startHeartbeat(){this._heartbeat===-1&&(this._heartbeat=re.run($i,this.doHeartbeat.bind(this),{delay:2e3}))}stopHeartbeat(){this._heartbeat!==-1&&(this._log.info("stopHeartbeat"),re.clearTask(this._heartbeat),this._heartbeat=-1,this._lastHeartBeatTime=-1)}doHeartbeat(){return f(this,null,function*(){var n;let e=this.badCaseDetector.getMonitorFreeze(),t=yield this._stats.getStatsReport({uplinkConnection:this.uplinkConnection,downlinkConnections:this.remotePublishedUserMap,freezeMap:e});this.badCaseDetector.resetMonitor();let r=(n=this.signalChannel)!=null&&n.isConnected?dm(this.userId):[],o=k(v({str_sdk_version:Fs,uint64_datetime:new Date().getTime(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyId},msg_event_msg:r,str_acc_ip:this.getSignalInfo().relayIp,str_client_ip:this.getSignalInfo().clientIp},t),{msg_device_info:v({uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:ur()},t.msg_device_info)});if(this.heartbeatReport=o,E.emit(T.HEARTBEAT_REPORT,{room:this,report:o}),this.signalChannel){if(this.signalChannel.isConnected){this.signalChannel.send(q.ON_QUALITY_REPORT,o);let a=Date.now();this._lastHeartBeatTime>0&&a-this._lastHeartBeatTime>1e4&&this._log.warn(`heartbeat took ${a-this._lastHeartBeatTime}`),this._lastHeartBeatTime=a,this.signalChannel.isOnline||(this._log.warn("signal channel is not online"),this.signalChannel.startReconnection())}this.emit("heartbeat-report",k(v({},o),{bytes_sent:this._stats.totalBytesSent+this.signalChannel.bytesSent,bytes_received:this._stats.totalBytesReceived+this.signalChannel.bytesReceived}))}!this._isRelayChanged&&this.isRelayMaybeFailed()&&(this.reJoin(),this._isRelayChanged=!0)})}onPublishedUserList(e){if(!this.isJoined)return;let t=e.data.userList.filter(r=>r.flag!==Ec).map(({userId:r,srcTinyId:o,flag:n})=>{r===this.userId&&this.uplinkConnection&&(this.uplinkConnection.flag=n);let a=this.remotePublishedUserMap.get(r);return a&&this.checkSubscribeBigSmallVideo(a),{userId:r,tinyId:o,flag:n}});e.data.mixRobotList.forEach(({userId:r,srcTinyId:o,flag:n,mixUserList:a})=>{t.unshift({userId:r,tinyId:o,flag:n,isRobot:!0,mixUserList:a})}),E.emit(T.RECEIVED_PUBLISHED_USER_LIST,{room:this,publishedUserList:t}),this.userManager.setRemotePublishedUserList(t)}closeUplink(e="you unpublished"){this.uplinkConnection&&(this.localTracks.size>0&&this.uplinkConnection.doUnpublish(),this.uplinkConnection.close(e),this.uplinkConnection instanceof Yo&&(this.uplinkConnection=null)),this.localTracks.forEach(t=>t.unpublish()),this.localTracks.clear()}createDownlinkConnection({userId:e,tinyId:t,flag:r,isRobot:o}){let n=new(this.singlePC?Ip:ou)({userId:e,tinyId:t,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:r,isRobot:o});this.userManager.addRemotePublishedUser(n),this.installDownlinkEvents(n,e),this.emit("remote-published",n)}closeDownLinkConnection(e,t="remote user unpublished"){let r=this.remotePublishedUserMap.get(e);r&&(r.close(t),this.emit("remote-unpublished",r))}installDownlinkEvents(e,t){e.on("error",r=>{let o=r.getCode();o!==S.ICE_TRANSPORT_ERROR&&(o===S.DOWNLINK_RECONNECTION_FAILED&&this.closeDownLinkConnection(t),this.emit("error",r))}),e.on("connection-state-changed",r=>{this.emit("media-connection-state-changed",k(v({},r),{userId:e.userId}))}),e.on("firewall-restriction",()=>{this.emit("firewall-restriction")})}startSyncUserListInterval(){this._syncUserListInterval===-1&&(this._syncUserListInterval=re.run($i,this.syncUserList.bind(this)))}stopSyncUserListInterval(){re.clearTask(this._syncUserListInterval),this._syncUserListInterval=-1}syncUserList(){return this.getUserList().then(e=>{this.userManager.setUserList(e)}).catch(e=>{this._log.debug(`sync user list failed: ${e}`)})}getUserList(){var e;return(e=this.signalChannel)!=null&&e.isConnected?this.signalChannel.sendWaitForResponse({command:q.GET_USER_LIST,responseCommand:B.USER_LIST_RES,enableLog:!1,timeout:2e3}).then(({data:t})=>{let{code:r,message:o}=t;if(r===0)return(t.data&&t.data.userList||[]).map(({userId:a,srcTinyId:d,role:l})=>({userId:a,tinyId:d,role:l}));throw U({key:x.SIGNAL_RESPONSE_FAILED,data:{signalResponse:B.USER_LIST_RES,code:r,message:o}})}):Promise.reject("not connected")}getAllConnections(){let e=[...this.remotePublishedUserMap.values()];return this.uplinkConnection&&e.push(this.uplinkConnection),e}isRelayMaybeFailed(){if(this.signalChannel&&!this.signalChannel.isOnline||!Zl)return!1;if(this.singlePC)return this.singlePC.reconnectionCount>6;let e=this.getAllConnections();if(e.length===0)return!1;for(let t=0;t<e.length;t++)if(e[t].getReconnectionCount()<6)return!1;return!0}checkConnectionsToReconnect(){var e;this.singlePC?((e=this.singlePC.getPeerConnection())==null?void 0:e.connectionState)===ce.CLOSED&&!this.singlePC.isReconnecting&&(this._log.warn("spc pc is closed but not reconnect"),this.singlePC.startReconnection()):this.getAllConnections().forEach(r=>{if(r instanceof je&&!r.getIsReconnecting()){let o=r.getPeerConnection();o&&o.connectionState===ce.CLOSED&&(this._log.warn(`[${r.getUserId()}] pc is closed but not reconnect`),r.startReconnection())}})}fallbackToMPC(){return f(this,null,function*(){var e;if(this._log.warn("fallback to multi pc"),ee.uploadEvent({log:"stat-fallback",userId:this.userId}),this.enableSPC=!1,(e=this.singlePC)==null||e.close(),this.singlePC=null,this.isJoined&&(yield this.reJoin(!1)),this.uplinkConnection){let t=this.uplinkConnection;this.uplinkConnection=new Yo({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),t.isMainStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localMainAudioTrack,localVideoTrack:t.localMainVideoTrack,isAuxiliary:!1})),t.isAuxStreamPublished&&(yield this.uplinkConnection.publish({localAudioTrack:t.localAuxAudioTrack,localVideoTrack:t.localAuxVideoTrack,isAuxiliary:!0})),t.close()}for(let t of[...this.remotePublishedUserMap.values()]){let r=new ou({userId:t.userId,tinyId:t.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI,flag:t.flag,remoteAudioTrack:t.remoteAudioTrack,remoteVideoTrack:t.remoteVideoTrack,remoteAuxiliaryTrack:t.remoteAuxiliaryTrack});this.installDownlinkEvents(r,t.userId),this.remotePublishedUserMap.set(t.userId,r),t.isMainStreamSubscribed&&(yield r.subscribe(t.subscribeState,"main")),t.isAuxStreamSubscribed&&(yield r.subscribe(t.subscribeState,"auxiliary"))}})}destroy(){this.isDestroyed||(this.signalChannel&&(this._log.info("destroying SignalChannel"),this.signalChannel.close(),this.signalChannel=null),super.destroy(),this._joinReject&&(this._joinReject(new b({code:S.INVALID_OPERATION,message:U({key:x.CLIENT_DESTROYED,data:{funName:"join"}})})),this.clearJoinTimeout(),this.reset()),this.removeAllListeners(),this.healthDetector.destroy(),re.clearTask(this._audioVolumeIntervalId))}switchRole(e){return f(this,null,function*(){this.role!==e&&(e==="audience"&&this.uplinkConnection&&this.closeUplink("you switch role to audience"),yield this.doSwitchRole(e))})}doSwitchRole(e){let t={command:q.SWITCH_ROLE,data:{role:e==="anchor"?20:21,privateMapKey:this.privateMapKey,latencyLevel:this.latencyLevel},responseCommand:B.SWITCH_ROLE_RES,retries:1};return this._log.info(`switchRole signal data: ${JSON.stringify(t.data)}`),this.signalChannel.sendWaitForResponseWithRetry(t).then(r=>{let{code:o,message:n}=r.data;if(o!==0)throw new b({code:S.SWITCH_ROLE_FAILED,message:U({key:x.SWITCH_ROLE_FAILED,data:{message:n,code:o}})});this.role=e}).catch(r=>{throw r instanceof b&&r.getCode()===S.API_CALL_TIMEOUT&&(r=new b({code:S.SWITCH_ROLE_FAILED,message:U({key:x.SWITCH_ROLE_TIMEOUT})})),this._log.error(r),r})}publish(...e){return f(this,null,function*(){let t={},r={};e.forEach(d=>{d instanceof _t&&(d instanceof ti?r.audio=d:t.audio=d),d instanceof Ve&&(d instanceof it&&d.mediaType===2?r.video=d:t.video=d)});let o=rn(t),n=rn(r);(!o||!n)&&!this.uplinkConnection&&(this.singlePC?this.uplinkConnection=new _u({userId:this.userId,tinyId:this.tinyId,room:this}):this.uplinkConnection=new Yo({userId:this.userId,tinyId:this.tinyId,room:this,signalChannel:this.signalChannel,enableSEI:this.enableSEI}),this.uplinkConnection.on("connection-state-changed",d=>{this.emit("media-connection-state-changed",k(v({},d),{userId:this.userId}))}),this.uplinkConnection.on("firewall-restriction",()=>{this.emit("firewall-restriction")}),this.uplinkConnection.on("error",d=>{let l=d.getCode();l!==S.ICE_TRANSPORT_ERROR&&(l===S.UPLINK_RECONNECTION_FAILED&&this.closeUplink(),this.emit("error",d))}));let a=e.map(d=>d.kind).join(",");o||(this._log.info(`publish() => main ${a}`),yield this.uplinkConnection.publish({localAudioTrack:t.audio,localVideoTrack:t.video,isAuxiliary:!1}),this._log.info("main is published")),n||(this._log.info(`publish() => aux ${a}`),yield this.uplinkConnection.publish({localAudioTrack:r.audio,localVideoTrack:r.video,isAuxiliary:!0}),this._log.info("aux is published"))})}unpublish(...e){return f(this,null,function*(){if(this.scene==="live"&&this.role!=="anchor"||!this.isMainStreamPublished&&!this.isAuxStreamPublished||!this.uplinkConnection)return;let t={},r={};e.forEach(o=>{!o.mediaTrack||!o.isPublished||(o instanceof _t&&(o instanceof ti?r.audio=o:t.audio=o),o instanceof Ve&&(o instanceof it&&o.mediaType===2?r.video=o:t.video=o))});try{let o=e.map(n=>n.kind).join(",");rn(t)||(this._log.info(`unpublish() => main ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:t.audio,localVideoTrack:t.video})),rn(r)||(this._log.info(`unpublish() => aux ${o}`),yield this.uplinkConnection.unpublish({localAudioTrack:r.audio,localVideoTrack:r.video}))}catch(o){}this.localTracks.size===0&&this.closeUplink("you unpublished")})}addTrack(e){if(!this.uplinkConnection||!e.mediaTrack)return Promise.resolve();let t=this.uplinkConnection.addTrack(e);return e.publish(this,t),t}removeTrack(e){return!this.uplinkConnection||!e.mediaTrack?Promise.resolve():this.uplinkConnection.removeTrack(e).then(t=>(e.unpublish(),t))}replaceTrack(e){return!this.uplinkConnection||!e.mediaTrack||!Ed()?Promise.resolve():this.uplinkConnection.replaceTrack(e).then(t=>{t&&E.emit(T.LOCAL_TRACK_REPLACED,{track:e})})}setBandWidth(e){return f(this,null,function*(){this.uplinkConnection&&(yield this.uplinkConnection.setBandwidth(e),yield this.uplinkConnection.sendMediaSettings())})}enableSmall(e){return f(this,null,function*(){if(!this.uplinkConnection||!this.uplinkConnection.localMainVideoTrack)return Promise.resolve();e&&this.uplinkConnection.localMainVideoTrack.small&&(yield this.setBandWidth({type:h.VIDEO,videoType:h.SMALL,bandwidth:this.uplinkConnection.localMainVideoTrack.small.bitrate})),yield this.uplinkConnection.enableSmall(e)})}subscribe(...e){return f(this,null,function*(){if(e=e.filter(n=>!n.isSubscribed),e.length===0)return;let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";try{let n=v({},r.subscribeState);e.forEach(d=>{switch(d.mediaType){case 1:n.audio=!0;break;case 4:n.video=!0;break;case 8:n.smallVideo=!0;break;case 2:n.auxiliary=!0;break}});let a=this._changeBigSmallRecords.get(t);a&&a.options.smallVideo&&r.muteState.hasSmall&&n.video&&(n.video=!1,n.smallVideo=!0),E.emit(T.SUBSCRIBE_START,{room:this,streamType:o,remotePublishedUser:r,subscribeState:n}),this._log.info(`subscribe() => ${t} ${o} [${Za(n)}] prev: [${Za(r.subscribeState)}]`),yield r.subscribe(n,o),this._log.info(`subscribe ${t} ${o} done`);for(let d of e)d.mediaTrack||(yield d.waitHasMediaTrack());E.emit(T.SUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})}catch(n){let a=n instanceof b?n.getCode():S.UNKNOWN,d=n;throw n instanceof b?a===S.REMOTE_STREAM_NOT_EXIST&&(d=new b({code:S.API_CALL_ABORTED,message:U({key:x.API_CALL_ABORTED,data:{message:n.message,userId:t,streamType:o}})}),this._log.warn(d)):(d=new b({code:a,message:U({key:x.SUBSCRIBE_FAILED,data:{message:n.message,userId:t,streamType:o}})}),this._log.error(d)),d}})}unsubscribe(...e){return f(this,null,function*(){let{userId:t}=e[0],r=this.remotePublishedUserMap.get(t);if(!r)return;let o=e.find(n=>n.mediaType===2)?"auxiliary":"main";this._log.info(`unsubscribe() => ${t} ${o}`);try{yield r.unsubscribe({remoteTracks:e,streamType:o})}catch(n){this._log.warn(`unsubscribe() => failed ${n}`)}e.forEach(n=>{n.unsubscribe(),n.mediaType===8&&n.setMediaType(4)}),E.emit(T.UNSUBSCRIBE_SUCCESS,{room:this,streamType:o,remotePublishedUser:r})})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAudioVolumeEvaluation(e=2e3,t){if(e<=0){this._enableAudioVolumeEvaluation=!1,re.clearTask(this._audioVolumeIntervalId);return}e=Math.floor(Math.max(e,100)),E.emit(T.AUDIO_LEVEL_INTERVAL,{interval:e}),this._audioVolumeIntervalId&&re.clearTask(this._audioVolumeIntervalId),this._enableAudioVolumeEvaluation=!0,this._audioVolumeIntervalId=re.run(Wr,()=>{var o;Ud.isRunning?this.stopUpdateAudioLevelFromSenderStat():this.updateAudioLevelFromSenderStat(e,t);let r=[];(o=this.remotePublishedUserMap)==null||o.forEach(n=>{if(n.muteState.hasAudio){!Ud.isRunning&&n.muteState.audioAvailable&&n.remoteAudioTrack.isSubscribed?this.updateDownlinkAudioLevelFromReceiver(n):n.remoteAudioTrack.volume=0;let a=Math.floor(n.remoteAudioTrack.getAudioLevel()*100);r.push({userId:n.userId,volume:a})}}),this.emit("audio-volume",r)},{fps:1e3/e,backgroundTask:t})}updateAudioLevelFromSenderStat(e,t){return f(this,null,function*(){var n;if(!this.uplinkConnection||!this.uplinkConnection.localMainAudioTrack||this._updateAudioLevelTaskId!==-1)return;let r=(n=this.uplinkConnection.getPeerConnection())==null?void 0:n.getSenders()[0];if(!r)return;let o=Math.max(e,500);this._log.warn(`updateAudioLevelFromSenderStat ${o}`),this._updateAudioLevelTaskId=re.run(Wr,()=>f(this,null,function*(){let a=yield r.getStats();this._updateAudioLevelTaskId<0||a.forEach(d=>{d.type==="media-source"&&d.audioLevel&&(this.uplinkConnection.localMainAudioTrack.volume=d.audioLevel)})}),{delay:o,backgroundTask:t})})}stopUpdateAudioLevelFromSenderStat(){var e;this._updateAudioLevelTaskId!==-1&&(this._log.warn("stopUpdateAudioLevelFromSenderStat"),re.clearTask(this._updateAudioLevelTaskId),this._updateAudioLevelTaskId=-1,(e=this.uplinkConnection)!=null&&e.localMainAudioTrack&&(this.uplinkConnection.localMainAudioTrack.volume=0))}updateDownlinkAudioLevelFromReceiver(e){var o;let{audioReceiver:t}=e;if(!Sd||!t)return;let r=(o=t.getSynchronizationSources()[0])==null?void 0:o.audioLevel;Y(r)?e.remoteAudioTrack.volume=Math.min(r*2,1):t.getStats().then(n=>{n.forEach(a=>{a.type==="inbound-rtp"&&Y(a.audioLevel)&&(e.remoteAudioTrack.volume=a.audioLevel)})})}getLocalAudioStats(){return f(this,null,function*(){var t;let e={};return e[this.userId]={bytesSent:0,packetsSent:0,audioLevel:0},(t=this.uplinkConnection)!=null&&t.localMainAudioTrack&&(e[this.userId]=this.uplinkConnection.localMainAudioTrack.stat),e})}getLocalVideoStats(){return f(this,null,function*(){var t,r;let e={};return e[this.userId]=((r=(t=this.uplinkConnection)==null?void 0:t.localMainVideoTrack)==null?void 0:r.stat)||{bytesSent:0,packetsSent:0,framesEncoded:0,framesSent:0,frameWidth:0,frameHeight:0,fpsCapture:0},e})}getTransportStats(){return f(this,null,function*(){let e={rtt:0,downlinksRTT:{}};if(this.uplinkConnection){let t=yield this._stats.getSenderStats(this.uplinkConnection);e.rtt=t.rtt}for(let[,t]of this.remotePublishedUserMap){let r=yield this._stats.getReceiverStats(t);e.downlinksRTT[r.userId]=r.rtt}return e})}getRemoteVideoStats(e){return f(this,null,function*(){let t={};for(let[r,o]of this.remotePublishedUserMap)e==="main"&&o.muteState.hasVideo&&(t[r]=o.remoteVideoTrack.stat),e==="auxiliary"&&o.muteState.hasAuxiliary&&(t[r]=o.remoteAuxiliaryTrack.stat);return t})}getRemoteAudioStats(){return f(this,null,function*(){let e={};for(let[t,r]of this.remotePublishedUserMap)r.muteState.hasAudio&&(e[t]=r.remoteAudioTrack.stat);return e})}setTurnServer(e,t){this._log.info(`set turn server: ${JSON.stringify(e)} ${t||""}`);let r=[];Array.isArray(e)?e.forEach(o=>r.push(st.getTurnServer(o))):st.isPlainObject(e)&&r.push(st.getTurnServer(e)),this._turnServers=r,t&&(this._iceTransportPolicy=t)}sendStartMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:q.START_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:B.START_MIX_TRANSCODE_RES,commandDesc:"startMixTranscode"})}sendStopMixTranscode(e){return this.signalChannel.sendWaitForResponse({command:q.STOP_MIX_TRANSCODE,data:e,timeout:5e3,responseCommand:B.STOP_MIX_TRANSCODE_RES,commandDesc:"stopMixTranscode"})}sendStartPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?q.START_PUBLISH_TENCENT_CDN:q.START_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?B.START_PUBLISH_TENCENT_CDN_RES:B.START_PUBLISH_GIVEN_CDN_RES,commandDesc:"startPublishCDN"})}sendStopPublishCDN(e,t=!0){return this.signalChannel.sendWaitForResponse({command:t?q.STOP_PUBLISH_TENCENT_CDN:q.STOP_PUBLISH_GIVEN_CDN,data:e,timeout:5e3,responseCommand:t?B.STOP_PUBLISH_TENCENT_CDN_RES:B.STOP_PUBLISH_GIVEN_CDN_RES,commandDesc:"stopPublishCDN"})}sendStartPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:q.START_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:B.START_PUBLISH_CDN_STREAM_RES,commandDesc:"startPublishCDNStream"})}sendUpdatePushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:q.UPDATE_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:B.UPDATE_PUBLISH_CDN_STREAM_RES,commandDesc:"updatePublishCDNStream"})}sendStopPushStreamToRoom(e){return this.signalChannel.sendWaitForResponse({command:q.STOP_PUBLISH_CDN_STREAM,data:e,timeout:5e3,responseCommand:B.STOP_PUBLISH_CDN_STREAM_RES,commandDesc:"stopPublishCDNStream"})}sendAbilityStatus(e){var t;(t=this.signalChannel)==null||t.sendWaitForResponse({command:q.ABILITY_STATUS_REPORT,data:e,timeout:5e3,responseCommand:B.ABILITY_STATUS_REPORT_RESULT,commandDesc:"ability status report"}).catch(r=>{})}getIceServers(){return this._turnServers.length===0&&this.scheduleResult.iceServers?this.scheduleResult.iceServers:this._turnServers}getIceTransportPolicy(){return this.forceRelay?"relay":this._iceTransportPolicy||this.scheduleResult.iceTransportPolicy||"all"}getLogger(){return this._log}enableAIVoice(){throw new Error("Method not implemented.")}getSignalChannelUrl(){let e={mainUrl:"",backupUrl:""},t=st.getEnv();return t?(e.mainUrl=`wss://${t}.rtc.qq.com`,e.backupUrl=e.mainUrl):this.proxy_ws?(e.mainUrl=this.proxy_ws,e.backupUrl=e.mainUrl):this.proxy_unified?(e.mainUrl=`wss://${this.proxy_unified}`,e.backupUrl=e.mainUrl):Array.isArray(this.scheduleResult.domains)&&this.scheduleResult.domains.length>0&&(e.mainUrl=`wss://${this.scheduleResult.domains[0]}`,e.backupUrl=e.mainUrl,this.scheduleResult.domains[1]&&(e.backupUrl=`wss://${this.scheduleResult.domains[1]}`)),e}getSignalInfo(){var e;return((e=this.signalChannel)==null?void 0:e.getSignalInfo())||{clientIp:"",relayIp:""}}reset(e=!1){this.stopSyncUserListInterval(),this.stopHeartbeat(),this.closeConnections(),this.clearNetworkQuality(),this.closeUplink("you exitRoom"),this.signalChannel&&(e&&this.signalChannel.keepAlive&&this.signalChannel.isConnected?this.signalChannel.stopKeepAliveIn(3600):(this.signalChannel.close(),this.setSignalChannel(null))),this._stats.reset(),this.userManager.clear(),this.userManager.removeAllListeners(),this.singlePC&&(this.singlePC.close(),this.singlePC=null),this.scheduleResult={domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null}}checkSubscribeBigSmallVideo(e){return f(this,null,function*(){let{subscribeState:t,userId:r,muteState:{hasSmall:o,hasVideo:n}}=e;if(!o&&!n||!t.video&&!t.smallVideo)return;let a=this._changeBigSmallRecords.get(r);if(!a||a.isSubscribing||a.reSubscribeCount<=0)return;let{options:d,reSubscribeCount:l}=a;if(d.video&&t.video||d.smallVideo&&t.smallVideo&&o)return;let m={audio:e.remoteAudioTrack.isSubscribed||e.remoteAudioTrack.isSubscribing,auxiliary:e.remoteAuxiliaryTrack.isSubscribed||e.remoteAuxiliaryTrack.isSubscribing,video:d.video,smallVideo:d.smallVideo};try{if(!o&&m.smallVideo&&(m.video=!0,m.smallVideo=!1),m.smallVideo===t.smallVideo&&m.video===t.video)return;a.isSubscribing=!0,a.reSubscribeCount=l-1,yield e.subscribe(m,"main"),e.remoteVideoTrack.setMediaType(m.smallVideo?8:4),this._log.info(`change [${r}] to ${m.smallVideo?"small":"big"} video successfully. count ${$r-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount=$r}catch(u){this._log.info(`change [${r}] to ${m.smallVideo?"small":"big"} video failed. count ${$r-a.reSubscribeCount}.`),a.isSubscribing=!1,a.reSubscribeCount===0&&this._changeBigSmallRecords.delete(r)}})}changeType(e,t){let o={options:{video:!e,smallVideo:e},isSubscribing:!1,reSubscribeCount:$r};this._changeBigSmallRecords.set(t.userId,o),this._log.info(`set [${t.userId}] video prefer type: ${e?"small":"big"}`);let n=this.remotePublishedUserMap.get(t.userId);n&&this.checkSubscribeBigSmallVideo(n)}get smallStreamConfig(){return this._smallStreamConfig}_initBusinessInfo(e){this._businessInfo=e.businessInfo;let t={};if(yp(e.businessInfo)&&(t=JSON.parse(e.businessInfo)),!ws(e.pureAudioPushMode)){if(!Number.isInteger(Number(e.pureAudioPushMode)))throw new b({code:S.INVALID_PARAMETER,message:U({key:x.INVALID_PURE_AUDIO})});this._pureAudioPushMode=e.pureAudioPushMode,t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.pure_audio_push_mod=this._pureAudioPushMode}if(!ws(e.userDefineRecordId)){let r=/^[A-Za-z0-9_-]{1,64}$/gi;if(e.userDefineRecordId.match(r)===null)throw new b({code:S.INVALID_PARAMETER,message:U({key:x.INVALID_USER_DEFINE_RECORDID})});t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_record_id=e.userDefineRecordId}if(!ws(e.userDefinePushArgs))if(yp(e.userDefinePushArgs)&&String(e.userDefinePushArgs)&&String(e.userDefinePushArgs).length<=256)t.Str_uc_params||(t.Str_uc_params={}),t.Str_uc_params.userdefine_push_args=e.userDefinePushArgs;else throw new b({code:S.INVALID_PARAMETER,message:U({key:x.INVALID_USER_DEFINE_PUSH_ARGS})});rn(t)||(this._businessInfo=JSON.stringify(t))}sendCustomMessage(e){var t;(t=this._customMessageManager)==null||t.send(e)}enableInsertableStreams(){return f(this,null,function*(){if(this.singlePC&&!this.singlePC.enableInsertableStreams&&Ri)return this.singlePC.enableInsertableStreams=!0,yield this.singlePC.waitForPeerConnectionConnected(),yield this.singlePC.startReconnection()})}sendSignalMessage(e){var t;return this.signalChannel?(t=this.signalChannel)==null?void 0:t.sendWaitForResponseWithRetry(e):Promise.reject(new b({code:S.INVALID_OPERATION,message:"not join"}))}get enableCodecPipeline(){return this.videoManager.encodePipeline.length>0||this.videoManager.decodePipeline.length>0||this.audioManager.encodePipeline.length>0||this.audioManager.decodePipeline.length>0}get scriptTransformWorker(){var e;return(e=this.singlePC)==null?void 0:e.scriptTransformWorker}};y([de(["left",Q.INIT],"joined"),Ke({settings:{retries:1,timeout:0},onRetrying(e){this._log.warn(`join retry ${e}`)},onRetryFailed(e){this._log.error("join failed",e)},onError(e,t){this._isUsingCachedSchedule&&!this.isDestroyed?(this._log.warn("is using cached schedule, retry join"),wt(!0),this.reset(),t()):this.signalChannel&&this.signalChannel.isConnected&&this.signalChannel.keepAlive?(this._log.warn("is using keepAlive ws, retry join"),this.signalChannel.close(),this.reset(),t()):(this.reset(),t())}}),Lm()],Vt.prototype,"join",1),y([de("joined","left",{ignoreError:!0,success(){this.reset(!0)}}),Pm(),pa("leave room"),Oo({fnName:"publish",validateArgs:!1}),Oo({fnName:"unsubscribe",validateArgs:!1})],Vt.prototype,"leave",1),y([Zt(),Ap(),Ke({settings:{retries:ci,timeout:e=>Ct(e)},onError(e,t,r){var o;(o=e.message)!=null&&o.includes("timeout")?(this._log.warn("publish timeout"),t()):(this._log.error(`publish failed: ${e}`),r(e),E.emit(T.PUBLISH_FAILED,{room:this}))}})],Vt.prototype,"publish",1),y([Oo({fnName:"publish"}),Qh("api-call"),Zt(),Cp(),Je(function(){var e,t;this.localTracks.size===0&&Yi()&&((t=(e=this.singlePC)==null?void 0:e.getPeerConnection())==null||t.getSenders().forEach(r=>r.track&&r.replaceTrack(null)))})],Vt.prototype,"unpublish",1),y([ua(e=>{if(e.code!==S.API_CALL_ABORTED)throw e}),Ni(e=>e.userId)],Vt.prototype,"replaceTrack",1),y([Ni((...e)=>e[0].userId),ga(),wm(),Ke({settings:{retries:ci,timeout:e=>Ct(e)},onError(e,t,r,o){e.message.includes("timeout")?(this._log.warn("subscribe timeout"),t()):(this._log.error(`subscribe failed: ${e}`),r(e),E.emit(T.SUBSCRIBE_FAILED,{room:this,remoteTracks:o}))}})],Vt.prototype,"subscribe",1),y([Oo({fnName:"subscribe",callback(...e){this.singlePC||e.forEach(t=>{let r=this.remotePublishedUserMap.get(t.userId);r&&!r.isMainStreamSubscribed&&!r.isAuxStreamSubscribed&&r.close("you unsubscribed")})}}),Ni((...e)=>e[0].userId)],Vt.prototype,"unsubscribe",1);Qo.create=Qo._create.bind(Qo,Vt);var yF=Qo;export{yF as default};
139
+ }`});l(this,"yTextureRef");l(this,"uTextureRef");l(this,"vTextureRef");l(this,"Y");l(this,"U");l(this,"V");this.useProgram();let r=this.context.ctx;r.pixelStorei(r.PACK_ALIGNMENT,1),r.pixelStorei(r.UNPACK_ALIGNMENT,1),this.setTexBuffer([0,1,1,1,0,0,1,0]),this.yTextureRef=this._initTexture("ySampler",0),this.uTextureRef=this._initTexture("uSampler",1),this.vTextureRef=this._initTexture("vSampler",2),this._canvas=e._canvas}_initTexture(e,r){let o=this.context.ctx,s=o.createTexture();return o.bindTexture(o.TEXTURE_2D,s),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MAG_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_MIN_FILTER,o.LINEAR),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_S,o.CLAMP_TO_EDGE),o.texParameteri(o.TEXTURE_2D,o.TEXTURE_WRAP_T,o.CLAMP_TO_EDGE),o.bindTexture(o.TEXTURE_2D,null),o.uniform1i(o.getUniformLocation(this.program,e),r),s}render(e){let r=this.context.ctx,o=this.width,s=this.height;return this.useProgram(),r.viewport(0,0,o,s),r.activeTexture(r.TEXTURE0),r.bindTexture(r.TEXTURE_2D,this.yTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o,s,r.LUMINANCE,r.UNSIGNED_BYTE,this.Y),r.activeTexture(r.TEXTURE1),r.bindTexture(r.TEXTURE_2D,this.uTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.U),r.activeTexture(r.TEXTURE2),r.bindTexture(r.TEXTURE_2D,this.vTextureRef),r.texSubImage2D(r.TEXTURE_2D,0,0,0,o/2,s/2,r.LUMINANCE,r.UNSIGNED_BYTE,this.V),this.draw(),!0}resize(e,r){super.resize(e,r);let o=this.context.ctx;o.activeTexture(o.TEXTURE0),o.bindTexture(o.TEXTURE_2D,this.yTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e,r,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE1),o.bindTexture(o.TEXTURE_2D,this.uTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null),o.activeTexture(o.TEXTURE2),o.bindTexture(o.TEXTURE_2D,this.vTextureRef),o.texImage2D(o.TEXTURE_2D,0,o.LUMINANCE,e/2,r/2,0,o.LUMINANCE,o.UNSIGNED_BYTE,null)}};var lh=[i=>{i.codec="avc1.420028"},i=>{delete i.hardwareAcceleration}],gg=(i,t)=>{switch(i){case"webCodecs":return t==="videoFrame"?514705:514706;case"wasm":return t==="webgl"?514707:t==="videoFrame"?514708:514709}throw new Error("decoder type not supported")},wu=class{constructor(t){l(this,"trackDoneOB");l(this,"startOB");l(this,"stopOB");l(this,"decoder");l(this,"videoContext");l(this,"gop",0);l(this,"gop_helper",0);l(this,"waitFirstKeyFrame",!0);l(this,"startTimestamp",0);l(this,"startTime",0);l(this,"inputFrameCount",0);l(this,"decodedFrameCount",0);l(this,"downgradeLevel",0);l(this,"config");l(this,"videoElement");l(this,"type","wasm");l(this,"renderer","2d");l(this,"wasmOption");l(this,"createDecoder");l(this,"_decodeSink");let{track:e,createDecoder:r}=t;if(this.createDecoder=r,this.wasmOption={yuvMode:t.renderer==="webgl",wasmPath:t.wasmPath,workerMode:t.workerMode,canvas:t.canvas},this.config=t.config,this.videoElement=t.videoElement,this.renderer=t.renderer,this.trackDoneOB=De(e,re.INIT),this.stopOB=gt(this.trackDoneOB),t.type==="auto"){switch(t.fallback){case"wasm":this.type="wasm",this.renderer="webgl";break;case"wasm_2d":this.type="wasm",this.renderer="2d";break;case"wasm_video":this.type="wasm",this.renderer="videoFrame";break;default:this.type="webCodecs"}this.wasmOption.yuvMode=this.renderer==="webgl"}else this.type=t.type;this.changeRenderer(this.renderer),this.startOB=gt();let o=gt(),s;be(o,Up((d,h)=>(d!==h&&e.onDecodeDowngradeStateChanged({type:this.type,renderer:this.renderer,reason:s,prevState:d,state:h}),h),"INITIALIZED"),We(this.stopOB),ke());let a=d=>{let h=this.pipe(e);return o.next("STARTING"),e.log.info(`decoder type: ${this.type} renderer: ${this.renderer}`),be(h,We(this.stopOB),ke(()=>{e.stat.framesDecoded++},m=>{if(e.log.error(m),X.addFailedEvent({key:gg(this.type,this.renderer),error:m}),d>4)this.startOB.error(m);else{switch(this.type){case"webCodecs":this.type="wasm",this.changeRenderer("webgl");break;case"wasm":switch(this.renderer){case"webgl":this.changeRenderer("videoFrame");break}}this.startOB.next(d+1)}})),be(h,Sr(1),va(ko))};be(this.startOB,xo(0),Fr(a),We(this.stopOB),ke(()=>{e.player.handlePlaying("canvas"),o.next("STARTED")},d=>{s=d,o.next("FAILED")},()=>{X.addSuccessEvent({key:gg(this.type,this.renderer)}),X.addSuccessEvent({key:514704})}))}mock(t){this._decodeSink?this._decodeSink.error(t):this.startOB.next(0)}close(t){this.stopOB.next(t)}changeRenderer(t){this.renderer=t,this.renderer==="videoFrame"&&!km()&&(this.renderer="2d"),this.wasmOption.yuvMode=this.renderer==="webgl"}decode(t){var s;if(this.inputFrameCount++,((s=this.decoder)==null?void 0:s.state)!=="configured")return t;let e=new Uint8Array(t.data)[4]&31,r=!1;switch(e){case 5:case 7:r=!0;break}let{timestamp:o}=t;if(r?(this.gop=this.gop_helper,this.gop_helper=0):this.gop_helper++,this.decoder){if(this.waitFirstKeyFrame)if(r)this.waitFirstKeyFrame=!1,this.startTimestamp=o,this.startTime=Date.now();else return;let a=(o-this.startTimestamp)/90,h=Date.now()-this.startTime-a,m=h<500?0:h/1e3>>0;switch(r&&(m>0?this.downgradeLevel++:this.downgradeLevel>3&&this.downgradeLevel--),this.downgradeLevel){case 0:break;case 1:break;case 2:if(this.gop_helper>this.gop>>1)return;break;case 3:if(this.gop_helper>0)return;break;default:return}this.decoder.decode(t);return}return t}pipe(t){return gi()(e=>A(this,null,function*(){this._decodeSink=e,e.defer(()=>{var s,a;(s=this.decoder)==null||s.close(),(a=this.videoContext)==null||a.destroy(),delete this._decodeSink});let{renderer:r,type:o}=this;try{switch(o){case"wasm":this.decoder=this.createDecoder(o,this.wasmOption);break;case"webCodecs":for(let s=0;s<=lh.length;s++){let{supported:a}=yield VideoDecoder.isConfigSupported(this.config);if(a)break;if(s===lh.length){e.error(3);return}lh[s](this.config)}this.decoder=this.createDecoder(o);break;case"mse":throw new Error("not supported yet")}if(this.decoder.on("videoFrame",s=>{this.decodedFrameCount++,e.next(s)}),this.decoder.on("error",s=>{t.log.error(s),e.error(o==="webCodecs"?4:8)}),yield this.decoder.initialize(this.videoElement),this.decoder.configure(this.config),o==="wasm"&&r==="webgl"){this.videoContext=new _t({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create(),this.videoContext.on(_t.UNAVAILABLE,a=>{t.log.error(a),e.error(7)});let s=new Nu(this.videoContext);this.decoder.on("videoCodecInfo",a=>s.resize(a.width,a.height)),this.decoder.on("videoFrame",a=>{[s.Y,s.U,s.V]=a,this.downgradeLevel===1?this.decodedFrameCount%2===0&&s.render(this.decodedFrameCount):s.render(this.decodedFrameCount)}),t.source=s,t.player.setCanvas(this.videoContext._canvas,2)}else if(r==="videoFrame"){t.player.setCanvas();let s=new MediaStreamTrackGenerator({kind:"video"}),a=s.writable.getWriter();t.setInputMediaStreamTrack(s);let d=0;this.decoder.on("videoFrame",h=>{d++,d<=10&&t.log.info(`Frame ${d} decoded width: ${h.displayWidth} height: ${h.displayHeight}`),a.write(h)}),s.onmute=()=>{e.error(o==="webCodecs"?5:9)},e.defer(()=>s.onmute=null)}else{this.videoContext=new Ct({frameRate:15,logger:t.log,name:t.userId}),this.videoContext.create({alpha:!1});let s=this.videoContext.createVideoImageSource();this.decoder.on("videoFrame",d=>{s.image=d,s.update()});let a=new Fo(this.videoContext,{name:"remotePlayer",logger:t.log});s.connect(a),t.source=s,t.player.setCanvas(this.videoContext._canvas,2)}}catch(s){t.log.error(s),e.error(o==="webCodecs"?2:6)}}))}};var Fa=class extends Eg.EventEmitter{constructor(e){super();this.room=e;l(this,"videoContext");l(this,"_glVideoContext");l(this,"_2dVideoContext");l(this,"destination");l(this,"smallVideoContext");l(this,"smallDestination");l(this,"smallTrackSource");l(this,"smallImageSource");l(this,"_isMirror",!1);l(this,"cameraTrack");l(this,"cameraNode");l(this,"mirrorNode");l(this,"mixNode");l(this,"screenTrack");l(this,"screenNode");l(this,"selfModel",!1);l(this,"blurRadius",3);l(this,"arTrack");l(this,"Wasm");l(this,"waterMarkNode");l(this,"_waterMarkOption");l(this,"watermarkImageList",[]);l(this,"_beautyParams");l(this,"isUsingArTrack",!1);l(this,"_isMixScreen",!1);l(this,"_virtualBackground");l(this,"_virtualBackgroundAbortCallback");l(this,"virtualBackgroundInstance");l(this,"_bgAssetPath");l(this,"log",U.createLogger({id:"vm"}));l(this,"_checkId",0);l(this,"_use2d",!1);l(this,"_autoSwitchRenderMode",!0);l(this,"_selfieSegmentation");l(this,"encodePipeline",[]);l(this,"decodePipeline",[]);e&&(this.log.setUserId(e.userId),this.log.setSdkAppId(e.sdkAppId)),this.smallVideoContext=new Ct({frameRate:15,logger:this.log,name:"s"}),this.enablePrintDetail()}get _hasVirtualBg(){return!!this._virtualBackground}get _hasWaterMark(){return this.watermarkImageList.length>0}get renderMode(){return this._autoSwitchRenderMode?"auto":this._use2d?"2d":"webgl"}set renderMode(e){if(this._autoSwitchRenderMode=e==="auto",this._autoSwitchRenderMode)return;let r=e==="2d";this._use2d!==r&&(this._use2d=r,this.clear(),this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.update())}get2dVideoContext(){return this._2dVideoContext?this._2dVideoContext.destroy():this._2dVideoContext=new Ct({frameRate:15,logger:this.log,name:"m"}),this._2dVideoContext.create({alpha:this._hasWaterMark||this._hasVirtualBg}),this._2dVideoContext}getGlVideoContext(){if(!this._glVideoContext)this._glVideoContext=new _t({frameRate:15,logger:this.log,name:"m"});else if(this._glVideoContext.available)return this._glVideoContext;return this.initializeGlVideoContext(),this._glVideoContext}initializeGlVideoContext(){try{this._glVideoContext.create(),this._glVideoContext.on("unavailable",e=>{var r;this.emit("error",e),this.log.warn("video context unavailable",e),(r=this._virtualBackgroundAbortCallback)==null||r.call(this,e),this.update().catch(o=>{this.log.error(o)})})}catch(e){this.emit("error",e)}}enablePrintDetail(e=2e3){this._checkId=ft.run(uo,()=>{this.destination&&this.log.debug(this.destination.getInfo())},{delay:e})}destroy(){var e,r;(e=this._2dVideoContext)==null||e.destroy(),(r=this._glVideoContext)==null||r.destroy(),this.smallVideoContext.destroy(),ft.clearTask(this._checkId)}get needAlpha(){return this._hasWaterMark||this._hasVirtualBg}get active(){return(Oi||this._isMixScreen||this._isMirror||this._hasWaterMark||this._hasVirtualBg||this._beautyParams)&&this.checkOrCreateVideoContext()}sendCreateResult(e="videoCtxGl",r){let o=e==="videoCtxGl"?512700:512701;r?X.addFailedEvent({key:o,error:r}):X.addSuccessEvent({key:o})}checkOrCreateVideoContext(){let e=this._use2d;if(this._autoSwitchRenderMode&&(this._use2d=!this._hasVirtualBg),this.videoContext)if(this.videoContext.available){let r=!this.videoContext.hasAlpha&&this.needAlpha;if(this._autoSwitchRenderMode&&e===this._hasVirtualBg)this.clear();else if(r)if(this._use2d)this.clear();else return!0;else return!0}else{if(this._glVideoContext=new _t({frameRate:15,logger:this.log,name:"m"}),this.initializeGlVideoContext(),this._glVideoContext.available)return this.videoContext=this._glVideoContext,this.videoContext.available;this.log.warn("webgl is still not available"),this.clear(),this._use2d=!0}return this.videoContext=this._use2d?this.get2dVideoContext():this.getGlVideoContext(),this.videoContext.available}get smallTrack(){var e;return(e=this.smallDestination)==null?void 0:e.videoTrack}get hasSmall(){return!!this.smallTrack}get initialTrack(){var e;return(e=this.cameraTrack)==null?void 0:e.mediaTrack}initVirtualBackground(e){return this._selfieSegmentation=e,this._selfieSegmentation.changeModel()}_setMainOutput(e){var r;try{let o=this.cameraTrack,{small:s,settings:a,player:d}=o;s?(this.smallVideoContext.available||(this.smallVideoContext.create({alpha:!1}),this.smallDestination=new iu(this.smallVideoContext,s,this.log)),this.smallVideoContext.frameRate=s.frameRate,this.smallDestination.resolution=s,e?(this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource),this.smallImageSource?this.smallImageSource.image=e:(this.smallImageSource=this.smallVideoContext.createVideoImageSource(e),this.smallImageSource.connect(this.smallDestination))):(this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource?this.smallTrackSource.replaceTrack(this.initialTrack):(this.smallTrackSource=this.smallVideoContext.createVideoTrackSource(this.initialTrack,"smallTrackSource"),this.smallTrackSource.width=a.width,this.smallTrackSource.height=a.height,this.smallTrackSource.connect(this.smallDestination)))):this.smallVideoContext.available&&(this.smallVideoContext.destroy(),delete this.smallDestination,delete this.smallTrackSource,delete this.smallImageSource),Oi&&d.setCanvas(e);let h=e&&((r=this.destination)==null?void 0:r.videoTrack)||this.initialTrack;return this.isUsingArTrack&&this.arTrack&&(this.emit("output-track-changed"),h=this.arTrack),this._selfieSegmentation&&e&&!this._use2d&&(this._selfieSegmentation._glName||this._selfieSegmentation.setCanvas(e)),this.log.info(`set main output ${h?h.label:"no output track"}`),o.setOutputMediaStreamTrack(h)}catch(o){this.log.error("set main output failed",o)}}update(){return A(this,null,function*(){var o,s;if(!this.cameraTrack||!this.cameraTrack.mediaTrack)return;if(!this.active)return this.cameraNode&&this.clear(),this._setMainOutput();let{settings:e,profile:r}=this.cameraTrack;if(this._use2d||!this._virtualBackground&&!this._beautyParams?(this.destination||(this.destination=this.videoContext.createVideoTrackDestination({name:"mainDestination2d",logger:this.log})),Yt===16?this.initialTrack instanceof CanvasCaptureMediaStreamTrack?(this.cameraNode&&(this.cameraNode instanceof Ei?(this.cameraNode.close(),delete this.cameraNode):this.cameraNode.image=this.initialTrack.canvas),this.cameraNode||(this.cameraNode=this.videoContext.createVideoImageSource(this.initialTrack.canvas,{name:"cameraCanvasSource",logger:this.log}))):(this.cameraNode&&(this.cameraNode instanceof Ei?this.cameraNode.replaceTrack(this.initialTrack):(this.cameraNode.close(),delete this.cameraNode)),this.cameraNode||(this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraTrackSource"))):this.cameraNode?this.cameraNode.replaceTrack(this.initialTrack):this.cameraNode=this.videoContext.createVideoTrackSource(this.initialTrack,"cameraNodeSource"),this.cameraNode.resize(e.width,e.height)):(this.cameraNode&&this.cameraNode.close(),this.destination?this.destination.disableCheckMute():this.destination=new ru(this.videoContext,{name:"mainDestination",logger:this.log}),this.cameraNode=new Du(this.videoContext,{input:this.cameraTrack.mediaTrack,mirror:this._isMirror,bg:this._virtualBackground,selfModel:this.selfModel,waterMark:this._waterMarkOption,beautyParams:this._beautyParams,useTflite:!0,blurRadius:this.blurRadius,assetPath:this._bgAssetPath,selfieSegmentation:this._selfieSegmentation,Wasm:this.Wasm}),this.cameraNode.connect(this.destination),this.destination.enableCheckMute()),this.videoContext.frameRate=r.frameRate,this._use2d){let a=this.cameraNode;a.disconnect(),this._isMirror&&(this.mirrorNode||(this.mirrorNode=new vu(this.videoContext,this.log)),a=a.connect(this.mirrorNode),a.disconnect(),this.log.info("start mirror")),this.mixNode&&this.mixNode.close(),delete this.mixNode,(this._isMixScreen||this._hasWaterMark)&&(this.mixNode=new Cu(this.videoContext,this.log),a.connect(this.mixNode,{zIndex:1}),this._hasWaterMark&&!this.waterMarkNode&&this._waterMarkOption&&(this.waterMarkNode=this.videoContext.createVideoImageSource(this._waterMarkOption.image,{autoResize:!1,logger:this.log}),this.waterMarkNode.resize(this._waterMarkOption.width,this._waterMarkOption.height),this.waterMarkNode.x=this._waterMarkOption.x,this.waterMarkNode.y=this._waterMarkOption.y),(o=this.waterMarkNode)==null||o.connect(this.mixNode,{zIndex:2}),this._isMixScreen&&this.screenTrack&&!this.screenNode&&(this.screenNode=this.videoContext.createVideoTrackSource(this.screenTrack.mediaTrack,"screenNodeSource")),(s=this.screenNode)==null||s.connect(this.mixNode,{zIndex:0}),a=this.mixNode,this.log.info("start mix",`${this.mixNode.width}x${this.mixNode.height}`)),a.connect(this.destination)}return this.log.info(`update ${this._use2d?"2d":"webgl"}`),this._setMainOutput(this.videoContext._canvas)})}changeInput(e){var r,o,s,a;if(e instanceof Bi)return this.log.info("change screen input",(r=e.mediaTrack)==null?void 0:r.label),this.setScreenTrack(e);if(e instanceof Ir)return this.log.info("change video input",(o=e.mediaTrack)==null?void 0:o.label),this.setCameraTrack(e);if(e instanceof Hi){this.log.info("change remote input",(s=e.mediaTrack)==null?void 0:s.label);let d=e.mediaTrack;return e.setOutputMediaStreamTrack(d)}this.log.warn("change unknown input",(a=e.mediaTrack)==null?void 0:a.label)}removeInput(e){var r;e instanceof Bi?((r=this.screenNode)==null||r.close(),delete this.screenNode,delete this.screenTrack,this.update()):e instanceof Ir?(this.clear(),delete this.cameraTrack,this.smallImageSource&&(this.smallImageSource.close(),delete this.smallImageSource),this.smallTrackSource&&(this.smallTrackSource.close(),delete this.smallTrackSource)):e instanceof Hi&&e.source&&e.source.context.destroy()}setCameraTrack(e){return A(this,null,function*(){this.cameraTrack=e,this.update()})}setScreenTrack(e){return this.screenTrack=e,this._isMixScreen&&(this.screenNode?this.screenNode.replaceTrack(e.mediaTrack):this.update()),e.setOutputMediaStreamTrack(e.mediaTrack)}getWatermarkImage(e,r){return A(this,null,function*(){let o=document.createElement("canvas");r&&e&&(o.height=r,o.width=e);let s=o.getContext("2d");if(!s)throw new ue({code:Y.NOT_SUPPORTED,message:"Make image failed because of canvas context is null"});return this.watermarkImageList.sort((a,d)=>a.zIndex-d.zIndex),this.watermarkImageList.forEach(({image:a,x:d,y:h,width:m,height:T})=>{s.drawImage(a,d,h,m,T)}),ms(o.toDataURL())})}pushWaterMarkImageList(e){let{type:r}=e;this.watermarkImageList.some(s=>s.imageUrl===e.imageUrl&&s.height===e.height&&s.width===e.width&&s.x===e.x&&s.y===e.y&&s.type===e.type&&s.zIndex===e.zIndex)||((r==="mute"||r==="watermark")&&(this.watermarkImageList=this.watermarkImageList.filter(s=>s.type!==r)),this.watermarkImageList.push(e))}setBeautyParams(e){return A(this,null,function*(){this._beautyParams=e,this.update()})}stopBeauty(){return A(this,null,function*(){this._beautyParams=void 0,this.update()})}setWatermark(e){return A(this,null,function*(){var I,v;let r;try{r=yield ms((e==null?void 0:e.imageElement)||e.imageUrl)}catch(N){throw new ue({code:Y.INVALID_PARAMETER,message:`load image failed, url: ${e.imageUrl}`})}let{x:o=0,y:s=0,width:a=r.width,height:d=r.height,type:h="watermark",zIndex:m=2}=e;this.watermarkImageList.some(N=>N.type===h)?(this.watermarkImageList=this.watermarkImageList.filter(N=>N.type!==h),this.pushWaterMarkImageList({x:o,y:s,width:a,height:d,image:r,zIndex:m,type:h,imageUrl:e.imageUrl}),r=yield this.getWatermarkImage((I=this.cameraTrack)==null?void 0:I.settings.width,(v=this.cameraTrack)==null?void 0:v.settings.height),this._waterMarkOption={x:0,y:0,width:r.width,height:r.height,image:r},this.waterMarkNode?(this.waterMarkNode.x=0,this.waterMarkNode.y=0,this.waterMarkNode.resize(r.width,r.height),this.waterMarkNode.image=r):this.update()):(this.pushWaterMarkImageList({x:o,y:s,width:a,height:d,image:r,zIndex:m,type:h,imageUrl:e.imageUrl}),yield this.freshWatermark()),this.log.info("set watermark",JSON.stringify(this.watermarkImageList,(N,j)=>N==="imageUrl"?void 0:j))})}deleteWatermark(e="watermark"){return A(this,null,function*(){this.watermarkImageList=this.watermarkImageList.filter(r=>r.type!==e),this.log.info("delete watermark",e,JSON.stringify(this.watermarkImageList,(r,o)=>r==="imageUrl"?void 0:o)),yield this.freshWatermark()})}freshWatermark(){return A(this,null,function*(){var r,o,s;(r=this.waterMarkNode)==null||r.close(),delete this.waterMarkNode,delete this._waterMarkOption;let e=yield this.getWatermarkImage((o=this.cameraTrack)==null?void 0:o.settings.width,(s=this.cameraTrack)==null?void 0:s.settings.height);this._waterMarkOption={x:0,y:0,width:e.width,height:e.height,image:e},this.update()})}setVirtualBackground(e){return A(this,null,function*(){if(!e)delete this._virtualBackground,delete this._virtualBackgroundAbortCallback;else{if(e.onAbort&&(this._virtualBackgroundAbortCallback=e.onAbort),this._use2d&&!this._autoSwitchRenderMode)return Promise.reject(new Error("not support virtual background in 2d mode"));this._bgAssetPath=e.assetPath,e.type==="image"?this._virtualBackground=yield ms(e.imageUrl):(this.blurRadius=e.blurLevel||this.blurRadius||3,this._virtualBackground=e.type)}if(this.log.info(`${this._virtualBackground?"start":"stop"} virtual background, ${(e==null?void 0:e.type)||""}, ${this.blurRadius||""}`),yield this.update(),this._virtualBackground&&!this._glVideoContext.available)throw new ue({code:Y.INVALID_OPERATION,message:`webgl context create failed, ${this._glVideoContext.error}`})})}get mixScreen(){return this._isMixScreen}set mixScreen(e){var r;this._isMixScreen=e,this._isMixScreen||((r=this.screenNode)==null||r.close(),delete this.screenNode),this.update()}set mirror(e){var r;this._isMirror!==e&&(this._isMirror=e,this._isMirror||((r=this.mirrorNode)==null||r.close(),delete this.mirrorNode),this.update())}get mirror(){return this._isMirror}enableAr(e){this.arTrack=e,this.isUsingArTrack=!0,this.update()}updateAr(){return A(this,null,function*(){var e;(e=this.cameraTrack)!=null&&e.mediaTrack&&(yield this.virtualBackgroundInstance.ar.updateInputTrack(this.cameraTrack.mediaTrack.clone()))})}disableAr(){var e;this.isUsingArTrack=!1,(e=this.arTrack)==null||e.stop(),this.arTrack=void 0,this.update()}createDecodeContext(e){return new wu(e)}clear(){var e;(e=this.videoContext)==null||e.disconnect(),delete this.destination,delete this.cameraNode,delete this.mirrorNode,delete this.screenNode,delete this.waterMarkNode}addEncodeProcessor({processor:e,type:r}){var o;this.encodePipeline.includes(e)||(this.encodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}addDecodeProcessor({processor:e,type:r}){var o;this.decodePipeline.includes(e)||(this.decodePipeline[r]=e,(o=this.room)==null||o.enableInsertableStreams())}removeEncodeProcessor({type:e}){this.encodePipeline[e]=void 0}removeDecodeProcessor({type:e}){this.decodePipeline[e]=void 0}};G([__(function(e){this.log.error("update failed",e)})],Fa.prototype,"update",1);var zS=0;var Mu=class extends re{constructor(e){super("room");l(this,"seq",++zS);l(this,"sdkAppId");l(this,"userId");l(this,"userSig");l(this,"privateMapKey");l(this,"latencyLevel");l(this,"tinyId");l(this,"scene");l(this,"roomId");l(this,"useStringRoomId");l(this,"role","anchor");l(this,"joinParams",null);l(this,"localTracks",new Set);l(this,"enableAutoPlayDialog",!0);l(this,"autoReceiveAudio",!0);l(this,"autoReceiveVideo",!0);l(this,"proxy_ws");l(this,"proxy_wt");l(this,"proxy_unified");l(this,"checkSystemResult",{result:!0,detail:{isBrowserSupported:!0,isWebRTCSupported:!0,isWebCodecsSupported:!0,isMediaDevicesSupported:!0,isScreenShareSupported:!0,isSmallStreamSupported:!0,isH264EncodeSupported:!0,isVp8EncodeSupported:!0,isH264DecodeSupported:!0,isVp8DecodeSupported:!0}});l(this,"keyPointManager");l(this,"audioManager");l(this,"videoManager");l(this,"callDurationCalculator");l(this,"badCaseDetector");l(this,"scheduleResult",{domains:null,iceServers:null,iceTransportPolicy:null,trtcAutoConf:null});l(this,"videoDecodeFallbackType");l(this,"_isUsingCachedSchedule",!1);l(this,"_log",U.createLogger({id:`r${this.seq}`}));l(this,"_joinedTimestamp",0);l(this,"_sdkType");l(this,"heartbeatReport");l(this,"quality");l(this,"enableSEI");l(this,"isDestroyed",!1);this.useStringRoomId=!!e.useStringRoomId,nt(e.autoReceiveAudio)&&(this.autoReceiveAudio=e.autoReceiveAudio),nt(e.autoReceiveVideo)&&(this.autoReceiveVideo=e.autoReceiveVideo),nt(e.enableAutoPlayDialog)&&(this.enableAutoPlayDialog=e.enableAutoPlayDialog),this._sdkType=e.sdkType,this.keyPointManager=new hg({room:this,frameWorkType:e.frameWorkType,component:e.component,language:e.language}),this.callDurationCalculator=new fg({room:this}),this.badCaseDetector=new _g({room:this}),this.audioManager=new $d(this),this.videoManager=new Fa(this)}get scriptTransformWorker(){}get isMainStreamPublished(){for(let e of this.localTracks)if(e.mediaType&4)return!0;return!1}get isAuxStreamPublished(){for(let e of this.localTracks)if(e.mediaType&2)return!0;return!1}get hasAuxStream(){for(let e of this.remotePublishedUserMap.values())if(e.muteState.hasAuxiliary)return!0;return this.isAuxStreamPublished}get localMainVideoTrack(){for(let e of this.localTracks)if(e.mediaType&4)return e;return null}get localAuxVideoTrack(){for(let e of this.localTracks)if(e.mediaType&2)return e;return null}getLogger(){return this._log}get isJoining(){return this.state.toString()==="joining"}get isJoined(){return this.state==="joined"}get isLeft(){return this.state==="left"}addTrack(e){return A(this,null,function*(){return this.publish(e)})}removeTrack(e){return A(this,null,function*(){return this.unpublish(e)})}replaceTrack(e){return A(this,null,function*(){})}setEncodedDataProcessingListener(e){throw new Error("Method not implemented.")}enableAIVoice(e){throw new Error("Method not implemented.")}setProxyServer(e){if(Se(e))e.startsWith("wss://")?this.proxy_ws=e:e.startsWith("https://")&&(this.proxy_wt=e);else if(Bt(e)){let{websocketProxy:r,webtransportProxy:o,loggerProxy:s,scheduleProxy:a,unifiedProxy:d}=e;this.proxy_ws=r,this.proxy_wt=o,this.proxy_unified=d,d?(lu([d,d]),no(`https://${d}`)):(s&&no(s),a&&lu(a))}F.once(P.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({sched_domain:Ar.main,sched_back_domain:Ar.backup,signal_domain:this.proxy_ws||this.proxy_wt||""}))}getRemoteAudioStats(){return A(this,null,function*(){let e={};return this.remotePublishedUserMap.forEach(r=>{e[r.userId]=r.remoteAudioTrack.stat}),e})}getTransportStats(){return A(this,null,function*(){var r;let e={rtt:((r=this.quality)==null?void 0:r.uplinkRTT)||0,downlinksRTT:{}};if(this.quality)for(let o of this.quality.downlinkInfo)e.downlinksRTT[o.userId]=o.rtt;return e})}getRemoteVideoStats(){return A(this,arguments,function*(e="main"){let r={};return this.remotePublishedUserMap.forEach(o=>{let s=e==="auxiliary"?o.remoteAuxiliaryTrack:o.remoteVideoTrack;r[o.userId]=s.stat}),r})}checkDestroy(){if(this.isDestroyed)throw new ue({code:Y.INVALID_OPERATION,message:st({key:ot.CLIENT_DESTROYED,data:{funName:"join"}})})}destroy(){if(this.isJoined)throw this._log.warn(Wt.INVALID_DESTROY),new ue({code:Y.INVALID_OPERATION,message:st({key:ot.INVALID_DESTROY})});this._log.info("destroy room"),this.audioManager.destroy(),this.videoManager.destroy(),this.keyPointManager.destroy(),this.callDurationCalculator.destroy(),this.badCaseDetector.destroy(),this.isDestroyed=!0,F.emit(P.ROOM_DESTROY,{room:this})}schedule(e,r){return A(this,null,function*(){var s,a,d;let o=ge();try{let{isCached:h,result:m,detailCost:T}=yield Jp({userId:this.userId,sdkAppId:this.sdkAppId,roomId:this.useStringRoomId?e.strRoomId:e.roomId,useStringRoomId:this.useStringRoomId,version:Ke,userSig:this.userSig,role:this.scene==="live"?e.role:void 0,frameWorkType:r,latencyLevel:e.latencyLevel});this._isUsingCachedSchedule=h,this._log.info(`schedule cache:${+h} ${ir(m,{keysToExclude:["username","credential"]})}`),h&&F.once(P.JOIN_RECEIVED_CMD_RES,()=>this.sendAbilityStatus({scheduleCache:1})),this.scheduleResult=J(J({},this.scheduleResult),m),$e((s=m.config)==null?void 0:s.retryCount)&&$l(m.config.retryCount),Se((a=m.config)==null?void 0:a.loggerDomain)&&no(m.config.loggerDomain),this.videoDecodeFallbackType=((d=m.config)==null?void 0:d.videoDecodeFallback)||this.videoDecodeFallbackType,F.emit(P.JOIN_SCHEDULE_SUCCESS,{room:this,schedule:this.scheduleResult,detailCost:T}),X.addSuccessEvent({key:521700,cost:ge()-o,split:50})}catch(h){throw X.addFailedEvent({key:521700,error:h}),h}})}sendAbilityStatus(e){}enableInsertableStreams(){return Promise.resolve()}};function Tg(i,t=!1){let e=Object.defineProperties(gt(),{postMessage:{value:i.postMessage.bind(i)},port:{get(){return i},set(o){i.onmessage=Oe,i.onmessageerror=Oe,i=o,r()}}});function r(){i.onmessage=o=>{o.data?o.ports.length||t?e.next(o):e.next(o.data):(e.complete(),i.close())},i.onmessageerror=o=>{e.error(o),i.close()}}return r(),e}var mh=class extends ne{constructor(t,e){super(t);let r=new ne(t);r.next=Oe,e(r)}},M1=ce(mh,"takeUntilComplete");var St={useWt:!0,useAINS:!0,useHardDecoder:"prefer-software",useHardEncoder:"prefer-software",unreliable:!1,debug:!1,assetsPath:"",enableUpload:!0},hh="__INLINE__WORKER__",Ig="__INLINE__WASM__",{debug:Sg}=console;St.debug||(console.debug=()=>{});var ph=!hh.startsWith("__"),XS=!Ig.startsWith("__");function yg(){return`${St.assetsPath?`${St.assetsPath}/`:""}worker.js`}function Ag(){let i=yg();return ph||i.startsWith("http")?URL.createObjectURL(new Blob([ph?atob(hh):`importScripts('${i}')`])):i}function bg(){let i=yg();return ph?URL.createObjectURL(new Blob([atob(hh)],{type:"application/javascript"})):i.startsWith("http")?fetch(i).then(t=>t.blob().then(e=>URL.createObjectURL(e))):i}var Ba;function Ou(){return A(this,null,function*(){let i=St.assetsPath?`${St.assetsPath}/`:"";return Ba||(XS?Ba=new TextEncoder().encode(atob(Ig)).buffer:Ba=yield fetch(`${i}av_processing.wasm`).then(t=>t.arrayBuffer()),Ba)})}var fh=class{constructor(){l(this,"playPort");l(this,"playPortSent",!1);l(this,"worklet");l(this,"workletPromise")}init(){return this.workletPromise||(this.workletPromise=this._init()),this.workletPromise}_init(){return A(this,null,function*(){let t=lt("player"),e=bg();try{yield t.audioWorklet.addModule(typeof e=="string"?e:yield e),U.info("global audio player worklet addModule success",e)}catch(r){throw U.error("global audio player worklet addModule failed:",r),r}return this.worklet=new AudioWorkletNode(t,"global-audio-player",{processorOptions:{wasm:yield Ou(),flag:St},numberOfInputs:2}),U.info("global audio player worklet created",t.state),this.worklet.connect(t.destination),this.playPort=this.worklet.port,this.playPort})}playAudio(t){return A(this,null,function*(){this.playPortSent||(this.playPortSent=!0,t(yield this.init()))})}},Pu=new fh;var _h=(()=>{if(typeof self=="undefined")return!1;if(!("top"in self&&self!==top)){if("showOpenFilePicker"in self)return"showOpenFilePicker"}return!1})(),F1=_h?Promise.resolve().then(function(){return KS}):Promise.resolve().then(function(){return sy});var B1=_h?Promise.resolve().then(function(){return ty}):Promise.resolve().then(function(){return ay});var QS=_h?Promise.resolve().then(function(){return iy}):Promise.resolve().then(function(){return dy});function gh(...i){return A(this,null,function*(){return(yield QS).default(...i)})}var YS=i=>A(void 0,null,function*(){let t=yield i.getFile();return t.handle=i,t}),ZS=(...t)=>A(void 0,[...t],function*(i=[{}]){Array.isArray(i)||(i=[i]);let e=[];i.forEach((s,a)=>{e[a]={description:s.description||"Files",accept:{}},s.mimeTypes?s.mimeTypes.map(d=>{e[a].accept[d]=s.extensions||[]}):e[a].accept["*/*"]=s.extensions||[]});let r=yield window.showOpenFilePicker({id:i[0].id,startIn:i[0].startIn,types:e,multiple:i[0].multiple||!1,excludeAcceptAllOption:i[0].excludeAcceptAllOption||!1}),o=yield Promise.all(r.map(YS));return i[0].multiple?o:o[0]}),KS={__proto__:null,default:ZS};function xu(i){function t(e){if(Object(e)!==e)return Promise.reject(new TypeError(e+" is not an object."));var r=e.done;return Promise.resolve(e.value).then(function(o){return{value:o,done:r}})}return xu=function(e){this.s=e,this.n=e.next},xu.prototype={s:null,n:null,next:function(){return t(this.n.apply(this.s,arguments))},return:function(e){var r=this.s.return;return r===void 0?Promise.resolve({value:e,done:!0}):t(r.apply(this.s,arguments))},throw:function(e){var r=this.s.return;return r===void 0?Promise.reject(e):t(r.apply(this.s,arguments))}},new xu(i)}var Rg=(o,s,...a)=>A(void 0,[o,s,...a],function*(i,t,e=i.name,r){let d=[],h=[];var m,T=!1,I=!1;try{for(var v,N=function(j){var H,z,Te,Pe=2;for(typeof Symbol!="undefined"&&(z=Symbol.asyncIterator,Te=Symbol.iterator);Pe--;){if(z&&(H=j[z])!=null)return H.call(j);if(Te&&(H=j[Te])!=null)return new xu(H.call(j));z="@@asyncIterator",Te="@@iterator"}throw new TypeError("Object is not async iterable")}(i.values());T=!(v=yield N.next()).done;T=!1){let j=v.value,H=`${e}/${j.name}`;j.kind==="file"?h.push(j.getFile().then(z=>(z.directoryHandle=i,z.handle=j,Object.defineProperty(z,"webkitRelativePath",{configurable:!0,enumerable:!0,get:()=>H})))):j.kind!=="directory"||!t||r&&r(j)||d.push(Rg(j,t,H,r))}}catch(j){I=!0,m=j}finally{try{T&&N.return!=null&&(yield N.return())}finally{if(I)throw m}}return[...(yield Promise.all(d)).flat(),...yield Promise.all(h)]}),ey=(...t)=>A(void 0,[...t],function*(i={}){i.recursive=i.recursive||!1,i.mode=i.mode||"read";let e=yield window.showDirectoryPicker({id:i.id,startIn:i.startIn,mode:i.mode});return Rg(e,i.recursive,void 0,i.skipDirectory)}),ty={__proto__:null,default:ey},ry=(s,...a)=>A(void 0,[s,...a],function*(i,t=[{}],e=null,r=!1,o=null){Array.isArray(t)||(t=[t]),t[0].fileName=t[0].fileName||"Untitled";let d=[],h=null;if(i instanceof Blob&&i.type?h=i.type:i.headers&&i.headers.get("content-type")&&(h=i.headers.get("content-type")),t.forEach((I,v)=>{d[v]={description:I.description||"Files",accept:{}},I.mimeTypes?(v===0&&h&&I.mimeTypes.push(h),I.mimeTypes.map(N=>{d[v].accept[N]=I.extensions||[]})):h?d[v].accept[h]=I.extensions||[]:d[v].accept["*/*"]=I.extensions||[]}),e)try{yield e.getFile()}catch(I){if(e=null,r)throw I}let m=e||(yield window.showSaveFilePicker({suggestedName:t[0].fileName,id:t[0].id,startIn:t[0].startIn,types:d,excludeAcceptAllOption:t[0].excludeAcceptAllOption||!1}));!e&&o&&o(m);let T=yield m.createWritable();return"stream"in i?(yield i.stream().pipeTo(T),m):"body"in i?(yield i.body.pipeTo(T),m):(yield T.write(yield i),yield T.close(),m)}),iy={__proto__:null,default:ry},oy=(...t)=>A(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),new Promise((e,r)=>{let o=document.createElement("input");o.type="file";let s=[...i.map(m=>m.mimeTypes||[]),...i.map(m=>m.extensions||[])].join();o.multiple=i[0].multiple||!1,o.accept=s||"",o.style.display="none",document.body.append(o);let a=m=>{typeof d=="function"&&d(),e(m)},d=i[0].legacySetup&&i[0].legacySetup(a,()=>d(r),o),h=()=>{window.removeEventListener("focus",h),o.remove()};o.addEventListener("click",()=>{window.addEventListener("focus",h)}),o.addEventListener("change",()=>{window.removeEventListener("focus",h),o.remove(),a(o.multiple?Array.from(o.files):o.files[0])}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),sy={__proto__:null,default:oy},ny=(...t)=>A(void 0,[...t],function*(i=[{}]){return Array.isArray(i)||(i=[i]),i[0].recursive=i[0].recursive||!1,new Promise((e,r)=>{let o=document.createElement("input");o.type="file",o.webkitdirectory=!0;let s=d=>{typeof a=="function"&&a(),e(d)},a=i[0].legacySetup&&i[0].legacySetup(s,()=>a(r),o);o.addEventListener("change",()=>{let d=Array.from(o.files);i[0].recursive?i[0].recursive&&i[0].skipDirectory&&(d=d.filter(h=>h.webkitRelativePath.split("/").every(m=>!i[0].skipDirectory({name:m,kind:"directory"})))):d=d.filter(h=>h.webkitRelativePath.split("/").length===2),s(d)}),"showPicker"in HTMLInputElement.prototype?o.showPicker():o.click()})}),ay={__proto__:null,default:ny},cy=(e,...r)=>A(void 0,[e,...r],function*(i,t={}){Array.isArray(t)&&(t=t[0]);let o=document.createElement("a"),s=i;"body"in i&&(s=yield function(h,m){return A(this,null,function*(){let T=h.getReader(),I=new ReadableStream({start:j=>function H(){return A(this,null,function*(){return T.read().then(({done:z,value:Te})=>{if(!z)return j.enqueue(Te),H();j.close()})})}()}),v=new Response(I),N=yield v.blob();return T.releaseLock(),new Blob([N],{type:m})})}(i.body,i.headers.get("content-type"))),o.download=t.fileName||"Untitled",o.href=URL.createObjectURL(yield s);let a=()=>{typeof d=="function"&&d()},d=t.legacySetup&&t.legacySetup(a,()=>d(),o);return o.addEventListener("click",()=>{setTimeout(()=>URL.revokeObjectURL(o.href),3e4),a()}),o.click(),null}),dy={__proto__:null,default:cy};var Eh=class{constructor(t){this.name=t;l(this,"ready");l(this,"worker");l(this,"ports");l(this,"ids",1);l(this,"transactions",new Map);l(this,"log");l(this,"addTransaction",t=>(this.transactions.set(++this.ids,t),this.ids))}postMessage(t,e){var r;(r=this.worker)==null||r.postMessage(t,e)}create(t){if(this.ready)return this.ready;t||(t=this.name),console.time(`createWorker_${t}`);let e=new Worker(Ag(),{name:t});return this.worker=e,this.ready=new Promise((r,o)=>A(this,null,function*(){e.onmessage=({data:{id:s,type:a,payload:d}})=>{var h;if(s)(h=this.transactions.get(s))==null||h(d),this.transactions.delete(s);else switch(a){case"error":console.timeEnd(`createWorker_${t}`),console.warn("worker error:",d),o(d);break;case"ready":console.timeEnd(`createWorker_${t}`),r(this);break;case"updateAFSM":if(d.value){let m=typeof d.old=="string"?d.old:`${d.old.action}ing`,T=typeof d.value=="string"?d.value:`${d.value.action}ing`;console.log(Gc(),d.group,d.name,m,"\u{1F449}",T)}break;case"log":console.log(d);break;case"glog":window.dispatchEvent(new CustomEvent(a,{detail:d}));break}},e.postMessage({wasm:yield Ou(),flag:St},this.ports)}))}destroy(){var t;console.log("destroy worker",this.name),delete this.ready,(t=this.worker)==null||t.terminate()}},Th=class{constructor(t,e,r){this.worker=t;l(this,"channel",new MessageChannel);l(this,"ready");this.ready=new Promise((o,s)=>{this.worker.postMessage({id:this.worker.addTransaction(o),payload:e},[this.channel.port2])}).then(o=>(o.err===0&&(this.worker.sessionCount++,this.channel.port1.onmessage=r),o))}postMessage(...t){this.channel.port1.postMessage(...t)}destroy(){--this.worker.sessionCount===0&&this.worker.destroy()}},Ih=class i extends Eh{constructor(){super("main");l(this,"switchValue",new Map);l(this,"extendChannel");l(this,"sessionCount",0)}setSwitchValue(e,r){var o;this.switchValue.set(e,r),(o=this.extendChannel)==null||o.port1.postMessage([e,r])}create(){return A(this,null,function*(){return this.ready?this.ready:(this.extendChannel=new MessageChannel,this.ports=[this.extendChannel.port2],yield Lt(i.prototype,this,"create").call(this),this.switchValue.forEach((e,r)=>{this.extendChannel.port1.postMessage([r,e])}),this)})}},Ji=new Ih,jo,uy=-1;function vg(i){return console.log(i),jo.push(i.slice()),jo.length>1e3&&jo.shift(),i}function Cg(i){return A(this,null,function*(){switch(uy){case 0:this.edpl.willDecodeAudio=vg;break;case 2:this.edpl.didEncodeAudio=vg;break}yield Ji.create(),F.emit(P.JOIN_SEND_CMD,{room:this});let t=new Th(Ji,i,o=>{let s=o.data;if(typeof s=="string")this.onWorkerEvent(s);else if(s==null)this.onWorkerEvent("client-banned",0),t.destroy();else{let{cmd:a,payload:d}=s;this.onWorkerEvent(a,d)}}),{err:e,data:r}=yield t.ready;if(typeof e=="number"){if(F.emit(P.JOIN_RECEIVED_CMD_RES,{room:this,code:e}),e===0)return Object.assign(this,r,{session:t});throw new ue({code:Y.JOIN_ROOM_FAILED,extraCode:Number(e),message:st({key:ot.SIGNAL_CHANNEL_SETUP_FAILED,data:{errorCode:e,errorMsg:""}})})}else throw e})}Object.defineProperties(window,{useAINS:{set:Sh},useWt:{set:ly},enableDebug:{set(i){console.debug=i?Sg:()=>{},Ji.setSwitchValue("enableDebug",i)}},useV2:{set:yh},dump:{value(){if(jo||(console.warn("dump audio will be activated at next time join room"),jo=[]),!jo.length){console.warn("no audio data to dump,try it later");return}let i=[];return jo.forEach(t=>{i.push(new Uint16Array([t.length])),i.push(t)}),gh(new Blob(i),{fileName:"audio dump hex",extensions:[".hex"]})}},dumpAudio:{value(i="audio",t=2e3){let e=[],r=new Promise(o=>{let s=new MessageChannel;Ji.extendChannel.port1.postMessage(["dump",i],[s.port1]),s.port2.onmessage=({data:a})=>{console.log(a),e.push(a),e.length>t&&(s.port2.onmessage=null,Ji.extendChannel.port1.postMessage(["dump",i]),s.port2.close(),o(new Blob(e)))}});return gh(r,{fileName:i,extensions:[".pcm"]})}},hardDec:{set(i){switch(i){case!0:St.useHardDecoder="prefer-hardware";break;case!1:St.useHardDecoder="prefer-software";break;default:St.useHardDecoder="no-preference"}}}});function Sh(i){return A(this,null,function*(){Ji.setSwitchValue("useAINS",i)})}function yh(i){return A(this,null,function*(){Ji.setSwitchValue("useV2",i)})}function ly(i){return A(this,null,function*(){Ji.setSwitchValue("useWt",i)})}function Dg(i){let t=new MediaStreamTrackGenerator({kind:"audio"});i.setInputMediaStreamTrack(t),this.postMessage({cmd:"pullAudio",payload:{tinyId:i.tinyId,writable:t.writable}},[t.writable])}function Ng(i){return A(this,null,function*(){var o;this._log.info("pull video",i);let t=Date.now(),e=0,r=new MessageChannel;this.postMessage({cmd:"pullVideo",payload:{mediaType:i.mediaType,tinyId:i.tinyId}},[r.port1]),(o=i.stat).framesReceived||(o.framesReceived=0),be(Tg(r.port2),We(De(i,re.INIT)),ke(s=>{let{data:a,packetsReceived:d}=s;i.stat.packetsReceived=d,i.stat.framesReceived++,e++;let h=a[4]&31;if(e<=10){let T=Array.from(a.slice(0,10)).map(I=>I.toString(16).padStart(2,"0")).join(" ");this._log.info(`Frame ${e} - Size: ${a.length} bytes, Type: ${h}, Timestamp: ${Date.now()-t}ms First 10 bytes: ${T}`)}let m;switch(h){case 5:case 7:m="key";break;default:m="delta";break}i.decodeFrame({data:a.buffer,type:m,timestamp:(Date.now()-t)*1e3})},()=>{},()=>{r.port2.postMessage(null),r.port2.close()}))})}var ku=[];function Mg(i){var h;let t=gt();if(this.state!=="joined")throw new Error("Room is not joined");if(i.state==="publish")return;for(let m=0;m<=ku.length;m++)if(!ku[m]){ku[m]=this,this.index=m;break}let e=i.profile;this._log.info("start push audio",this.index,e);let r=new MessageChannel,o=i.enableEncodeFrame?new MessageChannel:null;(h=this.session)==null||h.postMessage({cmd:"pushAudio",payload:J({index:this.index},e)},o?[r.port2,o.port2]:[r.port2]),r.port1.onmessage=m=>{m.data==null||(typeof m.data=="number"?t.next(m.data):o&&o.port1.postMessage(pe(J({},m.data),{data:new Uint8Array(i.encodeFrame({data:m.data.data.buffer,timestamp:m.data.timestamp}).data)})))};let s=new MediaStream,a,d=m=>{let T=s.getAudioTracks()[0];T&&(a.disconnect(),s.removeTrack(T)),s.addTrack(m),this._log.info("push audio track:",m.readyState,m.getSettings().deviceId),a=lt("player").createMediaStreamSource(s),a.connect(Pu.worklet,0,this.index)};be(De(i,"output-media-track-changed"),We(De(i,"capture")),ke(d,console.error,()=>{this._log.info("stop push audio",e),i.volume=0,a.disconnect(),ku[this.index]=null,o&&o.port1.postMessage(null),r.port1.postMessage(null)})),be(t,Ca(m=>i.volume=m),Vo(tu(1e3)),ke(()=>{i.volume=0})),d(i.outMediaTrack)}var IF=new Intl.DateTimeFormat("zh-CN",{dateStyle:"short",timeStyle:"medium"});var Ah=class{constructor(t,e,r,o){this.localTrack=t;this.type=e;this.config=r;this.port=o;l(this,"track");l(this,"label");l(this,"insertKeyFrame",!0);l(this,"encoder");l(this,"tsMap",new Map);t._log.info("create Video Encoder",r)}trans(t,e,r){let o=this.recreate(r);e.signal.addEventListener("abort",()=>{o.close()});let s=0;return t.pipeThrough(new TransformStream({transform:(a,d)=>{o.state==="configured"&&(this.tsMap.set(s,Date.now()),this.encode(a),s++,d.enqueue(a))}}),e)}encode(t){this.encoder.encode(t,{keyFrame:this.insertKeyFrame}),this.insertKeyFrame=!1}start(t,e,r){let o=this.recreate(r),s=0;t.pipeTo(new WritableStream({write:a=>{o.state==="configured"&&(s<10&&console.log(`capture ${this.label} track frame:`,s,Date.now(),a.timestamp,a.displayWidth,a.displayHeight),(a.displayWidth!==this.config.width||a.displayHeight!==this.config.height)&&(console.log("resize video track frame:",a.displayWidth,a.displayHeight,this.config.width,this.config.height),this.configure({width:a.displayWidth,height:a.displayHeight})),this.tsMap.set(s,Date.now()),this.encode(a),s<10&&console.log(`encode ${this.label} track frame:`,s),s++,a.close())}}),e).catch(a=>{console.warn(a),o.close()})}recreate(t,e=0){let r=0,o=new VideoEncoder({output:s=>{let a=this.tsMap.get(r);if(this.tsMap.delete(s.timestamp),r<10&&(r===0&&e===0&&F.emit(P.SEND_FIRST_VIDEO_FRAME,{room:t}),console.log(`encoded ${this.label} track frame:`,r,Date.now(),s.timestamp)),r++,this.track.enabled===!1)return;let d=null;if(this.localTrack.enableEncodeFrame){d=new Uint8Array(s.byteLength),s.copyTo(d);let h=this.localTrack.encodeFrame({data:d.buffer},this.type===3);d=new Uint8Array(h.data)}d?(this.localTrack.stat.bytesSent+=d.length,this.port.postMessage({chunk:{type:s.type,timestamp:s.timestamp,data:d,duration:s.duration},timestamp:a},[d.buffer])):(this.localTrack.stat.bytesSent+=s.byteLength,this.port.postMessage({chunk:s,timestamp:a}))},error:s=>{console.warn(s,this.config),setTimeout(()=>this.recreate(t,e+1),100)}});return this.encoder=o,this.configure({}),o}configure(t){var e;(e=this.encoder)==null||e.configure(Object.assign(this.config,t))}close(){this.port.postMessage(null),this.port.close()}};function Lu(i,t){return A(this,null,function*(){let e=i.mediaType===2,r=e?"screen":"video",o={codec:"avc1.420028",avc:{format:"annexb"},hardwareAcceleration:St.useHardEncoder,width:t.profile.width,height:t.profile.height,framerate:t.profile.frameRate,bitrate:t.profile.bitrate*1e3},s=new MessageChannel;this.postMessage({cmd:"pushVideo",payload:t},[s.port1]);let a=new Ah(i,t.type,o,s.port2);return s.port2.onmessage=d=>{if(d.data===260)a.insertKeyFrame=!0;else if(!e){let{bitrate:h}=d.data;Ln({configureBr:[d.data.bitrate,h]}),a.configure({bitrate:h})}},this._log.info("start push",r,t),a})}function Og(i){return A(this,null,function*(){let t=i.mediaType===2,e=t?"screen":"video",r={type:t?7:2,profile:i.profile,trackType:t?"screen":"camera"};!t&&i.outMediaTrack instanceof CanvasCaptureMediaStreamTrack&&(r.trackType="canvas");let{trackType:o}=r,{width:s,height:a}=i.outMediaTrack.getSettings();r.profile.width=s,r.profile.height=a;let d=yield Lu.call(this,i,r);this._log.info("VideoEncoder created",r);let h,m=T=>A(this,null,function*(){if(h==null||h.abort("track changed"),!T)return;h=new AbortController;let{width:I,height:v,displaySurface:N}=T.getSettings();I&&(d.config.width=I),v&&(d.config.height=v);let j=Qt.match(/Chrome\/(\d+)/);(j==null?void 0:j[1])==="114"&&N==="browser"&&delete d.config.hardwareAcceleration,this._log.info("push",e,"track:",T.readyState,T.getSettings());let H=new MediaStreamTrackProcessor({track:T}).readable,z="small"in i&&i.small;z?(this.smallEncoder||(this.smallEncoder=yield Lu.call(this,i,{profile:z,type:3,trackType:o})),this.smallEncoder.track=T,this.smallEncoder.label="small",H=this.smallEncoder.trans(H,h,this)):this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder),d.track=T,d.label=e,d.start(H,h,this)});return be(De(i,"output-media-track-changed"),We(De(i,"capture")),ke(m,console.error,()=>{var T;this._log.info("stop push",e,r),h.abort("unpublish"),d.close(),(T=this.smallEncoder)==null||T.close()})),m(i.outMediaTrack)})}var zi=class zi extends re{constructor(e){var r,o;super((o=(r=e.roomid)==null?void 0:r.toString())!=null?o:e.name,"volumeEvaluation");this.room=e;l(this,"enableInBackground",!1);l(this,"interval",400);e.on("joined",()=>{this.emit(zi.INTERVALCHANGED,this.interval)}),be(De(this,zi.INTERVALCHANGED),Fr(s=>this.room.state==="joined"?this.room.fromWorker("getAudioEnergy",s):be(L_(s),Vs(()=>[]))),ke(s=>{s.forEach(a=>{this.room.remotePublishedUserMap.has(a.userId)&&(this.room.remotePublishedUserMap.get(a.userId).remoteAudioTrack.volume=a.volume)}),(!document.hidden||this.enableInBackground)&&this.state==re.ON&&this.room.emit("audio-volume",s)}))}start(e,r){this.interval=e,this.enableInBackground=r,this.emit(zi.INTERVALCHANGED,this.interval)}stop(){}};l(zi,"INTERVALCHANGED","intervalChanged"),G([ye([re.INIT,re.OFF],re.ON)],zi.prototype,"start",1),G([ye([],re.OFF)],zi.prototype,"stop",1);var Uu=zi;var Xi=class Xi extends Mu{constructor(e){super(e);l(this,"index",0);l(this,"session");l(this,"tinyid");l(this,"roomid");l(this,"openid");l(this,"socketid");l(this,"relayip");l(this,"clientip");l(this,"remotePublishedUserMap",new Map);l(this,"bussinessInfo");l(this,"token");l(this,"audioVolumeEvalution",new Uu(this));l(this,"enableAIVoice",Sh);l(this,"AbilityOption",{AVLimit:{EncVideoCodec:"H265",EncVideoWidth:0,EncVideoHeight:0,EncVideoBr:"0",EncVideoFps:0,EncAudioCodec:"opus",EncAudioFS:0,EncAudioCh:0,EncAudioBr:"0"},GeneralLimit:{CPULimit:{uint32_CPU_num:navigator.hardwareConcurrency||0,str_CPU_name:navigator.platform,uint32_CPU_maxfreq:0,model:"",uint32_total_memory:0},uint32_terminal_type:um(),uint32_device_type:0,str_os_verion:lm(),uint32_link_type:1,str_client_version:Ke,uint32_net_type:ao[Pr.getNetworkType()],ua:navigator.userAgent,version:""}});l(this,"joinAbortController",new AbortController);l(this,"smallAbortCtrl");l(this,"smallEncoder");e.tinyId&&(this.tinyId=e.tinyId,yh(!0)),this._log||(this._log=e.logger),this.bussinessInfo=e.bussinessInfo,e.encodedDataProcessingListener&&this.setEncodedDataProcessingListener(e.encodedDataProcessingListener)}replaceTrack(e){return A(this,null,function*(){})}getLogger(){return this._log}postMessage(e,r){this.session&&(e?typeof e=="string"?this.session.postMessage({cmd:e,payload:r}):this.session.postMessage(e,r):this.session.postMessage(null))}sendMessage(e,r){return new Promise((o,s)=>{this.state!="joined"&&s("join room first");let a=new MessageChannel;this.postMessage({cmd:e,payload:r},[a.port1]),a.port2.onmessageerror=s,a.port2.onmessage=d=>{a.port2.close(),o(d.data)}})}fromWorker(e,r){if(this.state!="joined")throw"join room first";return o=>{var a;let s=new MessageChannel;s.port2.onmessage=d=>{d.data?o.next(d.data):o.complete()},s.port2.onmessageerror=d=>o.error(d),o.defer(()=>{s.port2.postMessage(null),s.port2.close()}),(a=this.session)==null||a.postMessage({cmd:e,payload:r},[s.port1])}}switchRole(e){return A(this,null,function*(){if(e!==this.role)return this._log.info(`switchRole() => switch role to: ${e}`),e=="audience"&&this.unpublish(...this.localTracks),this.sendMessage("switchRole",e=="audience"?21:20).then(r=>{this.role=e})})}join(e,r,o){return A(this,null,function*(){var h,m,T;let s=Pr.getEnv(),a=Ad(),d={isH264EncodeSupported:this.checkSystemResult.detail.isH264EncodeSupported,isVp8EncodeSupported:this.checkSystemResult.detail.isVp8EncodeSupported,frameWorkType:o,params:e,proxy_wt:(h=this.proxy_wt)==null?void 0:h.replace("https://",""),proxy_ws:(m=this.proxy_ws)==null?void 0:m.replace("wss://",""),proxy_cloud:(T=this.scheduleResult.iceServers)!=null&&T.length?this.scheduleResult.iceServers[0].urls:[],proxy_unified:this.proxy_unified,domains:this.scheduleResult.domains,env:s,osName:As(),browserInfo:Ad(),tinyId:this.tinyId,joinReq:{useStrRoomid:!!this.useStringRoomId,roomid:String(e.roomId||e.strRoomId),sdkAppID:String(e.sdkAppId),userSig:e.userSig,privMapEncrypt:e.privateMapKey||"",privMap:"",pstnBizType:0,role:"user",jsSdkVersion:Ke,browserVersion:a.browserName+a.browserVersion,closeLocalMedia:!0,trtcscene:r==="live"?2:1,trtcrole:e.role,bussinessInfo:e.businessInfo||this.bussinessInfo||"",isAuxUser:0,autoSubscribe:this.autoReceiveAudio&&this.autoReceiveVideo,AbilityOption:this.AbilityOption}};yield Cg.call(this,d),console.log(this),Pu.playAudio(I=>this.postMessage({cmd:"setAudioWorkletPort"},[I])),this.checkDestroy()})}_leave(e=0){return A(this,null,function*(){console.log(this.userId,"leave",e),this.remotePublishedUserMap.forEach(r=>{r.remoteAudioTrack.close(),r.remoteAuxiliaryTrack.close(),r.remoteVideoTrack.close()}),this.postMessage(null),this.remotePublishedUserMap.clear(),this.localTracks.forEach((r,o)=>o.unpublish())})}leave(){return A(this,null,function*(){return this._leave()})}getSignalInfo(){return{tinyId:this.tinyid,clientIp:this.clientip,signalIp:"",relayIp:this.relayip,relayInnerIp:"",relayPort:0}}enableAudioVolumeEvaluation(e=2e3,r=!1){e<=0?this.audioVolumeEvalution.stop():this.audioVolumeEvalution.start(e,r)}getLocalAudioStats(){return this.sendMessage("getLocalAudioStats")}getLocalVideoStats(){return this.sendMessage("getLocalVideoStats")}afterJoin(){return A(this,null,function*(){let e=We(De(this,"left"));be(r=>A(this,null,function*(){let o=new MessageChannel;o.port2.onmessage=s=>{s.data?r.next({data:s.data,port:o.port2}):r.complete()},o.port2.onmessageerror=s=>r.error(s),r.defer(()=>{o.port2.postMessage(null),o.port2.close()}),this.postMessage({cmd:"decodeAudio",payload:!!this.audioManager.decodePipeline[0]},[o.port1])}),e,ke(({data:r,port:o})=>{let s=this.audioManager.decodePipeline[0]({frame:{data:r.buffer}});o.postMessage(new Uint8Array(s.data),[s.data])}))})}onWorkerEvent(e,r){switch(e!=="network-quality"&&console.info(this.userId,"onWorkerEvent",e,JSON.stringify(r)),e){case P.RECEIVED_PUBLISHED_USER_LIST:F.emit(e,J({room:this},r));return;case"1":if(r.userId===this.userId)return;this.emit("peer-join",r);return;case"2":this.emit("peer-leave",r);return;case"3":let o=new bu(this,r);this.remotePublishedUserMap.set(r.userId,o),this.emit("remote-published",o);return;case"5":{let I=r,v=this.remotePublishedUserMap.get(I);v&&(v.remoteVideoTrack.close(),v.remoteAuxiliaryTrack.close(),v.remoteAudioTrack.close(),this.remotePublishedUserMap.delete(I),this.emit("remote-unpublished",v))}return;case"banned":switch(this._leave(r),r){case 8:this.emit("banned",{reason:"kick",message:""});break;case 2:case 6:case 4:this.emit("banned",{reason:"banned",message:""});case 7:case 5:this.emit("banned",{reason:"room_disband",message:""})}break;case"6":{let{prevMuteState:I,muteState:v,flag:N}=r,j=this.remotePublishedUserMap.get(v.userId);if(!j){this.emit("remote-publish-state-changed",r);return}j.flag=N}F.emit(P.REMOTE_PUBLISH_STATE_CHANGED,J({room:this},r)),this.emit("remote-publish-state-changed",r);return;case"network-quality":this.quality=J({},r);let{uplinkLoss:s,uplinkRTT:a,uplinkInfo:d,downlinkInfo:h,msg_down_stream_info:m}=r,T={str_sdk_version:Ke,uint64_datetime:Date.now(),msg_user_info:{str_identifier:this.userId,uint64_tinyid:this.tinyid},msg_device_info:{uint32_terminal_type:15,str_device_name:navigator.platform,str_os_version:"",uint32_net_type:ao[kn()]},msg_event_msg:U_(this.userId),str_acc_ip:this.relayip,str_client_ip:this.clientip,msg_up_stream_info:d,msg_down_stream_info:m};F.emit(P.HEARTBEAT_REPORT,{room:this,report:T}),this.emit("heartbeat-report",T),F.emit(P.NETWORK_QUALITY,{room:this,uplink:{rtt:a,loss:s},downlinks:h}),delete r.downlinkInfo;break;case"signal-connection-state-changed":F.emit(P.SIGNAL_CONNECTION_STATE_CHANGED,J({room:this},r));return}this.emit(e,r)}sendStartPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("publishCdn",e)}sendStopPublishCDN(e,r){return e.roomid=this.roomId,e.sdkAppID=String(this.sdkAppId),e.socketid=this.socketid,r&&(e.request_time=e.pushRequestTime),this.sendMessage("stopPublishCdn",e)}sendStartMixTranscode(e){return this.sendMessage("startMcuMix",e)}sendStopMixTranscode(e){return this.sendMessage("stopMcuMix",e)}publish(...e){return A(this,null,function*(){let r=e.reduce((d,h)=>h.mediaType|d,0),o=this.sendMessage("publish",r).then(d=>d.err!==0?Promise.reject(d.err):d),s=0,a=d=>A(this,null,function*(){switch(yield o,d.muted&&(s|=d.mediaType),vt(d,d).add("mute",()=>{this.postMessage("mute",{mediaType:d.mediaType,userId:this.userId,srctinyid:this.tinyid,remove:!0})}).add("unmute",()=>{this.postMessage("unmute",{mediaType:d.mediaType,userId:this.userId,srctinyid:this.tinyid,add:!0})}),d.mediaType){case 1:Mg.call(this,d);break;default:yield Og.call(this,d)}});yield Promise.all(e.map(a)),s&&this.postMessage("mute",{mediaType:s,srctinyid:this.tinyid,userId:this.openid,remove:!0})})}unpublish(...e){return A(this,null,function*(){e.forEach(at)})}subscribe(...e){return A(this,null,function*(){let r=e.reduce((I,v)=>v.mediaType|I,0),{userId:o,tinyId:s,streamType:a}=e[0],d=this.remotePublishedUserMap.get(o),h=J({},d.subscribeState),m=Object.assign(new oa,h);m.mediaType|=r,F.emit(P.SUBSCRIBE_START,{room:this,streamType:a,remotePublishedUser:d,subscribeState:m});let T=yield this.sendMessage("subscribe",{mediaType:m.mediaType,userId:o,srctinyid:s,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8,2].filter(I=>m.mediaType&I).map(I=>({mediaType:I,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}});console.dir("subscribe",T),yield Promise.all(e.filter(I=>!I.isSubscribed).map(I=>{switch(I.mediaType){case 1:return Dg.call(this,I);default:return Ng.call(this,I)}})),F.emit(P.SUBSCRIBE_SUCCESS,{room:this,streamType:a,remotePublishedUser:d})})}unsubscribe(...e){return A(this,null,function*(){let r=0;for(let o of e)r|=o.mediaType,o.unsubscribe();if(e.length){let{userId:o,streamType:s,tinyId:a}=e[0];yield this.sendMessage("unSubscribe",{mediaType:r,srctinyid:a,userId:o}),F.emit(P.UNSUBSCRIBE_SUCCESS,{room:this,streamType:s,remotePublishedUser:this.remotePublishedUserMap.get(o)})}})}enableSmall(e){return A(this,null,function*(){var r;if(e){if(this.videoManager.smallTrack){let o=this.videoManager.cameraTrack;this.smallEncoder=yield Lu.call(this,o,{profile:o.small,type:3,trackType:"camera"});let s=new MediaStreamTrackProcessor({track:this.videoManager.smallTrack}).readable;this.smallEncoder.track=this.videoManager.smallTrack,this.smallEncoder.label="small",this.smallAbortCtrl=new AbortController,this.smallEncoder.start(s,this.smallAbortCtrl,this),this._log.info("push small")}}else(r=this.smallAbortCtrl)==null||r.abort("stop"),this.smallEncoder&&(this.smallEncoder.close(),delete this.smallEncoder)})}changeType(e,r){let o=this.remotePublishedUserMap.get(r.userId),s=e?8:4;if(o.remoteVideoTrack.mediaType===s)return;let a={srctinyid:r.tinyId,mediaType:s,userId:r.userId,mediaDescription:{audioParam:{mediaType:1,payloadFmtps:[{payloadType:111,fmtp:"minptime=10;useinbandfec=1"}]},videoParam:[4,8].filter(d=>s&d).map(d=>({mediaType:d,payloadFmtps:[{payloadType:100,fmtp:"packetization-mode=1;profile-level-id=42e01f"}]}))}};o.remoteVideoTrack.mediaType=a.mediaType,this.postMessage("changetype",a)}destroy(){this.isDestroyed||(super.destroy(),this.isDestroyed=!0,this.joinAbortController.abort("destroy"))}};G([Fi(Xi.prototype.afterJoin),ye(["left",re.INIT],"joined"),dg()],Xi.prototype,"join",1),G([ye("joined","left",{ignoreError:!0}),ug()],Xi.prototype,"_leave",1),G([Vd((...e)=>0),lg()],Xi.prototype,"publish",1),G([Vd((...e)=>0),mg()],Xi.prototype,"unpublish",1),G([Vd((...e)=>e[0].userId),pg()],Xi.prototype,"subscribe",1);var Vu=Xi;Js.frameWorkType=37;Js.create=function(i){let t=Js._create.call(this,Vu,i);return t._use(wa,i==null?void 0:i.assetsPath),i!=null&&i.assetsPath&&(St.assetsPath=i==null?void 0:i.assetsPath),console.log("trtc wasm sdk:",Ke,"created",St),t};Object.assign(Js.prototype,{_setCurrentSpeaker(i){let t=lt("player");return t!=null&&t.setSinkId?t.setSinkId(i):Promise.reject("not support")},_enableVideoDecodeFallback(i,t){return A(this,null,function*(){return this.startPlugin(wa.Name,{type:"webCodecs",renderer:"videoFrame",track:i,config:{codec:"avc1.420028"},fallback:"wasm"}),new Promise((e,r)=>{be(De(i,"decode-downgrade-state-changed"),Uo(o=>o.state==="STARTED"),Sr(1),Bp(1e4),We(De(i,re.INIT)),ke(e,r))})})}});var WB=Js;export{WB as default};