@livedigital/client 3.1.0 → 3.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.es.js +1 -1
- package/dist/index.js +1 -1
- package/package.json +2 -2
package/dist/index.es.js
CHANGED
|
@@ -238,4 +238,4 @@ let Vt;jt.AwaitQueue=class{constructor(){this.pendingTasks=new Map,this.nextTask
|
|
|
238
238
|
personMask = smoothstep(u_coverage.x, u_coverage.y, personMask);
|
|
239
239
|
outColor = vec4(frameColor * personMask + backgroundColor * (1.0 - personMask), 1.0);
|
|
240
240
|
}
|
|
241
|
-
`,{width:c,height:d}=n,p=c/d,l=lc(e,e.VERTEX_SHADER,o),u=lc(e,e.FRAGMENT_SHADER,a),h=fc(e,l,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 R(t){S=uc(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<p?(n=s/p,i=(t.naturalHeight-n)/2):(s=n*p,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)?R(s):s&&(s.onload=()=>{R(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(l)}}}(u,m,g,b,t,n);return{render:function(){return r(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(),R.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===i.type){const t=R;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===i.type){R.updateCoverage(e.coverage)}else{const e=R;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){R.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 _c,Sc,Rc,kc,Cc,Pc,Tc,Ec,Dc,Mc;class xc{constructor(e){_c.set(this,!1),Sc.set(this,void 0),Rc.set(this,void 0),kc.set(this,void 0),s(this,kc,new $e({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return i(this,_c,"f")}get tfliteModule(){return i(this,Sc,"f")||i(this,Rc,"f")}loadTFLite(){return r(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&s(this,_c,!0,"f")}))}loadTFLiteModel(e){return r(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=xc.getTFLiteModelFileName(e);i(this,kc,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),s=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(s),n);const o=this.tfliteModule._loadModel(s.byteLength);i(this,kc,"f").info("loading model result",{result:o})}catch(e){i(this,kc,"f").warn("loadTFLiteModel()",{error:e})}else i(this,kc,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return r(this,void 0,void 0,(function*(){try{s(this,Sc,yield createTFLiteModule(),"f")}catch(e){i(this,kc,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return r(this,void 0,void 0,(function*(){try{s(this,Rc,yield createTFLiteSIMDModule(),"f")}catch(e){i(this,kc,"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 Lc({sourcePlayback:e,backgroundConfig:t,segmentationConfig:i,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=gc[i.inputResolution],d=a*c,p=new ImageData(a,c),l=document.createElement("canvas");l.width=a,l.height=c;const u=l.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return r(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"===i.model||"mlkit"===i.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"===i.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);p.data[4*e+3]=255*o/(s+o)}else if("mlkit"===i.model){const t=n.HEAPF32[f+e];p.data[4*e+3]=255*t}u.putImageData(p,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(l,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(){}}}_c=new WeakMap,Sc=new WeakMap,Rc=new WeakMap,kc=new WeakMap;class Oc{constructor(e){Cc.set(this,void 0),Pc.set(this,void 0),Tc.set(this,!1),Ec.set(this,void 0),s(this,Cc,new xc(e.logLevel),"f"),s(this,Ec,new $e({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return i(this,Tc,"f")}processTrack(e){return r(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:n}=e;i(this,Tc,"f")&&this.stopProcessing();try{i(this,Cc,"f").isLoaded||(yield i(this,Cc,"f").loadTFLite(),yield i(this,Cc,"f").loadTFLiteModel(n.segmentationConfig));const{tfliteModule:o}=i(this,Cc,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=n.segmentationConfig,c=yield Oc.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const p=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()}}}(),l={config:n,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?Oc.buildCanvas2dPipeline(l):Oc.buildWebGL2Pipeline(l),h=()=>r(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),p.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(n.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return s(this,Pc,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:p,timerId:f},"f"),s(this,Tc,!0,"f"),g}catch(e){throw i(this,Ec,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(i(this,Pc,"f"))try{i(this,Pc,"f").pipeline.cleanUp(),i(this,Pc,"f").source.remove(),i(this,Pc,"f").destination.remove(),i(this,Pc,"f").timerWorker.clearTimeout(i(this,Pc,"f").timerId),i(this,Pc,"f").timerWorker.terminate(),i(this,Pc,"f").destination.remove(),i(this,Pc,"f").track.stop(),s(this,Pc,void 0,"f"),s(this,Tc,!1,"f")}catch(e){i(this,Ec,"f").error("cleanUp()",{error:e})}else i(this,Ec,"f").warn("cleanUp()",{description:"This track is not processing"});else i(this,Ec,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return wc({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 Lc({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return r(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}}))}}Cc=new WeakMap,Pc=new WeakMap,Tc=new WeakMap,Ec=new WeakMap;class Ic extends dc{constructor(e){super(e),Dc.set(this,void 0),Mc.set(this,void 0),this.transformParams={},s(this,Dc,new Oc({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return i(this,Dc,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===u.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||xa}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return r(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 r(this,void 0,void 0,(function*(){try{s(this,Mc,this.mediaStreamTrack.clone(),"f");const e=yield i(this,Dc,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?yc:vc});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 r(this,void 0,void 0,(function*(){try{if(!i(this,Dc,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!i(this,Mc,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});this.isPublished&&(yield this.replaceTrack(i(this,Mc,"f"))),i(this,Dc,"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 r(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(q,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>r(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield i(this,Dc,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?yc:vc});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",(()=>r(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})}}))))}}Dc=new WeakMap,Mc=new WeakMap;const Ac=new class{sleepMs(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},jc=(e,t={})=>r(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 Ac.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Fc extends g{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Nc{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1,this.rejoinRequested=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||Ne,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.channelAudioObserverEventHandle=e=>{this.channelAudioObserverEventHandler.handle(e)},this.logger=new $e({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 $e({logLevel:this.logLevel,namespace:"WID"})}),this.watchSocketState()}initialize(){var e,t,i;return r(this,void 0,void 0,(function*(){try{const{rtpCapabilities:r}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(r),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===(i=this.network.receiveTransport)||void 0===i?void 0:i.id})}catch(e){this.logger.error("initialize()",{error:e});const t=e instanceof f&&"device not supported"===e.message,r=e instanceof Error&&"RTCPeerConnection is not defined"===e.message;if(t||r)throw new v("Device not supported",v.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t,i;return r(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.reset(),this.network.socket.disconnect(),this.peersRepository.forEach((e=>e.reset())),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.removeListener("message",this.channelAudioObserverEventHandle),null===(i=this.audioObserver)||void 0===i||i.close(),this.channelEventsHandler.reset(),this.mediaSoupEventsHandler.reset(),this.removeClientEventEmitterListeners(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}removeClientEventEmitterListeners(){[q,W,V,z,$,G].forEach((e=>this.clientEventEmitter.removeAllListeners(e)))}watchSocketState(){this.network.socket.observer.on($a.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===$a.Error&&this.isJoined&&n?this.triggerRejoinEventIfAppropriate("unauthorized error"):r===$a.Reconnected&&this.triggerRejoinEventIfAppropriate("reconnected socket")}))}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 r(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(R)}))}join(e){return r(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,this.watchClientEvents(),yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1,this.rejoinRequested=!1}}))}loadPeers(e){return r(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(w,{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 Da(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())),t.reset(),this.peersRepository.delete(e))}updateAppData(e){return r(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{Ta(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 r(this,void 0,void 0,(function*(){const t=Ga.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 Ic&&(r.setLabel(u.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(Ga.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 r(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(u.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 r(this,void 0,void 0,(function*(){const t=Ga.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()}),{once:!0}),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof Ic){r.setLabel(u.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=Ga.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(u.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(B,{peer:e}))}connectToSocketServerWithRetry(e){return r(this,void 0,void 0,(function*(){return jc((()=>r(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new $e({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 r(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 r(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 i=s=>r(this,void 0,void 0,(function*(){const{error:r,state:n}=s,o=()=>this.network.socket.observer.removeListener($a.State,i),a=[$a.Disconnected,$a.Reconnecting].includes(n);return r?(o(),void t(r)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[$a.Connected,$a.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on($a.State,i)}))}performJoin(e){return r(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 r(this,void 0,void 0,(function*(){return jc((()=>r(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new $e({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(b,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(q,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(W,(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(V,(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(z,(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($,(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(G,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return r(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 Pa({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 r(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Fc("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",this.channelAudioObserverEventHandle),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}triggerRejoinEventIfAppropriate(e){this.rejoinRequested&&!this.isChannelJoining||(this.logger.debug("Triggering channel rejoin required event",{reason:e}),this.rejoinRequested=!0,this.clientEventEmitter.emit(I))}}var Bc,Uc,qc;function Wc(){}function Vc(){Vc.init.call(this)}function zc(e){return void 0===e._maxListeners?Vc.defaultMaxListeners:e._maxListeners}function $c(e,t,r){if(t)e.call(r);else for(var i=e.length,s=Zc(e,i),n=0;n<i;++n)s[n].call(r)}function Gc(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=Zc(e,s),o=0;o<s;++o)n[o].call(r,i)}function Hc(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=Zc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function Jc(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=Zc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function Kc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=Zc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function Qc(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 Wc,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=zc(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 Xc(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 Yc(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 Zc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Wc.prototype=Object.create(null),Vc.EventEmitter=Vc,Vc.usingDomains=!1,Vc.prototype.domain=void 0,Vc.prototype._events=void 0,Vc.prototype._maxListeners=void 0,Vc.defaultMaxListeners=10,Vc.init=function(){this.domain=null,Vc.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Wc,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Vc.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},Vc.prototype.getMaxListeners=function(){return zc(this)},Vc.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 p="function"==typeof r;switch(i=arguments.length){case 1:$c(r,p,this);break;case 2:Gc(r,p,this,arguments[1]);break;case 3:Hc(r,p,this,arguments[1],arguments[2]);break;case 4:Jc(r,p,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];Kc(r,p,this,s)}return!0},Vc.prototype.addListener=function(e,t){return Qc(this,e,t,!1)},Vc.prototype.on=Vc.prototype.addListener,Vc.prototype.prependListener=function(e,t){return Qc(this,e,t,!0)},Vc.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Xc(this,e,t)),this},Vc.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Xc(this,e,t)),this},Vc.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 Wc:(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 Wc,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},Vc.prototype.off=function(e,t){return this.removeListener(e,t)},Vc.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Wc,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Wc: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 Wc,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},Vc.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):[]},Vc.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Yc.call(e,t)},Vc.prototype.listenerCount=Yc,Vc.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class ed extends Vc{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Bc||(Bc={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Uc||(Uc={})),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"}(qc||(qc={}));class td extends Vc{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(td.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(td.STATS_REPORT_READY_EVENT,e)}))}}const rd=(()=>{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 id{#e={};calculate(e){const{connection:{id:t}}=e,r=this.calculateOutboundScore(e),i=this.calculateInboundScore(e);return this.#e[t]=e,rd({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,p=s-n,l=o.packetsLost-o.lastPacketsLost,u=p&&l?Math.round(100*l/(p+l)):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,p=s-n,l=o.packetsLost-o.lastPacketsLost,u=p&&l?Math.round(100*l/(p+l)):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 sd{#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)&&rd({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 nd extends sd{#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:Uc.Network,reason:qc.OutboundNetworkThroughput}),t):t}}class od extends sd{#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:Uc.CPU,reason:qc.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class ad extends sd{#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:Uc.Network,reason:qc.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class cd extends sd{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:p}=a,l=d/r.length,u=p/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=l>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,R={rtt:c,packetLossPct:m,avgJitter:l,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:R,type:Uc.Network,reason:qc.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:R,type:Uc.Server,reason:qc.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:R,type:Uc.Network,reason:qc.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:R,type:Uc.Network,reason:qc.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class dd extends sd{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:Uc.Network,reason:qc.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class pd extends sd{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,p=d/r.length,l=n-o,u=a.packetsLost-a.lastPacketsLost,h=l&&u?Math.round(100*u/(l+u)):0,f=h>5,m=p>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:p,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Uc.Network,reason:qc.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Uc.Network,reason:qc.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class ld extends sd{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:Uc.CPU,reason:qc.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Uc.Network,reason:qc.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class ud extends sd{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:Uc.Stream,reason:qc.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 hd=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,fd=(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 md{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(!hd(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 gd{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(!hd(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()}),rd({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=fd(e,r,"bytesReceived"),e.packetRate=fd(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=fd(e,r,"bytesSent"),e.packetRate=fd(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=fd(e,r,"bytesReceived"),e.packetRate=fd(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=fd(e,r,"bytesSent"),e.packetRate=fd(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 vd{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new ed,e.onIssues&&this.eventEmitter.on(Bc.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Bc.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new ld,new od,new ad,new cd,new pd,new dd,new nd,new ud],this.networkScoresCalculator=e.networkScoresCalculator??new id,this.compositeStatsParser=e.compositeStatsParser??new md({statsParser:new gd({logger:this.logger})}),this.statsReporter=e.statsReporter??new td({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(td.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(td.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Bc.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(Bc.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(Bc.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}}Error;const yd=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],bd=({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]=bd({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of yd)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var wd=e=>"object"==typeof e&&null!==e?bd({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class _d{constructor(e){var t;const{socketClient:r,loadBalancerApiClient:i,onLogMessage:s}=e;this.socket=r,this.loadBalancerClient=i,this.eventEmitter=null!==(t=e.eventEmitter)&&void 0!==t?t:new n,this.logger=new $e({namespace:"Network",logLevel:e.logLevel,onLogMessage:s})}removeEventListeners(){const{sendTransport:e,receiveTransport:t}=this;if(e){["connect","produce","connectionstatechange"].forEach((t=>e.removeAllListeners(t)))}if(t){["connect","produce","connectionstatechange"].forEach((e=>t.removeAllListeners(e)))}}stopRestartIceAtempts(){const{sendTransport:e,receiveTransport:t}=this;e&&clearInterval(e.appData.restartIceInterval),t&&clearInterval(t.appData.restartIceInterval)}reset(){this.stopRestartIceAtempts(),this.removeEventListeners()}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(ne,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return r(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 r(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 r(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(ke,{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 r(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"}),i=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:i}),i.on("connect",(({dtlsParameters:e},s,n)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Ce,{transportId:i.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:i.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(i)),1500)}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),i.on("produce",((e,t,s)=>r(this,void 0,void 0,(function*(){try{const{id:r}=yield this.socket.request(Pe,{transportId:i.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:r}),this.logger.debug("sendTransport.produce()",{producerId:r,transportId:i.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:i.id,kind:e.kind}),s(t)}})))),i.on("connectionstatechange",(e=>{if(this.logger.info("sendTransport.state",{state:e}),["closed","connected"].includes(e))return i.appData.restartIceInterval&&(this.logger.debug("Stop sendTransport.restartIce() retries",{sendTransportId:i.id}),clearInterval(i.appData.restartIceInterval),i.appData.restartIceInterval=void 0),void("connected"===e&&setTimeout((()=>this.logTransportDetails(i)),1500));if(["disconnected","failed"].includes(e)){if(i.appData.restartIceInterval)return;"failed"===e&&(this.logger.debug("sendTransport.restartIce()",{sendTransportId:i.id}),this.restartIce(i)),i.appData.restartIceInterval=setInterval((()=>{this.restartIce(i),this.logger.debug("sendTransport.restartIce() attempt",{sendTransportId:i.id})}),5e3)}})),this.sendTransport=i}))}createRecvTransport(e){return r(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"}),i=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:i}),i.on("connect",(({dtlsParameters:e},t,s)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Ce,{transportId:i.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:i.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(i)),1500)}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),i.on("connectionstatechange",(e=>{if(this.logger.info("receiveTransport.state",{state:e}),["closed","connected"].includes(e))i.appData.restartIceInterval&&(this.logger.debug("Stop receiveTransport.restartIce() retries",{recvTransportId:i.id}),clearInterval(i.appData.restartIceInterval),i.appData.restartIceInterval=void 0,"connected"===e&&setTimeout((()=>this.logTransportDetails(i)),1500));else if(["disconnected","failed"].includes(e)){if(i.appData.restartIceInterval)return;"failed"===e&&(this.logger.debug("receiveTransport.restartIce()",{recvTransportId:i.id}),this.restartIce(i)),i.appData.restartIceInterval=setInterval((()=>{this.restartIce(i),this.logger.debug("receiveTransport.restartIce() attempt",{recvTransportId:i.id})}),5e3)}})),this.receiveTransport=i}))}getIceParameters(e){return r(this,void 0,void 0,(function*(){const t=yield this.socket.request(Ee,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);const{iceParameters:i}=t;return this.logger.debug("getIceParameters()",{iceParameters:i}),i}))}restartIce(e){return r(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.info("restartIce completed",{iceParameters:t})}catch(e){this.logger.error("restartIce error",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:i,channelId:s,producerPeerId:n}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)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(fe,{producerId:e,transportId:r.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:i,channelId:s},producerPeerId:n}),a=yield r.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:i}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)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(me,{dataProducerId:e,transportId:r.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:i}}),n=yield r.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ge,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ye,{consumerId:e})}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ve,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return r(this,void 0,void 0,(function*(){return this.socket.request(S,{peerId:e,appData:t})}))}getAudioObserverProducer(){return r(this,void 0,void 0,(function*(){return this.socket.request(T)}))}getTransportsStateInfo(){return r(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 r(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"})}))}logTransportDetails(e){var t,i;return r(this,void 0,void 0,(function*(){let r;try{r=yield e.getStats()}catch(t){return void this.logger.error("Failed to log detailed WebRTC transport stats",{error:wd(t),transportId:e.id,reason:"failed to parse getStats"})}try{const s=[...r],[,n]=null!==(t=s.find((([,e])=>"transport"===(null==e?void 0:e.type))))&&void 0!==t?t:[],[,o]=null!==(i=s.find((([,e])=>"candidate-pair"===e.type&&"succeeded"===e.state&&e.nominated)))&&void 0!==i?i:[],a=r.get(String((null==o?void 0:o.localCandidateId)||"-")),c=r.get(String((null==o?void 0:o.remoteCandidateId)||"-")),d={hasNominatedPair:!!o,transportId:e.id,iceRole:null==n?void 0:n.iceRole,iceState:null==n?void 0:n.iceState,dtlsRole:null==n?void 0:n.dtlsRole,dtlsState:null==n?void 0:n.dtlsState,local:{address:null==a?void 0:a.address,candidateType:null==a?void 0:a.candidateType,foundation:null==a?void 0:a.foundation,networkType:null==a?void 0:a.networkType,isRemote:null==a?void 0:a.isRemote,port:null==a?void 0:a.port,protocol:null==a?void 0:a.protocol,relatedAddress:null==a?void 0:a.relatedAddress,relatedPort:null==a?void 0:a.relatedPort,transportId:null==a?void 0:a.transportId,relayProtocol:null==a?void 0:a.relayProtocol,url:null==a?void 0:a.url},remote:{address:null==c?void 0:c.address,candidateType:null==c?void 0:c.candidateType,foundation:null==c?void 0:c.foundation,isRemote:null==c?void 0:c.isRemote,port:null==c?void 0:c.port,protocol:null==c?void 0:c.protocol,transportId:null==c?void 0:c.transportId}};(null==o?void 0:o.totalRoundTripTime)&&(null==o?void 0:o.responsesReceived)&&(d.pairRoundTripTime=Math.round(o.totalRoundTripTime/o.responsesReceived*1e3)),this.logger.info("Detailed WebRTC transport stats",d)}catch(t){this.logger.error("Failed to log detailed WebRTC transport stats",{error:wd(t),transportId:e.id,reason:"-"})}}))}}const Sd=e=>![h.NotFoundError,h.NotAllowedError,h.DeviceIsBusy].includes(e);class Rd{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 $e({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 r(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(h.NotAllowedError);if("NotReadableError"===t.name)throw new Error(h.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(h.NotFoundError);throw new Error(h.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return r(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 r(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Sd(e.message))throw e;e.message!==h.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(h.NoDevices)}))}deviceChangeHandler(){return r(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(A,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return r(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Sd(e.message))throw e}}))}}class kd{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new $e({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(y,(e=>{this.engine.clientEventEmitter.safeEmit(E,e),this.logger.debug("New channel event",{event:e})})),e.on(b,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(D,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(_,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(M,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(C,(e=>{this.engine.clientEventEmitter.safeEmit(x,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(P,(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(k,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(S,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(S,t)}))}removeEventListeners(){const{connection:e}=this.engine.network.socket;if(!e)return;[y,b,_,C,P,k,S].forEach((t=>e.removeAllListeners(t)))}reset(){this.removeEventListeners()}}class Cd{constructor(e){this.queue=new Ca;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new $e({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(ne,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ne,e)})),e.on(se,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(se,e)})),e.on(ge,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ge,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(ye,e)})),e.on(ve,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(ve,e)})),e.on(we,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(we,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(be,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(be,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(be,e)})),e.on(le,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(le,e)})),e.on(he,(({producerId:e,spatialLayer:t})=>r(this,void 0,void 0,(function*(){yield this.queue.push((()=>r(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),he)})))),e.on(ue,(({peerId:e,producerId:t,spatialLayer:i})=>r(this,void 0,void 0,(function*(){const r=this.engine.peers.find((t=>t.id===e));r&&!r.isMe&&r.observer.safeEmit(ue,{peerId:e,producerId:t,spatialLayer:i})})))),e.on(Te,(({reason:e,transportId:t,direction:i,timeout:s})=>r(this,void 0,void 0,(function*(){const r=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));r&&"connected"!==r.connectionState&&(this.logger.warn(Te,{reason:e,transportId:t,direction:i,timeout:s}),this.engine.clientEventEmitter.emit(j,{direction:i,reason:e}))})))),e.on(ce,(({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(K,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(de,(({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(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({label:e})=>r(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit($,t),this.engine.clientEventEmitter.emit(N,{label:e}),yield this.engine.media.deleteTrack(t))}))))}removeEventListeners(){const{connection:e}=this.engine.network.socket;if(!e)return;[ne,se,ge,ye,ve,we,be,le,he,ue,Te,ce,de,pe].forEach((t=>e.removeAllListeners(t)))}reset(){this.removeEventListeners()}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return r(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 Ic))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(ue,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}const Pd=Object.create(null);Pd.open="0",Pd.close="1",Pd.ping="2",Pd.pong="3",Pd.message="4",Pd.upgrade="5",Pd.noop="6";const Td=Object.create(null);Object.keys(Pd).forEach((e=>{Td[Pd[e]]=e}));const Ed={type:"error",data:"parser error"},Dd="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Md="function"==typeof ArrayBuffer,xd=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Ld=({type:e,data:t},r,i)=>Dd&&t instanceof Blob?r?i(t):Od(t,i):Md&&(t instanceof ArrayBuffer||xd(t))?r?i(t):Od(new Blob([t]),i):i(Pd[e]+(t||"")),Od=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Id(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Ad;const jd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Fd="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<jd.length;e++)Fd[jd.charCodeAt(e)]=e;const Nd="function"==typeof ArrayBuffer,Bd=(e,t)=>{if("string"!=typeof e)return{type:"message",data:qd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Ud(e.substring(1),t)};return Td[r]?e.length>1?{type:Td[r],data:e.substring(1)}:{type:Td[r]}:Ed},Ud=(e,t)=>{if(Nd){const r=(e=>{let t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const d=new ArrayBuffer(o),p=new Uint8Array(d);for(t=0;t<a;t+=4)r=Fd[e.charCodeAt(t)],i=Fd[e.charCodeAt(t+1)],s=Fd[e.charCodeAt(t+2)],n=Fd[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|s>>2,p[c++]=(3&s)<<6|63&n;return d})(e);return qd(r,t)}return{base64:!0,data:e}},qd=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Wd=String.fromCharCode(30);function Vd(){return new TransformStream({transform(e,t){!function(e,t){Dd&&e.data instanceof Blob?e.data.arrayBuffer().then(Id).then(t):Md&&(e.data instanceof ArrayBuffer||xd(e.data))?t(Id(e.data)):Ld(e,!1,(e=>{Ad||(Ad=new TextEncoder),t(Ad.encode(e))}))}(e,(r=>{const i=r.length;let s;if(i<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,i);else if(i<65536){s=new Uint8Array(3);const e=new DataView(s.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{s=new Uint8Array(9);const e=new DataView(s.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(s[0]|=128),t.enqueue(s),t.enqueue(r)}))}})}let zd;function $d(e){return e.reduce(((e,t)=>e+t.length),0)}function Gd(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let s=0;s<t;s++)r[s]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function Hd(e){if(e)return function(e){for(var t in Hd.prototype)e[t]=Hd.prototype[t];return e}(e)}Hd.prototype.on=Hd.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Hd.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Hd.prototype.off=Hd.prototype.removeListener=Hd.prototype.removeAllListeners=Hd.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},Hd.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},Hd.prototype.emitReserved=Hd.prototype.emit,Hd.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Hd.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Jd="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Kd(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Qd=Jd.setTimeout,Xd=Jd.clearTimeout;function Yd(e,t){t.useNativeTimers?(e.setTimeoutFn=Qd.bind(Jd),e.clearTimeoutFn=Xd.bind(Jd)):(e.setTimeoutFn=Jd.setTimeout.bind(Jd),e.clearTimeoutFn=Jd.clearTimeout.bind(Jd))}class Zd extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class ep extends Hd{constructor(e){super(),this.writable=!1,Yd(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new Zd(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Bd(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const tp="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),rp={};let ip,sp=0,np=0;function op(e){let t="";do{t=tp[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function ap(){const e=op(+new Date);return e!==ip?(sp=0,ip=e):e+"."+op(sp++)}for(;np<64;np++)rp[tp[np]]=np;let cp=!1;try{cp="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}const dp=cp;function pp(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||dp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Jd[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function lp(){}const up=null!=new pp({xdomain:!1}).responseType;class hp extends Hd{constructor(e,t){super(),Yd(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=Kd(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new pp(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=hp.requestsCount++,hp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=lp,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete hp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(hp.requestsCount=0,hp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",fp);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Jd?"pagehide":"unload",fp,!1)}function fp(){for(let e in hp.requests)hp.requests.hasOwnProperty(e)&&hp.requests[e].abort()}const mp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),gp=Jd.WebSocket||Jd.MozWebSocket,vp="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const yp={websocket:class extends ep{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=vp?{}:Kd(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=vp?new gp(e,t,r):t?new gp(e,t):new gp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Ld(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&mp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ap()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!gp}},webtransport:class extends ep{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){zd||(zd=new TextDecoder);const r=[];let i=0,s=-1,n=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===i){if($d(r)<1)break;const e=Gd(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if($d(r)<2)break;const e=Gd(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if($d(r)<8)break;const e=Gd(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){a.enqueue(Ed);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if($d(r)<s)break;const e=Gd(r,s);a.enqueue(Bd(n?e:zd.decode(e),t)),i=0}if(0===s||s>e){a.enqueue(Ed);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Vd();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const s=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),s())})).catch((e=>{}))};s();const n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this.writer.write(n).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&mp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends ep{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=up&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(Wd),i=[];for(let e=0;e<r.length;e++){const s=Bd(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Ld(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(Wd))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=ap()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new hp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},bp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,wp=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function _p(e){const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let s=bp.exec(e||""),n={},o=14;for(;o--;)n[wp[o]]=s[o]||"";return-1!=r&&-1!=i&&(n.source=t,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,n.path),n.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,n.query),n}class Sp extends Hd{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=_p(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=_p(t.host).host),Yd(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new yp[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Sp.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",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),r=!1;Sp.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;Sp.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),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{r||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",Sp.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,s=e.length;i<s;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Sp.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("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Sp.protocol=4;const Rp="function"==typeof ArrayBuffer,kp=Object.prototype.toString,Cp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===kp.call(Blob),Pp="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===kp.call(File);function Tp(e){return Rp&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Cp&&e instanceof Blob||Pp&&e instanceof File}function Ep(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Ep(e[t]))return!0;return!1}if(Tp(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ep(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ep(e[t]))return!0;return!1}function Dp(e){const t=[],r=e.data,i=e;return i.data=Mp(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Mp(e,t){if(!e)return e;if(Tp(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]=Mp(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=Mp(e[i],t));return r}return e}function xp(e,t){return e.data=Lp(e.data,t),delete e.attachments,e}function Lp(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Lp(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Lp(e[r],t));return e}const Op=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Ip;!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"}(Ip||(Ip={}));function Ap(e){return"[object Object]"===Object.prototype.toString.call(e)}class jp extends Hd{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Ip.BINARY_EVENT;r||t.type===Ip.BINARY_ACK?(t.type=r?Ip.EVENT:Ip.ACK,this.reconstructor=new Fp(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Tp(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===Ip[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Ip.BINARY_EVENT||r.type===Ip.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!jp.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Ip.CONNECT:return Ap(t);case Ip.DISCONNECT:return void 0===t;case Ip.CONNECT_ERROR:return"string"==typeof t||Ap(t);case Ip.EVENT:case Ip.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Op.indexOf(t[0]));case Ip.ACK:case Ip.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Fp{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=xp(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Np=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Ip},Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Ip.EVENT&&e.type!==Ip.ACK||!Ep(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Ip.EVENT?Ip.BINARY_EVENT:Ip.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Ip.BINARY_EVENT&&e.type!==Ip.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Dp(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:jp});function Bp(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Up=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class qp extends Hd{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Bp(e,"open",this.onopen.bind(this)),Bp(e,"packet",this.onpacket.bind(this)),Bp(e,"error",this.onerror.bind(this)),Bp(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(Up.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Ip.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const s=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(s),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,s)=>{t.push(((e,t)=>r?e?s(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Ip.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Ip.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Ip.EVENT:case Ip.BINARY_EVENT:this.onevent(e);break;case Ip.ACK:case Ip.BINARY_ACK:this.onack(e);break;case Ip.DISCONNECT:this.ondisconnect();break;case Ip.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Ip.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Ip.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Wp(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}Wp.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)},Wp.prototype.reset=function(){this.attempts=0},Wp.prototype.setMin=function(e){this.ms=e},Wp.prototype.setMax=function(e){this.max=e},Wp.prototype.setJitter=function(e){this.jitter=e};class Vp extends Hd{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,Yd(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 Wp({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||Np;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 Sp(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Bp(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=Bp(t,"error",s);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),s(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Bp(e,"ping",this.onping.bind(this)),Bp(e,"data",this.ondata.bind(this)),Bp(e,"error",this.onerror.bind(this)),Bp(e,"close",this.onclose.bind(this)),Bp(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){mp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new qp(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const zp={};function $p(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=_p(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=zp[s]&&n in zp[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Vp(i,t):(zp[s]||(zp[s]=new Vp(i,t)),a=zp[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}Object.assign($p,{Manager:Vp,Socket:qp,io:$p,connect:$p});class Gp{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new n,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 $e({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=$p(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on($a.Connect,(()=>{const e=this.reconnectingAttempt?$a.Reconnected:$a.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug(`connection.on('${$a.Connect}')`,{connectionId:r.id}),this.observer.safeEmit($a.State,{state:e})})),r.on($a.ConnectError,(e=>{this.connectionError=e,this.logger.error(`connection.on('${$a.ConnectError}')`,{error:e}),this.observer.safeEmit($a.State,{state:$a.Error,error:e})})),r.on($a.Disconnect,(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn(`connection.on('${$a.Disconnect}')`,{reason:e}),this.observer.safeEmit($a.State,{state:$a.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on($a.ReconnectAttempt,(e=>{this.setReconnectingAttempt(e),this.logger.warn(`connection.on('${$a.ReconnectAttempt}')`,{attempt:e}),this.observer.safeEmit($a.State,{state:$a.Reconnecting})})),r.io.on($a.Reconnect,(()=>{this.logger.debug(`connection.on('${$a.Reconnect}')`,{connectionId:r.id}),this.observer.safeEmit($a.State,{state:$a.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.connection.io.removeAllListeners(),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 Hp={exports:{}},Jp=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)}},Kp=Jp,Qp=Object.prototype.toString;function Xp(e){return"[object Array]"===Qp.call(e)}function Yp(e){return void 0===e}function Zp(e){return null!==e&&"object"==typeof e}function el(e){if("[object Object]"!==Qp.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function tl(e){return"[object Function]"===Qp.call(e)}function rl(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),Xp(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 il={isArray:Xp,isArrayBuffer:function(e){return"[object ArrayBuffer]"===Qp.call(e)},isBuffer:function(e){return null!==e&&!Yp(e)&&null!==e.constructor&&!Yp(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:Zp,isPlainObject:el,isUndefined:Yp,isDate:function(e){return"[object Date]"===Qp.call(e)},isFile:function(e){return"[object File]"===Qp.call(e)},isBlob:function(e){return"[object Blob]"===Qp.call(e)},isFunction:tl,isStream:function(e){return Zp(e)&&tl(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:rl,merge:function e(){var t={};function r(r,i){el(t[i])&&el(r)?t[i]=e(t[i],r):el(r)?t[i]=e({},r):Xp(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)rl(arguments[i],r);return t},extend:function(e,t,r){return rl(t,(function(t,i){e[i]=r&&"function"==typeof t?Kp(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}},sl=il;function nl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var ol=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(sl.isURLSearchParams(t))i=t.toString();else{var s=[];sl.forEach(t,(function(e,t){null!=e&&(sl.isArray(e)?t+="[]":e=[e],sl.forEach(e,(function(e){sl.isDate(e)?e=e.toISOString():sl.isObject(e)&&(e=JSON.stringify(e)),s.push(nl(t)+"="+nl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},al=il;function cl(){this.handlers=[]}cl.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},cl.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},cl.prototype.forEach=function(e){al.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var dl=cl,pl=il,ll=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},ul=ll,hl=function(e,t,r,i,s){var n=new Error(e);return ul(n,t,r,i,s)},fl=hl,ml=il,gl=ml.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),ml.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),ml.isString(i)&&o.push("path="+i),ml.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(){}},vl=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},yl=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},bl=il,wl=["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"],_l=il,Sl=_l.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=_l.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Rl=il,kl=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(fl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Cl=gl,Pl=ol,Tl=function(e,t){return e&&!vl(t)?yl(e,t):t},El=function(e){var t,r,i,s={};return e?(bl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=bl.trim(e.substr(0,i)).toLowerCase(),r=bl.trim(e.substr(i+1)),t){if(s[t]&&wl.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Dl=Sl,Ml=hl,xl=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Rl.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=Tl(e.baseURL,e.url);function p(){if(o){var i="getAllResponseHeaders"in o?El(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};kl(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),Pl(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=p:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(p)},o.onabort=function(){o&&(r(Ml("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Ml("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Ml(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Rl.isStandardBrowserEnv()){var l=(e.withCredentials||Dl(d))&&e.xsrfCookieName?Cl.read(e.xsrfCookieName):void 0;l&&(s[e.xsrfHeaderName]=l)}"setRequestHeader"in o&&Rl.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Rl.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)}))},Ll=il,Ol=function(e,t){pl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Il=ll,Al={"Content-Type":"application/x-www-form-urlencoded"};function jl(e,t){!Ll.isUndefined(e)&&Ll.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Fl,Nl={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(Fl=xl),Fl),transformRequest:[function(e,t){return Ol(t,"Accept"),Ol(t,"Content-Type"),Ll.isFormData(e)||Ll.isArrayBuffer(e)||Ll.isBuffer(e)||Ll.isStream(e)||Ll.isFile(e)||Ll.isBlob(e)?e:Ll.isArrayBufferView(e)?e.buffer:Ll.isURLSearchParams(e)?(jl(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Ll.isObject(e)||t&&"application/json"===t["Content-Type"]?(jl(t,"application/json"),function(e,t,r){if(Ll.isString(e))try{return(t||JSON.parse)(e),Ll.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&&Ll.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Il(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}};Nl.headers={common:{Accept:"application/json, text/plain, */*"}},Ll.forEach(["delete","get","head"],(function(e){Nl.headers[e]={}})),Ll.forEach(["post","put","patch"],(function(e){Nl.headers[e]=Ll.merge(Al)}));var Bl=Nl,Ul=il,ql=Bl,Wl=function(e){return!(!e||!e.__CANCEL__)},Vl=il,zl=function(e,t,r){var i=this||ql;return Ul.forEach(r,(function(r){e=r.call(i,e,t)})),e},$l=Wl,Gl=Bl;function Hl(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Jl=il,Kl=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 Jl.isPlainObject(e)&&Jl.isPlainObject(t)?Jl.merge(e,t):Jl.isPlainObject(t)?Jl.merge({},t):Jl.isArray(t)?t.slice():t}function c(i){Jl.isUndefined(t[i])?Jl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}Jl.forEach(i,(function(e){Jl.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),Jl.forEach(s,c),Jl.forEach(n,(function(i){Jl.isUndefined(t[i])?Jl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),Jl.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),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Jl.forEach(p,c),r},Ql={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"}]},Xl={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Xl[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var Yl={},Zl=Ql.version.split(".");function eu(e,t){for(var r=t?t.split("."):Zl,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}Xl.transitional=function(e,t,r){var i=t&&eu(t);function s(e,t){return"[Axios v"+Ql.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&&!Yl[n]&&(Yl[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 tu={isOlderVersion:eu,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:Xl},ru=il,iu=ol,su=dl,nu=function(e){return Hl(e),e.headers=e.headers||{},e.data=zl.call(e,e.data,e.headers,e.transformRequest),e.headers=Vl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Vl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Gl.adapter)(e).then((function(t){return Hl(e),t.data=zl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return $l(t)||(Hl(e),t&&t.response&&(t.response.data=zl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},ou=Kl,au=tu,cu=au.validators;function du(e){this.defaults=e,this.interceptors={request:new su,response:new su}}du.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=ou(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&&au.assertOptions(t,{silentJSONParsing:cu.transitional(cu.boolean,"1.0.0"),forcedJSONParsing:cu.transitional(cu.boolean,"1.0.0"),clarifyTimeoutError:cu.transitional(cu.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=[nu,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=nu(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},du.prototype.getUri=function(e){return e=ou(this.defaults,e),iu(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},ru.forEach(["delete","get","head","options"],(function(e){du.prototype[e]=function(t,r){return this.request(ou(r||{},{method:e,url:t,data:(r||{}).data}))}})),ru.forEach(["post","put","patch"],(function(e){du.prototype[e]=function(t,r,i){return this.request(ou(i||{},{method:e,url:t,data:r}))}}));var pu=du;function lu(e){this.message=e}lu.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},lu.prototype.__CANCEL__=!0;var uu=lu,hu=uu;function fu(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 hu(e),t(r.reason))}))}fu.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},fu.source=function(){var e,t=new fu((function(t){e=t}));return{token:t,cancel:e}};var mu=fu,gu=il,vu=Jp,yu=pu,bu=Kl;function wu(e){var t=new yu(e),r=vu(yu.prototype.request,t);return gu.extend(r,yu.prototype,t),gu.extend(r,t),r}var _u=wu(Bl);_u.Axios=yu,_u.create=function(e){return wu(bu(_u.defaults,e))},_u.Cancel=uu,_u.CancelToken=mu,_u.isCancel=Wl,_u.all=function(e){return Promise.all(e)},_u.spread=function(e){return function(t){return e.apply(null,t)}},_u.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Hp.exports=_u,Hp.exports.default=_u;var Su=Hp.exports,Ru="undefined"!=typeof Symbol&&Symbol,ku=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},Cu="Function.prototype.bind called on incompatible ",Pu=Array.prototype.slice,Tu=Object.prototype.toString,Eu=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Tu.call(t))throw new TypeError(Cu+t);for(var r,i=Pu.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Pu.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Pu.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},Du=Function.prototype.bind||Eu,Mu=Du.call(Function.call,Object.prototype.hasOwnProperty),xu=SyntaxError,Lu=Function,Ou=TypeError,Iu=function(e){try{return Lu('"use strict"; return ('+e+").constructor;")()}catch(e){}},Au=Object.getOwnPropertyDescriptor;if(Au)try{Au({},"")}catch(Uc){Au=null}var ju=function(){throw new Ou},Fu=Au?function(){try{return ju}catch(e){try{return Au(arguments,"callee").get}catch(e){return ju}}}():ju,Nu="function"==typeof Ru&&"function"==typeof Symbol&&"symbol"==typeof Ru("foo")&&"symbol"==typeof Symbol("bar")&&ku(),Bu=Object.getPrototypeOf||function(e){return e.__proto__},Uu={},qu="undefined"==typeof Uint8Array?undefined:Bu(Uint8Array),Wu={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Nu?Bu([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Uu,"%AsyncGenerator%":Uu,"%AsyncGeneratorFunction%":Uu,"%AsyncIteratorPrototype%":Uu,"%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%":Lu,"%GeneratorFunction%":Uu,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Nu?Bu(Bu([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Nu?Bu((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&&Nu?Bu((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Nu?Bu(""[Symbol.iterator]()):undefined,"%Symbol%":Nu?Symbol:undefined,"%SyntaxError%":xu,"%ThrowTypeError%":Fu,"%TypedArray%":qu,"%TypeError%":Ou,"%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},Vu=function e(t){var r;if("%AsyncFunction%"===t)r=Iu("async function () {}");else if("%GeneratorFunction%"===t)r=Iu("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Iu("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Bu(s.prototype))}return Wu[t]=r,r},zu={"%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"]},$u=Du,Gu=Mu,Hu=$u.call(Function.call,Array.prototype.concat),Ju=$u.call(Function.apply,Array.prototype.splice),Ku=$u.call(Function.call,String.prototype.replace),Qu=$u.call(Function.call,String.prototype.slice),Xu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Yu=/\\(\\)?/g,Zu=function(e){var t=Qu(e,0,1),r=Qu(e,-1);if("%"===t&&"%"!==r)throw new xu("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new xu("invalid intrinsic syntax, expected opening `%`");var i=[];return Ku(e,Xu,(function(e,t,r,s){i[i.length]=r?Ku(s,Yu,"$1"):t||e})),i},eh=function(e,t){var r,i=e;if(Gu(zu,i)&&(i="%"+(r=zu[i])[0]+"%"),Gu(Wu,i)){var s=Wu[i];if(s===Uu&&(s=Vu(i)),void 0===s&&!t)throw new Ou("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new xu("intrinsic "+e+" does not exist!")},th=function(e,t){if("string"!=typeof e||0===e.length)throw new Ou("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Ou('"allowMissing" argument must be a boolean');var r=Zu(e),i=r.length>0?r[0]:"",s=eh("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],Ju(r,Hu([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=Qu(l,0,1),h=Qu(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new xu("property names with quotes must have matching quotes");if("constructor"!==l&&p||(a=!0),Gu(Wu,n="%"+(i+="."+l)+"%"))o=Wu[n];else if(null!=o){if(!(l in o)){if(!t)throw new Ou("base intrinsic for "+e+" exists, but the property is not available.");return}if(Au&&d+1>=r.length){var f=Au(o,l);o=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[l]}else p=Gu(o,l),o=o[l];p&&!a&&(Wu[n]=o)}}return o},rh={exports:{}};!function(e){var t=Du,r=th,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}(rh);var ih=th,sh=rh.exports,nh=sh(ih("String.prototype.indexOf")),oh=c(Object.freeze({__proto__:null,default:{}})),ah="function"==typeof Map&&Map.prototype,ch=Object.getOwnPropertyDescriptor&&ah?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,dh=ah&&ch&&"function"==typeof ch.get?ch.get:null,ph=ah&&Map.prototype.forEach,lh="function"==typeof Set&&Set.prototype,uh=Object.getOwnPropertyDescriptor&&lh?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,hh=lh&&uh&&"function"==typeof uh.get?uh.get:null,fh=lh&&Set.prototype.forEach,mh="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,gh="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,vh="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,yh=Boolean.prototype.valueOf,bh=Object.prototype.toString,wh=Function.prototype.toString,_h=String.prototype.match,Sh="function"==typeof BigInt?BigInt.prototype.valueOf:null,Rh=Object.getOwnPropertySymbols,kh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Ch="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Ph=Object.prototype.propertyIsEnumerable,Th=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Eh=oh.custom,Dh=Eh&&Ih(Eh)?Eh:null,Mh="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function xh(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Lh(e){return String(e).replace(/"/g,""")}function Oh(e){return!("[object Array]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}function Ih(e){if(Ch)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!kh)return!1;try{return kh.call(e),!0}catch(e){}return!1}var Ah=Object.prototype.hasOwnProperty||function(e){return e in this};function jh(e,t){return Ah.call(e,t)}function Fh(e){return bh.call(e)}function Nh(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 Bh(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Bh(e.slice(0,t.maxStringLength),t)+i}return xh(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Uh),"single",t)}function Uh(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 qh(e){return"Object("+e+")"}function Wh(e){return e+" { ? }"}function Vh(e,t,r,i){return e+" ("+t+") {"+(i?zh(r,i):r.join(", "))+"}"}function zh(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function $h(e,t){var r=Oh(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=jh(e,s)?t(e[s],e):""}var n,o="function"==typeof Rh?Rh(e):[];if(Ch){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)jh(e,c)&&(r&&String(Number(c))===c&&c<e.length||Ch&&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 Rh)for(var d=0;d<o.length;d++)Ph.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var Gh,Hh,Jh,Kh,Qh,Xh,Yh,Zh=th,ef=function(e,t){var r=ih(e,!!t);return"function"==typeof r&&nh(e,".prototype.")>-1?sh(r):r},tf=function e(t,r,i,s){var n=r||{};if(jh(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(jh(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=!jh(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(jh(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 Bh(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 Oh(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(Nh(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return jh(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=_h.call(wh.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=$h(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(Ih(t)){var u=Ch?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):kh.call(t);return"object"!=typeof t||Ch?u:qh(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+"="+xh(Lh(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Oh(t)){if(0===t.length)return"[]";var g=$h(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Nh(e[t],"\n")>=0)return!1;return!0}(g)?"["+zh(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t)){var v=$h(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Dh&&"function"==typeof t[Dh])return t[Dh]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!dh||!e||"object"!=typeof e)return!1;try{dh.call(e);try{hh.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return ph.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Vh("Map",dh.call(t),y,c)}if(function(e){if(!hh||!e||"object"!=typeof e)return!1;try{hh.call(e);try{dh.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return fh.call(t,(function(e){b.push(d(e,t))})),Vh("Set",hh.call(t),b,c)}if(function(e){if(!mh||!e||"object"!=typeof e)return!1;try{mh.call(e,mh);try{gh.call(e,gh)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Wh("WeakMap");if(function(e){if(!gh||!e||"object"!=typeof e)return!1;try{gh.call(e,gh);try{mh.call(e,mh)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Wh("WeakSet");if(function(e){if(!vh||!e||"object"!=typeof e)return!1;try{return vh.call(e),!0}catch(e){}return!1}(t))return Wh("WeakRef");if(function(e){return!("[object Number]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t))return qh(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Sh)return!1;try{return Sh.call(e),!0}catch(e){}return!1}(t))return qh(d(Sh.call(t)));if(function(e){return!("[object Boolean]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t))return qh(yh.call(t));if(function(e){return!("[object String]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t))return qh(d(String(t)));if(!function(e){return!("[object Date]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t)&&!function(e){return!("[object RegExp]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t)){var w=$h(t,d),_=Th?Th(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!_&&Mh&&Object(t)===t&&Mh in t?Fh(t).slice(8,-1):S?"Object":"",k=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===w.length?k+"{}":c?k+"{"+zh(w,c)+"}":k+"{ "+w.join(", ")+" }"}return String(t)},rf=Zh("%TypeError%"),sf=Zh("%WeakMap%",!0),nf=Zh("%Map%",!0),of=ef("WeakMap.prototype.get",!0),af=ef("WeakMap.prototype.set",!0),cf=ef("WeakMap.prototype.has",!0),df=ef("Map.prototype.get",!0),pf=ef("Map.prototype.set",!0),lf=ef("Map.prototype.has",!0),uf=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},hf=String.prototype.replace,ff=/%20/g,mf="RFC3986",gf={default:mf,formatters:{RFC1738:function(e){return hf.call(e,ff,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:mf},vf=gf,yf=Object.prototype.hasOwnProperty,bf=Array.isArray,wf=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),_f=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},Sf={arrayToObject:_f,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(bf(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===vf.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=wf[c]:c<2048?o+=wf[192|c>>6]+wf[128|63&c]:c<55296||c>=57344?o+=wf[224|c>>12]+wf[128|c>>6&63]+wf[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=wf[240|c>>18]+wf[128|c>>12&63]+wf[128|c>>6&63]+wf[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(bf(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(bf(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!yf.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return bf(t)&&!bf(r)&&(s=_f(t,i)),bf(t)&&bf(r)?(r.forEach((function(r,s){if(yf.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 yf.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},Rf=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new rf("Side channel does not contain "+tf(e))},get:function(i){if(sf&&i&&("object"==typeof i||"function"==typeof i)){if(e)return of(e,i)}else if(nf){if(t)return df(t,i)}else if(r)return function(e,t){var r=uf(e,t);return r&&r.value}(r,i)},has:function(i){if(sf&&i&&("object"==typeof i||"function"==typeof i)){if(e)return cf(e,i)}else if(nf){if(t)return lf(t,i)}else if(r)return function(e,t){return!!uf(e,t)}(r,i);return!1},set:function(i,s){sf&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new sf),af(e,i,s)):nf?(t||(t=new nf),pf(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=uf(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},kf=Sf,Cf=gf,Pf=Object.prototype.hasOwnProperty,Tf={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ef=Array.isArray,Df=String.prototype.split,Mf=Array.prototype.push,xf=function(e,t){Mf.apply(e,Ef(t)?t:[t])},Lf=Date.prototype.toISOString,Of=Cf.default,If={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:kf.encode,encodeValuesOnly:!1,format:Of,formatter:Cf.formatters[Of],indices:!1,serializeDate:function(e){return Lf.call(e)},skipNulls:!1,strictNullHandling:!1},Af={},jf=function e(t,r,i,s,n,o,a,c,d,p,l,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(Af))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(Af)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=l(v):"comma"===i&&Ef(v)&&(v=kf.maybeMap(v,(function(e){return e instanceof Date?l(e):e}))),null===v){if(n)return a&&!f?a(r,If.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)||kf.isBuffer(v)){if(a){var S=f?r:a(r,If.encoder,m,"key",u);if("comma"===i&&f){for(var R=Df.call(String(v),","),k="",C=0;C<R.length;++C)k+=(0===C?"":",")+h(a(R[C],If.encoder,m,"value",u));return[h(S)+(s&&Ef(v)&&1===R.length?"[]":"")+"="+k]}return[h(S)+"="+h(a(v,If.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&Ef(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(Ef(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&Ef(v)&&1===v.length?r+"[]":r,M=0;M<P.length;++M){var x=P[M],L="object"==typeof x&&void 0!==x.value?x.value:v[x];if(!o||null!==L){var O=Ef(v)?"function"==typeof i?i(D,x):D:D+(p?"."+x:"["+x+"]");g.set(t,b);var I=Rf();I.set(Af,g),xf(T,e(L,O,i,s,n,o,a,c,d,p,l,u,h,f,m,I))}}return T},Ff=Sf,Nf=Object.prototype.hasOwnProperty,Bf=Array.isArray,Uf={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Ff.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},qf=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Wf=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Vf=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&&Nf.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&&Nf.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:Wf(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)}},zf=function(e,t){var r,i=e,s=function(e){if(!e)return If;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||If.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=Cf.default;if(void 0!==e.format){if(!Pf.call(Cf.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=Cf.formatters[r],s=If.filter;return("function"==typeof e.filter||Ef(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:If.addQueryPrefix,allowDots:void 0===e.allowDots?If.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:If.charsetSentinel,delimiter:void 0===e.delimiter?If.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:If.encode,encoder:"function"==typeof e.encoder?e.encoder:If.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:If.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:If.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:If.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:If.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):Ef(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in Tf?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=Tf[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=Rf(),p=0;p<r.length;++p){var l=r[p];s.skipNulls&&null===i[l]||xf(o,jf(i[l],l,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:""},$f=function(e,t){var r=function(e){if(!e)return Uf;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?Uf.charset:e.charset;return{allowDots:void 0===e.allowDots?Uf.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Uf.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Uf.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Uf.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Uf.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Uf.comma,decoder:"function"==typeof e.decoder?e.decoder:Uf.decoder,delimiter:"string"==typeof e.delimiter||Ff.isRegExp(e.delimiter)?e.delimiter:Uf.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Uf.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Uf.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Uf.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Uf.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Uf.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,p,l=o[r],u=l.indexOf("]="),h=-1===u?l.indexOf("="):u+1;-1===h?(d=t.decoder(l,Uf.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),Uf.decoder,c,"key"),p=Ff.maybeMap(Wf(l.slice(h+1),t),(function(e){return t.decoder(e,Uf.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=qf(p)),l.indexOf("[]=")>-1&&(p=Bf(p)?[p]:p),Nf.call(i,d)?i[d]=Ff.combine(i[d],p):i[d]=p}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=Vf(a,i[a],r,"string"==typeof e);s=Ff.merge(s,c,r)}return!0===r.allowSparse?s:Ff.compact(s)},Gf={formats:gf,parse:$f,stringify:zf};class Hf{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Su.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Gf.stringify(e)}),this.customNode=i}getNode(e){return r(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}))}}class Jf extends g{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 Kf{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new $e({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(Kf.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:wd(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||Kf.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===u.Microphone||Kf.throwInvalidPayload();break}case Gh.PeersVolumes:Array.isArray(e.volumes)||Kf.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===u.Microphone||Kf.throwInvalidPayload()}));break;default:Kf.throwInvalidPayload()}}static throwInvalidPayload(){throw new Jf("Invalid channel audio observer event handler payload")}}class Qf{createSystem(e){return new Rd(e)}createMedia(e){return new Ga(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new Gp({logLevel:r,onLogMessage:i}),n=new Hf(t);return new _d({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new kd(e)}createMediaSoupEventHandler(e){return new Cd(e)}createAudioObserverEventHandler(e){return new Kf(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new md({statsParser:new gd({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new vd({issueEmitter:new ed,networkScoresCalculator:new id,detectors:[new ld,new od,new ad,new cd,new pd,new dd,new nd,new ud],statsReporter:new td({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class Xf 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 r(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class Yf{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),s(this,Hh,e.noiseSuppressor.instance.exports,"f"),s(this,Jh,e.context,"f"),s(this,Kh,new Float32Array(i(this,Hh,"f").memory.buffer),"f"),s(this,Qh,i(this,Hh,"f").newState(),"f"),s(this,Xh,i(this,Jh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return i(this,Xh,"f")}update(e){e||(s(this,Yh,!1,"f"),i(this,Hh,"f").deleteState(i(this,Qh,"f")));const t=Object.assign(new Event("status"),{vadProb:i(this,Hh,"f").getVadProb(i(this,Qh,"f"))});i(this,Xh,"f").dispatchEvent(t)}setOnAudioProcess(){i(this,Xh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!i(this,Yh,"f"))return;i(this,Kh,"f").set(e.getChannelData(0),i(this,Hh,"f").getInput(i(this,Qh,"f"))/4);const r=t.getChannelData(0),s=i(this,Hh,"f").pipe(i(this,Qh,"f"),r.length)/4;s&&r.set(i(this,Kh,"f").subarray(s,s+r.length))}))}}Hh=new WeakMap,Jh=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Xh=new WeakMap,Yh=new WeakMap;var Zf,em,tm,rm,im,sm,nm,om,am,cm;class dm{constructor({context:e,noiseSuppressor:t}){Zf.set(this,void 0),em.set(this,void 0),tm.set(this,void 0),s(this,Zf,e,"f"),s(this,em,t,"f")}createNoiseSuppressionNode(){return r(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=i(this,tm,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return r(this,void 0,void 0,(function*(){return yield Xf.register(i(this,Zf,"f")),s(this,tm,new Xf({context:i(this,Zf,"f"),noiseSuppressor:i(this,em,"f")}),"f"),i(this,tm,"f")}))}createScriptProcessorNode(){return s(this,tm,new Yf({context:i(this,Zf,"f"),noiseSuppressor:i(this,em,"f")}),"f"),i(this,tm,"f").noiseSuppressionScriptProcessorNode}}Zf=new WeakMap,em=new WeakMap,tm=new WeakMap;class pm{constructor(e){rm.set(this,void 0),im.set(this,void 0),sm.set(this,void 0),nm.set(this,void 0),s(this,rm,e.noiseSuppressor,"f"),s(this,sm,new $e({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return!!i(this,nm,"f")}processTrack(e){return r(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 Xf.register(t);const n=t.createMediaStreamSource(new MediaStream([e])),o=new dm({context:t,noiseSuppressor:i(this,rm,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),n.connect(a);const[c]=r.stream.getTracks();return s(this,im,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),s(this,nm,c,"f"),i(this,sm,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return r(this,void 0,void 0,(function*(){if(this.isProcessing)if(i(this,im,"f"))try{i(this,im,"f").noiseSuppressionProvider.stop(),i(this,im,"f").noiseSuppressionNode.disconnect(),i(this,im,"f").streamDestination.disconnect(),yield i(this,im,"f").audioContext.close(),null===(e=i(this,nm,"f"))||void 0===e||e.stop(),s(this,nm,void 0,"f"),i(this,sm,"f").info("stopProcessing()",{success:!0})}catch(e){i(this,sm,"f").error("stopProcessing()",{success:!1,error:e})}else i(this,sm,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else i(this,sm,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}rm=new WeakMap,im=new WeakMap,sm=new WeakMap,nm=new WeakMap;class lm extends dc{constructor(e){super(e),om.set(this,void 0),am.set(this,void 0),cm.set(this,void 0),e.noiseSuppressor&&s(this,om,new pm({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),s(this,cm,new $e({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=i(this,om,"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:Oa}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 r(this,void 0,void 0,(function*(){if(i(this,om,"f"))try{const t=yield null===(e=i(this,om,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);s(this,am,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 r(this,void 0,void 0,(function*(){try{if(!(null===(e=i(this,om,"f"))||void 0===e?void 0:e.isProcessing))return void i(this,cm,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!i(this,am,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});this.isPublished&&(yield this.replaceTrack(i(this,am,"f"))),yield null===(t=i(this,om,"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 r(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(q,this)}))}}om=new WeakMap,am=new WeakMap,cm=new WeakMap;class um{createAudioTrack(e){return new lm(e)}createVideoTrack(e){return new Ic(e)}}class hm{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:o,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:p}=e;this._observer=null!=i?i:new n;const l=new Qf,u=new um;this.engine=new Nc({dependenciesFactory:l,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:o,onIssues:a,onNetworkScoresUpdated:c,disableWid:p})}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 r(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 r(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}}export{hm as default};
|
|
241
|
+
`,{width:c,height:d}=n,p=c/d,l=lc(e,e.VERTEX_SHADER,o),u=lc(e,e.FRAGMENT_SHADER,a),h=fc(e,l,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 R(t){S=uc(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<p?(n=s/p,i=(t.naturalHeight-n)/2):(s=n*p,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)?R(s):s&&(s.onload=()=>{R(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(l)}}}(u,m,g,b,t,n);return{render:function(){return r(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(),R.render()}))},updatePostProcessingConfig:function(e){if(S.updateSigmaSpace(e.jointBilateralFilter.sigmaSpace),S.updateSigmaColor(e.jointBilateralFilter.sigmaColor),"image"===i.type){const t=R;t.updateCoverage(e.coverage),t.updateLightWrapping(e.lightWrapping),t.updateBlendMode(e.blendMode)}else if("blur"===i.type){R.updateCoverage(e.coverage)}else{const e=R;e.updateCoverage([0,.9999]),e.updateLightWrapping(0)}},cleanUp:function(){R.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 _c,Sc,Rc,kc,Cc,Pc,Tc,Ec,Dc,Mc;class xc{constructor(e){_c.set(this,!1),Sc.set(this,void 0),Rc.set(this,void 0),kc.set(this,void 0),s(this,kc,new $e({logLevel:e,namespace:"TensorFlowLoader"}),"f")}get isLoaded(){return i(this,_c,"f")}get tfliteModule(){return i(this,Sc,"f")||i(this,Rc,"f")}loadTFLite(){return r(this,void 0,void 0,(function*(){yield Promise.all([this.loadTFLiteRegular(),this.loadTFLiteSIMD()]),this.tfliteModule&&s(this,_c,!0,"f")}))}loadTFLiteModel(e){return r(this,void 0,void 0,(function*(){if(this.tfliteModule)try{const t=xc.getTFLiteModelFileName(e);i(this,kc,"f").info("loading model",{modelFileName:t});const r=yield fetch(`${window.location.origin}/tflite/models/${t}.tflite`),s=yield r.arrayBuffer(),n=this.tfliteModule._getModelBufferMemoryOffset();this.tfliteModule.HEAPU8.set(new Uint8Array(s),n);const o=this.tfliteModule._loadModel(s.byteLength);i(this,kc,"f").info("loading model result",{result:o})}catch(e){i(this,kc,"f").warn("loadTFLiteModel()",{error:e})}else i(this,kc,"f").warn("loadTFLiteModel()",{description:"TFLite module is not loaded"})}))}loadTFLiteRegular(){return r(this,void 0,void 0,(function*(){try{s(this,Sc,yield createTFLiteModule(),"f")}catch(e){i(this,kc,"f").error("Failed to create TFLite WebAssembly module.",{error:e})}}))}loadTFLiteSIMD(){return r(this,void 0,void 0,(function*(){try{s(this,Rc,yield createTFLiteSIMDModule(),"f")}catch(e){i(this,kc,"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 Lc({sourcePlayback:e,backgroundConfig:t,segmentationConfig:i,canvas:s,tflite:n}){const o=s.getContext("2d");o.scale(1.031,1.031),o.translate(-11,-11);const[a,c]=gc[i.inputResolution],d=a*c,p=new ImageData(a,c),l=document.createElement("canvas");l.width=a,l.height=c;const u=l.getContext("2d"),h=n._getInputMemoryOffset()/4,f=n._getOutputMemoryOffset()/4;let m;return{render:function(){return r(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"===i.model||"mlkit"===i.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"===i.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);p.data[4*e+3]=255*o/(s+o)}else if("mlkit"===i.model){const t=n.HEAPF32[f+e];p.data[4*e+3]=255*t}u.putImageData(p,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(l,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(){}}}_c=new WeakMap,Sc=new WeakMap,Rc=new WeakMap,kc=new WeakMap;class Oc{constructor(e){Cc.set(this,void 0),Pc.set(this,void 0),Tc.set(this,!1),Ec.set(this,void 0),s(this,Cc,new xc(e.logLevel),"f"),s(this,Ec,new $e({namespace:"VideoTrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return i(this,Tc,"f")}processTrack(e){return r(this,void 0,void 0,(function*(){const{track:t,pipelineConfig:n}=e;i(this,Tc,"f")&&this.stopProcessing();try{i(this,Cc,"f").isLoaded||(yield i(this,Cc,"f").loadTFLite(),yield i(this,Cc,"f").loadTFLiteModel(n.segmentationConfig));const{tfliteModule:o}=i(this,Cc,"f");if(!o)throw new Error("TensorFlow model is not available");const{targetFps:a}=n.segmentationConfig,c=yield Oc.buildSourcePlayback(t),d=document.createElement("canvas");d.width=c.width,d.height=c.height;const p=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()}}}(),l={config:n,sourcePlayback:c,destinationPlayback:d,tflite:o},u="canvas2dCpu"===e.pipelineConfig.segmentationConfig.pipeline?Oc.buildCanvas2dPipeline(l):Oc.buildWebGL2Pipeline(l),h=()=>r(this,void 0,void 0,(function*(){const e=performance.now();return yield u.render(),p.setTimeout(h,performance.now()-e)})),f=yield h();u.updatePostProcessingConfig(n.postprocessingConfig);const m=d.captureStream(a),[g]=m.getVideoTracks();return s(this,Pc,{pipeline:u,destination:d,source:c.htmlElement,track:g,timerWorker:p,timerId:f},"f"),s(this,Tc,!0,"f"),g}catch(e){throw i(this,Ec,"f").error("processTrack()",{error:e,track:t}),new Error("Can not process this track")}}))}stopProcessing(){if(this.isProcessing)if(i(this,Pc,"f"))try{i(this,Pc,"f").pipeline.cleanUp(),i(this,Pc,"f").source.remove(),i(this,Pc,"f").destination.remove(),i(this,Pc,"f").timerWorker.clearTimeout(i(this,Pc,"f").timerId),i(this,Pc,"f").timerWorker.terminate(),i(this,Pc,"f").destination.remove(),i(this,Pc,"f").track.stop(),s(this,Pc,void 0,"f"),s(this,Tc,!1,"f")}catch(e){i(this,Ec,"f").error("cleanUp()",{error:e})}else i(this,Ec,"f").warn("cleanUp()",{description:"This track is not processing"});else i(this,Ec,"f").debug("stopProcessing()",{description:"Track is not processed"})}static buildWebGL2Pipeline(e){return wc({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 Lc({sourcePlayback:e.sourcePlayback,backgroundConfig:e.config.backgroundConfig,segmentationConfig:e.config.segmentationConfig,canvas:e.destinationPlayback,tflite:e.tflite})}static buildSourcePlayback(e){return r(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}}))}}Cc=new WeakMap,Pc=new WeakMap,Tc=new WeakMap,Ec=new WeakMap;class Ic extends dc{constructor(e){super(e),Dc.set(this,void 0),Mc.set(this,void 0),this.transformParams={},s(this,Dc,new Oc({logLevel:e.logLevel}),"f"),this.watchOrientation(),this.watchDocumentVisibility()}get isEffectsProcessing(){return i(this,Dc,"f").isProcessing}getEncoderConfig(){return this.encoderConfig}getCodecOptions(){return{videoGoogleStartBitrate:this.getEncoderConfig().videoGoogleStartBitrate||1e3}}getPreferredCodec(){const{preferredCodec:e}=this.getEncoderConfig();return e||(this.getLabel()===u.ScreenVideo?"vp8":"h264")}getEncodings(){return this.getEncoderConfig().encodings||xa}setTransformParams(e){this.transformParams=e}setMaxSpatialLayer(e){return r(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 r(this,void 0,void 0,(function*(){try{s(this,Mc,this.mediaStreamTrack.clone(),"f");const e=yield i(this,Dc,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?yc:vc});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 r(this,void 0,void 0,(function*(){try{if(!i(this,Dc,"f").isProcessing)return void this.logger.debug("disableBlur()",{description:"Track is not processed"});if(!i(this,Mc,"f"))return void this.logger.warn("disableBlur()",{description:"Original track missing"});this.isPublished&&(yield this.replaceTrack(i(this,Mc,"f"))),i(this,Dc,"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 r(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(q,this)}))}watchOrientation(){window.screen.orientation&&(this.logger.debug("watchOrientation()",{description:"Watching started"}),window.screen.orientation.addEventListener("change",(()=>r(this,void 0,void 0,(function*(){if(this.isEffectsProcessing)try{this.mediaStreamTrack.enabled=!1;const e=yield i(this,Dc,"f").processTrack({track:this.mediaStreamTrack,pipelineConfig:document.hidden?yc:vc});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",(()=>r(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})}}))))}}Dc=new WeakMap,Mc=new WeakMap;const Ac=new class{sleepMs(e){return r(this,void 0,void 0,(function*(){return new Promise((t=>setTimeout(t,e)))}))}now(){return new Date(Date.now())}},jc=(e,t={})=>r(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 Ac.sleepMs(Math.min(e,null!==(r=t.maxBackoffDelayMs)&&void 0!==r?r:e))}}}throw n}));class Fc extends g{constructor(e,t){super(e,null!=t?t:"need_join_first")}}class Nc{constructor(e){this.initialized=!1,this.isJoined=!1,this.isChannelJoining=!1,this.rejoinRequested=!1;const{clientEventEmitter:t,network:r,media:i,dependenciesFactory:s,logLevel:n}=e;this.logLevel=n||Ne,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.channelAudioObserverEventHandle=e=>{this.channelAudioObserverEventHandler.handle(e)},this.logger=new $e({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 $e({logLevel:this.logLevel,namespace:"WID"})}),this.watchSocketState()}initialize(){var e,t,i;return r(this,void 0,void 0,(function*(){try{const{rtpCapabilities:r}=yield this.network.socket.request("router.getRtpCapabilities");yield this.media.createNoiseSuppressor(),yield this.media.loadDevice(r),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===(i=this.network.receiveTransport)||void 0===i?void 0:i.id})}catch(e){this.logger.error("initialize()",{error:e});const t=e instanceof f&&"device not supported"===e.message,r=e instanceof Error&&"RTCPeerConnection is not defined"===e.message;if(t||r)throw new v("Device not supported",v.UNSUPPORTED_DEVICE_CODE);throw new Error("Error initialize engine")}}))}release(){var e,t,i;return r(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.reset(),this.network.socket.disconnect(),this.peersRepository.forEach((e=>e.reset())),this.peersRepository.clear(),yield this.network.closeSendTransport(),yield this.network.closeReceiveTransport(),yield this.media.clearTracks(),null===(t=this.audioObserver)||void 0===t||t.removeListener("message",this.channelAudioObserverEventHandle),null===(i=this.audioObserver)||void 0===i||i.close(),this.channelEventsHandler.reset(),this.mediaSoupEventsHandler.reset(),this.removeClientEventEmitterListeners(),this.logger.debug("release()",{socketId:this.mySocketId})}catch(e){throw this.logger.error("release()",{error:e}),new Error("Error release engine")}}))}removeClientEventEmitterListeners(){[q,W,V,z,$,G].forEach((e=>this.clientEventEmitter.removeAllListeners(e)))}watchSocketState(){this.network.socket.observer.on($a.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===$a.Error&&this.isJoined&&n?this.triggerRejoinEventIfAppropriate("unauthorized error"):r===$a.Reconnected&&this.triggerRejoinEventIfAppropriate("reconnected socket")}))}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 r(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(R)}))}join(e){return r(this,void 0,void 0,(function*(){try{this.logger.debug("join()",{params:e}),this.isChannelJoining=!0,this.watchClientEvents(),yield this.connectToSocketServerWithRetry(e),yield this.performJoin({appData:e.appData})}catch(e){throw this.logger.error("join()",{error:e}),e}finally{this.isChannelJoining=!1,this.rejoinRequested=!1}}))}loadPeers(e){return r(this,void 0,void 0,(function*(){const{peers:t}=yield this.network.socket.request(w,{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 Da(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())),t.reset(),this.peersRepository.delete(e))}updateAppData(e){return r(this,void 0,void 0,(function*(){const{myPeer:t}=this;if(!t)throw new Error("Need join to channel first");try{Ta(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 r(this,void 0,void 0,(function*(){const t=Ga.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 Ic&&(r.setLabel(u.Camera),r.setEncoderConfig(t.encoderConfig),r.setTransformParams(Ga.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 r(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(u.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 r(this,void 0,void 0,(function*(){const t=Ga.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()}),{once:!0}),r.setStopTrackOnPause(Boolean(null==e?void 0:e.stopTrackOnPause)),r instanceof Ic){r.setLabel(u.ScreenVideo),r.setEncoderConfig(t.encoderConfig);const e=Ga.getVideoTrackTransformParams(r.mediaStreamTrack);return r.setTransformParams(e),this.media.setTrack(r),void this.logger.debug("createScreenMediaTrack()",{trackParams:t,transformParams:e,track:r})}r.setLabel(u.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(B,{peer:e}))}connectToSocketServerWithRetry(e){return r(this,void 0,void 0,(function*(){return jc((()=>r(this,void 0,void 0,(function*(){return this.connectToSocketServer(e)}))),{maxRetries:15,minBackoffDelayMs:150,maxBackoffDelayMs:5e3,actionName:"connectToSocketServer",logger:new $e({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 r(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 r(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 i=s=>r(this,void 0,void 0,(function*(){const{error:r,state:n}=s,o=()=>this.network.socket.observer.removeListener($a.State,i),a=[$a.Disconnected,$a.Reconnecting].includes(n);return r?(o(),void t(r)):this.isChannelJoining&&a?(o(),void t(new Error(`Not expected socket state for new connection: ${n}`))):void(this.isChannelJoining&&[$a.Connected,$a.Reconnected].includes(n)&&(o(),e()))}));this.network.socket.observer.on($a.State,i)}))}performJoin(e){return r(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 r(this,void 0,void 0,(function*(){return jc((()=>r(this,void 0,void 0,(function*(){return this.sendJoinChannelRequest(e)}))),{maxRetries:3,minBackoffDelayMs:300,actionName:"sendJoinChannelRequest",logger:new $e({namespace:"RetryJoin",logLevel:this.logLevel})})}))}sendJoinChannelRequest(e){return r(this,void 0,void 0,(function*(){return this.network.socket.request(b,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(q,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)})))),this.clientEventEmitter.on(W,(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(V,(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(z,(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($,(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(G,(e=>r(this,void 0,void 0,(function*(){yield this.createSelfPeerTrack(e)}))))}createSelfPeerTrack(e){var t;return r(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 Pa({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 r(this,void 0,void 0,(function*(){if(!this.isJoined)throw new Fc("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",this.channelAudioObserverEventHandle),this.audioObserver=r,this.logger.debug("Successfully create audio observer",t)}catch(e){this.logger.error("Failed to create audio observer",t)}}))}triggerRejoinEventIfAppropriate(e){this.rejoinRequested&&!this.isChannelJoining||(this.logger.debug("Triggering channel rejoin required event",{reason:e}),this.rejoinRequested=!0,this.clientEventEmitter.emit(I))}}var Bc,Uc,qc;function Wc(){}function Vc(){Vc.init.call(this)}function zc(e){return void 0===e._maxListeners?Vc.defaultMaxListeners:e._maxListeners}function $c(e,t,r){if(t)e.call(r);else for(var i=e.length,s=Zc(e,i),n=0;n<i;++n)s[n].call(r)}function Gc(e,t,r,i){if(t)e.call(r,i);else for(var s=e.length,n=Zc(e,s),o=0;o<s;++o)n[o].call(r,i)}function Hc(e,t,r,i,s){if(t)e.call(r,i,s);else for(var n=e.length,o=Zc(e,n),a=0;a<n;++a)o[a].call(r,i,s)}function Jc(e,t,r,i,s,n){if(t)e.call(r,i,s,n);else for(var o=e.length,a=Zc(e,o),c=0;c<o;++c)a[c].call(r,i,s,n)}function Kc(e,t,r,i){if(t)e.apply(r,i);else for(var s=e.length,n=Zc(e,s),o=0;o<s;++o)n[o].apply(r,i)}function Qc(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 Wc,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=zc(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 Xc(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 Yc(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 Zc(e,t){for(var r=new Array(t);t--;)r[t]=e[t];return r}Wc.prototype=Object.create(null),Vc.EventEmitter=Vc,Vc.usingDomains=!1,Vc.prototype.domain=void 0,Vc.prototype._events=void 0,Vc.prototype._maxListeners=void 0,Vc.defaultMaxListeners=10,Vc.init=function(){this.domain=null,Vc.usingDomains&&(void 0).active,this._events&&this._events!==Object.getPrototypeOf(this)._events||(this._events=new Wc,this._eventsCount=0),this._maxListeners=this._maxListeners||void 0},Vc.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},Vc.prototype.getMaxListeners=function(){return zc(this)},Vc.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 p="function"==typeof r;switch(i=arguments.length){case 1:$c(r,p,this);break;case 2:Gc(r,p,this,arguments[1]);break;case 3:Hc(r,p,this,arguments[1],arguments[2]);break;case 4:Jc(r,p,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];Kc(r,p,this,s)}return!0},Vc.prototype.addListener=function(e,t){return Qc(this,e,t,!1)},Vc.prototype.on=Vc.prototype.addListener,Vc.prototype.prependListener=function(e,t){return Qc(this,e,t,!0)},Vc.prototype.once=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.on(e,Xc(this,e,t)),this},Vc.prototype.prependOnceListener=function(e,t){if("function"!=typeof t)throw new TypeError('"listener" argument must be a function');return this.prependListener(e,Xc(this,e,t)),this},Vc.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 Wc:(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 Wc,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},Vc.prototype.off=function(e,t){return this.removeListener(e,t)},Vc.prototype.removeAllListeners=function(e){var t,r;if(!(r=this._events))return this;if(!r.removeListener)return 0===arguments.length?(this._events=new Wc,this._eventsCount=0):r[e]&&(0==--this._eventsCount?this._events=new Wc: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 Wc,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},Vc.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):[]},Vc.listenerCount=function(e,t){return"function"==typeof e.listenerCount?e.listenerCount(t):Yc.call(e,t)},Vc.prototype.listenerCount=Yc,Vc.prototype.eventNames=function(){return this._eventsCount>0?Reflect.ownKeys(this._events):[]};class ed extends Vc{}!function(e){e.Issue="issue",e.NetworkScoresUpdated="network-scores-updated",e.StatsParsingFinished="stats-parsing-finished"}(Bc||(Bc={})),function(e){e.Network="network",e.CPU="cpu",e.Server="server",e.Stream="stream"}(Uc||(Uc={})),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"}(qc||(qc={}));class td extends Vc{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(td.STATS_REPORTS_PARSED,{timeTaken:r}),t.forEach((e=>{this.emit(td.STATS_REPORT_READY_EVENT,e)}))}}const rd=(()=>{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 id{#e={};calculate(e){const{connection:{id:t}}=e,{mos:r,stats:i}=this.calculateOutboundScore(e)||{},{mos:s,stats:n}=this.calculateInboundScore(e)||{};return this.#e[t]=e,rd({taskId:t,delayMs:35e3,callback:()=>delete this.#e[t]}),{outbound:r,inbound:s,statsSamples:{inboundStatsSample:n,outboundStatsSample: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,p=s-n,l=o.packetsLost-o.lastPacketsLost,u=p&&l?Math.round(100*l/(p+l)):0;return{mos:this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u}),stats:{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,p=s-n,l=o.packetsLost-o.lastPacketsLost,u=p&&l?Math.round(100*l/(p+l)):0;return{mos:this.calculateMOS({avgJitter:d,rtt:a,packetsLoss:u}),stats:{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 sd{#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)&&rd({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 nd extends sd{#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:Uc.Network,reason:qc.OutboundNetworkThroughput}),t):t}}class od extends sd{#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:Uc.CPU,reason:qc.DecoderCPUThrottling,ssrc:e.ssrc})})),r):r}}class ad extends sd{#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:Uc.Network,reason:qc.OutboundNetworkThroughput,ssrc:e.ssrc})})),r):r}}class cd extends sd{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:p}=a,l=d/r.length,u=p/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=l>=this.highJitterThreshold,y=c>=this.highRttThresholdMs,b=u>this.highJitterBufferDelayThresholdMs,w=y&&!v&&!g,_=g&&v,S=v&&b,R={rtt:c,packetLossPct:m,avgJitter:l,avgJitterBufferDelay:u};return(v||g)&&t.push({statsSample:R,type:Uc.Network,reason:qc.InboundNetworkQuality,iceCandidate:e.connection.local.id}),w&&t.push({statsSample:R,type:Uc.Server,reason:qc.ServerIssue,iceCandidate:e.connection.remote.id}),_&&t.push({statsSample:R,type:Uc.Network,reason:qc.InboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),S&&t.push({statsSample:R,type:Uc.Network,reason:qc.NetworkMediaSyncFailure,iceCandidate:e.connection.local.id}),t}}class dd extends sd{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:Uc.Network,reason:qc.NetworkMediaSyncFailure,ssrc:e.ssrc})})),r):r}}class pd extends sd{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,p=d/r.length,l=n-o,u=a.packetsLost-a.lastPacketsLost,h=l&&u?Math.round(100*u/(l+u)):0,f=h>5,m=p>=200,g=!f&&m||m||f,v={rtt:c,avgJitter:p,packetLossPct:h};return f&&m&&t.push({statsSample:v,type:Uc.Network,reason:qc.OutboundNetworkMediaLatency,iceCandidate:e.connection.local.id}),g&&t.push({statsSample:v,type:Uc.Network,reason:qc.OutboundNetworkQuality,iceCandidate:e.connection.local.id}),t}}class ld extends sd{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:Uc.CPU,reason:qc.EncoderCPUThrottling,ssrc:e.ssrc}),"bandwidth"===e.qualityLimitationReason&&r.push({statsSample:s,type:Uc.Network,reason:qc.OutboundNetworkThroughput,ssrc:e.ssrc}))})),r):r}}class ud extends sd{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:Uc.Stream,reason:qc.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 hd=e=>"closed"===e.iceConnectionState||"closed"===e.connectionState,fd=(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 md{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(!hd(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 gd{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(!hd(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()}),rd({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=fd(e,r,"bytesReceived"),e.packetRate=fd(e,r,"packetsReceived")})),e.audio.outbound.forEach((e=>{const r=t.audio.outbound.find((({id:t})=>t===e.id));e.bitrate=fd(e,r,"bytesSent"),e.packetRate=fd(e,r,"packetsSent")})),e.video.inbound.forEach((e=>{const r=t.video.inbound.find((({id:t})=>t===e.id));e.bitrate=fd(e,r,"bytesReceived"),e.packetRate=fd(e,r,"packetsReceived")})),e.video.outbound.forEach((e=>{const r=t.video.outbound.find((({id:t})=>t===e.id));e.bitrate=fd(e,r,"bytesSent"),e.packetRate=fd(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 vd{eventEmitter;#o=!1;detectors=[];networkScoresCalculator;statsReporter;compositeStatsParser;logger;constructor(e){this.logger=e.logger??{debug:()=>{},info:()=>{},warn:()=>{},error:()=>{}},this.eventEmitter=e.issueEmitter??new ed,e.onIssues&&this.eventEmitter.on(Bc.Issue,e.onIssues),e.onNetworkScoresUpdated&&this.eventEmitter.on(Bc.NetworkScoresUpdated,e.onNetworkScoresUpdated),this.detectors=e.detectors??[new ld,new od,new ad,new cd,new pd,new dd,new nd,new ud],this.networkScoresCalculator=e.networkScoresCalculator??new id,this.compositeStatsParser=e.compositeStatsParser??new md({statsParser:new gd({logger:this.logger})}),this.statsReporter=e.statsReporter??new td({compositeStatsParser:this.compositeStatsParser,getStatsInterval:e.getStatsInterval??5e3}),window.wid=this,this.wrapRTCPeerConnection(),this.statsReporter.on(td.STATS_REPORT_READY_EVENT,(t=>{this.detectIssues({data:t.stats,ignoreSSRCList:e.ignoreSSRCList}),this.calculateNetworkScores(t.stats)})),this.statsReporter.on(td.STATS_REPORTS_PARSED,(e=>{const t={timeTaken:e.timeTaken,ts:Date.now()};this.eventEmitter.emit(Bc.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(Bc.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(Bc.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}}Error;const yd=[{property:"name",enumerable:!1},{property:"message",enumerable:!1},{property:"stack",enumerable:!1},{property:"code",enumerable:!0}],bd=({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]=bd({from:e[r],seen:t.slice(),forceEnumerable:i}):s[r]=n);for(const{property:t,enumerable:r}of yd)"string"==typeof e[t]&&Object.defineProperty(s,t,{value:e[t],enumerable:!!i||r,configurable:!0,writable:!0});return s};var wd=e=>"object"==typeof e&&null!==e?bd({from:e,seen:[],forceEnumerable:!0}):"function"==typeof e?`[Function: ${e.name||"anonymous"}]`:e;class _d{constructor(e){var t;const{socketClient:r,loadBalancerApiClient:i,onLogMessage:s}=e;this.socket=r,this.loadBalancerClient=i,this.eventEmitter=null!==(t=e.eventEmitter)&&void 0!==t?t:new n,this.logger=new $e({namespace:"Network",logLevel:e.logLevel,onLogMessage:s})}removeEventListeners(){const{sendTransport:e,receiveTransport:t}=this;if(e){["connect","produce","connectionstatechange"].forEach((t=>e.removeAllListeners(t)))}if(t){["connect","produce","connectionstatechange"].forEach((e=>t.removeAllListeners(e)))}}stopRestartIceAtempts(){const{sendTransport:e,receiveTransport:t}=this;e&&clearInterval(e.appData.restartIceInterval),t&&clearInterval(t.appData.restartIceInterval)}reset(){this.stopRestartIceAtempts(),this.removeEventListeners()}closeRemoteProducer(e){return r(this,void 0,void 0,(function*(){yield this.socket.request(ne,{peerId:this.socket.id,producerId:e})}))}closeSendTransport(){var e;return r(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 r(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 r(this,void 0,void 0,(function*(){try{const{success:t}=yield this.socket.request(ke,{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 r(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"}),i=e.createSendTransport(t);this.logger.debug("createSendTransport()",{transport:i}),i.on("connect",(({dtlsParameters:e},s,n)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Ce,{transportId:i.id,dtlsParameters:e}),s(),this.logger.debug("sendTransport.connect()",{transportId:i.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(i)),1500)}catch(r){this.logger.error("sendTransport.on(`connect`)",{dtlsParameters:e,sendTransportOptions:t,error:r}),n(r)}})))),i.on("produce",((e,t,s)=>r(this,void 0,void 0,(function*(){try{const{id:r}=yield this.socket.request(Pe,{transportId:i.id,kind:e.kind,rtpParameters:e.rtpParameters,appData:e.appData});t({id:r}),this.logger.debug("sendTransport.produce()",{producerId:r,transportId:i.id,kind:e.kind})}catch(t){this.logger.error("sendTransport.produce()",{error:t,transportId:i.id,kind:e.kind}),s(t)}})))),i.on("connectionstatechange",(e=>{if(this.logger.info("sendTransport.state",{state:e}),["closed","connected"].includes(e))return i.appData.restartIceInterval&&(this.logger.debug("Stop sendTransport.restartIce() retries",{sendTransportId:i.id}),clearInterval(i.appData.restartIceInterval),i.appData.restartIceInterval=void 0),void("connected"===e&&setTimeout((()=>this.logTransportDetails(i)),1500));if(["disconnected","failed"].includes(e)){if(i.appData.restartIceInterval)return;"failed"===e&&(this.logger.debug("sendTransport.restartIce()",{sendTransportId:i.id}),this.restartIce(i)),i.appData.restartIceInterval=setInterval((()=>{this.restartIce(i),this.logger.debug("sendTransport.restartIce() attempt",{sendTransportId:i.id})}),5e3)}})),this.sendTransport=i}))}createRecvTransport(e){return r(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"}),i=e.createRecvTransport(t);this.logger.debug("createReceiveTransport()",{transport:i}),i.on("connect",(({dtlsParameters:e},t,s)=>r(this,void 0,void 0,(function*(){try{yield this.socket.request(Ce,{transportId:i.id,dtlsParameters:e}),t(),this.logger.debug("receiveTransport.connect()",{transportId:i.id,dtlsRole:e.role}),setTimeout((()=>this.logTransportDetails(i)),1500)}catch(e){this.logger.error("receiveTransport.on(`connect`)",{error:e}),s(e)}})))),i.on("connectionstatechange",(e=>{if(this.logger.info("receiveTransport.state",{state:e}),["closed","connected"].includes(e))i.appData.restartIceInterval&&(this.logger.debug("Stop receiveTransport.restartIce() retries",{recvTransportId:i.id}),clearInterval(i.appData.restartIceInterval),i.appData.restartIceInterval=void 0,"connected"===e&&setTimeout((()=>this.logTransportDetails(i)),1500));else if(["disconnected","failed"].includes(e)){if(i.appData.restartIceInterval)return;"failed"===e&&(this.logger.debug("receiveTransport.restartIce()",{recvTransportId:i.id}),this.restartIce(i)),i.appData.restartIceInterval=setInterval((()=>{this.restartIce(i),this.logger.debug("receiveTransport.restartIce() attempt",{recvTransportId:i.id})}),5e3)}})),this.receiveTransport=i}))}getIceParameters(e){return r(this,void 0,void 0,(function*(){const t=yield this.socket.request(Ee,{transportId:e.id}),{error:r}=t;if(r)throw new Error(r);const{iceParameters:i}=t;return this.logger.debug("getIceParameters()",{iceParameters:i}),i}))}restartIce(e){return r(this,void 0,void 0,(function*(){try{const t=yield this.getIceParameters(e);yield e.restartIce({iceParameters:t}),this.logger.info("restartIce completed",{iceParameters:t})}catch(e){this.logger.error("restartIce error",{error:e})}}))}createConsumer({producerId:e,rtpCapabilities:t,appId:i,channelId:s,producerPeerId:n}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)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(fe,{producerId:e,transportId:r.id,rtpCapabilities:t,appData:{peerId:this.socket.id,appId:i,channelId:s},producerPeerId:n}),a=yield r.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:i}){return r(this,void 0,void 0,(function*(){const r=this.receiveTransport;if(!r)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(me,{dataProducerId:e,transportId:r.id,appData:{peerId:this.socket.id,producerId:e,appId:t,channelId:i}}),n=yield r.consumeData(s);return this.logger.debug("Data consumer created",{consumer:n}),n}))}closeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ge,{peerId:this.socket.id,consumerId:e})}))}resumeRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ye,{consumerId:e})}))}pauseRemoteConsumer(e){return r(this,void 0,void 0,(function*(){return this.socket.request(ve,{consumerId:e})}))}updatePeerAppData({peerId:e,appData:t}){return r(this,void 0,void 0,(function*(){return this.socket.request(S,{peerId:e,appData:t})}))}getAudioObserverProducer(){return r(this,void 0,void 0,(function*(){return this.socket.request(T)}))}getTransportsStateInfo(){return r(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 r(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"})}))}logTransportDetails(e){var t,i;return r(this,void 0,void 0,(function*(){let r;try{r=yield e.getStats()}catch(t){return void this.logger.error("Failed to log detailed WebRTC transport stats",{error:wd(t),transportId:e.id,reason:"failed to parse getStats"})}try{const s=[...r],[,n]=null!==(t=s.find((([,e])=>"transport"===(null==e?void 0:e.type))))&&void 0!==t?t:[],[,o]=null!==(i=s.find((([,e])=>"candidate-pair"===e.type&&"succeeded"===e.state&&e.nominated)))&&void 0!==i?i:[],a=r.get(String((null==o?void 0:o.localCandidateId)||"-")),c=r.get(String((null==o?void 0:o.remoteCandidateId)||"-")),d={hasNominatedPair:!!o,transportId:e.id,iceRole:null==n?void 0:n.iceRole,iceState:null==n?void 0:n.iceState,dtlsRole:null==n?void 0:n.dtlsRole,dtlsState:null==n?void 0:n.dtlsState,local:{address:null==a?void 0:a.address,candidateType:null==a?void 0:a.candidateType,foundation:null==a?void 0:a.foundation,networkType:null==a?void 0:a.networkType,isRemote:null==a?void 0:a.isRemote,port:null==a?void 0:a.port,protocol:null==a?void 0:a.protocol,relatedAddress:null==a?void 0:a.relatedAddress,relatedPort:null==a?void 0:a.relatedPort,transportId:null==a?void 0:a.transportId,relayProtocol:null==a?void 0:a.relayProtocol,url:null==a?void 0:a.url},remote:{address:null==c?void 0:c.address,candidateType:null==c?void 0:c.candidateType,foundation:null==c?void 0:c.foundation,isRemote:null==c?void 0:c.isRemote,port:null==c?void 0:c.port,protocol:null==c?void 0:c.protocol,transportId:null==c?void 0:c.transportId}};(null==o?void 0:o.totalRoundTripTime)&&(null==o?void 0:o.responsesReceived)&&(d.pairRoundTripTime=Math.round(o.totalRoundTripTime/o.responsesReceived*1e3)),this.logger.info("Detailed WebRTC transport stats",d)}catch(t){this.logger.error("Failed to log detailed WebRTC transport stats",{error:wd(t),transportId:e.id,reason:"-"})}}))}}const Sd=e=>![h.NotFoundError,h.NotAllowedError,h.DeviceIsBusy].includes(e);class Rd{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 $e({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 r(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(h.NotAllowedError);if("NotReadableError"===t.name)throw new Error(h.DeviceIsBusy);if("NotFoundError"===t.name)throw new Error(h.NotFoundError);throw new Error(h.RequestDevicesUnknownError)}}))}refreshAvailableMediaDevicesList(){return r(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 r(this,void 0,void 0,(function*(){let e=[];if(this.isDevicesDetected)return;try{e=yield this.requestMediaDevicesAccess()}catch(e){if(Sd(e.message))throw e;e.message!==h.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(h.NoDevices)}))}deviceChangeHandler(){return r(this,void 0,void 0,(function*(){this.isDevicesDetected&&(yield this.refreshAvailableMediaDevicesList(),this.clientEventEmitter.safeEmit(A,{audio:this.availableAudioDevices,video:this.availableVideoDevices}))}))}listenDevices(){navigator.mediaDevices.addEventListener("devicechange",this.deviceChangeHandler)}assertHasAccessToMediaDevices(e={video:!0,audio:!0}){return r(this,void 0,void 0,(function*(){try{(yield this.requestMediaDevicesAccess(e)).forEach((e=>e.stop()))}catch(e){if(Sd(e.message))throw e}}))}}class kd{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new $e({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(y,(e=>{this.engine.clientEventEmitter.safeEmit(E,e),this.logger.debug("New channel event",{event:e})})),e.on(b,(e=>{const t=this.engine.setPeer(e);this.engine.clientEventEmitter.safeEmit(D,t),this.logger.debug("Peer joined to the channel",{peer:t})})),e.on(_,(e=>{this.engine.removePeer(e),this.engine.clientEventEmitter.safeEmit(M,e),this.logger.debug("Peer left the channel",{peerId:e})})),e.on(C,(e=>{this.engine.clientEventEmitter.safeEmit(x,e),this.logger.info("Notify the channel that activity confirmation is required",e)})),e.on(P,(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(k,(e=>{this.engine.clientEventEmitter.safeEmit(L,e),this.logger.info("Notify the channel that the activity has been acquired.",e)})),e.on(S,(({peerId:e,appData:t})=>{const r=this.engine.peers.find((t=>t.id===e));r&&r.observer.emit(S,t)}))}removeEventListeners(){const{connection:e}=this.engine.network.socket;if(!e)return;[y,b,_,C,P,k,S].forEach((t=>e.removeAllListeners(t)))}reset(){this.removeEventListeners()}}class Cd{constructor(e){this.queue=new Ca;const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new $e({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(ne,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(ne,e)})),e.on(se,(e=>{const t=this.engine.peers.find((t=>t.id===e.peerId));t&&t.observer.safeEmit(se,e)})),e.on(ge,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&r.observer.safeEmit(ge,e)})),e.on(ye,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(ye,e)})),e.on(ve,((e,t)=>{const r=this.engine.peers.find((e=>e.id===t));r&&!r.isMe&&r.observer.safeEmit(ve,e)})),e.on(we,(({peerId:e,spatialLayer:t,temporalLayer:r,consumerId:i})=>{const s=this.engine.peers.find((t=>t.id===e));s&&!s.isMe&&s.observer.safeEmit(we,{consumerId:i,spatialLayer:t,temporalLayer:r})})),e.on(be,(e=>{const{consumerPeerId:t}=e,r=this.engine.peers.find((e=>e.id===t));if(!r||r.isMe)return;r.observer.safeEmit(be,e);const i=this.engine.peers.find((e=>e.isMe));i&&i.observer.safeEmit(be,e)})),e.on(le,(e=>{const t=this.engine.peers.find((e=>e.isMe));t&&t.observer.safeEmit(le,e)})),e.on(he,(({producerId:e,spatialLayer:t})=>r(this,void 0,void 0,(function*(){yield this.queue.push((()=>r(this,void 0,void 0,(function*(){yield this.handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t})}))),he)})))),e.on(ue,(({peerId:e,producerId:t,spatialLayer:i})=>r(this,void 0,void 0,(function*(){const r=this.engine.peers.find((t=>t.id===e));r&&!r.isMe&&r.observer.safeEmit(ue,{peerId:e,producerId:t,spatialLayer:i})})))),e.on(Te,(({reason:e,transportId:t,direction:i,timeout:s})=>r(this,void 0,void 0,(function*(){const r=[this.engine.network.receiveTransport,this.engine.network.sendTransport].find((e=>(null==e?void 0:e.id)===t));r&&"connected"!==r.connectionState&&(this.logger.warn(Te,{reason:e,transportId:t,direction:i,timeout:s}),this.engine.clientEventEmitter.emit(j,{direction:i,reason:e}))})))),e.on(ce,(({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(K,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(de,(({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(Q,{producerId:i.id,kind:i.kind,label:i.label,paused:i.paused}))})),e.on(pe,(({label:e})=>r(this,void 0,void 0,(function*(){const t=this.engine.media.getTrack(e);t&&(t.stopMediaStreamTrack(),this.engine.clientEventEmitter.safeEmit($,t),this.engine.clientEventEmitter.emit(N,{label:e}),yield this.engine.media.deleteTrack(t))}))))}removeEventListeners(){const{connection:e}=this.engine.network.socket;if(!e)return;[ne,se,ge,ye,ve,we,be,le,he,ue,Te,ce,de,pe].forEach((t=>e.removeAllListeners(t)))}reset(){this.removeEventListeners()}handleProducerSetMaxSpatialLayer({producerId:e,spatialLayer:t}){return r(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 Ic))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(ue,{producerId:e,maxSpatialLayer:t})):this.logger.debug("producerRequestMaxSpatialLayer()",{message:"Skip set max spatial layer",requestedSpatialLayer:t,currentMaxSpatialLayer:i})}))}}const Pd=Object.create(null);Pd.open="0",Pd.close="1",Pd.ping="2",Pd.pong="3",Pd.message="4",Pd.upgrade="5",Pd.noop="6";const Td=Object.create(null);Object.keys(Pd).forEach((e=>{Td[Pd[e]]=e}));const Ed={type:"error",data:"parser error"},Dd="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),Md="function"==typeof ArrayBuffer,xd=e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e&&e.buffer instanceof ArrayBuffer,Ld=({type:e,data:t},r,i)=>Dd&&t instanceof Blob?r?i(t):Od(t,i):Md&&(t instanceof ArrayBuffer||xd(t))?r?i(t):Od(new Blob([t]),i):i(Pd[e]+(t||"")),Od=(e,t)=>{const r=new FileReader;return r.onload=function(){const e=r.result.split(",")[1];t("b"+(e||""))},r.readAsDataURL(e)};function Id(e){return e instanceof Uint8Array?e:e instanceof ArrayBuffer?new Uint8Array(e):new Uint8Array(e.buffer,e.byteOffset,e.byteLength)}let Ad;const jd="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",Fd="undefined"==typeof Uint8Array?[]:new Uint8Array(256);for(let e=0;e<jd.length;e++)Fd[jd.charCodeAt(e)]=e;const Nd="function"==typeof ArrayBuffer,Bd=(e,t)=>{if("string"!=typeof e)return{type:"message",data:qd(e,t)};const r=e.charAt(0);if("b"===r)return{type:"message",data:Ud(e.substring(1),t)};return Td[r]?e.length>1?{type:Td[r],data:e.substring(1)}:{type:Td[r]}:Ed},Ud=(e,t)=>{if(Nd){const r=(e=>{let t,r,i,s,n,o=.75*e.length,a=e.length,c=0;"="===e[e.length-1]&&(o--,"="===e[e.length-2]&&o--);const d=new ArrayBuffer(o),p=new Uint8Array(d);for(t=0;t<a;t+=4)r=Fd[e.charCodeAt(t)],i=Fd[e.charCodeAt(t+1)],s=Fd[e.charCodeAt(t+2)],n=Fd[e.charCodeAt(t+3)],p[c++]=r<<2|i>>4,p[c++]=(15&i)<<4|s>>2,p[c++]=(3&s)<<6|63&n;return d})(e);return qd(r,t)}return{base64:!0,data:e}},qd=(e,t)=>"blob"===t?e instanceof Blob?e:new Blob([e]):e instanceof ArrayBuffer?e:e.buffer,Wd=String.fromCharCode(30);function Vd(){return new TransformStream({transform(e,t){!function(e,t){Dd&&e.data instanceof Blob?e.data.arrayBuffer().then(Id).then(t):Md&&(e.data instanceof ArrayBuffer||xd(e.data))?t(Id(e.data)):Ld(e,!1,(e=>{Ad||(Ad=new TextEncoder),t(Ad.encode(e))}))}(e,(r=>{const i=r.length;let s;if(i<126)s=new Uint8Array(1),new DataView(s.buffer).setUint8(0,i);else if(i<65536){s=new Uint8Array(3);const e=new DataView(s.buffer);e.setUint8(0,126),e.setUint16(1,i)}else{s=new Uint8Array(9);const e=new DataView(s.buffer);e.setUint8(0,127),e.setBigUint64(1,BigInt(i))}e.data&&"string"!=typeof e.data&&(s[0]|=128),t.enqueue(s),t.enqueue(r)}))}})}let zd;function $d(e){return e.reduce(((e,t)=>e+t.length),0)}function Gd(e,t){if(e[0].length===t)return e.shift();const r=new Uint8Array(t);let i=0;for(let s=0;s<t;s++)r[s]=e[0][i++],i===e[0].length&&(e.shift(),i=0);return e.length&&i<e[0].length&&(e[0]=e[0].slice(i)),r}function Hd(e){if(e)return function(e){for(var t in Hd.prototype)e[t]=Hd.prototype[t];return e}(e)}Hd.prototype.on=Hd.prototype.addEventListener=function(e,t){return this._callbacks=this._callbacks||{},(this._callbacks["$"+e]=this._callbacks["$"+e]||[]).push(t),this},Hd.prototype.once=function(e,t){function r(){this.off(e,r),t.apply(this,arguments)}return r.fn=t,this.on(e,r),this},Hd.prototype.off=Hd.prototype.removeListener=Hd.prototype.removeAllListeners=Hd.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},Hd.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},Hd.prototype.emitReserved=Hd.prototype.emit,Hd.prototype.listeners=function(e){return this._callbacks=this._callbacks||{},this._callbacks["$"+e]||[]},Hd.prototype.hasListeners=function(e){return!!this.listeners(e).length};const Jd="undefined"!=typeof self?self:"undefined"!=typeof window?window:Function("return this")();function Kd(e,...t){return t.reduce(((t,r)=>(e.hasOwnProperty(r)&&(t[r]=e[r]),t)),{})}const Qd=Jd.setTimeout,Xd=Jd.clearTimeout;function Yd(e,t){t.useNativeTimers?(e.setTimeoutFn=Qd.bind(Jd),e.clearTimeoutFn=Xd.bind(Jd)):(e.setTimeoutFn=Jd.setTimeout.bind(Jd),e.clearTimeoutFn=Jd.clearTimeout.bind(Jd))}class Zd extends Error{constructor(e,t,r){super(e),this.description=t,this.context=r,this.type="TransportError"}}class ep extends Hd{constructor(e){super(),this.writable=!1,Yd(this,e),this.opts=e,this.query=e.query,this.socket=e.socket}onError(e,t,r){return super.emitReserved("error",new Zd(e,t,r)),this}open(){return this.readyState="opening",this.doOpen(),this}close(){return"opening"!==this.readyState&&"open"!==this.readyState||(this.doClose(),this.onClose()),this}send(e){"open"===this.readyState&&this.write(e)}onOpen(){this.readyState="open",this.writable=!0,super.emitReserved("open")}onData(e){const t=Bd(e,this.socket.binaryType);this.onPacket(t)}onPacket(e){super.emitReserved("packet",e)}onClose(e){this.readyState="closed",super.emitReserved("close",e)}pause(e){}createUri(e,t={}){return e+"://"+this._hostname()+this._port()+this.opts.path+this._query(t)}_hostname(){const e=this.opts.hostname;return-1===e.indexOf(":")?e:"["+e+"]"}_port(){return this.opts.port&&(this.opts.secure&&Number(443!==this.opts.port)||!this.opts.secure&&80!==Number(this.opts.port))?":"+this.opts.port:""}_query(e){const t=function(e){let t="";for(let r in e)e.hasOwnProperty(r)&&(t.length&&(t+="&"),t+=encodeURIComponent(r)+"="+encodeURIComponent(e[r]));return t}(e);return t.length?"?"+t:""}}const tp="0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_".split(""),rp={};let ip,sp=0,np=0;function op(e){let t="";do{t=tp[e%64]+t,e=Math.floor(e/64)}while(e>0);return t}function ap(){const e=op(+new Date);return e!==ip?(sp=0,ip=e):e+"."+op(sp++)}for(;np<64;np++)rp[tp[np]]=np;let cp=!1;try{cp="undefined"!=typeof XMLHttpRequest&&"withCredentials"in new XMLHttpRequest}catch(e){}const dp=cp;function pp(e){const t=e.xdomain;try{if("undefined"!=typeof XMLHttpRequest&&(!t||dp))return new XMLHttpRequest}catch(e){}if(!t)try{return new(Jd[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(e){}}function lp(){}const up=null!=new pp({xdomain:!1}).responseType;class hp extends Hd{constructor(e,t){super(),Yd(this,t),this.opts=t,this.method=t.method||"GET",this.uri=e,this.data=void 0!==t.data?t.data:null,this.create()}create(){var e;const t=Kd(this.opts,"agent","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized","autoUnref");t.xdomain=!!this.opts.xd;const r=this.xhr=new pp(t);try{r.open(this.method,this.uri,!0);try{if(this.opts.extraHeaders){r.setDisableHeaderCheck&&r.setDisableHeaderCheck(!0);for(let e in this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(e)&&r.setRequestHeader(e,this.opts.extraHeaders[e])}}catch(e){}if("POST"===this.method)try{r.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(e){}try{r.setRequestHeader("Accept","*/*")}catch(e){}null===(e=this.opts.cookieJar)||void 0===e||e.addCookies(r),"withCredentials"in r&&(r.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(r.timeout=this.opts.requestTimeout),r.onreadystatechange=()=>{var e;3===r.readyState&&(null===(e=this.opts.cookieJar)||void 0===e||e.parseCookies(r)),4===r.readyState&&(200===r.status||1223===r.status?this.onLoad():this.setTimeoutFn((()=>{this.onError("number"==typeof r.status?r.status:0)}),0))},r.send(this.data)}catch(e){return void this.setTimeoutFn((()=>{this.onError(e)}),0)}"undefined"!=typeof document&&(this.index=hp.requestsCount++,hp.requests[this.index]=this)}onError(e){this.emitReserved("error",e,this.xhr),this.cleanup(!0)}cleanup(e){if(void 0!==this.xhr&&null!==this.xhr){if(this.xhr.onreadystatechange=lp,e)try{this.xhr.abort()}catch(e){}"undefined"!=typeof document&&delete hp.requests[this.index],this.xhr=null}}onLoad(){const e=this.xhr.responseText;null!==e&&(this.emitReserved("data",e),this.emitReserved("success"),this.cleanup())}abort(){this.cleanup()}}if(hp.requestsCount=0,hp.requests={},"undefined"!=typeof document)if("function"==typeof attachEvent)attachEvent("onunload",fp);else if("function"==typeof addEventListener){addEventListener("onpagehide"in Jd?"pagehide":"unload",fp,!1)}function fp(){for(let e in hp.requests)hp.requests.hasOwnProperty(e)&&hp.requests[e].abort()}const mp="function"==typeof Promise&&"function"==typeof Promise.resolve?e=>Promise.resolve().then(e):(e,t)=>t(e,0),gp=Jd.WebSocket||Jd.MozWebSocket,vp="undefined"!=typeof navigator&&"string"==typeof navigator.product&&"reactnative"===navigator.product.toLowerCase();const yp={websocket:class extends ep{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=vp?{}:Kd(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=vp?new gp(e,t,r):t?new gp(e,t):new gp(e)}catch(e){return this.emitReserved("error",e)}this.ws.binaryType=this.socket.binaryType,this.addEventListeners()}addEventListeners(){this.ws.onopen=()=>{this.opts.autoUnref&&this.ws._socket.unref(),this.onOpen()},this.ws.onclose=e=>this.onClose({description:"websocket connection closed",context:e}),this.ws.onmessage=e=>this.onData(e.data),this.ws.onerror=e=>this.onError("websocket error",e)}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;Ld(r,this.supportsBinary,(e=>{try{this.ws.send(e)}catch(e){}i&&mp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){void 0!==this.ws&&(this.ws.close(),this.ws=null)}uri(){const e=this.opts.secure?"wss":"ws",t=this.query||{};return this.opts.timestampRequests&&(t[this.opts.timestampParam]=ap()),this.supportsBinary||(t.b64=1),this.createUri(e,t)}check(){return!!gp}},webtransport:class extends ep{get name(){return"webtransport"}doOpen(){"function"==typeof WebTransport&&(this.transport=new WebTransport(this.createUri("https"),this.opts.transportOptions[this.name]),this.transport.closed.then((()=>{this.onClose()})).catch((e=>{this.onError("webtransport error",e)})),this.transport.ready.then((()=>{this.transport.createBidirectionalStream().then((e=>{const t=function(e,t){zd||(zd=new TextDecoder);const r=[];let i=0,s=-1,n=!1;return new TransformStream({transform(o,a){for(r.push(o);;){if(0===i){if($d(r)<1)break;const e=Gd(r,1);n=128==(128&e[0]),s=127&e[0],i=s<126?3:126===s?1:2}else if(1===i){if($d(r)<2)break;const e=Gd(r,2);s=new DataView(e.buffer,e.byteOffset,e.length).getUint16(0),i=3}else if(2===i){if($d(r)<8)break;const e=Gd(r,8),t=new DataView(e.buffer,e.byteOffset,e.length),n=t.getUint32(0);if(n>Math.pow(2,21)-1){a.enqueue(Ed);break}s=n*Math.pow(2,32)+t.getUint32(4),i=3}else{if($d(r)<s)break;const e=Gd(r,s);a.enqueue(Bd(n?e:zd.decode(e),t)),i=0}if(0===s||s>e){a.enqueue(Ed);break}}}})}(Number.MAX_SAFE_INTEGER,this.socket.binaryType),r=e.readable.pipeThrough(t).getReader(),i=Vd();i.readable.pipeTo(e.writable),this.writer=i.writable.getWriter();const s=()=>{r.read().then((({done:e,value:t})=>{e||(this.onPacket(t),s())})).catch((e=>{}))};s();const n={type:"open"};this.query.sid&&(n.data=`{"sid":"${this.query.sid}"}`),this.writer.write(n).then((()=>this.onOpen()))}))})))}write(e){this.writable=!1;for(let t=0;t<e.length;t++){const r=e[t],i=t===e.length-1;this.writer.write(r).then((()=>{i&&mp((()=>{this.writable=!0,this.emitReserved("drain")}),this.setTimeoutFn)}))}}doClose(){var e;null===(e=this.transport)||void 0===e||e.close()}},polling:class extends ep{constructor(e){if(super(e),this.polling=!1,"undefined"!=typeof location){const t="https:"===location.protocol;let r=location.port;r||(r=t?"443":"80"),this.xd="undefined"!=typeof location&&e.hostname!==location.hostname||r!==e.port}const t=e&&e.forceBase64;this.supportsBinary=up&&!t,this.opts.withCredentials&&(this.cookieJar=void 0)}get name(){return"polling"}doOpen(){this.poll()}pause(e){this.readyState="pausing";const t=()=>{this.readyState="paused",e()};if(this.polling||!this.writable){let e=0;this.polling&&(e++,this.once("pollComplete",(function(){--e||t()}))),this.writable||(e++,this.once("drain",(function(){--e||t()})))}else t()}poll(){this.polling=!0,this.doPoll(),this.emitReserved("poll")}onData(e){((e,t)=>{const r=e.split(Wd),i=[];for(let e=0;e<r.length;e++){const s=Bd(r[e],t);if(i.push(s),"error"===s.type)break}return i})(e,this.socket.binaryType).forEach((e=>{if("opening"===this.readyState&&"open"===e.type&&this.onOpen(),"close"===e.type)return this.onClose({description:"transport closed by the server"}),!1;this.onPacket(e)})),"closed"!==this.readyState&&(this.polling=!1,this.emitReserved("pollComplete"),"open"===this.readyState&&this.poll())}doClose(){const e=()=>{this.write([{type:"close"}])};"open"===this.readyState?e():this.once("open",e)}write(e){this.writable=!1,((e,t)=>{const r=e.length,i=new Array(r);let s=0;e.forEach(((e,n)=>{Ld(e,!1,(e=>{i[n]=e,++s===r&&t(i.join(Wd))}))}))})(e,(e=>{this.doWrite(e,(()=>{this.writable=!0,this.emitReserved("drain")}))}))}uri(){const e=this.opts.secure?"https":"http",t=this.query||{};return!1!==this.opts.timestampRequests&&(t[this.opts.timestampParam]=ap()),this.supportsBinary||t.sid||(t.b64=1),this.createUri(e,t)}request(e={}){return Object.assign(e,{xd:this.xd,cookieJar:this.cookieJar},this.opts),new hp(this.uri(),e)}doWrite(e,t){const r=this.request({method:"POST",data:e});r.on("success",t),r.on("error",((e,t)=>{this.onError("xhr post error",e,t)}))}doPoll(){const e=this.request();e.on("data",this.onData.bind(this)),e.on("error",((e,t)=>{this.onError("xhr poll error",e,t)})),this.pollXhr=e}}},bp=/^(?:(?![^:@\/?#]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@\/?#]*)(?::([^:@\/?#]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/,wp=["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"];function _p(e){const t=e,r=e.indexOf("["),i=e.indexOf("]");-1!=r&&-1!=i&&(e=e.substring(0,r)+e.substring(r,i).replace(/:/g,";")+e.substring(i,e.length));let s=bp.exec(e||""),n={},o=14;for(;o--;)n[wp[o]]=s[o]||"";return-1!=r&&-1!=i&&(n.source=t,n.host=n.host.substring(1,n.host.length-1).replace(/;/g,":"),n.authority=n.authority.replace("[","").replace("]","").replace(/;/g,":"),n.ipv6uri=!0),n.pathNames=function(e,t){const r=/\/{2,9}/g,i=t.replace(r,"/").split("/");"/"!=t.slice(0,1)&&0!==t.length||i.splice(0,1);"/"==t.slice(-1)&&i.splice(i.length-1,1);return i}(0,n.path),n.queryKey=function(e,t){const r={};return t.replace(/(?:^|&)([^&=]*)=?([^&]*)/g,(function(e,t,i){t&&(r[t]=i)})),r}(0,n.query),n}class Sp extends Hd{constructor(e,t={}){super(),this.binaryType="arraybuffer",this.writeBuffer=[],e&&"object"==typeof e&&(t=e,e=null),e?(e=_p(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=_p(t.host).host),Yd(this,t),this.secure=null!=t.secure?t.secure:"undefined"!=typeof location&&"https:"===location.protocol,t.hostname&&!t.port&&(t.port=this.secure?"443":"80"),this.hostname=t.hostname||("undefined"!=typeof location?location.hostname:"localhost"),this.port=t.port||("undefined"!=typeof location&&location.port?location.port:this.secure?"443":"80"),this.transports=t.transports||["polling","websocket","webtransport"],this.writeBuffer=[],this.prevBufferLen=0,this.opts=Object.assign({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,timestampParam:"t",rememberUpgrade:!1,addTrailingSlash:!0,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{},closeOnBeforeunload:!1},t),this.opts.path=this.opts.path.replace(/\/$/,"")+(this.opts.addTrailingSlash?"/":""),"string"==typeof this.opts.query&&(this.opts.query=function(e){let t={},r=e.split("&");for(let e=0,i=r.length;e<i;e++){let i=r[e].split("=");t[decodeURIComponent(i[0])]=decodeURIComponent(i[1])}return t}(this.opts.query)),this.id=null,this.upgrades=null,this.pingInterval=null,this.pingTimeout=null,this.pingTimeoutTimer=null,"function"==typeof addEventListener&&(this.opts.closeOnBeforeunload&&(this.beforeunloadEventListener=()=>{this.transport&&(this.transport.removeAllListeners(),this.transport.close())},addEventListener("beforeunload",this.beforeunloadEventListener,!1)),"localhost"!==this.hostname&&(this.offlineEventListener=()=>{this.onClose("transport close",{description:"network connection lost"})},addEventListener("offline",this.offlineEventListener,!1))),this.open()}createTransport(e){const t=Object.assign({},this.opts.query);t.EIO=4,t.transport=e,this.id&&(t.sid=this.id);const r=Object.assign({},this.opts,{query:t,socket:this,hostname:this.hostname,secure:this.secure,port:this.port},this.opts.transportOptions[e]);return new yp[e](r)}open(){let e;if(this.opts.rememberUpgrade&&Sp.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",(e=>this.onClose("transport close",e)))}probe(e){let t=this.createTransport(e),r=!1;Sp.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;Sp.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),-1!==this.upgrades.indexOf("webtransport")&&"webtransport"!==e?this.setTimeoutFn((()=>{r||t.open()}),200):t.open()}onOpen(){if(this.readyState="open",Sp.priorWebsocketSuccess="websocket"===this.transport.name,this.emitReserved("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade){let e=0;const t=this.upgrades.length;for(;e<t;e++)this.probe(this.upgrades[e])}}onPacket(e){if("opening"===this.readyState||"open"===this.readyState||"closing"===this.readyState)switch(this.emitReserved("packet",e),this.emitReserved("heartbeat"),this.resetPingTimeout(),e.type){case"open":this.onHandshake(JSON.parse(e.data));break;case"ping":this.sendPacket("pong"),this.emitReserved("ping"),this.emitReserved("pong");break;case"error":const t=new Error("server error");t.code=e.data,this.onError(t);break;case"message":this.emitReserved("data",e.data),this.emitReserved("message",e.data)}}onHandshake(e){this.emitReserved("handshake",e),this.id=e.sid,this.transport.query.sid=e.sid,this.upgrades=this.filterUpgrades(e.upgrades),this.pingInterval=e.pingInterval,this.pingTimeout=e.pingTimeout,this.maxPayload=e.maxPayload,this.onOpen(),"closed"!==this.readyState&&this.resetPingTimeout()}resetPingTimeout(){this.clearTimeoutFn(this.pingTimeoutTimer),this.pingTimeoutTimer=this.setTimeoutFn((()=>{this.onClose("ping timeout")}),this.pingInterval+this.pingTimeout),this.opts.autoUnref&&this.pingTimeoutTimer.unref()}onDrain(){this.writeBuffer.splice(0,this.prevBufferLen),this.prevBufferLen=0,0===this.writeBuffer.length?this.emitReserved("drain"):this.flush()}flush(){if("closed"!==this.readyState&&this.transport.writable&&!this.upgrading&&this.writeBuffer.length){const e=this.getWritablePackets();this.transport.send(e),this.prevBufferLen=e.length,this.emitReserved("flush")}}getWritablePackets(){if(!(this.maxPayload&&"polling"===this.transport.name&&this.writeBuffer.length>1))return this.writeBuffer;let e=1;for(let r=0;r<this.writeBuffer.length;r++){const i=this.writeBuffer[r].data;if(i&&(e+="string"==typeof(t=i)?function(e){let t=0,r=0;for(let i=0,s=e.length;i<s;i++)t=e.charCodeAt(i),t<128?r+=1:t<2048?r+=2:t<55296||t>=57344?r+=3:(i++,r+=4);return r}(t):Math.ceil(1.33*(t.byteLength||t.size))),r>0&&e>this.maxPayload)return this.writeBuffer.slice(0,r);e+=2}var t;return this.writeBuffer}write(e,t,r){return this.sendPacket("message",e,t,r),this}send(e,t,r){return this.sendPacket("message",e,t,r),this}sendPacket(e,t,r,i){if("function"==typeof t&&(i=t,t=void 0),"function"==typeof r&&(i=r,r=null),"closing"===this.readyState||"closed"===this.readyState)return;(r=r||{}).compress=!1!==r.compress;const s={type:e,data:t,options:r};this.emitReserved("packetCreate",s),this.writeBuffer.push(s),i&&this.once("flush",i),this.flush()}close(){const e=()=>{this.onClose("forced close"),this.transport.close()},t=()=>{this.off("upgrade",t),this.off("upgradeError",t),e()},r=()=>{this.once("upgrade",t),this.once("upgradeError",t)};return"opening"!==this.readyState&&"open"!==this.readyState||(this.readyState="closing",this.writeBuffer.length?this.once("drain",(()=>{this.upgrading?r():e()})):this.upgrading?r():e()),this}onError(e){Sp.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("beforeunload",this.beforeunloadEventListener,!1),removeEventListener("offline",this.offlineEventListener,!1)),this.readyState="closed",this.id=null,this.emitReserved("close",e,t),this.writeBuffer=[],this.prevBufferLen=0)}filterUpgrades(e){const t=[];let r=0;const i=e.length;for(;r<i;r++)~this.transports.indexOf(e[r])&&t.push(e[r]);return t}}Sp.protocol=4;const Rp="function"==typeof ArrayBuffer,kp=Object.prototype.toString,Cp="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===kp.call(Blob),Pp="function"==typeof File||"undefined"!=typeof File&&"[object FileConstructor]"===kp.call(File);function Tp(e){return Rp&&(e instanceof ArrayBuffer||(e=>"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(e):e.buffer instanceof ArrayBuffer)(e))||Cp&&e instanceof Blob||Pp&&e instanceof File}function Ep(e,t){if(!e||"object"!=typeof e)return!1;if(Array.isArray(e)){for(let t=0,r=e.length;t<r;t++)if(Ep(e[t]))return!0;return!1}if(Tp(e))return!0;if(e.toJSON&&"function"==typeof e.toJSON&&1===arguments.length)return Ep(e.toJSON(),!0);for(const t in e)if(Object.prototype.hasOwnProperty.call(e,t)&&Ep(e[t]))return!0;return!1}function Dp(e){const t=[],r=e.data,i=e;return i.data=Mp(r,t),i.attachments=t.length,{packet:i,buffers:t}}function Mp(e,t){if(!e)return e;if(Tp(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]=Mp(e[i],t);return r}if("object"==typeof e&&!(e instanceof Date)){const r={};for(const i in e)Object.prototype.hasOwnProperty.call(e,i)&&(r[i]=Mp(e[i],t));return r}return e}function xp(e,t){return e.data=Lp(e.data,t),delete e.attachments,e}function Lp(e,t){if(!e)return e;if(e&&!0===e._placeholder){if("number"==typeof e.num&&e.num>=0&&e.num<t.length)return t[e.num];throw new Error("illegal attachments")}if(Array.isArray(e))for(let r=0;r<e.length;r++)e[r]=Lp(e[r],t);else if("object"==typeof e)for(const r in e)Object.prototype.hasOwnProperty.call(e,r)&&(e[r]=Lp(e[r],t));return e}const Op=["connect","connect_error","disconnect","disconnecting","newListener","removeListener"];var Ip;!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"}(Ip||(Ip={}));function Ap(e){return"[object Object]"===Object.prototype.toString.call(e)}class jp extends Hd{constructor(e){super(),this.reviver=e}add(e){let t;if("string"==typeof e){if(this.reconstructor)throw new Error("got plaintext data when reconstructing a packet");t=this.decodeString(e);const r=t.type===Ip.BINARY_EVENT;r||t.type===Ip.BINARY_ACK?(t.type=r?Ip.EVENT:Ip.ACK,this.reconstructor=new Fp(t),0===t.attachments&&super.emitReserved("decoded",t)):super.emitReserved("decoded",t)}else{if(!Tp(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===Ip[r.type])throw new Error("unknown packet type "+r.type);if(r.type===Ip.BINARY_EVENT||r.type===Ip.BINARY_ACK){const i=t+1;for(;"-"!==e.charAt(++t)&&t!=e.length;);const s=e.substring(i,t);if(s!=Number(s)||"-"!==e.charAt(t))throw new Error("Illegal attachments");r.attachments=Number(s)}if("/"===e.charAt(t+1)){const i=t+1;for(;++t;){if(","===e.charAt(t))break;if(t===e.length)break}r.nsp=e.substring(i,t)}else r.nsp="/";const i=e.charAt(t+1);if(""!==i&&Number(i)==i){const i=t+1;for(;++t;){const r=e.charAt(t);if(null==r||Number(r)!=r){--t;break}if(t===e.length)break}r.id=Number(e.substring(i,t+1))}if(e.charAt(++t)){const i=this.tryParse(e.substr(t));if(!jp.isPayloadValid(r.type,i))throw new Error("invalid payload");r.data=i}return r}tryParse(e){try{return JSON.parse(e,this.reviver)}catch(e){return!1}}static isPayloadValid(e,t){switch(e){case Ip.CONNECT:return Ap(t);case Ip.DISCONNECT:return void 0===t;case Ip.CONNECT_ERROR:return"string"==typeof t||Ap(t);case Ip.EVENT:case Ip.BINARY_EVENT:return Array.isArray(t)&&("number"==typeof t[0]||"string"==typeof t[0]&&-1===Op.indexOf(t[0]));case Ip.ACK:case Ip.BINARY_ACK:return Array.isArray(t)}}destroy(){this.reconstructor&&(this.reconstructor.finishedReconstruction(),this.reconstructor=null)}}class Fp{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=xp(this.reconPack,this.buffers);return this.finishedReconstruction(),e}return null}finishedReconstruction(){this.reconPack=null,this.buffers=[]}}var Np=Object.freeze({__proto__:null,protocol:5,get PacketType(){return Ip},Encoder:class{constructor(e){this.replacer=e}encode(e){return e.type!==Ip.EVENT&&e.type!==Ip.ACK||!Ep(e)?[this.encodeAsString(e)]:this.encodeAsBinary({type:e.type===Ip.EVENT?Ip.BINARY_EVENT:Ip.BINARY_ACK,nsp:e.nsp,data:e.data,id:e.id})}encodeAsString(e){let t=""+e.type;return e.type!==Ip.BINARY_EVENT&&e.type!==Ip.BINARY_ACK||(t+=e.attachments+"-"),e.nsp&&"/"!==e.nsp&&(t+=e.nsp+","),null!=e.id&&(t+=e.id),null!=e.data&&(t+=JSON.stringify(e.data,this.replacer)),t}encodeAsBinary(e){const t=Dp(e),r=this.encodeAsString(t.packet),i=t.buffers;return i.unshift(r),i}},Decoder:jp});function Bp(e,t,r){return e.on(t,r),function(){e.off(t,r)}}const Up=Object.freeze({connect:1,connect_error:1,disconnect:1,disconnecting:1,newListener:1,removeListener:1});class qp extends Hd{constructor(e,t,r){super(),this.connected=!1,this.recovered=!1,this.receiveBuffer=[],this.sendBuffer=[],this._queue=[],this._queueSeq=0,this.ids=0,this.acks={},this.flags={},this.io=e,this.nsp=t,r&&r.auth&&(this.auth=r.auth),this._opts=Object.assign({},r),this.io._autoConnect&&this.open()}get disconnected(){return!this.connected}subEvents(){if(this.subs)return;const e=this.io;this.subs=[Bp(e,"open",this.onopen.bind(this)),Bp(e,"packet",this.onpacket.bind(this)),Bp(e,"error",this.onerror.bind(this)),Bp(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(Up.hasOwnProperty(e))throw new Error('"'+e.toString()+'" is a reserved event name');if(t.unshift(e),this._opts.retries&&!this.flags.fromQueue&&!this.flags.volatile)return this._addToQueue(t),this;const r={type:Ip.EVENT,data:t,options:{}};if(r.options.compress=!1!==this.flags.compress,"function"==typeof t[t.length-1]){const e=this.ids++,i=t.pop();this._registerAckCallback(e,i),r.id=e}const i=this.io.engine&&this.io.engine.transport&&this.io.engine.transport.writable;return this.flags.volatile&&(!i||!this.connected)||(this.connected?(this.notifyOutgoingListeners(r),this.packet(r)):this.sendBuffer.push(r)),this.flags={},this}_registerAckCallback(e,t){var r;const i=null!==(r=this.flags.timeout)&&void 0!==r?r:this._opts.ackTimeout;if(void 0===i)return void(this.acks[e]=t);const s=this.io.setTimeoutFn((()=>{delete this.acks[e];for(let t=0;t<this.sendBuffer.length;t++)this.sendBuffer[t].id===e&&this.sendBuffer.splice(t,1);t.call(this,new Error("operation has timed out"))}),i);this.acks[e]=(...e)=>{this.io.clearTimeoutFn(s),t.apply(this,[null,...e])}}emitWithAck(e,...t){const r=void 0!==this.flags.timeout||void 0!==this._opts.ackTimeout;return new Promise(((i,s)=>{t.push(((e,t)=>r?e?s(e):i(t):i(e))),this.emit(e,...t)}))}_addToQueue(e){let t;"function"==typeof e[e.length-1]&&(t=e.pop());const r={id:this._queueSeq++,tryCount:0,pending:!1,args:e,flags:Object.assign({fromQueue:!0},this.flags)};e.push(((e,...i)=>{if(r!==this._queue[0])return;return null!==e?r.tryCount>this._opts.retries&&(this._queue.shift(),t&&t(e)):(this._queue.shift(),t&&t(null,...i)),r.pending=!1,this._drainQueue()})),this._queue.push(r),this._drainQueue()}_drainQueue(e=!1){if(!this.connected||0===this._queue.length)return;const t=this._queue[0];t.pending&&!e||(t.pending=!0,t.tryCount++,this.flags=t.flags,this.emit.apply(this,t.args))}packet(e){e.nsp=this.nsp,this.io._packet(e)}onopen(){"function"==typeof this.auth?this.auth((e=>{this._sendConnectPacket(e)})):this._sendConnectPacket(this.auth)}_sendConnectPacket(e){this.packet({type:Ip.CONNECT,data:this._pid?Object.assign({pid:this._pid,offset:this._lastOffset},e):e})}onerror(e){this.connected||this.emitReserved("connect_error",e)}onclose(e,t){this.connected=!1,delete this.id,this.emitReserved("disconnect",e,t)}onpacket(e){if(e.nsp===this.nsp)switch(e.type){case Ip.CONNECT:e.data&&e.data.sid?this.onconnect(e.data.sid,e.data.pid):this.emitReserved("connect_error",new Error("It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)"));break;case Ip.EVENT:case Ip.BINARY_EVENT:this.onevent(e);break;case Ip.ACK:case Ip.BINARY_ACK:this.onack(e);break;case Ip.DISCONNECT:this.ondisconnect();break;case Ip.CONNECT_ERROR:this.destroy();const t=new Error(e.data.message);t.data=e.data.data,this.emitReserved("connect_error",t)}}onevent(e){const t=e.data||[];null!=e.id&&t.push(this.ack(e.id)),this.connected?this.emitEvent(t):this.receiveBuffer.push(Object.freeze(t))}emitEvent(e){if(this._anyListeners&&this._anyListeners.length){const t=this._anyListeners.slice();for(const r of t)r.apply(this,e)}super.emit.apply(this,e),this._pid&&e.length&&"string"==typeof e[e.length-1]&&(this._lastOffset=e[e.length-1])}ack(e){const t=this;let r=!1;return function(...i){r||(r=!0,t.packet({type:Ip.ACK,id:e,data:i}))}}onack(e){const t=this.acks[e.id];"function"==typeof t&&(t.apply(this,e.data),delete this.acks[e.id])}onconnect(e,t){this.id=e,this.recovered=t&&this._pid===t,this._pid=t,this.connected=!0,this.emitBuffered(),this.emitReserved("connect"),this._drainQueue(!0)}emitBuffered(){this.receiveBuffer.forEach((e=>this.emitEvent(e))),this.receiveBuffer=[],this.sendBuffer.forEach((e=>{this.notifyOutgoingListeners(e),this.packet(e)})),this.sendBuffer=[]}ondisconnect(){this.destroy(),this.onclose("io server disconnect")}destroy(){this.subs&&(this.subs.forEach((e=>e())),this.subs=void 0),this.io._destroy(this)}disconnect(){return this.connected&&this.packet({type:Ip.DISCONNECT}),this.destroy(),this.connected&&this.onclose("io client disconnect"),this}close(){return this.disconnect()}compress(e){return this.flags.compress=e,this}get volatile(){return this.flags.volatile=!0,this}timeout(e){return this.flags.timeout=e,this}onAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.push(e),this}prependAny(e){return this._anyListeners=this._anyListeners||[],this._anyListeners.unshift(e),this}offAny(e){if(!this._anyListeners)return this;if(e){const t=this._anyListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyListeners=[];return this}listenersAny(){return this._anyListeners||[]}onAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.push(e),this}prependAnyOutgoing(e){return this._anyOutgoingListeners=this._anyOutgoingListeners||[],this._anyOutgoingListeners.unshift(e),this}offAnyOutgoing(e){if(!this._anyOutgoingListeners)return this;if(e){const t=this._anyOutgoingListeners;for(let r=0;r<t.length;r++)if(e===t[r])return t.splice(r,1),this}else this._anyOutgoingListeners=[];return this}listenersAnyOutgoing(){return this._anyOutgoingListeners||[]}notifyOutgoingListeners(e){if(this._anyOutgoingListeners&&this._anyOutgoingListeners.length){const t=this._anyOutgoingListeners.slice();for(const r of t)r.apply(this,e.data)}}}function Wp(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}Wp.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)},Wp.prototype.reset=function(){this.attempts=0},Wp.prototype.setMin=function(e){this.ms=e},Wp.prototype.setMax=function(e){this.max=e},Wp.prototype.setJitter=function(e){this.jitter=e};class Vp extends Hd{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,Yd(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 Wp({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||Np;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 Sp(this.uri,this.opts);const t=this.engine,r=this;this._readyState="opening",this.skipReconnect=!1;const i=Bp(t,"open",(function(){r.onopen(),e&&e()})),s=t=>{this.cleanup(),this._readyState="closed",this.emitReserved("error",t),e?e(t):this.maybeReconnectOnOpen()},n=Bp(t,"error",s);if(!1!==this._timeout){const e=this._timeout,r=this.setTimeoutFn((()=>{i(),s(new Error("timeout")),t.close()}),e);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}return this.subs.push(i),this.subs.push(n),this}connect(e){return this.open(e)}onopen(){this.cleanup(),this._readyState="open",this.emitReserved("open");const e=this.engine;this.subs.push(Bp(e,"ping",this.onping.bind(this)),Bp(e,"data",this.ondata.bind(this)),Bp(e,"error",this.onerror.bind(this)),Bp(e,"close",this.onclose.bind(this)),Bp(this.decoder,"decoded",this.ondecoded.bind(this)))}onping(){this.emitReserved("ping")}ondata(e){try{this.decoder.add(e)}catch(e){this.onclose("parse error",e)}}ondecoded(e){mp((()=>{this.emitReserved("packet",e)}),this.setTimeoutFn)}onerror(e){this.emitReserved("error",e)}socket(e,t){let r=this.nsps[e];return r?this._autoConnect&&!r.active&&r.connect():(r=new qp(this,e,t),this.nsps[e]=r),r}_destroy(e){const t=Object.keys(this.nsps);for(const e of t){if(this.nsps[e].active)return}this._close()}_packet(e){const t=this.encoder.encode(e);for(let r=0;r<t.length;r++)this.engine.write(t[r],e.options)}cleanup(){this.subs.forEach((e=>e())),this.subs.length=0,this.decoder.destroy()}_close(){this.skipReconnect=!0,this._reconnecting=!1,this.onclose("forced close"),this.engine&&this.engine.close()}disconnect(){return this._close()}onclose(e,t){this.cleanup(),this.backoff.reset(),this._readyState="closed",this.emitReserved("close",e,t),this._reconnection&&!this.skipReconnect&&this.reconnect()}reconnect(){if(this._reconnecting||this.skipReconnect)return this;const e=this;if(this.backoff.attempts>=this._reconnectionAttempts)this.backoff.reset(),this.emitReserved("reconnect_failed"),this._reconnecting=!1;else{const t=this.backoff.duration();this._reconnecting=!0;const r=this.setTimeoutFn((()=>{e.skipReconnect||(this.emitReserved("reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((t=>{t?(e._reconnecting=!1,e.reconnect(),this.emitReserved("reconnect_error",t)):e.onreconnect()})))}),t);this.opts.autoUnref&&r.unref(),this.subs.push((()=>{this.clearTimeoutFn(r)}))}}onreconnect(){const e=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),this.emitReserved("reconnect",e)}}const zp={};function $p(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=_p(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=zp[s]&&n in zp[s].nsps;let a;return t.forceNew||t["force new connection"]||!1===t.multiplex||o?a=new Vp(i,t):(zp[s]||(zp[s]=new Vp(i,t)),a=zp[s]),r.query&&!t.query&&(t.query=r.queryKey),a.socket(r.path,t)}Object.assign($p,{Manager:Vp,Socket:qp,io:$p,connect:$p});class Gp{constructor(e){this.reconnectingAttempt=0,this.isConnected=!1,this._observer=new n,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 $e({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=$p(e,{transports:["polling","websocket"],upgrade:!0,rememberUpgrade:!1,auth:{token:t}});this.connection=r,this.serverUrl=e,r.on($a.Connect,(()=>{const e=this.reconnectingAttempt?$a.Reconnected:$a.Connected;this.isConnected=!0,this.setReconnectingAttempt(0),this.logger.debug(`connection.on('${$a.Connect}')`,{connectionId:r.id}),this.observer.safeEmit($a.State,{state:e})})),r.on($a.ConnectError,(e=>{this.connectionError=e,this.logger.error(`connection.on('${$a.ConnectError}')`,{error:e}),this.observer.safeEmit($a.State,{state:$a.Error,error:e})})),r.on($a.Disconnect,(e=>{this.isConnected=!1,this.setReconnectingAttempt(0),this.disconnectReason=e,this.logger.warn(`connection.on('${$a.Disconnect}')`,{reason:e}),this.observer.safeEmit($a.State,{state:$a.Disconnected,code:this.getDisconnectReasonCode(e)})})),r.io.on($a.ReconnectAttempt,(e=>{this.setReconnectingAttempt(e),this.logger.warn(`connection.on('${$a.ReconnectAttempt}')`,{attempt:e}),this.observer.safeEmit($a.State,{state:$a.Reconnecting})})),r.io.on($a.Reconnect,(()=>{this.logger.debug(`connection.on('${$a.Reconnect}')`,{connectionId:r.id}),this.observer.safeEmit($a.State,{state:$a.Reconnect})}))}disconnect(){this.connection&&(this.connection.offAny(),this.connection.volatile.offAny(),this.connection.disconnect(),this.connection.io.removeAllListeners(),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 Hp={exports:{}},Jp=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)}},Kp=Jp,Qp=Object.prototype.toString;function Xp(e){return"[object Array]"===Qp.call(e)}function Yp(e){return void 0===e}function Zp(e){return null!==e&&"object"==typeof e}function el(e){if("[object Object]"!==Qp.call(e))return!1;var t=Object.getPrototypeOf(e);return null===t||t===Object.prototype}function tl(e){return"[object Function]"===Qp.call(e)}function rl(e,t){if(null!=e)if("object"!=typeof e&&(e=[e]),Xp(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 il={isArray:Xp,isArrayBuffer:function(e){return"[object ArrayBuffer]"===Qp.call(e)},isBuffer:function(e){return null!==e&&!Yp(e)&&null!==e.constructor&&!Yp(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:Zp,isPlainObject:el,isUndefined:Yp,isDate:function(e){return"[object Date]"===Qp.call(e)},isFile:function(e){return"[object File]"===Qp.call(e)},isBlob:function(e){return"[object Blob]"===Qp.call(e)},isFunction:tl,isStream:function(e){return Zp(e)&&tl(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:rl,merge:function e(){var t={};function r(r,i){el(t[i])&&el(r)?t[i]=e(t[i],r):el(r)?t[i]=e({},r):Xp(r)?t[i]=r.slice():t[i]=r}for(var i=0,s=arguments.length;i<s;i++)rl(arguments[i],r);return t},extend:function(e,t,r){return rl(t,(function(t,i){e[i]=r&&"function"==typeof t?Kp(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}},sl=il;function nl(e){return encodeURIComponent(e).replace(/%3A/gi,":").replace(/%24/g,"$").replace(/%2C/gi,",").replace(/%20/g,"+").replace(/%5B/gi,"[").replace(/%5D/gi,"]")}var ol=function(e,t,r){if(!t)return e;var i;if(r)i=r(t);else if(sl.isURLSearchParams(t))i=t.toString();else{var s=[];sl.forEach(t,(function(e,t){null!=e&&(sl.isArray(e)?t+="[]":e=[e],sl.forEach(e,(function(e){sl.isDate(e)?e=e.toISOString():sl.isObject(e)&&(e=JSON.stringify(e)),s.push(nl(t)+"="+nl(e))})))})),i=s.join("&")}if(i){var n=e.indexOf("#");-1!==n&&(e=e.slice(0,n)),e+=(-1===e.indexOf("?")?"?":"&")+i}return e},al=il;function cl(){this.handlers=[]}cl.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},cl.prototype.eject=function(e){this.handlers[e]&&(this.handlers[e]=null)},cl.prototype.forEach=function(e){al.forEach(this.handlers,(function(t){null!==t&&e(t)}))};var dl=cl,pl=il,ll=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},ul=ll,hl=function(e,t,r,i,s){var n=new Error(e);return ul(n,t,r,i,s)},fl=hl,ml=il,gl=ml.isStandardBrowserEnv()?{write:function(e,t,r,i,s,n){var o=[];o.push(e+"="+encodeURIComponent(t)),ml.isNumber(r)&&o.push("expires="+new Date(r).toGMTString()),ml.isString(i)&&o.push("path="+i),ml.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(){}},vl=function(e){return/^([a-z][a-z\d\+\-\.]*:)?\/\//i.test(e)},yl=function(e,t){return t?e.replace(/\/+$/,"")+"/"+t.replace(/^\/+/,""):e},bl=il,wl=["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"],_l=il,Sl=_l.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=_l.isString(t)?i(t):t;return r.protocol===e.protocol&&r.host===e.host}}():function(){return!0},Rl=il,kl=function(e,t,r){var i=r.config.validateStatus;r.status&&i&&!i(r.status)?t(fl("Request failed with status code "+r.status,r.config,null,r.request,r)):e(r)},Cl=gl,Pl=ol,Tl=function(e,t){return e&&!vl(t)?yl(e,t):t},El=function(e){var t,r,i,s={};return e?(bl.forEach(e.split("\n"),(function(e){if(i=e.indexOf(":"),t=bl.trim(e.substr(0,i)).toLowerCase(),r=bl.trim(e.substr(i+1)),t){if(s[t]&&wl.indexOf(t)>=0)return;s[t]="set-cookie"===t?(s[t]?s[t]:[]).concat([r]):s[t]?s[t]+", "+r:r}})),s):s},Dl=Sl,Ml=hl,xl=function(e){return new Promise((function(t,r){var i=e.data,s=e.headers,n=e.responseType;Rl.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=Tl(e.baseURL,e.url);function p(){if(o){var i="getAllResponseHeaders"in o?El(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};kl(t,r,s),o=null}}if(o.open(e.method.toUpperCase(),Pl(d,e.params,e.paramsSerializer),!0),o.timeout=e.timeout,"onloadend"in o?o.onloadend=p:o.onreadystatechange=function(){o&&4===o.readyState&&(0!==o.status||o.responseURL&&0===o.responseURL.indexOf("file:"))&&setTimeout(p)},o.onabort=function(){o&&(r(Ml("Request aborted",e,"ECONNABORTED",o)),o=null)},o.onerror=function(){r(Ml("Network Error",e,null,o)),o=null},o.ontimeout=function(){var t="timeout of "+e.timeout+"ms exceeded";e.timeoutErrorMessage&&(t=e.timeoutErrorMessage),r(Ml(t,e,e.transitional&&e.transitional.clarifyTimeoutError?"ETIMEDOUT":"ECONNABORTED",o)),o=null},Rl.isStandardBrowserEnv()){var l=(e.withCredentials||Dl(d))&&e.xsrfCookieName?Cl.read(e.xsrfCookieName):void 0;l&&(s[e.xsrfHeaderName]=l)}"setRequestHeader"in o&&Rl.forEach(s,(function(e,t){void 0===i&&"content-type"===t.toLowerCase()?delete s[t]:o.setRequestHeader(t,e)})),Rl.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)}))},Ll=il,Ol=function(e,t){pl.forEach(e,(function(r,i){i!==t&&i.toUpperCase()===t.toUpperCase()&&(e[t]=r,delete e[i])}))},Il=ll,Al={"Content-Type":"application/x-www-form-urlencoded"};function jl(e,t){!Ll.isUndefined(e)&&Ll.isUndefined(e["Content-Type"])&&(e["Content-Type"]=t)}var Fl,Nl={transitional:{silentJSONParsing:!0,forcedJSONParsing:!0,clarifyTimeoutError:!1},adapter:(("undefined"!=typeof XMLHttpRequest||"undefined"!=typeof process&&"[object process]"===Object.prototype.toString.call(process))&&(Fl=xl),Fl),transformRequest:[function(e,t){return Ol(t,"Accept"),Ol(t,"Content-Type"),Ll.isFormData(e)||Ll.isArrayBuffer(e)||Ll.isBuffer(e)||Ll.isStream(e)||Ll.isFile(e)||Ll.isBlob(e)?e:Ll.isArrayBufferView(e)?e.buffer:Ll.isURLSearchParams(e)?(jl(t,"application/x-www-form-urlencoded;charset=utf-8"),e.toString()):Ll.isObject(e)||t&&"application/json"===t["Content-Type"]?(jl(t,"application/json"),function(e,t,r){if(Ll.isString(e))try{return(t||JSON.parse)(e),Ll.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&&Ll.isString(e)&&e.length)try{return JSON.parse(e)}catch(e){if(s){if("SyntaxError"===e.name)throw Il(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}};Nl.headers={common:{Accept:"application/json, text/plain, */*"}},Ll.forEach(["delete","get","head"],(function(e){Nl.headers[e]={}})),Ll.forEach(["post","put","patch"],(function(e){Nl.headers[e]=Ll.merge(Al)}));var Bl=Nl,Ul=il,ql=Bl,Wl=function(e){return!(!e||!e.__CANCEL__)},Vl=il,zl=function(e,t,r){var i=this||ql;return Ul.forEach(r,(function(r){e=r.call(i,e,t)})),e},$l=Wl,Gl=Bl;function Hl(e){e.cancelToken&&e.cancelToken.throwIfRequested()}var Jl=il,Kl=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 Jl.isPlainObject(e)&&Jl.isPlainObject(t)?Jl.merge(e,t):Jl.isPlainObject(t)?Jl.merge({},t):Jl.isArray(t)?t.slice():t}function c(i){Jl.isUndefined(t[i])?Jl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(e[i],t[i])}Jl.forEach(i,(function(e){Jl.isUndefined(t[e])||(r[e]=a(void 0,t[e]))})),Jl.forEach(s,c),Jl.forEach(n,(function(i){Jl.isUndefined(t[i])?Jl.isUndefined(e[i])||(r[i]=a(void 0,e[i])):r[i]=a(void 0,t[i])})),Jl.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),p=Object.keys(e).concat(Object.keys(t)).filter((function(e){return-1===d.indexOf(e)}));return Jl.forEach(p,c),r},Ql={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"}]},Xl={};["object","boolean","number","function","string","symbol"].forEach((function(e,t){Xl[e]=function(r){return typeof r===e||"a"+(t<1?"n ":" ")+e}}));var Yl={},Zl=Ql.version.split(".");function eu(e,t){for(var r=t?t.split("."):Zl,i=e.split("."),s=0;s<3;s++){if(r[s]>i[s])return!0;if(r[s]<i[s])return!1}return!1}Xl.transitional=function(e,t,r){var i=t&&eu(t);function s(e,t){return"[Axios v"+Ql.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&&!Yl[n]&&(Yl[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 tu={isOlderVersion:eu,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:Xl},ru=il,iu=ol,su=dl,nu=function(e){return Hl(e),e.headers=e.headers||{},e.data=zl.call(e,e.data,e.headers,e.transformRequest),e.headers=Vl.merge(e.headers.common||{},e.headers[e.method]||{},e.headers),Vl.forEach(["delete","get","head","post","put","patch","common"],(function(t){delete e.headers[t]})),(e.adapter||Gl.adapter)(e).then((function(t){return Hl(e),t.data=zl.call(e,t.data,t.headers,e.transformResponse),t}),(function(t){return $l(t)||(Hl(e),t&&t.response&&(t.response.data=zl.call(e,t.response.data,t.response.headers,e.transformResponse))),Promise.reject(t)}))},ou=Kl,au=tu,cu=au.validators;function du(e){this.defaults=e,this.interceptors={request:new su,response:new su}}du.prototype.request=function(e){"string"==typeof e?(e=arguments[1]||{}).url=arguments[0]:e=e||{},(e=ou(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&&au.assertOptions(t,{silentJSONParsing:cu.transitional(cu.boolean,"1.0.0"),forcedJSONParsing:cu.transitional(cu.boolean,"1.0.0"),clarifyTimeoutError:cu.transitional(cu.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=[nu,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=nu(a)}catch(e){return Promise.reject(e)}for(;n.length;)s=s.then(n.shift(),n.shift());return s},du.prototype.getUri=function(e){return e=ou(this.defaults,e),iu(e.url,e.params,e.paramsSerializer).replace(/^\?/,"")},ru.forEach(["delete","get","head","options"],(function(e){du.prototype[e]=function(t,r){return this.request(ou(r||{},{method:e,url:t,data:(r||{}).data}))}})),ru.forEach(["post","put","patch"],(function(e){du.prototype[e]=function(t,r,i){return this.request(ou(i||{},{method:e,url:t,data:r}))}}));var pu=du;function lu(e){this.message=e}lu.prototype.toString=function(){return"Cancel"+(this.message?": "+this.message:"")},lu.prototype.__CANCEL__=!0;var uu=lu,hu=uu;function fu(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 hu(e),t(r.reason))}))}fu.prototype.throwIfRequested=function(){if(this.reason)throw this.reason},fu.source=function(){var e,t=new fu((function(t){e=t}));return{token:t,cancel:e}};var mu=fu,gu=il,vu=Jp,yu=pu,bu=Kl;function wu(e){var t=new yu(e),r=vu(yu.prototype.request,t);return gu.extend(r,yu.prototype,t),gu.extend(r,t),r}var _u=wu(Bl);_u.Axios=yu,_u.create=function(e){return wu(bu(_u.defaults,e))},_u.Cancel=uu,_u.CancelToken=mu,_u.isCancel=Wl,_u.all=function(e){return Promise.all(e)},_u.spread=function(e){return function(t){return e.apply(null,t)}},_u.isAxiosError=function(e){return"object"==typeof e&&!0===e.isAxiosError},Hp.exports=_u,Hp.exports.default=_u;var Su=Hp.exports,Ru="undefined"!=typeof Symbol&&Symbol,ku=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},Cu="Function.prototype.bind called on incompatible ",Pu=Array.prototype.slice,Tu=Object.prototype.toString,Eu=function(e){var t=this;if("function"!=typeof t||"[object Function]"!==Tu.call(t))throw new TypeError(Cu+t);for(var r,i=Pu.call(arguments,1),s=function(){if(this instanceof r){var s=t.apply(this,i.concat(Pu.call(arguments)));return Object(s)===s?s:this}return t.apply(e,i.concat(Pu.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},Du=Function.prototype.bind||Eu,Mu=Du.call(Function.call,Object.prototype.hasOwnProperty),xu=SyntaxError,Lu=Function,Ou=TypeError,Iu=function(e){try{return Lu('"use strict"; return ('+e+").constructor;")()}catch(e){}},Au=Object.getOwnPropertyDescriptor;if(Au)try{Au({},"")}catch(Uc){Au=null}var ju=function(){throw new Ou},Fu=Au?function(){try{return ju}catch(e){try{return Au(arguments,"callee").get}catch(e){return ju}}}():ju,Nu="function"==typeof Ru&&"function"==typeof Symbol&&"symbol"==typeof Ru("foo")&&"symbol"==typeof Symbol("bar")&&ku(),Bu=Object.getPrototypeOf||function(e){return e.__proto__},Uu={},qu="undefined"==typeof Uint8Array?undefined:Bu(Uint8Array),Wu={"%AggregateError%":"undefined"==typeof AggregateError?undefined:AggregateError,"%Array%":Array,"%ArrayBuffer%":"undefined"==typeof ArrayBuffer?undefined:ArrayBuffer,"%ArrayIteratorPrototype%":Nu?Bu([][Symbol.iterator]()):undefined,"%AsyncFromSyncIteratorPrototype%":undefined,"%AsyncFunction%":Uu,"%AsyncGenerator%":Uu,"%AsyncGeneratorFunction%":Uu,"%AsyncIteratorPrototype%":Uu,"%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%":Lu,"%GeneratorFunction%":Uu,"%Int8Array%":"undefined"==typeof Int8Array?undefined:Int8Array,"%Int16Array%":"undefined"==typeof Int16Array?undefined:Int16Array,"%Int32Array%":"undefined"==typeof Int32Array?undefined:Int32Array,"%isFinite%":isFinite,"%isNaN%":isNaN,"%IteratorPrototype%":Nu?Bu(Bu([][Symbol.iterator]())):undefined,"%JSON%":"object"==typeof JSON?JSON:undefined,"%Map%":"undefined"==typeof Map?undefined:Map,"%MapIteratorPrototype%":"undefined"!=typeof Map&&Nu?Bu((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&&Nu?Bu((new Set)[Symbol.iterator]()):undefined,"%SharedArrayBuffer%":"undefined"==typeof SharedArrayBuffer?undefined:SharedArrayBuffer,"%String%":String,"%StringIteratorPrototype%":Nu?Bu(""[Symbol.iterator]()):undefined,"%Symbol%":Nu?Symbol:undefined,"%SyntaxError%":xu,"%ThrowTypeError%":Fu,"%TypedArray%":qu,"%TypeError%":Ou,"%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},Vu=function e(t){var r;if("%AsyncFunction%"===t)r=Iu("async function () {}");else if("%GeneratorFunction%"===t)r=Iu("function* () {}");else if("%AsyncGeneratorFunction%"===t)r=Iu("async function* () {}");else if("%AsyncGenerator%"===t){var i=e("%AsyncGeneratorFunction%");i&&(r=i.prototype)}else if("%AsyncIteratorPrototype%"===t){var s=e("%AsyncGenerator%");s&&(r=Bu(s.prototype))}return Wu[t]=r,r},zu={"%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"]},$u=Du,Gu=Mu,Hu=$u.call(Function.call,Array.prototype.concat),Ju=$u.call(Function.apply,Array.prototype.splice),Ku=$u.call(Function.call,String.prototype.replace),Qu=$u.call(Function.call,String.prototype.slice),Xu=/[^%.[\]]+|\[(?:(-?\d+(?:\.\d+)?)|(["'])((?:(?!\2)[^\\]|\\.)*?)\2)\]|(?=(?:\.|\[\])(?:\.|\[\]|%$))/g,Yu=/\\(\\)?/g,Zu=function(e){var t=Qu(e,0,1),r=Qu(e,-1);if("%"===t&&"%"!==r)throw new xu("invalid intrinsic syntax, expected closing `%`");if("%"===r&&"%"!==t)throw new xu("invalid intrinsic syntax, expected opening `%`");var i=[];return Ku(e,Xu,(function(e,t,r,s){i[i.length]=r?Ku(s,Yu,"$1"):t||e})),i},eh=function(e,t){var r,i=e;if(Gu(zu,i)&&(i="%"+(r=zu[i])[0]+"%"),Gu(Wu,i)){var s=Wu[i];if(s===Uu&&(s=Vu(i)),void 0===s&&!t)throw new Ou("intrinsic "+e+" exists, but is not available. Please file an issue!");return{alias:r,name:i,value:s}}throw new xu("intrinsic "+e+" does not exist!")},th=function(e,t){if("string"!=typeof e||0===e.length)throw new Ou("intrinsic name must be a non-empty string");if(arguments.length>1&&"boolean"!=typeof t)throw new Ou('"allowMissing" argument must be a boolean');var r=Zu(e),i=r.length>0?r[0]:"",s=eh("%"+i+"%",t),n=s.name,o=s.value,a=!1,c=s.alias;c&&(i=c[0],Ju(r,Hu([0,1],c)));for(var d=1,p=!0;d<r.length;d+=1){var l=r[d],u=Qu(l,0,1),h=Qu(l,-1);if(('"'===u||"'"===u||"`"===u||'"'===h||"'"===h||"`"===h)&&u!==h)throw new xu("property names with quotes must have matching quotes");if("constructor"!==l&&p||(a=!0),Gu(Wu,n="%"+(i+="."+l)+"%"))o=Wu[n];else if(null!=o){if(!(l in o)){if(!t)throw new Ou("base intrinsic for "+e+" exists, but the property is not available.");return}if(Au&&d+1>=r.length){var f=Au(o,l);o=(p=!!f)&&"get"in f&&!("originalValue"in f.get)?f.get:o[l]}else p=Gu(o,l),o=o[l];p&&!a&&(Wu[n]=o)}}return o},rh={exports:{}};!function(e){var t=Du,r=th,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}(rh);var ih=th,sh=rh.exports,nh=sh(ih("String.prototype.indexOf")),oh=c(Object.freeze({__proto__:null,default:{}})),ah="function"==typeof Map&&Map.prototype,ch=Object.getOwnPropertyDescriptor&&ah?Object.getOwnPropertyDescriptor(Map.prototype,"size"):null,dh=ah&&ch&&"function"==typeof ch.get?ch.get:null,ph=ah&&Map.prototype.forEach,lh="function"==typeof Set&&Set.prototype,uh=Object.getOwnPropertyDescriptor&&lh?Object.getOwnPropertyDescriptor(Set.prototype,"size"):null,hh=lh&&uh&&"function"==typeof uh.get?uh.get:null,fh=lh&&Set.prototype.forEach,mh="function"==typeof WeakMap&&WeakMap.prototype?WeakMap.prototype.has:null,gh="function"==typeof WeakSet&&WeakSet.prototype?WeakSet.prototype.has:null,vh="function"==typeof WeakRef&&WeakRef.prototype?WeakRef.prototype.deref:null,yh=Boolean.prototype.valueOf,bh=Object.prototype.toString,wh=Function.prototype.toString,_h=String.prototype.match,Sh="function"==typeof BigInt?BigInt.prototype.valueOf:null,Rh=Object.getOwnPropertySymbols,kh="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?Symbol.prototype.toString:null,Ch="function"==typeof Symbol&&"object"==typeof Symbol.iterator,Ph=Object.prototype.propertyIsEnumerable,Th=("function"==typeof Reflect?Reflect.getPrototypeOf:Object.getPrototypeOf)||([].__proto__===Array.prototype?function(e){return e.__proto__}:null),Eh=oh.custom,Dh=Eh&&Ih(Eh)?Eh:null,Mh="function"==typeof Symbol&&void 0!==Symbol.toStringTag?Symbol.toStringTag:null;function xh(e,t,r){var i="double"===(r.quoteStyle||t)?'"':"'";return i+e+i}function Lh(e){return String(e).replace(/"/g,""")}function Oh(e){return!("[object Array]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}function Ih(e){if(Ch)return e&&"object"==typeof e&&e instanceof Symbol;if("symbol"==typeof e)return!0;if(!e||"object"!=typeof e||!kh)return!1;try{return kh.call(e),!0}catch(e){}return!1}var Ah=Object.prototype.hasOwnProperty||function(e){return e in this};function jh(e,t){return Ah.call(e,t)}function Fh(e){return bh.call(e)}function Nh(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 Bh(e,t){if(e.length>t.maxStringLength){var r=e.length-t.maxStringLength,i="... "+r+" more character"+(r>1?"s":"");return Bh(e.slice(0,t.maxStringLength),t)+i}return xh(e.replace(/(['\\])/g,"\\$1").replace(/[\x00-\x1f]/g,Uh),"single",t)}function Uh(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 qh(e){return"Object("+e+")"}function Wh(e){return e+" { ? }"}function Vh(e,t,r,i){return e+" ("+t+") {"+(i?zh(r,i):r.join(", "))+"}"}function zh(e,t){if(0===e.length)return"";var r="\n"+t.prev+t.base;return r+e.join(","+r)+"\n"+t.prev}function $h(e,t){var r=Oh(e),i=[];if(r){i.length=e.length;for(var s=0;s<e.length;s++)i[s]=jh(e,s)?t(e[s],e):""}var n,o="function"==typeof Rh?Rh(e):[];if(Ch){n={};for(var a=0;a<o.length;a++)n["$"+o[a]]=o[a]}for(var c in e)jh(e,c)&&(r&&String(Number(c))===c&&c<e.length||Ch&&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 Rh)for(var d=0;d<o.length;d++)Ph.call(e,o[d])&&i.push("["+t(o[d])+"]: "+t(e[o[d]],e));return i}var Gh,Hh,Jh,Kh,Qh,Xh,Yh,Zh=th,ef=function(e,t){var r=ih(e,!!t);return"function"==typeof r&&nh(e,".prototype.")>-1?sh(r):r},tf=function e(t,r,i,s){var n=r||{};if(jh(n,"quoteStyle")&&"single"!==n.quoteStyle&&"double"!==n.quoteStyle)throw new TypeError('option "quoteStyle" must be "single" or "double"');if(jh(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=!jh(n,"customInspect")||n.customInspect;if("boolean"!=typeof o&&"symbol"!==o)throw new TypeError("option \"customInspect\", if provided, must be `true`, `false`, or `'symbol'`");if(jh(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 Bh(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 Oh(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(Nh(s,t)>=0)return"[Circular]";function d(t,r,o){if(r&&(s=s.slice()).push(r),o){var a={depth:n.depth};return jh(n,"quoteStyle")&&(a.quoteStyle=n.quoteStyle),e(t,a,i+1,s)}return e(t,n,i+1,s)}if("function"==typeof t){var p=function(e){if(e.name)return e.name;var t=_h.call(wh.call(e),/^function\s*([\w$]+)/);if(t)return t[1];return null}(t),l=$h(t,d);return"[Function"+(p?": "+p:" (anonymous)")+"]"+(l.length>0?" { "+l.join(", ")+" }":"")}if(Ih(t)){var u=Ch?String(t).replace(/^(Symbol\(.*\))_[^)]*$/,"$1"):kh.call(t);return"object"!=typeof t||Ch?u:qh(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+"="+xh(Lh(f[m].value),"double",n);return h+=">",t.childNodes&&t.childNodes.length&&(h+="..."),h+="</"+String(t.nodeName).toLowerCase()+">"}if(Oh(t)){if(0===t.length)return"[]";var g=$h(t,d);return c&&!function(e){for(var t=0;t<e.length;t++)if(Nh(e[t],"\n")>=0)return!1;return!0}(g)?"["+zh(g,c)+"]":"[ "+g.join(", ")+" ]"}if(function(e){return!("[object Error]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t)){var v=$h(t,d);return 0===v.length?"["+String(t)+"]":"{ ["+String(t)+"] "+v.join(", ")+" }"}if("object"==typeof t&&o){if(Dh&&"function"==typeof t[Dh])return t[Dh]();if("symbol"!==o&&"function"==typeof t.inspect)return t.inspect()}if(function(e){if(!dh||!e||"object"!=typeof e)return!1;try{dh.call(e);try{hh.call(e)}catch(e){return!0}return e instanceof Map}catch(e){}return!1}(t)){var y=[];return ph.call(t,(function(e,r){y.push(d(r,t,!0)+" => "+d(e,t))})),Vh("Map",dh.call(t),y,c)}if(function(e){if(!hh||!e||"object"!=typeof e)return!1;try{hh.call(e);try{dh.call(e)}catch(e){return!0}return e instanceof Set}catch(e){}return!1}(t)){var b=[];return fh.call(t,(function(e){b.push(d(e,t))})),Vh("Set",hh.call(t),b,c)}if(function(e){if(!mh||!e||"object"!=typeof e)return!1;try{mh.call(e,mh);try{gh.call(e,gh)}catch(e){return!0}return e instanceof WeakMap}catch(e){}return!1}(t))return Wh("WeakMap");if(function(e){if(!gh||!e||"object"!=typeof e)return!1;try{gh.call(e,gh);try{mh.call(e,mh)}catch(e){return!0}return e instanceof WeakSet}catch(e){}return!1}(t))return Wh("WeakSet");if(function(e){if(!vh||!e||"object"!=typeof e)return!1;try{return vh.call(e),!0}catch(e){}return!1}(t))return Wh("WeakRef");if(function(e){return!("[object Number]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t))return qh(d(Number(t)));if(function(e){if(!e||"object"!=typeof e||!Sh)return!1;try{return Sh.call(e),!0}catch(e){}return!1}(t))return qh(d(Sh.call(t)));if(function(e){return!("[object Boolean]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t))return qh(yh.call(t));if(function(e){return!("[object String]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t))return qh(d(String(t)));if(!function(e){return!("[object Date]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t)&&!function(e){return!("[object RegExp]"!==Fh(e)||Mh&&"object"==typeof e&&Mh in e)}(t)){var w=$h(t,d),_=Th?Th(t)===Object.prototype:t instanceof Object||t.constructor===Object,S=t instanceof Object?"":"null prototype",R=!_&&Mh&&Object(t)===t&&Mh in t?Fh(t).slice(8,-1):S?"Object":"",k=(_||"function"!=typeof t.constructor?"":t.constructor.name?t.constructor.name+" ":"")+(R||S?"["+[].concat(R||[],S||[]).join(": ")+"] ":"");return 0===w.length?k+"{}":c?k+"{"+zh(w,c)+"}":k+"{ "+w.join(", ")+" }"}return String(t)},rf=Zh("%TypeError%"),sf=Zh("%WeakMap%",!0),nf=Zh("%Map%",!0),of=ef("WeakMap.prototype.get",!0),af=ef("WeakMap.prototype.set",!0),cf=ef("WeakMap.prototype.has",!0),df=ef("Map.prototype.get",!0),pf=ef("Map.prototype.set",!0),lf=ef("Map.prototype.has",!0),uf=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},hf=String.prototype.replace,ff=/%20/g,mf="RFC3986",gf={default:mf,formatters:{RFC1738:function(e){return hf.call(e,ff,"+")},RFC3986:function(e){return String(e)}},RFC1738:"RFC1738",RFC3986:mf},vf=gf,yf=Object.prototype.hasOwnProperty,bf=Array.isArray,wf=function(){for(var e=[],t=0;t<256;++t)e.push("%"+((t<16?"0":"")+t.toString(16)).toUpperCase());return e}(),_f=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},Sf={arrayToObject:_f,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(bf(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===vf.RFC1738&&(40===c||41===c)?o+=n.charAt(a):c<128?o+=wf[c]:c<2048?o+=wf[192|c>>6]+wf[128|63&c]:c<55296||c>=57344?o+=wf[224|c>>12]+wf[128|c>>6&63]+wf[128|63&c]:(a+=1,c=65536+((1023&c)<<10|1023&n.charCodeAt(a)),o+=wf[240|c>>18]+wf[128|c>>12&63]+wf[128|c>>6&63]+wf[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(bf(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(bf(t))t.push(r);else{if(!t||"object"!=typeof t)return[t,r];(i&&(i.plainObjects||i.allowPrototypes)||!yf.call(Object.prototype,r))&&(t[r]=!0)}return t}if(!t||"object"!=typeof t)return[t].concat(r);var s=t;return bf(t)&&!bf(r)&&(s=_f(t,i)),bf(t)&&bf(r)?(r.forEach((function(r,s){if(yf.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 yf.call(t,s)?t[s]=e(t[s],n,i):t[s]=n,t}),s)}},Rf=function(){var e,t,r,i={assert:function(e){if(!i.has(e))throw new rf("Side channel does not contain "+tf(e))},get:function(i){if(sf&&i&&("object"==typeof i||"function"==typeof i)){if(e)return of(e,i)}else if(nf){if(t)return df(t,i)}else if(r)return function(e,t){var r=uf(e,t);return r&&r.value}(r,i)},has:function(i){if(sf&&i&&("object"==typeof i||"function"==typeof i)){if(e)return cf(e,i)}else if(nf){if(t)return lf(t,i)}else if(r)return function(e,t){return!!uf(e,t)}(r,i);return!1},set:function(i,s){sf&&i&&("object"==typeof i||"function"==typeof i)?(e||(e=new sf),af(e,i,s)):nf?(t||(t=new nf),pf(t,i,s)):(r||(r={key:{},next:null}),function(e,t,r){var i=uf(e,t);i?i.value=r:e.next={key:t,next:e.next,value:r}}(r,i,s))}};return i},kf=Sf,Cf=gf,Pf=Object.prototype.hasOwnProperty,Tf={brackets:function(e){return e+"[]"},comma:"comma",indices:function(e,t){return e+"["+t+"]"},repeat:function(e){return e}},Ef=Array.isArray,Df=String.prototype.split,Mf=Array.prototype.push,xf=function(e,t){Mf.apply(e,Ef(t)?t:[t])},Lf=Date.prototype.toISOString,Of=Cf.default,If={addQueryPrefix:!1,allowDots:!1,charset:"utf-8",charsetSentinel:!1,delimiter:"&",encode:!0,encoder:kf.encode,encodeValuesOnly:!1,format:Of,formatter:Cf.formatters[Of],indices:!1,serializeDate:function(e){return Lf.call(e)},skipNulls:!1,strictNullHandling:!1},Af={},jf=function e(t,r,i,s,n,o,a,c,d,p,l,u,h,f,m,g){for(var v=t,y=g,b=0,w=!1;void 0!==(y=y.get(Af))&&!w;){var _=y.get(t);if(b+=1,void 0!==_){if(_===b)throw new RangeError("Cyclic object value");w=!0}void 0===y.get(Af)&&(b=0)}if("function"==typeof c?v=c(r,v):v instanceof Date?v=l(v):"comma"===i&&Ef(v)&&(v=kf.maybeMap(v,(function(e){return e instanceof Date?l(e):e}))),null===v){if(n)return a&&!f?a(r,If.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)||kf.isBuffer(v)){if(a){var S=f?r:a(r,If.encoder,m,"key",u);if("comma"===i&&f){for(var R=Df.call(String(v),","),k="",C=0;C<R.length;++C)k+=(0===C?"":",")+h(a(R[C],If.encoder,m,"value",u));return[h(S)+(s&&Ef(v)&&1===R.length?"[]":"")+"="+k]}return[h(S)+"="+h(a(v,If.encoder,m,"value",u))]}return[h(r)+"="+h(String(v))]}var P,T=[];if(void 0===v)return T;if("comma"===i&&Ef(v))P=[{value:v.length>0?v.join(",")||null:void 0}];else if(Ef(c))P=c;else{var E=Object.keys(v);P=d?E.sort(d):E}for(var D=s&&Ef(v)&&1===v.length?r+"[]":r,M=0;M<P.length;++M){var x=P[M],L="object"==typeof x&&void 0!==x.value?x.value:v[x];if(!o||null!==L){var O=Ef(v)?"function"==typeof i?i(D,x):D:D+(p?"."+x:"["+x+"]");g.set(t,b);var I=Rf();I.set(Af,g),xf(T,e(L,O,i,s,n,o,a,c,d,p,l,u,h,f,m,I))}}return T},Ff=Sf,Nf=Object.prototype.hasOwnProperty,Bf=Array.isArray,Uf={allowDots:!1,allowPrototypes:!1,allowSparse:!1,arrayLimit:20,charset:"utf-8",charsetSentinel:!1,comma:!1,decoder:Ff.decode,delimiter:"&",depth:5,ignoreQueryPrefix:!1,interpretNumericEntities:!1,parameterLimit:1e3,parseArrays:!0,plainObjects:!1,strictNullHandling:!1},qf=function(e){return e.replace(/&#(\d+);/g,(function(e,t){return String.fromCharCode(parseInt(t,10))}))},Wf=function(e,t){return e&&"string"==typeof e&&t.comma&&e.indexOf(",")>-1?e.split(","):e},Vf=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&&Nf.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&&Nf.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:Wf(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)}},zf=function(e,t){var r,i=e,s=function(e){if(!e)return If;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||If.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=Cf.default;if(void 0!==e.format){if(!Pf.call(Cf.formatters,e.format))throw new TypeError("Unknown format option provided.");r=e.format}var i=Cf.formatters[r],s=If.filter;return("function"==typeof e.filter||Ef(e.filter))&&(s=e.filter),{addQueryPrefix:"boolean"==typeof e.addQueryPrefix?e.addQueryPrefix:If.addQueryPrefix,allowDots:void 0===e.allowDots?If.allowDots:!!e.allowDots,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:If.charsetSentinel,delimiter:void 0===e.delimiter?If.delimiter:e.delimiter,encode:"boolean"==typeof e.encode?e.encode:If.encode,encoder:"function"==typeof e.encoder?e.encoder:If.encoder,encodeValuesOnly:"boolean"==typeof e.encodeValuesOnly?e.encodeValuesOnly:If.encodeValuesOnly,filter:s,format:r,formatter:i,serializeDate:"function"==typeof e.serializeDate?e.serializeDate:If.serializeDate,skipNulls:"boolean"==typeof e.skipNulls?e.skipNulls:If.skipNulls,sort:"function"==typeof e.sort?e.sort:null,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:If.strictNullHandling}}(t);"function"==typeof s.filter?i=(0,s.filter)("",i):Ef(s.filter)&&(r=s.filter);var n,o=[];if("object"!=typeof i||null===i)return"";n=t&&t.arrayFormat in Tf?t.arrayFormat:t&&"indices"in t?t.indices?"indices":"repeat":"indices";var a=Tf[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=Rf(),p=0;p<r.length;++p){var l=r[p];s.skipNulls&&null===i[l]||xf(o,jf(i[l],l,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:""},$f=function(e,t){var r=function(e){if(!e)return Uf;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?Uf.charset:e.charset;return{allowDots:void 0===e.allowDots?Uf.allowDots:!!e.allowDots,allowPrototypes:"boolean"==typeof e.allowPrototypes?e.allowPrototypes:Uf.allowPrototypes,allowSparse:"boolean"==typeof e.allowSparse?e.allowSparse:Uf.allowSparse,arrayLimit:"number"==typeof e.arrayLimit?e.arrayLimit:Uf.arrayLimit,charset:t,charsetSentinel:"boolean"==typeof e.charsetSentinel?e.charsetSentinel:Uf.charsetSentinel,comma:"boolean"==typeof e.comma?e.comma:Uf.comma,decoder:"function"==typeof e.decoder?e.decoder:Uf.decoder,delimiter:"string"==typeof e.delimiter||Ff.isRegExp(e.delimiter)?e.delimiter:Uf.delimiter,depth:"number"==typeof e.depth||!1===e.depth?+e.depth:Uf.depth,ignoreQueryPrefix:!0===e.ignoreQueryPrefix,interpretNumericEntities:"boolean"==typeof e.interpretNumericEntities?e.interpretNumericEntities:Uf.interpretNumericEntities,parameterLimit:"number"==typeof e.parameterLimit?e.parameterLimit:Uf.parameterLimit,parseArrays:!1!==e.parseArrays,plainObjects:"boolean"==typeof e.plainObjects?e.plainObjects:Uf.plainObjects,strictNullHandling:"boolean"==typeof e.strictNullHandling?e.strictNullHandling:Uf.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,p,l=o[r],u=l.indexOf("]="),h=-1===u?l.indexOf("="):u+1;-1===h?(d=t.decoder(l,Uf.decoder,c,"key"),p=t.strictNullHandling?null:""):(d=t.decoder(l.slice(0,h),Uf.decoder,c,"key"),p=Ff.maybeMap(Wf(l.slice(h+1),t),(function(e){return t.decoder(e,Uf.decoder,c,"value")}))),p&&t.interpretNumericEntities&&"iso-8859-1"===c&&(p=qf(p)),l.indexOf("[]=")>-1&&(p=Bf(p)?[p]:p),Nf.call(i,d)?i[d]=Ff.combine(i[d],p):i[d]=p}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=Vf(a,i[a],r,"string"==typeof e);s=Ff.merge(s,c,r)}return!0===r.allowSparse?s:Ff.compact(s)},Gf={formats:gf,parse:$f,stringify:zf};class Hf{constructor(e){const{baseURL:t,timeout:r,customNode:i}=e;this.api=Su.create({baseURL:t||"https://lb.livedigital.space/v1",timeout:r||5e3,withCredentials:!1,paramsSerializer:e=>Gf.stringify(e)}),this.customNode=i}getNode(e){return r(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}))}}class Jf extends g{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 Kf{constructor(e){const{engine:t,onLogMessage:r}=e;this.engine=t,this.logger=new $e({logLevel:t.logLevel,namespace:"ChannelAudioObserverEventHandler",onLogMessage:r})}handle(e){try{const t=JSON.parse(e);switch(Kf.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:wd(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||Kf.throwInvalidPayload();const{peerId:t,producerId:r,trackLabel:i}=e.data;"string"==typeof t&&"string"==typeof r&&i===u.Microphone||Kf.throwInvalidPayload();break}case Gh.PeersVolumes:Array.isArray(e.volumes)||Kf.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===u.Microphone||Kf.throwInvalidPayload()}));break;default:Kf.throwInvalidPayload()}}static throwInvalidPayload(){throw new Jf("Invalid channel audio observer event handler payload")}}class Qf{createSystem(e){return new Rd(e)}createMedia(e){return new Ga(e)}createNetwork(e){const{loadbalancer:t,logLevel:r,onLogMessage:i}=e,s=new Gp({logLevel:r,onLogMessage:i}),n=new Hf(t);return new _d({logLevel:r,socketClient:s,loadBalancerApiClient:n,onLogMessage:i})}createChannelEventHandler(e){return new kd(e)}createMediaSoupEventHandler(e){return new Cd(e)}createAudioObserverEventHandler(e){return new Kf(e)}createIssueDetector(e){var t,r;const i=null!==(t=e.logger)&&void 0!==t?t:console,s=new md({statsParser:new gd({logger:null!==(r=e.logger)&&void 0!==r?r:console})});return new vd({issueEmitter:new ed,networkScoresCalculator:new id,detectors:[new ld,new od,new ad,new cd,new pd,new dd,new nd,new ud],statsReporter:new td({compositeStatsParser:s,getStatsInterval:5e3}),onIssues:e.onIssues,onNetworkScoresUpdated:e.onNetworkScoresUpdated,ignoreSSRCList:e.ignoreSSRCList,compositeStatsParser:s,logger:i})}}class Xf 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 r(this,void 0,void 0,(function*(){yield e.audioWorklet.addModule(`${window.location.origin}/noiseSuppressionWorklet.js`)}))}}class Yf{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),s(this,Hh,e.noiseSuppressor.instance.exports,"f"),s(this,Jh,e.context,"f"),s(this,Kh,new Float32Array(i(this,Hh,"f").memory.buffer),"f"),s(this,Qh,i(this,Hh,"f").newState(),"f"),s(this,Xh,i(this,Jh,"f").createScriptProcessor(),"f"),this.setOnAudioProcess()}get noiseSuppressionScriptProcessorNode(){return i(this,Xh,"f")}update(e){e||(s(this,Yh,!1,"f"),i(this,Hh,"f").deleteState(i(this,Qh,"f")));const t=Object.assign(new Event("status"),{vadProb:i(this,Hh,"f").getVadProb(i(this,Qh,"f"))});i(this,Xh,"f").dispatchEvent(t)}setOnAudioProcess(){i(this,Xh,"f").addEventListener("audioprocess",(({inputBuffer:e,outputBuffer:t})=>{if(!i(this,Yh,"f"))return;i(this,Kh,"f").set(e.getChannelData(0),i(this,Hh,"f").getInput(i(this,Qh,"f"))/4);const r=t.getChannelData(0),s=i(this,Hh,"f").pipe(i(this,Qh,"f"),r.length)/4;s&&r.set(i(this,Kh,"f").subarray(s,s+r.length))}))}}Hh=new WeakMap,Jh=new WeakMap,Kh=new WeakMap,Qh=new WeakMap,Xh=new WeakMap,Yh=new WeakMap;var Zf,em,tm,rm,im,sm,nm,om,am,cm;class dm{constructor({context:e,noiseSuppressor:t}){Zf.set(this,void 0),em.set(this,void 0),tm.set(this,void 0),s(this,Zf,e,"f"),s(this,em,t,"f")}createNoiseSuppressionNode(){return r(this,void 0,void 0,(function*(){return/apple/i.test(navigator.vendor)?this.createScriptProcessorNode():this.createAudioWorkletNode()}))}stop(){var e;null===(e=i(this,tm,"f"))||void 0===e||e.update(!1)}createAudioWorkletNode(){return r(this,void 0,void 0,(function*(){return yield Xf.register(i(this,Zf,"f")),s(this,tm,new Xf({context:i(this,Zf,"f"),noiseSuppressor:i(this,em,"f")}),"f"),i(this,tm,"f")}))}createScriptProcessorNode(){return s(this,tm,new Yf({context:i(this,Zf,"f"),noiseSuppressor:i(this,em,"f")}),"f"),i(this,tm,"f").noiseSuppressionScriptProcessorNode}}Zf=new WeakMap,em=new WeakMap,tm=new WeakMap;class pm{constructor(e){rm.set(this,void 0),im.set(this,void 0),sm.set(this,void 0),nm.set(this,void 0),s(this,rm,e.noiseSuppressor,"f"),s(this,sm,new $e({namespace:"TrackProcessor",logLevel:e.logLevel}),"f")}get isProcessing(){return!!i(this,nm,"f")}processTrack(e){return r(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 Xf.register(t);const n=t.createMediaStreamSource(new MediaStream([e])),o=new dm({context:t,noiseSuppressor:i(this,rm,"f")}),a=yield o.createNoiseSuppressionNode();a.connect(r),n.connect(a);const[c]=r.stream.getTracks();return s(this,im,{audioContext:t,streamDestination:r,noiseSuppressionNode:a,noiseSuppressionProvider:o},"f"),s(this,nm,c,"f"),i(this,sm,"f").info("processTrack()",{track:e}),c}))}stopProcessing(){var e;return r(this,void 0,void 0,(function*(){if(this.isProcessing)if(i(this,im,"f"))try{i(this,im,"f").noiseSuppressionProvider.stop(),i(this,im,"f").noiseSuppressionNode.disconnect(),i(this,im,"f").streamDestination.disconnect(),yield i(this,im,"f").audioContext.close(),null===(e=i(this,nm,"f"))||void 0===e||e.stop(),s(this,nm,void 0,"f"),i(this,sm,"f").info("stopProcessing()",{success:!0})}catch(e){i(this,sm,"f").error("stopProcessing()",{success:!1,error:e})}else i(this,sm,"f").warn("stopProcessing()",{success:!1,description:"Processing context is not available"});else i(this,sm,"f").debug("stopProcessing()",{description:"Track is not processed"})}))}}rm=new WeakMap,im=new WeakMap,sm=new WeakMap,nm=new WeakMap;class lm extends dc{constructor(e){super(e),om.set(this,void 0),am.set(this,void 0),cm.set(this,void 0),e.noiseSuppressor&&s(this,om,new pm({noiseSuppressor:e.noiseSuppressor,logLevel:e.logLevel}),"f"),s(this,cm,new $e({namespace:"AudioTrack",logLevel:e.logLevel}),"f")}get isEffectsProcessing(){var e;return!!(null===(e=i(this,om,"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:Oa}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 r(this,void 0,void 0,(function*(){if(i(this,om,"f"))try{const t=yield null===(e=i(this,om,"f"))||void 0===e?void 0:e.processTrack(this.mediaStreamTrack);s(this,am,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 r(this,void 0,void 0,(function*(){try{if(!(null===(e=i(this,om,"f"))||void 0===e?void 0:e.isProcessing))return void i(this,cm,"f").debug("stopProcessing()",{description:"Track is not processed"});if(!i(this,am,"f"))return void this.logger.warn("disableNoiseSuppression()",{description:"Original track missing"});this.isPublished&&(yield this.replaceTrack(i(this,am,"f"))),yield null===(t=i(this,om,"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 r(this,void 0,void 0,(function*(){yield this.produce({encodings:this.getEncodings(),preferredCodec:this.getPreferredCodec(),codecOptions:this.getCodecOptions()}),this.clientEventEmitter.emit(q,this)}))}}om=new WeakMap,am=new WeakMap,cm=new WeakMap;class um{createAudioTrack(e){return new lm(e)}createVideoTrack(e){return new Ic(e)}}class hm{constructor(e){var t,r;const{observer:i,network:s,onLogMessage:o,onIssues:a,onNetworkScoresUpdated:c,logLevel:d,disableWid:p}=e;this._observer=null!=i?i:new n;const l=new Qf,u=new um;this.engine=new Nc({dependenciesFactory:l,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:o,onIssues:a,onNetworkScoresUpdated:c,disableWid:p})}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 r(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 r(this,void 0,void 0,(function*(){return this.engine.network.getTransportsStateInfo()}))}}export{hm as default};
|