@livedigital/client 3.0.0 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.js
CHANGED
|
@@ -236,4 +236,4 @@ PERFORMANCE OF THIS SOFTWARE.
|
|
|
236
236
|
personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);
|
|
237
237
|
outColor = vec4(frameColor * personMask + backgroundColor * (1.0 - personMask), 1.0);
|
|
238
238
|
}
|
|
239
|
-
`,{width:c,height:d}=n,l=c/d,p=_a(e,e.VERTEX_SHADER,o),u=_a(e,e.FRAGMENT_SHADER,a),h=Ca(e,p,u,t,r),f=e.getUniformLocation(h,"u_backgroundScale"),m=e.getUniformLocation(h,"u_backgroundOffset"),g=e.getUniformLocation(h,"u_inputFrame"),v=e.getUniformLocation(h,"u_personMask"),y=e.getUniformLocation(h,"u_background"),b=e.getUniformLocation(h,"u_coverage"),w=e.getUniformLocation(h,"u_lightWrapping"),_=e.getUniformLocation(h,"u_blendMode");e.useProgram(h),e.uniform2f(f,1,1),e.uniform2f(m,0,0),e.uniform1i(g,0),e.uniform1i(v,1),e.uniform2f(b,0,1),e.uniform1f(w,0),e.uniform1f(_,0);let S=null;function k(t){S=Sa(e,e.RGBA8,t.naturalWidth,t.naturalHeight,e.LINEAR,e.LINEAR),e.texSubImage2D(e.TEXTURE_2D,0,0,0,t.naturalWidth,t.naturalHeight,e.RGBA,e.UNSIGNED_BYTE,t);let r=0,i=0,s=t.naturalWidth,n=t.naturalHeight;s/n<l?(n=s/l,i=(t.naturalHeight-n)/2):(s=n*l,r=(t.naturalWidth-s)/2);const o=s/t.naturalWidth,a=n/t.naturalHeight;r/=t.naturalWidth,i/=t.naturalHeight,e.uniform2f(f,o,a),e.uniform2f(m,r,i)}return(null==s?void 0:s.complete)?k(s):s&&(s.onload=()=>{k(s)}),{render:function(){e.viewport(0,0,c,d),e.useProgram(h),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,i),null!==S&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,S),e.uniform1i(y,2)),e.bindFramebuffer(e.FRAMEBUFFER,null),e.drawArrays(e.TRIANGLE_STRIP,0,4)},updateCoverage:function(t){e.useProgram(h),e.uniform2f(b,t[0],t[1])},updateLightWrapping:function(t){e.useProgram(h),e.uniform1f(w,t)},updateBlendMode:function(t){e.useProgram(h),e.uniform1f(_,"screen"===t?0:1)},cleanUp:function(){e.deleteTexture(S),e.deleteProgram(h),e.deleteShader(u),e.deleteShader(p)}}}(u,m,g,b,t,n);return{render:function(){return i(this,void 0,void 0,(function*(){u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,v),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,e.htmlElement),u.bindVertexArray(f),yield w.render(),o._runInference(),_.render(),S.render(),k.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===r.type){const t=k;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===r.type){k.updateCoverage(e.coverage)}else{const e=k;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){k.cleanUp(),S.cleanUp(),_.cleanUp(),w.cleanUp(),u.deleteTexture(b),u.deleteTexture(y),u.deleteTexture(v),u.deleteBuffer(g),u.deleteBuffer(m),u.deleteVertexArray(f),u.deleteShader(h)}}}var Ma,La,Ia,Oa,Aa,ja,Fa,Na,Ba,Ua;class qa{constructor(e){Ma.set(this,!1),La.set(this,void 0),Ia.set(this,void 0),Oa.set(this,void 0),n(this,Oa,new Qe({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return s(this,Ma,"f")}get tfliteModule(){return s(this,La,"f")||s(this,Ia,"f")}loadTFLite(){return i(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&n(this,Ma,!0,"f")}))}loadTFLiteModel(e){return i(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=qa.getTFLiteModelFileName(e);s(this,Oa,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),i=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(i),n);const o=this.tfliteModule._loadModel(i.byteLength);s(this,Oa,"f").info("loading model result",{result:o})}catch(e){s(this,Oa,"f").warn("loadTFLiteModel()",{error:e})}else s(this,Oa,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return i(this,void 0,void 0,(function*(){try{n(this,La,yield createTFLiteModule(),"f")}catch(e){s(this,Oa,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return i(this,void 0,void 0,(function*(){try{n(this,Ia,yield createTFLiteSIMDModule(),"f")}catch(e){s(this,Oa,"f").error("Failed to create TFLite SIMD WebAssembly module.",{error:e})}}))}static getTFLiteModelFileName({model:e,inputResolution:t}){switch(e){case"meet":return"256x144"===t?"segm_full_v679":"segm_lite_v681";case"mlkit":return"selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16";default:throw new Error(`No TFLite file for this segmentation model: ${e}`)}}}function Wa({sourcePlayback:e,backgroundConfig:t,segmentationConfig:r,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=Pa[r.inputResolution],d=a*c,l=new ImageData(a,c),p=document.createElement("canvas");p.width=a,p.height=c;const u=p.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return i(this,void 0,void 0,(function*(){"none"!==t.type&&(function(){if(u.drawImage(e.htmlElement,0,0,e.width,e.height,0,0,a,c),"meet"===r.model||"mlkit"===r.model){const e=u.getImageData(0,0,a,c);for(let t=0;t<d;t+=1)n.HEAPF32[h+3*t]=e.data[4*t]/255,n.HEAPF32[h+3*t+1]=e.data[4*t+1]/255,n.HEAPF32[h+3*t+2]=e.data[4*t+2]/255}}(),function(){n._runInference();for(let e=0;e<d;e+=1)if("meet"===r.model){const t=n.HEAPF32[f+2*e],r=n.HEAPF32[f+2*e+1],i=Math.max(t,r),s=Math.exp(t-i),o=Math.exp(r-i);l.data[4*e+3]=255*o/(s+o)}else if("mlkit"===r.model){const t=n.HEAPF32[f+e];l.data[4*e+3]=255*t}u.putImageData(l,0,0)}()),o.globalCompositeOperation="copy",o.filter="none",(null==m?void 0:m.smoothSegmentationMask)&&("blur"===t.type||"image"===t.type)&&(o.filter="blur(8px)"),"none"!==t.type&&(o.drawImage(p,0,0,a,c,0,0,e.width,e.height),o.globalCompositeOperation="source-in",o.filter="none"),o.drawImage(e.htmlElement,0,0),"blur"===t.type&&(o.globalCompositeOperation="destination-over",o.filter="blur(8px)",o.drawImage(e.htmlElement,0,0))}))},updatePostProcessingConfig:function(e){m=e},cleanUp:function(){}}}Ma=new WeakMap,La=new WeakMap,Ia=new WeakMap,Oa=new WeakMap;class Va{constructor(e){Aa.set(this,void 0),ja.set(this,void 0),Fa.set(this,!1),Na.set(this,void 0),n(this,Aa,new qa(e.logLevel),"f"),n(this,Na,new Qe({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return s(this,Fa,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:r}=e;s(this,Fa,"f")&&this.stopProcessing();try{s(this,Aa,"f").isLoaded||(yield s(this,Aa,"f").loadTFLite(),yield s(this,Aa,"f").loadTFLiteModel(r.segmentationConfig));const{tfliteModule:o}=s(this,Aa,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=r.segmentationConfig,c=yield Va.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const l=function(){const e=new Map,t=new Worker(`${window.location.origin}/timerWorker.js`);t.onmessage=t=>{const r=e.get(t.data.callbackId);r&&(e.delete(t.data.callbackId),r())};let r=1;return{setTimeout:function(i,s){return r+=1,e.set(r,i),t.postMessage({callbackId:r,timeoutMs:s}),r},clearTimeout:function(r){e.has(r)&&(t.postMessage({callbackId:r}),e.delete(r))},terminate:function(){e.clear(),t.terminate()}}}(),p={config:r,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?Va.buildCanvas2dPipeline(p):Va.buildWebGL2Pipeline(p),h=()=>i(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),l.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(r.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return n(this,ja,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:l,timerId:f},"f"),n(this,Fa,!0,"f"),g}catch(e){throw s(this,Na,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(s(this,ja,"f"))try{s(this,ja,"f").pipeline.cleanUp(),s(this,ja,"f").source.remove(),s(this,ja,"f").destination.remove(),s(this,ja,"f").timerWorker.clearTimeout(s(this,ja,"f").timerId),s(this,ja,"f").timerWorker.terminate(),s(this,ja,"f").destination.remove(),s(this,ja,"f").track.stop(),n(this,ja,void 0,"f"),n(this,Fa,!1,"f")}catch(e){s(this,Na,"f").error("cleanUp()",{error:e})}else s(this,Na,"f").warn("cleanUp()",{description:"This track is not processing"});else s(this,Na,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return xa({backgroundImage:e.config.backgroundConfig.imageSource,sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildCanvas2dPipeline(e){return Wa({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return i(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.srcObject=new MediaStream([e]),t.autoplay=!0,yield t.play(),{htmlElement:t,width:t.videoWidth,height:t.videoHeight}}))}}Aa=new WeakMap,ja=new WeakMap,Fa=new WeakMap,Na=new WeakMap;class za extends ba{constructor(e){super(e),Ba.set(this,void 0),Ua.set(this,void 0),this.transformParams={},n(this,Ba,new Va({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return s(this,Ba,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===h.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||Vo}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return i(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}enableBlur(){return i(this,void 0,void 0,(function*(){try{n(this,Ua,this.mediaStreamTrack.clone(),"f");const e=yield s(this,Ba,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ea:Ta});yield this.replaceTrack(e),this.logger.info("enableBlur()",{track:this})}catch(e){throw this.logger.warn("enableBlur()",{track:this,error:e}),new Error("Can not enable virtual background")}}))}disableBlur(){return i(this,void 0,void 0,(function*(){try{if(!s(this,Ba,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!s(this,Ua,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});yield this.replaceTrack(s(this,Ua,"f")),s(this,Ba,"f").stopProcessing(),this.logger.info("disableBlur()",{track:this})}catch(e){throw this.logger.warn("disableBlur()",{track:this,error:e}),new Error("Can not disable virtual background")}}))}publish(e={}){var t;return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),transformParams:this.transformParams,codecOptions:this.getCodecOptions(),keyFrameRequestDelay:null!==(t=e.keyFrameRequestDelay)&&void 0!==t?t:0}),this.clientEventEmitter.emit(W,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield s(this,Ba,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ea:Ta});yield this.replaceTrack(e)}catch(e){this.logger.warn("watchOrientation()",{description:"Restart blur error after orientation change",error:e})}})))))}watchDocumentVisibility(){this.logger.debug("watchDocumentVisibility()",{description:"Watching started"}),window.addEventListener("visibilitychange",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{yield this.disableBlur(),yield this.enableBlur()}catch(e){this.logger.warn("watchDocumentVisibility()",{description:"Restart blur error after change document visibility",error:e})}}))))}}Ba=new WeakMap,Ua=new WeakMap;const $a=new class{sleepMs(e){return i(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Ga=(e,t={})=>i(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,s=t.minBackoffDelayMs||50;let n,o=0;for(;o<i;){o+=1;try{return yield e()}catch(e){if(n=e,t.logger&&t.logger.info("Action retry failed",{currentAttempt:o,actionName:t.actionName,error:e}),t.abortOnError&&t.abortOnError(e))throw n;if(o<i){const e=Math.pow(2,o-1)*s;yield $a.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Ha extends v{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Ja{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||Ve,this.system=s.createSystem({logLevel:this.logLevel,clientEventEmitter:t,onLogMessage:e.onLogMessage}),this.media=s.createMedia({logLevel:this.logLevel,engine:this,clientEventEmitter:t,mediaTracksFactory:i.mediaTracksFactory,onLogMessage:e.onLogMessage}),this.network=s.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer,onLogMessage:e.onLogMessage}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=s.createChannelEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.mediaSoupEventsHandler=s.createMediaSoupEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.channelAudioObserverEventHandler=s.createAudioObserverEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.logger=new Qe({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=e.disableWid?void 0:s.createIssueDetector({onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:[1234],logger:new Qe({logLevel:this.logLevel,namespace:"WID"})}),this.watchSocketState(),this.watchClientEvents()}initialize(){var e,t,r;return i(this,void 0,void 0,(function*(){try{const{rtpCapabilities:i}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(i),null===(e=this.webRtcIssueDetector)||void 0===e||e.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()",{sendTransportId:null===(t=this.network.sendTransport)||void 0===t?void 0:t.id,recvTransportId:null===(r=this.network.receiveTransport)||void 0===r?void 0:r.id})}catch(e){if(this.logger.error("initialize()",{error:e}),e instanceof m&&"device not supported"===e.message||e instanceof Error&&"RTCPeerConnection is not defined"===e.message)throw new y("Device not supported",y.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t;return i(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,null===(e=this.webRtcIssueDetector)||void 0===e||e.stopWatchingNewPeerConnections(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.close(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{var t;const{state:r,code:i,error:s}=e;this.clientEventEmitter.emit(r,{code:i,error:s});const n="unauthorized"===(null===(t=null==s?void 0:s.data)||void 0===t?void 0:t.errorCode);(r===ne.Error&&this.isJoined&&n||r===ne.Reconnected)&&this.clientEventEmitter.emit(A)}))}get activeSpeaker(){return this.activeSpeakerPeer}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}getPeerById(e){return this.peersRepository.get(e)}confirmActivity(){var e;return i(this,void 0,void 0,(function*(){if(!this.channel||this.isChannelJoining)throw new Error("Connect to the channel first");if(!(null===(e=this.network.socket.connection)||void 0===e?void 0:e.active))throw new Error("Socket is inactive");yield this.network.socket.request(C)}))}join(e){return i(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1}}))}loadPeers(e){return i(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(_,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=this.peersRepository.get(e.id);if(t)return t;const r=new qo(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(r.id,r),r}removePeer(e){const t=this.peersRepository.get(e);t&&(t.tracks.forEach((e=>e.close())),this.peersRepository.delete(e))}updateAppData(e){return i(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{Bo(e),yield this.network.updatePeerAppData({peerId:t.id,appData:e})}catch(e){throw this.logger.error("updateAppData()",{error:e}),new Error("Can not update peer appData")}}))}createCameraVideoTrack(e){return i(this,void 0,void 0,(function*(){const t=ra.getCameraVideoTrackParams(e);try{const[r]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});if(r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof za&&(r.setLabel(h.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(ra.getVideoTrackTransformParams(r.mediaStreamTrack)),null==e?void 0:e.blur))try{yield r.enableBlur()}catch(e){this.logger.warn("Failed to start virtual background, featured original track",{track:this})}return this.media.setTrack(r),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:r}),r}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return i(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:null==e?void 0:e.audio});if(t.setLabel(h.Microphone),t.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),"audio"===t.kind&&(null==e?void 0:e.noiseSuppression))try{yield t.enableNoiseSuppression()}catch(e){this.logger.warn("Failed to start noise suppression, featured original track",{track:this})}return this.media.setTrack(t),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return i(this,void 0,void 0,(function*(){const t=ra.getScreenVideoTrackParams(e);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:null==e?void 0:e.video});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{r.unpublish()})),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof za){r.setLabel(h.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=ra.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(h.ScreenAudio),(null==e?void 0:e.audioEncoderConfig)&&r.setEncoderConfig(e.audioEncoderConfig),this.media.setTrack(r),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,encoderConfig:null==e?void 0:e.audioEncoderConfig,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}get canUseNoiseSuppression(){return this.media.isNoiseSuppressorLoaded}setActiveSpeakerPeer(e){this.activeSpeaker!==e&&(this.activeSpeakerPeer=e,this.clientEventEmitter.safeEmit(U,{peer:e}))}connectToSocketServerWithRetry(e){return i(this,void 0,void 0,(function*(){return Ga((()=>i(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new Qe({namespace:"RetrySocketConnect",logLevel:this.logLevel}),abortOnError:e=>{var t;return"unauthorized"===(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.errorCode)}})}))}connectToSocketServer(e){return i(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t,e.token);try{yield this.waitForSocketConnection()}catch(r){throw this.logger.error("Failed to connect to socket server",{error:r,role:e.role,channelId:e.channelId,webSocketUrl:t}),this.network.socket.disconnect(),r}}))}getAvailableNode(e){return i(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const r=s=>i(this,void 0,void 0,(function*(){const{error:i,state:n}=s,o=()=>this.network.socket.observer.removeListener("state",r),a=[ne.Disconnected,ne.Reconnecting].includes(n);return i?(o(),void t(i)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[ne.Connected,ne.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on("state",r)}))}performJoin(e){return i(this,void 0,void 0,(function*(){try{const{appId:t,channelId:r}=yield this.sendJoinChannelRequestWithRetry(e);this.app=t,this.channel=r,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug("Successfully joined channel",{channelId:r}),yield this.createAudioObserver()}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return i(this,void 0,void 0,(function*(){return Ga((()=>i(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new Qe({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return i(this,void 0,void 0,(function*(){return this.network.socket.request(w,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}watchClientEvents(){this.clientEventEmitter.on(W,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(V,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close(),this.media.deleteTrack(e)})),this.clientEventEmitter.on(z,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.pause()})),this.clientEventEmitter.on($,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.resume()})),this.clientEventEmitter.on(G,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close()})),this.clientEventEmitter.on(H,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return i(this,void 0,void 0,(function*(){const r=this.peersRepository.get(this.mySocketId);if(!r)return;yield null===(t=r.tracks.get(e.getLabel()))||void 0===t?void 0:t.close();const i=new No({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,muted:!1,paused:e.isPaused,peerEventEmitter:r.observer});r.tracks.set(i.label,i)}))}createAudioObserver(){var e;return i(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Ha("Need to join first");const t={channelId:this.channelId,appId:this.appId,peerId:null===(e=this.myPeer)||void 0===e?void 0:e.id};try{const{producerId:e}=yield this.network.getAudioObserverProducer(),r=yield this.network.createDataConsumer({producerId:e,appId:this.appId,channelId:this.channelId});r.on("message",(e=>{this.channelAudioObserverEventHandler.handle(e)})),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}}var Ka,Qa,Xa;function Ya(){}function Za(){Za.init.call(this)}function ec(e){return void 0===e._maxListeners?Za.defaultMaxListeners:e._maxListeners}function tc(e,t,r){if(t)e.call(r);else for(var i=e.length,s=dc(e,i),n=0;n<i;++n)s[n].call(r)}function rc(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=dc(e,s),o=0;o<s;++o)n[o].call(r,i)}function ic(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=dc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function sc(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=dc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function nc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=dc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function oc(e,t,r,i){var s,n,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),o=n[t]):(n=e._events=new Ya,e._eventsCount=0),o){if("function"==typeof o?o=n[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(s=ec(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=n[t]=r,++e._eventsCount;return e}function ac(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function cc(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function dc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Ya.prototype=Object.create(null),Za.EventEmitter=Za,Za.usingDomains=!1,Za.prototype.domain=void 0,Za.prototype._events=void 0,Za.prototype._maxListeners=void 0,Za.defaultMaxListeners=10,Za.init=function(){this.domain=null,Za.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Ya,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Za.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Za.prototype.getMaxListeners=function(){return ec(this)},Za.prototype.emit=function(e){var t,r,i,s,n,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:tc(r,l,this);break;case 2:rc(r,l,this,arguments[1]);break;case 3:ic(r,l,this,arguments[1],arguments[2]);break;case 4:sc(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];nc(r,l,this,s)}return!0},Za.prototype.addListener=function(e,t){return oc(this,e,t,!1)},Za.prototype.on=Za.prototype.addListener,Za.prototype.prependListener=function(e,t){return oc(this,e,t,!0)},Za.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,ac(this,e,t)),this},Za.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,ac(this,e,t)),this},Za.prototype.removeListener=function(e,t){var r,i,s,n,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Ya:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){o=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Ya,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,o||t)}return this},Za.prototype.off=function(e,t){return this.removeListener(e,t)},Za.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Ya,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Ya:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Ya,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Za.prototype.listeners=function(e){var t,r=this._events;return r&&(t=r[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]},Za.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):cc.call(e,t)},Za.prototype.listenerCount=cc,Za.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class lc extends Za{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Ka||(Ka={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Qa||(Qa={})),function(e){e.OutboundNetworkQuality="outbound-network-quality",e.InboundNetworkQuality="inbound-network-quality",e.OutboundNetworkMediaLatency="outbound-network-media-latency",e.InboundNetworkMediaLatency="inbound-network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.UnknownVideoDecoderIssue="unknown-video-decoder",e.LowInboundMOS="low-inbound-mean-opinion-score",e.LowOutboundMOS="low-outbound-mean-opinion-score"}(Xa||(Xa={}));class pc extends Za{static STATS_REPORT_READY_EVENT="stats-report-ready";static STATS_REPORTS_PARSED="stats-reports-parsed";isStopped=!1;reportTimer;getStatsInterval;compositeStatsParser;constructor(e){super(),this.compositeStatsParser=e.compositeStatsParser,this.getStatsInterval=e.getStatsInterval??1e4}get isRunning(){return!!this.reportTimer&&!this.isStopped}startReporting(){if(this.reportTimer)return;const e=()=>setTimeout((()=>{this.isStopped?this.reportTimer=void 0:this.parseReports().finally((()=>{this.reportTimer=e()}))}),this.getStatsInterval);this.isStopped=!1,this.reportTimer=e()}stopReporting(){this.isStopped=!0,this.reportTimer&&(clearTimeout(this.reportTimer),this.reportTimer=void 0)}async parseReports(){const e=Date.now(),t=await this.compositeStatsParser.parse(),r=Date.now()-e;this.emit(pc.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(pc.STATS_REPORT_READY_EVENT,e)}))}}const uc=(()=>{const e=new Map;return t=>{const{taskId:r,delayMs:i,maxJitterMs:s,callback:n}=t,o=Math.ceil(Math.random()*(s||0)),a=e.get(r);a&&clearTimeout(a);const c=setTimeout((()=>{n(),e.delete(r)}),i+o);e.set(r,c)}})();class hc{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,uc({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:i}}calculateOutboundScore(e){const t=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.remote?.audio.inbound||[],...r.remote?.video.inbound||[]],{packetsSent:s}=e.connection,n=r.connection.packetsSent,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateInboundScore(e){const t=[...e.audio?.inbound,...e.video?.inbound];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.video?.inbound,...r.audio?.inbound],{packetsReceived:s}=e.connection,n=r.connection.packetsReceived,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateMOS({avgJitter:e,rtt:t,packetsLoss:r}){const i=t+2*e+10;let s=i<160?93.2-i/40:93.2-i/120-10;return s-=2.5*r,1+.035*s+7e-6*s*(s-60)*(100-s)}}class fc{#e;#t;constructor(e={}){this.#e=new Map,this.#t=e.statsCleanupTtlMs??35e3}detect(e){const t=this.performDetection(e);return this.performPrevStatsCleanup({connectionId:e.connection.id}),t}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;this.#e.has(t)&&uc({taskId:t,delayMs:this.#t,callback:()=>{this.deleteLastProcessedStats(t),"function"==typeof r&&r()}})}setLastProcessedStats(e,t){this.#e.set(e,t)}getLastProcessedStats(e){return this.#e.get(e)}deleteLastProcessedStats(e){this.#e.delete(e)}}class mc extends fc{#r;constructor(e={}){super(e),this.#r=e.availableOutgoingBitrateThreshold??1e5}performDetection(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);if(!i&&!s)return t;const n={availableOutgoingBitrate:r,videoStreamsTotalBitrate:s,audioStreamsTotalTargetBitrate:i};return i>r||s>0&&r<this.#r?(t.push({statsSample:n,type:Qa.Network,reason:Xa.OutboundNetworkThroughput}),t):t}}class gc extends fc{#i;constructor(e={}){super(e),this.#i=e.framesDroppedThreshold??.5}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.inbound.filter((e=>e.framesDropped>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const s=e.framesReceived-t.framesReceived,n=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped,a=o/s;if(0===s||0===n)return;const c={deltaFramesDropped:o,deltaFramesReceived:s,deltaFramesDecoded:n,framesDroppedPct:Math.round(100*a)};a>=this.#i&&r.push({statsSample:c,type:Qa.CPU,reason:Xa.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class vc extends fc{#s;constructor(e={}){super(e),this.#s=e.missedFramesThreshold??.15}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>e.framesEncoded>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const s=e.framesEncoded-t.framesEncoded,n=e.framesSent-t.framesSent,o=1-n/s;if(0===s)return;if(s===n)return;const a={deltaFramesSent:n,deltaFramesEncoded:s,missedFramesPct:Math.round(100*o)};o>=this.#s&&r.push({statsSample:a,type:Qa.Network,reason:Xa.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class yc extends fc{highPacketLossThresholdPct;highJitterThreshold;highJitterBufferDelayThresholdMs;highRttThresholdMs;constructor(e={}){super(),this.highPacketLossThresholdPct=e.highPacketLossThresholdPct??5,this.highJitterThreshold=e.highJitterThreshold??200,this.highJitterBufferDelayThresholdMs=e.highJitterBufferDelayThresholdMs??500,this.highRttThresholdMs=e.highRttThresholdMs??250}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.audio?.inbound,...e.video?.inbound];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.video?.inbound,...i.audio?.inbound],{packetsReceived:n}=e.connection,o=i.connection.packetsReceived,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc)),i=r?.jitterBufferDelay||0,n=r?.jitterBufferEmittedCount||0,o=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,c=o&&a?1e3*o/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+c,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d,sumJitterBufferDelayMs:l}=a,p=d/r.length,u=l/r.length,h=n-o,f=a.packetsLost-a.lastPacketsLost,m=h&&f?Math.round(100*f/(h+f)):0,g=m>this.highPacketLossThresholdPct,v=p>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,k={rtt:c,packetLossPct:m,avgJitter:p,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:k,type:Qa.Network,reason:Xa.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:k,type:Qa.Server,reason:Xa.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:k,type:Qa.Network,reason:Xa.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:k,type:Qa.Network,reason:Xa.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class bc extends fc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.audio.inbound,r=[],i=this.getLastProcessedStats(e.connection.id)?.audio.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,n=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(s===n)return;const o=e.track.totalSamplesReceived-t.track.totalSamplesReceived,a=s-n,c=Math.round(100*a/o),d={correctedSamplesPct:c};c>5&&r.push({statsSample:d,type:Qa.Network,reason:Xa.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class wc extends fc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.remote?.audio.inbound||[],...i.remote?.video.inbound||[]],{packetsSent:n}=e.connection,o=i.connection.packetsSent,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d}=a,l=d/r.length,p=n-o,u=a.packetsLost-a.lastPacketsLost,h=p&&u?Math.round(100*u/(p+u)):0,f=h>5,m=l>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:l,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Qa.Network,reason:Xa.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Qa.Network,reason:Xa.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class _c extends fc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s={qualityLimitationReason:e.qualityLimitationReason};e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&r.push({statsSample:s,type:Qa.CPU,reason:Xa.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Qa.Network,reason:Xa.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class Sc extends fc{UNKNOWN_DECODER="unknown";#n={};performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;super.performPrevStatsCleanup({...e,cleanupCallback:()=>{delete this.#n[t],"function"==typeof r&&r()}})}processData(e){const t=[],{id:r}=e.connection,i=this.getLastProcessedStats(r)?.video.inbound;return e.video.inbound.forEach((e=>{const{decoderImplementation:s,ssrc:n}=e,o=i?.find((e=>e.ssrc===n));if(o)if(s===this.UNKNOWN_DECODER){if(!this.hadLastDecoderWithIssue(r,n)){this.setLastDecoderWithIssue(r,n,this.UNKNOWN_DECODER);const i={mimeType:e.mimeType,decoderImplementation:s};t.push({ssrc:n,statsSample:i,type:Qa.Stream,reason:Xa.UnknownVideoDecoderIssue,trackIdentifier:e.track.trackIdentifier})}}else this.setLastDecoderWithIssue(r,n,void 0)})),t}setLastDecoderWithIssue(e,t,r){const i=this.#n[e]??{};void 0===r?delete i[t]:i[t]=r,this.#n[e]=i}hadLastDecoderWithIssue(e,t){const r=this.#n[e];return(r&&r[t])===this.UNKNOWN_DECODER}}const kc=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,Cc=(e,t,r)=>8*((e,t,r)=>{if(!t)return 0;const i=e[r],s=t[r];if(null==i||null==s)return 0;const n=Math.floor(e.timestamp)-Math.floor(t.timestamp);return 0===n?0:(Number(i)-Number(s))/n*1e3})(e,t,r);class Rc{connections=[];statsParser;constructor(e){this.statsParser=e.statsParser}listConnections(){return[...this.connections]}addPeerConnection(e){this.connections.push({id:e.id??String(Date.now()+Math.random().toString(32)),pc:e.pc})}removePeerConnection(e){const t=this.connections.findIndex((({pc:t})=>t===e.pc));t>=0&&this.removeConnectionsByIndexes([t])}async parse(){const e=[],t=this.connections.map((async(t,r)=>{if(!kc(t.pc))return this.statsParser.parse(t);e.unshift(r)}));return e.length&&this.removeConnectionsByIndexes(e),(await Promise.all(t)).filter((e=>void 0!==e))}removeConnectionsByIndexes(e){e.forEach((e=>{this.connections.splice(e,1)}))}}class Pc{prevStats=new Map;allowedReportTypes=new Set(["candidate-pair","inbound-rtp","outbound-rtp","remote-outbound-rtp","remote-inbound-rtp","track","transport"]);logger;constructor(e){this.logger=e.logger}get previouslyParsedStatsConnectionsIds(){return[...this.prevStats.keys()]}async parse(e){if(!kc(e.pc))return this.getConnectionStats(e);this.logger.debug("Skip stats parsing. Connection is closed.",{connection:e})}async getConnectionStats(e){const{pc:t,id:r}=e;try{const i=Date.now(),s=await Promise.all(t.getReceivers().map((e=>e.getStats()))),n=await Promise.all(t.getSenders().map((e=>e.getStats())));return{id:r,stats:this.mapReportsStats([...s,...n],e),timeTaken:Date.now()-i}}catch(e){return void this.logger.error("Failed to get stats for PC",{id:r,pc:t,error:e})}}mapReportsStats(e,t){const r={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{},remote:{video:{inbound:[],outbound:[]},audio:{inbound:[],outbound:[]}}};e.forEach((e=>{e.forEach((t=>{this.allowedReportTypes.has(t.type)&&this.updateMappedStatsWithReportItemData(t,r,e)}))}));const{id:i}=t,s=this.prevStats.get(i);return s&&this.propagateStatsWithRateValues(r,s.stats),this.prevStats.set(i,{stats:r,ts:Date.now()}),uc({taskId:i,delayMs:35e3,callback:()=>this.prevStats.delete(i)}),r}updateMappedStatsWithReportItemData(e,t,r){const i=e.type;if("candidate-pair"===i&&"succeeded"===e.state&&e.nominated)return void(t.connection=this.prepareConnectionStats(e,r));const s=this.getMediaType(e);if(s)if("outbound-rtp"!==i)if("inbound-rtp"!==i)"remote-outbound-rtp"!==i?"remote-inbound-rtp"===i&&(this.mapConnectionStatsIfNecessary(t,e,r),t.remote[s].inbound.push({...e})):t.remote[s].outbound.push({...e});else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{};this.mapConnectionStatsIfNecessary(t,e,r);const n={...e,track:{...i}};t[s].inbound.push(n)}else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{},n={...e,track:{...i}};t[s].outbound.push(n)}}getMediaType(e){const t=e.mediaType||e.kind;if(!["audio","video"].includes(t)){const{id:t}=e;if(!t)return;return String(t).includes("Video")?"video":String(t).includes("Audio")?"audio":void 0}return t}propagateStatsWithRateValues(e,t){e.audio.inbound.forEach((e=>{const r=t.audio.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")}))}mapConnectionStatsIfNecessary(e,t,r){if(e.connection.id||!t.transportId)return;const i=r.get(t.transportId);if(i&&i.selectedCandidatePairId){const t=r.get(i.selectedCandidatePairId);e.connection=this.prepareConnectionStats(t,r)}}prepareConnectionStats(e,t){if(!e||!t)return{};const r={...e};if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}return r}}class Tc{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new lc,e.onIssues&&this.eventEmitter.on(Ka.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Ka.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new _c,new gc,new vc,new yc,new wc,new bc,new mc,new Sc],this.networkScoresCalculator=e.networkScoresCalculator??new hc,this.compositeStatsParser=e.compositeStatsParser??new Rc({statsParser:new Pc({logger:this.logger})}),this.statsReporter=e.statsReporter??new pc({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(pc.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(pc.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Ka.StatsParsingFinished,t)}))}watchNewPeerConnections(){this.#o?this.logger.warn("WebRTCIssueDetector is already started. Skip processing"):(this.logger.info("Start watching peer connections"),this.#o=!0,this.statsReporter.startReporting())}stopWatchingNewPeerConnections(){this.#o?(this.logger.info("Stop watching peer connections"),this.#o=!1,this.statsReporter.stopReporting()):this.logger.warn("WebRTCIssueDetector is already stopped. Skip processing")}handleNewPeerConnection(e){this.#o?(this.logger.debug("Handling new peer connection",e),this.compositeStatsParser.addPeerConnection({pc:e})):this.logger.debug("Skip handling new peer connection. Detector is not running",e)}emitIssues(e){this.eventEmitter.emit(Ka.Issue,e)}detectIssues({data:e,ignoreSSRCList:t}){let r=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t?.length&&(r=r.filter((e=>!e.ssrc||!t.includes(e.ssrc)))),r.length>0&&this.emitIssues(r)}calculateNetworkScores(e){const t=this.networkScoresCalculator.calculate(e);this.eventEmitter.emit(Ka.NetworkScoresUpdated,t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return void this.logger.warn("No RTCPeerConnection found in browser window. Skipping");const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}class Ec{constructor(e){const{socketClient:t,loadBalancerApiClient:r,onLogMessage:i}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new Qe({namespace:"Network",logLevel:e.logLevel,onLogMessage:i})}closeRemoteProducer(e){return i(this,void 0,void 0,(function*(){yield this.socket.request(ae,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return i(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return i(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return i(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(Pe,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return i(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(Re,{sctpCapabilities:e.sctpCapabilities,localDirection:"send"}),r=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:this.sendTransport}),r.on(Le,(({dtlsParameters:e},s,n)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:r.id,dtlsRole:e.role})}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),r.on(Ie,((e,t,s)=>i(this,void 0,void 0,(function*(){try{const{id:i}=yield this.socket.request(Ee,{transportId:r.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:i}),this.logger.debug("sendTransport.produce()",{producerId:i,transportId:r.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:r.id,kind:e.kind}),s(t)}})))),r.on(xe,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.warn("sendTransport.restartIce()",{state:e,sendTransportId:r.id})),setTimeout((()=>{var e;"disconnected"===r.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("sendTransport is closed before websocket is closed",{sendTransportId:r.id})}),3e3)})),this.sendTransport=r}))}createRecvTransport(e){return i(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createReceiveTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(Re,{localDirection:"receive"}),r=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:this.receiveTransport}),r.on(Le,(({dtlsParameters:e},t,s)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:r.id,dtlsRole:e.role})}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),r.on(xe,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.debug("receiveTransport.restartIce()",{recvTransportId:r.id})),setTimeout((()=>{var e;"disconnected"===r.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("receiveTransport is closed before websocket is closed",{recvTransportId:r.id})}),3e3)})),this.receiveTransport=r}))}getIceParameters(e){return i(this,void 0,void 0,(function*(){const t=yield this.socket.request(Me,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return i(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.debug("restartIce() completed",{iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:r,channelId:s,producerPeerId:n}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createConsumer()",{producerId:e});const o=yield this.socket.request(ge,{producerId:e,transportId:i.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:r,channelId:s},producerPeerId:n}),a=yield i.consume(o),{producerPaused:c}=o;return this.logger.debug("Consumer created",{consumer:a,isProducerPaused:c}),{consumer:a,isProducerPaused:c}}))}createDataConsumer({producerId:e,appId:t,channelId:r}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createDataConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createDataConsumer()",{producerId:e});const s=yield this.socket.request(ve,{dataProducerId:e,transportId:i.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:r}}),n=yield i.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(ye,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(we,{consumerId:e})}))}pauseRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(be,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return i(this,void 0,void 0,(function*(){return this.socket.request(k,{peerId:e,appData:t})}))}getAudioObserverProducer(){return i(this,void 0,void 0,(function*(){return this.socket.request(E)}))}getTransportsStateInfo(){return i(this,void 0,void 0,(function*(){const[e,t]=yield Promise.all([this.getParsedTransportStats(this.receiveTransport),this.getParsedTransportStats(this.sendTransport)]);return{receive:e,send:t}}))}getParsedTransportStats(e){return i(this,void 0,void 0,(function*(){if(e)try{const t=Array.from((yield e.getStats()).values()),r=t.find((e=>"local-candidate"===e.type)),i=t.find((e=>"remote-candidate"===e.type)),s=t.find((e=>"transport"===e.type));return{dtlsState:null==s?void 0:s.dtlsState,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,iceRole:null==s?void 0:s.iceRole,selectedCandidatePairChanges:null==s?void 0:s.selectedCandidatePairChanges,tlsVersion:null==s?void 0:s.tlsVersion,localCandidateState:{ip:null==r?void 0:r.ip,address:null==r?void 0:r.address,port:null==r?void 0:r.port,protocol:null==r?void 0:r.protocol,candidateType:null==r?void 0:r.candidateType},remoteCandidateState:{ip:null==i?void 0:i.ip,address:null==i?void 0:i.address,port:null==i?void 0:i.port,protocol:null==i?void 0:i.protocol,candidateType:null==i?void 0:i.candidateType}}}catch(e){return void this.logger.warn("getParsedTransportStats()",{error:e})}else this.logger.debug("getParsedTransportStats()",{message:"Transport is missing"})}))}}const Dc=e=>![f.NotFoundError,f.NotAllowedError,f.DeviceIsBusy].includes(e);class xc{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[];const{clientEventEmitter:t,logLevel:r,onLogMessage:i}=e;this.clientEventEmitter=t,this.logger=new Qe({namespace:"System",logLevel:r,onLogMessage:i}),this.deviceChangeHandler=this.deviceChangeHandler.bind(this),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{return(yield navigator.mediaDevices.getUserMedia(e)).getTracks()}catch(t){if(this.logger.error("getUserMedia()",{error:t,constraints:e}),"NotAllowedError"===t.name)throw new Error(f.NotAllowedError);if("NotReadableError"===t.name)throw new Error(f.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(f.NotFoundError);throw new Error(f.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return i(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r);const i=({label:e,kind:t})=>({label:e,kind:t});return this.logger.debug("Devices list updated",{videoDevices:t.map(i),audioDevices:r.map(i)}),e}))}detectDevices(){return i(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Dc(e.message))throw e;e.message!==f.DeviceIsBusy&&(yield this.assertHasAccessToMediaDevices({audio:!0}),yield this.assertHasAccessToMediaDevices({video:!0}))}this.isDevicesDetected=!0;const t=yield this.refreshAvailableMediaDevicesList();e.forEach((e=>e.stop()));const r=t.some((e=>"audioinput"===e.kind)),i=t.some((e=>"videoinput"===e.kind));if(!r&&!i)throw new Error(f.NoDevices)}))}deviceChangeHandler(){return i(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(j,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Dc(e.message))throw e}}))}}class Mc{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Qe({logLevel:t.logLevel,namespace:"ChannelEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(b,(e=>{this.engine.clientEventEmitter.safeEmit(D,e),this.logger.debug("New channel event",{event:e})})),e.on(w,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(x,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(S,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(M,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(P,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(T,(e=>{this.engine.clientEventEmitter.safeEmit(O,e),this.logger.info("Notify the channel that it has disconnected due to the activity confirmation expiring",e)})),e.on(R,(e=>{this.engine.clientEventEmitter.safeEmit(I,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(k,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(k,t)}))}}class Lc{constructor(e){this.queue=new Fo;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Qe({logLevel:t.logLevel,namespace:"MediasoupEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(ae,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ae,e)})),e.on(oe,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(oe,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ye,e)})),e.on(we,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(we,e)})),e.on(be,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(be,e)})),e.on(Se,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(Se,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(_e,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(_e,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(_e,e)})),e.on(he,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(he,e)})),e.on(me,(({producerId:e,spatialLayer:t})=>i(this,void 0,void 0,(function*(){yield this.queue.push((()=>i(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),me)})))),e.on(fe,(({peerId:e,producerId:t,spatialLayer:r})=>i(this,void 0,void 0,(function*(){const i=this.engine.peers.find((t=>t.id===e));i&&!i.isMe&&i.observer.safeEmit(fe,{peerId:e,producerId:t,spatialLayer:r})})))),e.on(De,(({reason:e,transportId:t,direction:r,timeout:s})=>i(this,void 0,void 0,(function*(){const i=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));i&&"connected"!==i.connectionState&&(this.logger.warn(De,{reason:e,transportId:t,direction:r,timeout:s}),this.engine.clientEventEmitter.emit(F,{direction:r,reason:e}))})))),e.on(le,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!0,r.observer.safeEmit(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!1,r.observer.safeEmit(X,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(ue,(({label:e})=>i(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit(G,t),this.engine.clientEventEmitter.emit(B,{label:e}),yield this.engine.media.deleteTrack(t))}))))}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return i(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof za))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(fe,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}var Ic=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oc=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Ac=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,o=Ic.exec(e||""),a={},c=14;c--;)a[Oc[c]]=o[c]||"";return-1!=r&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,a.path),a.queryKey=(s=a.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),a};var jc={exports:{}};try{jc.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){jc.exports=!1}var Fc=jc.exports,Nc="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Bc(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Fc))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Nc[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Uc(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const qc=setTimeout,Wc=clearTimeout;function Vc(e,t){t.useNativeTimers?(e.setTimeoutFn=qc.bind(Nc),e.clearTimeoutFn=Wc.bind(Nc)):(e.setTimeoutFn=setTimeout.bind(Nc),e.clearTimeoutFn=clearTimeout.bind(Nc))}var zc=$c;function $c(e){if(e)return function(e){for(var t in $c.prototype)e[t]=$c.prototype[t];return e}(e)}$c.prototype.on=$c.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},$c.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},$c.prototype.off=$c.prototype.removeListener=$c.prototype.removeAllListeners=$c.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},$c.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},$c.prototype.emitReserved=$c.prototype.emit,$c.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},$c.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Gc=Object.create(null);Gc.open="0",Gc.close="1",Gc.ping="2",Gc.pong="3",Gc.message="4",Gc.upgrade="5",Gc.noop="6";const Hc=Object.create(null);Object.keys(Gc).forEach((e=>{Hc[Gc[e]]=e}));const Jc={type:"error",data:"parser error"},Kc="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Qc="function"==typeof ArrayBuffer,Xc=({type:e,data:t},r,i)=>{return Kc&&t instanceof Blob?r?i(t):Yc(t,i):Qc&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):Yc(new Blob([t]),i):i(Gc[e]+(t||""));var s},Yc=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var Zc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ed="undefined"==typeof Uint8Array?[]:new Uint8Array(256),td=0;td<Zc.length;td++)ed[Zc.charCodeAt(td)]=td;const rd="function"==typeof ArrayBuffer,id=(e,t)=>{if("string"!=typeof e)return{type:"message",data:nd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:sd(e.substring(1),t)};return Hc[r]?e.length>1?{type:Hc[r],data:e.substring(1)}:{type:Hc[r]}:Jc},sd=(e,t)=>{if(rd){const r=function(e){var t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=ed[e.charCodeAt(t)],i=ed[e.charCodeAt(t+1)],s=ed[e.charCodeAt(t+2)],n=ed[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d}(e);return nd(r,t)}return{base64:!0,data:e}},nd=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,od=String.fromCharCode(30);class ad extends zc{constructor(e){super(),this.writable=!1,Vc(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=id(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var cd,dd="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),ld={},pd=0,ud=0;function hd(e){var t="";do{t=dd[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function fd(){var e=hd(+new Date);return e!==cd?(pd=0,cd=e):e+"."+hd(pd++)}for(;ud<64;ud++)ld[dd[ud]]=ud;fd.encode=hd,fd.decode=function(e){var t=0;for(ud=0;ud<e.length;ud++)t=64*t+ld[e.charAt(ud)];return t};var md=fd,gd={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class vd extends ad{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(od),i=[];for(let e=0;e<r.length;e++){const s=id(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Xc(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(od))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=md()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=gd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function yd(){}const bd=null!=new Bc({xdomain:!1}).responseType;class wd extends zc{constructor(e,t){super(),Vc(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=Uc(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Bc(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=wd.requestsCount++,wd.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=yd,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete wd.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(wd.requestsCount=0,wd.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",_d);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Nc?"pagehide":"unload",_d,!1)}function _d(){for(let e in wd.requests)wd.requests.hasOwnProperty(e)&&wd.requests[e].abort()}const Sd="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),kd=Nc.WebSocket||Nc.MozWebSocket,Cd="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Rd extends ad{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Cd?{}:Uc(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Cd?new kd(e,t,r):t?new kd(e,t):new kd(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Xc(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Sd((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=md()),this.supportsBinary||(e.b64=1);const i=gd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!kd||"__initialize"in kd&&this.name===Rd.prototype.name)}}const Pd={websocket:Rd,polling:class extends vd{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=bd&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new wd(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class Td extends zc{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Ac(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Ac(t.host).host),Vc(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=gd.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new Pd[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Td.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;Td.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Td.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function o(){n("transport closed")}function a(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",o),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Td.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Td.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Td.protocol=4,Td.protocol;const Ed="function"==typeof ArrayBuffer,Dd=Object.prototype.toString,xd="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Dd.call(Blob),Md="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Dd.call(File);function Ld(e){return Ed&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||xd&&e instanceof Blob||Md&&e instanceof File}function Id(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Id(e[t]))return!0;return!1}if(Ld(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Id(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Id(e[t]))return!0;return!1}function Od(e){const t=[],r=e.data,i=e;return i.data=Ad(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Ad(e,t){if(!e)return e;if(Ld(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Ad(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Ad(e[i],t));return r}return e}function jd(e,t){return e.data=Fd(e.data,t),e.attachments=void 0,e}function Fd(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Fd(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=Fd(e[r],t));return e}var Nd;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Nd||(Nd={}));class Bd extends zc{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Nd.BINARY_EVENT||t.type===Nd.BINARY_ACK?(this.reconstructor=new Ud(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Ld(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Nd[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Nd.BINARY_EVENT||r.type===Nd.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Bd.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Nd.CONNECT:return"object"==typeof t;case Nd.DISCONNECT:return void 0===t;case Nd.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Nd.EVENT:case Nd.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Nd.ACK:case Nd.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class Ud{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=jd(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var qd=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Nd},Encoder:class{encode(e){return e.type!==Nd.EVENT&&e.type!==Nd.ACK||!Id(e)?[this.encodeAsString(e)]:(e.type=e.type===Nd.EVENT?Nd.BINARY_EVENT:Nd.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Nd.BINARY_EVENT&&e.type!==Nd.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Od(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Bd});function Wd(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Vd=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class zd extends zc{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Wd(e,"open",this.onopen.bind(this)),Wd(e,"packet",this.onpacket.bind(this)),Wd(e,"error",this.onerror.bind(this)),Wd(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Vd.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Nd.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Nd.CONNECT,data:e})})):this.packet({type:Nd.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Nd.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Nd.EVENT:case Nd.BINARY_EVENT:this.onevent(e);break;case Nd.ACK:case Nd.BINARY_ACK:this.onack(e);break;case Nd.DISCONNECT:this.ondisconnect();break;case Nd.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Nd.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Nd.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var $d=Gd;function Gd(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Gd.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Gd.prototype.reset=function(){this.attempts=0},Gd.prototype.setMin=function(e){this.ms=e},Gd.prototype.setMax=function(e){this.max=e},Gd.prototype.setJitter=function(e){this.jitter=e};class Hd extends zc{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Vc(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new $d({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||qd;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Td(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Wd(t,"open",(function(){r.onopen(),e&&e()})),s=Wd(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Wd(e,"ping",this.onping.bind(this)),Wd(e,"data",this.ondata.bind(this)),Wd(e,"error",this.onerror.bind(this)),Wd(e,"close",this.onclose.bind(this)),Wd(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new zd(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Jd={};function Kd(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Ac(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,o=Jd[s]&&n in Jd[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Hd(i,t):(Jd[s]||(Jd[s]=new Hd(i,t)),a=Jd[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}class Qd{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new o,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new Qe({namespace:"Socket",logLevel:e.logLevel,onLogMessage:e.onLogMessage})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e,t){const r=Kd(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on("connect",(()=>{const e=this.reconnectingAttempt?ne.Reconnected:ne.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:e})})),r.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",{error:e}),this.observer.safeEmit("state",{state:ne.Error,error:e})})),r.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",{reason:e}),this.observer.safeEmit("state",{state:ne.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",{attempt:e}),this.observer.safeEmit("state",{state:ne.Reconnecting})})),r.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:ne.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(s=>{s.error?(this.logger.error("request()",{event:e,payload:t,response:s}),i(s.error)):r(s)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var Xd={exports:{}},Yd=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},Zd=Yd,el=Object.prototype.toString;function tl(e){return"[object Array]"===el.call(e)}function rl(e){return void 0===e}function il(e){return null!==e&&"object"==typeof e}function sl(e){if("[object Object]"!==el.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function nl(e){return"[object Function]"===el.call(e)}function ol(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),tl(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var al={isArray:tl,isArrayBuffer:function(e){return"[object ArrayBuffer]"===el.call(e)},isBuffer:function(e){return null!==e&&!rl(e)&&null!==e.constructor&&!rl(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:il,isPlainObject:sl,isUndefined:rl,isDate:function(e){return"[object Date]"===el.call(e)},isFile:function(e){return"[object File]"===el.call(e)},isBlob:function(e){return"[object Blob]"===el.call(e)},isFunction:nl,isStream:function(e){return il(e)&&nl(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:ol,merge:function e(){var t={};function r(r,i){sl(t[i])&&sl(r)?t[i]=e(t[i],r):sl(r)?t[i]=e({},r):tl(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)ol(arguments[i],r);return t},extend:function(e,t,r){return ol(t,(function(t,i){e[i]=r&&"function"==typeof t?Zd(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},cl=al;function dl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var ll=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(cl.isURLSearchParams(t))i=t.toString();else{var s=[];cl.forEach(t,(function(e,t){null!=e&&(cl.isArray(e)?t+="[]":e=[e],cl.forEach(e,(function(e){cl.isDate(e)?e=e.toISOString():cl.isObject(e)&&(e=JSON.stringify(e)),s.push(dl(t)+"="+dl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},pl=al;function ul(){this.handlers=[]}ul.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},ul.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},ul.prototype.forEach=function(e){pl.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var hl=ul,fl=al,ml=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},gl=ml,vl=function(e,t,r,i,s){var n=new Error(e);return gl(n,t,r,i,s)},yl=vl,bl=al,wl=bl.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),bl.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),bl.isString(i)&&o.push("path="+i),bl.isString(s)&&o.push("domain="+s),!0===n&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},_l=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},Sl=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},kl=al,Cl=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Rl=al,Pl=Rl.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Rl.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Tl=al,El=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(yl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Dl=wl,xl=ll,Ml=function(e,t){return e&&!_l(t)?Sl(e,t):t},Ll=function(e){var t,r,i,s={};return e?(kl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=kl.trim(e.substr(0,i)).toLowerCase(),r=kl.trim(e.substr(i+1)),t){if(s[t]&&Cl.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Il=Pl,Ol=vl,Al=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Tl.isFormData(i)&&delete s["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(a+":"+c)}var d=Ml(e.baseURL,e.url);function l(){if(o){var i="getAllResponseHeaders"in o?Ll(o.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:i,config:e,request:o};El(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),xl(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=l:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(l)},o.onabort=function(){o&&(r(Ol("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Ol("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Ol(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Tl.isStandardBrowserEnv()){var p=(e.withCredentials||Il(d))&&e.xsrfCookieName?Dl.read(e.xsrfCookieName):void 0;p&&(s[e.xsrfHeaderName]=p)}"setRequestHeader"in o&&Tl.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Tl.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),n&&"json"!==n&&(o.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),r(e),o=null)})),i||(i=null),o.send(i)}))},jl=al,Fl=function(e,t){fl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Nl=ml,Bl={"Content-Type":"application/x-www-form-urlencoded"};function Ul(e,t){!jl.isUndefined(e)&&jl.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var ql,Wl={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(ql=Al),ql),transformRequest:[function(e,t){return Fl(t,"Accept"),Fl(t,"Content-Type"),jl.isFormData(e)||jl.isArrayBuffer(e)||jl.isBuffer(e)||jl.isStream(e)||jl.isFile(e)||jl.isBlob(e)?e:jl.isArrayBufferView(e)?e.buffer:jl.isURLSearchParams(e)?(Ul(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):jl.isObject(e)||t&&"application/json"===t["Content-Type"]?(Ul(t,"application/json"),function(e,t,r){if(jl.isString(e))try{return(t||JSON.parse)(e),jl.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&jl.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Nl(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};Wl.headers={common:{Accept:"application/json, text/plain, */*"}},jl.forEach(["delete","get","head"],(function(e){Wl.headers[e]={}})),jl.forEach(["post","put","patch"],(function(e){Wl.headers[e]=jl.merge(Bl)}));var Vl=Wl,zl=al,$l=Vl,Gl=function(e){return!(!e||!e.__CANCEL__)},Hl=al,Jl=function(e,t,r){var i=this||$l;return zl.forEach(r,(function(r){e=r.call(i,e,t)})),e},Kl=Gl,Ql=Vl;function Xl(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Yl=al,Zl=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],o=["validateStatus"];function a(e,t){return Yl.isPlainObject(e)&&Yl.isPlainObject(t)?Yl.merge(e,t):Yl.isPlainObject(t)?Yl.merge({},t):Yl.isArray(t)?t.slice():t}function c(i){Yl.isUndefined(t[i])?Yl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}Yl.forEach(i,(function(e){Yl.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),Yl.forEach(s,c),Yl.forEach(n,(function(i){Yl.isUndefined(t[i])?Yl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),Yl.forEach(o,(function(i){i in t?r[i]=a(e[i],t[i]):i in e&&(r[i]=a(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(o),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Yl.forEach(l,c),r},ep={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},tp={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){tp[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var rp={},ip=ep.version.split(".");function sp(e,t){for(var r=t?t.split("."):ip,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}tp.transitional=function(e,t,r){var i=t&&sp(t);function s(e,t){return"[Axios v"+ep.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,o){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!rp[n]&&(rp[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}};var np={isOlderVersion:sp,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],o=t[n];if(o){var a=e[n],c=void 0===a||o(a,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:tp},op=al,ap=ll,cp=hl,dp=function(e){return Xl(e),e.headers=e.headers||{},e.data=Jl.call(e,e.data,e.headers,e.transformRequest),e.headers=Hl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Hl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Ql.adapter)(e).then((function(t){return Xl(e),t.data=Jl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Kl(t)||(Xl(e),t&&t.response&&(t.response.data=Jl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},lp=Zl,pp=np,up=pp.validators;function hp(e){this.defaults=e,this.interceptors={request:new cp,response:new cp}}hp.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=lp(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&pp.assertOptions(t,{silentJSONParsing:up.transitional(up.boolean,"1.0.0"),forcedJSONParsing:up.transitional(up.boolean,"1.0.0"),clarifyTimeoutError:up.transitional(up.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var o=[dp,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(n),s=Promise.resolve(e);o.length;)s=s.then(o.shift(),o.shift());return s}for(var a=e;r.length;){var c=r.shift(),d=r.shift();try{a=c(a)}catch(e){d(e);break}}try{s=dp(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},hp.prototype.getUri=function(e){return e=lp(this.defaults,e),ap(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},op.forEach(["delete","get","head","options"],(function(e){hp.prototype[e]=function(t,r){return this.request(lp(r||{},{method:e,url:t,data:(r||{}).data}))}})),op.forEach(["post","put","patch"],(function(e){hp.prototype[e]=function(t,r,i){return this.request(lp(i||{},{method:e,url:t,data:r}))}}));var fp=hp;function mp(e){this.message=e}mp.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},mp.prototype.__CANCEL__=!0;var gp=mp,vp=gp;function yp(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new vp(e),t(r.reason))}))}yp.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},yp.source=function(){var e,t=new yp((function(t){e=t}));return{token:t,cancel:e}};var bp=yp,wp=al,_p=Yd,Sp=fp,kp=Zl;function Cp(e){var t=new Sp(e),r=_p(Sp.prototype.request,t);return wp.extend(r,Sp.prototype,t),wp.extend(r,t),r}var Rp=Cp(Vl);Rp.Axios=Sp,Rp.create=function(e){return Cp(kp(Rp.defaults,e))},Rp.Cancel=gp,Rp.CancelToken=bp,Rp.isCancel=Gl,Rp.all=function(e){return Promise.all(e)},Rp.spread=function(e){return function(t){return e.apply(null,t)}},Rp.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Xd.exports=Rp,Xd.exports.default=Rp;var Pp=Xd.exports,Tp="undefined"!=typeof Symbol&&Symbol,Ep=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},Dp="Function.prototype.bind called on incompatible ",xp=Array.prototype.slice,Mp=Object.prototype.toString,Lp=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Mp.call(t))throw new TypeError(Dp+t);for(var r,i=xp.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(xp.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(xp.call(arguments)))},n=Math.max(0,t.length-i.length),o=[],a=0;a<n;a++)o.push("$"+a);if(r=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Ip=Function.prototype.bind||Lp,Op=Ip.call(Function.call,Object.prototype.hasOwnProperty),Ap=SyntaxError,jp=Function,Fp=TypeError,Np=function(e){try{return jp('"use strict"; return ('+e+").constructor;")()}catch(e){}},Bp=Object.getOwnPropertyDescriptor;if(Bp)try{Bp({},"")}catch(Qa){Bp=null}var Up=function(){throw new Fp},qp=Bp?function(){try{return Up}catch(e){try{return Bp(arguments,"callee").get}catch(e){return Up}}}():Up,Wp="function"==typeof Tp&&"function"==typeof Symbol&&"symbol"==typeof Tp("foo")&&"symbol"==typeof Symbol("bar")&&Ep(),Vp=Object.getPrototypeOf||function(e){return e.__proto__},zp={},$p="undefined"==typeof Uint8Array?undefined:Vp(Uint8Array),Gp={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Wp?Vp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":zp,"%AsyncGenerator%":zp,"%AsyncGeneratorFunction%":zp,"%AsyncIteratorPrototype%":zp,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":jp,"%GeneratorFunction%":zp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Wp?Vp(Vp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Wp?Vp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&Wp?Vp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Wp?Vp(""[Symbol.iterator]()):undefined,"%Symbol%":Wp?Symbol:undefined,"%SyntaxError%":Ap,"%ThrowTypeError%":qp,"%TypedArray%":$p,"%TypeError%":Fp,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Hp=function e(t){var r;if("%AsyncFunction%"===t)r=Np("async function () {}");else if("%GeneratorFunction%"===t)r=Np("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Np("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Vp(s.prototype))}return Gp[t]=r,r},Jp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Kp=Ip,Qp=Op,Xp=Kp.call(Function.call,Array.prototype.concat),Yp=Kp.call(Function.apply,Array.prototype.splice),Zp=Kp.call(Function.call,String.prototype.replace),eu=Kp.call(Function.call,String.prototype.slice),tu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ru=/\\(\\)?/g,iu=function(e){var t=eu(e,0,1),r=eu(e,-1);if("%"===t&&"%"!==r)throw new Ap("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Ap("invalid intrinsic syntax, expected opening `%`");var i=[];return Zp(e,tu,(function(e,t,r,s){i[i.length]=r?Zp(s,ru,"$1"):t||e})),i},su=function(e,t){var r,i=e;if(Qp(Jp,i)&&(i="%"+(r=Jp[i])[0]+"%"),Qp(Gp,i)){var s=Gp[i];if(s===zp&&(s=Hp(i)),void 0===s&&!t)throw new Fp("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Ap("intrinsic "+e+" does not exist!")},nu=function(e,t){if("string"!=typeof e||0===e.length)throw new Fp("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Fp('"allowMissing" argument must be a boolean');var r=iu(e),i=r.length>0?r[0]:"",s=su("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],Yp(r,Xp([0,1],c)));for(var d=1,l=!0;d<r.length;d+=1){var p=r[d],u=eu(p,0,1),h=eu(p,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Ap("property names with quotes must have matching quotes");if("constructor"!==p&&l||(a=!0),Qp(Gp,n="%"+(i+="."+p)+"%"))o=Gp[n];else if(null!=o){if(!(p in o)){if(!t)throw new Fp("base intrinsic for "+e+" exists, but the property is not available.");return}if(Bp&&d+1>=r.length){var f=Bp(o,p);o=(l=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[p]}else l=Qp(o,p),o=o[p];l&&!a&&(Gp[n]=o)}}return o},ou={exports:{}};!function(e){var t=Ip,r=nu,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),o=r("%Object.getOwnPropertyDescriptor%",!0),a=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(a)try{a({},"a",{value:1})}catch(e){a=null}e.exports=function(e){var r=n(t,s,arguments);if(o&&a){var i=o(r,"length");i.configurable&&a(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};a?a(e.exports,"apply",{value:d}):e.exports.apply=d}(ou);var au=nu,cu=ou.exports,du=cu(au("String.prototype.indexOf")),lu=d(Object.freeze({__proto__:null,default:{}})),pu="function"==typeof Map&&Map.prototype,uu=Object.getOwnPropertyDescriptor&&pu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,hu=pu&&uu&&"function"==typeof uu.get?uu.get:null,fu=pu&&Map.prototype.forEach,mu="function"==typeof Set&&Set.prototype,gu=Object.getOwnPropertyDescriptor&&mu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,vu=mu&&gu&&"function"==typeof gu.get?gu.get:null,yu=mu&&Set.prototype.forEach,bu="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,wu="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,_u="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Su=Boolean.prototype.valueOf,ku=Object.prototype.toString,Cu=Function.prototype.toString,Ru=String.prototype.match,Pu="function"==typeof BigInt?BigInt.prototype.valueOf:null,Tu=Object.getOwnPropertySymbols,Eu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Du="function"==typeof Symbol&&"object"==typeof Symbol.iterator,xu=Object.prototype.propertyIsEnumerable,Mu=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Lu=lu.custom,Iu=Lu&&Nu(Lu)?Lu:null,Ou="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Au(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function ju(e){return String(e).replace(/"/g,""")}function Fu(e){return!("[object Array]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}function Nu(e){if(Du)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Eu)return!1;try{return Eu.call(e),!0}catch(e){}return!1}var Bu=Object.prototype.hasOwnProperty||function(e){return e in this};function Uu(e,t){return Bu.call(e,t)}function qu(e){return ku.call(e)}function Wu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Vu(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Vu(e.slice(0,t.maxStringLength),t)+i}return Au(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,zu),"single",t)}function zu(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function $u(e){return"Object("+e+")"}function Gu(e){return e+" { ? }"}function Hu(e,t,r,i){return e+" ("+t+") {"+(i?Ju(r,i):r.join(", "))+"}"}function Ju(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function Ku(e,t){var r=Fu(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=Uu(e,s)?t(e[s],e):""}var n,o="function"==typeof Tu?Tu(e):[];if(Du){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)Uu(e,c)&&(r&&String(Number(c))===c&&c<e.length||Du&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof Tu)for(var d=0;d<o.length;d++)xu.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var Qu=nu,Xu=function(e,t){var r=au(e,!!t);return"function"==typeof r&&du(e,".prototype.")>-1?cu(r):r},Yu=function e(t,r,i,s){var n=r||{};if(Uu(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Uu(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!Uu(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Uu(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Vu(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=a&&a>0&&"object"==typeof t)return Fu(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(Wu(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return Uu(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var l=function(e){if(e.name)return e.name;var t=Ru.call(Cu.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),p=Ku(t,d);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(Nu(t)){var u=Du?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Eu.call(t);return"object"!=typeof t||Du?u:$u(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Au(ju(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Fu(t)){if(0===t.length)return"[]";var g=Ku(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Wu(e[t],"\n")>=0)return!1;return!0}(g)?"["+Ju(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t)){var v=Ku(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Iu&&"function"==typeof t[Iu])return t[Iu]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!hu||!e||"object"!=typeof e)return!1;try{hu.call(e);try{vu.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return fu.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Hu("Map",hu.call(t),y,c)}if(function(e){if(!vu||!e||"object"!=typeof e)return!1;try{vu.call(e);try{hu.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return yu.call(t,(function(e){b.push(d(e,t))})),Hu("Set",vu.call(t),b,c)}if(function(e){if(!bu||!e||"object"!=typeof e)return!1;try{bu.call(e,bu);try{wu.call(e,wu)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Gu("WeakMap");if(function(e){if(!wu||!e||"object"!=typeof e)return!1;try{wu.call(e,wu);try{bu.call(e,bu)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Gu("WeakSet");if(function(e){if(!_u||!e||"object"!=typeof e)return!1;try{return _u.call(e),!0}catch(e){}return!1}(t))return Gu("WeakRef");if(function(e){return!("[object Number]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t))return $u(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Pu)return!1;try{return Pu.call(e),!0}catch(e){}return!1}(t))return $u(d(Pu.call(t)));if(function(e){return!("[object Boolean]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t))return $u(Su.call(t));if(function(e){return!("[object String]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t))return $u(d(String(t)));if(!function(e){return!("[object Date]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t)&&!function(e){return!("[object RegExp]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t)){var w=Ku(t,d),_=Mu?Mu(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",k=!_&&Ou&&Object(t)===t&&Ou in t?qu(t).slice(8,-1):S?"Object":"",C=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||S?"["+[].concat(k||[],S||[]).join(": ")+"] ":"");return 0===w.length?C+"{}":c?C+"{"+Ju(w,c)+"}":C+"{ "+w.join(", ")+" }"}return String(t)},Zu=Qu("%TypeError%"),eh=Qu("%WeakMap%",!0),th=Qu("%Map%",!0),rh=Xu("WeakMap.prototype.get",!0),ih=Xu("WeakMap.prototype.set",!0),sh=Xu("WeakMap.prototype.has",!0),nh=Xu("Map.prototype.get",!0),oh=Xu("Map.prototype.set",!0),ah=Xu("Map.prototype.has",!0),ch=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},dh=String.prototype.replace,lh=/%20/g,ph="RFC3986",uh={default:ph,formatters:{RFC1738:function(e){return dh.call(e,lh,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:ph},hh=uh,fh=Object.prototype.hasOwnProperty,mh=Array.isArray,gh=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),vh=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},yh={arrayToObject:vh,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],o=Object.keys(n),a=0;a<o.length;++a){var c=o[a],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(mh(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var o="",a=0;a<n.length;++a){var c=n.charCodeAt(a);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===hh.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=gh[c]:c<2048?o+=gh[192|c>>6]+gh[128|63&c]:c<55296||c>=57344?o+=gh[224|c>>12]+gh[128|c>>6&63]+gh[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=gh[240|c>>18]+gh[128|c>>12&63]+gh[128|c>>6&63]+gh[128|63&c])}return o},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(mh(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(mh(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!fh.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return mh(t)&&!mh(r)&&(s=vh(t,i)),mh(t)&&mh(r)?(r.forEach((function(r,s){if(fh.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return fh.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},bh=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new Zu("Side channel does not contain "+Yu(e))},get:function(i){if(eh&&i&&("object"==typeof i||"function"==typeof i)){if(e)return rh(e,i)}else if(th){if(t)return nh(t,i)}else if(r)return function(e,t){var r=ch(e,t);return r&&r.value}(r,i)},has:function(i){if(eh&&i&&("object"==typeof i||"function"==typeof i)){if(e)return sh(e,i)}else if(th){if(t)return ah(t,i)}else if(r)return function(e,t){return!!ch(e,t)}(r,i);return!1},set:function(i,s){eh&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new eh),ih(e,i,s)):th?(t||(t=new th),oh(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=ch(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},wh=yh,_h=uh,Sh=Object.prototype.hasOwnProperty,kh={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ch=Array.isArray,Rh=String.prototype.split,Ph=Array.prototype.push,Th=function(e,t){Ph.apply(e,Ch(t)?t:[t])},Eh=Date.prototype.toISOString,Dh=_h.default,xh={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:wh.encode,encodeValuesOnly:!1,format:Dh,formatter:_h.formatters[Dh],indices:!1,serializeDate:function(e){return Eh.call(e)},skipNulls:!1,strictNullHandling:!1},Mh={},Lh=function e(t,r,i,s,n,o,a,c,d,l,p,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(Mh))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(Mh)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=p(v):"comma"===i&&Ch(v)&&(v=wh.maybeMap(v,(function(e){return e instanceof Date?p(e):e}))),null===v){if(n)return a&&!f?a(r,xh.encoder,m,"key",u):r;v=""}if(function(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e}(v)||wh.isBuffer(v)){if(a){var S=f?r:a(r,xh.encoder,m,"key",u);if("comma"===i&&f){for(var k=Rh.call(String(v),","),C="",R=0;R<k.length;++R)C+=(0===R?"":",")+h(a(k[R],xh.encoder,m,"value",u));return[h(S)+(s&&Ch(v)&&1===k.length?"[]":"")+"="+C]}return[h(S)+"="+h(a(v,xh.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&Ch(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(Ch(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&Ch(v)&&1===v.length?r+"[]":r,x=0;x<P.length;++x){var M=P[x],L="object"==typeof M&&void 0!==M.value?M.value:v[M];if(!o||null!==L){var I=Ch(v)?"function"==typeof i?i(D,M):D:D+(l?"."+M:"["+M+"]");g.set(t,b);var O=bh();O.set(Mh,g),Th(T,e(L,I,i,s,n,o,a,c,d,l,p,u,h,f,m,O))}}return T},Ih=yh,Oh=Object.prototype.hasOwnProperty,Ah=Array.isArray,jh={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Ih.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Fh=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Nh=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Bh=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(s),a=o?s.slice(0,o.index):s,c=[];if(a){if(!r.plainObjects&&Oh.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var d=0;r.depth>0&&null!==(o=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&Oh.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(o[1])}return o&&c.push("["+s.slice(o.index)+"]"),function(e,t,r,i){for(var s=i?t:Nh(t,r),n=e.length-1;n>=0;--n){var o,a=e[n];if("[]"===a&&r.parseArrays)o=[].concat(s);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&a!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(o=[])[d]=s:"__proto__"!==c&&(o[c]=s):o={0:s}}s=o}return s}(c,t,r,i)}},Uh=function(e,t){var r,i=e,s=function(e){if(!e)return xh;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||xh.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=_h.default;if(void 0!==e.format){if(!Sh.call(_h.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=_h.formatters[r],s=xh.filter;return("function"==typeof e.filter||Ch(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:xh.addQueryPrefix,allowDots:void 0===e.allowDots?xh.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:xh.charsetSentinel,delimiter:void 0===e.delimiter?xh.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:xh.encode,encoder:"function"==typeof e.encoder?e.encoder:xh.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:xh.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:xh.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:xh.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:xh.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):Ch(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in kh?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=kh[n];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var c="comma"===a&&t&&t.commaRoundTrip;r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var d=bh(),l=0;l<r.length;++l){var p=r[l];s.skipNulls&&null===i[p]||Th(o,Lh(i[p],p,a,c,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,d))}var u=o.join(s.delimiter),h=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?h+="utf8=%26%2310003%3B&":h+="utf8=%E2%9C%93&"),u.length>0?h+u:""},qh=function(e,t){var r=function(e){if(!e)return jh;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?jh.charset:e.charset;return{allowDots:void 0===e.allowDots?jh.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:jh.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:jh.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:jh.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:jh.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:jh.comma,decoder:"function"==typeof e.decoder?e.decoder:jh.decoder,delimiter:"string"==typeof e.delimiter||Ih.isRegExp(e.delimiter)?e.delimiter:jh.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:jh.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:jh.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:jh.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:jh.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:jh.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,o=s.split(t.delimiter,n),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<o.length;++r)0===o[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===o[r]?c="utf-8":"utf8=%26%2310003%3B"===o[r]&&(c="iso-8859-1"),a=r,r=o.length);for(r=0;r<o.length;++r)if(r!==a){var d,l,p=o[r],u=p.indexOf("]="),h=-1===u?p.indexOf("="):u+1;-1===h?(d=t.decoder(p,jh.decoder,c,"key"),l=t.strictNullHandling?null:""):(d=t.decoder(p.slice(0,h),jh.decoder,c,"key"),l=Ih.maybeMap(Nh(p.slice(h+1),t),(function(e){return t.decoder(e,jh.decoder,c,"value")}))),l&&t.interpretNumericEntities&&"iso-8859-1"===c&&(l=Fh(l)),p.indexOf("[]=")>-1&&(l=Ah(l)?[l]:l),Oh.call(i,d)?i[d]=Ih.combine(i[d],l):i[d]=l}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),o=0;o<n.length;++o){var a=n[o],c=Bh(a,i[a],r,"string"==typeof e);s=Ih.merge(s,c,r)}return!0===r.allowSparse?s:Ih.compact(s)},Wh={formats:uh,parse:qh,stringify:Uh};class Vh{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Pp.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Wh.stringify(e)}),this.customNode=i}getNode(e){return i(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}Error;const zh=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],$h=({from:e,seen:t,to_:r,forceEnumerable:i})=>{const s=r||(Array.isArray(e)?[]:{});t.push(e);for(const[r,n]of Object.entries(e))"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?s[r]="[Circular]":s[r]=$h({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of zh)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var Gh,Hh,Jh,Kh,Qh,Xh,Yh,Zh=e=>"object"==typeof e&&null!==e?$h({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class ef extends v{constructor(e,t){super(e,null!=t?t:"invalid_payload")}}!function(e){e.DominantSpeaker="dominant-speaker",e.PeersVolumes="peers-volumes",e.Silence="silence"}(Gh||(Gh={}));class tf{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Qe({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(tf.validateEventPayload(t),t.event){case Gh.DominantSpeaker:this.handleDominantSpeaker(t);break;case Gh.PeersVolumes:this.handlePeerVolumes(t);break;case Gh.Silence:this.handleSilence()}}catch(t){this.logger.warn("Failed to handle audio observer event",{error:Zh(t),eventData:e})}}handleDominantSpeaker(e){const{peerId:t}=e.data,r=this.engine.getPeerById(t);this.engine.setActiveSpeakerPeer(r)}handlePeerVolumes(e){e.volumes.forEach((e=>{var t;const{peerId:r,trackLabel:i,value:s}=e,n=null===(t=this.engine.getPeerById(r))||void 0===t?void 0:t.tracks.get(i);n&&n.setVolume(s)}))}handleSilence(){this.engine.peers.flatMap((e=>Array.from(e.tracks.values()))).forEach((e=>e.setVolume(0))),this.engine.setActiveSpeakerPeer(void 0)}static validateEventPayload(e){switch(e.event){case Gh.Silence:break;case Gh.DominantSpeaker:{e.data||tf.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===h.Microphone||tf.throwInvalidPayload();break}case Gh.PeersVolumes:Array.isArray(e.volumes)||tf.throwInvalidPayload(),e.volumes.forEach((e=>{const{peerId:t,producerId:r,value:i,trackLabel:s}=e;"string"==typeof t&&"string"==typeof r&&"number"==typeof i&&s===h.Microphone||tf.throwInvalidPayload()}));break;default:tf.throwInvalidPayload()}}static throwInvalidPayload(){throw new ef("Invalid channel audio observer event handler payload")}}class rf{createSystem(e){return new xc(e)}createMedia(e){return new ra(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new Qd({logLevel:r,onLogMessage:i}),n=new Vh(t);return new Ec({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new Mc(e)}createMediaSoupEventHandler(e){return new Lc(e)}createAudioObserverEventHandler(e){return new tf(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new Rc({statsParser:new Pc({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new Tc({issueEmitter:new lc,networkScoresCalculator:new hc,detectors:[new _c,new gc,new vc,new yc,new wc,new bc,new mc,new Sc],statsReporter:new pc({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class sf extends AudioWorkletNode{constructor(e){super(e.context,"rnnoise",{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{module:e.noiseSuppressor.module}}),this.port.onmessage=({data:e})=>{const t=Object.assign(new Event("status"),e);this.dispatchEvent(t)}}update(e){this.port.postMessage(e)}static register(e){return i(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class nf{constructor(e){Hh.set(this,void 0),Jh.set(this,void 0),Kh.set(this,void 0),Qh.set(this,void 0),Xh.set(this,void 0),Yh.set(this,!0),n(this,Hh,e.noiseSuppressor.instance.exports,"f"),n(this,Jh,e.context,"f"),n(this,Kh,new Float32Array(s(this,Hh,"f").memory.buffer),"f"),n(this,Qh,s(this,Hh,"f").newState(),"f"),n(this,Xh,s(this,Jh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return s(this,Xh,"f")}update(e){e||(n(this,Yh,!1,"f"),s(this,Hh,"f").deleteState(s(this,Qh,"f")));const t=Object.assign(new Event("status"),{vadProb:s(this,Hh,"f").getVadProb(s(this,Qh,"f"))});s(this,Xh,"f").dispatchEvent(t)}setOnAudioProcess(){s(this,Xh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!s(this,Yh,"f"))return;s(this,Kh,"f").set(e.getChannelData(0),s(this,Hh,"f").getInput(s(this,Qh,"f"))/4);const r=t.getChannelData(0),i=s(this,Hh,"f").pipe(s(this,Qh,"f"),r.length)/4;i&&r.set(s(this,Kh,"f").subarray(i,i+r.length))}))}}Hh=new WeakMap,Jh=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Xh=new WeakMap,Yh=new WeakMap;var of,af,cf,df,lf,pf,uf,hf,ff,mf,gf;class vf{constructor({context:e,noiseSuppressor:t}){of.set(this,void 0),af.set(this,void 0),cf.set(this,void 0),n(this,of,e,"f"),n(this,af,t,"f")}createNoiseSuppressionNode(){return i(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=s(this,cf,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return i(this,void 0,void 0,(function*(){return yield sf.register(s(this,of,"f")),n(this,cf,new sf({context:s(this,of,"f"),noiseSuppressor:s(this,af,"f")}),"f"),s(this,cf,"f")}))}createScriptProcessorNode(){return n(this,cf,new nf({context:s(this,of,"f"),noiseSuppressor:s(this,af,"f")}),"f"),s(this,cf,"f").noiseSuppressionScriptProcessorNode}}of=new WeakMap,af=new WeakMap,cf=new WeakMap;class yf{constructor(e){df.set(this,void 0),lf.set(this,void 0),pf.set(this,void 0),uf.set(this,void 0),hf.set(this,!1),n(this,df,e.noiseSuppressor,"f"),n(this,pf,new Qe({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return s(this,hf,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const t=(e=>{const t=window.AudioContext||window.webkitAudioContext||!1;return t?new t(e):null})();if(!t)throw new Error("AudioContext is not available");const r=new MediaStreamAudioDestinationNode(t,{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers"});yield sf.register(t);const i=t.createMediaStreamSource(new MediaStream([e])),o=new vf({context:t,noiseSuppressor:s(this,df,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),i.connect(a);const[c]=r.stream.getTracks();return n(this,lf,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),n(this,uf,c,"f"),s(this,pf,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return i(this,void 0,void 0,(function*(){if(this.isProcessing)if(s(this,lf,"f"))try{s(this,lf,"f").noiseSuppressionProvider.stop(),s(this,lf,"f").noiseSuppressionNode.disconnect(),s(this,lf,"f").streamDestination.disconnect(),yield s(this,lf,"f").audioContext.close(),null===(e=s(this,uf,"f"))||void 0===e||e.stop(),s(this,pf,"f").info("stopProcessing()",{success:!0})}catch(e){s(this,pf,"f").error("stopProcessing()",{success:!1,error:e})}else s(this,pf,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else s(this,pf,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}df=new WeakMap,lf=new WeakMap,pf=new WeakMap,uf=new WeakMap,hf=new WeakMap;class bf extends ba{constructor(e){super(e),ff.set(this,void 0),mf.set(this,void 0),gf.set(this,void 0),e.noiseSuppressor&&n(this,ff,new yf({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),n(this,gf,new Qe({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=s(this,ff,"f"))||void 0===e?void 0:e.isProcessing)}getEncoderConfig(){return this.encoderConfig}getEncodings(){var e;return null!==(e=this.getEncoderConfig().encodings)&&void 0!==e?e:$o}getCodecOptions(){var e,t;return{opusFec:null===(e=this.getEncoderConfig().enableFec)||void 0===e||e,opusDtx:null===(t=this.getEncoderConfig().enableDtx)||void 0===t||t}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||"opus"}enableNoiseSuppression(){var e;return i(this,void 0,void 0,(function*(){if(s(this,ff,"f"))try{const t=yield null===(e=s(this,ff,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);n(this,mf,this.mediaStreamTrack,"f"),yield this.replaceTrack(t)}catch(e){throw this.logger.warn("enableNoiseSuppression()",{description:"Can not enable noise suppression",track:this,error:e}),new Error("Can not enable noise suppression")}else this.logger.warn("enableNoiseSuppression()",{description:"Track suppressor is not defined"})}))}disableNoiseSuppression(){var e,t;return i(this,void 0,void 0,(function*(){try{if(!(null===(e=s(this,ff,"f"))||void 0===e?void 0:e.isProcessing))return void s(this,gf,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!s(this,mf,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});yield this.replaceTrack(s(this,mf,"f")),yield null===(t=s(this,ff,"f"))||void 0===t?void 0:t.stopProcessing()}catch(e){throw this.logger.warn("disableNoiseSuppression()",{description:"Can not disable noise suppression",track:this,error:e}),new Error("Can not disable noise suppression")}}))}publish(){return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(W,this)}))}}ff=new WeakMap,mf=new WeakMap,gf=new WeakMap;class wf{createAudioTrack(e){return new bf(e)}createVideoTrack(e){return new za(e)}}module.exports=class{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:l}=e;this._observer=null!=i?i:new o;const p=new rf,u=new wf;this.engine=new Ja({dependenciesFactory:p,clientEventEmitter:this.observer,media:{mediaTracksFactory:u},network:{loadbalancer:{baseURL:null===(t=null==s?void 0:s.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==s?void 0:s.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:d,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,disableWid:l})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}get canUseNoiseSuppression(){return this.engine.canUseNoiseSuppression}detectDevices(){return i(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}confirmActivity(){return this.engine.confirmActivity()}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}updateAppData(e){return this.engine.updateAppData(e)}getTransportsInfo(){return i(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}};
|
|
239
|
+
`,{width:c,height:d}=n,l=c/d,p=_a(e,e.VERTEX_SHADER,o),u=_a(e,e.FRAGMENT_SHADER,a),h=Ca(e,p,u,t,r),f=e.getUniformLocation(h,"u_backgroundScale"),m=e.getUniformLocation(h,"u_backgroundOffset"),g=e.getUniformLocation(h,"u_inputFrame"),v=e.getUniformLocation(h,"u_personMask"),y=e.getUniformLocation(h,"u_background"),b=e.getUniformLocation(h,"u_coverage"),w=e.getUniformLocation(h,"u_lightWrapping"),_=e.getUniformLocation(h,"u_blendMode");e.useProgram(h),e.uniform2f(f,1,1),e.uniform2f(m,0,0),e.uniform1i(g,0),e.uniform1i(v,1),e.uniform2f(b,0,1),e.uniform1f(w,0),e.uniform1f(_,0);let S=null;function k(t){S=Sa(e,e.RGBA8,t.naturalWidth,t.naturalHeight,e.LINEAR,e.LINEAR),e.texSubImage2D(e.TEXTURE_2D,0,0,0,t.naturalWidth,t.naturalHeight,e.RGBA,e.UNSIGNED_BYTE,t);let r=0,i=0,s=t.naturalWidth,n=t.naturalHeight;s/n<l?(n=s/l,i=(t.naturalHeight-n)/2):(s=n*l,r=(t.naturalWidth-s)/2);const o=s/t.naturalWidth,a=n/t.naturalHeight;r/=t.naturalWidth,i/=t.naturalHeight,e.uniform2f(f,o,a),e.uniform2f(m,r,i)}return(null==s?void 0:s.complete)?k(s):s&&(s.onload=()=>{k(s)}),{render:function(){e.viewport(0,0,c,d),e.useProgram(h),e.activeTexture(e.TEXTURE1),e.bindTexture(e.TEXTURE_2D,i),null!==S&&(e.activeTexture(e.TEXTURE2),e.bindTexture(e.TEXTURE_2D,S),e.uniform1i(y,2)),e.bindFramebuffer(e.FRAMEBUFFER,null),e.drawArrays(e.TRIANGLE_STRIP,0,4)},updateCoverage:function(t){e.useProgram(h),e.uniform2f(b,t[0],t[1])},updateLightWrapping:function(t){e.useProgram(h),e.uniform1f(w,t)},updateBlendMode:function(t){e.useProgram(h),e.uniform1f(_,"screen"===t?0:1)},cleanUp:function(){e.deleteTexture(S),e.deleteProgram(h),e.deleteShader(u),e.deleteShader(p)}}}(u,m,g,b,t,n);return{render:function(){return i(this,void 0,void 0,(function*(){u.activeTexture(u.TEXTURE0),u.bindTexture(u.TEXTURE_2D,v),u.texImage2D(u.TEXTURE_2D,0,u.RGBA,u.RGBA,u.UNSIGNED_BYTE,e.htmlElement),u.bindVertexArray(f),yield w.render(),o._runInference(),_.render(),S.render(),k.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===r.type){const t=k;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===r.type){k.updateCoverage(e.coverage)}else{const e=k;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){k.cleanUp(),S.cleanUp(),_.cleanUp(),w.cleanUp(),u.deleteTexture(b),u.deleteTexture(y),u.deleteTexture(v),u.deleteBuffer(g),u.deleteBuffer(m),u.deleteVertexArray(f),u.deleteShader(h)}}}var Ma,La,Ia,Oa,Aa,ja,Fa,Na,Ba,Ua;class qa{constructor(e){Ma.set(this,!1),La.set(this,void 0),Ia.set(this,void 0),Oa.set(this,void 0),n(this,Oa,new Qe({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return s(this,Ma,"f")}get tfliteModule(){return s(this,La,"f")||s(this,Ia,"f")}loadTFLite(){return i(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&n(this,Ma,!0,"f")}))}loadTFLiteModel(e){return i(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=qa.getTFLiteModelFileName(e);s(this,Oa,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),i=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(i),n);const o=this.tfliteModule._loadModel(i.byteLength);s(this,Oa,"f").info("loading model result",{result:o})}catch(e){s(this,Oa,"f").warn("loadTFLiteModel()",{error:e})}else s(this,Oa,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return i(this,void 0,void 0,(function*(){try{n(this,La,yield createTFLiteModule(),"f")}catch(e){s(this,Oa,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return i(this,void 0,void 0,(function*(){try{n(this,Ia,yield createTFLiteSIMDModule(),"f")}catch(e){s(this,Oa,"f").error("Failed to create TFLite SIMD WebAssembly module.",{error:e})}}))}static getTFLiteModelFileName({model:e,inputResolution:t}){switch(e){case"meet":return"256x144"===t?"segm_full_v679":"segm_lite_v681";case"mlkit":return"selfiesegmentation_mlkit-256x256-2021_01_19-v1215.f16";default:throw new Error(`No TFLite file for this segmentation model: ${e}`)}}}function Wa({sourcePlayback:e,backgroundConfig:t,segmentationConfig:r,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=Pa[r.inputResolution],d=a*c,l=new ImageData(a,c),p=document.createElement("canvas");p.width=a,p.height=c;const u=p.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return i(this,void 0,void 0,(function*(){"none"!==t.type&&(function(){if(u.drawImage(e.htmlElement,0,0,e.width,e.height,0,0,a,c),"meet"===r.model||"mlkit"===r.model){const e=u.getImageData(0,0,a,c);for(let t=0;t<d;t+=1)n.HEAPF32[h+3*t]=e.data[4*t]/255,n.HEAPF32[h+3*t+1]=e.data[4*t+1]/255,n.HEAPF32[h+3*t+2]=e.data[4*t+2]/255}}(),function(){n._runInference();for(let e=0;e<d;e+=1)if("meet"===r.model){const t=n.HEAPF32[f+2*e],r=n.HEAPF32[f+2*e+1],i=Math.max(t,r),s=Math.exp(t-i),o=Math.exp(r-i);l.data[4*e+3]=255*o/(s+o)}else if("mlkit"===r.model){const t=n.HEAPF32[f+e];l.data[4*e+3]=255*t}u.putImageData(l,0,0)}()),o.globalCompositeOperation="copy",o.filter="none",(null==m?void 0:m.smoothSegmentationMask)&&("blur"===t.type||"image"===t.type)&&(o.filter="blur(8px)"),"none"!==t.type&&(o.drawImage(p,0,0,a,c,0,0,e.width,e.height),o.globalCompositeOperation="source-in",o.filter="none"),o.drawImage(e.htmlElement,0,0),"blur"===t.type&&(o.globalCompositeOperation="destination-over",o.filter="blur(8px)",o.drawImage(e.htmlElement,0,0))}))},updatePostProcessingConfig:function(e){m=e},cleanUp:function(){}}}Ma=new WeakMap,La=new WeakMap,Ia=new WeakMap,Oa=new WeakMap;class Va{constructor(e){Aa.set(this,void 0),ja.set(this,void 0),Fa.set(this,!1),Na.set(this,void 0),n(this,Aa,new qa(e.logLevel),"f"),n(this,Na,new Qe({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return s(this,Fa,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:r}=e;s(this,Fa,"f")&&this.stopProcessing();try{s(this,Aa,"f").isLoaded||(yield s(this,Aa,"f").loadTFLite(),yield s(this,Aa,"f").loadTFLiteModel(r.segmentationConfig));const{tfliteModule:o}=s(this,Aa,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=r.segmentationConfig,c=yield Va.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const l=function(){const e=new Map,t=new Worker(`${window.location.origin}/timerWorker.js`);t.onmessage=t=>{const r=e.get(t.data.callbackId);r&&(e.delete(t.data.callbackId),r())};let r=1;return{setTimeout:function(i,s){return r+=1,e.set(r,i),t.postMessage({callbackId:r,timeoutMs:s}),r},clearTimeout:function(r){e.has(r)&&(t.postMessage({callbackId:r}),e.delete(r))},terminate:function(){e.clear(),t.terminate()}}}(),p={config:r,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?Va.buildCanvas2dPipeline(p):Va.buildWebGL2Pipeline(p),h=()=>i(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),l.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(r.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return n(this,ja,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:l,timerId:f},"f"),n(this,Fa,!0,"f"),g}catch(e){throw s(this,Na,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(s(this,ja,"f"))try{s(this,ja,"f").pipeline.cleanUp(),s(this,ja,"f").source.remove(),s(this,ja,"f").destination.remove(),s(this,ja,"f").timerWorker.clearTimeout(s(this,ja,"f").timerId),s(this,ja,"f").timerWorker.terminate(),s(this,ja,"f").destination.remove(),s(this,ja,"f").track.stop(),n(this,ja,void 0,"f"),n(this,Fa,!1,"f")}catch(e){s(this,Na,"f").error("cleanUp()",{error:e})}else s(this,Na,"f").warn("cleanUp()",{description:"This track is not processing"});else s(this,Na,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return xa({backgroundImage:e.config.backgroundConfig.imageSource,sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildCanvas2dPipeline(e){return Wa({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return i(this,void 0,void 0,(function*(){const t=document.createElement("video");return t.srcObject=new MediaStream([e]),t.autoplay=!0,yield t.play(),{htmlElement:t,width:t.videoWidth,height:t.videoHeight}}))}}Aa=new WeakMap,ja=new WeakMap,Fa=new WeakMap,Na=new WeakMap;class za extends ba{constructor(e){super(e),Ba.set(this,void 0),Ua.set(this,void 0),this.transformParams={},n(this,Ba,new Va({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return s(this,Ba,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===h.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||Vo}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return i(this,void 0,void 0,(function*(){const t=this.getProducer();t?(yield t.setMaxSpatialLayer(e),this.logger.debug("setMaxSpatialLayer()",{label:this.getLabel(),spatialLayer:e})):this.logger.warn("setMaxSpatialLayer()",{message:"Not produced yet"})}))}getMaxSpatialLayer(){const e=this.getProducer();if(e)return e.maxSpatialLayer;this.logger.warn("getMaxSpatialLayer()",{message:"Not produced yet"})}enableBlur(){return i(this,void 0,void 0,(function*(){try{n(this,Ua,this.mediaStreamTrack.clone(),"f");const e=yield s(this,Ba,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ea:Ta});yield this.replaceTrack(e),this.logger.info("enableBlur()",{track:this})}catch(e){throw this.logger.warn("enableBlur()",{track:this,error:e}),new Error("Can not enable virtual background")}}))}disableBlur(){return i(this,void 0,void 0,(function*(){try{if(!s(this,Ba,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!s(this,Ua,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});yield this.replaceTrack(s(this,Ua,"f")),s(this,Ba,"f").stopProcessing(),this.logger.info("disableBlur()",{track:this})}catch(e){throw this.logger.warn("disableBlur()",{track:this,error:e}),new Error("Can not disable virtual background")}}))}publish(e={}){var t;return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),transformParams:this.transformParams,codecOptions:this.getCodecOptions(),keyFrameRequestDelay:null!==(t=e.keyFrameRequestDelay)&&void 0!==t?t:0}),this.clientEventEmitter.emit(W,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield s(this,Ba,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?Ea:Ta});yield this.replaceTrack(e)}catch(e){this.logger.warn("watchOrientation()",{description:"Restart blur error after orientation change",error:e})}})))))}watchDocumentVisibility(){this.logger.debug("watchDocumentVisibility()",{description:"Watching started"}),window.addEventListener("visibilitychange",(()=>i(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{yield this.disableBlur(),yield this.enableBlur()}catch(e){this.logger.warn("watchDocumentVisibility()",{description:"Restart blur error after change document visibility",error:e})}}))))}}Ba=new WeakMap,Ua=new WeakMap;const $a=new class{sleepMs(e){return i(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},Ga=(e,t={})=>i(void 0,void 0,void 0,(function*(){var r;const i=t.maxRetries||2,s=t.minBackoffDelayMs||50;let n,o=0;for(;o<i;){o+=1;try{return yield e()}catch(e){if(n=e,t.logger&&t.logger.info("Action retry failed",{currentAttempt:o,actionName:t.actionName,error:e}),t.abortOnError&&t.abortOnError(e))throw n;if(o<i){const e=Math.pow(2,o-1)*s;yield $a.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Ha extends v{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Ja{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||Ve,this.system=s.createSystem({logLevel:this.logLevel,clientEventEmitter:t,onLogMessage:e.onLogMessage}),this.media=s.createMedia({logLevel:this.logLevel,engine:this,clientEventEmitter:t,mediaTracksFactory:i.mediaTracksFactory,onLogMessage:e.onLogMessage}),this.network=s.createNetwork({logLevel:this.logLevel,loadbalancer:r.loadbalancer,onLogMessage:e.onLogMessage}),this.peersRepository=new Map,this.clientEventEmitter=t,this.channelEventsHandler=s.createChannelEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.mediaSoupEventsHandler=s.createMediaSoupEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.channelAudioObserverEventHandler=s.createAudioObserverEventHandler({engine:this,onLogMessage:e.onLogMessage}),this.logger=new Qe({logLevel:this.logLevel,namespace:"Engine",onLogMessage:e.onLogMessage}),this.webRtcIssueDetector=e.disableWid?void 0:s.createIssueDetector({onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:[1234],logger:new Qe({logLevel:this.logLevel,namespace:"WID"})}),this.watchSocketState(),this.watchClientEvents()}initialize(){var e,t,r;return i(this,void 0,void 0,(function*(){try{const{rtpCapabilities:i}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(i),null===(e=this.webRtcIssueDetector)||void 0===e||e.watchNewPeerConnections(),yield this.network.createSendTransport(this.media.mediasoupDevice),yield this.network.createRecvTransport(this.media.mediasoupDevice),this.initialized=!0,this.logger.debug("initialize()",{sendTransportId:null===(t=this.network.sendTransport)||void 0===t?void 0:t.id,recvTransportId:null===(r=this.network.receiveTransport)||void 0===r?void 0:r.id})}catch(e){if(this.logger.error("initialize()",{error:e}),e instanceof m&&"device not supported"===e.message||e instanceof Error&&"RTCPeerConnection is not defined"===e.message)throw new y("Device not supported",y.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t;return i(this,void 0,void 0,(function*(){try{this.initialized=!1,this.isJoined=!1,this.app=void 0,this.channel=void 0,null===(e=this.webRtcIssueDetector)||void 0===e||e.stopWatchingNewPeerConnections(),this.network.socket.disconnect(),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.close(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}watchSocketState(){this.network.socket.observer.on("state",(e=>{var t;const{state:r,code:i,error:s}=e;this.clientEventEmitter.emit(r,{code:i,error:s});const n="unauthorized"===(null===(t=null==s?void 0:s.data)||void 0===t?void 0:t.errorCode);(r===ne.Error&&this.isJoined&&n||r===ne.Reconnected)&&this.clientEventEmitter.emit(A)}))}get activeSpeaker(){return this.activeSpeakerPeer}get peers(){return Array.from(this.peersRepository.values())}get hostPeers(){return this.peers.filter((e=>"host"===e.role))}get audiencePeers(){return this.peers.filter((e=>"audience"===e.role))}get mySocketId(){return this.network.socket.id}getPeerById(e){return this.peersRepository.get(e)}confirmActivity(){var e;return i(this,void 0,void 0,(function*(){if(!this.channel||this.isChannelJoining)throw new Error("Connect to the channel first");if(!(null===(e=this.network.socket.connection)||void 0===e?void 0:e.active))throw new Error("Socket is inactive");yield this.network.socket.request(C)}))}join(e){return i(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1}}))}loadPeers(e){return i(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(_,{role:e});t.filter((e=>!this.peersRepository.has(e.id))).forEach((e=>this.setPeer(e)))}))}setPeer(e){const t=this.peersRepository.get(e.id);if(t)return t;const r=new qo(Object.assign(Object.assign({},e),{engine:this,loginDate:new Date}));return this.peersRepository.set(r.id,r),r}removePeer(e){const t=this.peersRepository.get(e);t&&(t.tracks.forEach((e=>e.close())),this.peersRepository.delete(e))}updateAppData(e){return i(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{Bo(e),yield this.network.updatePeerAppData({peerId:t.id,appData:e})}catch(e){throw this.logger.error("updateAppData()",{error:e}),new Error("Can not update peer appData")}}))}createCameraVideoTrack(e){return i(this,void 0,void 0,(function*(){const t=ra.getCameraVideoTrackParams(e);try{const[r]=yield this.media.createUserMediaTracks({audio:!1,video:t.videoTrackOptions});if(r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof za&&(r.setLabel(h.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(ra.getVideoTrackTransformParams(r.mediaStreamTrack)),null==e?void 0:e.blur))try{yield r.enableBlur()}catch(e){this.logger.warn("Failed to start virtual background, featured original track",{track:this})}return this.media.setTrack(r),this.logger.debug("createCameraVideoTrack()",{trackParams:t,track:r}),r}catch(e){throw this.logger.error("createCameraVideoTrack()",{error:e,trackParams:t}),new Error(`Can not create camera track: ${e.message}`)}}))}createMicrophoneAudioTrack(e){return i(this,void 0,void 0,(function*(){try{const[t]=yield this.media.createUserMediaTracks({video:!1,audio:null==e?void 0:e.audio});if(t.setLabel(h.Microphone),t.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),(null==e?void 0:e.encoderConfig)&&t.setEncoderConfig(e.encoderConfig),"audio"===t.kind&&(null==e?void 0:e.noiseSuppression))try{yield t.enableNoiseSuppression()}catch(e){this.logger.warn("Failed to start noise suppression, featured original track",{track:this})}return this.media.setTrack(t),this.logger.debug("createMicrophoneAudioTrack()",{options:e,track:t}),t}catch(t){throw this.logger.error("createMicrophoneAudioTrack()",{error:t,options:e}),new Error(`Can not create microphone track: ${t.message}`)}}))}createScreenMediaTracks(e){return i(this,void 0,void 0,(function*(){const t=ra.getScreenVideoTrackParams(e);try{const r=yield this.media.createDisplayMediaTracks({audio:null==e?void 0:e.audio,video:null==e?void 0:e.video});return r.forEach((r=>{if(r.mediaStreamTrack.addEventListener("ended",(()=>{r.unpublish()})),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof za){r.setLabel(h.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=ra.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(h.ScreenAudio),(null==e?void 0:e.audioEncoderConfig)&&r.setEncoderConfig(e.audioEncoderConfig),this.media.setTrack(r),this.logger.debug("createScreenMediaTrack()",{trackParams:null==e?void 0:e.audio,encoderConfig:null==e?void 0:e.audioEncoderConfig,track:r})})),r}catch(e){throw this.logger.error("createScreenMediaTrack()",{error:e,trackParams:t}),new Error(`Can not create screen media tracks: ${e.message}`)}}))}deleteTrack(e){return this.media.deleteTrack(e)}get channelId(){return this.channel}get appId(){return this.app}get canUseNoiseSuppression(){return this.media.isNoiseSuppressorLoaded}setActiveSpeakerPeer(e){this.activeSpeaker!==e&&(this.activeSpeakerPeer=e,this.clientEventEmitter.safeEmit(U,{peer:e}))}connectToSocketServerWithRetry(e){return i(this,void 0,void 0,(function*(){return Ga((()=>i(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new Qe({namespace:"RetrySocketConnect",logLevel:this.logLevel}),abortOnError:e=>{var t;return"unauthorized"===(null===(t=null==e?void 0:e.data)||void 0===t?void 0:t.errorCode)}})}))}connectToSocketServer(e){return i(this,void 0,void 0,(function*(){const{webSocketUrl:t}=yield this.getAvailableNode({channelId:e.channelId,role:e.role});this.network.socket.connect(t,e.token);try{yield this.waitForSocketConnection()}catch(r){throw this.logger.error("Failed to connect to socket server",{error:r,role:e.role,channelId:e.channelId,webSocketUrl:t}),this.network.socket.disconnect(),r}}))}getAvailableNode(e){return i(this,void 0,void 0,(function*(){try{return{webSocketUrl:(yield this.network.loadBalancerClient.getNode(e)).webSocketUrl}}catch(e){throw this.logger.error("getAvailableNode()",{error:"No available nodes"}),e}}))}waitForSocketConnection(){return new Promise(((e,t)=>{const r=s=>i(this,void 0,void 0,(function*(){const{error:i,state:n}=s,o=()=>this.network.socket.observer.removeListener("state",r),a=[ne.Disconnected,ne.Reconnecting].includes(n);return i?(o(),void t(i)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[ne.Connected,ne.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on("state",r)}))}performJoin(e){return i(this,void 0,void 0,(function*(){try{const{appId:t,channelId:r}=yield this.sendJoinChannelRequestWithRetry(e);this.app=t,this.channel=r,yield this.initialize(),this.channelEventsHandler.subscribeToEvents(),this.mediaSoupEventsHandler.subscribeToEvents(),this.isJoined=!0,this.logger.debug("Successfully joined channel",{channelId:r}),yield this.createAudioObserver()}catch(e){throw this.logger.error("performJoin()",{error:e}),e}}))}sendJoinChannelRequestWithRetry(e){return i(this,void 0,void 0,(function*(){return Ga((()=>i(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new Qe({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return i(this,void 0,void 0,(function*(){return this.network.socket.request(w,e)}))}get cahPublish(){var e;return"host"===(null===(e=this.peers.find((e=>e.isMe)))||void 0===e?void 0:e.role)}get myPeer(){return this.peers.find((e=>e.isMe))}watchClientEvents(){this.clientEventEmitter.on(W,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(V,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close(),this.media.deleteTrack(e)})),this.clientEventEmitter.on(z,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.pause()})),this.clientEventEmitter.on($,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.resume()})),this.clientEventEmitter.on(G,(e=>{var t;const r=null===(t=this.myPeer)||void 0===t?void 0:t.tracks.get(e.getLabel());null==r||r.close()})),this.clientEventEmitter.on(H,(e=>i(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return i(this,void 0,void 0,(function*(){const r=this.peersRepository.get(this.mySocketId);if(!r)return;yield null===(t=r.tracks.get(e.getLabel()))||void 0===t?void 0:t.close();const i=new No({mediaStreamTrack:e.mediaStreamTrack,label:e.getLabel(),engine:this,muted:!1,paused:e.isPaused,peerEventEmitter:r.observer});r.tracks.set(i.label,i)}))}createAudioObserver(){var e;return i(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Ha("Need to join first");const t={channelId:this.channelId,appId:this.appId,peerId:null===(e=this.myPeer)||void 0===e?void 0:e.id};try{const{producerId:e}=yield this.network.getAudioObserverProducer(),r=yield this.network.createDataConsumer({producerId:e,appId:this.appId,channelId:this.channelId});r.on("message",(e=>{this.channelAudioObserverEventHandler.handle(e)})),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}}var Ka,Qa,Xa;function Ya(){}function Za(){Za.init.call(this)}function ec(e){return void 0===e._maxListeners?Za.defaultMaxListeners:e._maxListeners}function tc(e,t,r){if(t)e.call(r);else for(var i=e.length,s=dc(e,i),n=0;n<i;++n)s[n].call(r)}function rc(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=dc(e,s),o=0;o<s;++o)n[o].call(r,i)}function ic(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=dc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function sc(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=dc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function nc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=dc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function oc(e,t,r,i){var s,n,o,a;if("function"!=typeof r)throw new TypeError('"listener" argument must be a function');if((n=e._events)?(n.newListener&&(e.emit("newListener",t,r.listener?r.listener:r),n=e._events),o=n[t]):(n=e._events=new Ya,e._eventsCount=0),o){if("function"==typeof o?o=n[t]=i?[r,o]:[o,r]:i?o.unshift(r):o.push(r),!o.warned&&(s=ec(e))&&s>0&&o.length>s){o.warned=!0;var c=new Error("Possible EventEmitter memory leak detected. "+o.length+" "+t+" listeners added. Use emitter.setMaxListeners() to increase limit");c.name="MaxListenersExceededWarning",c.emitter=e,c.type=t,c.count=o.length,a=c,"function"==typeof console.warn?console.warn(a):console.log(a)}}else o=n[t]=r,++e._eventsCount;return e}function ac(e,t,r){var i=!1;function s(){e.removeListener(t,s),i||(i=!0,r.apply(e,arguments))}return s.listener=r,s}function cc(e){var t=this._events;if(t){var r=t[e];if("function"==typeof r)return 1;if(r)return r.length}return 0}function dc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Ya.prototype=Object.create(null),Za.EventEmitter=Za,Za.usingDomains=!1,Za.prototype.domain=void 0,Za.prototype._events=void 0,Za.prototype._maxListeners=void 0,Za.defaultMaxListeners=10,Za.init=function(){this.domain=null,Za.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Ya,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Za.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw new TypeError('"n" argument must be a positive number');return this._maxListeners=e,this},Za.prototype.getMaxListeners=function(){return ec(this)},Za.prototype.emit=function(e){var t,r,i,s,n,o,a,c="error"===e;if(o=this._events)c=c&&null==o.error;else if(!c)return!1;if(a=this.domain,c){if(t=arguments[1],!a){if(t instanceof Error)throw t;var d=new Error('Uncaught, unspecified "error" event. ('+t+")");throw d.context=t,d}return t||(t=new Error('Uncaught, unspecified "error" event')),t.domainEmitter=this,t.domain=a,t.domainThrown=!1,a.emit("error",t),!1}if(!(r=o[e]))return!1;var l="function"==typeof r;switch(i=arguments.length){case 1:tc(r,l,this);break;case 2:rc(r,l,this,arguments[1]);break;case 3:ic(r,l,this,arguments[1],arguments[2]);break;case 4:sc(r,l,this,arguments[1],arguments[2],arguments[3]);break;default:for(s=new Array(i-1),n=1;n<i;n++)s[n-1]=arguments[n];nc(r,l,this,s)}return!0},Za.prototype.addListener=function(e,t){return oc(this,e,t,!1)},Za.prototype.on=Za.prototype.addListener,Za.prototype.prependListener=function(e,t){return oc(this,e,t,!0)},Za.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,ac(this,e,t)),this},Za.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,ac(this,e,t)),this},Za.prototype.removeListener=function(e,t){var r,i,s,n,o;if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');if(!(i=this._events))return this;if(!(r=i[e]))return this;if(r===t||r.listener&&r.listener===t)0==--this._eventsCount?this._events=new Ya:(delete i[e],i.removeListener&&this.emit("removeListener",e,r.listener||t));else if("function"!=typeof r){for(s=-1,n=r.length;n-- >0;)if(r[n]===t||r[n].listener&&r[n].listener===t){o=r[n].listener,s=n;break}if(s<0)return this;if(1===r.length){if(r[0]=void 0,0==--this._eventsCount)return this._events=new Ya,this;delete i[e]}else!function(e,t){for(var r=t,i=r+1,s=e.length;i<s;r+=1,i+=1)e[r]=e[i];e.pop()}(r,s);i.removeListener&&this.emit("removeListener",e,o||t)}return this},Za.prototype.off=function(e,t){return this.removeListener(e,t)},Za.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Ya,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Ya:delete r[e]),this;if(0===arguments.length){for(var i,s=Object.keys(r),n=0;n<s.length;++n)"removeListener"!==(i=s[n])&&this.removeAllListeners(i);return this.removeAllListeners("removeListener"),this._events=new Ya,this._eventsCount=0,this}if("function"==typeof(t=r[e]))this.removeListener(e,t);else if(t)do{this.removeListener(e,t[t.length-1])}while(t[0]);return this},Za.prototype.listeners=function(e){var t,r=this._events;return r&&(t=r[e])?"function"==typeof t?[t.listener||t]:function(e){for(var t=new Array(e.length),r=0;r<t.length;++r)t[r]=e[r].listener||e[r];return t}(t):[]},Za.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):cc.call(e,t)},Za.prototype.listenerCount=cc,Za.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class lc extends Za{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Ka||(Ka={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Qa||(Qa={})),function(e){e.OutboundNetworkQuality="outbound-network-quality",e.InboundNetworkQuality="inbound-network-quality",e.OutboundNetworkMediaLatency="outbound-network-media-latency",e.InboundNetworkMediaLatency="inbound-network-media-latency",e.NetworkMediaSyncFailure="network-media-sync-failure",e.OutboundNetworkThroughput="outbound-network-throughput",e.InboundNetworkThroughput="inbound-network-throughput",e.EncoderCPUThrottling="encoder-cpu-throttling",e.DecoderCPUThrottling="decoder-cpu-throttling",e.ServerIssue="server-issue",e.UnknownVideoDecoderIssue="unknown-video-decoder",e.LowInboundMOS="low-inbound-mean-opinion-score",e.LowOutboundMOS="low-outbound-mean-opinion-score"}(Xa||(Xa={}));class pc extends Za{static STATS_REPORT_READY_EVENT="stats-report-ready";static STATS_REPORTS_PARSED="stats-reports-parsed";isStopped=!1;reportTimer;getStatsInterval;compositeStatsParser;constructor(e){super(),this.compositeStatsParser=e.compositeStatsParser,this.getStatsInterval=e.getStatsInterval??1e4}get isRunning(){return!!this.reportTimer&&!this.isStopped}startReporting(){if(this.reportTimer)return;const e=()=>setTimeout((()=>{this.isStopped?this.reportTimer=void 0:this.parseReports().finally((()=>{this.reportTimer=e()}))}),this.getStatsInterval);this.isStopped=!1,this.reportTimer=e()}stopReporting(){this.isStopped=!0,this.reportTimer&&(clearTimeout(this.reportTimer),this.reportTimer=void 0)}async parseReports(){const e=Date.now(),t=await this.compositeStatsParser.parse(),r=Date.now()-e;this.emit(pc.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(pc.STATS_REPORT_READY_EVENT,e)}))}}const uc=(()=>{const e=new Map;return t=>{const{taskId:r,delayMs:i,maxJitterMs:s,callback:n}=t,o=Math.ceil(Math.random()*(s||0)),a=e.get(r);a&&clearTimeout(a);const c=setTimeout((()=>{n(),e.delete(r)}),i+o);e.set(r,c)}})();class hc{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,uc({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:i}}calculateOutboundScore(e){const t=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.remote?.audio.inbound||[],...r.remote?.video.inbound||[]],{packetsSent:s}=e.connection,n=r.connection.packetsSent,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateInboundScore(e){const t=[...e.audio?.inbound,...e.video?.inbound];if(!t.length)return;const r=this.#e[e.connection.id];if(!r)return;const i=[...r.video?.inbound,...r.audio?.inbound],{packetsReceived:s}=e.connection,n=r.connection.packetsReceived,o=t.reduce(((e,t)=>{const r=i.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),a=1e3*e.connection.currentRoundTripTime||0,{sumJitter:c}=o,d=c/t.length,l=s-n,p=o.packetsLost-o.lastPacketsLost,u=l&&p?Math.round(100*p/(l+p)):0;return this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u})}calculateMOS({avgJitter:e,rtt:t,packetsLoss:r}){const i=t+2*e+10;let s=i<160?93.2-i/40:93.2-i/120-10;return s-=2.5*r,1+.035*s+7e-6*s*(s-60)*(100-s)}}class fc{#e;#t;constructor(e={}){this.#e=new Map,this.#t=e.statsCleanupTtlMs??35e3}detect(e){const t=this.performDetection(e);return this.performPrevStatsCleanup({connectionId:e.connection.id}),t}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;this.#e.has(t)&&uc({taskId:t,delayMs:this.#t,callback:()=>{this.deleteLastProcessedStats(t),"function"==typeof r&&r()}})}setLastProcessedStats(e,t){this.#e.set(e,t)}getLastProcessedStats(e){return this.#e.get(e)}deleteLastProcessedStats(e){this.#e.delete(e)}}class mc extends fc{#r;constructor(e={}){super(e),this.#r=e.availableOutgoingBitrateThreshold??1e5}performDetection(e){const t=[],{availableOutgoingBitrate:r}=e.connection;if(void 0===r)return t;const i=e.audio.outbound.reduce(((e,t)=>e+t.targetBitrate),0),s=e.video.outbound.reduce(((e,t)=>e+t.bitrate),0);if(!i&&!s)return t;const n={availableOutgoingBitrate:r,videoStreamsTotalBitrate:s,audioStreamsTotalTargetBitrate:i};return i>r||s>0&&r<this.#r?(t.push({statsSample:n,type:Qa.Network,reason:Xa.OutboundNetworkThroughput}),t):t}}class gc extends fc{#i;constructor(e={}){super(e),this.#i=e.framesDroppedThreshold??.5}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.inbound.filter((e=>e.framesDropped>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesDropped===t.framesDropped)return;const s=e.framesReceived-t.framesReceived,n=e.framesDecoded-t.framesDecoded,o=e.framesDropped-t.framesDropped,a=o/s;if(0===s||0===n)return;const c={deltaFramesDropped:o,deltaFramesReceived:s,deltaFramesDecoded:n,framesDroppedPct:Math.round(100*a)};a>=this.#i&&r.push({statsSample:c,type:Qa.CPU,reason:Xa.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class vc extends fc{#s;constructor(e={}){super(e),this.#s=e.missedFramesThreshold??.15}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>e.framesEncoded>0)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;if(e.framesEncoded===t.framesEncoded)return;const s=e.framesEncoded-t.framesEncoded,n=e.framesSent-t.framesSent,o=1-n/s;if(0===s)return;if(s===n)return;const a={deltaFramesSent:n,deltaFramesEncoded:s,missedFramesPct:Math.round(100*o)};o>=this.#s&&r.push({statsSample:a,type:Qa.Network,reason:Xa.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class yc extends fc{highPacketLossThresholdPct;highJitterThreshold;highJitterBufferDelayThresholdMs;highRttThresholdMs;constructor(e={}){super(),this.highPacketLossThresholdPct=e.highPacketLossThresholdPct??5,this.highJitterThreshold=e.highJitterThreshold??200,this.highJitterBufferDelayThresholdMs=e.highJitterBufferDelayThresholdMs??500,this.highRttThresholdMs=e.highRttThresholdMs??250}performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.audio?.inbound,...e.video?.inbound];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.video?.inbound,...i.audio?.inbound],{packetsReceived:n}=e.connection,o=i.connection.packetsReceived,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc)),i=r?.jitterBufferDelay||0,n=r?.jitterBufferEmittedCount||0,o=t.jitterBufferDelay-i,a=t.jitterBufferEmittedCount-n,c=o&&a?1e3*o/a:0;return{sumJitter:e.sumJitter+t.jitter,sumJitterBufferDelayMs:e.sumJitterBufferDelayMs+c,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,sumJitterBufferDelayMs:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d,sumJitterBufferDelayMs:l}=a,p=d/r.length,u=l/r.length,h=n-o,f=a.packetsLost-a.lastPacketsLost,m=h&&f?Math.round(100*f/(h+f)):0,g=m>this.highPacketLossThresholdPct,v=p>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,k={rtt:c,packetLossPct:m,avgJitter:p,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:k,type:Qa.Network,reason:Xa.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:k,type:Qa.Server,reason:Xa.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:k,type:Qa.Network,reason:Xa.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:k,type:Qa.Network,reason:Xa.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class bc extends fc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.audio.inbound,r=[],i=this.getLastProcessedStats(e.connection.id)?.audio.inbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s=e.track.insertedSamplesForDeceleration+e.track.removedSamplesForAcceleration,n=t.track.insertedSamplesForDeceleration+t.track.removedSamplesForAcceleration;if(s===n)return;const o=e.track.totalSamplesReceived-t.track.totalSamplesReceived,a=s-n,c=Math.round(100*a/o),d={correctedSamplesPct:c};c>5&&r.push({statsSample:d,type:Qa.Network,reason:Xa.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class wc extends fc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=[],r=[...e.remote?.audio.inbound||[],...e.remote?.video.inbound||[]];if(!r.length)return t;const i=this.getLastProcessedStats(e.connection.id);if(!i)return t;const s=[...i.remote?.audio.inbound||[],...i.remote?.video.inbound||[]],{packetsSent:n}=e.connection,o=i.connection.packetsSent,a=r.reduce(((e,t)=>{const r=s.find((e=>e.ssrc===t.ssrc));return{sumJitter:e.sumJitter+t.jitter,packetsLost:e.packetsLost+t.packetsLost,lastPacketsLost:e.lastPacketsLost+(r?.packetsLost||0)}}),{sumJitter:0,packetsLost:0,lastPacketsLost:0}),c=1e3*e.connection.currentRoundTripTime||0,{sumJitter:d}=a,l=d/r.length,p=n-o,u=a.packetsLost-a.lastPacketsLost,h=p&&u?Math.round(100*u/(p+u)):0,f=h>5,m=l>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:l,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Qa.Network,reason:Xa.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Qa.Network,reason:Xa.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class _c extends fc{performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}processData(e){const t=e.video.outbound.filter((e=>"none"!==e.qualityLimitationReason)),r=[],i=this.getLastProcessedStats(e.connection.id)?.video.outbound;return i?(t.forEach((e=>{const t=i.find((t=>t.ssrc===e.ssrc));if(!t)return;const s={qualityLimitationReason:e.qualityLimitationReason};e.framesSent>t.framesSent||("cpu"===e.qualityLimitationReason&&r.push({statsSample:s,type:Qa.CPU,reason:Xa.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Qa.Network,reason:Xa.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class Sc extends fc{UNKNOWN_DECODER="unknown";#n={};performDetection(e){const{connection:{id:t}}=e,r=this.processData(e);return this.setLastProcessedStats(t,e),r}performPrevStatsCleanup(e){const{connectionId:t,cleanupCallback:r}=e;super.performPrevStatsCleanup({...e,cleanupCallback:()=>{delete this.#n[t],"function"==typeof r&&r()}})}processData(e){const t=[],{id:r}=e.connection,i=this.getLastProcessedStats(r)?.video.inbound;return e.video.inbound.forEach((e=>{const{decoderImplementation:s,ssrc:n}=e,o=i?.find((e=>e.ssrc===n));if(o)if(s===this.UNKNOWN_DECODER){if(!this.hadLastDecoderWithIssue(r,n)){this.setLastDecoderWithIssue(r,n,this.UNKNOWN_DECODER);const i={mimeType:e.mimeType,decoderImplementation:s};t.push({ssrc:n,statsSample:i,type:Qa.Stream,reason:Xa.UnknownVideoDecoderIssue,trackIdentifier:e.track.trackIdentifier})}}else this.setLastDecoderWithIssue(r,n,void 0)})),t}setLastDecoderWithIssue(e,t,r){const i=this.#n[e]??{};void 0===r?delete i[t]:i[t]=r,this.#n[e]=i}hadLastDecoderWithIssue(e,t){const r=this.#n[e];return(r&&r[t])===this.UNKNOWN_DECODER}}const kc=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,Cc=(e,t,r)=>8*((e,t,r)=>{if(!t)return 0;const i=e[r],s=t[r];if(null==i||null==s)return 0;const n=Math.floor(e.timestamp)-Math.floor(t.timestamp);return 0===n?0:(Number(i)-Number(s))/n*1e3})(e,t,r);class Rc{connections=[];statsParser;constructor(e){this.statsParser=e.statsParser}listConnections(){return[...this.connections]}addPeerConnection(e){this.connections.push({id:e.id??String(Date.now()+Math.random().toString(32)),pc:e.pc})}removePeerConnection(e){const t=this.connections.findIndex((({pc:t})=>t===e.pc));t>=0&&this.removeConnectionsByIndexes([t])}async parse(){const e=[],t=this.connections.map((async(t,r)=>{if(!kc(t.pc))return this.statsParser.parse(t);e.unshift(r)}));return e.length&&this.removeConnectionsByIndexes(e),(await Promise.all(t)).filter((e=>void 0!==e))}removeConnectionsByIndexes(e){e.forEach((e=>{this.connections.splice(e,1)}))}}class Pc{prevStats=new Map;allowedReportTypes=new Set(["candidate-pair","inbound-rtp","outbound-rtp","remote-outbound-rtp","remote-inbound-rtp","track","transport"]);logger;constructor(e){this.logger=e.logger}get previouslyParsedStatsConnectionsIds(){return[...this.prevStats.keys()]}async parse(e){if(!kc(e.pc))return this.getConnectionStats(e);this.logger.debug("Skip stats parsing. Connection is closed.",{connection:e})}async getConnectionStats(e){const{pc:t,id:r}=e;try{const i=Date.now(),s=await Promise.all(t.getReceivers().map((e=>e.getStats()))),n=await Promise.all(t.getSenders().map((e=>e.getStats())));return{id:r,stats:this.mapReportsStats([...s,...n],e),timeTaken:Date.now()-i}}catch(e){return void this.logger.error("Failed to get stats for PC",{id:r,pc:t,error:e})}}mapReportsStats(e,t){const r={audio:{inbound:[],outbound:[]},video:{inbound:[],outbound:[]},connection:{},remote:{video:{inbound:[],outbound:[]},audio:{inbound:[],outbound:[]}}};e.forEach((e=>{e.forEach((t=>{this.allowedReportTypes.has(t.type)&&this.updateMappedStatsWithReportItemData(t,r,e)}))}));const{id:i}=t,s=this.prevStats.get(i);return s&&this.propagateStatsWithRateValues(r,s.stats),this.prevStats.set(i,{stats:r,ts:Date.now()}),uc({taskId:i,delayMs:35e3,callback:()=>this.prevStats.delete(i)}),r}updateMappedStatsWithReportItemData(e,t,r){const i=e.type;if("candidate-pair"===i&&"succeeded"===e.state&&e.nominated)return void(t.connection=this.prepareConnectionStats(e,r));const s=this.getMediaType(e);if(s)if("outbound-rtp"!==i)if("inbound-rtp"!==i)"remote-outbound-rtp"!==i?"remote-inbound-rtp"===i&&(this.mapConnectionStatsIfNecessary(t,e,r),t.remote[s].inbound.push({...e})):t.remote[s].outbound.push({...e});else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{};this.mapConnectionStatsIfNecessary(t,e,r);const n={...e,track:{...i}};t[s].inbound.push(n)}else{const i=r.get(e.trackId)||r.get(e.mediaSourceId)||{},n={...e,track:{...i}};t[s].outbound.push(n)}}getMediaType(e){const t=e.mediaType||e.kind;if(!["audio","video"].includes(t)){const{id:t}=e;if(!t)return;return String(t).includes("Video")?"video":String(t).includes("Audio")?"audio":void 0}return t}propagateStatsWithRateValues(e,t){e.audio.inbound.forEach((e=>{const r=t.audio.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesReceived"),e.packetRate=Cc(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=Cc(e,r,"bytesSent"),e.packetRate=Cc(e,r,"packetsSent")}))}mapConnectionStatsIfNecessary(e,t,r){if(e.connection.id||!t.transportId)return;const i=r.get(t.transportId);if(i&&i.selectedCandidatePairId){const t=r.get(i.selectedCandidatePairId);e.connection=this.prepareConnectionStats(t,r)}}prepareConnectionStats(e,t){if(!e||!t)return{};const r={...e};if(r.remoteCandidateId){const e=t.get(r.remoteCandidateId);r.remote={...e}}if(r.localCandidateId){const e=t.get(r.localCandidateId);r.local={...e}}return r}}class Tc{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new lc,e.onIssues&&this.eventEmitter.on(Ka.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Ka.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new _c,new gc,new vc,new yc,new wc,new bc,new mc,new Sc],this.networkScoresCalculator=e.networkScoresCalculator??new hc,this.compositeStatsParser=e.compositeStatsParser??new Rc({statsParser:new Pc({logger:this.logger})}),this.statsReporter=e.statsReporter??new pc({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(pc.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(pc.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Ka.StatsParsingFinished,t)}))}watchNewPeerConnections(){this.#o?this.logger.warn("WebRTCIssueDetector is already started. Skip processing"):(this.logger.info("Start watching peer connections"),this.#o=!0,this.statsReporter.startReporting())}stopWatchingNewPeerConnections(){this.#o?(this.logger.info("Stop watching peer connections"),this.#o=!1,this.statsReporter.stopReporting()):this.logger.warn("WebRTCIssueDetector is already stopped. Skip processing")}handleNewPeerConnection(e){this.#o?(this.logger.debug("Handling new peer connection",e),this.compositeStatsParser.addPeerConnection({pc:e})):this.logger.debug("Skip handling new peer connection. Detector is not running",e)}emitIssues(e){this.eventEmitter.emit(Ka.Issue,e)}detectIssues({data:e,ignoreSSRCList:t}){let r=this.detectors.reduce(((t,r)=>[...t,...r.detect(e)]),[]);t?.length&&(r=r.filter((e=>!e.ssrc||!t.includes(e.ssrc)))),r.length>0&&this.emitIssues(r)}calculateNetworkScores(e){const t=this.networkScoresCalculator.calculate(e);this.eventEmitter.emit(Ka.NetworkScoresUpdated,t)}wrapRTCPeerConnection(){if(!window.RTCPeerConnection)return void this.logger.warn("No RTCPeerConnection found in browser window. Skipping");const e=window.RTCPeerConnection,t=e=>this.handleNewPeerConnection(e);function r(r){const i=new e(r);return t(i),i}r.prototype=e.prototype,window.RTCPeerConnection=r}}class Ec{constructor(e){const{socketClient:t,loadBalancerApiClient:r,onLogMessage:i}=e;this.socket=t,this.loadBalancerClient=r,this.logger=new Qe({namespace:"Network",logLevel:e.logLevel,onLogMessage:i})}closeRemoteProducer(e){return i(this,void 0,void 0,(function*(){yield this.socket.request(ae,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return i(this,void 0,void 0,(function*(){this.sendTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.sendTransport)),this.sendTransport=void 0):this.logger.warn("closeSendTransport()",{message:"No available send transport"})}))}closeReceiveTransport(){var e;return i(this,void 0,void 0,(function*(){this.receiveTransport?((null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&(yield this.closeTransport(this.receiveTransport)),this.receiveTransport=void 0):this.logger.warn("closeReceiveTransport()",{message:"No available receive transport"})}))}closeTransport(e){return i(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(Pe,{transportId:e.id});return this.logger.debug("closeTransport()",{transport:e}),Boolean(t)}catch(e){return this.logger.error("closeTransport()",{error:e}),!1}finally{e.close()}}))}createSendTransport(e){return i(this,void 0,void 0,(function*(){if(this.sendTransport)return void this.logger.warn("createSendTransport()",{message:"Send transport already exists"});const t=yield this.socket.request(Re,{sctpCapabilities:e.sctpCapabilities,localDirection:"send"}),r=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:this.sendTransport}),r.on(Le,(({dtlsParameters:e},s,n)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:r.id,dtlsRole:e.role})}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),r.on(Ie,((e,t,s)=>i(this,void 0,void 0,(function*(){try{const{id:i}=yield this.socket.request(Ee,{transportId:r.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:i}),this.logger.debug("sendTransport.produce()",{producerId:i,transportId:r.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:r.id,kind:e.kind}),s(t)}})))),r.on(xe,(e=>{this.logger.debug("sendTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.warn("sendTransport.restartIce()",{state:e,sendTransportId:r.id})),setTimeout((()=>{var e;"disconnected"===r.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("sendTransport is closed before websocket is closed",{sendTransportId:r.id})}),3e3)})),this.sendTransport=r}))}createRecvTransport(e){return i(this,void 0,void 0,(function*(){if(this.receiveTransport)return void this.logger.warn("createReceiveTransport()",{message:"Receive transport already exists"});const t=yield this.socket.request(Re,{localDirection:"receive"}),r=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:this.receiveTransport}),r.on(Le,(({dtlsParameters:e},t,s)=>i(this,void 0,void 0,(function*(){try{yield this.socket.request(Te,{transportId:r.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:r.id,dtlsRole:e.role})}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),r.on(xe,(e=>{this.logger.debug("receiveTransport.state",{state:e}),"failed"===e&&(this.restartIce(r),this.logger.debug("receiveTransport.restartIce()",{recvTransportId:r.id})),setTimeout((()=>{var e;"disconnected"===r.connectionState&&(null===(e=this.socket.connection)||void 0===e?void 0:e.connected)&&this.logger.warn("receiveTransport is closed before websocket is closed",{recvTransportId:r.id})}),3e3)})),this.receiveTransport=r}))}getIceParameters(e){return i(this,void 0,void 0,(function*(){const t=yield this.socket.request(Me,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);return this.logger.debug("getIceParameters()",{iceParameters:t}),t}))}restartIce(e){return i(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.debug("restartIce() completed",{iceParameters:t})}catch(e){this.logger.error("restartIce()",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:r,channelId:s,producerPeerId:n}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createConsumer()",{producerId:e});const o=yield this.socket.request(ge,{producerId:e,transportId:i.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:r,channelId:s},producerPeerId:n}),a=yield i.consume(o),{producerPaused:c}=o;return this.logger.debug("Consumer created",{consumer:a,isProducerPaused:c}),{consumer:a,isProducerPaused:c}}))}createDataConsumer({producerId:e,appId:t,channelId:r}){return i(this,void 0,void 0,(function*(){const i=this.receiveTransport;if(!i)throw this.logger.error("createDataConsumer()",{reason:"missing receive transport"}),new Error("Failed to create consumer");this.logger.debug("createDataConsumer()",{producerId:e});const s=yield this.socket.request(ve,{dataProducerId:e,transportId:i.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:r}}),n=yield i.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(ye,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(we,{consumerId:e})}))}pauseRemoteConsumer(e){return i(this,void 0,void 0,(function*(){return this.socket.request(be,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return i(this,void 0,void 0,(function*(){return this.socket.request(k,{peerId:e,appData:t})}))}getAudioObserverProducer(){return i(this,void 0,void 0,(function*(){return this.socket.request(E)}))}getTransportsStateInfo(){return i(this,void 0,void 0,(function*(){const[e,t]=yield Promise.all([this.getParsedTransportStats(this.receiveTransport),this.getParsedTransportStats(this.sendTransport)]);return{receive:e,send:t}}))}getParsedTransportStats(e){return i(this,void 0,void 0,(function*(){if(e)try{const t=Array.from((yield e.getStats()).values()),r=t.find((e=>"local-candidate"===e.type)),i=t.find((e=>"remote-candidate"===e.type)),s=t.find((e=>"transport"===e.type));return{dtlsState:null==s?void 0:s.dtlsState,iceState:null==s?void 0:s.iceState,dtlsRole:null==s?void 0:s.dtlsRole,iceRole:null==s?void 0:s.iceRole,selectedCandidatePairChanges:null==s?void 0:s.selectedCandidatePairChanges,tlsVersion:null==s?void 0:s.tlsVersion,localCandidateState:{ip:null==r?void 0:r.ip,address:null==r?void 0:r.address,port:null==r?void 0:r.port,protocol:null==r?void 0:r.protocol,candidateType:null==r?void 0:r.candidateType},remoteCandidateState:{ip:null==i?void 0:i.ip,address:null==i?void 0:i.address,port:null==i?void 0:i.port,protocol:null==i?void 0:i.protocol,candidateType:null==i?void 0:i.candidateType}}}catch(e){return void this.logger.warn("getParsedTransportStats()",{error:e})}else this.logger.debug("getParsedTransportStats()",{message:"Transport is missing"})}))}}const Dc=e=>![f.NotFoundError,f.NotAllowedError,f.DeviceIsBusy].includes(e);class xc{constructor(e){this.isEnableVideoDevicesLock=!1,this.isEnableAudioDevicesLock=!1,this.isDevicesDetected=!1,this.availableVideoDevices=[],this.availableAudioDevices=[];const{clientEventEmitter:t,logLevel:r,onLogMessage:i}=e;this.clientEventEmitter=t,this.logger=new Qe({namespace:"System",logLevel:r,onLogMessage:i}),this.deviceChangeHandler=this.deviceChangeHandler.bind(this),this.listenDevices()}setIsEnableVideoDevicesLock(e){this.isEnableVideoDevicesLock=e}setIsEnableAudioDevicesLock(e){this.isEnableAudioDevicesLock=e}setAvailableVideoDevices(e){this.availableVideoDevices=e}setAvailableAudioDevices(e){this.availableAudioDevices=e}requestMediaDevicesAccess(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{return(yield navigator.mediaDevices.getUserMedia(e)).getTracks()}catch(t){if(this.logger.error("getUserMedia()",{error:t,constraints:e}),"NotAllowedError"===t.name)throw new Error(f.NotAllowedError);if("NotReadableError"===t.name)throw new Error(f.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(f.NotFoundError);throw new Error(f.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return i(this,void 0,void 0,(function*(){const e=yield navigator.mediaDevices.enumerateDevices(),t=[],r=[];e.forEach((e=>{""!==e.deviceId&&("videoinput"===e.kind&&t.push(e),"audioinput"===e.kind&&r.push(e))})),this.setAvailableVideoDevices(t),this.setAvailableAudioDevices(r);const i=({label:e,kind:t})=>({label:e,kind:t});return this.logger.debug("Devices list updated",{videoDevices:t.map(i),audioDevices:r.map(i)}),e}))}detectDevices(){return i(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Dc(e.message))throw e;e.message!==f.DeviceIsBusy&&(yield this.assertHasAccessToMediaDevices({audio:!0}),yield this.assertHasAccessToMediaDevices({video:!0}))}this.isDevicesDetected=!0;const t=yield this.refreshAvailableMediaDevicesList();e.forEach((e=>e.stop()));const r=t.some((e=>"audioinput"===e.kind)),i=t.some((e=>"videoinput"===e.kind));if(!r&&!i)throw new Error(f.NoDevices)}))}deviceChangeHandler(){return i(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(j,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return i(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Dc(e.message))throw e}}))}}class Mc{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Qe({logLevel:t.logLevel,namespace:"ChannelEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(b,(e=>{this.engine.clientEventEmitter.safeEmit(D,e),this.logger.debug("New channel event",{event:e})})),e.on(w,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(x,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(S,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(M,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(P,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(T,(e=>{this.engine.clientEventEmitter.safeEmit(O,e),this.logger.info("Notify the channel that it has disconnected due to the activity confirmation expiring",e)})),e.on(R,(e=>{this.engine.clientEventEmitter.safeEmit(I,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(k,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(k,t)}))}}class Lc{constructor(e){this.queue=new Fo;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Qe({logLevel:t.logLevel,namespace:"MediasoupEvents",onLogMessage:r})}subscribeToEvents(){const{connection:e}=this.engine.network.socket;if(!e)throw this.logger.error("subscribeToEvents()",{error:"Socket connection not initialized"}),new Error("Socket connection not initialized");e.on(ae,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ae,e)})),e.on(oe,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(oe,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ye,e)})),e.on(we,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(we,e)})),e.on(be,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(be,e)})),e.on(Se,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(Se,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(_e,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(_e,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(_e,e)})),e.on(he,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(he,e)})),e.on(me,(({producerId:e,spatialLayer:t})=>i(this,void 0,void 0,(function*(){yield this.queue.push((()=>i(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),me)})))),e.on(fe,(({peerId:e,producerId:t,spatialLayer:r})=>i(this,void 0,void 0,(function*(){const i=this.engine.peers.find((t=>t.id===e));i&&!i.isMe&&i.observer.safeEmit(fe,{peerId:e,producerId:t,spatialLayer:r})})))),e.on(De,(({reason:e,transportId:t,direction:r,timeout:s})=>i(this,void 0,void 0,(function*(){const i=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));i&&"connected"!==i.connectionState&&(this.logger.warn(De,{reason:e,transportId:t,direction:r,timeout:s}),this.engine.clientEventEmitter.emit(F,{direction:r,reason:e}))})))),e.on(le,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!0,r.observer.safeEmit(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({peerId:e,producerId:t})=>{const r=this.engine.peers.find((t=>t.id===e)),i=null==r?void 0:r.producers.get(t);r&&i&&(i.paused=!1,r.observer.safeEmit(X,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(ue,(({label:e})=>i(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit(G,t),this.engine.clientEventEmitter.emit(B,{label:e}),yield this.engine.media.deleteTrack(t))}))))}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return i(this,void 0,void 0,(function*(){const r=this.engine.media.getAllTracks().find((t=>{var r;return(null===(r=t.getProducer())||void 0===r?void 0:r.id)===e}));if(!r)return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Producer not found"});if(!(r instanceof za))return void this.logger.warn("producerRequestMaxSpatialLayer()",{message:"Wrong producer kind"});const i=r.getMaxSpatialLayer();i!==t?(yield r.setMaxSpatialLayer(t),yield this.engine.network.socket.request(fe,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}var Ic=/^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,Oc=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],Ac=function(e){var t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));for(var s,n,o=Ic.exec(e||""),a={},c=14;c--;)a[Oc[c]]=o[c]||"";return-1!=r&&-1!=i&&(a.source=t,a.host=a.host.substring(1,a.host.length-1).replace(/;/g,":"),a.authority=a.authority.replace("[","").replace("]","").replace(/;/g,":"),a.ipv6uri=!0),a.pathNames=function(e,t){var r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.substr(0,1)&&0!==t.length||i.splice(0,1);"/"==t.substr(t.length-1,1)&&i.splice(i.length-1,1);return i}(0,a.path),a.queryKey=(s=a.query,n={},s.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,r){t&&(n[t]=r)})),n),a};var jc={exports:{}};try{jc.exports="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){jc.exports=!1}var Fc=jc.exports,Nc="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Bc(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||Fc))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Nc[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function Uc(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const qc=setTimeout,Wc=clearTimeout;function Vc(e,t){t.useNativeTimers?(e.setTimeoutFn=qc.bind(Nc),e.clearTimeoutFn=Wc.bind(Nc)):(e.setTimeoutFn=setTimeout.bind(Nc),e.clearTimeoutFn=clearTimeout.bind(Nc))}var zc=$c;function $c(e){if(e)return function(e){for(var t in $c.prototype)e[t]=$c.prototype[t];return e}(e)}$c.prototype.on=$c.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},$c.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},$c.prototype.off=$c.prototype.removeListener=$c.prototype.removeAllListeners=$c.prototype.removeEventListener=function(e,t){if(this._callbacks=this._callbacks||{},0==arguments.length)return this._callbacks={},this;var r,i=this._callbacks["$"+e];if(!i)return this;if(1==arguments.length)return delete this._callbacks["$"+e],this;for(var s=0;s<i.length;s++)if((r=i[s])===t||r.fn===t){i.splice(s,1);break}return 0===i.length&&delete this._callbacks["$"+e],this},$c.prototype.emit=function(e){this._callbacks=this._callbacks||{};for(var t=new Array(arguments.length-1),r=this._callbacks["$"+e],i=1;i<arguments.length;i++)t[i-1]=arguments[i];if(r){i=0;for(var s=(r=r.slice(0)).length;i<s;++i)r[i].apply(this,t)}return this},$c.prototype.emitReserved=$c.prototype.emit,$c.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},$c.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Gc=Object.create(null);Gc.open="0",Gc.close="1",Gc.ping="2",Gc.pong="3",Gc.message="4",Gc.upgrade="5",Gc.noop="6";const Hc=Object.create(null);Object.keys(Gc).forEach((e=>{Hc[Gc[e]]=e}));const Jc={type:"error",data:"parser error"},Kc="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Qc="function"==typeof ArrayBuffer,Xc=({type:e,data:t},r,i)=>{return Kc&&t instanceof Blob?r?i(t):Yc(t,i):Qc&&(t instanceof ArrayBuffer||(s=t,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(s):s&&s.buffer instanceof ArrayBuffer))?r?i(t):Yc(new Blob([t]),i):i(Gc[e]+(t||""));var s},Yc=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+e)},r.readAsDataURL(e)};for(var Zc="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",ed="undefined"==typeof Uint8Array?[]:new Uint8Array(256),td=0;td<Zc.length;td++)ed[Zc.charCodeAt(td)]=td;const rd="function"==typeof ArrayBuffer,id=(e,t)=>{if("string"!=typeof e)return{type:"message",data:nd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:sd(e.substring(1),t)};return Hc[r]?e.length>1?{type:Hc[r],data:e.substring(1)}:{type:Hc[r]}:Jc},sd=(e,t)=>{if(rd){const r=function(e){var t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);var d=new ArrayBuffer(o),l=new Uint8Array(d);for(t=0;t<a;t+=4)r=ed[e.charCodeAt(t)],i=ed[e.charCodeAt(t+1)],s=ed[e.charCodeAt(t+2)],n=ed[e.charCodeAt(t+3)],l[c++]=r<<2|i>>4,l[c++]=(15&i)<<4|s>>2,l[c++]=(3&s)<<6|63&n;return d}(e);return nd(r,t)}return{base64:!0,data:e}},nd=(e,t)=>"blob"===t&&e instanceof ArrayBuffer?new Blob([e]):e,od=String.fromCharCode(30);class ad extends zc{constructor(e){super(),this.writable=!1,Vc(this,e),this.opts=e,this.query=e.query,this.readyState="",this.socket=e.socket}onError(e,t){const r=new Error(e);return r.type="TransportError",r.description=t,super.emit("error",r),this}open(){return"closed"!==this.readyState&&""!==this.readyState||(this.readyState="opening",this.doOpen()),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emit("open")}onData(e){const t=id(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emit("packet",e)}onClose(){this.readyState="closed",super.emit("close")}}var cd,dd="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),ld={},pd=0,ud=0;function hd(e){var t="";do{t=dd[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function fd(){var e=hd(+new Date);return e!==cd?(pd=0,cd=e):e+"."+hd(pd++)}for(;ud<64;ud++)ld[dd[ud]]=ud;fd.encode=hd,fd.decode=function(e){var t=0;for(ud=0;ud<e.length;ud++)t=64*t+ld[e.charAt(ud)];return t};var md=fd,gd={encode:function(e){var t="";for(var r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t},decode:function(e){for(var t={},r=e.split("&"),i=0,s=r.length;i<s;i++){var n=r[i].split("=");t[decodeURIComponent(n[0])]=decodeURIComponent(n[1])}return t}};class vd extends ad{constructor(){super(...arguments),this.polling=!1}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emit("poll")}onData(e){((e,t)=>{const r=e.split(od),i=[];for(let e=0;e<r.length;e++){const s=id(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose(),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emit("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Xc(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(od))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emit("drain")}))}))}uri(){let e=this.query||{};const t=this.opts.secure?"https":"http";let r="";!1!==this.opts.timestampRequests&&(e[this.opts.timestampParam]=md()),this.supportsBinary||e.sid||(e.b64=1),this.opts.port&&("https"===t&&443!==Number(this.opts.port)||"http"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port);const i=gd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}}function yd(){}const bd=null!=new Bc({xdomain:!1}).responseType;class wd extends zc{constructor(e,t){super(),Vc(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.async=!1!==t.async,this.data=void 0!==t.data?t.data:null,this.create()}create(){const e=Uc(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");e.xdomain=!!this.opts.xd,e.xscheme=!!this.opts.xs;const t=this.xhr=new Bc(e);try{t.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders){t.setDisableHeaderCheck&&t.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&t.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{t.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{t.setRequestHeader("Accept","*/*")}catch(e){}"withCredentials"in t&&(t.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(t.timeout=this.opts.requestTimeout),t.onreadystatechange=()=>{4===t.readyState&&(200===t.status||1223===t.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof t.status?t.status:0)}),0))},t.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=wd.requestsCount++,wd.requests[this.index]=this)}onSuccess(){this.emit("success"),this.cleanup()}onData(e){this.emit("data",e),this.onSuccess()}onError(e){this.emit("error",e),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=yd,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete wd.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&this.onData(e)}abort(){this.cleanup()}}if(wd.requestsCount=0,wd.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",_d);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Nc?"pagehide":"unload",_d,!1)}function _d(){for(let e in wd.requests)wd.requests.hasOwnProperty(e)&&wd.requests[e].abort()}const Sd="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),kd=Nc.WebSocket||Nc.MozWebSocket,Cd="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();class Rd extends ad{constructor(e){super(e),this.supportsBinary=!e.forceBase64}get name(){return"websocket"}doOpen(){if(!this.check())return;const e=this.uri(),t=this.opts.protocols,r=Cd?{}:Uc(this.opts,"agent","perMessageDeflate","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","localAddress","protocolVersion","origin","maxPayload","family","checkServerIdentity");this.opts.extraHeaders&&(r.headers=this.opts.extraHeaders);try{this.ws=Cd?new kd(e,t,r):t?new kd(e,t):new kd(e)}catch(e){return this.emit("error",e)}this.ws.binaryType=this.socket.binaryType||"arraybuffer",this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=this.onClose.bind(this),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Xc(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&Sd((()=>{this.writable=!0,this.emit("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){let e=this.query||{};const t=this.opts.secure?"wss":"ws";let r="";this.opts.port&&("wss"===t&&443!==Number(this.opts.port)||"ws"===t&&80!==Number(this.opts.port))&&(r=":"+this.opts.port),this.opts.timestampRequests&&(e[this.opts.timestampParam]=md()),this.supportsBinary||(e.b64=1);const i=gd.encode(e);return t+"://"+(-1!==this.opts.hostname.indexOf(":")?"["+this.opts.hostname+"]":this.opts.hostname)+r+this.opts.path+(i.length?"?"+i:"")}check(){return!(!kd||"__initialize"in kd&&this.name===Rd.prototype.name)}}const Pd={websocket:Rd,polling:class extends vd{constructor(e){if(super(e),"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port,this.xs=e.secure!==t}const t=e&&e.forceBase64;this.supportsBinary=bd&&!t}request(e={}){return Object.assign(e,{xd:this.xd,xs:this.xs},this.opts),new wd(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",(e=>{this.onError("xhr post error",e)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",(e=>{this.onError("xhr poll error",e)})),this.pollXhr=e}}};class Td extends zc{constructor(e,t={}){super(),e&&"object"==typeof e&&(t=e,e=null),e?(e=Ac(e),t.hostname=e.host,t.secure="https"===e.protocol||"wss"===e.protocol,t.port=e.port,e.query&&(t.query=e.query)):t.host&&(t.hostname=Ac(t.host).host),Vc(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket"],this.readyState="",this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!0},t),this.opts.path=this.opts.path.replace(/\/$/,"")+"/","string"==typeof this.opts.query&&(this.opts.query=gd.decode(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&addEventListener("beforeunload",(()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())}),!1),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close")},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=function(e){const t={};for(let r in e)e.hasOwnProperty(r)&&(t[r]=e[r]);return t}(this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts.transportOptions[e],this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new Pd[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Td.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))e="websocket";else{if(0===this.transports.length)return void this.setTimeoutFn((()=>{this.emitReserved("error","No transports available")}),0);e=this.transports[0]}this.readyState="opening";try{e=this.createTransport(e)}catch(e){return this.transports.shift(),void this.open()}e.open(),this.setTransport(e)}setTransport(e){this.transport&&this.transport.removeAllListeners(),this.transport=e,e.on("drain",this.onDrain.bind(this)).on("packet",this.onPacket.bind(this)).on("error",this.onError.bind(this)).on("close",(()=>{this.onClose("transport close")}))}probe(e){let t=this.createTransport(e),r=!1;Td.priorWebsocketSuccess=!1;const i=()=>{r||(t.send([{type:"ping",data:"probe"}]),t.once("packet",(e=>{if(!r)if("pong"===e.type&&"probe"===e.data){if(this.upgrading=!0,this.emitReserved("upgrading",t),!t)return;Td.priorWebsocketSuccess="websocket"===t.name,this.transport.pause((()=>{r||"closed"!==this.readyState&&(d(),this.setTransport(t),t.send([{type:"upgrade"}]),this.emitReserved("upgrade",t),t=null,this.upgrading=!1,this.flush())}))}else{const e=new Error("probe error");e.transport=t.name,this.emitReserved("upgradeError",e)}})))};function s(){r||(r=!0,d(),t.close(),t=null)}const n=e=>{const r=new Error("probe error: "+e);r.transport=t.name,s(),this.emitReserved("upgradeError",r)};function o(){n("transport closed")}function a(){n("socket closed")}function c(e){t&&e.name!==t.name&&s()}const d=()=>{t.removeListener("open",i),t.removeListener("error",n),t.removeListener("close",o),this.off("close",a),this.off("upgrading",c)};t.once("open",i),t.once("error",n),t.once("close",o),this.once("close",a),this.once("upgrading",c),t.open()}onOpen(){if(this.readyState="open",Td.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.resetPingTimeout(),this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){"closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length&&(this.transport.send(this.writeBuffer),this.prevBufferLen=this.writeBuffer.length,this.emitReserved("flush"))}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Td.priorWebsocketSuccess=!1,this.emitReserved("error",e),this.onClose("transport error",e)}onClose(e,t){"opening"!==this.readyState&&"open"!==this.readyState&&"closing"!==this.readyState||(this.clearTimeoutFn(this.pingTimeoutTimer),this.transport.removeAllListeners("close"),this.transport.close(),this.transport.removeAllListeners(),"function"==typeof removeEventListener&&removeEventListener("offline",this.offlineEventListener,!1),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Td.protocol=4,Td.protocol;const Ed="function"==typeof ArrayBuffer,Dd=Object.prototype.toString,xd="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Dd.call(Blob),Md="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===Dd.call(File);function Ld(e){return Ed&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||xd&&e instanceof Blob||Md&&e instanceof File}function Id(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Id(e[t]))return!0;return!1}if(Ld(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Id(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Id(e[t]))return!0;return!1}function Od(e){const t=[],r=e.data,i=e;return i.data=Ad(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Ad(e,t){if(!e)return e;if(Ld(e)){const r={_placeholder:!0,num:t.length};return t.push(e),r}if(Array.isArray(e)){const r=new Array(e.length);for(let i=0;i<e.length;i++)r[i]=Ad(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)e.hasOwnProperty(i)&&(r[i]=Ad(e[i],t));return r}return e}function jd(e,t){return e.data=Fd(e.data,t),e.attachments=void 0,e}function Fd(e,t){if(!e)return e;if(e&&e._placeholder)return t[e.num];if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Fd(e[r],t);else if("object"==typeof e)for(const r in e)e.hasOwnProperty(r)&&(e[r]=Fd(e[r],t));return e}var Nd;!function(e){e[e.CONNECT=0]="CONNECT",e[e.DISCONNECT=1]="DISCONNECT",e[e.EVENT=2]="EVENT",e[e.ACK=3]="ACK",e[e.CONNECT_ERROR=4]="CONNECT_ERROR",e[e.BINARY_EVENT=5]="BINARY_EVENT",e[e.BINARY_ACK=6]="BINARY_ACK"}(Nd||(Nd={}));class Bd extends zc{constructor(){super()}add(e){let t;if("string"==typeof e)t=this.decodeString(e),t.type===Nd.BINARY_EVENT||t.type===Nd.BINARY_ACK?(this.reconstructor=new Ud(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t);else{if(!Ld(e)&&!e.base64)throw new Error("Unknown type: "+e);if(!this.reconstructor)throw new Error("got binary data when not reconstructing a packet");t=this.reconstructor.takeBinaryData(e),t&&(this.reconstructor=null,super.emitReserved("decoded",t))}}decodeString(e){let t=0;const r={type:Number(e.charAt(0))};if(void 0===Nd[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Nd.BINARY_EVENT||r.type===Nd.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=function(e){try{return JSON.parse(e)}catch(e){return!1}}(e.substr(t));if(!Bd.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}static isPayloadValid(e,t){switch(e){case Nd.CONNECT:return"object"==typeof t;case Nd.DISCONNECT:return void 0===t;case Nd.CONNECT_ERROR:return"string"==typeof t||"object"==typeof t;case Nd.EVENT:case Nd.BINARY_EVENT:return Array.isArray(t)&&t.length>0;case Nd.ACK:case Nd.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&this.reconstructor.finishedReconstruction()}}class Ud{constructor(e){this.packet=e,this.buffers=[],this.reconPack=e}takeBinaryData(e){if(this.buffers.push(e),this.buffers.length===this.reconPack.attachments){const e=jd(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var qd=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Nd},Encoder:class{encode(e){return e.type!==Nd.EVENT&&e.type!==Nd.ACK||!Id(e)?[this.encodeAsString(e)]:(e.type=e.type===Nd.EVENT?Nd.BINARY_EVENT:Nd.BINARY_ACK,this.encodeAsBinary(e))}encodeAsString(e){let t=""+e.type;return e.type!==Nd.BINARY_EVENT&&e.type!==Nd.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data)),t}encodeAsBinary(e){const t=Od(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:Bd});function Wd(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Vd=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class zd extends zc{constructor(e,t,r){super(),this.connected=!1,this.disconnected=!0,this.receiveBuffer=[],this.sendBuffer=[],this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this.io._autoConnect&&this.open()}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Wd(e,"open",this.onopen.bind(this)),Wd(e,"packet",this.onpacket.bind(this)),Wd(e,"error",this.onerror.bind(this)),Wd(e,"close",this.onclose.bind(this))]}get active(){return!!this.subs}connect(){return this.connected||(this.subEvents(),this.io._reconnecting||this.io.open(),"open"===this.io._readyState&&this.onopen()),this}open(){return this.connect()}send(...e){return e.unshift("message"),this.emit.apply(this,e),this}emit(e,...t){if(Vd.hasOwnProperty(e))throw new Error('"'+e+'" is a reserved event name');t.unshift(e);const r={type:Nd.EVENT,data:t,options:{}};r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]&&(this.acks[this.ids]=t.pop(),r.id=this.ids++);const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?this.packet(r):this.sendBuffer.push(r)),this.flags={},this}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this.packet({type:Nd.CONNECT,data:e})})):this.packet({type:Nd.CONNECT,data:this.auth})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e){this.connected=!1,this.disconnected=!0,delete this.id,this.emitReserved("disconnect",e)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Nd.CONNECT:if(e.data&&e.data.sid){const t=e.data.sid;this.onconnect(t)}else this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Nd.EVENT:case Nd.BINARY_EVENT:this.onevent(e);break;case Nd.ACK:case Nd.BINARY_ACK:this.onack(e);break;case Nd.DISCONNECT:this.ondisconnect();break;case Nd.CONNECT_ERROR:const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e)}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Nd.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e){this.id=e,this.connected=!0,this.disconnected=!1,this.emitBuffered(),this.emitReserved("connect")}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>this.packet(e))),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Nd.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}}var $d=Gd;function Gd(e){e=e||{},this.ms=e.min||100,this.max=e.max||1e4,this.factor=e.factor||2,this.jitter=e.jitter>0&&e.jitter<=1?e.jitter:0,this.attempts=0}Gd.prototype.duration=function(){var e=this.ms*Math.pow(this.factor,this.attempts++);if(this.jitter){var t=Math.random(),r=Math.floor(t*this.jitter*e);e=0==(1&Math.floor(10*t))?e-r:e+r}return 0|Math.min(e,this.max)},Gd.prototype.reset=function(){this.attempts=0},Gd.prototype.setMin=function(e){this.ms=e},Gd.prototype.setMax=function(e){this.max=e},Gd.prototype.setJitter=function(e){this.jitter=e};class Hd extends zc{constructor(e,t){var r;super(),this.nsps={},this.subs=[],e&&"object"==typeof e&&(t=e,e=void 0),(t=t||{}).path=t.path||"/socket.io",this.opts=t,Vc(this,t),this.reconnection(!1!==t.reconnection),this.reconnectionAttempts(t.reconnectionAttempts||1/0),this.reconnectionDelay(t.reconnectionDelay||1e3),this.reconnectionDelayMax(t.reconnectionDelayMax||5e3),this.randomizationFactor(null!==(r=t.randomizationFactor)&&void 0!==r?r:.5),this.backoff=new $d({min:this.reconnectionDelay(),max:this.reconnectionDelayMax(),jitter:this.randomizationFactor()}),this.timeout(null==t.timeout?2e4:t.timeout),this._readyState="closed",this.uri=e;const i=t.parser||qd;this.encoder=new i.Encoder,this.decoder=new i.Decoder,this._autoConnect=!1!==t.autoConnect,this._autoConnect&&this.open()}reconnection(e){return arguments.length?(this._reconnection=!!e,this):this._reconnection}reconnectionAttempts(e){return void 0===e?this._reconnectionAttempts:(this._reconnectionAttempts=e,this)}reconnectionDelay(e){var t;return void 0===e?this._reconnectionDelay:(this._reconnectionDelay=e,null===(t=this.backoff)||void 0===t||t.setMin(e),this)}randomizationFactor(e){var t;return void 0===e?this._randomizationFactor:(this._randomizationFactor=e,null===(t=this.backoff)||void 0===t||t.setJitter(e),this)}reconnectionDelayMax(e){var t;return void 0===e?this._reconnectionDelayMax:(this._reconnectionDelayMax=e,null===(t=this.backoff)||void 0===t||t.setMax(e),this)}timeout(e){return arguments.length?(this._timeout=e,this):this._timeout}maybeReconnectOnOpen(){!this._reconnecting&&this._reconnection&&0===this.backoff.attempts&&this.reconnect()}open(e){if(~this._readyState.indexOf("open"))return this;this.engine=new Td(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Wd(t,"open",(function(){r.onopen(),e&&e()})),s=Wd(t,"error",(t=>{r.cleanup(),r._readyState="closed",this.emitReserved("error",t),e?e(t):r.maybeReconnectOnOpen()}));if(!1!==this._timeout){const e=this._timeout;0===e&&i();const r=this.setTimeoutFn((()=>{i(),t.close(),t.emit("error",new Error("timeout"))}),e);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}return this.subs.push(i),this.subs.push(s),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Wd(e,"ping",this.onping.bind(this)),Wd(e,"data",this.ondata.bind(this)),Wd(e,"error",this.onerror.bind(this)),Wd(e,"close",this.onclose.bind(this)),Wd(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){this.decoder.add(e)}ondecoded(e){this.emitReserved("packet",e)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r||(r=new zd(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,"opening"===this._readyState&&this.cleanup(),this.backoff.reset(),this._readyState="closed",this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((function(){clearTimeout(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const Jd={};function Kd(e,t){"object"==typeof e&&(t=e,e=void 0);const r=function(e,t="",r){let i=e;r=r||"undefined"!=typeof location&&location,null==e&&(e=r.protocol+"//"+r.host),"string"==typeof e&&("/"===e.charAt(0)&&(e="/"===e.charAt(1)?r.protocol+e:r.host+e),/^(https?|wss?):\/\//.test(e)||(e=void 0!==r?r.protocol+"//"+e:"https://"+e),i=Ac(e)),i.port||(/^(http|ws)$/.test(i.protocol)?i.port="80":/^(http|ws)s$/.test(i.protocol)&&(i.port="443")),i.path=i.path||"/";const s=-1!==i.host.indexOf(":")?"["+i.host+"]":i.host;return i.id=i.protocol+"://"+s+":"+i.port+t,i.href=i.protocol+"://"+s+(r&&r.port===i.port?"":":"+i.port),i}(e,(t=t||{}).path||"/socket.io"),i=r.source,s=r.id,n=r.path,o=Jd[s]&&n in Jd[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Hd(i,t):(Jd[s]||(Jd[s]=new Hd(i,t)),a=Jd[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}class Qd{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new o,this.knownDisconnectReasonsCodes={"io server disconnect":"server.disconnect","io client disconnect":"client.disconnect","ping timeout":"ping.timeout","transport close":"transport.close","transport error":"transport.error"},this.logger=new Qe({namespace:"Socket",logLevel:e.logLevel,onLogMessage:e.onLogMessage})}get observer(){return this._observer}get id(){var e;return null===(e=this.connection)||void 0===e?void 0:e.id}connect(e,t){const r=Kd(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on("connect",(()=>{const e=this.reconnectingAttempt?ne.Reconnected:ne.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug("connection.on(`connect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:e})})),r.on("connect_error",(e=>{this.connectionError=e,this.logger.error("connection.on(`connect_error`)",{error:e}),this.observer.safeEmit("state",{state:ne.Error,error:e})})),r.on("disconnect",(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn("connection.on(`disconnect`)",{reason:e}),this.observer.safeEmit("state",{state:ne.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on("reconnect_attempt",(e=>{this.setReconnectingAttempt(e),this.logger.warn("connection.on(`reconnect_attempt`)",{attempt:e}),this.observer.safeEmit("state",{state:ne.Reconnecting})})),r.io.on("reconnect",(()=>{this.logger.debug("connection.on(`reconnect`)",{connectionId:r.id}),this.observer.safeEmit("state",{state:ne.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.setReconnectingAttempt(0))}request(e,t={}){return new Promise(((r,i)=>{if(!this.connection)return this.logger.error("request()",{type:e,data:t}),void i(new Error("Socket request: Socket connection is not initialized"));this.connection.emit(e,t,(s=>{s.error?(this.logger.error("request()",{event:e,payload:t,response:s}),i(s.error)):r(s)}))}))}getDisconnectReasonCode(e){const t=String(e).toLowerCase();return this.knownDisconnectReasonsCodes[t]||t}setReconnectingAttempt(e){this.reconnectingAttempt=e}}var Xd={exports:{}},Yd=function(e,t){return function(){for(var r=new Array(arguments.length),i=0;i<r.length;i++)r[i]=arguments[i];return e.apply(t,r)}},Zd=Yd,el=Object.prototype.toString;function tl(e){return"[object Array]"===el.call(e)}function rl(e){return void 0===e}function il(e){return null!==e&&"object"==typeof e}function sl(e){if("[object Object]"!==el.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function nl(e){return"[object Function]"===el.call(e)}function ol(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),tl(e))for(var r=0,i=e.length;r<i;r++)t.call(null,e[r],r,e);else for(var s in e)Object.prototype.hasOwnProperty.call(e,s)&&t.call(null,e[s],s,e)}var al={isArray:tl,isArrayBuffer:function(e){return"[object ArrayBuffer]"===el.call(e)},isBuffer:function(e){return null!==e&&!rl(e)&&null!==e.constructor&&!rl(e.constructor)&&"function"==typeof e.constructor.isBuffer&&e.constructor.isBuffer(e)},isFormData:function(e){return"undefined"!=typeof FormData&&e instanceof FormData},isArrayBufferView:function(e){return"undefined"!=typeof ArrayBuffer&&ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer&&e.buffer instanceof ArrayBuffer},isString:function(e){return"string"==typeof e},isNumber:function(e){return"number"==typeof e},isObject:il,isPlainObject:sl,isUndefined:rl,isDate:function(e){return"[object Date]"===el.call(e)},isFile:function(e){return"[object File]"===el.call(e)},isBlob:function(e){return"[object Blob]"===el.call(e)},isFunction:nl,isStream:function(e){return il(e)&&nl(e.pipe)},isURLSearchParams:function(e){return"undefined"!=typeof URLSearchParams&&e instanceof URLSearchParams},isStandardBrowserEnv:function(){return("undefined"==typeof navigator||"ReactNative"!==navigator.product&&"NativeScript"!==navigator.product&&"NS"!==navigator.product)&&("undefined"!=typeof window&&"undefined"!=typeof document)},forEach:ol,merge:function e(){var t={};function r(r,i){sl(t[i])&&sl(r)?t[i]=e(t[i],r):sl(r)?t[i]=e({},r):tl(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)ol(arguments[i],r);return t},extend:function(e,t,r){return ol(t,(function(t,i){e[i]=r&&"function"==typeof t?Zd(t,r):t})),e},trim:function(e){return e.trim?e.trim():e.replace(/^\s+|\s+$/g,"")},stripBOM:function(e){return 65279===e.charCodeAt(0)&&(e=e.slice(1)),e}},cl=al;function dl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var ll=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(cl.isURLSearchParams(t))i=t.toString();else{var s=[];cl.forEach(t,(function(e,t){null!=e&&(cl.isArray(e)?t+="[]":e=[e],cl.forEach(e,(function(e){cl.isDate(e)?e=e.toISOString():cl.isObject(e)&&(e=JSON.stringify(e)),s.push(dl(t)+"="+dl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},pl=al;function ul(){this.handlers=[]}ul.prototype.use=function(e,t,r){return this.handlers.push({fulfilled:e,rejected:t,synchronous:!!r&&r.synchronous,runWhen:r?r.runWhen:null}),this.handlers.length-1},ul.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},ul.prototype.forEach=function(e){pl.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var hl=ul,fl=al,ml=function(e,t,r,i,s){return e.config=t,r&&(e.code=r),e.request=i,e.response=s,e.isAxiosError=!0,e.toJSON=function(){return{message:this.message,name:this.name,description:this.description,number:this.number,fileName:this.fileName,lineNumber:this.lineNumber,columnNumber:this.columnNumber,stack:this.stack,config:this.config,code:this.code}},e},gl=ml,vl=function(e,t,r,i,s){var n=new Error(e);return gl(n,t,r,i,s)},yl=vl,bl=al,wl=bl.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),bl.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),bl.isString(i)&&o.push("path="+i),bl.isString(s)&&o.push("domain="+s),!0===n&&o.push("secure"),document.cookie=o.join("; ")},read:function(e){var t=document.cookie.match(new RegExp("(^|;\\s*)("+e+")=([^;]*)"));return t?decodeURIComponent(t[3]):null},remove:function(e){this.write(e,"",Date.now()-864e5)}}:{write:function(){},read:function(){return null},remove:function(){}},_l=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},Sl=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},kl=al,Cl=["age","authorization","content-length","content-type","etag","expires","from","host","if-modified-since","if-unmodified-since","last-modified","location","max-forwards","proxy-authorization","referer","retry-after","user-agent"],Rl=al,Pl=Rl.isStandardBrowserEnv()?function(){var e,t=/(msie|trident)/i.test(navigator.userAgent),r=document.createElement("a");function i(e){var i=e;return t&&(r.setAttribute("href",i),i=r.href),r.setAttribute("href",i),{href:r.href,protocol:r.protocol?r.protocol.replace(/:$/,""):"",host:r.host,search:r.search?r.search.replace(/^\?/,""):"",hash:r.hash?r.hash.replace(/^#/,""):"",hostname:r.hostname,port:r.port,pathname:"/"===r.pathname.charAt(0)?r.pathname:"/"+r.pathname}}return e=i(window.location.href),function(t){var r=Rl.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Tl=al,El=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(yl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Dl=wl,xl=ll,Ml=function(e,t){return e&&!_l(t)?Sl(e,t):t},Ll=function(e){var t,r,i,s={};return e?(kl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=kl.trim(e.substr(0,i)).toLowerCase(),r=kl.trim(e.substr(i+1)),t){if(s[t]&&Cl.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Il=Pl,Ol=vl,Al=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Tl.isFormData(i)&&delete s["Content-Type"];var o=new XMLHttpRequest;if(e.auth){var a=e.auth.username||"",c=e.auth.password?unescape(encodeURIComponent(e.auth.password)):"";s.Authorization="Basic "+btoa(a+":"+c)}var d=Ml(e.baseURL,e.url);function l(){if(o){var i="getAllResponseHeaders"in o?Ll(o.getAllResponseHeaders()):null,s={data:n&&"text"!==n&&"json"!==n?o.response:o.responseText,status:o.status,statusText:o.statusText,headers:i,config:e,request:o};El(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),xl(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=l:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(l)},o.onabort=function(){o&&(r(Ol("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Ol("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Ol(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Tl.isStandardBrowserEnv()){var p=(e.withCredentials||Il(d))&&e.xsrfCookieName?Dl.read(e.xsrfCookieName):void 0;p&&(s[e.xsrfHeaderName]=p)}"setRequestHeader"in o&&Tl.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Tl.isUndefined(e.withCredentials)||(o.withCredentials=!!e.withCredentials),n&&"json"!==n&&(o.responseType=e.responseType),"function"==typeof e.onDownloadProgress&&o.addEventListener("progress",e.onDownloadProgress),"function"==typeof e.onUploadProgress&&o.upload&&o.upload.addEventListener("progress",e.onUploadProgress),e.cancelToken&&e.cancelToken.promise.then((function(e){o&&(o.abort(),r(e),o=null)})),i||(i=null),o.send(i)}))},jl=al,Fl=function(e,t){fl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Nl=ml,Bl={"Content-Type":"application/x-www-form-urlencoded"};function Ul(e,t){!jl.isUndefined(e)&&jl.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var ql,Wl={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(ql=Al),ql),transformRequest:[function(e,t){return Fl(t,"Accept"),Fl(t,"Content-Type"),jl.isFormData(e)||jl.isArrayBuffer(e)||jl.isBuffer(e)||jl.isStream(e)||jl.isFile(e)||jl.isBlob(e)?e:jl.isArrayBufferView(e)?e.buffer:jl.isURLSearchParams(e)?(Ul(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):jl.isObject(e)||t&&"application/json"===t["Content-Type"]?(Ul(t,"application/json"),function(e,t,r){if(jl.isString(e))try{return(t||JSON.parse)(e),jl.trim(e)}catch(e){if("SyntaxError"!==e.name)throw e}return(r||JSON.stringify)(e)}(e)):e}],transformResponse:[function(e){var t=this.transitional,r=t&&t.silentJSONParsing,i=t&&t.forcedJSONParsing,s=!r&&"json"===this.responseType;if(s||i&&jl.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Nl(e,this,"E_JSON_PARSE");throw e}}return e}],timeout:0,xsrfCookieName:"XSRF-TOKEN",xsrfHeaderName:"X-XSRF-TOKEN",maxContentLength:-1,maxBodyLength:-1,validateStatus:function(e){return e>=200&&e<300}};Wl.headers={common:{Accept:"application/json, text/plain, */*"}},jl.forEach(["delete","get","head"],(function(e){Wl.headers[e]={}})),jl.forEach(["post","put","patch"],(function(e){Wl.headers[e]=jl.merge(Bl)}));var Vl=Wl,zl=al,$l=Vl,Gl=function(e){return!(!e||!e.__CANCEL__)},Hl=al,Jl=function(e,t,r){var i=this||$l;return zl.forEach(r,(function(r){e=r.call(i,e,t)})),e},Kl=Gl,Ql=Vl;function Xl(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Yl=al,Zl=function(e,t){t=t||{};var r={},i=["url","method","data"],s=["headers","auth","proxy","params"],n=["baseURL","transformRequest","transformResponse","paramsSerializer","timeout","timeoutMessage","withCredentials","adapter","responseType","xsrfCookieName","xsrfHeaderName","onUploadProgress","onDownloadProgress","decompress","maxContentLength","maxBodyLength","maxRedirects","transport","httpAgent","httpsAgent","cancelToken","socketPath","responseEncoding"],o=["validateStatus"];function a(e,t){return Yl.isPlainObject(e)&&Yl.isPlainObject(t)?Yl.merge(e,t):Yl.isPlainObject(t)?Yl.merge({},t):Yl.isArray(t)?t.slice():t}function c(i){Yl.isUndefined(t[i])?Yl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}Yl.forEach(i,(function(e){Yl.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),Yl.forEach(s,c),Yl.forEach(n,(function(i){Yl.isUndefined(t[i])?Yl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),Yl.forEach(o,(function(i){i in t?r[i]=a(e[i],t[i]):i in e&&(r[i]=a(void 0,e[i]))}));var d=i.concat(s).concat(n).concat(o),l=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Yl.forEach(l,c),r},ep={name:"axios",version:"0.21.4",description:"Promise based HTTP client for the browser and node.js",main:"index.js",scripts:{test:"grunt test",start:"node ./sandbox/server.js",build:"NODE_ENV=production grunt build",preversion:"npm test",version:"npm run build && grunt version && git add -A dist && git add CHANGELOG.md bower.json package.json",postversion:"git push && git push --tags",examples:"node ./examples/server.js",coveralls:"cat coverage/lcov.info | ./node_modules/coveralls/bin/coveralls.js",fix:"eslint --fix lib/**/*.js"},repository:{type:"git",url:"https://github.com/axios/axios.git"},keywords:["xhr","http","ajax","promise","node"],author:"Matt Zabriskie",license:"MIT",bugs:{url:"https://github.com/axios/axios/issues"},homepage:"https://axios-http.com",devDependencies:{coveralls:"^3.0.0","es6-promise":"^4.2.4",grunt:"^1.3.0","grunt-banner":"^0.6.0","grunt-cli":"^1.2.0","grunt-contrib-clean":"^1.1.0","grunt-contrib-watch":"^1.0.0","grunt-eslint":"^23.0.0","grunt-karma":"^4.0.0","grunt-mocha-test":"^0.13.3","grunt-ts":"^6.0.0-beta.19","grunt-webpack":"^4.0.2","istanbul-instrumenter-loader":"^1.0.0","jasmine-core":"^2.4.1",karma:"^6.3.2","karma-chrome-launcher":"^3.1.0","karma-firefox-launcher":"^2.1.0","karma-jasmine":"^1.1.1","karma-jasmine-ajax":"^0.1.13","karma-safari-launcher":"^1.0.0","karma-sauce-launcher":"^4.3.6","karma-sinon":"^1.0.5","karma-sourcemap-loader":"^0.3.8","karma-webpack":"^4.0.2","load-grunt-tasks":"^3.5.2",minimist:"^1.2.0",mocha:"^8.2.1",sinon:"^4.5.0","terser-webpack-plugin":"^4.2.3",typescript:"^4.0.5","url-search-params":"^0.10.0",webpack:"^4.44.2","webpack-dev-server":"^3.11.0"},browser:{"./lib/adapters/http.js":"./lib/adapters/xhr.js"},jsdelivr:"dist/axios.min.js",unpkg:"dist/axios.min.js",typings:"./index.d.ts",dependencies:{"follow-redirects":"^1.14.0"},bundlesize:[{path:"./dist/axios.min.js",threshold:"5kB"}]},tp={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){tp[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var rp={},ip=ep.version.split(".");function sp(e,t){for(var r=t?t.split("."):ip,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}tp.transitional=function(e,t,r){var i=t&&sp(t);function s(e,t){return"[Axios v"+ep.version+"] Transitional option '"+e+"'"+t+(r?". "+r:"")}return function(r,n,o){if(!1===e)throw new Error(s(n," has been removed in "+t));return i&&!rp[n]&&(rp[n]=!0,console.warn(s(n," has been deprecated since v"+t+" and will be removed in the near future"))),!e||e(r,n,o)}};var np={isOlderVersion:sp,assertOptions:function(e,t,r){if("object"!=typeof e)throw new TypeError("options must be an object");for(var i=Object.keys(e),s=i.length;s-- >0;){var n=i[s],o=t[n];if(o){var a=e[n],c=void 0===a||o(a,n,e);if(!0!==c)throw new TypeError("option "+n+" must be "+c)}else if(!0!==r)throw Error("Unknown option "+n)}},validators:tp},op=al,ap=ll,cp=hl,dp=function(e){return Xl(e),e.headers=e.headers||{},e.data=Jl.call(e,e.data,e.headers,e.transformRequest),e.headers=Hl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Hl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Ql.adapter)(e).then((function(t){return Xl(e),t.data=Jl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return Kl(t)||(Xl(e),t&&t.response&&(t.response.data=Jl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},lp=Zl,pp=np,up=pp.validators;function hp(e){this.defaults=e,this.interceptors={request:new cp,response:new cp}}hp.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=lp(this.defaults,e)).method?e.method=e.method.toLowerCase():this.defaults.method?e.method=this.defaults.method.toLowerCase():e.method="get";var t=e.transitional;void 0!==t&&pp.assertOptions(t,{silentJSONParsing:up.transitional(up.boolean,"1.0.0"),forcedJSONParsing:up.transitional(up.boolean,"1.0.0"),clarifyTimeoutError:up.transitional(up.boolean,"1.0.0")},!1);var r=[],i=!0;this.interceptors.request.forEach((function(t){"function"==typeof t.runWhen&&!1===t.runWhen(e)||(i=i&&t.synchronous,r.unshift(t.fulfilled,t.rejected))}));var s,n=[];if(this.interceptors.response.forEach((function(e){n.push(e.fulfilled,e.rejected)})),!i){var o=[dp,void 0];for(Array.prototype.unshift.apply(o,r),o=o.concat(n),s=Promise.resolve(e);o.length;)s=s.then(o.shift(),o.shift());return s}for(var a=e;r.length;){var c=r.shift(),d=r.shift();try{a=c(a)}catch(e){d(e);break}}try{s=dp(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},hp.prototype.getUri=function(e){return e=lp(this.defaults,e),ap(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},op.forEach(["delete","get","head","options"],(function(e){hp.prototype[e]=function(t,r){return this.request(lp(r||{},{method:e,url:t,data:(r||{}).data}))}})),op.forEach(["post","put","patch"],(function(e){hp.prototype[e]=function(t,r,i){return this.request(lp(i||{},{method:e,url:t,data:r}))}}));var fp=hp;function mp(e){this.message=e}mp.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},mp.prototype.__CANCEL__=!0;var gp=mp,vp=gp;function yp(e){if("function"!=typeof e)throw new TypeError("executor must be a function.");var t;this.promise=new Promise((function(e){t=e}));var r=this;e((function(e){r.reason||(r.reason=new vp(e),t(r.reason))}))}yp.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},yp.source=function(){var e,t=new yp((function(t){e=t}));return{token:t,cancel:e}};var bp=yp,wp=al,_p=Yd,Sp=fp,kp=Zl;function Cp(e){var t=new Sp(e),r=_p(Sp.prototype.request,t);return wp.extend(r,Sp.prototype,t),wp.extend(r,t),r}var Rp=Cp(Vl);Rp.Axios=Sp,Rp.create=function(e){return Cp(kp(Rp.defaults,e))},Rp.Cancel=gp,Rp.CancelToken=bp,Rp.isCancel=Gl,Rp.all=function(e){return Promise.all(e)},Rp.spread=function(e){return function(t){return e.apply(null,t)}},Rp.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Xd.exports=Rp,Xd.exports.default=Rp;var Pp=Xd.exports,Tp="undefined"!=typeof Symbol&&Symbol,Ep=function(){if("function"!=typeof Symbol||"function"!=typeof Object.getOwnPropertySymbols)return!1;if("symbol"==typeof Symbol.iterator)return!0;var e={},t=Symbol("test"),r=Object(t);if("string"==typeof t)return!1;if("[object Symbol]"!==Object.prototype.toString.call(t))return!1;if("[object Symbol]"!==Object.prototype.toString.call(r))return!1;for(t in e[t]=42,e)return!1;if("function"==typeof Object.keys&&0!==Object.keys(e).length)return!1;if("function"==typeof Object.getOwnPropertyNames&&0!==Object.getOwnPropertyNames(e).length)return!1;var i=Object.getOwnPropertySymbols(e);if(1!==i.length||i[0]!==t)return!1;if(!Object.prototype.propertyIsEnumerable.call(e,t))return!1;if("function"==typeof Object.getOwnPropertyDescriptor){var s=Object.getOwnPropertyDescriptor(e,t);if(42!==s.value||!0!==s.enumerable)return!1}return!0},Dp="Function.prototype.bind called on incompatible ",xp=Array.prototype.slice,Mp=Object.prototype.toString,Lp=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Mp.call(t))throw new TypeError(Dp+t);for(var r,i=xp.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(xp.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(xp.call(arguments)))},n=Math.max(0,t.length-i.length),o=[],a=0;a<n;a++)o.push("$"+a);if(r=Function("binder","return function ("+o.join(",")+"){ return binder.apply(this,arguments); }")(s),t.prototype){var c=function(){};c.prototype=t.prototype,r.prototype=new c,c.prototype=null}return r},Ip=Function.prototype.bind||Lp,Op=Ip.call(Function.call,Object.prototype.hasOwnProperty),Ap=SyntaxError,jp=Function,Fp=TypeError,Np=function(e){try{return jp('"use strict"; return ('+e+").constructor;")()}catch(e){}},Bp=Object.getOwnPropertyDescriptor;if(Bp)try{Bp({},"")}catch(Qa){Bp=null}var Up=function(){throw new Fp},qp=Bp?function(){try{return Up}catch(e){try{return Bp(arguments,"callee").get}catch(e){return Up}}}():Up,Wp="function"==typeof Tp&&"function"==typeof Symbol&&"symbol"==typeof Tp("foo")&&"symbol"==typeof Symbol("bar")&&Ep(),Vp=Object.getPrototypeOf||function(e){return e.__proto__},zp={},$p="undefined"==typeof Uint8Array?undefined:Vp(Uint8Array),Gp={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Wp?Vp([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":zp,"%AsyncGenerator%":zp,"%AsyncGeneratorFunction%":zp,"%AsyncIteratorPrototype%":zp,"%Atomics%":"undefined"==typeof Atomics?undefined:Atomics,"%BigInt%":"undefined"==typeof BigInt?undefined:BigInt,"%Boolean%":Boolean,"%DataView%":"undefined"==typeof DataView?undefined:DataView,"%Date%":Date,"%decodeURI%":decodeURI,"%decodeURIComponent%":decodeURIComponent,"%encodeURI%":encodeURI,"%encodeURIComponent%":encodeURIComponent,"%Error%":Error,"%eval%":eval,"%EvalError%":EvalError,"%Float32Array%":"undefined"==typeof Float32Array?undefined:Float32Array,"%Float64Array%":"undefined"==typeof Float64Array?undefined:Float64Array,"%FinalizationRegistry%":"undefined"==typeof FinalizationRegistry?undefined:FinalizationRegistry,"%Function%":jp,"%GeneratorFunction%":zp,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Wp?Vp(Vp([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Wp?Vp((new Map)[Symbol.iterator]()):undefined,"%Math%":Math,"%Number%":Number,"%Object%":Object,"%parseFloat%":parseFloat,"%parseInt%":parseInt,"%Promise%":"undefined"==typeof Promise?undefined:Promise,"%Proxy%":"undefined"==typeof Proxy?undefined:Proxy,"%RangeError%":RangeError,"%ReferenceError%":ReferenceError,"%Reflect%":"undefined"==typeof Reflect?undefined:Reflect,"%RegExp%":RegExp,"%Set%":"undefined"==typeof Set?undefined:Set,"%SetIteratorPrototype%":"undefined"!=typeof Set&&Wp?Vp((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Wp?Vp(""[Symbol.iterator]()):undefined,"%Symbol%":Wp?Symbol:undefined,"%SyntaxError%":Ap,"%ThrowTypeError%":qp,"%TypedArray%":$p,"%TypeError%":Fp,"%Uint8Array%":"undefined"==typeof Uint8Array?undefined:Uint8Array,"%Uint8ClampedArray%":"undefined"==typeof Uint8ClampedArray?undefined:Uint8ClampedArray,"%Uint16Array%":"undefined"==typeof Uint16Array?undefined:Uint16Array,"%Uint32Array%":"undefined"==typeof Uint32Array?undefined:Uint32Array,"%URIError%":URIError,"%WeakMap%":"undefined"==typeof WeakMap?undefined:WeakMap,"%WeakRef%":"undefined"==typeof WeakRef?undefined:WeakRef,"%WeakSet%":"undefined"==typeof WeakSet?undefined:WeakSet},Hp=function e(t){var r;if("%AsyncFunction%"===t)r=Np("async function () {}");else if("%GeneratorFunction%"===t)r=Np("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Np("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Vp(s.prototype))}return Gp[t]=r,r},Jp={"%ArrayBufferPrototype%":["ArrayBuffer","prototype"],"%ArrayPrototype%":["Array","prototype"],"%ArrayProto_entries%":["Array","prototype","entries"],"%ArrayProto_forEach%":["Array","prototype","forEach"],"%ArrayProto_keys%":["Array","prototype","keys"],"%ArrayProto_values%":["Array","prototype","values"],"%AsyncFunctionPrototype%":["AsyncFunction","prototype"],"%AsyncGenerator%":["AsyncGeneratorFunction","prototype"],"%AsyncGeneratorPrototype%":["AsyncGeneratorFunction","prototype","prototype"],"%BooleanPrototype%":["Boolean","prototype"],"%DataViewPrototype%":["DataView","prototype"],"%DatePrototype%":["Date","prototype"],"%ErrorPrototype%":["Error","prototype"],"%EvalErrorPrototype%":["EvalError","prototype"],"%Float32ArrayPrototype%":["Float32Array","prototype"],"%Float64ArrayPrototype%":["Float64Array","prototype"],"%FunctionPrototype%":["Function","prototype"],"%Generator%":["GeneratorFunction","prototype"],"%GeneratorPrototype%":["GeneratorFunction","prototype","prototype"],"%Int8ArrayPrototype%":["Int8Array","prototype"],"%Int16ArrayPrototype%":["Int16Array","prototype"],"%Int32ArrayPrototype%":["Int32Array","prototype"],"%JSONParse%":["JSON","parse"],"%JSONStringify%":["JSON","stringify"],"%MapPrototype%":["Map","prototype"],"%NumberPrototype%":["Number","prototype"],"%ObjectPrototype%":["Object","prototype"],"%ObjProto_toString%":["Object","prototype","toString"],"%ObjProto_valueOf%":["Object","prototype","valueOf"],"%PromisePrototype%":["Promise","prototype"],"%PromiseProto_then%":["Promise","prototype","then"],"%Promise_all%":["Promise","all"],"%Promise_reject%":["Promise","reject"],"%Promise_resolve%":["Promise","resolve"],"%RangeErrorPrototype%":["RangeError","prototype"],"%ReferenceErrorPrototype%":["ReferenceError","prototype"],"%RegExpPrototype%":["RegExp","prototype"],"%SetPrototype%":["Set","prototype"],"%SharedArrayBufferPrototype%":["SharedArrayBuffer","prototype"],"%StringPrototype%":["String","prototype"],"%SymbolPrototype%":["Symbol","prototype"],"%SyntaxErrorPrototype%":["SyntaxError","prototype"],"%TypedArrayPrototype%":["TypedArray","prototype"],"%TypeErrorPrototype%":["TypeError","prototype"],"%Uint8ArrayPrototype%":["Uint8Array","prototype"],"%Uint8ClampedArrayPrototype%":["Uint8ClampedArray","prototype"],"%Uint16ArrayPrototype%":["Uint16Array","prototype"],"%Uint32ArrayPrototype%":["Uint32Array","prototype"],"%URIErrorPrototype%":["URIError","prototype"],"%WeakMapPrototype%":["WeakMap","prototype"],"%WeakSetPrototype%":["WeakSet","prototype"]},Kp=Ip,Qp=Op,Xp=Kp.call(Function.call,Array.prototype.concat),Yp=Kp.call(Function.apply,Array.prototype.splice),Zp=Kp.call(Function.call,String.prototype.replace),eu=Kp.call(Function.call,String.prototype.slice),tu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,ru=/\\(\\)?/g,iu=function(e){var t=eu(e,0,1),r=eu(e,-1);if("%"===t&&"%"!==r)throw new Ap("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new Ap("invalid intrinsic syntax, expected opening `%`");var i=[];return Zp(e,tu,(function(e,t,r,s){i[i.length]=r?Zp(s,ru,"$1"):t||e})),i},su=function(e,t){var r,i=e;if(Qp(Jp,i)&&(i="%"+(r=Jp[i])[0]+"%"),Qp(Gp,i)){var s=Gp[i];if(s===zp&&(s=Hp(i)),void 0===s&&!t)throw new Fp("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new Ap("intrinsic "+e+" does not exist!")},nu=function(e,t){if("string"!=typeof e||0===e.length)throw new Fp("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Fp('"allowMissing" argument must be a boolean');var r=iu(e),i=r.length>0?r[0]:"",s=su("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],Yp(r,Xp([0,1],c)));for(var d=1,l=!0;d<r.length;d+=1){var p=r[d],u=eu(p,0,1),h=eu(p,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new Ap("property names with quotes must have matching quotes");if("constructor"!==p&&l||(a=!0),Qp(Gp,n="%"+(i+="."+p)+"%"))o=Gp[n];else if(null!=o){if(!(p in o)){if(!t)throw new Fp("base intrinsic for "+e+" exists, but the property is not available.");return}if(Bp&&d+1>=r.length){var f=Bp(o,p);o=(l=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[p]}else l=Qp(o,p),o=o[p];l&&!a&&(Gp[n]=o)}}return o},ou={exports:{}};!function(e){var t=Ip,r=nu,i=r("%Function.prototype.apply%"),s=r("%Function.prototype.call%"),n=r("%Reflect.apply%",!0)||t.call(s,i),o=r("%Object.getOwnPropertyDescriptor%",!0),a=r("%Object.defineProperty%",!0),c=r("%Math.max%");if(a)try{a({},"a",{value:1})}catch(e){a=null}e.exports=function(e){var r=n(t,s,arguments);if(o&&a){var i=o(r,"length");i.configurable&&a(r,"length",{value:1+c(0,e.length-(arguments.length-1))})}return r};var d=function(){return n(t,i,arguments)};a?a(e.exports,"apply",{value:d}):e.exports.apply=d}(ou);var au=nu,cu=ou.exports,du=cu(au("String.prototype.indexOf")),lu=d(Object.freeze({__proto__:null,default:{}})),pu="function"==typeof Map&&Map.prototype,uu=Object.getOwnPropertyDescriptor&&pu?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,hu=pu&&uu&&"function"==typeof uu.get?uu.get:null,fu=pu&&Map.prototype.forEach,mu="function"==typeof Set&&Set.prototype,gu=Object.getOwnPropertyDescriptor&&mu?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,vu=mu&&gu&&"function"==typeof gu.get?gu.get:null,yu=mu&&Set.prototype.forEach,bu="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,wu="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,_u="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,Su=Boolean.prototype.valueOf,ku=Object.prototype.toString,Cu=Function.prototype.toString,Ru=String.prototype.match,Pu="function"==typeof BigInt?BigInt.prototype.valueOf:null,Tu=Object.getOwnPropertySymbols,Eu="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Du="function"==typeof Symbol&&"object"==typeof Symbol.iterator,xu=Object.prototype.propertyIsEnumerable,Mu=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Lu=lu.custom,Iu=Lu&&Nu(Lu)?Lu:null,Ou="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function Au(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function ju(e){return String(e).replace(/"/g,""")}function Fu(e){return!("[object Array]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}function Nu(e){if(Du)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!Eu)return!1;try{return Eu.call(e),!0}catch(e){}return!1}var Bu=Object.prototype.hasOwnProperty||function(e){return e in this};function Uu(e,t){return Bu.call(e,t)}function qu(e){return ku.call(e)}function Wu(e,t){if(e.indexOf)return e.indexOf(t);for(var r=0,i=e.length;r<i;r++)if(e[r]===t)return r;return-1}function Vu(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Vu(e.slice(0,t.maxStringLength),t)+i}return Au(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,zu),"single",t)}function zu(e){var t=e.charCodeAt(0),r={8:"b",9:"t",10:"n",12:"f",13:"r"}[t];return r?"\\"+r:"\\x"+(t<16?"0":"")+t.toString(16).toUpperCase()}function $u(e){return"Object("+e+")"}function Gu(e){return e+" { ? }"}function Hu(e,t,r,i){return e+" ("+t+") {"+(i?Ju(r,i):r.join(", "))+"}"}function Ju(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function Ku(e,t){var r=Fu(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=Uu(e,s)?t(e[s],e):""}var n,o="function"==typeof Tu?Tu(e):[];if(Du){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)Uu(e,c)&&(r&&String(Number(c))===c&&c<e.length||Du&&n["$"+c]instanceof Symbol||(/[^\w$]/.test(c)?i.push(t(c,e)+": "+t(e[c],e)):i.push(c+": "+t(e[c],e))));if("function"==typeof Tu)for(var d=0;d<o.length;d++)xu.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var Qu=nu,Xu=function(e,t){var r=au(e,!!t);return"function"==typeof r&&du(e,".prototype.")>-1?cu(r):r},Yu=function e(t,r,i,s){var n=r||{};if(Uu(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(Uu(n,"maxStringLength")&&("number"==typeof n.maxStringLength?n.maxStringLength<0&&n.maxStringLength!==1/0:null!==n.maxStringLength))throw new TypeError('option "maxStringLength", if provided, must be a positive integer, Infinity, or `null`');var o=!Uu(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(Uu(n,"indent")&&null!==n.indent&&"\t"!==n.indent&&!(parseInt(n.indent,10)===n.indent&&n.indent>0))throw new TypeError('options "indent" must be "\\t", an integer > 0, or `null`');if(void 0===t)return"undefined";if(null===t)return"null";if("boolean"==typeof t)return t?"true":"false";if("string"==typeof t)return Vu(t,n);if("number"==typeof t)return 0===t?1/0/t>0?"0":"-0":String(t);if("bigint"==typeof t)return String(t)+"n";var a=void 0===n.depth?5:n.depth;if(void 0===i&&(i=0),i>=a&&a>0&&"object"==typeof t)return Fu(t)?"[Array]":"[Object]";var c=function(e,t){var r;if("\t"===e.indent)r="\t";else{if(!("number"==typeof e.indent&&e.indent>0))return null;r=Array(e.indent+1).join(" ")}return{base:r,prev:Array(t+1).join(r)}}(n,i);if(void 0===s)s=[];else if(Wu(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return Uu(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var l=function(e){if(e.name)return e.name;var t=Ru.call(Cu.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),p=Ku(t,d);return"[Function"+(l?": "+l:" (anonymous)")+"]"+(p.length>0?" { "+p.join(", ")+" }":"")}if(Nu(t)){var u=Du?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):Eu.call(t);return"object"!=typeof t||Du?u:$u(u)}if(function(e){if(!e||"object"!=typeof e)return!1;if("undefined"!=typeof HTMLElement&&e instanceof HTMLElement)return!0;return"string"==typeof e.nodeName&&"function"==typeof e.getAttribute}(t)){for(var h="<"+String(t.nodeName).toLowerCase(),f=t.attributes||[],m=0;m<f.length;m++)h+=" "+f[m].name+"="+Au(ju(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Fu(t)){if(0===t.length)return"[]";var g=Ku(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Wu(e[t],"\n")>=0)return!1;return!0}(g)?"["+Ju(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t)){var v=Ku(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Iu&&"function"==typeof t[Iu])return t[Iu]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!hu||!e||"object"!=typeof e)return!1;try{hu.call(e);try{vu.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return fu.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Hu("Map",hu.call(t),y,c)}if(function(e){if(!vu||!e||"object"!=typeof e)return!1;try{vu.call(e);try{hu.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return yu.call(t,(function(e){b.push(d(e,t))})),Hu("Set",vu.call(t),b,c)}if(function(e){if(!bu||!e||"object"!=typeof e)return!1;try{bu.call(e,bu);try{wu.call(e,wu)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Gu("WeakMap");if(function(e){if(!wu||!e||"object"!=typeof e)return!1;try{wu.call(e,wu);try{bu.call(e,bu)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Gu("WeakSet");if(function(e){if(!_u||!e||"object"!=typeof e)return!1;try{return _u.call(e),!0}catch(e){}return!1}(t))return Gu("WeakRef");if(function(e){return!("[object Number]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t))return $u(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Pu)return!1;try{return Pu.call(e),!0}catch(e){}return!1}(t))return $u(d(Pu.call(t)));if(function(e){return!("[object Boolean]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t))return $u(Su.call(t));if(function(e){return!("[object String]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t))return $u(d(String(t)));if(!function(e){return!("[object Date]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t)&&!function(e){return!("[object RegExp]"!==qu(e)||Ou&&"object"==typeof e&&Ou in e)}(t)){var w=Ku(t,d),_=Mu?Mu(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",k=!_&&Ou&&Object(t)===t&&Ou in t?qu(t).slice(8,-1):S?"Object":"",C=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(k||S?"["+[].concat(k||[],S||[]).join(": ")+"] ":"");return 0===w.length?C+"{}":c?C+"{"+Ju(w,c)+"}":C+"{ "+w.join(", ")+" }"}return String(t)},Zu=Qu("%TypeError%"),eh=Qu("%WeakMap%",!0),th=Qu("%Map%",!0),rh=Xu("WeakMap.prototype.get",!0),ih=Xu("WeakMap.prototype.set",!0),sh=Xu("WeakMap.prototype.has",!0),nh=Xu("Map.prototype.get",!0),oh=Xu("Map.prototype.set",!0),ah=Xu("Map.prototype.has",!0),ch=function(e,t){for(var r,i=e;null!==(r=i.next);i=r)if(r.key===t)return i.next=r.next,r.next=e.next,e.next=r,r},dh=String.prototype.replace,lh=/%20/g,ph="RFC3986",uh={default:ph,formatters:{RFC1738:function(e){return dh.call(e,lh,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:ph},hh=uh,fh=Object.prototype.hasOwnProperty,mh=Array.isArray,gh=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),vh=function(e,t){for(var r=t&&t.plainObjects?Object.create(null):{},i=0;i<e.length;++i)void 0!==e[i]&&(r[i]=e[i]);return r},yh={arrayToObject:vh,assign:function(e,t){return Object.keys(t).reduce((function(e,r){return e[r]=t[r],e}),e)},combine:function(e,t){return[].concat(e,t)},compact:function(e){for(var t=[{obj:{o:e},prop:"o"}],r=[],i=0;i<t.length;++i)for(var s=t[i],n=s.obj[s.prop],o=Object.keys(n),a=0;a<o.length;++a){var c=o[a],d=n[c];"object"==typeof d&&null!==d&&-1===r.indexOf(d)&&(t.push({obj:n,prop:c}),r.push(d))}return function(e){for(;e.length>1;){var t=e.pop(),r=t.obj[t.prop];if(mh(r)){for(var i=[],s=0;s<r.length;++s)void 0!==r[s]&&i.push(r[s]);t.obj[t.prop]=i}}}(t),e},decode:function(e,t,r){var i=e.replace(/\+/g," ");if("iso-8859-1"===r)return i.replace(/%[0-9a-f]{2}/gi,unescape);try{return decodeURIComponent(i)}catch(e){return i}},encode:function(e,t,r,i,s){if(0===e.length)return e;var n=e;if("symbol"==typeof e?n=Symbol.prototype.toString.call(e):"string"!=typeof e&&(n=String(e)),"iso-8859-1"===r)return escape(n).replace(/%u[0-9a-f]{4}/gi,(function(e){return"%26%23"+parseInt(e.slice(2),16)+"%3B"}));for(var o="",a=0;a<n.length;++a){var c=n.charCodeAt(a);45===c||46===c||95===c||126===c||c>=48&&c<=57||c>=65&&c<=90||c>=97&&c<=122||s===hh.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=gh[c]:c<2048?o+=gh[192|c>>6]+gh[128|63&c]:c<55296||c>=57344?o+=gh[224|c>>12]+gh[128|c>>6&63]+gh[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=gh[240|c>>18]+gh[128|c>>12&63]+gh[128|c>>6&63]+gh[128|63&c])}return o},isBuffer:function(e){return!(!e||"object"!=typeof e)&&!!(e.constructor&&e.constructor.isBuffer&&e.constructor.isBuffer(e))},isRegExp:function(e){return"[object RegExp]"===Object.prototype.toString.call(e)},maybeMap:function(e,t){if(mh(e)){for(var r=[],i=0;i<e.length;i+=1)r.push(t(e[i]));return r}return t(e)},merge:function e(t,r,i){if(!r)return t;if("object"!=typeof r){if(mh(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!fh.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return mh(t)&&!mh(r)&&(s=vh(t,i)),mh(t)&&mh(r)?(r.forEach((function(r,s){if(fh.call(t,s)){var n=t[s];n&&"object"==typeof n&&r&&"object"==typeof r?t[s]=e(n,r,i):t.push(r)}else t[s]=r})),t):Object.keys(r).reduce((function(t,s){var n=r[s];return fh.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},bh=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new Zu("Side channel does not contain "+Yu(e))},get:function(i){if(eh&&i&&("object"==typeof i||"function"==typeof i)){if(e)return rh(e,i)}else if(th){if(t)return nh(t,i)}else if(r)return function(e,t){var r=ch(e,t);return r&&r.value}(r,i)},has:function(i){if(eh&&i&&("object"==typeof i||"function"==typeof i)){if(e)return sh(e,i)}else if(th){if(t)return ah(t,i)}else if(r)return function(e,t){return!!ch(e,t)}(r,i);return!1},set:function(i,s){eh&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new eh),ih(e,i,s)):th?(t||(t=new th),oh(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=ch(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},wh=yh,_h=uh,Sh=Object.prototype.hasOwnProperty,kh={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ch=Array.isArray,Rh=String.prototype.split,Ph=Array.prototype.push,Th=function(e,t){Ph.apply(e,Ch(t)?t:[t])},Eh=Date.prototype.toISOString,Dh=_h.default,xh={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:wh.encode,encodeValuesOnly:!1,format:Dh,formatter:_h.formatters[Dh],indices:!1,serializeDate:function(e){return Eh.call(e)},skipNulls:!1,strictNullHandling:!1},Mh={},Lh=function e(t,r,i,s,n,o,a,c,d,l,p,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(Mh))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(Mh)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=p(v):"comma"===i&&Ch(v)&&(v=wh.maybeMap(v,(function(e){return e instanceof Date?p(e):e}))),null===v){if(n)return a&&!f?a(r,xh.encoder,m,"key",u):r;v=""}if(function(e){return"string"==typeof e||"number"==typeof e||"boolean"==typeof e||"symbol"==typeof e||"bigint"==typeof e}(v)||wh.isBuffer(v)){if(a){var S=f?r:a(r,xh.encoder,m,"key",u);if("comma"===i&&f){for(var k=Rh.call(String(v),","),C="",R=0;R<k.length;++R)C+=(0===R?"":",")+h(a(k[R],xh.encoder,m,"value",u));return[h(S)+(s&&Ch(v)&&1===k.length?"[]":"")+"="+C]}return[h(S)+"="+h(a(v,xh.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&Ch(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(Ch(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&Ch(v)&&1===v.length?r+"[]":r,x=0;x<P.length;++x){var M=P[x],L="object"==typeof M&&void 0!==M.value?M.value:v[M];if(!o||null!==L){var I=Ch(v)?"function"==typeof i?i(D,M):D:D+(l?"."+M:"["+M+"]");g.set(t,b);var O=bh();O.set(Mh,g),Th(T,e(L,I,i,s,n,o,a,c,d,l,p,u,h,f,m,O))}}return T},Ih=yh,Oh=Object.prototype.hasOwnProperty,Ah=Array.isArray,jh={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Ih.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},Fh=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Nh=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Bh=function(e,t,r,i){if(e){var s=r.allowDots?e.replace(/\.([^.[]+)/g,"[$1]"):e,n=/(\[[^[\]]*])/g,o=r.depth>0&&/(\[[^[\]]*])/.exec(s),a=o?s.slice(0,o.index):s,c=[];if(a){if(!r.plainObjects&&Oh.call(Object.prototype,a)&&!r.allowPrototypes)return;c.push(a)}for(var d=0;r.depth>0&&null!==(o=n.exec(s))&&d<r.depth;){if(d+=1,!r.plainObjects&&Oh.call(Object.prototype,o[1].slice(1,-1))&&!r.allowPrototypes)return;c.push(o[1])}return o&&c.push("["+s.slice(o.index)+"]"),function(e,t,r,i){for(var s=i?t:Nh(t,r),n=e.length-1;n>=0;--n){var o,a=e[n];if("[]"===a&&r.parseArrays)o=[].concat(s);else{o=r.plainObjects?Object.create(null):{};var c="["===a.charAt(0)&&"]"===a.charAt(a.length-1)?a.slice(1,-1):a,d=parseInt(c,10);r.parseArrays||""!==c?!isNaN(d)&&a!==c&&String(d)===c&&d>=0&&r.parseArrays&&d<=r.arrayLimit?(o=[])[d]=s:"__proto__"!==c&&(o[c]=s):o={0:s}}s=o}return s}(c,t,r,i)}},Uh=function(e,t){var r,i=e,s=function(e){if(!e)return xh;if(null!==e.encoder&&void 0!==e.encoder&&"function"!=typeof e.encoder)throw new TypeError("Encoder has to be a function.");var t=e.charset||xh.charset;if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var r=_h.default;if(void 0!==e.format){if(!Sh.call(_h.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=_h.formatters[r],s=xh.filter;return("function"==typeof e.filter||Ch(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:xh.addQueryPrefix,allowDots:void 0===e.allowDots?xh.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:xh.charsetSentinel,delimiter:void 0===e.delimiter?xh.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:xh.encode,encoder:"function"==typeof e.encoder?e.encoder:xh.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:xh.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:xh.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:xh.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:xh.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):Ch(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in kh?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=kh[n];if(t&&"commaRoundTrip"in t&&"boolean"!=typeof t.commaRoundTrip)throw new TypeError("`commaRoundTrip` must be a boolean, or absent");var c="comma"===a&&t&&t.commaRoundTrip;r||(r=Object.keys(i)),s.sort&&r.sort(s.sort);for(var d=bh(),l=0;l<r.length;++l){var p=r[l];s.skipNulls&&null===i[p]||Th(o,Lh(i[p],p,a,c,s.strictNullHandling,s.skipNulls,s.encode?s.encoder:null,s.filter,s.sort,s.allowDots,s.serializeDate,s.format,s.formatter,s.encodeValuesOnly,s.charset,d))}var u=o.join(s.delimiter),h=!0===s.addQueryPrefix?"?":"";return s.charsetSentinel&&("iso-8859-1"===s.charset?h+="utf8=%26%2310003%3B&":h+="utf8=%E2%9C%93&"),u.length>0?h+u:""},qh=function(e,t){var r=function(e){if(!e)return jh;if(null!==e.decoder&&void 0!==e.decoder&&"function"!=typeof e.decoder)throw new TypeError("Decoder has to be a function.");if(void 0!==e.charset&&"utf-8"!==e.charset&&"iso-8859-1"!==e.charset)throw new TypeError("The charset option must be either utf-8, iso-8859-1, or undefined");var t=void 0===e.charset?jh.charset:e.charset;return{allowDots:void 0===e.allowDots?jh.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:jh.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:jh.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:jh.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:jh.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:jh.comma,decoder:"function"==typeof e.decoder?e.decoder:jh.decoder,delimiter:"string"==typeof e.delimiter||Ih.isRegExp(e.delimiter)?e.delimiter:jh.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:jh.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:jh.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:jh.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:jh.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:jh.strictNullHandling}}(t);if(""===e||null==e)return r.plainObjects?Object.create(null):{};for(var i="string"==typeof e?function(e,t){var r,i={},s=t.ignoreQueryPrefix?e.replace(/^\?/,""):e,n=t.parameterLimit===1/0?void 0:t.parameterLimit,o=s.split(t.delimiter,n),a=-1,c=t.charset;if(t.charsetSentinel)for(r=0;r<o.length;++r)0===o[r].indexOf("utf8=")&&("utf8=%E2%9C%93"===o[r]?c="utf-8":"utf8=%26%2310003%3B"===o[r]&&(c="iso-8859-1"),a=r,r=o.length);for(r=0;r<o.length;++r)if(r!==a){var d,l,p=o[r],u=p.indexOf("]="),h=-1===u?p.indexOf("="):u+1;-1===h?(d=t.decoder(p,jh.decoder,c,"key"),l=t.strictNullHandling?null:""):(d=t.decoder(p.slice(0,h),jh.decoder,c,"key"),l=Ih.maybeMap(Nh(p.slice(h+1),t),(function(e){return t.decoder(e,jh.decoder,c,"value")}))),l&&t.interpretNumericEntities&&"iso-8859-1"===c&&(l=Fh(l)),p.indexOf("[]=")>-1&&(l=Ah(l)?[l]:l),Oh.call(i,d)?i[d]=Ih.combine(i[d],l):i[d]=l}return i}(e,r):e,s=r.plainObjects?Object.create(null):{},n=Object.keys(i),o=0;o<n.length;++o){var a=n[o],c=Bh(a,i[a],r,"string"==typeof e);s=Ih.merge(s,c,r)}return!0===r.allowSparse?s:Ih.compact(s)},Wh={formats:uh,parse:qh,stringify:Uh};class Vh{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Pp.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Wh.stringify(e)}),this.customNode=i}getNode(e){return i(this,void 0,void 0,(function*(){if(this.customNode)return this.customNode;const{data:t}=yield this.api.get("/nodes/best",{params:e});return t}))}}Error;const zh=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],$h=({from:e,seen:t,to_:r,forceEnumerable:i})=>{const s=r||(Array.isArray(e)?[]:{});t.push(e);for(const[r,n]of Object.entries(e))"function"!=typeof n&&(n&&"object"==typeof n?t.includes(e[r])?s[r]="[Circular]":s[r]=$h({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of zh)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var Gh,Hh,Jh,Kh,Qh,Xh,Yh,Zh=e=>"object"==typeof e&&null!==e?$h({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class ef extends v{constructor(e,t){super(e,null!=t?t:"invalid_payload")}}!function(e){e.DominantSpeaker="dominant-speaker",e.PeersVolumes="peers-volumes",e.Silence="silence"}(Gh||(Gh={}));class tf{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new Qe({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(tf.validateEventPayload(t),t.event){case Gh.DominantSpeaker:this.handleDominantSpeaker(t);break;case Gh.PeersVolumes:this.handlePeerVolumes(t);break;case Gh.Silence:this.handleSilence()}}catch(t){this.logger.warn("Failed to handle audio observer event",{error:Zh(t),eventData:e})}}handleDominantSpeaker(e){const{peerId:t}=e.data,r=this.engine.getPeerById(t);this.engine.setActiveSpeakerPeer(r)}handlePeerVolumes(e){e.volumes.forEach((e=>{var t;const{peerId:r,trackLabel:i,value:s}=e,n=null===(t=this.engine.getPeerById(r))||void 0===t?void 0:t.tracks.get(i);n&&n.setVolume(s)}))}handleSilence(){this.engine.peers.flatMap((e=>Array.from(e.tracks.values()))).forEach((e=>e.setVolume(0))),this.engine.setActiveSpeakerPeer(void 0)}static validateEventPayload(e){switch(e.event){case Gh.Silence:break;case Gh.DominantSpeaker:{e.data||tf.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===h.Microphone||tf.throwInvalidPayload();break}case Gh.PeersVolumes:Array.isArray(e.volumes)||tf.throwInvalidPayload(),e.volumes.forEach((e=>{const{peerId:t,producerId:r,value:i,trackLabel:s}=e;"string"==typeof t&&"string"==typeof r&&"number"==typeof i&&s===h.Microphone||tf.throwInvalidPayload()}));break;default:tf.throwInvalidPayload()}}static throwInvalidPayload(){throw new ef("Invalid channel audio observer event handler payload")}}class rf{createSystem(e){return new xc(e)}createMedia(e){return new ra(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new Qd({logLevel:r,onLogMessage:i}),n=new Vh(t);return new Ec({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new Mc(e)}createMediaSoupEventHandler(e){return new Lc(e)}createAudioObserverEventHandler(e){return new tf(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new Rc({statsParser:new Pc({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new Tc({issueEmitter:new lc,networkScoresCalculator:new hc,detectors:[new _c,new gc,new vc,new yc,new wc,new bc,new mc,new Sc],statsReporter:new pc({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class sf extends AudioWorkletNode{constructor(e){super(e.context,"rnnoise",{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers",numberOfInputs:1,numberOfOutputs:1,outputChannelCount:[1],processorOptions:{module:e.noiseSuppressor.module}}),this.port.onmessage=({data:e})=>{const t=Object.assign(new Event("status"),e);this.dispatchEvent(t)}}update(e){this.port.postMessage(e)}static register(e){return i(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class nf{constructor(e){Hh.set(this,void 0),Jh.set(this,void 0),Kh.set(this,void 0),Qh.set(this,void 0),Xh.set(this,void 0),Yh.set(this,!0),n(this,Hh,e.noiseSuppressor.instance.exports,"f"),n(this,Jh,e.context,"f"),n(this,Kh,new Float32Array(s(this,Hh,"f").memory.buffer),"f"),n(this,Qh,s(this,Hh,"f").newState(),"f"),n(this,Xh,s(this,Jh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return s(this,Xh,"f")}update(e){e||(n(this,Yh,!1,"f"),s(this,Hh,"f").deleteState(s(this,Qh,"f")));const t=Object.assign(new Event("status"),{vadProb:s(this,Hh,"f").getVadProb(s(this,Qh,"f"))});s(this,Xh,"f").dispatchEvent(t)}setOnAudioProcess(){s(this,Xh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!s(this,Yh,"f"))return;s(this,Kh,"f").set(e.getChannelData(0),s(this,Hh,"f").getInput(s(this,Qh,"f"))/4);const r=t.getChannelData(0),i=s(this,Hh,"f").pipe(s(this,Qh,"f"),r.length)/4;i&&r.set(s(this,Kh,"f").subarray(i,i+r.length))}))}}Hh=new WeakMap,Jh=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Xh=new WeakMap,Yh=new WeakMap;var of,af,cf,df,lf,pf,uf,hf,ff,mf;class gf{constructor({context:e,noiseSuppressor:t}){of.set(this,void 0),af.set(this,void 0),cf.set(this,void 0),n(this,of,e,"f"),n(this,af,t,"f")}createNoiseSuppressionNode(){return i(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=s(this,cf,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return i(this,void 0,void 0,(function*(){return yield sf.register(s(this,of,"f")),n(this,cf,new sf({context:s(this,of,"f"),noiseSuppressor:s(this,af,"f")}),"f"),s(this,cf,"f")}))}createScriptProcessorNode(){return n(this,cf,new nf({context:s(this,of,"f"),noiseSuppressor:s(this,af,"f")}),"f"),s(this,cf,"f").noiseSuppressionScriptProcessorNode}}of=new WeakMap,af=new WeakMap,cf=new WeakMap;class vf{constructor(e){df.set(this,void 0),lf.set(this,void 0),pf.set(this,void 0),uf.set(this,void 0),n(this,df,e.noiseSuppressor,"f"),n(this,pf,new Qe({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return!!s(this,uf,"f")}processTrack(e){return i(this,void 0,void 0,(function*(){const t=(e=>{const t=window.AudioContext||window.webkitAudioContext||!1;return t?new t(e):null})();if(!t)throw new Error("AudioContext is not available");const r=new MediaStreamAudioDestinationNode(t,{channelCountMode:"explicit",channelCount:1,channelInterpretation:"speakers"});yield sf.register(t);const i=t.createMediaStreamSource(new MediaStream([e])),o=new gf({context:t,noiseSuppressor:s(this,df,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),i.connect(a);const[c]=r.stream.getTracks();return n(this,lf,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),n(this,uf,c,"f"),s(this,pf,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return i(this,void 0,void 0,(function*(){if(this.isProcessing)if(s(this,lf,"f"))try{s(this,lf,"f").noiseSuppressionProvider.stop(),s(this,lf,"f").noiseSuppressionNode.disconnect(),s(this,lf,"f").streamDestination.disconnect(),yield s(this,lf,"f").audioContext.close(),null===(e=s(this,uf,"f"))||void 0===e||e.stop(),n(this,uf,void 0,"f"),s(this,pf,"f").info("stopProcessing()",{success:!0})}catch(e){s(this,pf,"f").error("stopProcessing()",{success:!1,error:e})}else s(this,pf,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else s(this,pf,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}df=new WeakMap,lf=new WeakMap,pf=new WeakMap,uf=new WeakMap;class yf extends ba{constructor(e){super(e),hf.set(this,void 0),ff.set(this,void 0),mf.set(this,void 0),e.noiseSuppressor&&n(this,hf,new vf({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),n(this,mf,new Qe({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=s(this,hf,"f"))||void 0===e?void 0:e.isProcessing)}getEncoderConfig(){return this.encoderConfig}getEncodings(){var e;return null!==(e=this.getEncoderConfig().encodings)&&void 0!==e?e:$o}getCodecOptions(){var e,t;return{opusFec:null===(e=this.getEncoderConfig().enableFec)||void 0===e||e,opusDtx:null===(t=this.getEncoderConfig().enableDtx)||void 0===t||t}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||"opus"}enableNoiseSuppression(){var e;return i(this,void 0,void 0,(function*(){if(s(this,hf,"f"))try{const t=yield null===(e=s(this,hf,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);n(this,ff,this.mediaStreamTrack,"f"),yield this.replaceTrack(t)}catch(e){throw this.logger.warn("enableNoiseSuppression()",{description:"Can not enable noise suppression",track:this,error:e}),new Error("Can not enable noise suppression")}else this.logger.warn("enableNoiseSuppression()",{description:"Track suppressor is not defined"})}))}disableNoiseSuppression(){var e,t;return i(this,void 0,void 0,(function*(){try{if(!(null===(e=s(this,hf,"f"))||void 0===e?void 0:e.isProcessing))return void s(this,mf,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!s(this,ff,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});yield this.replaceTrack(s(this,ff,"f")),yield null===(t=s(this,hf,"f"))||void 0===t?void 0:t.stopProcessing()}catch(e){throw this.logger.warn("disableNoiseSuppression()",{description:"Can not disable noise suppression",track:this,error:e}),new Error("Can not disable noise suppression")}}))}publish(){return i(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(W,this)}))}}hf=new WeakMap,ff=new WeakMap,mf=new WeakMap;class bf{createAudioTrack(e){return new yf(e)}createVideoTrack(e){return new za(e)}}module.exports=class{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:l}=e;this._observer=null!=i?i:new o;const p=new rf,u=new bf;this.engine=new Ja({dependenciesFactory:p,clientEventEmitter:this.observer,media:{mediaTracksFactory:u},network:{loadbalancer:{baseURL:null===(t=null==s?void 0:s.loadbalancer)||void 0===t?void 0:t.baseURL,customNode:null===(r=null==s?void 0:s.loadbalancer)||void 0===r?void 0:r.customNode}},logLevel:d,onLogMessage:n,onIssues:a,onNetworkScoresUpdated:c,disableWid:l})}get observer(){return this._observer}get id(){return this.engine.mySocketId}get peers(){return this.engine.peers}get availableVideoDevices(){return this.engine.system.availableVideoDevices}get availableAudioDevices(){return this.engine.system.availableAudioDevices}get canUseNoiseSuppression(){return this.engine.canUseNoiseSuppression}detectDevices(){return i(this,void 0,void 0,(function*(){return yield this.engine.system.detectDevices(),{video:this.engine.system.availableVideoDevices,audio:this.engine.system.availableAudioDevices}}))}join(e){return this.engine.join(e)}leave(){return this.engine.release()}confirmActivity(){return this.engine.confirmActivity()}createCameraVideoTrack(e){return this.engine.createCameraVideoTrack(e)}createMicrophoneAudioTrack(e){return this.engine.createMicrophoneAudioTrack(e)}createScreenMediaTracks(e){return this.engine.createScreenMediaTracks(e)}deleteTrack(e){return this.engine.deleteTrack(e)}loadPeers(e){return this.engine.loadPeers(e)}updateAppData(e){return this.engine.updateAppData(e)}getTransportsInfo(){return i(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}};
|