@rongcloud/plugin-rtc 5.2.4 → 5.2.5

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.
Files changed (63) hide show
  1. package/dist/async-task-queue.d.ts +15 -0
  2. package/dist/core/PolarisReporter.d.ts +35 -0
  3. package/dist/core/RCAudienceClient.d.ts +72 -0
  4. package/dist/core/RCRTCClient.d.ts +208 -0
  5. package/dist/core/constants.d.ts +2 -0
  6. package/dist/core/enums/BackgroundPictureFillMode.d.ts +14 -0
  7. package/dist/core/enums/MixLayoutMode.d.ts +18 -0
  8. package/dist/core/enums/MixVideoRenderMode.d.ts +14 -0
  9. package/dist/core/enums/RCFrameRate.d.ts +7 -0
  10. package/dist/core/enums/RCInnerCDNBroadcast.d.ts +5 -0
  11. package/dist/core/enums/RCInnerCDNModel.d.ts +5 -0
  12. package/dist/core/enums/RCInnerCDNPullIsHttps.d.ts +5 -0
  13. package/dist/core/enums/RCInnerCDNPullKind.d.ts +6 -0
  14. package/dist/core/enums/RCInnerCDNPushMode.d.ts +5 -0
  15. package/dist/core/enums/RCKickType.d.ts +11 -0
  16. package/dist/core/enums/RCLivingType.d.ts +14 -0
  17. package/dist/core/enums/RCMediaType.d.ts +18 -0
  18. package/dist/core/enums/RCRTCCode.d.ts +89 -0
  19. package/dist/core/enums/RCRTCLiveRole.d.ts +14 -0
  20. package/dist/core/enums/RCRTCPingResult.d.ts +5 -0
  21. package/dist/core/enums/RCRTCResolution.d.ts +100 -0
  22. package/dist/core/enums/RCResolution.d.ts +16 -0
  23. package/dist/core/enums/inner/PolarisRole.d.ts +14 -0
  24. package/dist/core/enums/inner/R2Action.d.ts +14 -0
  25. package/dist/core/enums/inner/R2Status.d.ts +11 -0
  26. package/dist/core/enums/inner/RCRTCMessageType.d.ts +42 -0
  27. package/dist/core/enums/inner/RCStreamType.d.ts +14 -0
  28. package/dist/core/enums/inner/TrackState.d.ts +14 -0
  29. package/dist/core/interfaces.d.ts +673 -0
  30. package/dist/core/room/Pinger.d.ts +32 -0
  31. package/dist/core/room/RCAbstractRoom.d.ts +351 -0
  32. package/dist/core/room/RCAudienceLivingRoom.d.ts +305 -0
  33. package/dist/core/room/RCAudioLevelReport.d.ts +17 -0
  34. package/dist/core/room/RCLivingRoom.d.ts +93 -0
  35. package/dist/core/room/RCLocalMediaStream.d.ts +8 -0
  36. package/dist/core/room/RCMCUConfigBuilder.d.ts +163 -0
  37. package/dist/core/room/RCRTCRoom.d.ts +11 -0
  38. package/dist/core/service/RCMediaService.d.ts +96 -0
  39. package/dist/core/service/helper.d.ts +8 -0
  40. package/dist/core/service/index.d.ts +6 -0
  41. package/dist/core/service/interface.d.ts +311 -0
  42. package/dist/core/service/mcu-interface.d.ts +263 -0
  43. package/dist/core/tracks/RCLocalTrack.d.ts +108 -0
  44. package/dist/core/tracks/RCRemoteTrack.d.ts +23 -0
  45. package/dist/core/tracks/RCTrack.d.ts +80 -0
  46. package/dist/core/webrtc/ASdpStrategy.d.ts +43 -0
  47. package/dist/core/webrtc/PlanBStrategy.d.ts +25 -0
  48. package/dist/core/webrtc/RCRTCPeerConnection.d.ts +80 -0
  49. package/dist/core/webrtc/UnifiedPlanStrategy.d.ts +20 -0
  50. package/dist/core/webrtc/helper.d.ts +26 -0
  51. package/dist/core/webrtc/stat-parser/AbstractStatParser.d.ts +116 -0
  52. package/dist/core/webrtc/stat-parser/ChromeStatParser.d.ts +14 -0
  53. package/dist/core/webrtc/stat-parser/FirefoxStatParser.d.ts +14 -0
  54. package/dist/core/webrtc/stat-parser/IStatParser.d.ts +24 -0
  55. package/dist/core/webrtc/stat-parser/SafariStatParser.d.ts +14 -0
  56. package/dist/device.d.ts +6 -0
  57. package/dist/helper.d.ts +168 -0
  58. package/dist/index.d.ts +3 -3
  59. package/dist/index.esm.js +1 -1
  60. package/dist/index.js +1 -1
  61. package/dist/index.umd.js +1 -1
  62. package/dist/logger.d.ts +4 -0
  63. package/package.json +2 -2
package/dist/index.umd.js CHANGED
@@ -12,4 +12,4 @@
12
12
  LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
13
13
  OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
14
14
  PERFORMANCE OF THIS SOFTWARE.
15
- ***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}c((i=i.apply(e,t||[])).next())}))}const i=new t.Logger("RCRTC");var n,s;e.RCRTCCode=void 0,(n=e.RCRTCCode||(e.RCRTCCode={}))[n.SUCCESS=1e4]="SUCCESS",n[n.SIGNAL_DISCONNECTED=5e4]="SIGNAL_DISCONNECTED",n[n.PARAMS_ERROR=50001]="PARAMS_ERROR",n[n.REPERT_JOIN_ROOM=50002]="REPERT_JOIN_ROOM",n[n.NOT_IN_ROOM=50003]="NOT_IN_ROOM",n[n.SERVICE_INVALID=50004]="SERVICE_INVALID",n[n.RTC_TOKEN_INVALID=50006]="RTC_TOKEN_INVALID",n[n.SIGNAL_ERROR=53001]="SIGNAL_ERROR",n[n.CREATE_OFFER_FAILED=53003]="CREATE_OFFER_FAILED",n[n.REQUEST_FAILED=53004]="REQUEST_FAILED",n[n.MCU_SERVER_NOT_FOUND=53005]="MCU_SERVER_NOT_FOUND",n[n.BROADCAST_SUB_LIST_NOT_EMPTY=53007]="BROADCAST_SUB_LIST_NOT_EMPTY",n[n.ROOM_HAS_BEEN_DESTROYED=53008]="ROOM_HAS_BEEN_DESTROYED",n[n.NOT_OPEN_VIDEO_AUDIO_SERVER=53009]="NOT_OPEN_VIDEO_AUDIO_SERVER",n[n.GET_USER_MEDIA_FAILED=53010]="GET_USER_MEDIA_FAILED",n[n.GET_DISPLAY_MEDIA_FAILED=53011]="GET_DISPLAY_MEDIA_FAILED",n[n.PERMISSION_DENIED=53012]="PERMISSION_DENIED",n[n.CREATE_CUSTOM_TRACK_FAILED=53013]="CREATE_CUSTOM_TRACK_FAILED",n[n.INVALID_TAGS=53014]="INVALID_TAGS",n[n.INVALID_USER_ID=53015]="INVALID_USER_ID",n[n.CREATE_FILE_TRACK_FAILED=53016]="CREATE_FILE_TRACK_FAILED",n[n.INVALID_FILE_INSTANCE=53017]="INVALID_FILE_INSTANCE",n[n.SET_REMOTE_DESCRIPTION_FAILED=53018]="SET_REMOTE_DESCRIPTION_FAILED",n[n.BROWSER_NOT_SUPPORT=53019]="BROWSER_NOT_SUPPORT",n[n.TRACK_NOT_READY=53020]="TRACK_NOT_READY",n[n.VIDEO_TRACK_MISS_MEDIA_ELEMENT=53021]="VIDEO_TRACK_MISS_MEDIA_ELEMENT",n[n.TRACK_PLAY_ERROR=53022]="TRACK_PLAY_ERROR",n[n.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED=53023]="SIGNAL_AUDIENCE_JOIN_ROOM_FAILED",n[n.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED=53024]="SIGNAL_ROOM_CHANGE_IDENTITY_FAILED",n[n.PACKAGE_ENVIRONMENT_ERROR=53025]="PACKAGE_ENVIRONMENT_ERROR",n[n.PUBLISH_TRACK_LIMIT_EXCEEDED=53026]="PUBLISH_TRACK_LIMIT_EXCEEDED",n[n.CDN_RESOURCE_IS_EMPTY=53027]="CDN_RESOURCE_IS_EMPTY",n[n.SIGNAL_JOIN_RTC_ROOM_REFUSED=53028]="SIGNAL_JOIN_RTC_ROOM_REFUSED",n[n.NO_PERMISSION_TO_USE_REQUESTED_DEVICE=53029]="NO_PERMISSION_TO_USE_REQUESTED_DEVICE",function(e){e[e.JOIN_REFUSED=40032]="JOIN_REFUSED"}(s||(s={}));class o{constructor(){this.queue=[],this.locked=!1}checkToStart(){return r(this,void 0,void 0,(function*(){if(0===this.queue.length||this.locked)return;this.locked=!0;const{resolve:e,task:t,reject:r}=this.queue.shift();let i;try{i=yield t(),e(i)}catch(e){r(e)}this.locked=!1,this.checkToStart()}))}push(e){const t=new Promise(((t,r)=>{this.queue.push({resolve:t,task:e,reject:r})}));return this.checkToStart(),t}}const a=new o,c=e=>a.push(e);let d=!0,u=!0;function l(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function h(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const s=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function p(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(d=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function m(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(u=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function _(){if("object"==typeof window){if(d)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function C(e,t){u&&console.warn(e+" is deprecated, please use "+t+" instead.")}function R(e){return"[object Object]"===Object.prototype.toString.call(e)}function f(e){return R(e)?Object.keys(e).reduce((function(t,r){const i=R(e[r]),n=i?f(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function v(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?v(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{v(e,e.get(t),r)}))})))}function T(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&v(e,r,n)}))})),n}const g=_;function S(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let o=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&r.length&&t.includes("back")&&(o=r[r.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=i(e.video),g("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return g("chrome: "+JSON.stringify(e)),n(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function y(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function E(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else h(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function I(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function k(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function b(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function P(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function O(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return P(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}function o(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");const n=this.getSenders().find((e=>e.track===t));if(n)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const s=this._streams[r.id];if(s)s.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=o(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function L(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function D(e,t){h(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var N=Object.freeze({__proto__:null,shimMediaStream:y,shimOnTrack:E,shimGetSendersWithDtmf:I,shimGetStats:k,shimSenderReceiverGetStats:b,shimAddTrackRemoveTrackWithNative:P,shimAddTrackRemoveTrack:O,shimPeerConnection:L,fixNegotiationNeeded:D,shimGetUserMedia:S,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});var A=function(e){var t={exports:{}};return e(t,t.exports),t.exports}((function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},t.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},t.getDescription=function(e){var r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){var r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((function(e){return 0===e.indexOf(r)}))},t.parseCandidate=function(e){for(var t,r={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},i=8;i<t.length;i+=2)switch(t[i]){case"raddr":r.relatedAddress=t[i+1];break;case"rport":r.relatedPort=parseInt(t[i+1],10);break;case"tcptype":r.tcpType=t[i+1];break;case"ufrag":r.ufrag=t[i+1],r.usernameFragment=t[i+1];break;default:r[t[i]]=t[i+1]}return r},t.writeCandidate=function(e){var t=[];t.push(e.foundation),t.push(e.component),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);var r=e.type;return t.push("typ"),t.push(r),"host"!==r&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substr(14).split(" ")},t.parseRtpMap=function(e){var t=e.substr(9).split(" "),r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){var t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){for(var t,r={},i=e.substr(e.indexOf(" ")+1).split(";"),n=0;n<i.length;n++)r[(t=i[n].trim().split("="))[0].trim()]=t[1];return r},t.writeFmtp=function(e){var t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var i=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){var t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((function(e){t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){var t=e.indexOf(" "),r={ssrc:parseInt(e.substr(7,t-7),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substr(t+1,i-t-1),r.value=e.substr(i+1)):r.attribute=e.substr(t+1),r},t.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},t.getMid=function(e){var r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substr(6)},t.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){var r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){var i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substr(12),password:n.substr(10)}:null},t.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},t.parseRtpParameters=function(e){for(var r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" "),n=3;n<i.length;n++){var s=i[n],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){var a=t.parseRtpMap(o),c=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(a.parameters=c.length?t.parseFmtp(c[0]):{},a.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(a),a.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(a.name.toUpperCase())}}}return t.matchPrefix(e,"a=extmap:").forEach((function(e){r.headerExtensions.push(t.parseExtmap(e))})),r},t.writeRtpDescription=function(e,r){var i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" UDP/TLS/RTP/SAVPF ",i+=r.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((function(e){i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));var n=0;return r.codecs.forEach((function(e){e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),i+="a=rtcp-mux\r\n",r.headerExtensions&&r.headerExtensions.forEach((function(e){i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){var r,i=[],n=t.parseRtpParameters(e),s=-1!==n.fecMechanisms.indexOf("RED"),o=-1!==n.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=a.length>0&&a[0].ssrc,d=t.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));d.length>0&&d[0].length>1&&d[0][0]===c&&(r=d[0][1]),n.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&r&&(t.rtx={ssrc:r}),i.push(t),s&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:o?"red+ulpfec":"red"},i.push(t))}})),0===i.length&&c&&i.push({ssrc:c});var u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,i.forEach((function(e){e.maxBitrate=u}))),i},t.parseRtcpParameters=function(e){var r={},i=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);var n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;var s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.parseMsid=function(e){var r,i=t.matchPrefix(e,"a=msid:");if(1===i.length)return{stream:(r=i[0].substr(7).split(" "))[0],track:r[1]};var n=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return n.length>0?{stream:(r=n[0].value.split(" "))[0],track:r[1]}:void 0},t.parseSctpDescription=function(e){var r,i=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");n.length>0&&(r=parseInt(n[0].substr(19),10)),isNaN(r)&&(r=65536);var s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substr(12),10),protocol:i.fmt,maxMessageSize:r};if(t.matchPrefix(e,"a=sctpmap:").length>0){var o=t.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(o[0],10),protocol:o[1],maxMessageSize:r}}},t.writeSctpDescription=function(e,t){var r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,r,i){var n=void 0!==r?r:2;return"v=0\r\no="+(i||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.writeMediaSection=function(e,r,i,n){var s=t.writeRtpDescription(e.kind,r);if(s+=t.writeIceParameters(e.iceGatherer.getLocalParameters()),s+=t.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===i?"actpass":"active"),s+="a=mid:"+e.mid+"\r\n",e.direction?s+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?s+="a=sendrecv\r\n":e.rtpSender?s+="a=sendonly\r\n":e.rtpReceiver?s+="a=recvonly\r\n":s+="a=inactive\r\n",e.rtpSender){var o="msid:"+n.id+" "+e.rtpSender.track.id+"\r\n";s+="a="+o,s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+o,e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+o,s+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+t.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+t.localCName+"\r\n"),s},t.getDirection=function(e,r){for(var i=t.splitLines(e),n=0;n<i.length;n++)switch(i[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[n].substr(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substr(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){var r=t.splitLines(e)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){var r=t.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var r=t.splitLines(e),i=0;i<r.length;i++)if(r[i].length<2||"="!==r[i].charAt(1))return!1;return!0},e.exports=t}));function M(e,t,r,i,n){var s=A.writeRtpDescription(e.kind,t);if(s+=A.writeIceParameters(e.iceGatherer.getLocalParameters()),s+=A.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===r?"actpass":n||"active"),s+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?s+="a=sendrecv\r\n":e.rtpSender?s+="a=sendonly\r\n":e.rtpReceiver?s+="a=recvonly\r\n":s+="a=inactive\r\n",e.rtpSender){var o=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=o;var a="msid:"+(i?i.id:"-")+" "+o+"\r\n";s+="a="+a,s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,s+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+A.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+A.localCName+"\r\n"),s}function x(e,t){var r={codecs:[],headerExtensions:[],fecMechanisms:[]},i=function(e,t){e=parseInt(e,10);for(var r=0;r<t.length;r++)if(t[r].payloadType===e||t[r].preferredPayloadType===e)return t[r]},n=function(e,t,r,n){var s=i(e.parameters.apt,r),o=i(t.parameters.apt,n);return s&&o&&s.name.toLowerCase()===o.name.toLowerCase()};return e.codecs.forEach((function(i){for(var s=0;s<t.codecs.length;s++){var o=t.codecs[s];if(i.name.toLowerCase()===o.name.toLowerCase()&&i.clockRate===o.clockRate){if("rtx"===i.name.toLowerCase()&&i.parameters&&o.parameters.apt&&!n(i,o,e.codecs,t.codecs))continue;(o=JSON.parse(JSON.stringify(o))).numChannels=Math.min(i.numChannels,o.numChannels),r.codecs.push(o),o.rtcpFeedback=o.rtcpFeedback.filter((function(e){for(var t=0;t<i.rtcpFeedback.length;t++)if(i.rtcpFeedback[t].type===e.type&&i.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var i=0;i<t.headerExtensions.length;i++){var n=t.headerExtensions[i];if(e.uri===n.uri){r.headerExtensions.push(n);break}}})),r}function w(e,t,r){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(r)}function U(e,t){var r=e.getRemoteCandidates().find((function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type}));return r||e.addRemoteCandidate(t),!r}function $(e,t){var r=new Error(t);return r.name=e,r.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],r}var j=function(e,t){function r(t,r){r.addTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function i(t,r,i,n){var s=new Event("track");s.track=r,s.receiver=i,s.transceiver={receiver:i},s.streams=n,e.setTimeout((function(){t._dispatchEvent("track",s)}))}var n=function(r){var i=this,n=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=n[e].bind(n)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",r=JSON.parse(JSON.stringify(r||{})),this.usingBundle="max-bundle"===r.bundlePolicy,"negotiate"===r.rtcpMuxPolicy)throw $("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(r.rtcpMuxPolicy||(r.rtcpMuxPolicy="require"),r.iceTransportPolicy){case"all":case"relay":break;default:r.iceTransportPolicy="all"}switch(r.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:r.bundlePolicy="balanced"}if(r.iceServers=function(e,t){var r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var n="string"==typeof i;return n&&(i=[i]),i=i.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||r?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(r=!0,!0)})),delete e.url,e.urls=n?i[0]:i,!!i.length}}))}(r.iceServers||[],t),this._iceGatherers=[],r.iceCandidatePoolSize)for(var s=r.iceCandidatePoolSize;s>0;s--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=A.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(n.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(n.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),n.prototype.onicecandidate=null,n.prototype.onaddstream=null,n.prototype.ontrack=null,n.prototype.onremovestream=null,n.prototype.onsignalingstatechange=null,n.prototype.oniceconnectionstatechange=null,n.prototype.onconnectionstatechange=null,n.prototype.onicegatheringstatechange=null,n.prototype.onnegotiationneeded=null,n.prototype.ondatachannel=null,n.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},n.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},n.prototype.getConfiguration=function(){return this._config},n.prototype.getLocalStreams=function(){return this.localStreams},n.prototype.getRemoteStreams=function(){return this.remoteStreams},n.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0,i={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&r)i.iceTransport=this.transceivers[0].iceTransport,i.dtlsTransport=this.transceivers[0].dtlsTransport;else{var n=this._createIceAndDtlsTransports();i.iceTransport=n.iceTransport,i.dtlsTransport=n.dtlsTransport}return t||this.transceivers.push(i),i},n.prototype.addTrack=function(t,r){if(this._isClosed)throw $("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var i;if(this.transceivers.find((function(e){return e.track===t})))throw $("InvalidAccessError","Track already exists.");for(var n=0;n<this.transceivers.length;n++)this.transceivers[n].track||this.transceivers[n].kind!==t.kind||(i=this.transceivers[n]);return i||(i=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(r)&&this.localStreams.push(r),i.track=t,i.stream=r,i.rtpSender=new e.RTCRtpSender(t,i.dtlsTransport),i.rtpSender},n.prototype.addStream=function(e){var r=this;if(t>=15025)e.getTracks().forEach((function(t){r.addTrack(t,e)}));else{var i=e.clone();e.getTracks().forEach((function(e,t){var r=i.getTracks()[t];e.addEventListener("enabled",(function(e){r.enabled=e.enabled}))})),i.getTracks().forEach((function(e){r.addTrack(e,i)}))}},n.prototype.removeTrack=function(t){if(this._isClosed)throw $("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var r=this.transceivers.find((function(e){return e.rtpSender===t}));if(!r)throw $("InvalidAccessError","Sender was not created by this connection.");var i=r.stream;r.rtpSender.stop(),r.rtpSender=null,r.track=null,r.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(i)&&this.localStreams.indexOf(i)>-1&&this.localStreams.splice(this.localStreams.indexOf(i),1),this._maybeFireNegotiationNeeded()},n.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var r=t.getSenders().find((function(t){return t.track===e}));r&&t.removeTrack(r)}))},n.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},n.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},n.prototype._createIceGatherer=function(t,r){var i=this;if(r&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var n=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(n,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var r=!e.candidate||0===Object.keys(e.candidate).length;n.state=r?"completed":"gathering",null!==i.transceivers[t].bufferedCandidateEvents&&i.transceivers[t].bufferedCandidateEvents.push(e)},n.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),n},n.prototype._gather=function(t,r){var i=this,n=this.transceivers[r].iceGatherer;if(!n.onlocalcandidate){var s=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,n.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates),n.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var s=new Event("icecandidate");s.candidate={sdpMid:t,sdpMLineIndex:r};var o=e.candidate,a=!o||0===Object.keys(o).length;if(a)"new"!==n.state&&"gathering"!==n.state||(n.state="completed");else{"new"===n.state&&(n.state="gathering"),o.component=1,o.ufrag=n.getLocalParameters().usernameFragment;var c=A.writeCandidate(o);s.candidate=Object.assign(s.candidate,A.parseCandidate(c)),s.candidate.candidate=c,s.candidate.toJSON=function(){return{candidate:s.candidate.candidate,sdpMid:s.candidate.sdpMid,sdpMLineIndex:s.candidate.sdpMLineIndex,usernameFragment:s.candidate.usernameFragment}}}var d=A.getMediaSections(i._localDescription.sdp);d[s.candidate.sdpMLineIndex]+=a?"a=end-of-candidates\r\n":"a="+s.candidate.candidate+"\r\n",i._localDescription.sdp=A.getDescription(i._localDescription.sdp)+d.join("");var u=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),a||i._dispatchEvent("icecandidate",s),u&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){s.forEach((function(e){n.onlocalcandidate(e)}))}),0)}},n.prototype._createIceAndDtlsTransports=function(){var t=this,r=new e.RTCIceTransport(null);r.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var i=new e.RTCDtlsTransport(r);return i.ondtlsstatechange=function(){t._updateConnectionState()},i.onerror=function(){Object.defineProperty(i,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:r,dtlsTransport:i}},n.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var r=this.transceivers[e].iceTransport;r&&(delete r.onicestatechange,delete this.transceivers[e].iceTransport);var i=this.transceivers[e].dtlsTransport;i&&(delete i.ondtlsstatechange,delete i.onerror,delete this.transceivers[e].dtlsTransport)},n.prototype._transceive=function(e,r,i){var n=x(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(n.encodings=e.sendEncodingParameters,n.rtcp={cname:A.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(n.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(n)),i&&e.rtpReceiver&&n.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?n.encodings=e.recvEncodingParameters:n.encodings=[{}],n.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(n.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(n.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(n))},n.prototype.setLocalDescription=function(e){var t,r,i=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject($("TypeError",'Unsupported type "'+e.type+'"'));if(!w("setLocalDescription",e.type,i.signalingState)||i._isClosed)return Promise.reject($("InvalidStateError","Can not set local "+e.type+" in state "+i.signalingState));if("offer"===e.type)t=A.splitSections(e.sdp),r=t.shift(),t.forEach((function(e,t){var r=A.parseRtpParameters(e);i.transceivers[t].localCapabilities=r})),i.transceivers.forEach((function(e,t){i._gather(e.mid,t)}));else if("answer"===e.type){t=A.splitSections(i._remoteDescription.sdp),r=t.shift();var n=A.matchPrefix(r,"a=ice-lite").length>0;t.forEach((function(e,t){var s=i.transceivers[t],o=s.iceGatherer,a=s.iceTransport,c=s.dtlsTransport,d=s.localCapabilities,u=s.remoteCapabilities;if(!(A.isRejected(e)&&0===A.matchPrefix(e,"a=bundle-only").length)&&!s.rejected){var l=A.getIceParameters(e,r),h=A.getDtlsParameters(e,r);n&&(h.role="server"),i.usingBundle&&0!==t||(i._gather(s.mid,t),"new"===a.state&&a.start(o,l,n?"controlling":"controlled"),"new"===c.state&&c.start(h));var p=x(d,u);i._transceive(s,p.codecs.length>0,!1)}}))}return i._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?i._updateSignalingState("have-local-offer"):i._updateSignalingState("stable"),Promise.resolve()},n.prototype.setRemoteDescription=function(n){var s=this;if(-1===["offer","answer"].indexOf(n.type))return Promise.reject($("TypeError",'Unsupported type "'+n.type+'"'));if(!w("setRemoteDescription",n.type,s.signalingState)||s._isClosed)return Promise.reject($("InvalidStateError","Can not set remote "+n.type+" in state "+s.signalingState));var o={};s.remoteStreams.forEach((function(e){o[e.id]=e}));var a=[],c=A.splitSections(n.sdp),d=c.shift(),u=A.matchPrefix(d,"a=ice-lite").length>0,l=A.matchPrefix(d,"a=group:BUNDLE ").length>0;s.usingBundle=l;var h=A.matchPrefix(d,"a=ice-options:")[0];return s.canTrickleIceCandidates=!!h&&h.substr(14).split(" ").indexOf("trickle")>=0,c.forEach((function(i,c){var h=A.splitLines(i),p=A.getKind(i),m=A.isRejected(i)&&0===A.matchPrefix(i,"a=bundle-only").length,_=h[0].substr(2).split(" ")[2],C=A.getDirection(i,d),R=A.parseMsid(i),f=A.getMid(i)||A.generateIdentifier();if(m||"application"===p&&("DTLS/SCTP"===_||"UDP/DTLS/SCTP"===_))s.transceivers[c]={mid:f,kind:p,protocol:_,rejected:!0};else{var v,T,g,S,y,E,I,k,b;!m&&s.transceivers[c]&&s.transceivers[c].rejected&&(s.transceivers[c]=s._createTransceiver(p,!0));var P,O,L=A.parseRtpParameters(i);m||(P=A.getIceParameters(i,d),(O=A.getDtlsParameters(i,d)).role="client"),I=A.parseRtpEncodingParameters(i);var D=A.parseRtcpParameters(i),N=A.matchPrefix(i,"a=end-of-candidates",d).length>0,M=A.matchPrefix(i,"a=candidate:").map((function(e){return A.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===n.type||"answer"===n.type)&&!m&&l&&c>0&&s.transceivers[c]&&(s._disposeIceAndDtlsTransports(c),s.transceivers[c].iceGatherer=s.transceivers[0].iceGatherer,s.transceivers[c].iceTransport=s.transceivers[0].iceTransport,s.transceivers[c].dtlsTransport=s.transceivers[0].dtlsTransport,s.transceivers[c].rtpSender&&s.transceivers[c].rtpSender.setTransport(s.transceivers[0].dtlsTransport),s.transceivers[c].rtpReceiver&&s.transceivers[c].rtpReceiver.setTransport(s.transceivers[0].dtlsTransport)),"offer"!==n.type||m){if("answer"===n.type&&!m){T=(v=s.transceivers[c]).iceGatherer,g=v.iceTransport,S=v.dtlsTransport,y=v.rtpReceiver,E=v.sendEncodingParameters,k=v.localCapabilities,s.transceivers[c].recvEncodingParameters=I,s.transceivers[c].remoteCapabilities=L,s.transceivers[c].rtcpParameters=D,M.length&&"new"===g.state&&(!u&&!N||l&&0!==c?M.forEach((function(e){U(v.iceTransport,e)})):g.setRemoteCandidates(M)),l&&0!==c||("new"===g.state&&g.start(T,P,"controlling"),"new"===S.state&&S.start(O)),!x(v.localCapabilities,v.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&v.sendEncodingParameters[0].rtx&&delete v.sendEncodingParameters[0].rtx,s._transceive(v,"sendrecv"===C||"recvonly"===C,"sendrecv"===C||"sendonly"===C),!y||"sendrecv"!==C&&"sendonly"!==C?delete v.rtpReceiver:(b=y.track,R?(o[R.stream]||(o[R.stream]=new e.MediaStream),r(b,o[R.stream]),a.push([b,y,o[R.stream]])):(o.default||(o.default=new e.MediaStream),r(b,o.default),a.push([b,y,o.default])))}}else{(v=s.transceivers[c]||s._createTransceiver(p)).mid=f,v.iceGatherer||(v.iceGatherer=s._createIceGatherer(c,l)),M.length&&"new"===v.iceTransport.state&&(!N||l&&0!==c?M.forEach((function(e){U(v.iceTransport,e)})):v.iceTransport.setRemoteCandidates(M)),k=e.RTCRtpReceiver.getCapabilities(p),t<15019&&(k.codecs=k.codecs.filter((function(e){return"rtx"!==e.name}))),E=v.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var w,$=!1;if("sendrecv"===C||"sendonly"===C){if($=!v.rtpReceiver,y=v.rtpReceiver||new e.RTCRtpReceiver(v.dtlsTransport,p),$)b=y.track,R&&"-"===R.stream||(R?(o[R.stream]||(o[R.stream]=new e.MediaStream,Object.defineProperty(o[R.stream],"id",{get:function(){return R.stream}})),Object.defineProperty(b,"id",{get:function(){return R.track}}),w=o[R.stream]):(o.default||(o.default=new e.MediaStream),w=o.default)),w&&(r(b,w),v.associatedRemoteMediaStreams.push(w)),a.push([b,y,w])}else v.rtpReceiver&&v.rtpReceiver.track&&(v.associatedRemoteMediaStreams.forEach((function(t){var r=t.getTracks().find((function(e){return e.id===v.rtpReceiver.track.id}));r&&function(t,r){r.removeTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(r,t)})),v.associatedRemoteMediaStreams=[]);v.localCapabilities=k,v.remoteCapabilities=L,v.rtpReceiver=y,v.rtcpParameters=D,v.sendEncodingParameters=E,v.recvEncodingParameters=I,s._transceive(s.transceivers[c],!1,$)}}})),void 0===s._dtlsRole&&(s._dtlsRole="offer"===n.type?"active":"passive"),s._remoteDescription={type:n.type,sdp:n.sdp},"offer"===n.type?s._updateSignalingState("have-remote-offer"):s._updateSignalingState("stable"),Object.keys(o).forEach((function(t){var r=o[t];if(r.getTracks().length){if(-1===s.remoteStreams.indexOf(r)){s.remoteStreams.push(r);var n=new Event("addstream");n.stream=r,e.setTimeout((function(){s._dispatchEvent("addstream",n)}))}a.forEach((function(e){var t=e[0],n=e[1];r.id===e[2].id&&i(s,t,n,[r])}))}})),a.forEach((function(e){e[2]||i(s,e[0],e[1],[])})),e.setTimeout((function(){s&&s.transceivers&&s.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},n.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},n.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},n.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},n.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}},n.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}},n.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createOffer after close"));var i=r.transceivers.filter((function(e){return"audio"===e.kind})).length,n=r.transceivers.filter((function(e){return"video"===e.kind})).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(i=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(n=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(r.transceivers.forEach((function(e){"audio"===e.kind?--i<0&&(e.wantReceive=!1):"video"===e.kind&&--n<0&&(e.wantReceive=!1)}));i>0||n>0;)i>0&&(r._createTransceiver("audio"),i--),n>0&&(r._createTransceiver("video"),n--);var o=A.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach((function(i,n){var s=i.track,o=i.kind,a=i.mid||A.generateIdentifier();i.mid=a,i.iceGatherer||(i.iceGatherer=r._createIceGatherer(n,r.usingBundle));var c=e.RTCRtpSender.getCapabilities(o);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),c.headerExtensions.forEach((function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=i.sendEncodingParameters||[{ssrc:1001*(2*n+1)}];s&&t>=15019&&"video"===o&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,o)),i.localCapabilities=c,i.sendEncodingParameters=d})),"max-compat"!==r._config.bundlePolicy&&(o+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),o+="a=ice-options:trickle\r\n",r.transceivers.forEach((function(e,t){o+=M(e,e.localCapabilities,"offer",e.stream,r._dtlsRole),o+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===r.iceGatheringState||0!==t&&r.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,o+="a="+A.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(o+="a=end-of-candidates\r\n"))}));var a=new e.RTCSessionDescription({type:"offer",sdp:o});return Promise.resolve(a)},n.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==r.signalingState&&"have-local-pranswer"!==r.signalingState)return Promise.reject($("InvalidStateError","Can not call createAnswer in signalingState "+r.signalingState));var i=A.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(i+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),i+="a=ice-options:trickle\r\n";var n=A.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach((function(e,s){if(!(s+1>n)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?i+="m=application 0 DTLS/SCTP 5000\r\n":i+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?i+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(i+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(i+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var o;if(e.stream)"audio"===e.kind?o=e.stream.getAudioTracks()[0]:"video"===e.kind&&(o=e.stream.getVideoTracks()[0]),o&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var a=x(e.localCapabilities,e.remoteCapabilities);!a.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,i+=M(e,a,"answer",e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(i+="a=rtcp-rsize\r\n")}}));var s=new e.RTCSessionDescription({type:"answer",sdp:i});return Promise.resolve(s)},n.prototype.addIceCandidate=function(e){var t,r=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(i,n){if(!r._remoteDescription)return n($("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var s=e.sdpMLineIndex;if(e.sdpMid)for(var o=0;o<r.transceivers.length;o++)if(r.transceivers[o].mid===e.sdpMid){s=o;break}var a=r.transceivers[s];if(!a)return n($("OperationError","Can not add ICE candidate"));if(a.rejected)return i();var c=Object.keys(e.candidate).length>0?A.parseCandidate(e.candidate):{};if("tcp"===c.protocol&&(0===c.port||9===c.port))return i();if(c.component&&1!==c.component)return i();if((0===s||s>0&&a.iceTransport!==r.transceivers[0].iceTransport)&&!U(a.iceTransport,c))return n($("OperationError","Can not add ICE candidate"));var d=e.candidate.trim();0===d.indexOf("a=")&&(d=d.substr(2)),(t=A.getMediaSections(r._remoteDescription.sdp))[s]+="a="+(c.type?d:"end-of-candidates")+"\r\n",r._remoteDescription.sdp=A.getDescription(r._remoteDescription.sdp)+t.join("")}else for(var u=0;u<r.transceivers.length&&(r.transceivers[u].rejected||(r.transceivers[u].iceTransport.addRemoteCandidate({}),(t=A.getMediaSections(r._remoteDescription.sdp))[u]+="a=end-of-candidates\r\n",r._remoteDescription.sdp=A.getDescription(r._remoteDescription.sdp)+t.join(""),!r.usingBundle));u++);i()}))},n.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var r=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===t?r=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(r=e.rtpReceiver)})),!r)throw $("InvalidAccessError","Invalid selector.");return r.getStats()}var i=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&i.push(e[t].getStats())}))})),Promise.all(i).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var r=e[t];if(r&&r.prototype&&r.prototype.getStats){var i=r.prototype.getStats;r.prototype.getStats=function(){return i.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(r){var i;e[r].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(i=e[r]).type]||i.type,t.set(r,e[r])})),t}))}}}));var s=["createOffer","createAnswer"];return s.forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(s=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),n};function V(e){const t=e&&e.navigator,r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return r(e).catch((e=>Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e))))}}function B(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}function F(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){const t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set(e){t.set.call(this,e);const r=new Event("enabled");r.enabled=e,this.dispatchEvent(r)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);const r=j(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=function(e,t){let r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&C("RTCIceServer.url","RTCIceServer.urls");const i="string"==typeof t;return i&&(t=[t]),t=t.filter((e=>{if(0===e.indexOf("stun:"))return!1;const t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!r?(r=!0,!0):t&&!r})),delete e.url,e.urls=i?t[0]:t,!!t.length}}))}(e.iceServers,t.version),_("ICE servers after filtering:",e.iceServers)),new r(e)},e.RTCPeerConnection.prototype=r.prototype}function H(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}var G=Object.freeze({__proto__:null,shimPeerConnection:F,shimReplaceTrack:H,shimGetUserMedia:V,shimGetDisplayMedia:B});function J(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){C("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function W(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Y(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,s]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,s)}}function K(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function q(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function z(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){C("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Q(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function X(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],r=e&&"sendEncodings"in e;r&&e.sendEncodings.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function Z(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function ee(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function te(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var re=Object.freeze({__proto__:null,shimOnTrack:W,shimPeerConnection:Y,shimSenderGetStats:K,shimReceiverGetStats:q,shimRemoveStream:z,shimRTCDataChannel:Q,shimAddTransceiver:X,shimGetParameters:Z,shimCreateOffer:ee,shimCreateAnswer:te,shimGetUserMedia:J,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})}});function ie(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function ne(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function se(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let a=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=a,a=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=a,a=function(e,t,r){const i=o.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=a}function oe(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(ae(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function ae(e){return e&&void 0!==e.video?Object.assign({},e,{video:f(e.video)}):e}function ce(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];!i.hasOwnProperty("urls")&&i.hasOwnProperty("url")?(C("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function de(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ue(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video")}return t.apply(this,arguments)}}function le(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var he=Object.freeze({__proto__:null,shimLocalStreamsAPI:ie,shimRemoteStreamsAPI:ne,shimCallbacksAPI:se,shimGetUserMedia:oe,shimConstraints:ae,shimRTCIceServerUrls:ce,shimTrackEventTransceiver:de,shimCreateOfferLegacy:ue,shimAudioContext:le});function pe(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){const r=new t(e),i=A.parseCandidate(e.candidate),n=Object.assign(r,i);return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,h(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function me(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=function(e){if(!e||!e.sdp)return!1;const t=A.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=A.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},i=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r},n=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r},s=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=A.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substr(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i},o=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(r(arguments[0])){const e=i(arguments[0]),t=n(e),r=s(arguments[0],e);let o;o=0===t&&0===r?Number.POSITIVE_INFINITY:0===t||0===r?Math.max(t,r):Math.min(t,r);const a={};Object.defineProperty(a,"maxMessageSize",{get:()=>o}),this._sctp=a}return o.apply(this,arguments)}}function _e(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},h(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Ce(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function Re(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function fe(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}var ve=Object.freeze({__proto__:null,shimRTCIceCandidate:pe,shimMaxMessageSize:me,shimSendThrowTypeError:_e,shimConnectionState:Ce,removeExtmapAllowMixed:Re,shimAddIceCandidateNullOrEmpty:fe});const Te=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const r=_,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=l(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=l(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.mediaDevices&&r.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=l(r.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=l(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:ve,extractVersion:l,disableLog:p,disableWarnings:m};switch(i.browser){case"chrome":if(!N||!L||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=N,fe(e,i),S(e,i),y(e),L(e,i),E(e),O(e,i),I(e),k(e),b(e),D(e,i),pe(e),Ce(e),me(e,i),_e(e),Re(e,i);break;case"firefox":if(!re||!Y||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=re,fe(e,i),J(e,i),Y(e,i),W(e),z(e),K(e),q(e),Q(e),X(e),Z(e),ee(e),te(e),pe(e),Ce(e),me(e,i),_e(e);break;case"edge":if(!G||!F||!t.shimEdge)return r("MS edge shim is not included in this adapter release."),n;r("adapter.js shimming edge."),n.browserShim=G,V(e),B(e),F(e,i),H(e),me(e,i),_e(e);break;case"safari":if(!he||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=he,fe(e,i),ce(e),ue(e),se(e),ie(e),ne(e),de(e),oe(e),le(e),pe(e),me(e,i),_e(e),Re(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});var ge,Se,ye;e.RCFrameRate=void 0,(ge=e.RCFrameRate||(e.RCFrameRate={})).FPS_10="FPS_10",ge.FPS_15="FPS_15",ge.FPS_24="FPS_24",ge.FPS_30="FPS_30",e.RCResolution=void 0,(Se=e.RCResolution||(e.RCResolution={})).W176_H132="W176_H132",Se.W176_H144="W176_H144",Se.W256_H144="W256_H144",Se.W320_H180="W320_H180",Se.W240_H240="W240_H240",Se.W320_H240="W320_H240",Se.W480_H360="W480_H360",Se.W640_H360="W640_H360",Se.W480_H480="W480_H480",Se.W640_H480="W640_H480",Se.W720_H480="W720_H480",Se.W1280_H720="W1280_H720",Se.W1920_H1080="W1920_H1080",e.RCMediaType=void 0,(ye=e.RCMediaType||(e.RCMediaType={}))[ye.AUDIO_ONLY=0]="AUDIO_ONLY",ye[ye.VIDEO_ONLY=1]="VIDEO_ONLY",ye[ye.AUDIO_VIDEO=2]="AUDIO_VIDEO";const Ee={[e.RCResolution.W176_H132]:{width:176,height:132,maxBitrate:150,minBitrate:80},[e.RCResolution.W176_H144]:{width:176,height:144,maxBitrate:160,minBitrate:80},[e.RCResolution.W256_H144]:{width:256,height:144,maxBitrate:240,minBitrate:120},[e.RCResolution.W320_H180]:{width:320,height:180,maxBitrate:280,minBitrate:120},[e.RCResolution.W240_H240]:{width:240,height:240,maxBitrate:280,minBitrate:120},[e.RCResolution.W320_H240]:{width:320,height:240,maxBitrate:400,minBitrate:120},[e.RCResolution.W480_H360]:{width:480,height:360,maxBitrate:650,minBitrate:150},[e.RCResolution.W640_H360]:{width:640,height:360,maxBitrate:800,minBitrate:180},[e.RCResolution.W480_H480]:{width:480,height:480,maxBitrate:800,minBitrate:180},[e.RCResolution.W640_H480]:{width:640,height:480,maxBitrate:900,minBitrate:200},[e.RCResolution.W720_H480]:{width:720,height:480,maxBitrate:1e3,minBitrate:200},[e.RCResolution.W1280_H720]:{width:1280,height:720,maxBitrate:2200,minBitrate:250},[e.RCResolution.W1920_H1080]:{width:1920,height:1080,maxBitrate:4e3,minBitrate:400}},Ie=(e,t)=>{const r=e*t;let i=Number.MAX_VALUE,n=null;for(const e in Ee){const t=Ee[e],s=Math.abs(t.width*t.height-r);s<i&&(n=t,i=s)}return n},ke={10:1,15:1,24:1.5,30:1.5},be=e=>{let t=Number.MAX_VALUE,r=1;for(const i in ke){const n=Math.abs(e-parseInt(i));n<t&&(t=n,r=ke[i])}return r},Pe={getCameras:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"videoinput"===e.kind))})),getMicrophones:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audioinput"===e.kind))})),getSpeakers:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audiooutput"===e.kind))}))};class Oe extends t.EventEmitter{constructor(e,t,r,i,n){super(),this._tag=e,this._userId=t,this._kind=r,this._isLocalTrack=i,this._roomId=n,this._localMuted=!1,this._remoteMuted=!1,this._streamId=[this._userId||this._roomId,this._tag].join("_"),this._id=[this._streamId,this.isAudioTrack()?0:1].join("_")}getStreamId(){return this._streamId}getTrackId(){return this._id}getUserId(){return this._userId}__innerGetMediaStreamTrack(){return this._msTrack}getTag(){return this._tag}isLocalTrack(){return this._isLocalTrack}isVideoTrack(){return"video"===this._kind}isAudioTrack(){return"audio"===this._kind}isReady(){var e;return"live"===(null===(e=this._msTrack)||void 0===e?void 0:e.readyState)}__innerSetMediaStreamTrack(e){this._msTrack=e,this._setLocalMuted(this._localMuted);const t=this._msStream=this._msStream||new MediaStream,r=t.getTracks()[0];r&&t.removeTrack(r),e?t.addTrack(e):this._element&&(this._element.pause(),this._element.srcObject=null)}_setLocalMuted(e){this._msTrack&&(this._msTrack.enabled=!e),this._localMuted=e}mute(){i.info(`set ${this._id} enabled: false`),this._setLocalMuted(!0)}unmute(){i.info(`set ${this._id} enabled: true`),this._setLocalMuted(!1)}isLocalMuted(){return this._localMuted}isMCUTrack(){return Boolean(this._roomId)}isOwnerMuted(){return this._remoteMuted}play(n,s){return r(this,void 0,void 0,(function*(){if(!this._msTrack)return i.warn(`the track is not ready to play -> id: ${this._id}`),{code:e.RCRTCCode.TRACK_NOT_READY};if("ended"===this._msTrack.readyState&&i.warn(`the track's readyState is 'ended' -> id: ${this._id}`),null==s?void 0:s.volume){if(!t.isNumber(null==s?void 0:s.volume))return i.error(`${null==s?void 0:s.volume} is not a number, the valid range of options.volume is 0-100`),{code:e.RCRTCCode.PARAMS_ERROR};(null==s?void 0:s.volume)<0&&(s.volume=0,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 0")),(null==s?void 0:s.volume)>100&&(s.volume=100,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 100"))}if(null==s?void 0:s.audioDeviceId){if(!(yield Pe.getSpeakers()).map((e=>e.deviceId)).includes(s.audioDeviceId))return i.error(`the options.audioDeviceId is invalid --\x3e ${s.audioDeviceId}`),{code:e.RCRTCCode.PARAMS_ERROR}}const r=this.isVideoTrack();if(r&&(!n||!(n instanceof HTMLVideoElement)))return i.error(`the video track need an <video> to play -> id: ${this._id}`),{code:e.RCRTCCode.VIDEO_TRACK_MISS_MEDIA_ELEMENT};this._element=r?n:this._element||new Audio,this._localMuted&&this._setLocalMuted(!1),this._element.srcObject&&this._element.srcObject===this._msStream||this._element.pause(),this._element.onloadstart=e=>{var t;i.debug(`HTMLMediaElement onloadstart -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.ondurationchange=e=>{var t;i.debug(`HTMLMediaElement ondurationchange -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadedmetadata=e=>{var t;i.debug(`HTMLMediaElement onloadedmetadata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadeddata=e=>{var t;i.debug(`HTMLMediaElement onloadeddata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onabort=e=>{var t;i.info(`HTMLMediaElement onabort -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.oncanplay=e=>{var t;i.info(`HTMLMediaElement oncanplay -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onvolumechange=e=>{var t;const r=Math.floor(100*(null===(t=e.target)||void 0===t?void 0:t.volume));i.info(`HTMLMediaElement onvolumechange -> volume: ${r}, trackId: ${this._id}`)},this._element.srcObject=this._msStream,this._element.autoplay=!0,r&&(this._element.playsInline=!0,this._element.x5PlaysInline=!0,this._element.webkitPlaysInline=!0),r||!(null==s?void 0:s.volume)&&0!==(null==s?void 0:s.volume)||(this._element.volume=(null==s?void 0:s.volume)/100);try{(null==s?void 0:s.audioDeviceId)&&!r?yield this._element.setSinkId(s.audioDeviceId):this._element.play()}catch(t){return"No permission to use requested device"===t.message?(i.error(`setSinkId failed -> ${t.message}`),{code:e.RCRTCCode.NO_PERMISSION_TO_USE_REQUESTED_DEVICE}):(i.error(t),{code:e.RCRTCCode.TRACK_PLAY_ERROR})}return{code:e.RCRTCCode.SUCCESS}}))}__innerDestroy(){this.__innerSetMediaStreamTrack(void 0)}__releaseMediaElement(){this._element&&(this._element.remove(),this._element.srcObject=null)}}class Le extends Oe{constructor(e,t,r,i){super(e,t,r,!0),this._isPublished=!1,this.__innerSetMediaStreamTrack(i),i.onended=()=>{i.onended=null,this.emit(Le.EVENT_LOCAL_TRACK_END,this),this.removeAll(Le.EVENT_LOCAL_TRACK_END)}}_setLocalMuted(e){const t=this._localMuted!==e;super._setLocalMuted(e),this._remoteMuted=this._localMuted,t&&this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,this)}__innerSetPublished(e){this._isPublished=e}isPublished(){return this._isPublished}destroy(){var e;i.info(`track is destroyed -> trackId: ${this.getTrackId()}`),null===(e=this._msTrack)||void 0===e||e.stop(),super.__innerDestroy(),this.isAudioTrack()&&super.__releaseMediaElement(),this.emit(Le.__INNER_EVENT_DESTROY__,this)}setBitrate(e=0,r=0,n=0){!t.isNumber(e)||!t.isNumber(r)||!t.isNumber(n)||e<=0||r<=0||e<r?i.error("setBitrate params error ->"):this._bitrateInfo={max:e,min:r,start:n}}getBitrate(){var e,t;const{min:r,max:i}=this._msTrack?Ke(this._msTrack):{min:0,max:0};return{min:(null===(e=this._bitrateInfo)||void 0===e?void 0:e.min)||r,max:(null===(t=this._bitrateInfo)||void 0===t?void 0:t.max)||i}}}Le.EVENT_LOCAL_TRACK_END="local-track-end",Le.__INNER_EVENT_MUTED_CHANGE__="inner-muted-change",Le.__INNER_EVENT_DESTROY__="inner-destroy";class De extends Le{constructor(e,t,r){super(e,t,"audio",r)}setBitrate(e,t,r){i.warn("`setBitrate` invalid for audio track")}getBitrate(){return{start:32,max:32,min:32}}}class Ne extends Le{constructor(e,t,r,i=!1){super(e,t,"video",r),this._isTiny=i}__isTiny(){return this._isTiny}getStreamId(){const e=super.getStreamId();return this._isTiny?`${e}_tiny`:e}getTrackId(){const e=super.getTrackId();return this._isTiny?`${e}_tiny`:e}}class Ae extends Le{constructor(e,t,r,i,n){super(e,t,r,i),this._resource=n,Ae.__innerSetMapping(this.getTrackId(),n)}static __innerSetMapping(e,t){const r=this._mapping.get(t)||[];r.push(e),this._mapping.set(t,r)}static __innerRemoveMapping(e,t){var r,i;const n=null===(r=this._mapping.get(t))||void 0===r?void 0:r.filter((t=>t!==e));n&&n.length>0?this._mapping.set(t,n):(this._mapping.delete(t),t.pause(),t.src="",null===(i=t.parentNode)||void 0===i||i.removeChild(t))}destroy(){this.isAudioTrack()&&this.mute(),Ae.__innerRemoveMapping(this.getTrackId(),this._resource),super.destroy()}}Ae._mapping=new Map;class Me extends Ae{constructor(e,t,r,i){super(e,t,"video",r,i)}}class xe extends Ae{constructor(e,t,r,i){super(e,t,"audio",r,i)}_setLocalMuted(e){this._resource&&(this._resource.muted=e),super._setLocalMuted(e)}play(){return this._setLocalMuted(!1),Promise.resolve({code:e.RCRTCCode.SUCCESS})}}class we extends De{}class Ue extends Ne{}class $e extends Ne{}class je extends Oe{constructor(e,t,r,i){super(e,t,r,!1,i),this._isSubscribed=!1}__innerSetRemoteMuted(e){this._remoteMuted=e}__innerSetSubscribed(e){this._isSubscribed=e}isSubscribed(){return this._isSubscribed}}class Ve extends je{constructor(e,t,r){super(e,t,"audio",r)}}class Be extends je{constructor(e,t,r){super(e,t,"video",r)}}const Fe=(e,t)=>({name:e,content:JSON.stringify({uris:t,ignore:!0})}),He=e=>JSON.stringify(e),Ge=e=>/^[a-zA-Z\d-=]+$/g.test(e),Je="http:"!==location.protocol||["localhost","127.0.0.1"].includes(location.hostname),We=e=>{if(void 0===e)return 0;if(t.isNumber(e))return e;const r=e;return r.exact||r.ideal||r.max||0},Ye=e=>{const t=e.getConstraints();return{width:We(t.width),height:We(t.height),frameRate:We(t.frameRate)}},Ke=e=>{const{width:t,height:r,frameRate:i}=Ye(e),n=Ie(t,r),s=be(i);return{min:n.minBitrate*s,max:n.maxBitrate*s}},qe=e=>[e.msid,e.mediaType].join("_"),ze=e=>{const t=e.split("_");return{mediaType:parseInt(t.pop()),tag:t.pop(),userId:t.join("_")}},Qe=(e,t)=>[e,t].join("_"),Xe=e=>e.map((e=>Object.assign({},e))),Ze=(e,t,r=!1)=>{e=e.slice();const i=[],n=[],s=[];return t.forEach((t=>{const n=qe(t);let o=e.findIndex((e=>qe(e)===n));if(r&&(o=e.findIndex((e=>e.uri===t.uri))),-1===o)return void i.push(t);const a=e[o];a.uri!==t.uri?i.push(t):a.state!==t.state&&s.push(t),e.splice(o,1)})),n.push(...e),{publishedList:i,unpublishedList:n,modifiedList:s}},et=()=>{let e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return e=e.replace(/-/g,"")+"0",e=parseInt(e,16),e=(e=>{const t="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ+/".split(""),r=t.length+1;let i=+e;const n=[];do{const e=i%r;i=(i-e)/r,n.unshift(t[e])}while(i);return n.join("")})(e),e.length>22&&(e=e.slice(0,22)),e},tt=e=>{const[t,r]=e.split("_").map((e=>parseInt(e.replace(/[^\d]/g,""))));return{width:t,height:r}},rt=t=>!!e.RCResolution[t],it=t=>!!e.RCFrameRate[t],nt=e=>parseInt(e.replace("FPS_","")),st=(()=>{const{browser:e,version:t,supportsUnifiedPlan:r}=Te.browserDetails;return{browser:e,version:t,supportsUnifiedPlan:!1!==r}})();function ot(){return"captureStream"in HTMLMediaElement.prototype||"mozCaptureStream"in HTMLMediaElement.prototype}function at(){return"mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices}const ct=e=>"[object Null]"===Object.prototype.toString.call(e),dt=e=>1===e.type,ut=e=>{const t={},r=Object.keys(e.users);return r.length&&r.forEach((r=>{const n=[],s=e.users[r];if(s.uris)try{n.push(...JSON.parse(s.uris))}catch(e){i.warn(`invalid user data -> userId: ${r}, userData: ${s}`)}t[r]=n})),t};var lt,ht;!function(e){e.PUBLISH="RCRTC:PublishResource",e.UNPUBLISH="RCRTC:UnpublishResource",e.MODIFY="RCRTC:ModifyResource",e.TOTAL_CONTENT_RESOURCE="RCRTC:TotalContentResources",e.STATE="RCRTC:state",e.ROOM_NOTIFY="RCRTC:RoomNtf",e.USER_NOTIFY="RCRTC:UserNtf",e.KICK="RCRTC:kick"}(lt||(lt={})),e.RCRTCPingResult=void 0,(ht=e.RCRTCPingResult||(e.RCRTCPingResult={})).SUCCESS="Success",ht.FAIL="Fail";class pt{constructor(e,t,r,i=1e4){this._roomId=e,this._roomMode=t,this._context=r,this._gap=i,this._latestTimestamp=Date.now(),this._timer=null}start(){return r(this,void 0,void 0,(function*(){this._timer||(this._timer=setInterval(this._loop.bind(this),this._gap))}))}_loop(){var n,s,o;return r(this,void 0,void 0,(function*(){const r=yield new Promise((e=>{this._context.rtcPing(this._roomId,this._roomMode).then(e).catch((r=>{i.error(`rtcping receive unknown error -> ${r}`),e(t.ErrorCode.UNKNOWN)})),setTimeout(e,1e4,t.ErrorCode.TIMEOUT)})),a=Date.now();if(r===t.ErrorCode.SUCCESS)return this._latestTimestamp=a,void(null===(n=this.onPingResult)||void 0===n||n.call(this,e.RCRTCPingResult.SUCCESS));null===(s=this.onPingResult)||void 0===s||s.call(this,e.RCRTCPingResult.FAIL),i.warn(`rtcping failed -> code: ${r}`),(40003===r||a-this._latestTimestamp>6e4)&&(this.stop(),null===(o=this.onFailed)||void 0===o||o.call(this,40003===r))}))}stop(){this._timer&&(clearInterval(this._timer),this._timer=null)}}var mt;!function(e){e[e.NORMAL=1]="NORMAL",e[e.TINY=2]="TINY"}(mt||(mt={}));const _t=-1,Ct=(e,t)=>Math.round(8*t/e),Rt=(e,t=2)=>{const r=10**t;return Math.round(e*r)/r},ft=(e,t=2)=>{e>1&&(e/=32767);const r=10**t;return Math.ceil(e*r)},vt=(e,t,r,i)=>{if(0===t)return 0;if(!r||!i)return Rt(e/t,3);const n=t-i;if(0===n)return 0;const s=e-r;return s<0||n<0?0:Rt(s/n,3)},Tt=e=>{const{jitter:t,rtt:r,packetsLostRate:i}=e;return!ct(t)||!ct(r)||0!==i};class gt{constructor(e,t){this._rtcPeerConn=e,this._sdpSemantics=t,this._latestPacketsSent={},this._latestBytesSent={},this._latestBytesRecv={},this._latestPacketsRecv={}}updateBytesSent(e,t,r){let i,n;if(this._latestBytesSent[e]&&t<this._latestBytesSent[e].bytesSent&&this.clearLatestpacketsSent([e]),this._latestBytesSent[e]){const{bytesSent:s,timestamp:o}=this._latestBytesSent[e];i=t-s,n=r-o,this._latestBytesSent[e]={bytesSent:t,timestamp:r}}else i=t,n=1e3,this._latestBytesSent[e]={bytesSent:t,timestamp:r};return Ct(n,i)}updateBytesRecv(e,t,r){let i,n;if(this._latestBytesRecv[e]&&t<this._latestBytesRecv[e].bytesRecv&&this.clearLatestPacketsRecv([e]),this._latestBytesRecv[e]){const{bytesRecv:s,timestamp:o}=this._latestBytesRecv[e];i=t-s,n=r-o,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r}}else i=t,n=1e3,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r};return Ct(n,i)}updateSenderPacketsLost(e,t,r){let i;if(Object.prototype.hasOwnProperty.call(this._latestPacketsSent[e],"packetsSent")){const{packetsLost:n,packetsSent:s}=this._latestPacketsSent[e];i=vt(t,r,n,s),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=n===t?s:r}else i=vt(t,r),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=r;return i}updateReceiverPacketsLost(e,t,r){let i;if(this._latestPacketsRecv[e]){const{packetsLost:n,packetsRecv:s}=this._latestPacketsRecv[e];i=vt(t,r+t,n,s+n)}else i=vt(t,r);return this._latestPacketsRecv[e]={packetsLost:t,packetsRecv:r},i}clearLatestpacketsSent(t){t.forEach((t=>{if(parseInt(t.split("_").pop())===e.RCMediaType.VIDEO_ONLY){const e=`${t}_tiny`;delete this._latestPacketsSent[e],delete this._latestBytesSent[e]}delete this._latestPacketsSent[t],delete this._latestBytesSent[t]}))}clearLatestPacketsRecv(e){e.forEach((e=>{delete this._latestPacketsRecv[e],delete this._latestBytesRecv[e]}))}parseRTCStatsReport(e){const t=e.keys(),r={};let i=t.next();for(;!i.done;){const n=i.value,s=e.get(n);/^RTCCodec_/.test(n)||(r[n]=s),i=t.next()}return r}formatRCRTCStateReport(e){return{senders:[],receivers:[]}}getAudioLevelList(e){return[]}getResourceIdByParseSdp(e){var t,r;const i=e.ssrc,n=e.kind||e.mediaType,s=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,o=null===(r=this._rtcPeerConn.currentRemoteDescription)||void 0===r?void 0:r.sdp;let a;a="unified-plan"===this._sdpSemantics?new RegExp("a=msid:(.*?) "):new RegExp(`a=ssrc:${i} msid:(.*?) `);const c=null==s?void 0:s.split("\r\nm="),d=null==c?void 0:c.filter((e=>e.includes(`a=ssrc:${i}`)))[0],u=null==d?void 0:d.match(a);let l=u?u[1]:"";if(l)return`${l}_${"video"===n?1:0}`;const h=null==o?void 0:o.split("\r\nm="),p=null==h?void 0:h.filter((e=>e.includes(`a=ssrc:${i}`)))[0],m=null==p?void 0:p.match(a);return l=m?m[1]:"",`${l}_${"video"===n?1:0}`}isValidSender(e){var t;const r=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}isValidReceiver(e){var t;const r=null===(t=this._rtcPeerConn.currentRemoteDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}}class St extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,s=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const o=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(o))return;const{id:a,kind:c,transportId:d,mediaSourceId:u,remoteId:l,packetsSent:h,bytesSent:p,trackId:m,encoderImplementation:_,pliCount:C,nackCount:R,firCount:f}=o;if(!m)return;let{framesPerSecond:v,frameWidth:T,frameHeight:g}=o;"video"!==c||T||g||v||(T=e[m].frameWidth,g=e[m].frameHeight,v=u?e[u].framesPerSecond:null);const S=e[l];let y=null,E=null,I=0;S&&(y=S.jitter,E=S.roundTripTime,I=S.packetsLost),n+=I;const k=this.getResourceIdByParseSdp(o),b=u?e[u].audioLevel:e[m].audioLevel;let P=null;!this._latestPacketsSent[k]&&(this._latestPacketsSent[k]={}),S?P=this.updateSenderPacketsLost(k,I,h):this._latestPacketsSent[k].crtPacketsSent=h;let O=this.updateBytesSent(k,p,r);O<0&&(O=0),s+=O,t.senders.push({id:a,trackId:k,kind:c,packetsLostRate:P,remoteResource:!1,audioLevel:b||0===b?ft(b):null,frameWidth:T,frameHeight:g,frameRate:v,bitrate:O,jitter:y?Math.round(1e3*y):y,rtt:E,encoderImplementation:_,pliCount:C,nackCount:R,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));i.filter((e=>/RTCRemoteInboundRtp(Video|Audio)Stream_/.test(e))).forEach((r=>{const{localId:i,jitter:n,roundTripTime:s,packetsLost:o}=e[r],a=t.senders.filter((e=>e.id===i))[0];if(a&&!Tt(a)){const t=this.getResourceIdByParseSdp(e[a.id]);a.jitter=Math.round(1e3*n),a.rtt=s;const r=this._latestPacketsSent[t].crtPacketsSent;a.packetsLostRate=this.updateSenderPacketsLost(t,o,r)}}));let o=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const s=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(s))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,framesPerSecond:h,kind:p,codecImplementationName:m,nackCount:_,pliCount:C}=s;if(!a)return;let{frameWidth:R,frameHeight:f,audioLevel:v}=s;"video"===p?R||f||(R=e[a].frameWidth,f=e[a].frameHeight):v||(v=e[a].audioLevel),n+=c;const T=this.getResourceIdByParseSdp(s),g=this.updateReceiverPacketsLost(T,c,d);let S=this.updateBytesRecv(T,l,r);S<0&&(S=0),o+=S,t.receivers.push({trackId:T,kind:p,packetsLostRate:g,remoteResource:!0,audioLevel:v||0===v?ft(v):null,frameWidth:R,frameHeight:f,frameRate:h,bitrate:S,jitter:u?Math.round(1e3*u):0,codecImplementationName:m,nackCount:_,pliCount:C,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{ip:p,port:m,networkType:_}=h,C=e[l],{ip:R,port:f,protocol:v}=C;t.iceCandidatePair={IP:p,port:m,networkType:_,remoteIP:R,remotePort:f,protocol:v,bitrateRecv:o,bitrateSend:s,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTPAudioStream_/.test(e))).forEach((r=>{var i;const n=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const{mediaSourceId:s,trackId:o}=n,a=this.getResourceIdByParseSdp(n),c=s&&e[s]?e[s].audioLevel:(null===(i=e[o])||void 0===i?void 0:i.audioLevel)||null;t.push({trackId:a,audioLevel:c||0===c?ft(c):null})}));return r.filter((e=>/^RTCInboundRTPAudioStream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n}=i,s=i.audioLevel||e[n].audioLevel,o=this.getResourceIdByParseSdp(i);t.push({trackId:o,audioLevel:s||0===s?ft(s):null})})),t}}class yt extends gt{formatRCRTCStateReport(e){const t=+new Date,r={senders:[],receivers:[],timestamp:t};let i=0,n=0,s=0;for(const o in e){const a=e[o],c=a.type;if("outbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(a))continue;const{id:s,kind:o,bytesSent:c,packetsSent:d,bitrateMean:u,framerateMean:l,nackCount:h,pliCount:p,remoteId:m}=a,{jitter:_,roundTripTime:C,packetsLost:R}=m?e[m]:{jitter:null,roundTripTime:null,packetsLost:0},f=this.getResourceIdByParseSdp(a);i+=R;let v=null;!this._latestPacketsSent[f]&&(this._latestPacketsSent[f]={}),m?v=this.updateSenderPacketsLost(f,R,d):this._latestPacketsSent[f].crtPacketsSent=d;let T=0;"video"===o?u&&(T=Math.floor(u/1e3)):T=this.updateBytesSent(f,c,t),T<0&&(T=0),n+=T,r.senders.push({trackId:f,kind:o,packetsLostRate:v,remoteResource:!1,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(l),bitrate:T,jitter:_?Math.round(1e3*_):null,rtt:C,encoderImplementation:null,pliCount:p,nackCount:h,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}if("remote-inbound-rtp"===c){const{localId:t}=a,i=this.getResourceIdByParseSdp(e[t]),n=r.senders.filter((e=>e.trackId===i))[0];n&&Tt(n)&&(n.jitter=Math.round(1e3*a.jitter),n.rtt=a.rtt,n.packetsLostRate=this.updateSenderPacketsLost(i,a.packetsLost,this._latestPacketsSent[i].crtPacketsSent))}if("inbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(a))continue;const{id:e,packetsLost:n,bytesReceived:o,packetsReceived:c,jitter:d,framerateMean:u,kind:l,bitrateMean:h,nackCount:p,pliCount:m}=a,_=this.getResourceIdByParseSdp(a);i+=n;const C=this.updateReceiverPacketsLost(_,n,c);let R=0;"video"===l?h&&(R=Math.floor(h/1e3)):R=this.updateBytesRecv(_,o,t),R<0&&(R=0),s+=R,r.receivers.push({trackId:_,kind:l,packetsLostRate:C,remoteResource:!0,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(u),bitrate:R,jitter:d?Math.round(1e3*d):null,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}if("candidate-pair"===c&&"succeeded"===a.state){const t=e[a.localCandidateId],{address:o,port:c}=t,d=e[a.remoteCandidateId],{address:u,port:l,protocol:h}=d;r.iceCandidatePair={IP:o,port:c,networkType:null,remoteIP:u,remotePort:l,protocol:h,bitrateRecv:s,bitrateSend:n,rtt:null,availableOutgoingBitrate:null,availableIncomingBitrate:null,totalPacketsLost:i}}}return r.iceCandidatePair&&(r.iceCandidatePair.bitrateSend=n),r.iceCandidatePair&&(r.iceCandidatePair.bitrateRecv=s),r}getAudioLevelList(e){const t=[];for(const r in e){const i=e[r],n=i.type;if("outbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}if("inbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}}return t}}class Et extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,s=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const n=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const o=this.getResourceIdByParseSdp(n),{mediaType:a,transportId:c,remoteId:d,packetsSent:u,bytesSent:l,trackId:h,encoderImplementation:p,pliCount:m,nackCount:_,firCount:C}=n;if(!h)return;const{audioLevel:R,frameHeight:f,frameWidth:v}=e[h];let T=this.updateBytesSent(o,l,r);T<0&&(T=0),s+=T,t.senders.push({trackId:o,kind:a,packetsLostRate:null,remoteResource:!1,audioLevel:R||0===R?ft(R):null,frameWidth:v,frameHeight:f,frameRate:null,bitrate:T,jitter:null,rtt:null,encoderImplementation:p,pliCount:m,nackCount:_,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));let o=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const s=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(s))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,mediaType:h,nackCount:p,pliCount:m}=s,_=this.getResourceIdByParseSdp(s);if(!a)return;const{frameHeight:C,frameWidth:R,audioLevel:f}=e[a];n+=c;const v=this.updateReceiverPacketsLost(_,c,d);let T=this.updateBytesRecv(_,l,r);T<0&&(T=0),o+=T,t.receivers.push({trackId:_,kind:h,packetsLostRate:v,remoteResource:!0,audioLevel:f||0===f?ft(f):null,frameWidth:R,frameHeight:C,frameRate:null,bitrate:T,jitter:u,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{address:p,port:m}=h,_=e[l],{address:C,port:R,protocol:f}=_;t.iceCandidatePair={IP:p||null,port:m,networkType:null,remoteIP:C,remotePort:R,protocol:f,bitrateRecv:o,bitrateSend:s,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))return;const{trackId:n,mediaType:s}=i;if("video"===s)return;const o=this.getResourceIdByParseSdp(i),a=e[n];t.push({trackId:o,audioLevel:a||0===a?ft(a):null})}));return r.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n,mediaType:s}=i;if(!n||"video"===s)return;const{audioLevel:o}=e[n],a=this.getResourceIdByParseSdp(i);t.push({trackId:a,audioLevel:o||0===o?ft(o):null})})),t}}class It{constructor(e){this._peer=e,this._outboundStreams={}}static setSdpSemantics(e){const{browser:t,version:r,supportsUnifiedPlan:n}=st;i.debug(`sdpSemantics, browser: ${t}, version: ${r}, supportsUnifiedPlan: ${n}`),n?/chrome/i.test(t)?this._sdpSemantics=r>92?"unified-plan":r<72?"plan-b":e:/firefox/i.test(t)?this._sdpSemantics="unified-plan":/safari/i.test(t)?this._sdpSemantics=r<12?"plan-b":"unified-plan":this._sdpSemantics="unified-plan":this._sdpSemantics="plan-b"}static getSdpSemantics(){return It._sdpSemantics}getOutboundVideoInfo(){const e=[];for(const t in this._outboundStreams){const r=this._outboundStreams[t].getVideoTracks()[0];if(!r)continue;const i=/_tiny$/.test(t),{width:n,height:s}=Ye(r);e.push({trackId:r.id,simulcast:i?mt.TINY:mt.NORMAL,resolution:`${n}x${s}`})}return e}setRemoteAnswer(t){return r(this,void 0,void 0,(function*(){t=t.replace(/\s+\r\n/g,"\r\n");try{yield this._peer.setRemoteDescription({type:"answer",sdp:t})}catch(t){return i.error(t),e.RCRTCCode.SET_REMOTE_DESCRIPTION_FAILED}return e.RCRTCCode.SUCCESS}))}getStatParsr(e,t){return/chrome/i.test(st.browser)?new St(e,t):/Firefox/i.test(st.browser)?new yt(e,t):/Safari/i.test(st.browser)?new Et(e,t):null}}class kt extends It{constructor(){super(...arguments),this.senders={},this._localTracks=[]}addLocalTrack(e){this._localTracks.includes(e)||this._localTracks.push(e);const t=e.getStreamId(),r=e.__innerGetMediaStreamTrack(),i=this._outboundStreams[t]||(this._outboundStreams[t]=new MediaStream);i.getTracks().forEach((e=>{e.kind===r.kind&&i.removeTrack(e)})),i.addTrack(r);const n=e.getTrackId(),s=this.senders[n];s?s.replaceTrack(r):this.senders[n]=this._peer.addTrack(r,i)}removeLocalTrack(e){const t=this._localTracks.findIndex((t=>t===e));t>=0&&this._localTracks.splice(t,1);const r=e.getTrackId(),i=this.senders[r];i&&(i.replaceTrack(null),this._peer.removeTrack(i),delete this.senders[r])}updateSubRemoteTracks(e){}updateRecvTransceiverMap(e,t){}setBitrate(e,t,r){this._maxBitrate=e,this._minBitrate=t,this._startBitrate=r||.7*e}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e,offerToReceiveAudio:!0,offerToReceiveVideo:!0});for(const e in this._outboundStreams){const r=this._outboundStreams[e].id;t.sdp=t.sdp.replace(new RegExp(r,"g"),e)}return yield this._peer.setLocalDescription(t),{type:"offer",semantics:"plan-b",sdp:t.sdp}}))}setRemoteAnswer(e){let t=0,r=0;this._localTracks.forEach((e=>{const{min:i,max:n}=e.getBitrate();r+=i,t+=n})),t=this._maxBitrate&&this._maxBitrate>0?Math.min(t,this._maxBitrate):t,r=this._minBitrate&&this._minBitrate>0?Math.max(r,this._minBitrate):r;const i=this._startBitrate||Math.round(.7*t),n=`b=AS:${t}`;e=e.replace(/[\r\n]+m=video[^\r\n]+/,(e=>`${e}\r\n${n}`));const s=[`;x-google-min-bitrate=${r}`,`;x-google-max-bitrate=${t}`,`;x-google-start-bitrate=${i}`].join("");return e=e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+s)),super.setRemoteAnswer(e)}}class bt extends It{constructor(){super(...arguments),this._sendTransceiver={},this._localTracks={},this._recvAudio=[],this._recvVideo=[],this._recvTransceiver={},this._subedTracks=[]}setBitrate(e,t,r){i.warn("the interface named `setBitrate` is invalid while sdpSemantics value is `unified-plan`")}addLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId(),i=e.__innerGetMediaStreamTrack();this._localTracks[t]=e;const n=this._outboundStreams[r]||(this._outboundStreams[r]=new MediaStream);n.getTracks().forEach((e=>{e.kind===i.kind&&n.removeTrack(e)})),n.addTrack(i);const s=this._sendTransceiver[t];s?(s.sender.replaceTrack(i),s.direction="sendonly"):this._sendTransceiver[t]=this._peer.addTransceiver(i,{direction:"sendonly",streams:[n]})}removeLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId();e.__innerGetMediaStreamTrack(),delete this._localTracks[t];const i=this._sendTransceiver[t];if(!i)return;i.direction="inactive",this._peer.removeTrack(i.sender),i.sender.replaceTrack(null);const n=this._outboundStreams[r];(e.isAudioTrack()?n.getAudioTracks():n.getVideoTracks()).forEach((e=>n.removeTrack(e)));const s=this._sendTransceiver[`${t}_tiny`];if(!s||"inactive"===s.direction)return;s.direction="inactive";const o=s.sender,a=o.track;this._peer.removeTrack(o),o.replaceTrack(null);this._outboundStreams[`${r}_tiny`].removeTrack(a),a.stop()}updateRecvTransceiverMap(t,r){const{mediaType:i}=ze(t);this._recvTransceiver[t]=r;const n=i===e.RCMediaType.AUDIO_ONLY?this._recvAudio:this._recvVideo,s=n.findIndex((e=>e===r));s>=0&&n.splice(s,1)}updateSubRemoteTracks(e){const t=e.slice(),r=this._subedTracks.slice();this._subedTracks=e.slice();for(let e=t.length-1;e>=0;e-=1){const i=t[e],n=r.findIndex((e=>e===i));n>=0&&(t.splice(e,1),r.splice(n,1))}r.length&&r.forEach((e=>{const t=e.getTrackId();e.__innerSetMediaStreamTrack(void 0);const r=this._recvTransceiver[t];r&&(r.direction="inactive")}));const i={audio:0,video:0};t.length&&t.forEach((e=>{const t=e.isAudioTrack()?"audio":"video",r=this._recvTransceiver[e.getTrackId()];r?r.direction="recvonly":i[t]+=1}));for(let e=this._recvAudio.length;e<i.audio;e+=1)this._recvAudio.push(this._peer.addTransceiver("audio",{direction:"recvonly"}));for(let e=this._recvVideo.length;e<i.video;e+=1)this._recvVideo.push(this._peer.addTransceiver("video",{direction:"recvonly"}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e});let r=t.sdp;for(const e in this._outboundStreams){const t=this._outboundStreams[e].id;r=r.replace(new RegExp(t,"g"),e)}return r=(e=>e.split(/\r\n(?=m=)/).map((e=>(e=>/a=(recvonly|inactive)/.test(e)?e.replace(/\r\na=(ssrc|msid)[^\r\n]+/g,""):e)(e))).join("\r\n"))(r),r=r.replace(/a=ice-options:trickle/g,"a=ice-options:trickle\r\na=ice-options:renomination"),t.sdp=r,yield this._peer.setLocalDescription(t),{type:"offer",semantics:"unified-plan",sdp:r}}))}setRemoteAnswer(e){e=e.split(/\r\n(?=m=)/).map((e=>{var t;const r=e.match(/a=mid:[^\s]+/);if(!r)return e;const i=r[0].replace("a=mid:","");let n="";for(const e in this._sendTransceiver){if(this._sendTransceiver[e].mid===i){n=e;break}}if(!n)return e;const s=null===(t=this._localTracks[n])||void 0===t?void 0:t.getBitrate();if(!s)return e;const{max:o,min:a}=s,c=o&&o>0?s.start||.7*o:0,d=[];if(o&&o>0&&d.push(`;x-google-max-bitrate=${o}`),a&&a>0&&d.push(`;x-google-min-bitrate=${a}`),c>0&&d.push(`;x-google-start-bitrate=${c}`),0===d.length)return e;const u=d.join("");return e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+u))})).join("\r\n");const t=/[\r\n]+\r\n[\r\n]+/g;return t.test(e)&&(i.warn(`answer sdp invalid -> ${JSON.stringify(e)}`),e=e.replace(t,"\r\n")),super.setRemoteAnswer(e)}}class Pt extends t.EventEmitter{constructor(e,t){super(),this._reTryExchange=e,this._polarisReport=t,this.pubLocalTracks={},this._reTryExchangeTimer=null,this._reportStatsTimer=null,this._reportListener=null;const r=It.getSdpSemantics(),i=this._rtcPeerConn=new RTCPeerConnection({sdpSemantics:r});this._sdpStrategy="plan-b"===r?new kt(i):new bt(i),this._rtcPeerConn.oniceconnectionstatechange=this._onICEConnectionStateChange.bind(this),this._rtcPeerConn.onconnectionstatechange=this._onConnectionStateChange.bind(this),this._rtcPeerConn.ontrack=this._onTrackReady.bind(this),this.reportParser=this._sdpStrategy.getStatParsr(this._rtcPeerConn,r)}getLocalTracks(){return Object.values(this.pubLocalTracks)}_onConnectionStateChange(){i.info(`onconnectionstatechange -> ${this._rtcPeerConn.connectionState}`)}_onICEConnectionStateChange(){var e,t;i.info(`oniceconnectionstatechange -> ${this._rtcPeerConn.iceConnectionState}`),"connected"===this._rtcPeerConn.iceConnectionState&&(this._reportStatsTimer&&clearInterval(this._reportStatsTimer),this._reportStatsTimer=setInterval(this._reportHandle.bind(this),1e3)),"failed"!==this._rtcPeerConn.iceConnectionState&&"disconnected"!==this._rtcPeerConn.iceConnectionState||(i.warn("iceconenction state is `failed`, exchange SDP to try again."),this._reTryExchange(),this._reTryExchangeTimer=setInterval(this._reTryExchange,15e3));try{null===(t=null===(e=this._reportListener)||void 0===e?void 0:e.onICEConnectionStateChange)||void 0===t||t.call(e,this._rtcPeerConn.iceConnectionState)}catch(e){i.error("onICEConnectionStateChange error",e)}}_onTrackReady(t){if(!t.streams.length)return;const r=[t.streams[0].id,"audio"===t.receiver.track.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_");this._updateRecvTransceiverMap(r,t.transceiver),this.emit(Pt.__INNER_EVENT_TRACK_READY__,t)}setBitrate(e,t,i){return r(this,void 0,void 0,(function*(){this._sdpStrategy.setBitrate(e,t,i)}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._sdpStrategy.createOffer(e);return i.debug(`offer -> ${JSON.stringify(t.sdp)}`),t}))}setRemoteAnswer(e){return r(this,void 0,void 0,(function*(){return i.debug(`answer -> ${JSON.stringify(e)}`),this._sdpStrategy.setRemoteAnswer(e)}))}getLocalTrack(e){return this.pubLocalTracks[e]||null}addLocalTrack(e){this.pubLocalTracks[e.getTrackId()]=e,this._sdpStrategy.addLocalTrack(e),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this),e.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}removeLocalTrackById(e){const t=this.getLocalTrack(e);t&&this.removeLocalTrack(t)}removeAllLocalTrack(){Object.keys(this.pubLocalTracks).forEach((e=>{/_tiny$/.test(e)||this.removeLocalTrackById(e)}))}removeLocalTrack(e){const t=e.getTrackId();delete this.pubLocalTracks[t],this._sdpStrategy.removeLocalTrack(e),e.__innerSetPublished(!1),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this);const r=`${t}_tiny`,i=this.getLocalTrack(r);i&&(this._sdpStrategy.removeLocalTrack(i),delete this.pubLocalTracks[r],i.destroy())}_updateRecvTransceiverMap(e,t){this._sdpStrategy.updateRecvTransceiverMap(e,t)}updateSubRemoteTracks(e){this._sdpStrategy.updateSubRemoteTracks(e)}getOutboundVideoInfo(){return this._sdpStrategy.getOutboundVideoInfo()}_onLocalTrackMuted(e){const t=this.getLocalTrack(`${e.getTrackId()}_tiny`);t&&(t.__innerGetMediaStreamTrack().enabled=!e.isLocalMuted()),this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,e)}_onLocalTrackDestroied(e){this.emit(Le.__INNER_EVENT_DESTROY__,e)}registerReportListener(e){this._reportListener=e}_createRCRTCStateReport(e){const{timestamp:t,iceCandidatePair:r,senders:i,receivers:n}=JSON.parse(JSON.stringify(e));null==r||delete r.totalPacketsLost;for(const e in r)ct(r[e])&&delete r[e];return{timestamp:t,iceCandidatePair:r,senders:i.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t})),receivers:n.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t}))}}_getStatsData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);return null===(t=this.reportParser)||void 0===t?void 0:t.formatRCRTCStateReport(i)}))}getAudioLevelReportData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);if(!i)return[];return null===(t=this.reportParser)||void 0===t?void 0:t.getAudioLevelList(i)}))}_reportHandle(){var e,t,i;return r(this,void 0,void 0,(function*(){const r=yield this._getStatsData();if(!r)return;(r.senders.length||r.receivers.length)&&(null===(e=this._polarisReport)||void 0===e||e.sendR3R4Data(r));const n=this._createRCRTCStateReport(r);null===(i=null===(t=this._reportListener)||void 0===t?void 0:t.onStateReport)||void 0===i||i.call(t,n)}))}getRTCPeerConn(){return this._rtcPeerConn}destroy(){this.clear(),this.clearReTryExchangeTimer(),this._reportStatsTimer&&(clearInterval(this._reportStatsTimer),this._reportStatsTimer=null),this.registerReportListener(null),this._rtcPeerConn.close(),this.reportParser=null}clearReTryExchangeTimer(){clearInterval(this._reTryExchangeTimer),this._reTryExchangeTimer=null}}var Ot,Lt,Dt,Nt,At;Pt.__INNER_EVENT_TRACK_READY__="inner-track-ready",function(e){e[e.DISABLE=0]="DISABLE",e[e.ENABLE=1]="ENABLE"}(Ot||(Ot={})),function(e){e[e.MeetingOrAnchor=1]="MeetingOrAnchor",e[e.Audience=2]="Audience"}(Lt||(Lt={}));class Mt{constructor(e,t,r,i,n=Lt.MeetingOrAnchor){this._context=e,this._runtime=t,this._roomId=r,this._crtRTCRoom=i,this._userRole=n}_send(e){this._context.getConnectionStatus()===t.ConnectionStatus.CONNECTED&&this._context.setRTCState(this._roomId,e)}_getClientID(){const e="uuid";let t=this._runtime.localStorage.getItem(e);return t||(t=et(),this._runtime.localStorage.setItem(e,t)),t}_getRealResourceId(e){let t=e;const r=e.indexOf("_tiny");return r>-1&&(t=e.slice(0,r)),t}_getPolarisTrackId(t){let r="";const i=t.split("_");if(t.includes("_tiny")){const t=i.pop(),n=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",s=i.pop();r=[i.join("_"),s,t,n].join("_")}else{const t=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",n=i.pop();r=[i.join("_"),n,t].join("_")}return r}sendR3R4Data(e){const{iceCandidatePair:t,senders:r,receivers:i}=e,n=(null==t?void 0:t.bitrateSend)||_t,s=(null==t?void 0:t.bitrateRecv)||_t,o=(null==t?void 0:t.networkType)||"unknown",a=(null==t?void 0:t.rtt)||_t,c=`${(null==t?void 0:t.IP)||_t}:${null==t?void 0:t.port}`,d=(null==t||t.remoteIP,null==t||t.remotePort,(null==t?void 0:t.availableIncomingBitrate)||_t),u=(null==t?void 0:t.availableOutgoingBitrate)||_t,l=(null==t?void 0:t.totalPacketsLost)||_t,h=this._context.getCurrentId();let p=`R3\t${n}\t-1\t-1\t-1\t${o}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`,m=`R4\t${s}\t-1\t-1\t-1\t${o}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`;const _=r.map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:s,packetsLostRate:o,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsSent:_,encoderImplementation:C}=e,R=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:R,googCodecName:C||String(_t),audioLevel:i||0===i?i:_t,bitrate:s||0===s?s:_t,packetsLostRate:o||0===o?o:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsSent:_,samplingRate:n,googRenderDelayMs:u,encoderImplementation:C||String(_t),trackState:(null===(t=this._crtRTCRoom.getLocalTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}})),C=i.filter((e=>!!e.trackId)).map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:s,packetsLostRate:o,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsReceived:_,codecImplementationName:C}=e,R=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:R,googCodecName:C||String(_t),audioLevel:i||0===i?i:_t,bitrate:s||0===s?s:_t,packetsLostRate:o||0===o?o:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsReceived:_,samplingRate:n,googRenderDelayMs:u,codecImplementationName:C||String(_t),trackState:(null===(t=this._crtRTCRoom.getRemoteTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}}));p+=_.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsSent}\t${e.encoderImplementation}\t${e.trackState}`)).join("\n"),e.senders.length&&this._send(p+`\r${this._userRole}`),m+=C.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsReceived}\t${e.codecImplementationName}\t${e.trackState}`)).join("\n"),e.receivers.length&&this._send(m+`\r${this._userRole}`)}sendR1(){const e=this._context.getCoreVersion(),t=navigator.platform,r=`R1\t5.2.4\t${e}\tweb\t${t}\t-1\t${st.browser}\t${st.version}\t${this._getClientID()}\t${this._userRole}`;this._send(r)}sendR2(e,t,r){const i=`R2\t${e}\t${t}\t${this._getClientID()}\r${r.join("\t")}\r${this._userRole}`;this._send(i)}}!function(e){e.PUBLISH="publish",e.SUBSCRIBE="subscribe"}(Dt||(Dt={})),function(e){e.BEGIN="begin",e.END="end"}(Nt||(Nt={}));class xt{constructor(e){this._room=e,this._audioLevelChangeHandler=null,this._timer=null,this._pc=this._room.__getPC()}_audioLevelReport(){return r(this,void 0,void 0,(function*(){if("new"===this._pc.getRTCPeerConn().iceConnectionState||!this._audioLevelChangeHandler)return;const e=(yield this._pc.getAudioLevelReportData()).map((e=>{const{userId:t}=or.parseTrackId(e.trackId);return{track:this._room.getCrtUserId()===t?this._room.getLocalTrack(e.trackId):this._room.getRemoteTrack(e.trackId),audioLevel:e.audioLevel||0}})).filter((e=>e.track));this._audioLevelChangeHandler(e)}))}onAudioLevelChange(e,t){t<300||t>1e3?i.error('the valid range of onAudioLevelChange params "gap" is: > 300 && < 1000'):e?(this._audioLevelChangeHandler=e,this._timer=setInterval(this._audioLevelReport.bind(this),t)):this._audioLevelChangeHandler=null}clearAudioLevelReportTimer(){this._timer&&(clearInterval(this._timer),this._timer=null)}}e.RCRTCLiveRole=void 0,(At=e.RCRTCLiveRole||(e.RCRTCLiveRole={}))[At.ANCHOR=1]="ANCHOR",At[At.AUDIENCE=2]="AUDIENCE";const wt=e=>e instanceof Oe?e.getTrackId():e.track.getTrackId();class Ut{constructor(e,t,r,n,s,a,d,u,l){this._context=e,this._runtime=t,this._roomId=r,this._roomMode=s,this._service=a,this._initOptions=d,this._ntfClearRoomItem=u,this._remoteTracks={},this._subscribedList=[],this._destroyed=!1,this.msgTaskQueue=new o,this._appListener=null,this._token=n.token,this._sessionId=n.sessionId,this._roomResources=l?{}:ut(n),this._initRemoteTracks();const h=this._context.getCurrentId(),p=this._roomResources[h]=this._roomResources[h]||[];i.debug(`room data -> ${JSON.stringify(this._roomResources)}`),p.length>0&&c((()=>this._unpublishPrev(p))),l&&this._afterChangedRole(n),this._pinger=new pt(r,this._roomMode,e,this._initOptions.pingGap),this._pinger.onFailed=this._kickoff.bind(this),this._pinger.onPingResult=this._handlePingResult.bind(this),this._pinger.start(),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this._pc.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),this._pc.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}_initRemoteTracks(){const t=this._context.getCurrentId();for(const r in this._roomResources){const i=this._roomResources[r];r!==t&&0!==i.length&&i.forEach((t=>{const r=qe(t),{tag:i,userId:n,mediaType:s}=ze(r),o=s===e.RCMediaType.AUDIO_ONLY?new Ve(i,n):new Be(i,n);o.__innerSetRemoteMuted(0===t.state),this._remoteTracks[r]=o}))}}_handlePingResult(e){this._callAppListener("onPing",e)}setBitrate(e,r,n){i.warn("`RCAbstractRoom.setBitrate` will be deprecated, use `RCLocalTrack.setBitrate` instead."),t.assert("max",e,(e=>t.isNumber(e)&&e>Math.max(r||1,200)),!0),t.assert("min",r,(r=>t.isNumber(r)&&r>=1&&(!t.isNumber(e)||r<e)),!0),t.assert("start",n,(i=>t.isNumber(i)&&i>r&&i<=e)),this._pc.setBitrate(e,r,n)}_onTrackReady(t){const r=t.streams[0].id,n=t.receiver.track,s=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),o=this._remoteTracks[s];o?(o.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",o)):i.warn(`cannot found remote track ${n.id}`)}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_onUserUnpublish(e){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._onTrackUnpublish(e)}))}_onTrackUnpublish(e){this._callAppListener("onTrackUnpublish",e)}_unpublishPrev(e){return r(this,void 0,void 0,(function*(){const r=e.slice();e.length=0,i.info(`unpublish uris prev login: ${JSON.stringify(r)}`);const n=yield this._context.setRTCTotalRes(this._roomId,Fe(lt.UNPUBLISH,r),He([]),lt.TOTAL_CONTENT_RESOURCE,He([]));n!==t.ErrorCode.SUCCESS?i.error(`unpublish prev uris failed -> code: ${n}`):i.debug("unpublish uris prev login succeed")}))}__parseInnerMessage(e){const{targetId:r,conversationType:n}=e;if(n!==t.ConversationType.RTC_ROOM)return!1;if(r!==this._roomId)return!0;i.info(`recv inner msg -> message: ${JSON.stringify(e)} | roomid: ${this._roomId}`);const s=e.content;switch(e.messageType){case lt.KICK:this._kickoff(!0,s);break;case lt.STATE:this.msgTaskQueue.push((()=>this._stateHandle(s)));break;case lt.MODIFY:case lt.PUBLISH:case lt.UNPUBLISH:case lt.TOTAL_CONTENT_RESOURCE:this.msgTaskQueue.push((()=>this._resourceHandle(s,e.messageType,e.senderUserId)));break;case lt.ROOM_NOTIFY:this._callAppListener("onRoomAttributeChange",e.messageType,e.content);break;case lt.USER_NOTIFY:i.warn(`TODO: ${lt.USER_NOTIFY}`);break;default:this._callAppListener("onMessageReceive",e.messageType,e.content,e.senderUserId,e.messageUId)}return!0}_kickoff(e,t){let r;i.warn(`onKickOff -> byServer: ${e}`),this._ntfClearRoomItem(),this._leaveHandle(!e),e&&((null==t?void 0:t.users)||[]).forEach((e=>{e.userId===this._context.getCurrentId()&&(r=e.type)})),this._callAppListener("onKickOff",e,r)}_rtcpeerClosed(){this._ntfClearRoomItem(),this._leaveHandle(!0),this._callAppListener("onRTCPeerConnectionCloseByException")}_resourceHandle(t,n,s){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return void i.warn(`room has been destroyed. -> roomId: ${this._roomId}`);const{uris:r,ignore:o}=t;if(o||!r)return;const a=[],d=[],u=[];let l;const h=this._roomResources[s]||(this._roomResources[s]=[]);switch(n){case lt.MODIFY:u.push(...r);break;case lt.PUBLISH:a.push(...r);break;case lt.UNPUBLISH:d.push(...r);break;case lt.TOTAL_CONTENT_RESOURCE:l=Ze(h,r),a.push(...l.publishedList),d.push(...l.unpublishedList),u.push(...l.modifiedList)}if(a.length>0){const t=h.map(qe),r=[],n=[];if(a.forEach((i=>{const s=qe(i),o=t.indexOf(s),{userId:a,tag:c,mediaType:d}=ze(s);o>-1?h[o]=i:h.push(i);let u=this._remoteTracks[s];u?u.isSubscribed()&&r.push(u):(u=d===e.RCMediaType.AUDIO_ONLY?new Ve(c,a):new Be(c,a),this._remoteTracks[s]=u,n.push(u)),u.__innerSetRemoteMuted(0===i.state)})),r.length){const t=r.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:n}=yield c((()=>this.__subscribe(r,!0)));n!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${n}, ids: ${JSON.stringify(t)}`)}this._onTrackPublish(n)}if(d.length>0){const e=d.map(qe);for(let t=h.length-1;t>=0;t-=1){const r=h[t];e.includes(qe(r))&&h.splice(t,1)}const t=d.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t)}if(u.length>0){const e=h.map(qe);for(let t=0;t<u.length;t+=1){const r=u[t],i=qe(r),n=e.indexOf(i);h[n].state=r.state;const s=this._remoteTracks[i];s.__innerSetRemoteMuted(0===r.state),s.isAudioTrack()?this._onAudioMuteChange(s):this._onVideoMuteChange(s)}}}))}_onTrackPublish(e){this._callAppListener("onTrackPublish",e)}_stateHandle(t){var n;return r(this,void 0,void 0,(function*(){const{users:r}=t;if(0===r.length)return;const s=[],o=[],a=[],c=[];r.forEach((e=>{0==+e.state?(i.debug(`user joined -> ${e.userId}`),this._roomResources[e.userId]||(e.switchRoleType?a.push(e.userId):s.push(e.userId)),this._roomResources[e.userId]=this._roomResources[e.userId]||[]):(i.debug(`user left -> ${e.userId}`),e.switchRoleType?c.push(e.userId):o.push(e.userId))}));const d=[...s,...a],u=[...o,...c];if(u.length){const e=[],t=[];u.forEach((r=>{e.push(...this.getRemoteTracksByUserId(r)),t.push(r)})),e.length&&(yield this.unsubscribe(e),e.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),t.length&&t.forEach((e=>delete this._roomResources[e]))}if(null===(n=this._appListener)||void 0===n?void 0:n.onSwitchRole)return a.length&&a.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.ANCHOR))),c.length&&c.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.AUDIENCE))),s.length&&this._callAppListener("onUserJoin",s),void(o.length&&this._callAppListener("onUserLeave",o));d.length&&this._callAppListener("onUserJoin",d),u.length&&this._callAppListener("onUserLeave",u)}))}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}__getPC(){return this._pc}getRemoteUserIds(){const e=this._context.getCurrentId();return Object.keys(this._roomResources).filter((t=>t!==e))}getRemoteTracks(){const e=[];return this.getRemoteUserIds().forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),e}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getSessionId(){return this._sessionId}sendMessage(n,s){return r(this,void 0,void 0,(function*(){const{code:r}=yield this._context.sendMessage(t.ConversationType.RTC_ROOM,this._roomId,{messageType:n,content:s,isStatusMessage:!0});return r!==t.ErrorCode.SUCCESS?(i.error(`send message failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}setRoomAttribute(n,s,o,a=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,n,s,a,t.RTCApiType.ROOM,o);return r!==t.ErrorCode.SUCCESS?(i.error(`SetRoomAttributeValue Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}deleteRoomAttributes(n,s,o=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.removeRTCData(this._roomId,n,o,t.RTCApiType.ROOM,s);return r!==t.ErrorCode.SUCCESS?(i.error(`DeleteRoomAttribute Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}getRoomAttributes(n=[],s=!1){return r(this,void 0,void 0,(function*(){const{code:r,data:o}=yield this._context.getRTCData(this._roomId,n,s,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`GetRoomAttributes Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS,data:o}}))}_setUserAttributeValue(e,r,i){return this._context.setRTCData(this._roomId,e,r,!1,t.RTCApiType.PERSON,i)}_deleteUserAttributes(e,r){return this._context.removeRTCData(this._roomId,e,!1,t.RTCApiType.PERSON,r)}_getUserAttributes(e){return this._context.getRTCData(this._roomId,e,!1,t.RTCApiType.PERSON)}isDestroyed(){return this._destroyed}__destroy(e){return this._leaveHandle(e)}_leaveHandle(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitRTCRoom(this._roomId)),this._pc.removeAllLocalTrack(),this._pinger.stop(),yield this._service.exit(this._getRTCReqestHeaders()),this._pc.destroy(),this._polarisReport=null,this._removeRemoteTracks())}))}_onLocalTrackDestroied(e){e instanceof Ne&&e.__isTiny()||this.unpublish([e])}_onLocalTrackMuted(e){return r(this,void 0,void 0,(function*(){const r=e.getTrackId(),n=this._context.getCurrentId(),s=[{resourceId:r,enabled:!e.isLocalMuted()}],o=this._roomResources[n]||[],a=[];for(let e=0;e<o.length;e+=1){const t=o[e],r=qe(t),i=s.findIndex((e=>e.resourceId===r));if(i>=0){const{enabled:e}=s[i];t.state=e?1:0,a.push(t);break}}const d=yield c((()=>this._context.setRTCTotalRes(this._roomId,Fe(lt.MODIFY,a),He(o),lt.TOTAL_CONTENT_RESOURCE)));d!==t.ErrorCode.SUCCESS&&i.error("notice `track.enabled` change failed -> code: "+d)}))}_removePubFailedTracks(e){e.forEach((e=>{const t=e instanceof Le?e:e.track;i.debug(`remove pub failed track from peerconnection -> trackId: ${t.getTrackId()}`),this._pc.removeLocalTrackById(t.getTrackId())}))}publish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__publish(e)))}))}__publish(n){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.error(`publish failed, room has been destroyed. -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof Le||e.track instanceof Le))),!0))return i.error(`publish failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._context.getCurrentId();if(this._pc.getLocalTracks().length+(e=>{let t=0;return e.forEach((e=>{e instanceof Le?t++:e.pubTiny&&e.track.isVideoTrack()?t+=2:t++})),t})(n)>10)return i.error(`publish failed, tracks limit exceeded -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PUBLISH_TRACK_LIMIT_EXCEEDED};i.debug(`publish tracks -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`),n.forEach((t=>{const{track:r,pubTiny:n}=t instanceof Le?{pubTiny:!1,track:t}:t;if(this._pc.addLocalTrack(r),r.isVideoTrack()&&n){let t;try{t=r.__innerGetMediaStreamTrack().clone();const i=n.frameRate||e.RCFrameRate.FPS_15,s=n.resolution||e.RCResolution.W176_H144,{width:o,height:a}=tt(s),c=nt(i);t.applyConstraints({width:o,height:a,frameRate:c})}catch(e){return null==t||t.stop(),void i.warn(`pubTiny failed -> id: ${r.getTrackId()}, msg: ${e.message}`)}this._pc.addLocalTrack(new Ne(r.getTag(),r.getUserId(),t,!0))}})),this._pc.clearReTryExchangeTimer();const s=yield this._createExchangeParams(this._subscribedList,!1),o=yield this._exchangeHandle(s);if(o.code!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${o.code}`),this._removePubFailedTracks(n),{code:o.code};const{publishList:a,sdp:c,resultCode:d,message:u,urls:l,mcuPublishList:h}=o.data;if(d!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${d}, msg: ${u}`),this._removePubFailedTracks(n),{code:d};const p=yield this._pc.setRemoteAnswer(c.sdp);if(p!==e.RCRTCCode.SUCCESS)return{code:p};const m=this._roomResources[r],_=a.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e))),{publishedList:C}=Ze(m,_),R=(null==h?void 0:h.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))))||[],f=yield this._context.setRTCTotalRes(this._roomId,Fe(lt.PUBLISH,C),He(_),lt.TOTAL_CONTENT_RESOURCE,He(R));if(f!==t.ErrorCode.SUCCESS)return i.error(`send publish streams notification failed: ${f}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._roomResources[r]=_;const v=C.map((e=>qe(e)));return this._polarisReport&&this._polarisReport.sendR2(Dt.PUBLISH,Nt.BEGIN,v),n.forEach((e=>{const{track:t}=e instanceof Le?{track:e}:e;t.__innerSetPublished(!0)})),i.debug(`publish success: ${v.join(",")}`),this._roomMode===t.RTCMode.LIVE?{code:e.RCRTCCode.SUCCESS,liveUrl:null==l?void 0:l.liveUrl}:{code:e.RCRTCCode.SUCCESS}}))}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){const t=yield this._createExchangeParams(this._subscribedList,!0),r=yield this._exchangeHandle(t);if(r.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${r.code}`),{code:r.code};const{sdp:n,resultCode:s}=r.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${s}`),{code:s};this._pc.clearReTryExchangeTimer();const o=yield this._pc.setRemoteAnswer(n.sdp);return o!==e.RCRTCCode.SUCCESS?{code:o}:void 0}))))}))}_exchangeHandle(e){return this._service.exchange(this._getRTCReqestHeaders(),e)}_getRTCReqestHeaders(){return{"App-Key":this._context.getAppkey(),RoomId:this._roomId,Token:this._token,RoomType:this._roomMode,UserId:this._context.getCurrentId()}}_createExchangeParams(e,t){return r(this,void 0,void 0,(function*(){return{sdp:yield this._pc.createOffer(t),extend:JSON.stringify({resolutionInfo:this._pc.getOutboundVideoInfo()}),subscribeList:e.filter((e=>{const t=e.track.getTrackId(),{userId:r}=ze(t);if(!this._roomResources[r])return!1;const i=this._roomResources[r].filter((e=>t===`${e.msid}_${e.mediaType}`)).length;return i})).map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._getResourceById(e.track.getTrackId()).uri}))),switchstream:!1}}))}_getResourceState(e){var t;return(null===(t=this.getLocalTrack(e))||void 0===t?void 0:t.isLocalMuted())?0:1}unpublish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unpublish(e)))}))}__unpublish(n){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.warn(`room has been destroyed, no need to unpublish tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};const r=this._context.getCurrentId();if(!t.validate("tracks",n,(()=>n.every((e=>e.getUserId()===r&&e instanceof Le))),!0))return i.warn(`unpublish failed, tracks is invalid -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`),{code:e.RCRTCCode.PARAMS_ERROR};const o=n.map((e=>e.getTrackId())),a=o.map(this._getResourceById.bind(this)).filter((e=>!!e));if(0===a.length)return{code:e.RCRTCCode.SUCCESS};const c=this._roomResources[r].filter((e=>!a.includes(e)));o.forEach((e=>this._pc.removeLocalTrackById(e))),null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.PUBLISH,Nt.END,o),this._pc.clearReTryExchangeTimer();const d=yield this._createExchangeParams(this._subscribedList,!1),u=yield this._exchangeHandle(d);if(u.code!==e.RCRTCCode.SUCCESS)return i.error(`exchange failed -> code: ${u.code}`),{code:u.code};const{publishList:l,sdp:h,resultCode:p,message:m,mcuPublishList:_}=u.data;p!==e.RCRTCCode.SUCCESS&&i.error(`unpublish streams failed -> code: ${p}, msg: ${m}`);const C=_?_.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))):[],R=yield this._context.setRTCTotalRes(this._roomId,Fe(lt.UNPUBLISH,a),He(c),lt.TOTAL_CONTENT_RESOURCE,He(C));if(R!==t.ErrorCode.SUCCESS)return i.error("send unpublish notification failed:",R),{code:e.RCRTCCode.SIGNAL_ERROR};i.debug(`unpublish success -> tracks: ${o.join(",")}`);const f=yield this._pc.setRemoteAnswer(h.sdp);if(f!==e.RCRTCCode.SUCCESS)return{code:f};const v=l.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e)));return this._roomResources[r]=v,{code:e.RCRTCCode.SUCCESS}}))}_getResourceById(e){const{userId:t}=ze(e);return this._roomResources[t].find((t=>qe(t)===e))}_isValidResourceId(e){var t;const{userId:r}=ze(e);return!!(null===(t=this._roomResources[r])||void 0===t?void 0:t.find((t=>qe(t)===e)))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,!1)))}))}__subscribe(n,s=!1){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.error(`subscribe failed, room has been destroyed -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`subscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`subscribe -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`);const r=this._subscribedList.map((e=>Object.assign({},e))),a=n.map((e=>e instanceof je?{track:e}:e));let c=!1;const d=[];return a.forEach((e=>{const t=e.track.getTrackId();d.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),c=!0)})),c||s?(null===(o=this._polarisReport)||void 0===o||o.sendR2(Dt.SUBSCRIBE,Nt.BEGIN,d),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__unsubscribe(n){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.warn(`room has beed destroyed, no need to unsubscribe tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`unsubscribe -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`);const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.SUBSCRIBE,Nt.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinRTCRoom` or `RCRTCClient.joinLivingRoom` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}getLocalTrack(e){return this._pc.getLocalTrack(e)}getLocalTracks(){return this._pc.getLocalTracks()}getRemoteTrack(e){return this._remoteTracks[e]||null}updateSubList(e){return r(this,void 0,void 0,(function*(){return c((()=>this._updateSubListHandle(e,!1)))}))}_updateSubListHandle(n,s=!1){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`update sublist failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`update subscribe list -> roomId: ${this._roomId}, forceReq: ${s}, tracks: ${n.map(wt)}`);let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const o={};r=r.filter((e=>{const t=e.track.getTrackId();return this._remoteTracks[t]?!o[t]&&(o[t]=!0):(i.warn(`track cannot found in room -> trackId: ${t}`),!1)})).map((e=>Object.assign({},e)));const a=this._subscribedList.map((e=>Object.assign({},e)));if(!s){let t=!1;if(r.forEach((e=>{const r=a.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);a.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),a.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const c=yield this._createExchangeParams(r,!1),d=yield this._exchangeHandle(c),u=r.map((e=>e.track.getTrackId()));if(d.code!==e.RCRTCCode.SUCCESS)return{code:d.code};const{sdp:l,resultCode:h,message:p,subscribedList:m}=d.data;if(h!==e.RCRTCCode.SUCCESS)return i.error(`change subscribe list failed: ${h}`),{code:h};i.debug(`subscribe success: ${u.join(",")}`);const _=yield this._pc.setRemoteAnswer(l.sdp);if(_!==e.RCRTCCode.SUCCESS)return{code:_};const C=null==m?void 0:m.map((e=>`${e.msid}_${e.mediaType}`)),R=r.filter((e=>null==C?void 0:C.includes(e.track.getTrackId()))),f=r.filter((e=>!(null==C?void 0:C.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=R.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...R),f.length?{code:e.RCRTCCode.SUCCESS,failedList:f}:{code:e.RCRTCCode.SUCCESS}}))}registerRoomEventListener(e){this._appListener=e}registerReportListener(e){this._pc.registerReportListener(e)}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}__onReconnected(n){return r(this,void 0,void 0,(function*(){if("closed"===this._pc.getRTCPeerConn().connectionState)return i.warn("RTCPeerConnection closed. Please rejoin room to restore services."),void this._rtcpeerClosed();const{code:r,data:s}=yield this._context.joinRTCRoom(this._roomId,this._roomMode,n);if(r!==t.ErrorCode.SUCCESS)return void i.error(`RTC __onReconnected getRTCRoomInfo failed: ${r}`);i.debug(`RTC __onReconnected getRTCRoomInfo success: ${JSON.stringify(s)}`);const o=[],a={},c={},d={},u=ut(s),l=Object.keys(u),h=Object.keys(this._roomResources);for(let e=l.length-1;e>=0;e-=1){const t=l[e],r=h.indexOf(t);if(-1===r){o.push(t),a[t]=Xe(u[t]);continue}const i=this._roomResources[t],n=u[t],{publishedList:s,modifiedList:p,unpublishedList:m}=Ze(i,n,!0);a[t]=Xe(s),c[t]=Xe(m),d[t]=Xe(p),h.splice(r,1)}h.length&&h.forEach((e=>{delete this._roomResources[e]})),Object.assign(this._roomResources,u),h.length&&this._callAppListener("onUserLeave",h),o.length&&this._callAppListener("onUserJoin",o);for(const e in c){const t=c[e];if(t.length){const e=t.map((e=>this._remoteTracks[qe(e)]));yield this._onUserUnpublish(e)}}return Object.keys(a).forEach((t=>{const r=a[t];if(0===r.length)return;const i=r.map((t=>{const r=qe(t),{userId:i,tag:n,mediaType:s}=ze(r),o=this._remoteTracks[r]=s===e.RCMediaType.AUDIO_ONLY?new Ve(n,i):new Be(n,i);return o.__innerSetRemoteMuted(0===t.state),o}));this._onTrackPublish(i)})),Object.keys(d).forEach((e=>{d[e].forEach((e=>{const t=qe(e),r=this._remoteTracks[t];r.__innerSetRemoteMuted(0===e.state),r.isAudioTrack()?this._onAudioMuteChange(r):this._onVideoMuteChange(r)}))})),{data:s}}))}_onAudioMuteChange(e){this._callAppListener("onAudioMuteChange",e)}_onVideoMuteChange(e){this._callAppListener("onVideoMuteChange",e)}_afterChangedRole(e){}_removeRemoteTracks(){const e=Object.values(this._remoteTracks);e.length&&(e.forEach((e=>{e.isAudioTrack()&&e.__releaseMediaElement()})),this._remoteTracks={})}}var $t,jt,Vt;e.BackgroundPictureFillMode=void 0,($t=e.BackgroundPictureFillMode||(e.BackgroundPictureFillMode={}))[$t.CROP=1]="CROP",$t[$t.WHOLE=2]="WHOLE",e.MixLayoutMode=void 0,(jt=e.MixLayoutMode||(e.MixLayoutMode={}))[jt.CUSTOMIZE=1]="CUSTOMIZE",jt[jt.SUSPENSION=2]="SUSPENSION",jt[jt.ADAPTATION=3]="ADAPTATION",e.MixVideoRenderMode=void 0,(Vt=e.MixVideoRenderMode||(e.MixVideoRenderMode={}))[Vt.CROP=1]="CROP",Vt[Vt.WHOLE=2]="WHOLE";const Bt=()=>({version:1,mode:e.MixLayoutMode.SUSPENSION});class Ft{constructor(e,t,r){this._onFlush=e,this._isValidTrackId=t,this._sendCDNInfoSignal=r,this._values=Bt()}setHostVideoTrack(t){if(!this._isValidTrackId(t))return i.error(`setHostVideoTrack failed: videoTrackId is invalid -> ${t}`),this;const{mediaType:r,tag:n,userId:s}=ze(t);return r!==e.RCMediaType.VIDEO_ONLY?(i.error(`setHostVideoTrack failed: kind of resource is not 'video' -> ${t}`),this):(this._values.host_stream_id=Qe(s,n),this)}setMixLayoutMode(t){return[e.MixLayoutMode.CUSTOMIZE,e.MixLayoutMode.SUSPENSION,e.MixLayoutMode.ADAPTATION].includes(t)?(this._values.mode=t,this):(i.error(`layout mode is invalid: ${t}`),this)}_addOutputValue(t,r,i="normal"){const n=this._values.output||(this._values.output={video:{normal:{width:640,height:480}}});if("cdn"===t)return void(n.cdn=r);if("audio"===t)return void(n.audio={bitrate:r});const s=n.video;if("normal"!==i&&"tiny"!==i)if("backgroundColor"!==i)if("exparams"!==i){if("backgroundPicture"===i){const t=s.backgroundPicture||(s.backgroundPicture={fillMode:e.BackgroundPictureFillMode.CROP,picture:[]});Object.assign(t,r)}}else s.exparams={renderMode:r};else s.backgroundColor=r;else{const e=s[i]||(s[i]={});Object.assign(e,r)}}setOutputVideoResolution(e){if(!rt(e))return i.warn("setOutputVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"normal"),this}setOutputVideoFPS(e){if(!it(e))return i.warn("setOutputVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"normal"),this}setOutputVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"normal"),this}setOutputTinyVideoResolution(e){if(!rt(e))return i.warn("setOutputTinyVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"tiny"),this}setOutputTinyVideoFPS(e){if(!it(e))return i.warn("setOutputTinyVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"tiny"),this}setOutputTinyVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"tiny"),this}setOutputVideoRenderMode(t){return[e.MixVideoRenderMode.CROP,e.MixVideoRenderMode.WHOLE].includes(t)?this._addOutputValue("video",t,"exparams"):i.error(`renderMode is invalid: ${t}`),this}setOutputAudioBitrate(e){return t.isNumber(e)&&e>0?this._addOutputValue("audio",e):i.error(`bitrate is invalid: ${e}`),this}setOutputBackgroundColor(e){return/^0x[a-fA-F0-9]{6}$/.test(e)?this._addOutputValue("video",e,"backgroundColor"):i.error(`color is invalid: ${e}`),this}addOutputBackgroundPicture(e,r,n,s,o){var a,c,d;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;if([r,n,s,o].some((e=>!t.isNumber(e)||e<0||e>1)))return i.error(`some attrs of (x, y, w, h) is invalid: ${r}, ${n}, ${s}, ${o}`),this;const u=(null===(d=null===(c=null===(a=this._values.output)||void 0===a?void 0:a.video)||void 0===c?void 0:c.backgroundPicture)||void 0===d?void 0:d.picture)||[];return u.push({uri:e,w:s,h:o,x:r,y:n}),this._addOutputValue("video",{picture:u},"backgroundPicture"),this}removeOutputBackgroundPicture(e){var r,n,s;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;let o=null===(s=null===(n=null===(r=this._values.output)||void 0===r?void 0:r.video)||void 0===n?void 0:n.backgroundPicture)||void 0===s?void 0:s.picture;return o&&(o=o.filter((t=>t.uri!==e)),this._addOutputValue("video",{pictures:o},"backgroundPicture")),this}clearOutputBackgroundPicture(){return this._addOutputValue("video",{pictures:[]},"backgroundPicture"),this}setOutputBackgroundPictureFillMode(t){return[e.BackgroundPictureFillMode.CROP,e.BackgroundPictureFillMode.WHOLE].includes(t)?this._addOutputValue("video",{fillMode:t},"backgroundPicture"):i.error(`fillMode is invalid: ${t}`),this}addPublishStreamUrls(e){var r,n;const s=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!s.test(e))))return i.error(`urls is invalid: ${e}`),this;const o=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];let a=!1;return e.forEach((e=>{o.some((t=>t.pushurl===e))||(a=!0,o.push({pushurl:e}))})),o.length>5?(i.error("publish stream url no more than 5"),this):(a&&this._addOutputValue("cdn",o),this)}removePublishStreamUrls(e){var r,n;const s=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!s.test(e))))return i.error(`urls is invalid: ${e}`),this;const o=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];for(let t=o.length-1;t>=0;t-=1){const{pushurl:r}=o[t],i=e.indexOf(r);i>=0&&(e.splice(i,1),o.splice(t,1))}return this._addOutputValue("cdn",o),this}clearPublishStreamUrls(){return this._addOutputValue("cdn",[]),this}addCustomizeLayoutVideo(r,n,s,o,a){if(!this._isValidTrackId(r))return i.error(`trackId is invalid: ${r}`),this;if(!t.isNumber(n)||!t.isNumber(s))return i.error(`some attrs of (x, y) is invalid: ${n}, ${s}`),this;if([o,a].some((e=>!t.isNumber(e)||e<0)))return i.error(`some attrs of (width, height) is invalid: ${o}, ${a}`),this;const{userId:c,tag:d,mediaType:u}=ze(r);if(u!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${r}`),this;const l=Qe(c,d);return(this._values.input||(this._values.input={video:[]})).video.push({user_id:c,stream_id:l,x:n,y:s,width:o,height:a}),this}removeCustomizeLayoutVideo(t){if(!this._isValidTrackId(t))return i.error(`trackId is invalid: ${t}`),this;const{userId:r,tag:n,mediaType:s}=ze(t);if(s!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${t}`),this;const o=Qe(r,n),a=this._values.input||(this._values.input={video:[]});return a.video=a.video.filter((e=>e.stream_id===o)),this}clearCustomizeLayoutVideo(){return(this._values.input||(this._values.input={video:[]})).video=[],this}flush(){var t,i,n,s;return r(this,void 0,void 0,(function*(){const r=JSON.parse(JSON.stringify(this._values)),{code:o}=yield this._onFlush(r);return o===e.RCRTCCode.SUCCESS&&((null===(i=null===(t=this._values.output)||void 0===t?void 0:t.video.normal)||void 0===i?void 0:i.width)||(null===(s=null===(n=this._values.output)||void 0===n?void 0:n.video.normal)||void 0===s?void 0:s.fps))&&this._sendCDNInfoSignal(),this._values=Bt(),{code:o}}))}}var Ht,Gt,Jt;!function(e){e[e.OPEN=1]="OPEN",e[e.STOP=2]="STOP"}(Ht||(Ht={})),function(e){e[e.SPREAD=0]="SPREAD",e[e.NO_SPREAD=-1]="NO_SPREAD"}(Gt||(Gt={})),function(e){e[e.AUTOMATIC=0]="AUTOMATIC",e[e.MANUAL=1]="MANUAL"}(Jt||(Jt={}));class Wt extends Ut{constructor(e,r,i,n,s,o,a,c,d=!1){var u;super(e,r,i,n,t.RTCMode.LIVE,s,o,a,d),this._livingType=c,this._CDNUris=null,this._CDNEnable=!1,this._mcuConfigBuilder=new Ft(this._onMCUConfigFlush.bind(this),this._isValidResourceId.bind(this),this._sendCDNInfoSignal.bind(this));const l=null===(u=n.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===u?void 0:u.value;l&&(this._CDNUris=JSON.parse(l)[0])}getLivingType(){return this._livingType}getMCUConfigBuilder(){return this._mcuConfigBuilder}_onMCUConfigFlush(t){return r(this,void 0,void 0,(function*(){const r={"App-Key":this._context.getAppkey(),Token:this._token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},{code:n,res:s}=yield this._service.setMcuConfig(r,t);return n!==e.RCRTCCode.SUCCESS?(i.error(`set MCU config failed: ${n}`),{code:n}):(i.info("set MCU config success"),s.pull_url&&(this._CDNUris=JSON.parse(s.pull_url)),{code:n,res:s})}))}__onReconnected(){const e=Object.create(null,{__onReconnected:{get:()=>super.__onReconnected}});var t,i;return r(this,void 0,void 0,(function*(){const r=yield e.__onReconnected.call(this,this._livingType);if(!r||!r.data)return;const n=r.data.roomInfo,s=null===(t=n.filter((e=>"cdn_uris"===e.key))[0])||void 0===t?void 0:t.value;if(!s)return;const o=JSON.parse(s);(null===(i=this._CDNUris)||void 0===i?void 0:i.enableInnerCDN)!==o.enableInnerCDN&&this._callAppListener("onCDNEnableChange",o.enableInnerCDN),this._CDNUris=o}))}enableInnerCDN(n){return r(this,void 0,void 0,(function*(){if(!t.isBoolean(n))return i.error("`enable` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};this._CDNEnable=n;const s={version:2,output:{inCDNModel:n?Ht.OPEN:Ht.STOP}},{code:o}=yield this._onMCUConfigFlush(s);if(o!==e.RCRTCCode.SUCCESS)return i.error(`enableInnerCDN failed -> code: ${o}`),{code:e.RCRTCCode.SIGNAL_ERROR};if(this._CDNUris&&this._CDNUris.broadcast!==Gt.SPREAD)return i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS};const{code:a}=yield c((()=>r(this,void 0,void 0,(function*(){return this._sendCDNInfoSignal()}))));return a===e.RCRTCCode.SUCCESS?(i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS}):(i.error(`enableInnerCDN failed -> code: ${a}`),{code:a})}))}_sendCDNInfoSignal(){return r(this,void 0,void 0,(function*(){this._CDNUris=Object.assign({},this._CDNUris,{enableInnerCDN:this._CDNEnable});return(yield Promise.all([this._spreadCDNInfo(this._CDNUris),this._setRoomCDNInfo(this._CDNUris)])).every((t=>t.code===e.RCRTCCode.SUCCESS))?{code:e.RCRTCCode.SUCCESS}:{code:e.RCRTCCode.SIGNAL_ERROR}}))}_spreadCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCCDNUris(this._roomId,lt.TOTAL_CONTENT_RESOURCE,JSON.stringify([n]));return r!==t.ErrorCode.SUCCESS?(i.error(`spreadCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("spreadCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_setRoomCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,"cdn_uris",JSON.stringify([n]),!0,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`setRoomCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("setRoomCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_resourceHandle(e,t,i){const n=Object.create(null,{_resourceHandle:{get:()=>super._resourceHandle}});var s;return r(this,void 0,void 0,(function*(){n._resourceHandle.call(this,e,t,i),e.cdn_uris&&((null===(s=this._CDNUris)||void 0===s?void 0:s.enableInnerCDN)!==e.cdn_uris[0].enableInnerCDN&&this._callAppListener("onCDNEnableChange",!this.__getCDNEnable()),this._CDNUris=e.cdn_uris[0])}))}_exchangeHandle(t){var i,n,s;return r(this,void 0,void 0,(function*(){const r=yield this._service.exchange(this._getRTCReqestHeaders(),t),o=null===(n=null===(i=r.data)||void 0===i?void 0:i.urls)||void 0===n?void 0:n.pull_url;return r.code===e.RCRTCCode.SUCCESS&&o?(this._CDNUris=JSON.parse(o),(null===(s=this._CDNUris)||void 0===s?void 0:s.broadcast)===Gt.SPREAD&&(this._CDNEnable=!0,this._sendCDNInfoSignal()),r):r}))}_afterChangedRole(e){const t=ut(e),r=this._context.getCurrentId(),i=Object.keys(t);setTimeout((()=>{var n,s,o;const a=i.filter((e=>e!==r));a.length>0&&this._callAppListener("onUserJoin",a);for(const e in t)e!==r&&this._resourceHandle({uris:t[e]},lt.TOTAL_CONTENT_RESOURCE,e);(null===(n=e.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===n?void 0:n.value)&&(null===(s=this._CDNUris)||void 0===s?void 0:s.push_mode)===Jt.MANUAL&&this._callAppListener("onCDNEnableChange",null===(o=this._CDNUris)||void 0===o?void 0:o.enableInnerCDN)}))}__getCDNEnable(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.enableInnerCDN}__getCDNPushMode(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.push_mode}}class Yt extends Ut{constructor(e,r,i,n,s,o,a){super(e,r,i,n,t.RTCMode.RTC,s,o,a,!1)}}const Kt=()=>({"Content-Type":"application/json;charset=UTF-8","Cache-Control":"no-cache",ClientType:`web|${st.browser}|${st.version}`,ClientVersion:"5.2.4","Client-Session-Id":"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})),"Request-Id":Date.now().toString()});class qt{constructor(e,t,r,i=5e3){this._runtime=e,this._context=t,this._msUrl=r,this._timeout=i,this._msInNavi=[],this._failedMs=[],this._rtcFinger=void 0,this._clusterId="",this._configUrl=""}getNaviMS(){return this._msUrl?[this._msUrl]:this._clusterId?[`https://${this._clusterId}`]:(0===this._msInNavi.length&&(0===this._failedMs.length?this._msInNavi.push(...(e=>{var t;if(!e)return[];let r;try{r=JSON.parse(e.voipCallInfo||'{ "strategy": 0 }')}catch(t){return i.warn("parse `voipCallInfo` of navi failed: "+e.voipCallInfo),[]}if(0===r.strategy)return[];const n=null===(t=r.callEngine)||void 0===t?void 0:t.filter((e=>4===e.engineType));if(!n||0===n.length)return[];const s=n[0],o=[];return s.mediaServer&&o.push(s.mediaServer.replace(/^(https?:\/\/)?/,"https://")),s.backupMediaServer&&s.backupMediaServer.forEach((e=>{o.push(e.replace(/^(https?:\/\/)?/,"https://"))})),o})(this._context.getNaviInfo())):(this._msInNavi.push(...this._failedMs),this._failedMs.length=0)),this._msInNavi.map((e=>e.trim())))}_request(n,s,o){return r(this,void 0,void 0,(function*(){const r=this.getNaviMS();if(0===r.length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};this._rtcFinger&&(o.rtcFinger=this._rtcFinger);for(let a=0;a<r.length;a+=1){const c=`${r[a]}${n}`,d=Kt();i.debug(`request -> Request-Id: ${d["Request-Id"]}, url: ${c}`);const{status:u,data:l}=yield this._runtime.httpReq({url:c,body:JSON.stringify(o),headers:Object.assign(Object.assign({},d),s),method:t.HttpMethod.POST,timeout:this._timeout});if(200===u){const t=JSON.parse(l);return t.rtcFinger&&(this._rtcFinger=t.rtcFinger),t.clusterId&&(this._clusterId=t.clusterId),i.debug(`request success -> Request-Id: ${d["Request-Id"]}`),{code:e.RCRTCCode.SUCCESS,data:t}}i.warn(`request failed -> Request-Id: ${d["Request-Id"]}, status: ${u}, url: ${c}`),this._failedMs.push(...this._msInNavi.splice(a,1))}return{code:e.RCRTCCode.REQUEST_FAILED}}))}exchange(t,i){var n;return r(this,void 0,void 0,(function*(){const r=yield this._request("/exchange",t,i);if(r.code===e.RCRTCCode.SUCCESS&&(null===(n=r.data)||void 0===n?void 0:n.resultCode)===e.RCRTCCode.SUCCESS){const e=r.data.urls;e&&(this._configUrl=e.configUrl)}return r}))}exit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/exit",e,{});return t}))}broadcastSubscribe(e,t){return this._request("/broadcast/subscribe",e,t)}broadcastExit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/broadcast/exit",e,{});return{code:t}}))}setMcuConfig(n,s){return r(this,void 0,void 0,(function*(){if(!this._configUrl)return{code:e.RCRTCCode.MCU_SERVER_NOT_FOUND};const r=`${this._configUrl.replace(/^(https?:\/\/)?/,"https://")}/server/mcu/config`,o=Kt();i.debug(`request -> Request-Id: ${o["Request-Id"]}, url: ${r}`);const{status:a,data:c}=yield this._runtime.httpReq({url:r,headers:Object.assign(Object.assign({},o),n),body:JSON.stringify(s),method:t.HttpMethod.POST});if(200===a){i.debug(`request success -> Request-Id: ${o["Request-Id"]}`);const e=JSON.parse(c);return{code:e.resultCode,res:e}}return{code:e.RCRTCCode.REQUEST_FAILED}}))}getCDNResourceInfo(n,s){return r(this,void 0,void 0,(function*(){const r=Kt(),{status:o,data:a}=yield this._runtime.httpReq({url:s,headers:Object.assign(Object.assign({},r),n),method:t.HttpMethod.GET});if(200===o){const e=JSON.parse(a);return{code:e.resultCode,res:e}}return i.warn(`request failed -> Request-Id: ${r["Request-Id"]}, status: ${o}, url: ${s}`),{code:e.RCRTCCode.REQUEST_FAILED}}))}}var zt,Qt,Xt;e.RCLivingType=void 0,(zt=e.RCLivingType||(e.RCLivingType={}))[zt.VIDEO=0]="VIDEO",zt[zt.AUDIO=1]="AUDIO";class Zt{constructor(e,t,r){this._context=e,this._rtcToken="",this._liveUrl="",this._subTracks=[],this._livingType=null,this._mediaType=null,this._subTiny=!1,this._fromRetry=!1,this._appListener=null,this._service=new qt(t,e,r.mediaServer)}_getReqHeaders(n){return r(this,void 0,void 0,(function*(){const r=this._context.getCurrentId(),s=r;if(!this._rtcToken){const{code:r,data:o}=yield this._context.getRTCToken(s,t.RTCMode.LIVE,n);if(r!==t.ErrorCode.SUCCESS)return i.error(`getRTCToken failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._rtcToken=o.rtcToken}return{code:e.RCRTCCode.SUCCESS,headers:{"App-Key":this._context.getAppkey(),UserId:r,RoomId:s,RoomType:t.RTCMode.LIVE,Token:this._rtcToken}}}))}_clearSubscribeInfo(){var e;this._liveUrl="",this._livingType=null,this._mediaType=null,this._subTiny=!1,this._subTracks.length=0,null===(e=this._pc)||void 0===e||e.destroy(),this._pc=null}_reTryExchange(){var t;return r(this,void 0,void 0,(function*(){this._fromRetry=!0;const{code:r}=yield this.subscribe(this._liveUrl,this._livingType,this._mediaType,this._subTiny);r===e.RCRTCCode.SUCCESS&&(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer())}))}subscribe(e,t,i,n=!1){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,t,i,n)))}))}__subscribe(n,s,o,a=!1){var c;return r(this,void 0,void 0,(function*(){const r=[];if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,tracks:r};if(!this._fromRetry&&(null===(c=this._pc)||void 0===c||c.clearReTryExchangeTimer()),this._fromRetry=!1,!t.isString(n))return i.error(`liveUrl is invalid: ${n}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCLivingType.AUDIO,e.RCLivingType.VIDEO].includes(s))return i.error(`livingType is invalid: ${s}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCMediaType.AUDIO_ONLY,e.RCMediaType.VIDEO_ONLY,e.RCMediaType.AUDIO_VIDEO].includes(o))return i.error(`mediaType is invalid: ${o}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(this._liveUrl&&this._liveUrl!==n)return{code:e.RCRTCCode.BROADCAST_SUB_LIST_NOT_EMPTY,tracks:r};this._pc||(this._pc=new Pt(this._reTryExchange.bind(this)),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this.registerReportListener(this._reportListener)),this._liveUrl=n;const{code:d,headers:u}=yield this._getReqHeaders(s);if(d!==e.RCRTCCode.SUCCESS)return{code:d,tracks:r};const l=`rc_mcu_${Date.now()}`,h="RongCloudRTC";0===this._subTracks.length&&(this._subTracks.push(new Ve(h,l),new Be(h,l)),this._pc.updateSubRemoteTracks(this._subTracks.slice()));const p={sdp:yield this._pc.createOffer(!0),liveUrl:n,mediaType:o,simulcast:a?mt.TINY:mt.NORMAL,switchstream:!1},m=yield this._service.broadcastSubscribe(u,p);if(m.code!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed: ${m.code}`),{code:m.code,tracks:r};const _=m.data;if(_.resultCode!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed! code: ${_.resultCode}; message: ${_.message}`),{code:_.resultCode,tracks:r};i.debug(`andience subscribe success: ${n}`),this._livingType=s,this._mediaType=o,this._subTiny=a;const{sdp:C,subscribedList:R}=_,f=[];return R.forEach((e=>{const{mediaType:t}=e,r=this._subTracks[t];f.push(r),r.__innerSetRemoteMuted(!0)})),this._pc.setRemoteAnswer(C.sdp),{code:e.RCRTCCode.SUCCESS,tracks:f}}))}unsubscribe(){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe()))}))}__unsubscribe(){var t;return r(this,void 0,void 0,(function*(){if(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer(),!this._rtcToken||!this._liveUrl)return{code:e.RCRTCCode.SUCCESS};const{headers:r}=yield this._getReqHeaders(),{code:n}=yield this._service.broadcastExit(r);return n!==e.RCRTCCode.SUCCESS?i.error(`broadcast unsubscribe failed: ${n}`):i.debug("broadcast unsubscribe success"),this._clearSubscribeInfo(),{code:n}}))}registerReportListener(e){var t;this._reportListener=e,null===(t=this._pc)||void 0===t||t.registerReportListener(e)}registerTrackEventListener(e){this._appListener=e}_onTrackReady(t){var r,n;const s=t.receiver.track,o="audio"===s.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY,a=this._subTracks[o];a.__innerSetMediaStreamTrack(s);try{null===(n=null===(r=this._appListener)||void 0===r?void 0:r.onTrackReady)||void 0===n||n.call(r,a)}catch(e){i.error(e)}}}e.RCInnerCDNPullKind=void 0,(Qt=e.RCInnerCDNPullKind||(e.RCInnerCDNPullKind={})).RTMP="rtmp",Qt.FLV="flv",Qt.HLS="hls",e.RCInnerCDNPullIsHttps=void 0,(Xt=e.RCInnerCDNPullIsHttps||(e.RCInnerCDNPullIsHttps={}))[Xt.NOT_HTTPS=0]="NOT_HTTPS",Xt[Xt.HTTPS=1]="HTTPS";const er=Object.assign(Object.assign({},tt(e.RCResolution.W176_H144)),{frameRate:nt(e.RCFrameRate.FPS_15)});class tr{constructor(t,r,n,s,o,a){this._context=t,this._runtime=r,this._initOptions=n,this._roomId=s,this._joinResData=o,this._livingType=a,this._roomAnchorList=[],this._roomRes={},this._roomAnchorRes={},this._remoteTracks={},this._appListener=null,this._subscribedList=[],this._sessionId="",this._destroyed=!1,this._setInitData(),this._service=new qt(this._runtime,this._context,this._initOptions.mediaServer,this._initOptions.timeout),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this,Lt.Audience),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,(t=>{const r=t.streams[0].id,n=t.receiver.track,s=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),o=this._remoteTracks[s];o?(o.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",o)):i.warn("cannot found RCRemoteTrack:",n.id)})),this._context.onrtcdatachange=this.singalDataChange.bind(this)}_setInitData(){const{sessionId:t,remoteUserIds:r,remoteRTCUris:i,remoteMUCUris:n,remoteTracks:s,CDNUris:o}=((t,r)=>{const i=r.filter((e=>"RC_RTC_SESSIONID"===e.key))[0].value,n=r.filter((e=>"RC_ANCHOR_LIST"===e.key)).map((e=>JSON.parse(e.value||"[]")))[0],s=r.filter((e=>e.key.includes("RC_RES_"))).map((e=>JSON.parse(e.value||"{}"))),o=s.length?JSON.parse(s[0].mcu_uris||"[]"):[],a=[];o.forEach((r=>{const{mediaType:i,tag:n}=r,s=i===e.RCMediaType.AUDIO_ONLY?new Ve(n,"",t):new Be(n,"",t);a.push(s)}));const c=[],d=[];s.forEach((t=>{const r=JSON.parse(t.uris||"[]");c.push(...r),r.forEach((t=>{const{mediaType:r,tag:i,msid:n}=t,s=n.split("_")[0],o=r===e.RCMediaType.AUDIO_ONLY?new Ve(i,s):new Be(i,s);d.push(o)}))}));const u=r.filter((e=>"RC_CDN"===e.key)).map((e=>{const t=JSON.parse(e.value||"[]");return JSON.parse(t.cdn_uris)[0]}))[0];return{sessionId:i,remoteUserIds:n||[],remoteRTCUris:c,remoteMUCUris:o,remoteRTCTracks:d,remoteMCUTracks:a,remoteTracks:[...d,...a],CDNUris:u||{}}})(this._roomId,this._joinResData.kvEntries);this._sessionId=t,this._roomAnchorList=r,s.forEach((e=>{this._remoteTracks[e.getTrackId()]=e})),this._CDNUris=o,i.forEach((e=>{const t=e.msid.split("_")[0];this._roomAnchorRes[t]?this._roomAnchorRes[t].push(e):this._roomAnchorRes[t]=[e]})),n.forEach((e=>{const{mediaType:t,tag:r}=e,i=[this._roomId,r,t].join("_");this._roomRes[i]=e})),i.forEach((e=>{const t=qe(e);this._roomRes[t]=e}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinLivingRoomAsAudience` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}singalDataChange(e,t){var r;if(t!==this._roomId)return void i.warn(`singalDataChange -> not the current room data: data roomId: ${t}, current roomId: ${this._roomId}`);i.debug("singalDataChange -> singalData:",JSON.stringify(e||{}));const n=[],s=null===(r=e.filter((e=>"RC_CDN"===e.key))[0])||void 0===r?void 0:r.value;s&&this._diffCDNUris(JSON.parse(JSON.parse(s).cdn_uris)[0]),e.forEach((e=>{const{key:t,value:r,timestamp:i,uid:s}=e;if(-1!==t.indexOf("RC_RES_")){const e=JSON.parse(r||"{}"),t=JSON.parse(e.mcu_uris||"[]"),i=JSON.parse(e.uris||"[]");return n.push(...t),void this._diffAnchorResource(i,s)}if("RC_ANCHOR_LIST"===t){const e=JSON.parse(r||"[]"),{joinUserIds:t,leftUserIds:i}=this._diffAnchorList(e);t.length>0&&this._handleNewJoinedAnchor(t),i.length>0&&this._handleLeftedAnchor(i)}})),this._diffRoomResource(n)}_diffAnchorList(e){const t=e.filter((e=>this._roomAnchorList.indexOf(e)<0));return{leftUserIds:this._roomAnchorList.filter((t=>e.indexOf(t)<0)),joinUserIds:t}}_handleNewJoinedAnchor(e){this._roomAnchorList.push(...e),this._callAppListener("onAnchorJoin",e)}_handleLeftedAnchor(e){return r(this,void 0,void 0,(function*(){this._roomAnchorList=this._roomAnchorList.filter((t=>!(e.indexOf(t)>-1)));const t=[];e.forEach((e=>{t.push(...this.getRemoteTracksByUserId(e)),delete this._roomAnchorRes[e]})),t.length&&(yield this.unsubscribe(t),t.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),this._callAppListener("onAnchorLeave",e)}))}_diffRoomResource(t){return r(this,void 0,void 0,(function*(){const r=[],i=[],n=[];t.forEach((t=>{const i=qe(t),{userId:s,tag:o,mediaType:a}=ze(i),c=[this._roomId,o,a].join("_");if(!this._remoteTracks[c]){const i=a===e.RCMediaType.AUDIO_ONLY?new Ve(o,"",this._roomId):new Be(o,"",this._roomId);r.push(i),this._remoteTracks[c]=i,this._roomRes[i.getTrackId()]=t}n.push(c)})),Object.keys(this._remoteTracks).forEach((e=>{n.indexOf(e)<0&&this._remoteTracks[e].isMCUTrack()&&i.push(this._remoteTracks[e])})),r.length>0&&this._callAppListener("onTrackPublish",r),i.length>0&&this._onUserUnpublish(i,"onTrackUnpublish")}))}_diffAnchorResource(t,n){return r(this,void 0,void 0,(function*(){const r=this._roomAnchorRes[n]||(this._roomAnchorRes[n]=[]),{publishedList:s,unpublishedList:o,modifiedList:a}=Ze(r,t);if(s.length){const t=r.map(qe),n=[],o=[];if(s.forEach((i=>{const s=qe(i),a=t.indexOf(s),{userId:c,tag:d,mediaType:u}=ze(s);a>-1?r[a]=i:r.push(i);let l=this._remoteTracks[s];this._roomRes[s]=i,l?l.isSubscribed()&&n.push(l):(l=u===e.RCMediaType.AUDIO_ONLY?new Ve(d,c):new Be(d,c),this._remoteTracks[s]=l,o.push(l)),l.__innerSetRemoteMuted(0===i.state)})),n.length){const t=n.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:r}=yield c((()=>this._subscribeHandle(n,!0)));r!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${r}, ids: ${JSON.stringify(t)}`)}this._callAppListener("onAnchorTrackPublish",o)}if(o.length){const e=o.map(qe);for(let t=r.length-1;t>=0;t-=1){const i=r[t];e.includes(qe(i))&&r.splice(t,1)}const t=o.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t,"onAnchorTrackUnpublish")}if(a.length){const e=r.map(qe);for(let t=0;t<a.length;t++){const i=a[t],n=qe(i),s=e.indexOf(n);r[s].state=i.state;const o=this._remoteTracks[n];o.__innerSetRemoteMuted(0===i.state),o.isAudioTrack()?this._callAppListener("onAudioMuteChange",o):this._callAppListener("onVideoMuteChange",o)}}}))}_onUserUnpublish(e,t){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{this._subscribedList=this._subscribedList.filter((t=>t.track.getTrackId()!==e.getTrackId())),delete this._roomRes[e.getTrackId()],e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._callAppListener(t,e)}))}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){var t;const{reqBody:r}=yield this._createSubscribeParams(this._subscribedList,{},!0),n=yield this._exchangeHandle(r);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:s,resultCode:o}=n.data;if(o!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${o}`),{code:o};this._pc.clearReTryExchangeTimer();const a=this._subscribedList.filter((e=>e.track.isMCUTrack()));if(a.length>0){const e=a[0].track.getTrackId(),r=null===(t=this._roomRes[e])||void 0===t?void 0:t.msid,i=[this._roomId,"RongCloudRTC"].join("_");s.sdp=s.sdp.replace(new RegExp(r,"g"),i)}const c=yield this._pc.setRemoteAnswer(s.sdp);return c!==e.RCRTCCode.SUCCESS?{code:c}:void 0}))))}))}_createSubscribeParams(e,t,i){return r(this,void 0,void 0,(function*(){const r=yield this._pc.createOffer(i),n={resolutionInfo:[]},s={min:0,max:0};Object.keys(t).forEach((e=>{const{mediaStream:i,tinyStream:o}=t[e];[i,o].forEach(((t,i)=>{var o;const a=1===i?[e,"tiny"].join("_"):e;r.sdp=null===(o=r.sdp)||void 0===o?void 0:o.replace(new RegExp(t.id,"g"),a);const c=t.getVideoTracks()[0];if(!c)return;const d=0===i,{width:u,height:l,frameRate:h}=d?Ye(c):er;n.resolutionInfo.push({trackId:c.id,simulcast:d?mt.NORMAL:mt.TINY,resolution:`${u}x${l}`});const p=Ie(u,l),m=be(h);s.min+=p.minBitrate*m,s.max+=p.maxBitrate*m}))}));return{reqBody:{sdp:r,switchstream:!1,newVersionFlag:!0,subscribeList:e.map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._roomRes[e.track.getTrackId()].uri})))},dynamicBitrate:s,offer:r}}))}_subscribeHandle(i,n=!1){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",i,(()=>t.isArray(i)&&i.length>0&&i.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))),o=i.map((e=>e instanceof je?{track:e}:e));let a=!1;const c=[];return o.forEach((e=>{const t=e.track.getTrackId();c.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),a=!0)})),a||n?(null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.SUBSCRIBE,Nt.BEGIN,c),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}_getReqHeaders(){const e=this._context.getCurrentId();return{"App-Key":this._context.getAppkey(),RoomId:e,Token:this._joinResData.token,RoomType:t.RTCMode.LIVE,UserId:e,"Session-Id":this._sessionId}}_exchangeHandle(e){return this._service.broadcastSubscribe(this._getReqHeaders(),e)}_updateSubListHandle(n,s=!1){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const a={};r=r.filter((e=>{const t=e.track.getTrackId();return!a[t]&&(a[t]=!0)})).map((e=>Object.assign({},e)));const c=this._subscribedList.map((e=>Object.assign({},e)));if(!s){let t=!1;if(r.forEach((e=>{const r=c.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);c.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),c.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const{reqBody:d}=yield this._createSubscribeParams(r,{},!1),u=yield this._exchangeHandle(d);if(c.length){const e=[];c.forEach((t=>{e.push(t.track.getTrackId())})),null===(o=this._pc.reportParser)||void 0===o||o.clearLatestPacketsRecv(e)}if(u.code!==e.RCRTCCode.SUCCESS)return{code:u.code};const{sdp:l,resultCode:h,message:p,subscribedList:m}=u.data;if(h!==e.RCRTCCode.SUCCESS)return i.error("change subscribe list failed:",p,h),{code:h};r.forEach((e=>{const{track:t}=e;if(t.isMCUTrack()){const e=this._roomRes[t.getTrackId()].msid,{tag:r,userId:i}=ze(t.getTrackId()),n=[i,r].join("_");l.sdp=l.sdp.replace(new RegExp(e,"g"),n)}}));const _=yield this._pc.setRemoteAnswer(l.sdp);if(_!==e.RCRTCCode.SUCCESS)return{code:_};const C=null==m?void 0:m.map((e=>`${e.msid}_${e.mediaType}`)),R=r.filter((e=>{if(e.track.isMCUTrack()){const t=this._roomRes[e.track.getTrackId()],r=`${t.msid}_${t.mediaType}`;return C.includes(r)}return null==C?void 0:C.includes(e.track.getTrackId())})),f=null==R?void 0:R.map((e=>`${e.track.getTrackId()}`)),v=r.filter((e=>!(null==f?void 0:f.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=R.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...R),v.length?{code:e.RCRTCCode.SUCCESS,failedList:v}:{code:e.RCRTCCode.SUCCESS}}))}_diffCDNUris(e){return r(this,void 0,void 0,(function*(){if(this._CDNUris.url&&!e.url)return this._callAppListener("onCDNInfoDisable"),void(this._CDNUris=e);(!this._CDNUris||!this._CDNUris.url&&e.url)&&this._callAppListener("onCDNInfoEnable",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`});const t=this._CDNUris.w&&e.w&&this._CDNUris.w!==e.w,r=this._CDNUris.h&&e.h&&this._CDNUris.h!==e.h,i=this._CDNUris.fps&&e.fps&&this._CDNUris.fps!==e.fps;(t||r||i)&&this._callAppListener("onCDNInfoChange",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`}),this._CDNUris=e}))}_getCDNPlayUrl(t){return r(this,void 0,void 0,(function*(){const{w:r,h:n,fps:s}=t,o=this._initOptions.pullInnerCDNProtocol||e.RCInnerCDNPullKind.FLV,a=this._initOptions.pullInnerCDNUseHttps===e.RCInnerCDNPullIsHttps.NOT_HTTPS?e.RCInnerCDNPullIsHttps.NOT_HTTPS:e.RCInnerCDNPullIsHttps.HTTPS;if(!this._CDNUris.url)return i.error(`cdn_uris url is empty, the anchor need to open or push CDN, code: ${e.RCRTCCode.CDN_RESOURCE_IS_EMPTY}`),{code:e.RCRTCCode.CDN_RESOURCE_IS_EMPTY};const c={"App-Key":this._context.getAppkey(),Token:this._joinResData.token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},d=[];r&&d.push(`w=${r}`),n&&d.push(`h=${n}`),s&&d.push(`fps=${s}`),d.push(`kind=${o}`),d.push(`is_https=${a}`);const u=d.join("&");let l=`${this._CDNUris.url}?`;u&&(l+=u);const{code:h,res:p}=yield this._service.getCDNResourceInfo(c,l);return h!==e.RCRTCCode.SUCCESS?(i.error(`getCDNPlayUrl failed: ${h}`),{code:h}):(i.info(`getCDNPlayUrl success: ${null==p?void 0:p.data.pull_url}`),{code:h,CDNPlayUrl:null==p?void 0:p.data.pull_url})}))}getCDNPlayUrl(t,n){return r(this,void 0,void 0,(function*(){if(t&&!rt(t))return i.error("`resolution` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};if(n&&!it(n))return i.error("`fps` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};const{width:r,height:s}=t?tt(t):{width:null,height:null},o=n?nt(n):null,a={};return r&&(a.w=r),s&&(a.h=s),o&&(a.fps=o),this._getCDNPlayUrl(a)}))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this._subscribeHandle(e,!1)))}))}__unsubscribe(n){var s;return r(this,void 0,void 0,(function*(){if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.SUBSCRIBE,Nt.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__destroy(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitLivingRoomAsAudience(this._roomId)),yield this._service.broadcastExit(this._getReqHeaders()),this._pc.destroy(),this._polarisReport=null,this._context.onrtcdatachange=()=>{})}))}getRemoteTrack(e){return this._remoteTracks[e]}__getPC(){return this._pc}getLocalTrack(e){return{}}__onReconnected(){return r(this,void 0,void 0,(function*(){const{code:e}=yield this._context.joinLivingRoomAsAudience(this._roomId,t.RTCMode.LIVE);e!==t.ErrorCode.SUCCESS&&i.error("join living room error when on reconnected")}))}registerRoomEventListener(e){this._appListener=e}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}registerReportListener(e){var t;null===(t=this._pc)||void 0===t||t.registerReportListener(e)}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}getSessionId(){return this._sessionId}getRemoteUserIds(){return this._roomAnchorList}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getRemoteTracks(){const e=[],t=[];for(const e in this._remoteTracks){if(2===t.length)break;const r=this._remoteTracks[e];r.isMCUTrack()&&t.push(r)}return this._roomAnchorList.forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),[...t,...e]}getRemoteRTCTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()||e.push(r)}return e}getRemoteMCUTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()&&e.push(r)}return e}getCDNInfo(){return this._CDNUris.w?{resolution:`W${this._CDNUris.w}_H${this._CDNUris.h}`,fps:`FPS_${this._CDNUris.fps}`,CDNEnable:this._CDNUris.enableInnerCDN}:{CDNEnable:!1}}}const rr=(e,t)=>{const r=[];return r[0]=(null==t?void 0:t.withoutAudio)?void 0:e.getAudioTracks()[0],r[1]=(null==t?void 0:t.withoutVideo)?void 0:e.getVideoTracks()[0],r};class ir{constructor(e,t,r){this._context=e,this._runtime=t,this._options=r,this._crtRoom=null,this._audience=null,this._crtAudienceLivingRoom=null,It.setSdpSemantics(r.sdpSemantics||"plan-b"),this._service=new qt(this._runtime,this._context,this._options.mediaServer,this._options.timeout),this._context.onconnectionstatechange=this._onIMStatusChange.bind(this),this._context.ondisconnect=this._onIMDisconnect.bind(this),this._context.ondestroy=this._onIMUninit.bind(this),this._context.onmessage=this._handleMessage.bind(this)}_handleMessage(e){var r;return e.conversationType===t.ConversationType.RTC_ROOM&&(null===(r=this._crtRoom)||void 0===r||r.__parseInnerMessage(e),!0)}getCurrentId(){return this._context.getCurrentId()}joinRTCRoom(e,t){return c((()=>this._joinRTCRoom(e,t)))}_joinRTCRoom(n,o){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom -> roomId: ${n}; joinType: ${o||t.RTCJoinType.KICK}`);const{code:r,data:a}=yield this._context.joinRTCRoom(n,t.RTCMode.RTC,void 0,o);if(r!==t.ErrorCode.SUCCESS){i.error(`joinRoom failed -> code: ${r}`);return{code:r===s.JOIN_REFUSED?e.RCRTCCode.SIGNAL_JOIN_RTC_ROOM_REFUSED:r}}i.debug(`joinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(a)}`);const c=new Yt(this._context,this._runtime,n,a,this._service,this._options,this._releaseCrtRoomObj.bind(this));return this._crtRoom=c,{room:c,code:e.RCRTCCode.SUCCESS,userIds:c.getRemoteUserIds(),tracks:c.getRemoteTracks()}}))}joinLivingRoom(e,t){return c((()=>this._joinLivingRoom(e,t)))}_joinLivingRoom(n,s){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",s,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom, roomId: ${n}`);const{code:r,data:o}=yield this._context.joinRTCRoom(n,t.RTCMode.LIVE,s);if(r!==t.ErrorCode.SUCCESS)return i.error(`joinRoom failed -> code: ${r}`),{code:r};i.debug(`JoinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(o)}`);const a=new Wt(this._context,this._runtime,n,o,this._service,this._options,this._releaseCrtRoomObj.bind(this),s,!1);this._crtRoom=a;const c={room:a,code:e.RCRTCCode.SUCCESS,userIds:a.getRemoteUserIds(),tracks:a.getRemoteTracks()};return a.__getCDNPushMode()===Jt.MANUAL&&Object.assign(c,{CDNEnable:a.__getCDNEnable()}),c}))}getAudienceClient(){return this._audience||(this._audience=new Zt(this._context,this._runtime,this._options)),this._audience}_onIMStatusChange(e){i.debug(`signal server connection state change: ${e}`),e===t.ConnectionStatus.CONNECTED&&this._crtRoom&&this._crtRoom.__onReconnected()}_onIMDisconnect(){i.debug("TODO -> on IM disconnect")}_onIMUninit(){i.debug("TODO -> on IM client ondestroy")}leaveRoom(e){return c((()=>this._leaveRoom(e)))}_leaveRoom(t){return r(this,void 0,void 0,(function*(){return this._crtRoom?(yield this._crtRoom.__destroy(!0),i.debug(`quitRTCRoom -> userId: ${this._context.getCurrentId()} , roomId: ${this._crtRoom.getRoomId()}`),this._crtRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}_releaseCrtRoomObj(){this._crtRoom=null}_getMediaStream(t,n="getUserMedia"){return r(this,void 0,void 0,(function*(){try{const r=yield navigator.mediaDevices[n](t);return{code:e.RCRTCCode.SUCCESS,stream:r}}catch(t){if("Permission denied"===t.message)return{code:e.RCRTCCode.PERMISSION_DENIED};i.error(`get user media failed -> ${t.message}`)}return{code:"getUserMedia"===n?e.RCRTCCode.GET_USER_MEDIA_FAILED:e.RCRTCCode.GET_DISPLAY_MEDIA_FAILED}}))}createMicrophoneAudioTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const{stream:n,code:s}=yield this._getMediaStream({audio:{deviceId:null==i?void 0:i.micphoneId,sampleRate:null==i?void 0:i.sampleRate}});if(s!==e.RCRTCCode.SUCCESS)return{code:s};const o=n.getAudioTracks()[0];return{code:s,track:new we(t,r,o)}}))}createCameraVideoTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const n=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W640_H480,{width:s,height:o}=tt(n),{stream:a,code:c}=yield this._getMediaStream({video:{deviceId:null==i?void 0:i.cameraId,frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:s,height:o,facingMode:null==i?void 0:i.faceMode}});if(c!==e.RCRTCCode.SUCCESS)return{code:c};const d=a.getVideoTracks()[0];return{code:c,track:new Ue(t,r,d)}}))}createMicrophoneAndCameraTracks(t="RongCloudRTC",i){var n,s,o,a,c,d;return r(this,void 0,void 0,(function*(){const r=[];if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};const u=this._context.getCurrentId();if(!u)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const l=rt(null===(n=null==i?void 0:i.video)||void 0===n?void 0:n.resolution)?i.video.resolution:e.RCResolution.W640_H480,{width:h,height:p}=tt(l),{stream:m,code:_}=yield this._getMediaStream({video:{deviceId:null===(s=null==i?void 0:i.video)||void 0===s?void 0:s.cameraId,frameRate:nt((null===(o=null==i?void 0:i.video)||void 0===o?void 0:o.frameRate)||e.RCFrameRate.FPS_15),width:h,height:p,facingMode:null===(a=null==i?void 0:i.video)||void 0===a?void 0:a.faceMode},audio:{deviceId:null===(c=null==i?void 0:i.audio)||void 0===c?void 0:c.micphoneId,sampleRate:null===(d=null==i?void 0:i.audio)||void 0===d?void 0:d.sampleRate}});return _!==e.RCRTCCode.SUCCESS||m.getTracks().forEach((e=>{"video"===e.kind?r.push(new Ue(t,u,e)):r.unshift(new we(t,u,e))})),{code:_,tracks:r}}))}createScreenVideoTrack(t="screenshare",i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};if(!at())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT};const n=/Electron/.test(navigator.userAgent);if(n&&!(null==i?void 0:i.chromeMediaSourceId))return{code:e.RCRTCCode.PARAMS_ERROR};const s=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W1280_H720,{width:o,height:a}=tt(s),c=n?{mandatory:{chromeMediaSourceId:i.chromeMediaSourceId,chromeMediaSource:"desktop",minWidth:o,maxWidth:o,minHeight:a,maxHeight:a}}:{frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:o,height:a},{stream:d,code:u}=yield this._getMediaStream({video:c,audio:!1},n?"getUserMedia":"getDisplayMedia");if(u!==e.RCRTCCode.SUCCESS)return{code:u};const l=d.getVideoTracks()[0];return{code:u,track:new $e(t,r,l)}}))}createLocalAudioTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"audio"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new De(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalVideoTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"video"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new Ne(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalFileTracks(n,s,o){return r(this,void 0,void 0,(function*(){if(!Ge(n))return{code:e.RCRTCCode.INVALID_TAGS,tracks:[]};if(!ot())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT,tracks:[]};const r=s instanceof File?URL.createObjectURL(s):s;if(!t.isHttpUrl(r)&&!/^blob:/.test(r))return i.warn(`createLocalFileTracks failed: params error -> url: ${r}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:[]};const a=this._context.getCurrentId();return a?new Promise((t=>{const s=document.createElement("video");(null==o?void 0:o.withoutAudio)&&(s.muted=!0),s.onloadedmetadata=()=>{const c=[];let d;try{const e=s.mozCaptureStream?"mozCaptureStream":"captureStream";d=s[e]()}catch(n){i.error(`create RCLocalFileTrack failed, captureSteam error. -> url: ${r}`),i.error(n),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:c})}const[u,l]=rr(d,o);u&&c.push(new xe(n,a,u,s)),l&&c.push(new Me(n,a,l,s)),0===c.length&&(s.pause(),s.src=""),s.onerror=null,t({code:e.RCRTCCode.SUCCESS,tracks:c})},s.onerror=()=>{i.error(`create RCLocalFileTrack failed -> url: ${r}`),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:[]})},s.src=r,s.loop=!0,s.play()})):{code:e.RCRTCCode.INVALID_USER_ID,tracks:[]}}))}createLocalTracks(t,i,n){return r(this,void 0,void 0,(function*(){const r=[];if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};if(!(i instanceof MediaStream))return{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};const s=this._context.getCurrentId();if(!s)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const[o,a]=rr(i,n);return o&&r.push(new De(t,s,o)),a&&r.push(new Ne(t,s,a)),{code:e.RCRTCCode.SUCCESS,tracks:r}}))}joinLivingRoomAsAudience(n,s){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",s,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};const{code:r,data:o}=yield this._context.joinLivingRoomAsAudience(n,t.RTCMode.LIVE,s);if(r!==t.ErrorCode.SUCCESS)return i.error("audienceJoinLivingRoomError:",r),{code:e.RCRTCCode.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED};i.info(`joinLivingRoomAsAudience success, room data: ${JSON.stringify(o)}`);const a=new tr(this._context,this._runtime,this._options,n,o,s);return this._crtAudienceLivingRoom=a,{room:a,code:e.RCRTCCode.SUCCESS,userIds:a.getRemoteUserIds(),RTCTracks:a.getRemoteRTCTracks(),MCUTracks:a.getRemoteMCUTracks(),CDNUris:a.getCDNInfo()}}))}leaveLivingRoomAsAudience(t){return r(this,void 0,void 0,(function*(){return this._crtAudienceLivingRoom?this._crtAudienceLivingRoom!==t?{code:e.RCRTCCode.PARAMS_ERROR}:(yield this._crtAudienceLivingRoom.__destroy(!0),this._crtAudienceLivingRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}upgradeToAnchorRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:s}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.ViewerToAnchor,n._livingType);if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};yield this._crtAudienceLivingRoom.__destroy(!1);const o=new Wt(this._context,this._runtime,n._roomId,s,this._service,this._options,this._releaseCrtRoomObj.bind(this),n._livingType,!0);return this._crtRoom=o,this._crtAudienceLivingRoom=null,{room:o,code:e.RCRTCCode.SUCCESS}}))}downgradeToAudienceRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:s}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.AnchorToViewer,n.getLivingType());if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};i.info(`downgradeToAudienceRoom success, room data: ${JSON.stringify(s)}`);const o=new tr(this._context,this._runtime,this._options,n._roomId,s,n.getLivingType());return this._crtAudienceLivingRoom=o,this._crtRoom.__destroy(!1),this._crtRoom=null,{room:o,code:e.RCRTCCode.SUCCESS,userIds:o.getRemoteUserIds(),RTCTracks:o.getRemoteRTCTracks(),MCUTracks:o.getRemoteMCUTracks(),CDNUris:o.getCDNInfo()}}))}getJoinedRoomInfo(){return r(this,void 0,void 0,(function*(){const{code:r,data:n}=yield this._context.getRTCJoinedUserInfo(this._context.getCurrentId());return r!==t.ErrorCode.SUCCESS?(i.error("getJoinedUserInfo error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED}):{code:e.RCRTCCode.SUCCESS,data:n}}))}}var nr;e.RCKickReason=void 0,(nr=e.RCKickReason||(e.RCKickReason={}))[nr.SERVER_KICK=1]="SERVER_KICK",nr[nr.OTHER_KICK=2]="OTHER_KICK";const sr={tag:"RCRTC",verify:e=>"browser"!==e.tag?(i.error(`RCRTC Plugin is not support the runtime '${e.tag}'`),!1):Je?(t.VersionManage.add("plugin-rtc","5.2.4"),!!t.VersionManage.validEngine(">=4.5.1")||(i.error(`The current engine version '${t.VersionManage.getInfo().engine}' error, plugin-rtc required engine version at least '>=4.5.1'.`),!1)):(i.error("Please use the https protocol or use `http://localhost` to open the page!"),!1),setup:(e,r,n={})=>(i.setLogLevel(n.logLevel),i.setLogStdout(n.logStdout),i.warn("RCRTC Version: 5.2.4, Commit: d2c309074e678b96ebd403c0967994360e8b389c"),i.warn(`browserInfo.browser -> ${st.browser}`),i.warn(`browserInfo.supportsUnifiedPlan -> ${st.supportsUnifiedPlan}`),i.warn(`browserInfo.version -> ${st.version}`),t.assert("options.mediaServer",n.mediaServer,(e=>!(!t.isHttpUrl(e)||"https:"===location.protocol&&!/^https/.test(e)))),t.assert("options.timeout",n.timeout,(e=>t.isNumber(e)&&e>=5e3&&e<=3e4)),t.assert("options.pingGap",n.pingGap,(e=>t.isNumber(e)&&e>=3e3&&e<=1e4)),new ir(e,r,n))},or={transResolution:tt,transFrameRate:nt,parseTrackId:ze,ifSupportLocalFileTrack:ot,ifSupportScreenShare:at};Object.defineProperty(e,"RTCJoinType",{enumerable:!0,get:function(){return t.RTCJoinType}}),e.RCAbstractRoom=Ut,e.RCAudienceClient=Zt,e.RCAudienceLivingRoom=tr,e.RCCameraVideoTrack=Ue,e.RCLivingRoom=Wt,e.RCLocalAudioTrack=De,e.RCLocalFileAudioTrack=xe,e.RCLocalFileTrack=Ae,e.RCLocalFileVideoTrack=Me,e.RCLocalTrack=Le,e.RCLocalVideoTrack=Ne,e.RCMCUConfigBuilder=Ft,e.RCMicphoneAudioTrack=we,e.RCRTCClient=ir,e.RCRTCRoom=Yt,e.RCRemoteAudioTrack=Ve,e.RCRemoteTrack=je,e.RCRemoteVideoTrack=Be,e.RCScreenVideoTrack=$e,e.RCTag={DEFAULT:"RongCloudRTC"},e.RCTrack=Oe,e.device=Pe,e.helper=or,e.installer=sr,Object.defineProperty(e,"__esModule",{value:!0})}));
15
+ ***************************************************************************** */function r(e,t,r,i){return new(r||(r=Promise))((function(n,s){function o(e){try{c(i.next(e))}catch(e){s(e)}}function a(e){try{c(i.throw(e))}catch(e){s(e)}}function c(e){var t;e.done?n(e.value):(t=e.value,t instanceof r?t:new r((function(e){e(t)}))).then(o,a)}c((i=i.apply(e,t||[])).next())}))}const i=new t.Logger("RCRTC");var n,s;e.RCRTCCode=void 0,(n=e.RCRTCCode||(e.RCRTCCode={}))[n.SUCCESS=1e4]="SUCCESS",n[n.SIGNAL_DISCONNECTED=5e4]="SIGNAL_DISCONNECTED",n[n.PARAMS_ERROR=50001]="PARAMS_ERROR",n[n.REPERT_JOIN_ROOM=50002]="REPERT_JOIN_ROOM",n[n.NOT_IN_ROOM=50003]="NOT_IN_ROOM",n[n.SERVICE_INVALID=50004]="SERVICE_INVALID",n[n.RTC_TOKEN_INVALID=50006]="RTC_TOKEN_INVALID",n[n.SIGNAL_ERROR=53001]="SIGNAL_ERROR",n[n.CREATE_OFFER_FAILED=53003]="CREATE_OFFER_FAILED",n[n.REQUEST_FAILED=53004]="REQUEST_FAILED",n[n.MCU_SERVER_NOT_FOUND=53005]="MCU_SERVER_NOT_FOUND",n[n.BROADCAST_SUB_LIST_NOT_EMPTY=53007]="BROADCAST_SUB_LIST_NOT_EMPTY",n[n.ROOM_HAS_BEEN_DESTROYED=53008]="ROOM_HAS_BEEN_DESTROYED",n[n.NOT_OPEN_VIDEO_AUDIO_SERVER=53009]="NOT_OPEN_VIDEO_AUDIO_SERVER",n[n.GET_USER_MEDIA_FAILED=53010]="GET_USER_MEDIA_FAILED",n[n.GET_DISPLAY_MEDIA_FAILED=53011]="GET_DISPLAY_MEDIA_FAILED",n[n.PERMISSION_DENIED=53012]="PERMISSION_DENIED",n[n.CREATE_CUSTOM_TRACK_FAILED=53013]="CREATE_CUSTOM_TRACK_FAILED",n[n.INVALID_TAGS=53014]="INVALID_TAGS",n[n.INVALID_USER_ID=53015]="INVALID_USER_ID",n[n.CREATE_FILE_TRACK_FAILED=53016]="CREATE_FILE_TRACK_FAILED",n[n.INVALID_FILE_INSTANCE=53017]="INVALID_FILE_INSTANCE",n[n.SET_REMOTE_DESCRIPTION_FAILED=53018]="SET_REMOTE_DESCRIPTION_FAILED",n[n.BROWSER_NOT_SUPPORT=53019]="BROWSER_NOT_SUPPORT",n[n.TRACK_NOT_READY=53020]="TRACK_NOT_READY",n[n.VIDEO_TRACK_MISS_MEDIA_ELEMENT=53021]="VIDEO_TRACK_MISS_MEDIA_ELEMENT",n[n.TRACK_PLAY_ERROR=53022]="TRACK_PLAY_ERROR",n[n.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED=53023]="SIGNAL_AUDIENCE_JOIN_ROOM_FAILED",n[n.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED=53024]="SIGNAL_ROOM_CHANGE_IDENTITY_FAILED",n[n.PACKAGE_ENVIRONMENT_ERROR=53025]="PACKAGE_ENVIRONMENT_ERROR",n[n.PUBLISH_TRACK_LIMIT_EXCEEDED=53026]="PUBLISH_TRACK_LIMIT_EXCEEDED",n[n.CDN_RESOURCE_IS_EMPTY=53027]="CDN_RESOURCE_IS_EMPTY",n[n.SIGNAL_JOIN_RTC_ROOM_REFUSED=53028]="SIGNAL_JOIN_RTC_ROOM_REFUSED",n[n.NO_PERMISSION_TO_USE_REQUESTED_DEVICE=53029]="NO_PERMISSION_TO_USE_REQUESTED_DEVICE",function(e){e[e.JOIN_REFUSED=40032]="JOIN_REFUSED"}(s||(s={}));class o{constructor(){this.queue=[],this.locked=!1}checkToStart(){return r(this,void 0,void 0,(function*(){if(0===this.queue.length||this.locked)return;this.locked=!0;const{resolve:e,task:t,reject:r}=this.queue.shift();let i;try{i=yield t(),e(i)}catch(e){r(e)}this.locked=!1,this.checkToStart()}))}push(e){const t=new Promise(((t,r)=>{this.queue.push({resolve:t,task:e,reject:r})}));return this.checkToStart(),t}}const a=new o,c=e=>a.push(e);let d=!0,u=!0;function l(e,t,r){const i=e.match(t);return i&&i.length>=r&&parseInt(i[r],10)}function h(e,t,r){if(!e.RTCPeerConnection)return;const i=e.RTCPeerConnection.prototype,n=i.addEventListener;i.addEventListener=function(e,i){if(e!==t)return n.apply(this,arguments);const s=e=>{const t=r(e);t&&(i.handleEvent?i.handleEvent(t):i(t))};return this._eventMap=this._eventMap||{},this._eventMap[t]||(this._eventMap[t]=new Map),this._eventMap[t].set(i,s),n.apply(this,[e,s])};const s=i.removeEventListener;i.removeEventListener=function(e,r){if(e!==t||!this._eventMap||!this._eventMap[t])return s.apply(this,arguments);if(!this._eventMap[t].has(r))return s.apply(this,arguments);const i=this._eventMap[t].get(r);return this._eventMap[t].delete(r),0===this._eventMap[t].size&&delete this._eventMap[t],0===Object.keys(this._eventMap).length&&delete this._eventMap,s.apply(this,[e,i])},Object.defineProperty(i,"on"+t,{get(){return this["_on"+t]},set(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)},enumerable:!0,configurable:!0})}function p(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(d=e,e?"adapter.js logging disabled":"adapter.js logging enabled")}function m(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(u=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))}function _(){if("object"==typeof window){if(d)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}}function C(e,t){u&&console.warn(e+" is deprecated, please use "+t+" instead.")}function R(e){return"[object Object]"===Object.prototype.toString.call(e)}function f(e){return R(e)?Object.keys(e).reduce((function(t,r){const i=R(e[r]),n=i?f(e[r]):e[r],s=i&&!Object.keys(n).length;return void 0===n||s?t:Object.assign(t,{[r]:n})}),{}):e}function v(e,t,r){t&&!r.has(t.id)&&(r.set(t.id,t),Object.keys(t).forEach((i=>{i.endsWith("Id")?v(e,e.get(t[i]),r):i.endsWith("Ids")&&t[i].forEach((t=>{v(e,e.get(t),r)}))})))}function T(e,t,r){const i=r?"outbound-rtp":"inbound-rtp",n=new Map;if(null===t)return n;const s=[];return e.forEach((e=>{"track"===e.type&&e.trackIdentifier===t.id&&s.push(e)})),s.forEach((t=>{e.forEach((r=>{r.type===i&&r.trackId===t.id&&v(e,r,n)}))})),n}const g=_;function S(e,t){const r=e&&e.navigator;if(!r.mediaDevices)return;const i=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;const t={};return Object.keys(e).forEach((r=>{if("require"===r||"advanced"===r||"mediaSource"===r)return;const i="object"==typeof e[r]?e[r]:{ideal:e[r]};void 0!==i.exact&&"number"==typeof i.exact&&(i.min=i.max=i.exact);const n=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==i.ideal){t.optional=t.optional||[];let e={};"number"==typeof i.ideal?(e[n("min",r)]=i.ideal,t.optional.push(e),e={},e[n("max",r)]=i.ideal,t.optional.push(e)):(e[n("",r)]=i.ideal,t.optional.push(e))}void 0!==i.exact&&"number"!=typeof i.exact?(t.mandatory=t.mandatory||{},t.mandatory[n("",r)]=i.exact):["min","max"].forEach((e=>{void 0!==i[e]&&(t.mandatory=t.mandatory||{},t.mandatory[n(e,r)]=i[e])}))})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},n=function(e,n){if(t.version>=61)return n(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){const t=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])};t((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),t(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=i(e.audio)}if(e&&"object"==typeof e.video){let s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});const o=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!r.mediaDevices.getSupportedConstraints||!r.mediaDevices.getSupportedConstraints().facingMode||o)){let t;if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?t=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(t=["front"]),t)return r.mediaDevices.enumerateDevices().then((r=>{let o=(r=r.filter((e=>"videoinput"===e.kind))).find((e=>t.some((t=>e.label.toLowerCase().includes(t)))));return!o&&r.length&&t.includes("back")&&(o=r[r.length-1]),o&&(e.video.deviceId=s.exact?{exact:o.deviceId}:{ideal:o.deviceId}),e.video=i(e.video),g("chrome: "+JSON.stringify(e)),n(e)}))}e.video=i(e.video)}return g("chrome: "+JSON.stringify(e)),n(e)},s=function(e){return t.version>=64?e:{name:{PermissionDeniedError:"NotAllowedError",PermissionDismissedError:"NotAllowedError",InvalidStateError:"NotAllowedError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotAllowedError",MediaDeviceKillSwitchOn:"NotAllowedError",TabCaptureError:"AbortError",ScreenCaptureError:"AbortError",DeviceCaptureError:"AbortError"}[e.name]||e.name,message:e.message,constraint:e.constraint||e.constraintName,toString(){return this.name+(this.message&&": ")+this.message}}};if(r.getUserMedia=function(e,t,i){n(e,(e=>{r.webkitGetUserMedia(e,t,(e=>{i&&i(s(e))}))}))}.bind(r),r.mediaDevices.getUserMedia){const e=r.mediaDevices.getUserMedia.bind(r.mediaDevices);r.mediaDevices.getUserMedia=function(t){return n(t,(t=>e(t).then((e=>{if(t.audio&&!e.getAudioTracks().length||t.video&&!e.getVideoTracks().length)throw e.getTracks().forEach((e=>{e.stop()})),new DOMException("","NotFoundError");return e}),(e=>Promise.reject(s(e))))))}}}function y(e){e.MediaStream=e.MediaStream||e.webkitMediaStream}function E(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get(){return this._ontrack},set(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){return this._ontrackpoly||(this._ontrackpoly=t=>{t.stream.addEventListener("addtrack",(r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.track.id)):{track:r.track};const n=new Event("track");n.track=r.track,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)})),t.stream.getTracks().forEach((r=>{let i;i=e.RTCPeerConnection.prototype.getReceivers?this.getReceivers().find((e=>e.track&&e.track.id===r.id)):{track:r};const n=new Event("track");n.track=r,n.receiver=i,n.transceiver={receiver:i},n.streams=[t.stream],this.dispatchEvent(n)}))},this.addEventListener("addstream",this._ontrackpoly)),t.apply(this,arguments)}}else h(e,"track",(e=>(e.transceiver||Object.defineProperty(e,"transceiver",{value:{receiver:e.receiver}}),e)))}function I(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){const t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};const r=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,i){let n=r.apply(this,arguments);return n||(n=t(this,e),this._senders.push(n)),n};const i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){i.apply(this,arguments);const t=this._senders.indexOf(e);-1!==t&&this._senders.splice(t,1)}}const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._senders=this._senders||[],r.apply(this,[e]),e.getTracks().forEach((e=>{this._senders.push(t(this,e))}))};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){this._senders=this._senders||[],i.apply(this,[e]),e.getTracks().forEach((e=>{const t=this._senders.find((t=>t.track===e));t&&this._senders.splice(this._senders.indexOf(t),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}}function k(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,r,i]=arguments;if(arguments.length>0&&"function"==typeof e)return t.apply(this,arguments);if(0===t.length&&(0===arguments.length||"function"!=typeof e))return t.apply(this,[]);const n=function(e){const t={};return e.result().forEach((e=>{const r={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((t=>{r[t]=e.stat(t)})),t[r.id]=r})),t},s=function(e){return new Map(Object.keys(e).map((t=>[t,e[t]])))};if(arguments.length>=2){const i=function(e){r(s(n(e)))};return t.apply(this,[i,e])}return new Promise(((e,r)=>{t.apply(this,[function(t){e(s(n(t)))},r])})).then(r,i)}}function b(e){if(!("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver))return;if(!("getStats"in e.RTCRtpSender.prototype)){const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!0)))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){const e=this;return this._pc.getStats().then((t=>T(t,e.track,!1)))}}if(!("getStats"in e.RTCRtpSender.prototype)||!("getStats"in e.RTCRtpReceiver.prototype))return;const t=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){const e=arguments[0];let t,r,i;return this.getSenders().forEach((r=>{r.track===e&&(t?i=!0:t=r)})),this.getReceivers().forEach((t=>(t.track===e&&(r?i=!0:r=t),t.track===e))),i||t&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):t?t.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return t.apply(this,arguments)}}function P(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((e=>this._shimmedLocalStreams[e][0]))};const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){if(!r)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};const i=t.apply(this,arguments);return this._shimmedLocalStreams[r.id]?-1===this._shimmedLocalStreams[r.id].indexOf(i)&&this._shimmedLocalStreams[r.id].push(i):this._shimmedLocalStreams[r.id]=[r,i],i};const r=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")}));const t=this.getSenders();r.apply(this,arguments);const i=this.getSenders().filter((e=>-1===t.indexOf(e)));this._shimmedLocalStreams[e.id]=[e].concat(i)};const i=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],i.apply(this,arguments)};const n=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((t=>{const r=this._shimmedLocalStreams[t].indexOf(e);-1!==r&&this._shimmedLocalStreams[t].splice(r,1),1===this._shimmedLocalStreams[t].length&&delete this._shimmedLocalStreams[t]})),n.apply(this,arguments)}}function O(e,t){if(!e.RTCPeerConnection)return;if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return P(e);const r=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){const e=r.apply(this);return this._reverseStreams=this._reverseStreams||{},e.map((e=>this._reverseStreams[e.id]))};const i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){if(this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},t.getTracks().forEach((e=>{if(this.getSenders().find((t=>t.track===e)))throw new DOMException("Track already exists.","InvalidAccessError")})),!this._reverseStreams[t.id]){const r=new e.MediaStream(t.getTracks());this._streams[t.id]=r,this._reverseStreams[r.id]=t,t=r}i.apply(this,[t])};const n=e.RTCPeerConnection.prototype.removeStream;function s(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(n.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:r})}function o(e,t){let r=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((t=>{const i=e._reverseStreams[t],n=e._streams[i.id];r=r.replace(new RegExp(i.id,"g"),n.id)})),new RTCSessionDescription({type:t.type,sdp:r})}e.RTCPeerConnection.prototype.removeStream=function(e){this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{},n.apply(this,[this._streams[e.id]||e]),delete this._reverseStreams[this._streams[e.id]?this._streams[e.id].id:e.id],delete this._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,r){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");const i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((e=>e===t)))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");const n=this.getSenders().find((e=>e.track===t));if(n)throw new DOMException("Track already exists.","InvalidAccessError");this._streams=this._streams||{},this._reverseStreams=this._reverseStreams||{};const s=this._streams[r.id];if(s)s.addTrack(t),Promise.resolve().then((()=>{this.dispatchEvent(new Event("negotiationneeded"))}));else{const i=new e.MediaStream([t]);this._streams[r.id]=i,this._reverseStreams[i.id]=r,this.addStream(i)}return this.getSenders().find((e=>e.track===t))},["createOffer","createAnswer"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){const e=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(this,[t=>{const r=s(this,t);e[0].apply(null,[r])},t=>{e[1]&&e[1].apply(null,t)},arguments[2]]):r.apply(this,arguments).then((e=>s(this,e)))}};e.RTCPeerConnection.prototype[t]=i[t]}));const a=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){return arguments.length&&arguments[0].type?(arguments[0]=o(this,arguments[0]),a.apply(this,arguments)):a.apply(this,arguments)};const c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get(){const e=c.get.apply(this);return""===e.type?e:s(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){if("closed"===this.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===this))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");let t;this._streams=this._streams||{},Object.keys(this._streams).forEach((r=>{this._streams[r].getTracks().find((t=>e.track===t))&&(t=this._streams[r])})),t&&(1===t.getTracks().length?this.removeStream(this._reverseStreams[t.id]):t.removeTrack(e.track),this.dispatchEvent(new Event("negotiationneeded")))}}function L(e,t){!e.RTCPeerConnection&&e.webkitRTCPeerConnection&&(e.RTCPeerConnection=e.webkitRTCPeerConnection),e.RTCPeerConnection&&t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}))}function D(e,t){h(e,"negotiationneeded",(e=>{const r=e.target;if(!(t.version<72||r.getConfiguration&&"plan-b"===r.getConfiguration().sdpSemantics)||"stable"===r.signalingState)return e}))}var N=Object.freeze({__proto__:null,shimMediaStream:y,shimOnTrack:E,shimGetSendersWithDtmf:I,shimGetStats:k,shimSenderReceiverGetStats:b,shimAddTrackRemoveTrackWithNative:P,shimAddTrackRemoveTrack:O,shimPeerConnection:L,fixNegotiationNeeded:D,shimGetUserMedia:S,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&("function"==typeof t?e.navigator.mediaDevices.getDisplayMedia=function(r){return t(r).then((t=>{const i=r.video&&r.video.width,n=r.video&&r.video.height,s=r.video&&r.video.frameRate;return r.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:s||3}},i&&(r.video.mandatory.maxWidth=i),n&&(r.video.mandatory.maxHeight=n),e.navigator.mediaDevices.getUserMedia(r)}))}:console.error("shimGetDisplayMedia: getSourceId argument is not a function"))}});var A=function(e){var t={exports:{}};return e(t,t.exports),t.exports}((function(e){var t={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},t.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},t.getDescription=function(e){var r=t.splitSections(e);return r&&r[0]},t.getMediaSections=function(e){var r=t.splitSections(e);return r.shift(),r},t.matchPrefix=function(e,r){return t.splitLines(e).filter((function(e){return 0===e.indexOf(r)}))},t.parseCandidate=function(e){for(var t,r={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]},i=8;i<t.length;i+=2)switch(t[i]){case"raddr":r.relatedAddress=t[i+1];break;case"rport":r.relatedPort=parseInt(t[i+1],10);break;case"tcptype":r.tcpType=t[i+1];break;case"ufrag":r.ufrag=t[i+1],r.usernameFragment=t[i+1];break;default:r[t[i]]=t[i+1]}return r},t.writeCandidate=function(e){var t=[];t.push(e.foundation),t.push(e.component),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);var r=e.type;return t.push("typ"),t.push(r),"host"!==r&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substr(14).split(" ")},t.parseRtpMap=function(e){var t=e.substr(9).split(" "),r={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),r.name=t[0],r.clockRate=parseInt(t[1],10),r.channels=3===t.length?parseInt(t[2],10):1,r.numChannels=r.channels,r},t.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var r=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==r?"/"+r:"")+"\r\n"},t.parseExtmap=function(e){var t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},t.parseFmtp=function(e){for(var t,r={},i=e.substr(e.indexOf(" ")+1).split(";"),n=0;n<i.length;n++)r[(t=i[n].trim().split("="))[0].trim()]=t[1];return r},t.writeFmtp=function(e){var t="",r=e.payloadType;if(void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var i=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)})),t+="a=fmtp:"+r+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){var t="",r=e.payloadType;return void 0!==e.preferredPayloadType&&(r=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((function(e){t+="a=rtcp-fb:"+r+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},t.parseSsrcMedia=function(e){var t=e.indexOf(" "),r={ssrc:parseInt(e.substr(7,t-7),10)},i=e.indexOf(":",t);return i>-1?(r.attribute=e.substr(t+1,i-t-1),r.value=e.substr(i+1)):r.attribute=e.substr(t+1),r},t.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},t.getMid=function(e){var r=t.matchPrefix(e,"a=mid:")[0];if(r)return r.substr(6)},t.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},t.getDtlsParameters=function(e,r){return{role:"auto",fingerprints:t.matchPrefix(e+r,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){var r="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){r+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),r},t.parseCryptoLine=function(e){var t=e.substr(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;var t=e.substr(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,r){return t.matchPrefix(e+r,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,r){var i=t.matchPrefix(e+r,"a=ice-ufrag:")[0],n=t.matchPrefix(e+r,"a=ice-pwd:")[0];return i&&n?{usernameFragment:i.substr(12),password:n.substr(10)}:null},t.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},t.parseRtpParameters=function(e){for(var r={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" "),n=3;n<i.length;n++){var s=i[n],o=t.matchPrefix(e,"a=rtpmap:"+s+" ")[0];if(o){var a=t.parseRtpMap(o),c=t.matchPrefix(e,"a=fmtp:"+s+" ");switch(a.parameters=c.length?t.parseFmtp(c[0]):{},a.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+s+" ").map(t.parseRtcpFb),r.codecs.push(a),a.name.toUpperCase()){case"RED":case"ULPFEC":r.fecMechanisms.push(a.name.toUpperCase())}}}return t.matchPrefix(e,"a=extmap:").forEach((function(e){r.headerExtensions.push(t.parseExtmap(e))})),r},t.writeRtpDescription=function(e,r){var i="";i+="m="+e+" ",i+=r.codecs.length>0?"9":"0",i+=" UDP/TLS/RTP/SAVPF ",i+=r.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",r.codecs.forEach((function(e){i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)}));var n=0;return r.codecs.forEach((function(e){e.maxptime>n&&(n=e.maxptime)})),n>0&&(i+="a=maxptime:"+n+"\r\n"),i+="a=rtcp-mux\r\n",r.headerExtensions&&r.headerExtensions.forEach((function(e){i+=t.writeExtmap(e)})),i},t.parseRtpEncodingParameters=function(e){var r,i=[],n=t.parseRtpParameters(e),s=-1!==n.fecMechanisms.indexOf("RED"),o=-1!==n.fecMechanisms.indexOf("ULPFEC"),a=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=a.length>0&&a[0].ssrc,d=t.matchPrefix(e,"a=ssrc-group:FID").map((function(e){return e.substr(17).split(" ").map((function(e){return parseInt(e,10)}))}));d.length>0&&d[0].length>1&&d[0][0]===c&&(r=d[0][1]),n.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var t={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&r&&(t.rtx={ssrc:r}),i.push(t),s&&((t=JSON.parse(JSON.stringify(t))).fec={ssrc:c,mechanism:o?"red+ulpfec":"red"},i.push(t))}})),0===i.length&&c&&i.push({ssrc:c});var u=t.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,i.forEach((function(e){e.maxBitrate=u}))),i},t.parseRtcpParameters=function(e){var r={},i=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];i&&(r.cname=i.value,r.ssrc=i.ssrc);var n=t.matchPrefix(e,"a=rtcp-rsize");r.reducedSize=n.length>0,r.compound=0===n.length;var s=t.matchPrefix(e,"a=rtcp-mux");return r.mux=s.length>0,r},t.parseMsid=function(e){var r,i=t.matchPrefix(e,"a=msid:");if(1===i.length)return{stream:(r=i[0].substr(7).split(" "))[0],track:r[1]};var n=t.matchPrefix(e,"a=ssrc:").map((function(e){return t.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return n.length>0?{stream:(r=n[0].value.split(" "))[0],track:r[1]}:void 0},t.parseSctpDescription=function(e){var r,i=t.parseMLine(e),n=t.matchPrefix(e,"a=max-message-size:");n.length>0&&(r=parseInt(n[0].substr(19),10)),isNaN(r)&&(r=65536);var s=t.matchPrefix(e,"a=sctp-port:");if(s.length>0)return{port:parseInt(s[0].substr(12),10),protocol:i.fmt,maxMessageSize:r};if(t.matchPrefix(e,"a=sctpmap:").length>0){var o=t.matchPrefix(e,"a=sctpmap:")[0].substr(10).split(" ");return{port:parseInt(o[0],10),protocol:o[1],maxMessageSize:r}}},t.writeSctpDescription=function(e,t){var r=[];return r="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&r.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),r.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,21)},t.writeSessionBoilerplate=function(e,r,i){var n=void 0!==r?r:2;return"v=0\r\no="+(i||"thisisadapterortc")+" "+(e||t.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.writeMediaSection=function(e,r,i,n){var s=t.writeRtpDescription(e.kind,r);if(s+=t.writeIceParameters(e.iceGatherer.getLocalParameters()),s+=t.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===i?"actpass":"active"),s+="a=mid:"+e.mid+"\r\n",e.direction?s+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?s+="a=sendrecv\r\n":e.rtpSender?s+="a=sendonly\r\n":e.rtpReceiver?s+="a=recvonly\r\n":s+="a=inactive\r\n",e.rtpSender){var o="msid:"+n.id+" "+e.rtpSender.track.id+"\r\n";s+="a="+o,s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+o,e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+o,s+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+t.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+t.localCName+"\r\n"),s},t.getDirection=function(e,r){for(var i=t.splitLines(e),n=0;n<i.length;n++)switch(i[n]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[n].substr(2)}return r?t.getDirection(r):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substr(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){var r=t.splitLines(e)[0].substr(2).split(" ");return{kind:r[0],port:parseInt(r[1],10),protocol:r[2],fmt:r.slice(3).join(" ")}},t.parseOLine=function(e){var r=t.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:r[0],sessionId:r[1],sessionVersion:parseInt(r[2],10),netType:r[3],addressType:r[4],address:r[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var r=t.splitLines(e),i=0;i<r.length;i++)if(r[i].length<2||"="!==r[i].charAt(1))return!1;return!0},e.exports=t}));function M(e,t,r,i,n){var s=A.writeRtpDescription(e.kind,t);if(s+=A.writeIceParameters(e.iceGatherer.getLocalParameters()),s+=A.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===r?"actpass":n||"active"),s+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?s+="a=sendrecv\r\n":e.rtpSender?s+="a=sendonly\r\n":e.rtpReceiver?s+="a=recvonly\r\n":s+="a=inactive\r\n",e.rtpSender){var o=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=o;var a="msid:"+(i?i.id:"-")+" "+o+"\r\n";s+="a="+a,s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,s+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return s+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+A.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(s+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+A.localCName+"\r\n"),s}function x(e,t){var r={codecs:[],headerExtensions:[],fecMechanisms:[]},i=function(e,t){e=parseInt(e,10);for(var r=0;r<t.length;r++)if(t[r].payloadType===e||t[r].preferredPayloadType===e)return t[r]},n=function(e,t,r,n){var s=i(e.parameters.apt,r),o=i(t.parameters.apt,n);return s&&o&&s.name.toLowerCase()===o.name.toLowerCase()};return e.codecs.forEach((function(i){for(var s=0;s<t.codecs.length;s++){var o=t.codecs[s];if(i.name.toLowerCase()===o.name.toLowerCase()&&i.clockRate===o.clockRate){if("rtx"===i.name.toLowerCase()&&i.parameters&&o.parameters.apt&&!n(i,o,e.codecs,t.codecs))continue;(o=JSON.parse(JSON.stringify(o))).numChannels=Math.min(i.numChannels,o.numChannels),r.codecs.push(o),o.rtcpFeedback=o.rtcpFeedback.filter((function(e){for(var t=0;t<i.rtcpFeedback.length;t++)if(i.rtcpFeedback[t].type===e.type&&i.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var i=0;i<t.headerExtensions.length;i++){var n=t.headerExtensions[i];if(e.uri===n.uri){r.headerExtensions.push(n);break}}})),r}function w(e,t,r){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(r)}function U(e,t){var r=e.getRemoteCandidates().find((function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type}));return r||e.addRemoteCandidate(t),!r}function $(e,t){var r=new Error(t);return r.name=e,r.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],r}var j=function(e,t){function r(t,r){r.addTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function i(t,r,i,n){var s=new Event("track");s.track=r,s.receiver=i,s.transceiver={receiver:i},s.streams=n,e.setTimeout((function(){t._dispatchEvent("track",s)}))}var n=function(r){var i=this,n=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=n[e].bind(n)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this._localDescription=null,this._remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.connectionState="new",this.iceGatheringState="new",r=JSON.parse(JSON.stringify(r||{})),this.usingBundle="max-bundle"===r.bundlePolicy,"negotiate"===r.rtcpMuxPolicy)throw $("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(r.rtcpMuxPolicy||(r.rtcpMuxPolicy="require"),r.iceTransportPolicy){case"all":case"relay":break;default:r.iceTransportPolicy="all"}switch(r.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:r.bundlePolicy="balanced"}if(r.iceServers=function(e,t){var r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var i=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var n="string"==typeof i;return n&&(i=[i]),i=i.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||r?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(r=!0,!0)})),delete e.url,e.urls=n?i[0]:i,!!i.length}}))}(r.iceServers||[],t),this._iceGatherers=[],r.iceCandidatePoolSize)for(var s=r.iceCandidatePoolSize;s>0;s--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:r.iceServers,gatherPolicy:r.iceTransportPolicy}));else r.iceCandidatePoolSize=0;this._config=r,this.transceivers=[],this._sdpSessionId=A.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(n.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(n.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),n.prototype.onicecandidate=null,n.prototype.onaddstream=null,n.prototype.ontrack=null,n.prototype.onremovestream=null,n.prototype.onsignalingstatechange=null,n.prototype.oniceconnectionstatechange=null,n.prototype.onconnectionstatechange=null,n.prototype.onicegatheringstatechange=null,n.prototype.onnegotiationneeded=null,n.prototype.ondatachannel=null,n.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},n.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},n.prototype.getConfiguration=function(){return this._config},n.prototype.getLocalStreams=function(){return this.localStreams},n.prototype.getRemoteStreams=function(){return this.remoteStreams},n.prototype._createTransceiver=function(e,t){var r=this.transceivers.length>0,i={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&r)i.iceTransport=this.transceivers[0].iceTransport,i.dtlsTransport=this.transceivers[0].dtlsTransport;else{var n=this._createIceAndDtlsTransports();i.iceTransport=n.iceTransport,i.dtlsTransport=n.dtlsTransport}return t||this.transceivers.push(i),i},n.prototype.addTrack=function(t,r){if(this._isClosed)throw $("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var i;if(this.transceivers.find((function(e){return e.track===t})))throw $("InvalidAccessError","Track already exists.");for(var n=0;n<this.transceivers.length;n++)this.transceivers[n].track||this.transceivers[n].kind!==t.kind||(i=this.transceivers[n]);return i||(i=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(r)&&this.localStreams.push(r),i.track=t,i.stream=r,i.rtpSender=new e.RTCRtpSender(t,i.dtlsTransport),i.rtpSender},n.prototype.addStream=function(e){var r=this;if(t>=15025)e.getTracks().forEach((function(t){r.addTrack(t,e)}));else{var i=e.clone();e.getTracks().forEach((function(e,t){var r=i.getTracks()[t];e.addEventListener("enabled",(function(e){r.enabled=e.enabled}))})),i.getTracks().forEach((function(e){r.addTrack(e,i)}))}},n.prototype.removeTrack=function(t){if(this._isClosed)throw $("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var r=this.transceivers.find((function(e){return e.rtpSender===t}));if(!r)throw $("InvalidAccessError","Sender was not created by this connection.");var i=r.stream;r.rtpSender.stop(),r.rtpSender=null,r.track=null,r.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(i)&&this.localStreams.indexOf(i)>-1&&this.localStreams.splice(this.localStreams.indexOf(i),1),this._maybeFireNegotiationNeeded()},n.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var r=t.getSenders().find((function(t){return t.track===e}));r&&t.removeTrack(r)}))},n.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},n.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},n.prototype._createIceGatherer=function(t,r){var i=this;if(r&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var n=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(n,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var r=!e.candidate||0===Object.keys(e.candidate).length;n.state=r?"completed":"gathering",null!==i.transceivers[t].bufferedCandidateEvents&&i.transceivers[t].bufferedCandidateEvents.push(e)},n.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),n},n.prototype._gather=function(t,r){var i=this,n=this.transceivers[r].iceGatherer;if(!n.onlocalcandidate){var s=this.transceivers[r].bufferedCandidateEvents;this.transceivers[r].bufferedCandidateEvents=null,n.removeEventListener("localcandidate",this.transceivers[r].bufferCandidates),n.onlocalcandidate=function(e){if(!(i.usingBundle&&r>0)){var s=new Event("icecandidate");s.candidate={sdpMid:t,sdpMLineIndex:r};var o=e.candidate,a=!o||0===Object.keys(o).length;if(a)"new"!==n.state&&"gathering"!==n.state||(n.state="completed");else{"new"===n.state&&(n.state="gathering"),o.component=1,o.ufrag=n.getLocalParameters().usernameFragment;var c=A.writeCandidate(o);s.candidate=Object.assign(s.candidate,A.parseCandidate(c)),s.candidate.candidate=c,s.candidate.toJSON=function(){return{candidate:s.candidate.candidate,sdpMid:s.candidate.sdpMid,sdpMLineIndex:s.candidate.sdpMLineIndex,usernameFragment:s.candidate.usernameFragment}}}var d=A.getMediaSections(i._localDescription.sdp);d[s.candidate.sdpMLineIndex]+=a?"a=end-of-candidates\r\n":"a="+s.candidate.candidate+"\r\n",i._localDescription.sdp=A.getDescription(i._localDescription.sdp)+d.join("");var u=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),a||i._dispatchEvent("icecandidate",s),u&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){s.forEach((function(e){n.onlocalcandidate(e)}))}),0)}},n.prototype._createIceAndDtlsTransports=function(){var t=this,r=new e.RTCIceTransport(null);r.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var i=new e.RTCDtlsTransport(r);return i.ondtlsstatechange=function(){t._updateConnectionState()},i.onerror=function(){Object.defineProperty(i,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:r,dtlsTransport:i}},n.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var r=this.transceivers[e].iceTransport;r&&(delete r.onicestatechange,delete this.transceivers[e].iceTransport);var i=this.transceivers[e].dtlsTransport;i&&(delete i.ondtlsstatechange,delete i.onerror,delete this.transceivers[e].dtlsTransport)},n.prototype._transceive=function(e,r,i){var n=x(e.localCapabilities,e.remoteCapabilities);r&&e.rtpSender&&(n.encodings=e.sendEncodingParameters,n.rtcp={cname:A.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(n.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(n)),i&&e.rtpReceiver&&n.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?n.encodings=e.recvEncodingParameters:n.encodings=[{}],n.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(n.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(n.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(n))},n.prototype.setLocalDescription=function(e){var t,r,i=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject($("TypeError",'Unsupported type "'+e.type+'"'));if(!w("setLocalDescription",e.type,i.signalingState)||i._isClosed)return Promise.reject($("InvalidStateError","Can not set local "+e.type+" in state "+i.signalingState));if("offer"===e.type)t=A.splitSections(e.sdp),r=t.shift(),t.forEach((function(e,t){var r=A.parseRtpParameters(e);i.transceivers[t].localCapabilities=r})),i.transceivers.forEach((function(e,t){i._gather(e.mid,t)}));else if("answer"===e.type){t=A.splitSections(i._remoteDescription.sdp),r=t.shift();var n=A.matchPrefix(r,"a=ice-lite").length>0;t.forEach((function(e,t){var s=i.transceivers[t],o=s.iceGatherer,a=s.iceTransport,c=s.dtlsTransport,d=s.localCapabilities,u=s.remoteCapabilities;if(!(A.isRejected(e)&&0===A.matchPrefix(e,"a=bundle-only").length)&&!s.rejected){var l=A.getIceParameters(e,r),h=A.getDtlsParameters(e,r);n&&(h.role="server"),i.usingBundle&&0!==t||(i._gather(s.mid,t),"new"===a.state&&a.start(o,l,n?"controlling":"controlled"),"new"===c.state&&c.start(h));var p=x(d,u);i._transceive(s,p.codecs.length>0,!1)}}))}return i._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?i._updateSignalingState("have-local-offer"):i._updateSignalingState("stable"),Promise.resolve()},n.prototype.setRemoteDescription=function(n){var s=this;if(-1===["offer","answer"].indexOf(n.type))return Promise.reject($("TypeError",'Unsupported type "'+n.type+'"'));if(!w("setRemoteDescription",n.type,s.signalingState)||s._isClosed)return Promise.reject($("InvalidStateError","Can not set remote "+n.type+" in state "+s.signalingState));var o={};s.remoteStreams.forEach((function(e){o[e.id]=e}));var a=[],c=A.splitSections(n.sdp),d=c.shift(),u=A.matchPrefix(d,"a=ice-lite").length>0,l=A.matchPrefix(d,"a=group:BUNDLE ").length>0;s.usingBundle=l;var h=A.matchPrefix(d,"a=ice-options:")[0];return s.canTrickleIceCandidates=!!h&&h.substr(14).split(" ").indexOf("trickle")>=0,c.forEach((function(i,c){var h=A.splitLines(i),p=A.getKind(i),m=A.isRejected(i)&&0===A.matchPrefix(i,"a=bundle-only").length,_=h[0].substr(2).split(" ")[2],C=A.getDirection(i,d),R=A.parseMsid(i),f=A.getMid(i)||A.generateIdentifier();if(m||"application"===p&&("DTLS/SCTP"===_||"UDP/DTLS/SCTP"===_))s.transceivers[c]={mid:f,kind:p,protocol:_,rejected:!0};else{var v,T,g,S,y,E,I,k,b;!m&&s.transceivers[c]&&s.transceivers[c].rejected&&(s.transceivers[c]=s._createTransceiver(p,!0));var P,O,L=A.parseRtpParameters(i);m||(P=A.getIceParameters(i,d),(O=A.getDtlsParameters(i,d)).role="client"),I=A.parseRtpEncodingParameters(i);var D=A.parseRtcpParameters(i),N=A.matchPrefix(i,"a=end-of-candidates",d).length>0,M=A.matchPrefix(i,"a=candidate:").map((function(e){return A.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===n.type||"answer"===n.type)&&!m&&l&&c>0&&s.transceivers[c]&&(s._disposeIceAndDtlsTransports(c),s.transceivers[c].iceGatherer=s.transceivers[0].iceGatherer,s.transceivers[c].iceTransport=s.transceivers[0].iceTransport,s.transceivers[c].dtlsTransport=s.transceivers[0].dtlsTransport,s.transceivers[c].rtpSender&&s.transceivers[c].rtpSender.setTransport(s.transceivers[0].dtlsTransport),s.transceivers[c].rtpReceiver&&s.transceivers[c].rtpReceiver.setTransport(s.transceivers[0].dtlsTransport)),"offer"!==n.type||m){if("answer"===n.type&&!m){T=(v=s.transceivers[c]).iceGatherer,g=v.iceTransport,S=v.dtlsTransport,y=v.rtpReceiver,E=v.sendEncodingParameters,k=v.localCapabilities,s.transceivers[c].recvEncodingParameters=I,s.transceivers[c].remoteCapabilities=L,s.transceivers[c].rtcpParameters=D,M.length&&"new"===g.state&&(!u&&!N||l&&0!==c?M.forEach((function(e){U(v.iceTransport,e)})):g.setRemoteCandidates(M)),l&&0!==c||("new"===g.state&&g.start(T,P,"controlling"),"new"===S.state&&S.start(O)),!x(v.localCapabilities,v.remoteCapabilities).codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&v.sendEncodingParameters[0].rtx&&delete v.sendEncodingParameters[0].rtx,s._transceive(v,"sendrecv"===C||"recvonly"===C,"sendrecv"===C||"sendonly"===C),!y||"sendrecv"!==C&&"sendonly"!==C?delete v.rtpReceiver:(b=y.track,R?(o[R.stream]||(o[R.stream]=new e.MediaStream),r(b,o[R.stream]),a.push([b,y,o[R.stream]])):(o.default||(o.default=new e.MediaStream),r(b,o.default),a.push([b,y,o.default])))}}else{(v=s.transceivers[c]||s._createTransceiver(p)).mid=f,v.iceGatherer||(v.iceGatherer=s._createIceGatherer(c,l)),M.length&&"new"===v.iceTransport.state&&(!N||l&&0!==c?M.forEach((function(e){U(v.iceTransport,e)})):v.iceTransport.setRemoteCandidates(M)),k=e.RTCRtpReceiver.getCapabilities(p),t<15019&&(k.codecs=k.codecs.filter((function(e){return"rtx"!==e.name}))),E=v.sendEncodingParameters||[{ssrc:1001*(2*c+2)}];var w,$=!1;if("sendrecv"===C||"sendonly"===C){if($=!v.rtpReceiver,y=v.rtpReceiver||new e.RTCRtpReceiver(v.dtlsTransport,p),$)b=y.track,R&&"-"===R.stream||(R?(o[R.stream]||(o[R.stream]=new e.MediaStream,Object.defineProperty(o[R.stream],"id",{get:function(){return R.stream}})),Object.defineProperty(b,"id",{get:function(){return R.track}}),w=o[R.stream]):(o.default||(o.default=new e.MediaStream),w=o.default)),w&&(r(b,w),v.associatedRemoteMediaStreams.push(w)),a.push([b,y,w])}else v.rtpReceiver&&v.rtpReceiver.track&&(v.associatedRemoteMediaStreams.forEach((function(t){var r=t.getTracks().find((function(e){return e.id===v.rtpReceiver.track.id}));r&&function(t,r){r.removeTrack(t),r.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(r,t)})),v.associatedRemoteMediaStreams=[]);v.localCapabilities=k,v.remoteCapabilities=L,v.rtpReceiver=y,v.rtcpParameters=D,v.sendEncodingParameters=E,v.recvEncodingParameters=I,s._transceive(s.transceivers[c],!1,$)}}})),void 0===s._dtlsRole&&(s._dtlsRole="offer"===n.type?"active":"passive"),s._remoteDescription={type:n.type,sdp:n.sdp},"offer"===n.type?s._updateSignalingState("have-remote-offer"):s._updateSignalingState("stable"),Object.keys(o).forEach((function(t){var r=o[t];if(r.getTracks().length){if(-1===s.remoteStreams.indexOf(r)){s.remoteStreams.push(r);var n=new Event("addstream");n.stream=r,e.setTimeout((function(){s._dispatchEvent("addstream",n)}))}a.forEach((function(e){var t=e[0],n=e[1];r.id===e[2].id&&i(s,t,n,[r])}))}})),a.forEach((function(e){e[2]||i(s,e[0],e[1],[])})),e.setTimeout((function(){s&&s.transceivers&&s.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},n.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},n.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},n.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},n.prototype._updateIceConnectionState=function(){var e,t={new:0,closed:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&!e.rejected&&t[e.iceTransport.state]++})),e="new",t.failed>0?e="failed":t.checking>0?e="checking":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0?e="connected":t.completed>0&&(e="completed"),e!==this.iceConnectionState){this.iceConnectionState=e;var r=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",r)}},n.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){e.iceTransport&&e.dtlsTransport&&!e.rejected&&(t[e.iceTransport.state]++,t[e.dtlsTransport.state]++)})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":t.connected>0&&(e="connected"),e!==this.connectionState){this.connectionState=e;var r=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",r)}},n.prototype.createOffer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createOffer after close"));var i=r.transceivers.filter((function(e){return"audio"===e.kind})).length,n=r.transceivers.filter((function(e){return"video"===e.kind})).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(i=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(n=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(r.transceivers.forEach((function(e){"audio"===e.kind?--i<0&&(e.wantReceive=!1):"video"===e.kind&&--n<0&&(e.wantReceive=!1)}));i>0||n>0;)i>0&&(r._createTransceiver("audio"),i--),n>0&&(r._createTransceiver("video"),n--);var o=A.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.transceivers.forEach((function(i,n){var s=i.track,o=i.kind,a=i.mid||A.generateIdentifier();i.mid=a,i.iceGatherer||(i.iceGatherer=r._createIceGatherer(n,r.usingBundle));var c=e.RTCRtpSender.getCapabilities(o);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),i.remoteCapabilities&&i.remoteCapabilities.codecs&&i.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),c.headerExtensions.forEach((function(e){(i.remoteCapabilities&&i.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var d=i.sendEncodingParameters||[{ssrc:1001*(2*n+1)}];s&&t>=15019&&"video"===o&&!d[0].rtx&&(d[0].rtx={ssrc:d[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,o)),i.localCapabilities=c,i.sendEncodingParameters=d})),"max-compat"!==r._config.bundlePolicy&&(o+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),o+="a=ice-options:trickle\r\n",r.transceivers.forEach((function(e,t){o+=M(e,e.localCapabilities,"offer",e.stream,r._dtlsRole),o+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===r.iceGatheringState||0!==t&&r.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,o+="a="+A.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(o+="a=end-of-candidates\r\n"))}));var a=new e.RTCSessionDescription({type:"offer",sdp:o});return Promise.resolve(a)},n.prototype.createAnswer=function(){var r=this;if(r._isClosed)return Promise.reject($("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==r.signalingState&&"have-local-pranswer"!==r.signalingState)return Promise.reject($("InvalidStateError","Can not call createAnswer in signalingState "+r.signalingState));var i=A.writeSessionBoilerplate(r._sdpSessionId,r._sdpSessionVersion++);r.usingBundle&&(i+="a=group:BUNDLE "+r.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),i+="a=ice-options:trickle\r\n";var n=A.getMediaSections(r._remoteDescription.sdp).length;r.transceivers.forEach((function(e,s){if(!(s+1>n)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?i+="m=application 0 DTLS/SCTP 5000\r\n":i+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?i+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(i+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(i+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var o;if(e.stream)"audio"===e.kind?o=e.stream.getAudioTracks()[0]:"video"===e.kind&&(o=e.stream.getVideoTracks()[0]),o&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var a=x(e.localCapabilities,e.remoteCapabilities);!a.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,i+=M(e,a,"answer",e.stream,r._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(i+="a=rtcp-rsize\r\n")}}));var s=new e.RTCSessionDescription({type:"answer",sdp:i});return Promise.resolve(s)},n.prototype.addIceCandidate=function(e){var t,r=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(i,n){if(!r._remoteDescription)return n($("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var s=e.sdpMLineIndex;if(e.sdpMid)for(var o=0;o<r.transceivers.length;o++)if(r.transceivers[o].mid===e.sdpMid){s=o;break}var a=r.transceivers[s];if(!a)return n($("OperationError","Can not add ICE candidate"));if(a.rejected)return i();var c=Object.keys(e.candidate).length>0?A.parseCandidate(e.candidate):{};if("tcp"===c.protocol&&(0===c.port||9===c.port))return i();if(c.component&&1!==c.component)return i();if((0===s||s>0&&a.iceTransport!==r.transceivers[0].iceTransport)&&!U(a.iceTransport,c))return n($("OperationError","Can not add ICE candidate"));var d=e.candidate.trim();0===d.indexOf("a=")&&(d=d.substr(2)),(t=A.getMediaSections(r._remoteDescription.sdp))[s]+="a="+(c.type?d:"end-of-candidates")+"\r\n",r._remoteDescription.sdp=A.getDescription(r._remoteDescription.sdp)+t.join("")}else for(var u=0;u<r.transceivers.length&&(r.transceivers[u].rejected||(r.transceivers[u].iceTransport.addRemoteCandidate({}),(t=A.getMediaSections(r._remoteDescription.sdp))[u]+="a=end-of-candidates\r\n",r._remoteDescription.sdp=A.getDescription(r._remoteDescription.sdp)+t.join(""),!r.usingBundle));u++);i()}))},n.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var r=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===t?r=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(r=e.rtpReceiver)})),!r)throw $("InvalidAccessError","Invalid selector.");return r.getStats()}var i=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&i.push(e[t].getStats())}))})),Promise.all(i).then((function(e){var t=new Map;return e.forEach((function(e){e.forEach((function(e){t.set(e.id,e)}))})),t}))};["RTCRtpSender","RTCRtpReceiver","RTCIceGatherer","RTCIceTransport","RTCDtlsTransport"].forEach((function(t){var r=e[t];if(r&&r.prototype&&r.prototype.getStats){var i=r.prototype.getStats;r.prototype.getStats=function(){return i.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(r){var i;e[r].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(i=e[r]).type]||i.type,t.set(r,e[r])})),t}))}}}));var s=["createOffer","createAnswer"];return s.forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(s=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=n.prototype[e];n.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),n};function V(e){const t=e&&e.navigator,r=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return r(e).catch((e=>Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString(){return this.name}}}(e))))}}function B(e){"getDisplayMedia"in e.navigator&&e.navigator.mediaDevices&&(e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||(e.navigator.mediaDevices.getDisplayMedia=e.navigator.getDisplayMedia.bind(e.navigator)))}function F(e,t){if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){const t=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set(e){t.set.call(this,e);const r=new Event("enabled");r.enabled=e,this.dispatchEvent(r)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCDtmfSender&&!e.RTCDTMFSender&&(e.RTCDTMFSender=e.RTCDtmfSender);const r=j(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=function(e,t){let r=!1;return(e=JSON.parse(JSON.stringify(e))).filter((e=>{if(e&&(e.urls||e.url)){let t=e.urls||e.url;e.url&&!e.urls&&C("RTCIceServer.url","RTCIceServer.urls");const i="string"==typeof t;return i&&(t=[t]),t=t.filter((e=>{if(0===e.indexOf("stun:"))return!1;const t=e.startsWith("turn")&&!e.startsWith("turn:[")&&e.includes("transport=udp");return t&&!r?(r=!0,!0):t&&!r})),delete e.url,e.urls=i?t[0]:t,!!t.length}}))}(e.iceServers,t.version),_("ICE servers after filtering:",e.iceServers)),new r(e)},e.RTCPeerConnection.prototype=r.prototype}function H(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}var G=Object.freeze({__proto__:null,shimPeerConnection:F,shimReplaceTrack:H,shimGetUserMedia:V,shimGetDisplayMedia:B});function J(e,t){const r=e&&e.navigator,i=e&&e.MediaStreamTrack;if(r.getUserMedia=function(e,t,i){C("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),r.mediaDevices.getUserMedia(e).then(t,i)},!(t.version>55&&"autoGainControl"in r.mediaDevices.getSupportedConstraints())){const e=function(e,t,r){t in e&&!(r in e)&&(e[r]=e[t],delete e[t])},t=r.mediaDevices.getUserMedia.bind(r.mediaDevices);if(r.mediaDevices.getUserMedia=function(r){return"object"==typeof r&&"object"==typeof r.audio&&(r=JSON.parse(JSON.stringify(r)),e(r.audio,"autoGainControl","mozAutoGainControl"),e(r.audio,"noiseSuppression","mozNoiseSuppression")),t(r)},i&&i.prototype.getSettings){const t=i.prototype.getSettings;i.prototype.getSettings=function(){const r=t.apply(this,arguments);return e(r,"mozAutoGainControl","autoGainControl"),e(r,"mozNoiseSuppression","noiseSuppression"),r}}if(i&&i.prototype.applyConstraints){const t=i.prototype.applyConstraints;i.prototype.applyConstraints=function(r){return"audio"===this.kind&&"object"==typeof r&&(r=JSON.parse(JSON.stringify(r)),e(r,"autoGainControl","mozAutoGainControl"),e(r,"noiseSuppression","mozNoiseSuppression")),t.apply(this,[r])}}}}function W(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function Y(e,t){if("object"!=typeof e||!e.RTCPeerConnection&&!e.mozRTCPeerConnection)return;!e.RTCPeerConnection&&e.mozRTCPeerConnection&&(e.RTCPeerConnection=e.mozRTCPeerConnection),t.version<53&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){const r=e.RTCPeerConnection.prototype[t],i={[t](){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),r.apply(this,arguments)}};e.RTCPeerConnection.prototype[t]=i[t]}));const r={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},i=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){const[e,n,s]=arguments;return i.apply(this,[e||null]).then((e=>{if(t.version<53&&!n)try{e.forEach((e=>{e.type=r[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach(((t,i)=>{e.set(i,Object.assign({},t,{type:r[t.type]||t.type}))}))}return e})).then(n,s)}}function K(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpSender.prototype)return;const t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e});const r=e.RTCPeerConnection.prototype.addTrack;r&&(e.RTCPeerConnection.prototype.addTrack=function(){const e=r.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){return this.track?this._pc.getStats(this.track):Promise.resolve(new Map)}}function q(e){if("object"!=typeof e||!e.RTCPeerConnection||!e.RTCRtpSender)return;if(e.RTCRtpSender&&"getStats"in e.RTCRtpReceiver.prototype)return;const t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){const e=t.apply(this,[]);return e.forEach((e=>e._pc=this)),e}),h(e,"track",(e=>(e.receiver._pc=e.srcElement,e))),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}function z(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){C("removeStream","removeTrack"),this.getSenders().forEach((t=>{t.track&&e.getTracks().includes(t.track)&&this.removeTrack(t)}))})}function Q(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)}function X(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.addTransceiver;t&&(e.RTCPeerConnection.prototype.addTransceiver=function(){this.setParametersPromises=[];const e=arguments[1],r=e&&"sendEncodings"in e;r&&e.sendEncodings.forEach((e=>{if("rid"in e){if(!/^[a-z0-9]{0,16}$/i.test(e.rid))throw new TypeError("Invalid RID value provided.")}if("scaleResolutionDownBy"in e&&!(parseFloat(e.scaleResolutionDownBy)>=1))throw new RangeError("scale_resolution_down_by must be >= 1.0");if("maxFramerate"in e&&!(parseFloat(e.maxFramerate)>=0))throw new RangeError("max_framerate must be >= 0.0")}));const i=t.apply(this,arguments);if(r){const{sender:t}=i,r=t.getParameters();(!("encodings"in r)||1===r.encodings.length&&0===Object.keys(r.encodings[0]).length)&&(r.encodings=e.sendEncodings,t.sendEncodings=e.sendEncodings,this.setParametersPromises.push(t.setParameters(r).then((()=>{delete t.sendEncodings})).catch((()=>{delete t.sendEncodings}))))}return i})}function Z(e){if("object"!=typeof e||!e.RTCRtpSender)return;const t=e.RTCRtpSender.prototype.getParameters;t&&(e.RTCRtpSender.prototype.getParameters=function(){const e=t.apply(this,arguments);return"encodings"in e||(e.encodings=[].concat(this.sendEncodings||[{}])),e})}function ee(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}function te(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype.createAnswer;e.RTCPeerConnection.prototype.createAnswer=function(){return this.setParametersPromises&&this.setParametersPromises.length?Promise.all(this.setParametersPromises).then((()=>t.apply(this,arguments))).finally((()=>{this.setParametersPromises=[]})):t.apply(this,arguments)}}var re=Object.freeze({__proto__:null,shimOnTrack:W,shimPeerConnection:Y,shimSenderGetStats:K,shimReceiverGetStats:q,shimRemoveStream:z,shimRTCDataChannel:Q,shimAddTransceiver:X,shimGetParameters:Z,shimCreateOffer:ee,shimCreateAnswer:te,shimGetUserMedia:J,shimGetDisplayMedia:function(e,t){e.navigator.mediaDevices&&"getDisplayMedia"in e.navigator.mediaDevices||e.navigator.mediaDevices&&(e.navigator.mediaDevices.getDisplayMedia=function(r){if(!r||!r.video){const e=new DOMException("getDisplayMedia without video constraints is undefined");return e.name="NotFoundError",e.code=8,Promise.reject(e)}return!0===r.video?r.video={mediaSource:t}:r.video.mediaSource=t,e.navigator.mediaDevices.getUserMedia(r)})}});function ie(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),!("addStream"in e.RTCPeerConnection.prototype)){const t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),this._localStreams.includes(e)||this._localStreams.push(e),e.getAudioTracks().forEach((r=>t.call(this,r,e))),e.getVideoTracks().forEach((r=>t.call(this,r,e)))},e.RTCPeerConnection.prototype.addTrack=function(e,...r){return r&&r.forEach((e=>{this._localStreams?this._localStreams.includes(e)||this._localStreams.push(e):this._localStreams=[e]})),t.apply(this,arguments)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);const t=this._localStreams.indexOf(e);if(-1===t)return;this._localStreams.splice(t,1);const r=e.getTracks();this.getSenders().forEach((e=>{r.includes(e.track)&&this.removeTrack(e)}))})}}function ne(e){if("object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),!("onaddstream"in e.RTCPeerConnection.prototype))){Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get(){return this._onaddstream},set(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=e=>{e.streams.forEach((e=>{if(this._remoteStreams||(this._remoteStreams=[]),this._remoteStreams.includes(e))return;this._remoteStreams.push(e);const t=new Event("addstream");t.stream=e,this.dispatchEvent(t)}))})}});const t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){const e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((t=>{if(e._remoteStreams||(e._remoteStreams=[]),e._remoteStreams.indexOf(t)>=0)return;e._remoteStreams.push(t);const r=new Event("addstream");r.stream=t,e.dispatchEvent(r)}))}),t.apply(e,arguments)}}}function se(e){if("object"!=typeof e||!e.RTCPeerConnection)return;const t=e.RTCPeerConnection.prototype,r=t.createOffer,i=t.createAnswer,n=t.setLocalDescription,s=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){const i=arguments.length>=2?arguments[2]:arguments[0],n=r.apply(this,[i]);return t?(n.then(e,t),Promise.resolve()):n},t.createAnswer=function(e,t){const r=arguments.length>=2?arguments[2]:arguments[0],n=i.apply(this,[r]);return t?(n.then(e,t),Promise.resolve()):n};let a=function(e,t,r){const i=n.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i};t.setLocalDescription=a,a=function(e,t,r){const i=s.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.setRemoteDescription=a,a=function(e,t,r){const i=o.apply(this,[e]);return r?(i.then(t,r),Promise.resolve()):i},t.addIceCandidate=a}function oe(e){const t=e&&e.navigator;if(t.mediaDevices&&t.mediaDevices.getUserMedia){const e=t.mediaDevices,r=e.getUserMedia.bind(e);t.mediaDevices.getUserMedia=e=>r(ae(e))}!t.getUserMedia&&t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,r,i){t.mediaDevices.getUserMedia(e).then(r,i)}.bind(t))}function ae(e){return e&&void 0!==e.video?Object.assign({},e,{video:f(e.video)}):e}function ce(e){if(!e.RTCPeerConnection)return;const t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,r){if(e&&e.iceServers){const t=[];for(let r=0;r<e.iceServers.length;r++){let i=e.iceServers[r];!i.hasOwnProperty("urls")&&i.hasOwnProperty("url")?(C("RTCIceServer.url","RTCIceServer.urls"),i=JSON.parse(JSON.stringify(i)),i.urls=i.url,delete i.url,t.push(i)):t.push(e.iceServers[r])}e.iceServers=t}return new t(e,r)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in t&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:()=>t.generateCertificate})}function de(e){"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get(){return{receiver:this.receiver}}})}function ue(e){const t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);const t=this.getTransceivers().find((e=>"audio"===e.receiver.track.kind));!1===e.offerToReceiveAudio&&t?"sendrecv"===t.direction?t.setDirection?t.setDirection("sendonly"):t.direction="sendonly":"recvonly"===t.direction&&(t.setDirection?t.setDirection("inactive"):t.direction="inactive"):!0!==e.offerToReceiveAudio||t||this.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);const r=this.getTransceivers().find((e=>"video"===e.receiver.track.kind));!1===e.offerToReceiveVideo&&r?"sendrecv"===r.direction?r.setDirection?r.setDirection("sendonly"):r.direction="sendonly":"recvonly"===r.direction&&(r.setDirection?r.setDirection("inactive"):r.direction="inactive"):!0!==e.offerToReceiveVideo||r||this.addTransceiver("video")}return t.apply(this,arguments)}}function le(e){"object"!=typeof e||e.AudioContext||(e.AudioContext=e.webkitAudioContext)}var he=Object.freeze({__proto__:null,shimLocalStreamsAPI:ie,shimRemoteStreamsAPI:ne,shimCallbacksAPI:se,shimGetUserMedia:oe,shimConstraints:ae,shimRTCIceServerUrls:ce,shimTrackEventTransceiver:de,shimCreateOfferLegacy:ue,shimAudioContext:le});function pe(e){if(!e.RTCIceCandidate||e.RTCIceCandidate&&"foundation"in e.RTCIceCandidate.prototype)return;const t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){if("object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2)),e.candidate&&e.candidate.length){const r=new t(e),i=A.parseCandidate(e.candidate),n=Object.assign(r,i);return n.toJSON=function(){return{candidate:n.candidate,sdpMid:n.sdpMid,sdpMLineIndex:n.sdpMLineIndex,usernameFragment:n.usernameFragment}},n}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,h(e,"icecandidate",(t=>(t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t)))}function me(e,t){if(!e.RTCPeerConnection)return;"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get(){return void 0===this._sctp?null:this._sctp}});const r=function(e){if(!e||!e.sdp)return!1;const t=A.splitSections(e.sdp);return t.shift(),t.some((e=>{const t=A.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},i=function(e){const t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;const r=parseInt(t[1],10);return r!=r?-1:r},n=function(e){let r=65536;return"firefox"===t.browser&&(r=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),r},s=function(e,r){let i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);const n=A.matchPrefix(e.sdp,"a=max-message-size:");return n.length>0?i=parseInt(n[0].substr(19),10):"firefox"===t.browser&&-1!==r&&(i=2147483637),i},o=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){if(this._sctp=null,"chrome"===t.browser&&t.version>=76){const{sdpSemantics:e}=this.getConfiguration();"plan-b"===e&&Object.defineProperty(this,"sctp",{get(){return void 0===this._sctp?null:this._sctp},enumerable:!0,configurable:!0})}if(r(arguments[0])){const e=i(arguments[0]),t=n(e),r=s(arguments[0],e);let o;o=0===t&&0===r?Number.POSITIVE_INFINITY:0===t||0===r?Math.max(t,r):Math.min(t,r);const a={};Object.defineProperty(a,"maxMessageSize",{get:()=>o}),this._sctp=a}return o.apply(this,arguments)}}function _e(e){if(!e.RTCPeerConnection||!("createDataChannel"in e.RTCPeerConnection.prototype))return;function t(e,t){const r=e.send;e.send=function(){const i=arguments[0],n=i.length||i.size||i.byteLength;if("open"===e.readyState&&t.sctp&&n>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return r.apply(e,arguments)}}const r=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){const e=r.apply(this,arguments);return t(e,this),e},h(e,"datachannel",(e=>(t(e.channel,e.target),e)))}function Ce(e){if(!e.RTCPeerConnection||"connectionState"in e.RTCPeerConnection.prototype)return;const t=e.RTCPeerConnection.prototype;Object.defineProperty(t,"connectionState",{get(){return{completed:"connected",checking:"connecting"}[this.iceConnectionState]||this.iceConnectionState},enumerable:!0,configurable:!0}),Object.defineProperty(t,"onconnectionstatechange",{get(){return this._onconnectionstatechange||null},set(e){this._onconnectionstatechange&&(this.removeEventListener("connectionstatechange",this._onconnectionstatechange),delete this._onconnectionstatechange),e&&this.addEventListener("connectionstatechange",this._onconnectionstatechange=e)},enumerable:!0,configurable:!0}),["setLocalDescription","setRemoteDescription"].forEach((e=>{const r=t[e];t[e]=function(){return this._connectionstatechangepoly||(this._connectionstatechangepoly=e=>{const t=e.target;if(t._lastConnectionState!==t.connectionState){t._lastConnectionState=t.connectionState;const r=new Event("connectionstatechange",e);t.dispatchEvent(r)}return e},this.addEventListener("iceconnectionstatechange",this._connectionstatechangepoly)),r.apply(this,arguments)}}))}function Re(e,t){if(!e.RTCPeerConnection)return;if("chrome"===t.browser&&t.version>=71)return;if("safari"===t.browser&&t.version>=605)return;const r=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(t){if(t&&t.sdp&&-1!==t.sdp.indexOf("\na=extmap-allow-mixed")){const r=t.sdp.split("\n").filter((e=>"a=extmap-allow-mixed"!==e.trim())).join("\n");e.RTCSessionDescription&&t instanceof e.RTCSessionDescription?arguments[0]=new e.RTCSessionDescription({type:t.type,sdp:r}):t.sdp=r}return r.apply(this,arguments)}}function fe(e,t){if(!e.RTCPeerConnection||!e.RTCPeerConnection.prototype)return;const r=e.RTCPeerConnection.prototype.addIceCandidate;r&&0!==r.length&&(e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?("chrome"===t.browser&&t.version<78||"firefox"===t.browser&&t.version<68||"safari"===t.browser)&&arguments[0]&&""===arguments[0].candidate?Promise.resolve():r.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())})}var ve=Object.freeze({__proto__:null,shimRTCIceCandidate:pe,shimMaxMessageSize:me,shimSendThrowTypeError:_e,shimConnectionState:Ce,removeExtmapAllowMixed:Re,shimAddIceCandidateNullOrEmpty:fe});const Te=function({window:e}={},t={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0}){const r=_,i=function(e){const t={browser:null,version:null};if(void 0===e||!e.navigator)return t.browser="Not a browser.",t;const{navigator:r}=e;if(r.mozGetUserMedia)t.browser="firefox",t.version=l(r.userAgent,/Firefox\/(\d+)\./,1);else if(r.webkitGetUserMedia||!1===e.isSecureContext&&e.webkitRTCPeerConnection&&!e.RTCIceGatherer)t.browser="chrome",t.version=l(r.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(r.mediaDevices&&r.userAgent.match(/Edge\/(\d+).(\d+)$/))t.browser="edge",t.version=l(r.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!r.userAgent.match(/AppleWebKit\/(\d+)\./))return t.browser="Not a supported browser.",t;t.browser="safari",t.version=l(r.userAgent,/AppleWebKit\/(\d+)\./,1),t.supportsUnifiedPlan=e.RTCRtpTransceiver&&"currentDirection"in e.RTCRtpTransceiver.prototype}return t}(e),n={browserDetails:i,commonShim:ve,extractVersion:l,disableLog:p,disableWarnings:m};switch(i.browser){case"chrome":if(!N||!L||!t.shimChrome)return r("Chrome shim is not included in this adapter release."),n;if(null===i.version)return r("Chrome shim can not determine version, not shimming."),n;r("adapter.js shimming chrome."),n.browserShim=N,fe(e,i),S(e,i),y(e),L(e,i),E(e),O(e,i),I(e),k(e),b(e),D(e,i),pe(e),Ce(e),me(e,i),_e(e),Re(e,i);break;case"firefox":if(!re||!Y||!t.shimFirefox)return r("Firefox shim is not included in this adapter release."),n;r("adapter.js shimming firefox."),n.browserShim=re,fe(e,i),J(e,i),Y(e,i),W(e),z(e),K(e),q(e),Q(e),X(e),Z(e),ee(e),te(e),pe(e),Ce(e),me(e,i),_e(e);break;case"edge":if(!G||!F||!t.shimEdge)return r("MS edge shim is not included in this adapter release."),n;r("adapter.js shimming edge."),n.browserShim=G,V(e),B(e),F(e,i),H(e),me(e,i),_e(e);break;case"safari":if(!he||!t.shimSafari)return r("Safari shim is not included in this adapter release."),n;r("adapter.js shimming safari."),n.browserShim=he,fe(e,i),ce(e),ue(e),se(e),ie(e),ne(e),de(e),oe(e),le(e),pe(e),me(e,i),_e(e),Re(e,i);break;default:r("Unsupported browser!")}return n}({window:"undefined"==typeof window?void 0:window});var ge,Se,ye;e.RCFrameRate=void 0,(ge=e.RCFrameRate||(e.RCFrameRate={})).FPS_10="FPS_10",ge.FPS_15="FPS_15",ge.FPS_24="FPS_24",ge.FPS_30="FPS_30",e.RCResolution=void 0,(Se=e.RCResolution||(e.RCResolution={})).W176_H132="W176_H132",Se.W176_H144="W176_H144",Se.W256_H144="W256_H144",Se.W320_H180="W320_H180",Se.W240_H240="W240_H240",Se.W320_H240="W320_H240",Se.W480_H360="W480_H360",Se.W640_H360="W640_H360",Se.W480_H480="W480_H480",Se.W640_H480="W640_H480",Se.W720_H480="W720_H480",Se.W1280_H720="W1280_H720",Se.W1920_H1080="W1920_H1080",e.RCMediaType=void 0,(ye=e.RCMediaType||(e.RCMediaType={}))[ye.AUDIO_ONLY=0]="AUDIO_ONLY",ye[ye.VIDEO_ONLY=1]="VIDEO_ONLY",ye[ye.AUDIO_VIDEO=2]="AUDIO_VIDEO";const Ee={[e.RCResolution.W176_H132]:{width:176,height:132,maxBitrate:150,minBitrate:80},[e.RCResolution.W176_H144]:{width:176,height:144,maxBitrate:160,minBitrate:80},[e.RCResolution.W256_H144]:{width:256,height:144,maxBitrate:240,minBitrate:120},[e.RCResolution.W320_H180]:{width:320,height:180,maxBitrate:280,minBitrate:120},[e.RCResolution.W240_H240]:{width:240,height:240,maxBitrate:280,minBitrate:120},[e.RCResolution.W320_H240]:{width:320,height:240,maxBitrate:400,minBitrate:120},[e.RCResolution.W480_H360]:{width:480,height:360,maxBitrate:650,minBitrate:150},[e.RCResolution.W640_H360]:{width:640,height:360,maxBitrate:800,minBitrate:180},[e.RCResolution.W480_H480]:{width:480,height:480,maxBitrate:800,minBitrate:180},[e.RCResolution.W640_H480]:{width:640,height:480,maxBitrate:900,minBitrate:200},[e.RCResolution.W720_H480]:{width:720,height:480,maxBitrate:1e3,minBitrate:200},[e.RCResolution.W1280_H720]:{width:1280,height:720,maxBitrate:2200,minBitrate:250},[e.RCResolution.W1920_H1080]:{width:1920,height:1080,maxBitrate:4e3,minBitrate:400}},Ie=(e,t)=>{const r=e*t;let i=Number.MAX_VALUE,n=null;for(const e in Ee){const t=Ee[e],s=Math.abs(t.width*t.height-r);s<i&&(n=t,i=s)}return n},ke={10:1,15:1,24:1.5,30:1.5},be=e=>{let t=Number.MAX_VALUE,r=1;for(const i in ke){const n=Math.abs(e-parseInt(i));n<t&&(t=n,r=ke[i])}return r},Pe={getCameras:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"videoinput"===e.kind))})),getMicrophones:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audioinput"===e.kind))})),getSpeakers:()=>r(void 0,void 0,void 0,(function*(){return(yield navigator.mediaDevices.enumerateDevices()).filter((e=>"audiooutput"===e.kind))}))};class Oe extends t.EventEmitter{constructor(e,t,r,i,n){super(),this._tag=e,this._userId=t,this._kind=r,this._isLocalTrack=i,this._roomId=n,this._localMuted=!1,this._remoteMuted=!1,this._streamId=[this._userId||this._roomId,this._tag].join("_"),this._id=[this._streamId,this.isAudioTrack()?0:1].join("_")}getStreamId(){return this._streamId}getTrackId(){return this._id}getUserId(){return this._userId}__innerGetMediaStreamTrack(){return this._msTrack}getTag(){return this._tag}isLocalTrack(){return this._isLocalTrack}isVideoTrack(){return"video"===this._kind}isAudioTrack(){return"audio"===this._kind}isReady(){var e;return"live"===(null===(e=this._msTrack)||void 0===e?void 0:e.readyState)}__innerSetMediaStreamTrack(e){this._msTrack=e,this._setLocalMuted(this._localMuted);const t=this._msStream=this._msStream||new MediaStream,r=t.getTracks()[0];r&&t.removeTrack(r),e?t.addTrack(e):this._element&&(this._element.pause(),this._element.srcObject=null)}_setLocalMuted(e){this._msTrack&&(this._msTrack.enabled=!e),this._localMuted=e}mute(){i.info(`set ${this._id} enabled: false`),this._setLocalMuted(!0)}unmute(){i.info(`set ${this._id} enabled: true`),this._setLocalMuted(!1)}isLocalMuted(){return this._localMuted}isMCUTrack(){return Boolean(this._roomId)}isOwnerMuted(){return this._remoteMuted}play(n,s){return r(this,void 0,void 0,(function*(){if(!this._msTrack)return i.warn(`the track is not ready to play -> id: ${this._id}`),{code:e.RCRTCCode.TRACK_NOT_READY};if("ended"===this._msTrack.readyState&&i.warn(`the track's readyState is 'ended' -> id: ${this._id}`),null==s?void 0:s.volume){if(!t.isNumber(null==s?void 0:s.volume))return i.error(`${null==s?void 0:s.volume} is not a number, the valid range of options.volume is 0-100`),{code:e.RCRTCCode.PARAMS_ERROR};(null==s?void 0:s.volume)<0&&(s.volume=0,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 0")),(null==s?void 0:s.volume)>100&&(s.volume=100,i.warn("the valid range of options.volume is 0-100, the value of volume has been set 100"))}if(null==s?void 0:s.audioDeviceId){if(!(yield Pe.getSpeakers()).map((e=>e.deviceId)).includes(s.audioDeviceId))return i.error(`the options.audioDeviceId is invalid --\x3e ${s.audioDeviceId}`),{code:e.RCRTCCode.PARAMS_ERROR}}const r=this.isVideoTrack();if(r&&(!n||!(n instanceof HTMLVideoElement)))return i.error(`the video track need an <video> to play -> id: ${this._id}`),{code:e.RCRTCCode.VIDEO_TRACK_MISS_MEDIA_ELEMENT};this._element=r?n:this._element||new Audio,this._localMuted&&this._setLocalMuted(!1),this._element.srcObject&&this._element.srcObject===this._msStream||this._element.pause(),this._element.onloadstart=e=>{var t;i.debug(`HTMLMediaElement onloadstart -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.ondurationchange=e=>{var t;i.debug(`HTMLMediaElement ondurationchange -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadedmetadata=e=>{var t;i.debug(`HTMLMediaElement onloadedmetadata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onloadeddata=e=>{var t;i.debug(`HTMLMediaElement onloadeddata -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onabort=e=>{var t;i.info(`HTMLMediaElement onabort -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.oncanplay=e=>{var t;i.info(`HTMLMediaElement oncanplay -> id: ${null===(t=e.target)||void 0===t?void 0:t.id}, trackId: ${this._id}`)},this._element.onvolumechange=e=>{var t;const r=Math.floor(100*(null===(t=e.target)||void 0===t?void 0:t.volume));i.info(`HTMLMediaElement onvolumechange -> volume: ${r}, trackId: ${this._id}`)},this._element.srcObject=this._msStream,this._element.autoplay=!0,r&&(this._element.playsInline=!0,this._element.x5PlaysInline=!0,this._element.webkitPlaysInline=!0),r||!(null==s?void 0:s.volume)&&0!==(null==s?void 0:s.volume)||(this._element.volume=(null==s?void 0:s.volume)/100);try{(null==s?void 0:s.audioDeviceId)&&!r?yield this._element.setSinkId(s.audioDeviceId):this._element.play()}catch(t){return"No permission to use requested device"===t.message?(i.error(`setSinkId failed -> ${t.message}`),{code:e.RCRTCCode.NO_PERMISSION_TO_USE_REQUESTED_DEVICE}):(i.error(t),{code:e.RCRTCCode.TRACK_PLAY_ERROR})}return{code:e.RCRTCCode.SUCCESS}}))}__innerDestroy(){this.__innerSetMediaStreamTrack(void 0)}__releaseMediaElement(){this._element&&(this._element.remove(),this._element.srcObject=null)}}class Le extends Oe{constructor(e,t,r,i){super(e,t,r,!0),this._isPublished=!1,this.__innerSetMediaStreamTrack(i),i.onended=()=>{i.onended=null,this.emit(Le.EVENT_LOCAL_TRACK_END,this),this.removeAll(Le.EVENT_LOCAL_TRACK_END)}}_setLocalMuted(e){const t=this._localMuted!==e;super._setLocalMuted(e),this._remoteMuted=this._localMuted,t&&this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,this)}__innerSetPublished(e){this._isPublished=e}isPublished(){return this._isPublished}destroy(){var e;i.info(`track is destroyed -> trackId: ${this.getTrackId()}`),null===(e=this._msTrack)||void 0===e||e.stop(),super.__innerDestroy(),this.isAudioTrack()&&super.__releaseMediaElement(),this.emit(Le.__INNER_EVENT_DESTROY__,this)}setBitrate(e=0,r=0,n=0){!t.isNumber(e)||!t.isNumber(r)||!t.isNumber(n)||e<=0||r<=0||e<r?i.error("setBitrate params error ->"):this._bitrateInfo={max:e,min:r,start:n}}getBitrate(){var e,t;const{min:r,max:i}=this._msTrack?Ke(this._msTrack):{min:0,max:0};return{min:(null===(e=this._bitrateInfo)||void 0===e?void 0:e.min)||r,max:(null===(t=this._bitrateInfo)||void 0===t?void 0:t.max)||i}}}Le.EVENT_LOCAL_TRACK_END="local-track-end",Le.__INNER_EVENT_MUTED_CHANGE__="inner-muted-change",Le.__INNER_EVENT_DESTROY__="inner-destroy";class De extends Le{constructor(e,t,r){super(e,t,"audio",r)}setBitrate(e,t,r){i.warn("`setBitrate` invalid for audio track")}getBitrate(){return{start:32,max:32,min:32}}}class Ne extends Le{constructor(e,t,r,i=!1){super(e,t,"video",r),this._isTiny=i}__isTiny(){return this._isTiny}getStreamId(){const e=super.getStreamId();return this._isTiny?`${e}_tiny`:e}getTrackId(){const e=super.getTrackId();return this._isTiny?`${e}_tiny`:e}}class Ae extends Le{constructor(e,t,r,i,n){super(e,t,r,i),this._resource=n,Ae.__innerSetMapping(this.getTrackId(),n)}static __innerSetMapping(e,t){const r=this._mapping.get(t)||[];r.push(e),this._mapping.set(t,r)}static __innerRemoveMapping(e,t){var r,i;const n=null===(r=this._mapping.get(t))||void 0===r?void 0:r.filter((t=>t!==e));n&&n.length>0?this._mapping.set(t,n):(this._mapping.delete(t),t.pause(),t.src="",null===(i=t.parentNode)||void 0===i||i.removeChild(t))}destroy(){this.isAudioTrack()&&this.mute(),Ae.__innerRemoveMapping(this.getTrackId(),this._resource),super.destroy()}}Ae._mapping=new Map;class Me extends Ae{constructor(e,t,r,i){super(e,t,"video",r,i)}}class xe extends Ae{constructor(e,t,r,i){super(e,t,"audio",r,i)}_setLocalMuted(e){this._resource&&(this._resource.muted=e),super._setLocalMuted(e)}play(){return this._setLocalMuted(!1),Promise.resolve({code:e.RCRTCCode.SUCCESS})}}class we extends De{}class Ue extends Ne{}class $e extends Ne{}class je extends Oe{constructor(e,t,r,i){super(e,t,r,!1,i),this._isSubscribed=!1}__innerSetRemoteMuted(e){this._remoteMuted=e}__innerSetSubscribed(e){this._isSubscribed=e}isSubscribed(){return this._isSubscribed}}class Ve extends je{constructor(e,t,r){super(e,t,"audio",r)}}class Be extends je{constructor(e,t,r){super(e,t,"video",r)}}const Fe=(e,t)=>({name:e,content:JSON.stringify({uris:t,ignore:!0})}),He=e=>JSON.stringify(e),Ge=e=>/^[a-zA-Z\d-=]+$/g.test(e),Je="http:"!==location.protocol||["localhost","127.0.0.1"].includes(location.hostname),We=e=>{if(void 0===e)return 0;if(t.isNumber(e))return e;const r=e;return r.exact||r.ideal||r.max||0},Ye=e=>{const t=e.getConstraints();return{width:We(t.width),height:We(t.height),frameRate:We(t.frameRate)}},Ke=e=>{const{width:t,height:r,frameRate:i}=Ye(e),n=Ie(t,r),s=be(i);return{min:n.minBitrate*s,max:n.maxBitrate*s}},qe=e=>[e.msid,e.mediaType].join("_"),ze=e=>{const t=e.split("_");return{mediaType:parseInt(t.pop()),tag:t.pop(),userId:t.join("_")}},Qe=(e,t)=>[e,t].join("_"),Xe=e=>e.map((e=>Object.assign({},e))),Ze=(e,t,r=!1)=>{e=e.slice();const i=[],n=[],s=[];return t.forEach((t=>{const n=qe(t);let o=e.findIndex((e=>qe(e)===n));if(r&&(o=e.findIndex((e=>e.uri===t.uri))),-1===o)return void i.push(t);const a=e[o];a.uri!==t.uri?i.push(t):a.state!==t.state&&s.push(t),e.splice(o,1)})),n.push(...e),{publishedList:i,unpublishedList:n,modifiedList:s}},et=()=>{let e="xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}));return e=e.replace(/-/g,"")+"0",e=parseInt(e,16),e=(e=>{const t="0123456789abcdefghigklmnopqrstuvwxyzABCDEFGHIGKLMNOPQRSTUVWXYZ+/".split(""),r=t.length+1;let i=+e;const n=[];do{const e=i%r;i=(i-e)/r,n.unshift(t[e])}while(i);return n.join("")})(e),e.length>22&&(e=e.slice(0,22)),e},tt=e=>{const[t,r]=e.split("_").map((e=>parseInt(e.replace(/[^\d]/g,""))));return{width:t,height:r}},rt=t=>!!e.RCResolution[t],it=t=>!!e.RCFrameRate[t],nt=e=>parseInt(e.replace("FPS_","")),st=(()=>{const{browser:e,version:t,supportsUnifiedPlan:r}=Te.browserDetails;return{browser:e,version:t,supportsUnifiedPlan:!1!==r}})();function ot(){return"captureStream"in HTMLMediaElement.prototype||"mozCaptureStream"in HTMLMediaElement.prototype}function at(){return"mediaDevices"in navigator&&"getDisplayMedia"in navigator.mediaDevices}const ct=e=>"[object Null]"===Object.prototype.toString.call(e),dt=e=>1===e.type,ut=e=>{const t={},r=Object.keys(e.users);return r.length&&r.forEach((r=>{const n=[],s=e.users[r];if(s.uris)try{n.push(...JSON.parse(s.uris))}catch(e){i.warn(`invalid user data -> userId: ${r}, userData: ${s}`)}t[r]=n})),t};var lt,ht;!function(e){e.PUBLISH="RCRTC:PublishResource",e.UNPUBLISH="RCRTC:UnpublishResource",e.MODIFY="RCRTC:ModifyResource",e.TOTAL_CONTENT_RESOURCE="RCRTC:TotalContentResources",e.STATE="RCRTC:state",e.ROOM_NOTIFY="RCRTC:RoomNtf",e.USER_NOTIFY="RCRTC:UserNtf",e.KICK="RCRTC:kick"}(lt||(lt={})),e.RCRTCPingResult=void 0,(ht=e.RCRTCPingResult||(e.RCRTCPingResult={})).SUCCESS="Success",ht.FAIL="Fail";class pt{constructor(e,t,r,i=1e4){this._roomId=e,this._roomMode=t,this._context=r,this._gap=i,this._latestTimestamp=Date.now(),this._timer=null}start(){return r(this,void 0,void 0,(function*(){this._timer||(this._timer=setInterval(this._loop.bind(this),this._gap))}))}_loop(){var n,s,o;return r(this,void 0,void 0,(function*(){const r=yield new Promise((e=>{this._context.rtcPing(this._roomId,this._roomMode).then(e).catch((r=>{i.error(`rtcping receive unknown error -> ${r}`),e(t.ErrorCode.UNKNOWN)})),setTimeout(e,1e4,t.ErrorCode.TIMEOUT)})),a=Date.now();if(r===t.ErrorCode.SUCCESS)return this._latestTimestamp=a,void(null===(n=this.onPingResult)||void 0===n||n.call(this,e.RCRTCPingResult.SUCCESS));null===(s=this.onPingResult)||void 0===s||s.call(this,e.RCRTCPingResult.FAIL),i.warn(`rtcping failed -> code: ${r}`),(40003===r||a-this._latestTimestamp>6e4)&&(this.stop(),null===(o=this.onFailed)||void 0===o||o.call(this,40003===r))}))}stop(){this._timer&&(clearInterval(this._timer),this._timer=null)}}var mt;!function(e){e[e.NORMAL=1]="NORMAL",e[e.TINY=2]="TINY"}(mt||(mt={}));const _t=-1,Ct=(e,t)=>Math.round(8*t/e),Rt=(e,t=2)=>{const r=10**t;return Math.round(e*r)/r},ft=(e,t=2)=>{e>1&&(e/=32767);const r=10**t;return Math.ceil(e*r)},vt=(e,t,r,i)=>{if(0===t)return 0;if(!r||!i)return Rt(e/t,3);const n=t-i;if(0===n)return 0;const s=e-r;return s<0||n<0?0:Rt(s/n,3)},Tt=e=>{const{jitter:t,rtt:r,packetsLostRate:i}=e;return!ct(t)||!ct(r)||0!==i};class gt{constructor(e,t){this._rtcPeerConn=e,this._sdpSemantics=t,this._latestPacketsSent={},this._latestBytesSent={},this._latestBytesRecv={},this._latestPacketsRecv={}}updateBytesSent(e,t,r){let i,n;if(this._latestBytesSent[e]&&t<this._latestBytesSent[e].bytesSent&&this.clearLatestpacketsSent([e]),this._latestBytesSent[e]){const{bytesSent:s,timestamp:o}=this._latestBytesSent[e];i=t-s,n=r-o,this._latestBytesSent[e]={bytesSent:t,timestamp:r}}else i=t,n=1e3,this._latestBytesSent[e]={bytesSent:t,timestamp:r};return Ct(n,i)}updateBytesRecv(e,t,r){let i,n;if(this._latestBytesRecv[e]&&t<this._latestBytesRecv[e].bytesRecv&&this.clearLatestPacketsRecv([e]),this._latestBytesRecv[e]){const{bytesRecv:s,timestamp:o}=this._latestBytesRecv[e];i=t-s,n=r-o,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r}}else i=t,n=1e3,this._latestBytesRecv[e]={bytesRecv:t,timestamp:r};return Ct(n,i)}updateSenderPacketsLost(e,t,r){let i;if(Object.prototype.hasOwnProperty.call(this._latestPacketsSent[e],"packetsSent")){const{packetsLost:n,packetsSent:s}=this._latestPacketsSent[e];i=vt(t,r,n,s),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=n===t?s:r}else i=vt(t,r),this._latestPacketsSent[e].packetsLost=t,this._latestPacketsSent[e].packetsSent=r;return i}updateReceiverPacketsLost(e,t,r){let i;if(this._latestPacketsRecv[e]){const{packetsLost:n,packetsRecv:s}=this._latestPacketsRecv[e];i=vt(t,r+t,n,s+n)}else i=vt(t,r);return this._latestPacketsRecv[e]={packetsLost:t,packetsRecv:r},i}clearLatestpacketsSent(t){t.forEach((t=>{if(parseInt(t.split("_").pop())===e.RCMediaType.VIDEO_ONLY){const e=`${t}_tiny`;delete this._latestPacketsSent[e],delete this._latestBytesSent[e]}delete this._latestPacketsSent[t],delete this._latestBytesSent[t]}))}clearLatestPacketsRecv(e){e.forEach((e=>{delete this._latestPacketsRecv[e],delete this._latestBytesRecv[e]}))}parseRTCStatsReport(e){const t=e.keys(),r={};let i=t.next();for(;!i.done;){const n=i.value,s=e.get(n);/^RTCCodec_/.test(n)||(r[n]=s),i=t.next()}return r}formatRCRTCStateReport(e){return{senders:[],receivers:[]}}getAudioLevelList(e){return[]}getResourceIdByParseSdp(e){var t,r;const i=e.ssrc,n=e.kind||e.mediaType,s=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,o=null===(r=this._rtcPeerConn.currentRemoteDescription)||void 0===r?void 0:r.sdp;let a;a="unified-plan"===this._sdpSemantics?new RegExp("a=msid:(.*?) "):new RegExp(`a=ssrc:${i} msid:(.*?) `);const c=null==s?void 0:s.split("\r\nm="),d=null==c?void 0:c.filter((e=>e.includes(`a=ssrc:${i}`)))[0],u=null==d?void 0:d.match(a);let l=u?u[1]:"";if(l)return`${l}_${"video"===n?1:0}`;const h=null==o?void 0:o.split("\r\nm="),p=null==h?void 0:h.filter((e=>e.includes(`a=ssrc:${i}`)))[0],m=null==p?void 0:p.match(a);return l=m?m[1]:"",`${l}_${"video"===n?1:0}`}isValidSender(e){var t;const r=null===(t=this._rtcPeerConn.currentLocalDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}isValidReceiver(e){var t;const r=null===(t=this._rtcPeerConn.currentRemoteDescription)||void 0===t?void 0:t.sdp,{ssrc:i}=e;return!(null==r?void 0:r.split("\r\nm=").some((e=>e.includes(i)&&e.includes("a=inactive"))))}}class St extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,s=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const o=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(o))return;const{id:a,kind:c,transportId:d,mediaSourceId:u,remoteId:l,packetsSent:h,bytesSent:p,trackId:m,encoderImplementation:_,pliCount:C,nackCount:R,firCount:f}=o;if(!m)return;let{framesPerSecond:v,frameWidth:T,frameHeight:g}=o;"video"!==c||T||g||v||(T=e[m].frameWidth,g=e[m].frameHeight,v=u?e[u].framesPerSecond:null);const S=e[l];let y=null,E=null,I=0;S&&(y=S.jitter,E=S.roundTripTime,I=S.packetsLost),n+=I;const k=this.getResourceIdByParseSdp(o),b=u?e[u].audioLevel:e[m].audioLevel;let P=null;!this._latestPacketsSent[k]&&(this._latestPacketsSent[k]={}),S?P=this.updateSenderPacketsLost(k,I,h):this._latestPacketsSent[k].crtPacketsSent=h;let O=this.updateBytesSent(k,p,r);O<0&&(O=0),s+=O,t.senders.push({id:a,trackId:k,kind:c,packetsLostRate:P,remoteResource:!1,audioLevel:b||0===b?ft(b):null,frameWidth:T,frameHeight:g,frameRate:v,bitrate:O,jitter:y?Math.round(1e3*y):y,rtt:E,encoderImplementation:_,pliCount:C,nackCount:R,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));i.filter((e=>/RTCRemoteInboundRtp(Video|Audio)Stream_/.test(e))).forEach((r=>{const{localId:i,jitter:n,roundTripTime:s,packetsLost:o}=e[r],a=t.senders.filter((e=>e.id===i))[0];if(a&&!Tt(a)){const t=this.getResourceIdByParseSdp(e[a.id]);a.jitter=Math.round(1e3*n),a.rtt=s;const r=this._latestPacketsSent[t].crtPacketsSent;a.packetsLostRate=this.updateSenderPacketsLost(t,o,r)}}));let o=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const s=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(s))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,framesPerSecond:h,kind:p,codecImplementationName:m,nackCount:_,pliCount:C}=s;if(!a)return;let{frameWidth:R,frameHeight:f,audioLevel:v}=s;"video"===p?R||f||(R=e[a].frameWidth,f=e[a].frameHeight):v||(v=e[a].audioLevel),n+=c;const T=this.getResourceIdByParseSdp(s),g=this.updateReceiverPacketsLost(T,c,d);let S=this.updateBytesRecv(T,l,r);S<0&&(S=0),o+=S,t.receivers.push({trackId:T,kind:p,packetsLostRate:g,remoteResource:!0,audioLevel:v||0===v?ft(v):null,frameWidth:R,frameHeight:f,frameRate:h,bitrate:S,jitter:u?Math.round(1e3*u):0,codecImplementationName:m,nackCount:_,pliCount:C,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{ip:p,port:m,networkType:_}=h,C=e[l],{ip:R,port:f,protocol:v}=C;t.iceCandidatePair={IP:p,port:m,networkType:_,remoteIP:R,remotePort:f,protocol:v,bitrateRecv:o,bitrateSend:s,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTPAudioStream_/.test(e))).forEach((r=>{var i;const n=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const{mediaSourceId:s,trackId:o}=n,a=this.getResourceIdByParseSdp(n),c=s&&e[s]?e[s].audioLevel:(null===(i=e[o])||void 0===i?void 0:i.audioLevel)||null;t.push({trackId:a,audioLevel:c||0===c?ft(c):null})}));return r.filter((e=>/^RTCInboundRTPAudioStream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n}=i,s=i.audioLevel||e[n].audioLevel,o=this.getResourceIdByParseSdp(i);t.push({trackId:o,audioLevel:s||0===s?ft(s):null})})),t}}class yt extends gt{formatRCRTCStateReport(e){const t=+new Date,r={senders:[],receivers:[],timestamp:t};let i=0,n=0,s=0;for(const o in e){const a=e[o],c=a.type;if("outbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(a))continue;const{id:s,kind:o,bytesSent:c,packetsSent:d,bitrateMean:u,framerateMean:l,nackCount:h,pliCount:p,remoteId:m}=a,{jitter:_,roundTripTime:C,packetsLost:R}=m?e[m]:{jitter:null,roundTripTime:null,packetsLost:0},f=this.getResourceIdByParseSdp(a);i+=R;let v=null;!this._latestPacketsSent[f]&&(this._latestPacketsSent[f]={}),m?v=this.updateSenderPacketsLost(f,R,d):this._latestPacketsSent[f].crtPacketsSent=d;let T=0;"video"===o?u&&(T=Math.floor(u/1e3)):T=this.updateBytesSent(f,c,t),T<0&&(T=0),n+=T,r.senders.push({trackId:f,kind:o,packetsLostRate:v,remoteResource:!1,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(l),bitrate:T,jitter:_?Math.round(1e3*_):null,rtt:C,encoderImplementation:null,pliCount:p,nackCount:h,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}if("remote-inbound-rtp"===c){const{localId:t}=a,i=this.getResourceIdByParseSdp(e[t]),n=r.senders.filter((e=>e.trackId===i))[0];n&&Tt(n)&&(n.jitter=Math.round(1e3*a.jitter),n.rtt=a.rtt,n.packetsLostRate=this.updateSenderPacketsLost(i,a.packetsLost,this._latestPacketsSent[i].crtPacketsSent))}if("inbound-rtp"===c){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(a))continue;const{id:e,packetsLost:n,bytesReceived:o,packetsReceived:c,jitter:d,framerateMean:u,kind:l,bitrateMean:h,nackCount:p,pliCount:m}=a,_=this.getResourceIdByParseSdp(a);i+=n;const C=this.updateReceiverPacketsLost(_,n,c);let R=0;"video"===l?h&&(R=Math.floor(h/1e3)):R=this.updateBytesRecv(_,o,t),R<0&&(R=0),s+=R,r.receivers.push({trackId:_,kind:l,packetsLostRate:C,remoteResource:!0,audioLevel:null,frameWidth:null,frameHeight:null,frameRate:Math.floor(u),bitrate:R,jitter:d?Math.round(1e3*d):null,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}if("candidate-pair"===c&&"succeeded"===a.state){const t=e[a.localCandidateId],{address:o,port:c}=t,d=e[a.remoteCandidateId],{address:u,port:l,protocol:h}=d;r.iceCandidatePair={IP:o,port:c,networkType:null,remoteIP:u,remotePort:l,protocol:h,bitrateRecv:s,bitrateSend:n,rtt:null,availableOutgoingBitrate:null,availableIncomingBitrate:null,totalPacketsLost:i}}}return r.iceCandidatePair&&(r.iceCandidatePair.bitrateSend=n),r.iceCandidatePair&&(r.iceCandidatePair.bitrateRecv=s),r}getAudioLevelList(e){const t=[];for(const r in e){const i=e[r],n=i.type;if("outbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}if("inbound-rtp"===n){if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))continue;const{kind:e}=i;if("video"===e)continue;const r=this.getResourceIdByParseSdp(i);t.push({trackId:r,audioLevel:null})}}return t}}class Et extends gt{formatRCRTCStateReport(e){const t={senders:[],receivers:[]},r=Math.floor(e.RTCPeerConnection.timestamp);t.timestamp=r;const i=Object.keys(e);let n=0,s=0;i.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const n=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(n))return;const o=this.getResourceIdByParseSdp(n),{mediaType:a,transportId:c,remoteId:d,packetsSent:u,bytesSent:l,trackId:h,encoderImplementation:p,pliCount:m,nackCount:_,firCount:C}=n;if(!h)return;const{audioLevel:R,frameHeight:f,frameWidth:v}=e[h];let T=this.updateBytesSent(o,l,r);T<0&&(T=0),s+=T,t.senders.push({trackId:o,kind:a,packetsLostRate:null,remoteResource:!1,audioLevel:R||0===R?ft(R):null,frameWidth:v,frameHeight:f,frameRate:null,bitrate:T,jitter:null,rtt:null,encoderImplementation:p,pliCount:m,nackCount:_,googFirsSent:_t,samplingRate:_t,googRenderDelayMs:_t,trackState:_t})}));let o=0;i.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((i=>{const s=e[i];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(s))return;const{trackId:a,packetsLost:c,packetsReceived:d,jitter:u,bytesReceived:l,mediaType:h,nackCount:p,pliCount:m}=s,_=this.getResourceIdByParseSdp(s);if(!a)return;const{frameHeight:C,frameWidth:R,audioLevel:f}=e[a];n+=c;const v=this.updateReceiverPacketsLost(_,c,d);let T=this.updateBytesRecv(_,l,r);T<0&&(T=0),o+=T,t.receivers.push({trackId:_,kind:h,packetsLostRate:v,remoteResource:!0,audioLevel:f||0===f?ft(f):null,frameWidth:R,frameHeight:C,frameRate:null,bitrate:T,jitter:u,codecImplementationName:null,nackCount:p,pliCount:m,rtt:null,samplingRate:_t,googFirsReceived:_t,googRenderDelayMs:_t,trackState:_t})}));const a=i.filter((e=>/^RTCTransport_/.test(e)))[0];if(a){const r=e[a],{selectedCandidatePairId:i}=r;if(i){const r=e[i],{availableOutgoingBitrate:a,availableIncomingBitrate:c,currentRoundTripTime:d,localCandidateId:u,remoteCandidateId:l}=r,h=e[u],{address:p,port:m}=h,_=e[l],{address:C,port:R,protocol:f}=_;t.iceCandidatePair={IP:p||null,port:m,networkType:null,remoteIP:C,remotePort:R,protocol:f,bitrateRecv:o,bitrateSend:s,rtt:1e3*d,availableOutgoingBitrate:a,availableIncomingBitrate:c,totalPacketsLost:n},t.receivers.forEach((e=>{e.rtt=d}))}}return t}getAudioLevelList(e){const t=[],r=Object.keys(e);r.filter((e=>/^RTCOutboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidSender(i))return;const{trackId:n,mediaType:s}=i;if("video"===s)return;const o=this.getResourceIdByParseSdp(i),a=e[n];t.push({trackId:o,audioLevel:a||0===a?ft(a):null})}));return r.filter((e=>/^RTCInboundRTP(Video|Audio)Stream_/.test(e))).forEach((r=>{const i=e[r];if("unified-plan"===this._sdpSemantics&&!this.isValidReceiver(i))return;const{trackId:n,mediaType:s}=i;if(!n||"video"===s)return;const{audioLevel:o}=e[n],a=this.getResourceIdByParseSdp(i);t.push({trackId:a,audioLevel:o||0===o?ft(o):null})})),t}}class It{constructor(e){this._peer=e,this._outboundStreams={}}static setSdpSemantics(e){const{browser:t,version:r,supportsUnifiedPlan:n}=st;i.debug(`sdpSemantics, browser: ${t}, version: ${r}, supportsUnifiedPlan: ${n}`),n?/chrome/i.test(t)?this._sdpSemantics=r>92?"unified-plan":r<72?"plan-b":e:/firefox/i.test(t)?this._sdpSemantics="unified-plan":/safari/i.test(t)?this._sdpSemantics=r<12?"plan-b":"unified-plan":this._sdpSemantics="unified-plan":this._sdpSemantics="plan-b"}static getSdpSemantics(){return It._sdpSemantics}getOutboundVideoInfo(){const e=[];for(const t in this._outboundStreams){const r=this._outboundStreams[t].getVideoTracks()[0];if(!r)continue;const i=/_tiny$/.test(t),{width:n,height:s}=Ye(r);e.push({trackId:r.id,simulcast:i?mt.TINY:mt.NORMAL,resolution:`${n}x${s}`})}return e}setRemoteAnswer(t){return r(this,void 0,void 0,(function*(){t=t.replace(/\s+\r\n/g,"\r\n");try{yield this._peer.setRemoteDescription({type:"answer",sdp:t})}catch(t){return i.error(t),e.RCRTCCode.SET_REMOTE_DESCRIPTION_FAILED}return e.RCRTCCode.SUCCESS}))}getStatParsr(e,t){return/chrome/i.test(st.browser)?new St(e,t):/Firefox/i.test(st.browser)?new yt(e,t):/Safari/i.test(st.browser)?new Et(e,t):null}}class kt extends It{constructor(){super(...arguments),this.senders={},this._localTracks=[]}addLocalTrack(e){this._localTracks.includes(e)||this._localTracks.push(e);const t=e.getStreamId(),r=e.__innerGetMediaStreamTrack(),i=this._outboundStreams[t]||(this._outboundStreams[t]=new MediaStream);i.getTracks().forEach((e=>{e.kind===r.kind&&i.removeTrack(e)})),i.addTrack(r);const n=e.getTrackId(),s=this.senders[n];s?s.replaceTrack(r):this.senders[n]=this._peer.addTrack(r,i)}removeLocalTrack(e){const t=this._localTracks.findIndex((t=>t===e));t>=0&&this._localTracks.splice(t,1);const r=e.getTrackId(),i=this.senders[r];i&&(i.replaceTrack(null),this._peer.removeTrack(i),delete this.senders[r])}updateSubRemoteTracks(e){}updateRecvTransceiverMap(e,t){}setBitrate(e,t,r){this._maxBitrate=e,this._minBitrate=t,this._startBitrate=r||.7*e}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e,offerToReceiveAudio:!0,offerToReceiveVideo:!0});for(const e in this._outboundStreams){const r=this._outboundStreams[e].id;t.sdp=t.sdp.replace(new RegExp(r,"g"),e)}return yield this._peer.setLocalDescription(t),{type:"offer",semantics:"plan-b",sdp:t.sdp}}))}setRemoteAnswer(e){let t=0,r=0;this._localTracks.forEach((e=>{const{min:i,max:n}=e.getBitrate();r+=i,t+=n})),t=this._maxBitrate&&this._maxBitrate>0?Math.min(t,this._maxBitrate):t,r=this._minBitrate&&this._minBitrate>0?Math.max(r,this._minBitrate):r;const i=this._startBitrate||Math.round(.7*t),n=`b=AS:${t}`;e=e.replace(/[\r\n]+m=video[^\r\n]+/,(e=>`${e}\r\n${n}`));const s=[`;x-google-min-bitrate=${r}`,`;x-google-max-bitrate=${t}`,`;x-google-start-bitrate=${i}`].join("");return e=e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+s)),super.setRemoteAnswer(e)}}class bt extends It{constructor(){super(...arguments),this._sendTransceiver={},this._localTracks={},this._recvAudio=[],this._recvVideo=[],this._recvTransceiver={},this._subedTracks=[]}setBitrate(e,t,r){i.warn("the interface named `setBitrate` is invalid while sdpSemantics value is `unified-plan`")}addLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId(),i=e.__innerGetMediaStreamTrack();this._localTracks[t]=e;const n=this._outboundStreams[r]||(this._outboundStreams[r]=new MediaStream);n.getTracks().forEach((e=>{e.kind===i.kind&&n.removeTrack(e)})),n.addTrack(i);const s=this._sendTransceiver[t];s?(s.sender.replaceTrack(i),s.direction="sendonly"):this._sendTransceiver[t]=this._peer.addTransceiver(i,{direction:"sendonly",streams:[n]})}removeLocalTrack(e){const t=e.getTrackId(),r=e.getStreamId();e.__innerGetMediaStreamTrack(),delete this._localTracks[t];const i=this._sendTransceiver[t];if(!i)return;i.direction="inactive",this._peer.removeTrack(i.sender),i.sender.replaceTrack(null);const n=this._outboundStreams[r];(e.isAudioTrack()?n.getAudioTracks():n.getVideoTracks()).forEach((e=>n.removeTrack(e)));const s=this._sendTransceiver[`${t}_tiny`];if(!s||"inactive"===s.direction)return;s.direction="inactive";const o=s.sender,a=o.track;this._peer.removeTrack(o),o.replaceTrack(null);this._outboundStreams[`${r}_tiny`].removeTrack(a),a.stop()}updateRecvTransceiverMap(t,r){const{mediaType:i}=ze(t);this._recvTransceiver[t]=r;const n=i===e.RCMediaType.AUDIO_ONLY?this._recvAudio:this._recvVideo,s=n.findIndex((e=>e===r));s>=0&&n.splice(s,1)}updateSubRemoteTracks(e){const t=e.slice(),r=this._subedTracks.slice();this._subedTracks=e.slice();for(let e=t.length-1;e>=0;e-=1){const i=t[e],n=r.findIndex((e=>e===i));n>=0&&(t.splice(e,1),r.splice(n,1))}r.length&&r.forEach((e=>{const t=e.getTrackId();e.__innerSetMediaStreamTrack(void 0);const r=this._recvTransceiver[t];r&&(r.direction="inactive")}));const i={audio:0,video:0};t.length&&t.forEach((e=>{const t=e.isAudioTrack()?"audio":"video",r=this._recvTransceiver[e.getTrackId()];r?r.direction="recvonly":i[t]+=1}));for(let e=this._recvAudio.length;e<i.audio;e+=1)this._recvAudio.push(this._peer.addTransceiver("audio",{direction:"recvonly"}));for(let e=this._recvVideo.length;e<i.video;e+=1)this._recvVideo.push(this._peer.addTransceiver("video",{direction:"recvonly"}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._peer.createOffer({iceRestart:e});let r=t.sdp;for(const e in this._outboundStreams){const t=this._outboundStreams[e].id;r=r.replace(new RegExp(t,"g"),e)}return r=(e=>e.split(/\r\n(?=m=)/).map((e=>(e=>/a=(recvonly|inactive)/.test(e)?e.replace(/\r\na=(ssrc|msid)[^\r\n]+/g,""):e)(e))).join("\r\n"))(r),r=r.replace(/a=ice-options:trickle/g,"a=ice-options:trickle\r\na=ice-options:renomination"),t.sdp=r,yield this._peer.setLocalDescription(t),{type:"offer",semantics:"unified-plan",sdp:r}}))}setRemoteAnswer(e){e=e.split(/\r\n(?=m=)/).map((e=>{var t;const r=e.match(/a=mid:[^\s]+/);if(!r)return e;const i=r[0].replace("a=mid:","");let n="";for(const e in this._sendTransceiver){if(this._sendTransceiver[e].mid===i){n=e;break}}if(!n)return e;const s=null===(t=this._localTracks[n])||void 0===t?void 0:t.getBitrate();if(!s)return e;const{max:o,min:a}=s,c=o&&o>0?s.start||.7*o:0,d=[];if(o&&o>0&&d.push(`;x-google-max-bitrate=${o}`),a&&a>0&&d.push(`;x-google-min-bitrate=${a}`),c>0&&d.push(`;x-google-start-bitrate=${c}`),0===d.length)return e;const u=d.join("");return e.replace(/[\r\n]+[^\r\n]+profile-level-id[^\r\n]+/g,(e=>e+u))})).join("\r\n");const t=/[\r\n]+\r\n[\r\n]+/g;return t.test(e)&&(i.warn(`answer sdp invalid -> ${JSON.stringify(e)}`),e=e.replace(t,"\r\n")),super.setRemoteAnswer(e)}}class Pt extends t.EventEmitter{constructor(e,t){super(),this._reTryExchange=e,this._polarisReport=t,this.pubLocalTracks={},this._reTryExchangeTimer=null,this._reportStatsTimer=null,this._reportListener=null;const r=It.getSdpSemantics(),i=this._rtcPeerConn=new RTCPeerConnection({sdpSemantics:r});this._sdpStrategy="plan-b"===r?new kt(i):new bt(i),this._rtcPeerConn.oniceconnectionstatechange=this._onICEConnectionStateChange.bind(this),this._rtcPeerConn.onconnectionstatechange=this._onConnectionStateChange.bind(this),this._rtcPeerConn.ontrack=this._onTrackReady.bind(this),this.reportParser=this._sdpStrategy.getStatParsr(this._rtcPeerConn,r)}getLocalTracks(){return Object.values(this.pubLocalTracks)}_onConnectionStateChange(){i.info(`onconnectionstatechange -> ${this._rtcPeerConn.connectionState}`)}_onICEConnectionStateChange(){var e,t;i.info(`oniceconnectionstatechange -> ${this._rtcPeerConn.iceConnectionState}`),"connected"===this._rtcPeerConn.iceConnectionState&&(this._reportStatsTimer&&clearInterval(this._reportStatsTimer),this._reportStatsTimer=setInterval(this._reportHandle.bind(this),1e3)),"failed"!==this._rtcPeerConn.iceConnectionState&&"disconnected"!==this._rtcPeerConn.iceConnectionState||(i.warn("iceconenction state is `failed`, exchange SDP to try again."),this._reTryExchange(),this._reTryExchangeTimer=setInterval(this._reTryExchange,15e3));try{null===(t=null===(e=this._reportListener)||void 0===e?void 0:e.onICEConnectionStateChange)||void 0===t||t.call(e,this._rtcPeerConn.iceConnectionState)}catch(e){i.error("onICEConnectionStateChange error",e)}}_onTrackReady(t){if(!t.streams.length)return;const r=[t.streams[0].id,"audio"===t.receiver.track.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_");this._updateRecvTransceiverMap(r,t.transceiver),this.emit(Pt.__INNER_EVENT_TRACK_READY__,t)}setBitrate(e,t,i){return r(this,void 0,void 0,(function*(){this._sdpStrategy.setBitrate(e,t,i)}))}createOffer(e){return r(this,void 0,void 0,(function*(){const t=yield this._sdpStrategy.createOffer(e);return i.debug(`offer -> ${JSON.stringify(t.sdp)}`),t}))}setRemoteAnswer(e){return r(this,void 0,void 0,(function*(){return i.debug(`answer -> ${JSON.stringify(e)}`),this._sdpStrategy.setRemoteAnswer(e)}))}getLocalTrack(e){return this.pubLocalTracks[e]||null}addLocalTrack(e){this.pubLocalTracks[e.getTrackId()]=e,this._sdpStrategy.addLocalTrack(e),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this),e.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}removeLocalTrackById(e){const t=this.getLocalTrack(e);t&&this.removeLocalTrack(t)}removeAllLocalTrack(){Object.keys(this.pubLocalTracks).forEach((e=>{/_tiny$/.test(e)||this.removeLocalTrackById(e)}))}removeLocalTrack(e){const t=e.getTrackId();delete this.pubLocalTracks[t],this._sdpStrategy.removeLocalTrack(e),e.__innerSetPublished(!1),e.off(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),e.off(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this);const r=`${t}_tiny`,i=this.getLocalTrack(r);i&&(this._sdpStrategy.removeLocalTrack(i),delete this.pubLocalTracks[r],i.destroy())}_updateRecvTransceiverMap(e,t){this._sdpStrategy.updateRecvTransceiverMap(e,t)}updateSubRemoteTracks(e){this._sdpStrategy.updateSubRemoteTracks(e)}getOutboundVideoInfo(){return this._sdpStrategy.getOutboundVideoInfo()}_onLocalTrackMuted(e){const t=this.getLocalTrack(`${e.getTrackId()}_tiny`);t&&(t.__innerGetMediaStreamTrack().enabled=!e.isLocalMuted()),this.emit(Le.__INNER_EVENT_MUTED_CHANGE__,e)}_onLocalTrackDestroied(e){this.emit(Le.__INNER_EVENT_DESTROY__,e)}registerReportListener(e){this._reportListener=e}_createRCRTCStateReport(e){const{timestamp:t,iceCandidatePair:r,senders:i,receivers:n}=JSON.parse(JSON.stringify(e));null==r||delete r.totalPacketsLost;for(const e in r)ct(r[e])&&delete r[e];return{timestamp:t,iceCandidatePair:r,senders:i.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t})),receivers:n.map((e=>{const t={};return e.trackId&&(t.trackId=e.trackId),e.kind&&(t.kind=e.kind),(e.packetsLostRate||0===e.packetsLostRate)&&(t.packetsLostRate=e.packetsLostRate),t.remoteResource=e.remoteResource,(e.audioLevel||0===e.audioLevel)&&(t.audioLevel=e.audioLevel),e.frameWidth&&(t.frameWidth=e.frameWidth),e.frameHeight&&(t.frameHeight=e.frameHeight),e.frameRate&&(t.frameRate=e.frameRate),(e.bitrate||0===e.bitrate)&&(t.bitrate=e.bitrate),e.jitter&&(t.jitter=e.jitter),t}))}}_getStatsData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);return null===(t=this.reportParser)||void 0===t?void 0:t.formatRCRTCStateReport(i)}))}getAudioLevelReportData(){var e,t;return r(this,void 0,void 0,(function*(){const r=yield this._rtcPeerConn.getStats(),i=null===(e=this.reportParser)||void 0===e?void 0:e.parseRTCStatsReport(r);if(!i)return[];return null===(t=this.reportParser)||void 0===t?void 0:t.getAudioLevelList(i)}))}_reportHandle(){var e,t,i;return r(this,void 0,void 0,(function*(){const r=yield this._getStatsData();if(!r)return;(r.senders.length||r.receivers.length)&&(null===(e=this._polarisReport)||void 0===e||e.sendR3R4Data(r));const n=this._createRCRTCStateReport(r);null===(i=null===(t=this._reportListener)||void 0===t?void 0:t.onStateReport)||void 0===i||i.call(t,n)}))}getRTCPeerConn(){return this._rtcPeerConn}destroy(){this.clear(),this.clearReTryExchangeTimer(),this._reportStatsTimer&&(clearInterval(this._reportStatsTimer),this._reportStatsTimer=null),this.registerReportListener(null),this._rtcPeerConn.close(),this.reportParser=null}clearReTryExchangeTimer(){clearInterval(this._reTryExchangeTimer),this._reTryExchangeTimer=null}}var Ot,Lt,Dt,Nt,At;Pt.__INNER_EVENT_TRACK_READY__="inner-track-ready",function(e){e[e.DISABLE=0]="DISABLE",e[e.ENABLE=1]="ENABLE"}(Ot||(Ot={})),function(e){e[e.MeetingOrAnchor=1]="MeetingOrAnchor",e[e.Audience=2]="Audience"}(Lt||(Lt={}));class Mt{constructor(e,t,r,i,n=Lt.MeetingOrAnchor){this._context=e,this._runtime=t,this._roomId=r,this._crtRTCRoom=i,this._userRole=n}_send(e){this._context.getConnectionStatus()===t.ConnectionStatus.CONNECTED&&this._context.setRTCState(this._roomId,e)}_getClientID(){const e="uuid";let t=this._runtime.localStorage.getItem(e);return t||(t=et(),this._runtime.localStorage.setItem(e,t)),t}_getRealResourceId(e){let t=e;const r=e.indexOf("_tiny");return r>-1&&(t=e.slice(0,r)),t}_getPolarisTrackId(t){let r="";const i=t.split("_");if(t.includes("_tiny")){const t=i.pop(),n=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",s=i.pop();r=[i.join("_"),s,t,n].join("_")}else{const t=parseInt(i.pop())===e.RCMediaType.AUDIO_ONLY?"audio":"video",n=i.pop();r=[i.join("_"),n,t].join("_")}return r}sendR3R4Data(e){const{iceCandidatePair:t,senders:r,receivers:i}=e,n=(null==t?void 0:t.bitrateSend)||_t,s=(null==t?void 0:t.bitrateRecv)||_t,o=(null==t?void 0:t.networkType)||"unknown",a=(null==t?void 0:t.rtt)||_t,c=`${(null==t?void 0:t.IP)||_t}:${null==t?void 0:t.port}`,d=(null==t||t.remoteIP,null==t||t.remotePort,(null==t?void 0:t.availableIncomingBitrate)||_t),u=(null==t?void 0:t.availableOutgoingBitrate)||_t,l=(null==t?void 0:t.totalPacketsLost)||_t,h=this._context.getCurrentId();let p=`R3\t${n}\t-1\t-1\t-1\t${o}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`,m=`R4\t${s}\t-1\t-1\t-1\t${o}\t${a}\t${c}\t${d}\t${u}\t${l}\t${h}\r`;const _=r.map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:s,packetsLostRate:o,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsSent:_,encoderImplementation:C}=e,R=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:R,googCodecName:C||String(_t),audioLevel:i||0===i?i:_t,bitrate:s||0===s?s:_t,packetsLostRate:o||0===o?o:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsSent:_,samplingRate:n,googRenderDelayMs:u,encoderImplementation:C||String(_t),trackState:(null===(t=this._crtRTCRoom.getLocalTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}})),C=i.filter((e=>!!e.trackId)).map((e=>{var t;const{trackId:r,audioLevel:i,samplingRate:n,bitrate:s,packetsLostRate:o,frameRate:a,frameWidth:c,frameHeight:d,googRenderDelayMs:u,jitter:l,nackCount:h,pliCount:p,rtt:m,googFirsReceived:_,codecImplementationName:C}=e,R=this._getPolarisTrackId(r),f=this._getRealResourceId(r);return{trackId:R,googCodecName:C||String(_t),audioLevel:i||0===i?i:_t,bitrate:s||0===s?s:_t,packetsLostRate:o||0===o?o:_t,frameRate:a||_t,resolution:c&&d?`${c} * ${d}`:"-1",jitter:l||_t,nackCount:h||0===h?h:_t,pliCount:p||0===p?p:_t,rtt:m||_t,googFirsReceived:_,samplingRate:n,googRenderDelayMs:u,codecImplementationName:C||String(_t),trackState:(null===(t=this._crtRTCRoom.getRemoteTrack(f))||void 0===t?void 0:t.isLocalMuted())?Ot.DISABLE:Ot.ENABLE}}));p+=_.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsSent}\t${e.encoderImplementation}\t${e.trackState}`)).join("\n"),e.senders.length&&this._send(p+`\r${this._userRole}`),m+=C.map((e=>`${e.trackId}\t${e.googCodecName}\t${e.audioLevel}\t${e.samplingRate}\t${e.bitrate}\t${e.packetsLostRate}\t${e.frameRate}\t${e.resolution}\t${e.googRenderDelayMs}\t${e.jitter}\t${e.nackCount}\t${e.pliCount}\t${e.rtt}\t${e.googFirsReceived}\t${e.codecImplementationName}\t${e.trackState}`)).join("\n"),e.receivers.length&&this._send(m+`\r${this._userRole}`)}sendR1(){const e=this._context.getCoreVersion(),t=navigator.platform,r=`R1\t5.2.5\t${e}\tweb\t${t}\t-1\t${st.browser}\t${st.version}\t${this._getClientID()}\t${this._userRole}`;this._send(r)}sendR2(e,t,r){const i=`R2\t${e}\t${t}\t${this._getClientID()}\r${r.join("\t")}\r${this._userRole}`;this._send(i)}}!function(e){e.PUBLISH="publish",e.SUBSCRIBE="subscribe"}(Dt||(Dt={})),function(e){e.BEGIN="begin",e.END="end"}(Nt||(Nt={}));class xt{constructor(e){this._room=e,this._audioLevelChangeHandler=null,this._timer=null,this._pc=this._room.__getPC()}_audioLevelReport(){return r(this,void 0,void 0,(function*(){if("new"===this._pc.getRTCPeerConn().iceConnectionState||!this._audioLevelChangeHandler)return;const e=(yield this._pc.getAudioLevelReportData()).map((e=>{const{userId:t}=or.parseTrackId(e.trackId);return{track:this._room.getCrtUserId()===t?this._room.getLocalTrack(e.trackId):this._room.getRemoteTrack(e.trackId),audioLevel:e.audioLevel||0}})).filter((e=>e.track));this._audioLevelChangeHandler(e)}))}onAudioLevelChange(e,t){t<300||t>1e3?i.error('the valid range of onAudioLevelChange params "gap" is: > 300 && < 1000'):e?(this._audioLevelChangeHandler=e,this._timer=setInterval(this._audioLevelReport.bind(this),t)):this._audioLevelChangeHandler=null}clearAudioLevelReportTimer(){this._timer&&(clearInterval(this._timer),this._timer=null)}}e.RCRTCLiveRole=void 0,(At=e.RCRTCLiveRole||(e.RCRTCLiveRole={}))[At.ANCHOR=1]="ANCHOR",At[At.AUDIENCE=2]="AUDIENCE";const wt=e=>e instanceof Oe?e.getTrackId():e.track.getTrackId();class Ut{constructor(e,t,r,n,s,a,d,u,l){this._context=e,this._runtime=t,this._roomId=r,this._roomMode=s,this._service=a,this._initOptions=d,this._ntfClearRoomItem=u,this._remoteTracks={},this._subscribedList=[],this._destroyed=!1,this.msgTaskQueue=new o,this._appListener=null,this._token=n.token,this._sessionId=n.sessionId,this._roomResources=l?{}:ut(n),this._initRemoteTracks();const h=this._context.getCurrentId(),p=this._roomResources[h]=this._roomResources[h]||[];i.debug(`room data -> ${JSON.stringify(this._roomResources)}`),p.length>0&&c((()=>this._unpublishPrev(p))),l&&this._afterChangedRole(n),this._pinger=new pt(r,this._roomMode,e,this._initOptions.pingGap),this._pinger.onFailed=this._kickoff.bind(this),this._pinger.onPingResult=this._handlePingResult.bind(this),this._pinger.start(),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this._pc.on(Le.__INNER_EVENT_MUTED_CHANGE__,this._onLocalTrackMuted,this),this._pc.on(Le.__INNER_EVENT_DESTROY__,this._onLocalTrackDestroied,this)}_initRemoteTracks(){const t=this._context.getCurrentId();for(const r in this._roomResources){const i=this._roomResources[r];r!==t&&0!==i.length&&i.forEach((t=>{const r=qe(t),{tag:i,userId:n,mediaType:s}=ze(r),o=s===e.RCMediaType.AUDIO_ONLY?new Ve(i,n):new Be(i,n);o.__innerSetRemoteMuted(0===t.state),this._remoteTracks[r]=o}))}}_handlePingResult(e){this._callAppListener("onPing",e)}setBitrate(e,r,n){i.warn("`RCAbstractRoom.setBitrate` will be deprecated, use `RCLocalTrack.setBitrate` instead."),t.assert("max",e,(e=>t.isNumber(e)&&e>Math.max(r||1,200)),!0),t.assert("min",r,(r=>t.isNumber(r)&&r>=1&&(!t.isNumber(e)||r<e)),!0),t.assert("start",n,(i=>t.isNumber(i)&&i>r&&i<=e)),this._pc.setBitrate(e,r,n)}_onTrackReady(t){const r=t.streams[0].id,n=t.receiver.track,s=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),o=this._remoteTracks[s];o?(o.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",o)):i.warn(`cannot found remote track ${n.id}`)}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_onUserUnpublish(e){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._onTrackUnpublish(e)}))}_onTrackUnpublish(e){this._callAppListener("onTrackUnpublish",e)}_unpublishPrev(e){return r(this,void 0,void 0,(function*(){const r=e.slice();e.length=0,i.info(`unpublish uris prev login: ${JSON.stringify(r)}`);const n=yield this._context.setRTCTotalRes(this._roomId,Fe(lt.UNPUBLISH,r),He([]),lt.TOTAL_CONTENT_RESOURCE,He([]));n!==t.ErrorCode.SUCCESS?i.error(`unpublish prev uris failed -> code: ${n}`):i.debug("unpublish uris prev login succeed")}))}__parseInnerMessage(e){const{targetId:r,conversationType:n}=e;if(n!==t.ConversationType.RTC_ROOM)return!1;if(r!==this._roomId)return!0;i.info(`recv inner msg -> message: ${JSON.stringify(e)} | roomid: ${this._roomId}`);const s=e.content;switch(e.messageType){case lt.KICK:this._kickoff(!0,s);break;case lt.STATE:this.msgTaskQueue.push((()=>this._stateHandle(s)));break;case lt.MODIFY:case lt.PUBLISH:case lt.UNPUBLISH:case lt.TOTAL_CONTENT_RESOURCE:this.msgTaskQueue.push((()=>this._resourceHandle(s,e.messageType,e.senderUserId)));break;case lt.ROOM_NOTIFY:this._callAppListener("onRoomAttributeChange",e.messageType,e.content);break;case lt.USER_NOTIFY:i.warn(`TODO: ${lt.USER_NOTIFY}`);break;default:this._callAppListener("onMessageReceive",e.messageType,e.content,e.senderUserId,e.messageUId)}return!0}_kickoff(e,t){let r;i.warn(`onKickOff -> byServer: ${e}`),this._ntfClearRoomItem(),this._leaveHandle(!e),e&&((null==t?void 0:t.users)||[]).forEach((e=>{e.userId===this._context.getCurrentId()&&(r=e.type)})),this._callAppListener("onKickOff",e,r)}_rtcpeerClosed(){this._ntfClearRoomItem(),this._leaveHandle(!0),this._callAppListener("onRTCPeerConnectionCloseByException")}_resourceHandle(t,n,s){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return void i.warn(`room has been destroyed. -> roomId: ${this._roomId}`);const{uris:r,ignore:o}=t;if(o||!r)return;const a=[],d=[],u=[];let l;const h=this._roomResources[s]||(this._roomResources[s]=[]);switch(n){case lt.MODIFY:u.push(...r);break;case lt.PUBLISH:a.push(...r);break;case lt.UNPUBLISH:d.push(...r);break;case lt.TOTAL_CONTENT_RESOURCE:l=Ze(h,r),a.push(...l.publishedList),d.push(...l.unpublishedList),u.push(...l.modifiedList)}if(a.length>0){const t=h.map(qe),r=[],n=[];if(a.forEach((i=>{const s=qe(i),o=t.indexOf(s),{userId:a,tag:c,mediaType:d}=ze(s);o>-1?h[o]=i:h.push(i);let u=this._remoteTracks[s];u?u.isSubscribed()&&r.push(u):(u=d===e.RCMediaType.AUDIO_ONLY?new Ve(c,a):new Be(c,a),this._remoteTracks[s]=u,n.push(u)),u.__innerSetRemoteMuted(0===i.state)})),r.length){const t=r.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:n}=yield c((()=>this.__subscribe(r,!0)));n!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${n}, ids: ${JSON.stringify(t)}`)}this._onTrackPublish(n)}if(d.length>0){const e=d.map(qe);for(let t=h.length-1;t>=0;t-=1){const r=h[t];e.includes(qe(r))&&h.splice(t,1)}const t=d.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t)}if(u.length>0){const e=h.map(qe);for(let t=0;t<u.length;t+=1){const r=u[t],i=qe(r),n=e.indexOf(i);h[n].state=r.state;const s=this._remoteTracks[i];s.__innerSetRemoteMuted(0===r.state),s.isAudioTrack()?this._onAudioMuteChange(s):this._onVideoMuteChange(s)}}}))}_onTrackPublish(e){this._callAppListener("onTrackPublish",e)}_stateHandle(t){var n;return r(this,void 0,void 0,(function*(){const{users:r}=t;if(0===r.length)return;const s=[],o=[],a=[],c=[];r.forEach((e=>{0==+e.state?(i.debug(`user joined -> ${e.userId}`),this._roomResources[e.userId]||(e.switchRoleType?a.push(e.userId):s.push(e.userId)),this._roomResources[e.userId]=this._roomResources[e.userId]||[]):(i.debug(`user left -> ${e.userId}`),e.switchRoleType?c.push(e.userId):o.push(e.userId))}));const d=[...s,...a],u=[...o,...c];if(u.length){const e=[],t=[];u.forEach((r=>{e.push(...this.getRemoteTracksByUserId(r)),t.push(r)})),e.length&&(yield this.unsubscribe(e),e.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),t.length&&t.forEach((e=>delete this._roomResources[e]))}if(null===(n=this._appListener)||void 0===n?void 0:n.onSwitchRole)return a.length&&a.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.ANCHOR))),c.length&&c.forEach((t=>this._callAppListener("onSwitchRole",t,e.RCRTCLiveRole.AUDIENCE))),s.length&&this._callAppListener("onUserJoin",s),void(o.length&&this._callAppListener("onUserLeave",o));d.length&&this._callAppListener("onUserJoin",d),u.length&&this._callAppListener("onUserLeave",u)}))}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}__getPC(){return this._pc}getRemoteUserIds(){const e=this._context.getCurrentId();return Object.keys(this._roomResources).filter((t=>t!==e))}getRemoteTracks(){const e=[];return this.getRemoteUserIds().forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),e}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getSessionId(){return this._sessionId}sendMessage(n,s){return r(this,void 0,void 0,(function*(){const{code:r}=yield this._context.sendMessage(t.ConversationType.RTC_ROOM,this._roomId,{messageType:n,content:s,isStatusMessage:!0});return r!==t.ErrorCode.SUCCESS?(i.error(`send message failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}setRoomAttribute(n,s,o,a=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,n,s,a,t.RTCApiType.ROOM,o);return r!==t.ErrorCode.SUCCESS?(i.error(`SetRoomAttributeValue Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}deleteRoomAttributes(n,s,o=!1){return r(this,void 0,void 0,(function*(){const r=yield this._context.removeRTCData(this._roomId,n,o,t.RTCApiType.ROOM,s);return r!==t.ErrorCode.SUCCESS?(i.error(`DeleteRoomAttribute Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS}}))}getRoomAttributes(n=[],s=!1){return r(this,void 0,void 0,(function*(){const{code:r,data:o}=yield this._context.getRTCData(this._roomId,n,s,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`GetRoomAttributes Failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):{code:e.RCRTCCode.SUCCESS,data:o}}))}_setUserAttributeValue(e,r,i){return this._context.setRTCData(this._roomId,e,r,!1,t.RTCApiType.PERSON,i)}_deleteUserAttributes(e,r){return this._context.removeRTCData(this._roomId,e,!1,t.RTCApiType.PERSON,r)}_getUserAttributes(e){return this._context.getRTCData(this._roomId,e,!1,t.RTCApiType.PERSON)}isDestroyed(){return this._destroyed}__destroy(e){return this._leaveHandle(e)}_leaveHandle(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitRTCRoom(this._roomId)),this._pc.removeAllLocalTrack(),this._pinger.stop(),yield this._service.exit(this._getRTCReqestHeaders()),this._pc.destroy(),this._polarisReport=null,this._removeRemoteTracks())}))}_onLocalTrackDestroied(e){e instanceof Ne&&e.__isTiny()||this.unpublish([e])}_onLocalTrackMuted(e){return r(this,void 0,void 0,(function*(){const r=e.getTrackId(),n=this._context.getCurrentId(),s=[{resourceId:r,enabled:!e.isLocalMuted()}],o=this._roomResources[n]||[],a=[];for(let e=0;e<o.length;e+=1){const t=o[e],r=qe(t),i=s.findIndex((e=>e.resourceId===r));if(i>=0){const{enabled:e}=s[i];t.state=e?1:0,a.push(t);break}}const d=yield c((()=>this._context.setRTCTotalRes(this._roomId,Fe(lt.MODIFY,a),He(o),lt.TOTAL_CONTENT_RESOURCE)));d!==t.ErrorCode.SUCCESS&&i.error("notice `track.enabled` change failed -> code: "+d)}))}_removePubFailedTracks(e){e.forEach((e=>{const t=e instanceof Le?e:e.track;i.debug(`remove pub failed track from peerconnection -> trackId: ${t.getTrackId()}`),this._pc.removeLocalTrackById(t.getTrackId())}))}publish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__publish(e)))}))}__publish(n){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.error(`publish failed, room has been destroyed. -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof Le||e.track instanceof Le))),!0))return i.error(`publish failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._context.getCurrentId();if(this._pc.getLocalTracks().length+(e=>{let t=0;return e.forEach((e=>{e instanceof Le?t++:e.pubTiny&&e.track.isVideoTrack()?t+=2:t++})),t})(n)>10)return i.error(`publish failed, tracks limit exceeded -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PUBLISH_TRACK_LIMIT_EXCEEDED};i.debug(`publish tracks -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`),n.forEach((t=>{const{track:r,pubTiny:n}=t instanceof Le?{pubTiny:!1,track:t}:t;if(this._pc.addLocalTrack(r),r.isVideoTrack()&&n){let t;try{t=r.__innerGetMediaStreamTrack().clone();const i=n.frameRate||e.RCFrameRate.FPS_15,s=n.resolution||e.RCResolution.W176_H144,{width:o,height:a}=tt(s),c=nt(i);t.applyConstraints({width:o,height:a,frameRate:c})}catch(e){return null==t||t.stop(),void i.warn(`pubTiny failed -> id: ${r.getTrackId()}, msg: ${e.message}`)}this._pc.addLocalTrack(new Ne(r.getTag(),r.getUserId(),t,!0))}})),this._pc.clearReTryExchangeTimer();const s=yield this._createExchangeParams(this._subscribedList,!1),o=yield this._exchangeHandle(s);if(o.code!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${o.code}`),this._removePubFailedTracks(n),{code:o.code};const{publishList:a,sdp:c,resultCode:d,message:u,urls:l,mcuPublishList:h}=o.data;if(d!==e.RCRTCCode.SUCCESS)return i.error(`publish failed -> roomId: ${this._roomId}, code: ${d}, msg: ${u}`),this._removePubFailedTracks(n),{code:d};const p=yield this._pc.setRemoteAnswer(c.sdp);if(p!==e.RCRTCCode.SUCCESS)return{code:p};const m=this._roomResources[r],_=a.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e))),{publishedList:C}=Ze(m,_),R=(null==h?void 0:h.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))))||[],f=yield this._context.setRTCTotalRes(this._roomId,Fe(lt.PUBLISH,C),He(_),lt.TOTAL_CONTENT_RESOURCE,He(R));if(f!==t.ErrorCode.SUCCESS)return i.error(`send publish streams notification failed: ${f}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._roomResources[r]=_;const v=C.map((e=>qe(e)));return this._polarisReport&&this._polarisReport.sendR2(Dt.PUBLISH,Nt.BEGIN,v),n.forEach((e=>{const{track:t}=e instanceof Le?{track:e}:e;t.__innerSetPublished(!0)})),i.debug(`publish success: ${v.join(",")}`),this._roomMode===t.RTCMode.LIVE?{code:e.RCRTCCode.SUCCESS,liveUrl:null==l?void 0:l.liveUrl}:{code:e.RCRTCCode.SUCCESS}}))}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){const t=yield this._createExchangeParams(this._subscribedList,!0),r=yield this._exchangeHandle(t);if(r.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${r.code}`),{code:r.code};const{sdp:n,resultCode:s}=r.data;if(s!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${s}`),{code:s};this._pc.clearReTryExchangeTimer();const o=yield this._pc.setRemoteAnswer(n.sdp);return o!==e.RCRTCCode.SUCCESS?{code:o}:void 0}))))}))}_exchangeHandle(e){return this._service.exchange(this._getRTCReqestHeaders(),e)}_getRTCReqestHeaders(){return{"App-Key":this._context.getAppkey(),RoomId:this._roomId,Token:this._token,RoomType:this._roomMode,UserId:this._context.getCurrentId()}}_createExchangeParams(e,t){return r(this,void 0,void 0,(function*(){return{sdp:yield this._pc.createOffer(t),extend:JSON.stringify({resolutionInfo:this._pc.getOutboundVideoInfo()}),subscribeList:e.filter((e=>{const t=e.track.getTrackId(),{userId:r}=ze(t);if(!this._roomResources[r])return!1;const i=this._roomResources[r].filter((e=>t===`${e.msid}_${e.mediaType}`)).length;return i})).map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._getResourceById(e.track.getTrackId()).uri}))),switchstream:!1}}))}_getResourceState(e){var t;return(null===(t=this.getLocalTrack(e))||void 0===t?void 0:t.isLocalMuted())?0:1}unpublish(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unpublish(e)))}))}__unpublish(n){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.warn(`room has been destroyed, no need to unpublish tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};const r=this._context.getCurrentId();if(!t.validate("tracks",n,(()=>n.every((e=>e.getUserId()===r&&e instanceof Le))),!0))return i.warn(`unpublish failed, tracks is invalid -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`),{code:e.RCRTCCode.PARAMS_ERROR};const o=n.map((e=>e.getTrackId())),a=o.map(this._getResourceById.bind(this)).filter((e=>!!e));if(0===a.length)return{code:e.RCRTCCode.SUCCESS};const c=this._roomResources[r].filter((e=>!a.includes(e)));o.forEach((e=>this._pc.removeLocalTrackById(e))),null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.PUBLISH,Nt.END,o),this._pc.clearReTryExchangeTimer();const d=yield this._createExchangeParams(this._subscribedList,!1),u=yield this._exchangeHandle(d);if(u.code!==e.RCRTCCode.SUCCESS)return i.error(`exchange failed -> code: ${u.code}`),{code:u.code};const{publishList:l,sdp:h,resultCode:p,message:m,mcuPublishList:_}=u.data;p!==e.RCRTCCode.SUCCESS&&i.error(`unpublish streams failed -> code: ${p}, msg: ${m}`);const C=_?_.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:1},e))):[],R=yield this._context.setRTCTotalRes(this._roomId,Fe(lt.UNPUBLISH,a),He(c),lt.TOTAL_CONTENT_RESOURCE,He(C));if(R!==t.ErrorCode.SUCCESS)return i.error("send unpublish notification failed:",R),{code:e.RCRTCCode.SIGNAL_ERROR};i.debug(`unpublish success -> tracks: ${o.join(",")}`);const f=yield this._pc.setRemoteAnswer(h.sdp);if(f!==e.RCRTCCode.SUCCESS)return{code:f};const v=l.map((e=>Object.assign({tag:e.msid.split("_").pop(),state:this._getResourceState(qe(e))},e)));return this._roomResources[r]=v,{code:e.RCRTCCode.SUCCESS}}))}_getResourceById(e){const{userId:t}=ze(e);return this._roomResources[t].find((t=>qe(t)===e))}_isValidResourceId(e){var t;const{userId:r}=ze(e);return!!(null===(t=this._roomResources[r])||void 0===t?void 0:t.find((t=>qe(t)===e)))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,!1)))}))}__subscribe(n,s=!1){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.error(`subscribe failed, room has been destroyed -> roomId: ${this._roomId}`),{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`subscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`subscribe -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`);const r=this._subscribedList.map((e=>Object.assign({},e))),a=n.map((e=>e instanceof je?{track:e}:e));let c=!1;const d=[];return a.forEach((e=>{const t=e.track.getTrackId();d.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),c=!0)})),c||s?(null===(o=this._polarisReport)||void 0===o||o.sendR2(Dt.SUBSCRIBE,Nt.BEGIN,d),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__unsubscribe(n){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return i.warn(`room has beed destroyed, no need to unsubscribe tracks -> roomId: ${this._roomId}`),{code:e.RCRTCCode.SUCCESS};if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`unsubscribe -> roomId: ${this._roomId}, tracks: ${n.map(wt)}`);const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.SUBSCRIBE,Nt.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinRTCRoom` or `RCRTCClient.joinLivingRoom` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}getLocalTrack(e){return this._pc.getLocalTrack(e)}getLocalTracks(){return this._pc.getLocalTracks()}getRemoteTrack(e){return this._remoteTracks[e]||null}updateSubList(e){return r(this,void 0,void 0,(function*(){return c((()=>this._updateSubListHandle(e,!1)))}))}_updateSubListHandle(n,s=!1){return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return i.error(`update sublist failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};i.info(`update subscribe list -> roomId: ${this._roomId}, forceReq: ${s}, tracks: ${n.map(wt)}`);let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const o={};r=r.filter((e=>{const t=e.track.getTrackId();return this._remoteTracks[t]?!o[t]&&(o[t]=!0):(i.warn(`track cannot found in room -> trackId: ${t}`),!1)})).map((e=>Object.assign({},e)));const a=this._subscribedList.map((e=>Object.assign({},e)));if(!s){let t=!1;if(r.forEach((e=>{const r=a.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);a.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),a.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const c=yield this._createExchangeParams(r,!1),d=yield this._exchangeHandle(c),u=r.map((e=>e.track.getTrackId()));if(d.code!==e.RCRTCCode.SUCCESS)return{code:d.code};const{sdp:l,resultCode:h,message:p,subscribedList:m}=d.data;if(h!==e.RCRTCCode.SUCCESS)return i.error(`change subscribe list failed: ${h}`),{code:h};i.debug(`subscribe success: ${u.join(",")}`);const _=yield this._pc.setRemoteAnswer(l.sdp);if(_!==e.RCRTCCode.SUCCESS)return{code:_};const C=null==m?void 0:m.map((e=>`${e.msid}_${e.mediaType}`)),R=r.filter((e=>null==C?void 0:C.includes(e.track.getTrackId()))),f=r.filter((e=>!(null==C?void 0:C.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=R.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...R),f.length?{code:e.RCRTCCode.SUCCESS,failedList:f}:{code:e.RCRTCCode.SUCCESS}}))}registerRoomEventListener(e){this._appListener=e}registerReportListener(e){this._pc.registerReportListener(e)}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}__onReconnected(n){return r(this,void 0,void 0,(function*(){if("closed"===this._pc.getRTCPeerConn().connectionState)return i.warn("RTCPeerConnection closed. Please rejoin room to restore services."),void this._rtcpeerClosed();const{code:r,data:s}=yield this._context.joinRTCRoom(this._roomId,this._roomMode,n);if(r!==t.ErrorCode.SUCCESS)return void i.error(`RTC __onReconnected getRTCRoomInfo failed: ${r}`);i.debug(`RTC __onReconnected getRTCRoomInfo success: ${JSON.stringify(s)}`);const o=[],a={},c={},d={},u=ut(s),l=Object.keys(u),h=Object.keys(this._roomResources);for(let e=l.length-1;e>=0;e-=1){const t=l[e],r=h.indexOf(t);if(-1===r){o.push(t),a[t]=Xe(u[t]);continue}const i=this._roomResources[t],n=u[t],{publishedList:s,modifiedList:p,unpublishedList:m}=Ze(i,n,!0);a[t]=Xe(s),c[t]=Xe(m),d[t]=Xe(p),h.splice(r,1)}h.length&&h.forEach((e=>{delete this._roomResources[e]})),Object.assign(this._roomResources,u),h.length&&this._callAppListener("onUserLeave",h),o.length&&this._callAppListener("onUserJoin",o);for(const e in c){const t=c[e];if(t.length){const e=t.map((e=>this._remoteTracks[qe(e)]));yield this._onUserUnpublish(e)}}return Object.keys(a).forEach((t=>{const r=a[t];if(0===r.length)return;const i=r.map((t=>{const r=qe(t),{userId:i,tag:n,mediaType:s}=ze(r),o=this._remoteTracks[r]=s===e.RCMediaType.AUDIO_ONLY?new Ve(n,i):new Be(n,i);return o.__innerSetRemoteMuted(0===t.state),o}));this._onTrackPublish(i)})),Object.keys(d).forEach((e=>{d[e].forEach((e=>{const t=qe(e),r=this._remoteTracks[t];r.__innerSetRemoteMuted(0===e.state),r.isAudioTrack()?this._onAudioMuteChange(r):this._onVideoMuteChange(r)}))})),{data:s}}))}_onAudioMuteChange(e){this._callAppListener("onAudioMuteChange",e)}_onVideoMuteChange(e){this._callAppListener("onVideoMuteChange",e)}_afterChangedRole(e){}_removeRemoteTracks(){const e=Object.values(this._remoteTracks);e.length&&(e.forEach((e=>{e.isAudioTrack()&&e.__releaseMediaElement()})),this._remoteTracks={})}}var $t,jt,Vt;e.BackgroundPictureFillMode=void 0,($t=e.BackgroundPictureFillMode||(e.BackgroundPictureFillMode={}))[$t.CROP=1]="CROP",$t[$t.WHOLE=2]="WHOLE",e.MixLayoutMode=void 0,(jt=e.MixLayoutMode||(e.MixLayoutMode={}))[jt.CUSTOMIZE=1]="CUSTOMIZE",jt[jt.SUSPENSION=2]="SUSPENSION",jt[jt.ADAPTATION=3]="ADAPTATION",e.MixVideoRenderMode=void 0,(Vt=e.MixVideoRenderMode||(e.MixVideoRenderMode={}))[Vt.CROP=1]="CROP",Vt[Vt.WHOLE=2]="WHOLE";const Bt=()=>({version:1,mode:e.MixLayoutMode.SUSPENSION});class Ft{constructor(e,t,r){this._onFlush=e,this._isValidTrackId=t,this._sendCDNInfoSignal=r,this._values=Bt()}setHostVideoTrack(t){if(!this._isValidTrackId(t))return i.error(`setHostVideoTrack failed: videoTrackId is invalid -> ${t}`),this;const{mediaType:r,tag:n,userId:s}=ze(t);return r!==e.RCMediaType.VIDEO_ONLY?(i.error(`setHostVideoTrack failed: kind of resource is not 'video' -> ${t}`),this):(this._values.host_stream_id=Qe(s,n),this)}setMixLayoutMode(t){return[e.MixLayoutMode.CUSTOMIZE,e.MixLayoutMode.SUSPENSION,e.MixLayoutMode.ADAPTATION].includes(t)?(this._values.mode=t,this):(i.error(`layout mode is invalid: ${t}`),this)}_addOutputValue(t,r,i="normal"){const n=this._values.output||(this._values.output={video:{normal:{width:640,height:480}}});if("cdn"===t)return void(n.cdn=r);if("audio"===t)return void(n.audio={bitrate:r});const s=n.video;if("normal"!==i&&"tiny"!==i)if("backgroundColor"!==i)if("exparams"!==i){if("backgroundPicture"===i){const t=s.backgroundPicture||(s.backgroundPicture={fillMode:e.BackgroundPictureFillMode.CROP,picture:[]});Object.assign(t,r)}}else s.exparams={renderMode:r};else s.backgroundColor=r;else{const e=s[i]||(s[i]={});Object.assign(e,r)}}setOutputVideoResolution(e){if(!rt(e))return i.warn("setOutputVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"normal"),this}setOutputVideoFPS(e){if(!it(e))return i.warn("setOutputVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"normal"),this}setOutputVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"normal"),this}setOutputTinyVideoResolution(e){if(!rt(e))return i.warn("setOutputTinyVideoResolution failed: `resolution` is invalid"),this;const{width:t,height:r}=tt(e);return this._addOutputValue("video",{width:t,height:r},"tiny"),this}setOutputTinyVideoFPS(e){if(!it(e))return i.warn("setOutputTinyVideoFPS failed: `fps` is invalid"),this;const t=nt(e);return this._addOutputValue("video",{fps:t},"tiny"),this}setOutputTinyVideoBitrate(e){return!t.isNumber(e)||e<=0?i.error(`bitrate is invalid: ${e}`):this._addOutputValue("video",{bitrate:e},"tiny"),this}setOutputVideoRenderMode(t){return[e.MixVideoRenderMode.CROP,e.MixVideoRenderMode.WHOLE].includes(t)?this._addOutputValue("video",t,"exparams"):i.error(`renderMode is invalid: ${t}`),this}setOutputAudioBitrate(e){return t.isNumber(e)&&e>0?this._addOutputValue("audio",e):i.error(`bitrate is invalid: ${e}`),this}setOutputBackgroundColor(e){return/^0x[a-fA-F0-9]{6}$/.test(e)?this._addOutputValue("video",e,"backgroundColor"):i.error(`color is invalid: ${e}`),this}addOutputBackgroundPicture(e,r,n,s,o){var a,c,d;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;if([r,n,s,o].some((e=>!t.isNumber(e)||e<0||e>1)))return i.error(`some attrs of (x, y, w, h) is invalid: ${r}, ${n}, ${s}, ${o}`),this;const u=(null===(d=null===(c=null===(a=this._values.output)||void 0===a?void 0:a.video)||void 0===c?void 0:c.backgroundPicture)||void 0===d?void 0:d.picture)||[];return u.push({uri:e,w:s,h:o,x:r,y:n}),this._addOutputValue("video",{picture:u},"backgroundPicture"),this}removeOutputBackgroundPicture(e){var r,n,s;if(!t.isHttpUrl(e))return i.error(`uri is invalid: ${e}`),this;let o=null===(s=null===(n=null===(r=this._values.output)||void 0===r?void 0:r.video)||void 0===n?void 0:n.backgroundPicture)||void 0===s?void 0:s.picture;return o&&(o=o.filter((t=>t.uri!==e)),this._addOutputValue("video",{pictures:o},"backgroundPicture")),this}clearOutputBackgroundPicture(){return this._addOutputValue("video",{pictures:[]},"backgroundPicture"),this}setOutputBackgroundPictureFillMode(t){return[e.BackgroundPictureFillMode.CROP,e.BackgroundPictureFillMode.WHOLE].includes(t)?this._addOutputValue("video",{fillMode:t},"backgroundPicture"):i.error(`fillMode is invalid: ${t}`),this}addPublishStreamUrls(e){var r,n;const s=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!s.test(e))))return i.error(`urls is invalid: ${e}`),this;const o=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];let a=!1;return e.forEach((e=>{o.some((t=>t.pushurl===e))||(a=!0,o.push({pushurl:e}))})),o.length>5?(i.error("publish stream url no more than 5"),this):(a&&this._addOutputValue("cdn",o),this)}removePublishStreamUrls(e){var r,n;const s=/^rtmp:\/\/.+/;if(!t.isArray(e)||0===e.length||e.some((e=>!s.test(e))))return i.error(`urls is invalid: ${e}`),this;const o=(null===(n=null===(r=this._values.output)||void 0===r?void 0:r.cdn)||void 0===n?void 0:n.concat())||[];for(let t=o.length-1;t>=0;t-=1){const{pushurl:r}=o[t],i=e.indexOf(r);i>=0&&(e.splice(i,1),o.splice(t,1))}return this._addOutputValue("cdn",o),this}clearPublishStreamUrls(){return this._addOutputValue("cdn",[]),this}addCustomizeLayoutVideo(r,n,s,o,a){if(!this._isValidTrackId(r))return i.error(`trackId is invalid: ${r}`),this;if(!t.isNumber(n)||!t.isNumber(s))return i.error(`some attrs of (x, y) is invalid: ${n}, ${s}`),this;if([o,a].some((e=>!t.isNumber(e)||e<0)))return i.error(`some attrs of (width, height) is invalid: ${o}, ${a}`),this;const{userId:c,tag:d,mediaType:u}=ze(r);if(u!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${r}`),this;const l=Qe(c,d);return(this._values.input||(this._values.input={video:[]})).video.push({user_id:c,stream_id:l,x:n,y:s,width:o,height:a}),this}removeCustomizeLayoutVideo(t){if(!this._isValidTrackId(t))return i.error(`trackId is invalid: ${t}`),this;const{userId:r,tag:n,mediaType:s}=ze(t);if(s!==e.RCMediaType.VIDEO_ONLY)return i.error(`kind of resource is not 'video': ${t}`),this;const o=Qe(r,n),a=this._values.input||(this._values.input={video:[]});return a.video=a.video.filter((e=>e.stream_id===o)),this}clearCustomizeLayoutVideo(){return(this._values.input||(this._values.input={video:[]})).video=[],this}flush(){var t,i,n,s;return r(this,void 0,void 0,(function*(){const r=JSON.parse(JSON.stringify(this._values)),{code:o}=yield this._onFlush(r);return o===e.RCRTCCode.SUCCESS&&((null===(i=null===(t=this._values.output)||void 0===t?void 0:t.video.normal)||void 0===i?void 0:i.width)||(null===(s=null===(n=this._values.output)||void 0===n?void 0:n.video.normal)||void 0===s?void 0:s.fps))&&this._sendCDNInfoSignal(),this._values=Bt(),{code:o}}))}}var Ht,Gt,Jt;!function(e){e[e.OPEN=1]="OPEN",e[e.STOP=2]="STOP"}(Ht||(Ht={})),function(e){e[e.SPREAD=0]="SPREAD",e[e.NO_SPREAD=-1]="NO_SPREAD"}(Gt||(Gt={})),function(e){e[e.AUTOMATIC=0]="AUTOMATIC",e[e.MANUAL=1]="MANUAL"}(Jt||(Jt={}));class Wt extends Ut{constructor(e,r,i,n,s,o,a,c,d=!1){var u;super(e,r,i,n,t.RTCMode.LIVE,s,o,a,d),this._livingType=c,this._CDNUris=null,this._CDNEnable=!1,this._mcuConfigBuilder=new Ft(this._onMCUConfigFlush.bind(this),this._isValidResourceId.bind(this),this._sendCDNInfoSignal.bind(this));const l=null===(u=n.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===u?void 0:u.value;l&&(this._CDNUris=JSON.parse(l)[0])}getLivingType(){return this._livingType}getMCUConfigBuilder(){return this._mcuConfigBuilder}_onMCUConfigFlush(t){return r(this,void 0,void 0,(function*(){const r={"App-Key":this._context.getAppkey(),Token:this._token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},{code:n,res:s}=yield this._service.setMcuConfig(r,t);return n!==e.RCRTCCode.SUCCESS?(i.error(`set MCU config failed: ${n}`),{code:n}):(i.info("set MCU config success"),s.pull_url&&(this._CDNUris=JSON.parse(s.pull_url)),{code:n,res:s})}))}__onReconnected(){const e=Object.create(null,{__onReconnected:{get:()=>super.__onReconnected}});var t,i;return r(this,void 0,void 0,(function*(){const r=yield e.__onReconnected.call(this,this._livingType);if(!r||!r.data)return;const n=r.data.roomInfo,s=null===(t=n.filter((e=>"cdn_uris"===e.key))[0])||void 0===t?void 0:t.value;if(!s)return;const o=JSON.parse(s);(null===(i=this._CDNUris)||void 0===i?void 0:i.enableInnerCDN)!==o.enableInnerCDN&&this._callAppListener("onCDNEnableChange",o.enableInnerCDN),this._CDNUris=o}))}enableInnerCDN(n){return r(this,void 0,void 0,(function*(){if(!t.isBoolean(n))return i.error("`enable` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};this._CDNEnable=n;const s={version:2,output:{inCDNModel:n?Ht.OPEN:Ht.STOP}},{code:o}=yield this._onMCUConfigFlush(s);if(o!==e.RCRTCCode.SUCCESS)return i.error(`enableInnerCDN failed -> code: ${o}`),{code:e.RCRTCCode.SIGNAL_ERROR};if(this._CDNUris&&this._CDNUris.broadcast!==Gt.SPREAD)return i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS};const{code:a}=yield c((()=>r(this,void 0,void 0,(function*(){return this._sendCDNInfoSignal()}))));return a===e.RCRTCCode.SUCCESS?(i.info("enableInnerCDN succeed"),{code:e.RCRTCCode.SUCCESS}):(i.error(`enableInnerCDN failed -> code: ${a}`),{code:a})}))}_sendCDNInfoSignal(){return r(this,void 0,void 0,(function*(){this._CDNUris=Object.assign({},this._CDNUris,{enableInnerCDN:this._CDNEnable});return(yield Promise.all([this._spreadCDNInfo(this._CDNUris),this._setRoomCDNInfo(this._CDNUris)])).every((t=>t.code===e.RCRTCCode.SUCCESS))?{code:e.RCRTCCode.SUCCESS}:{code:e.RCRTCCode.SIGNAL_ERROR}}))}_spreadCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCCDNUris(this._roomId,lt.TOTAL_CONTENT_RESOURCE,JSON.stringify([n]));return r!==t.ErrorCode.SUCCESS?(i.error(`spreadCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("spreadCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_setRoomCDNInfo(n){return r(this,void 0,void 0,(function*(){const r=yield this._context.setRTCData(this._roomId,"cdn_uris",JSON.stringify([n]),!0,t.RTCApiType.ROOM);return r!==t.ErrorCode.SUCCESS?(i.error(`setRoomCDNInfo failed -> code: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR}):(i.info("setRoomCDNInfo succeed"),{code:e.RCRTCCode.SUCCESS})}))}_resourceHandle(e,t,i){const n=Object.create(null,{_resourceHandle:{get:()=>super._resourceHandle}});var s;return r(this,void 0,void 0,(function*(){n._resourceHandle.call(this,e,t,i),e.cdn_uris&&((null===(s=this._CDNUris)||void 0===s?void 0:s.enableInnerCDN)!==e.cdn_uris[0].enableInnerCDN&&this._callAppListener("onCDNEnableChange",!this.__getCDNEnable()),this._CDNUris=e.cdn_uris[0])}))}_exchangeHandle(t){var i,n,s;return r(this,void 0,void 0,(function*(){const r=yield this._service.exchange(this._getRTCReqestHeaders(),t),o=null===(n=null===(i=r.data)||void 0===i?void 0:i.urls)||void 0===n?void 0:n.pull_url;return r.code===e.RCRTCCode.SUCCESS&&o?(this._CDNUris=JSON.parse(o),(null===(s=this._CDNUris)||void 0===s?void 0:s.broadcast)===Gt.SPREAD&&(this._CDNEnable=!0,this._sendCDNInfoSignal()),r):r}))}_afterChangedRole(e){const t=ut(e),r=this._context.getCurrentId(),i=Object.keys(t);setTimeout((()=>{var n,s,o;const a=i.filter((e=>e!==r));a.length>0&&this._callAppListener("onUserJoin",a);for(const e in t)e!==r&&this._resourceHandle({uris:t[e]},lt.TOTAL_CONTENT_RESOURCE,e);(null===(n=e.roomInfo.filter((e=>"cdn_uris"===e.key))[0])||void 0===n?void 0:n.value)&&(null===(s=this._CDNUris)||void 0===s?void 0:s.push_mode)===Jt.MANUAL&&this._callAppListener("onCDNEnableChange",null===(o=this._CDNUris)||void 0===o?void 0:o.enableInnerCDN)}))}__getCDNEnable(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.enableInnerCDN}__getCDNPushMode(){var e;return null===(e=this._CDNUris)||void 0===e?void 0:e.push_mode}}class Yt extends Ut{constructor(e,r,i,n,s,o,a){super(e,r,i,n,t.RTCMode.RTC,s,o,a,!1)}}const Kt=()=>({"Content-Type":"application/json;charset=UTF-8","Cache-Control":"no-cache",ClientType:`web|${st.browser}|${st.version}`,ClientVersion:"5.2.5","Client-Session-Id":"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){const t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)})),"Request-Id":Date.now().toString()});class qt{constructor(e,t,r,i=5e3){this._runtime=e,this._context=t,this._msUrl=r,this._timeout=i,this._msInNavi=[],this._failedMs=[],this._rtcFinger=void 0,this._clusterId="",this._configUrl=""}getNaviMS(){return this._msUrl?[this._msUrl]:this._clusterId?[`https://${this._clusterId}`]:(0===this._msInNavi.length&&(0===this._failedMs.length?this._msInNavi.push(...(e=>{var t;if(!e)return[];let r;try{r=JSON.parse(e.voipCallInfo||'{ "strategy": 0 }')}catch(t){return i.warn("parse `voipCallInfo` of navi failed: "+e.voipCallInfo),[]}if(0===r.strategy)return[];const n=null===(t=r.callEngine)||void 0===t?void 0:t.filter((e=>4===e.engineType));if(!n||0===n.length)return[];const s=n[0],o=[];return s.mediaServer&&o.push(s.mediaServer.replace(/^(https?:\/\/)?/,"https://")),s.backupMediaServer&&s.backupMediaServer.forEach((e=>{o.push(e.replace(/^(https?:\/\/)?/,"https://"))})),o})(this._context.getNaviInfo())):(this._msInNavi.push(...this._failedMs),this._failedMs.length=0)),this._msInNavi.map((e=>e.trim())))}_request(n,s,o){return r(this,void 0,void 0,(function*(){const r=this.getNaviMS();if(0===r.length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};this._rtcFinger&&(o.rtcFinger=this._rtcFinger);for(let a=0;a<r.length;a+=1){const c=`${r[a]}${n}`,d=Kt();i.debug(`request -> Request-Id: ${d["Request-Id"]}, url: ${c}`);const{status:u,data:l}=yield this._runtime.httpReq({url:c,body:JSON.stringify(o),headers:Object.assign(Object.assign({},d),s),method:t.HttpMethod.POST,timeout:this._timeout});if(200===u){const t=JSON.parse(l);return t.rtcFinger&&(this._rtcFinger=t.rtcFinger),t.clusterId&&(this._clusterId=t.clusterId),i.debug(`request success -> Request-Id: ${d["Request-Id"]}`),{code:e.RCRTCCode.SUCCESS,data:t}}i.warn(`request failed -> Request-Id: ${d["Request-Id"]}, status: ${u}, url: ${c}`),this._failedMs.push(...this._msInNavi.splice(a,1))}return{code:e.RCRTCCode.REQUEST_FAILED}}))}exchange(t,i){var n;return r(this,void 0,void 0,(function*(){const r=yield this._request("/exchange",t,i);if(r.code===e.RCRTCCode.SUCCESS&&(null===(n=r.data)||void 0===n?void 0:n.resultCode)===e.RCRTCCode.SUCCESS){const e=r.data.urls;e&&(this._configUrl=e.configUrl)}return r}))}exit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/exit",e,{});return t}))}broadcastSubscribe(e,t){return this._request("/broadcast/subscribe",e,t)}broadcastExit(e){return r(this,void 0,void 0,(function*(){const{code:t}=yield this._request("/broadcast/exit",e,{});return{code:t}}))}setMcuConfig(n,s){return r(this,void 0,void 0,(function*(){if(!this._configUrl)return{code:e.RCRTCCode.MCU_SERVER_NOT_FOUND};const r=`${this._configUrl.replace(/^(https?:\/\/)?/,"https://")}/server/mcu/config`,o=Kt();i.debug(`request -> Request-Id: ${o["Request-Id"]}, url: ${r}`);const{status:a,data:c}=yield this._runtime.httpReq({url:r,headers:Object.assign(Object.assign({},o),n),body:JSON.stringify(s),method:t.HttpMethod.POST});if(200===a){i.debug(`request success -> Request-Id: ${o["Request-Id"]}`);const e=JSON.parse(c);return{code:e.resultCode,res:e}}return{code:e.RCRTCCode.REQUEST_FAILED}}))}getCDNResourceInfo(n,s){return r(this,void 0,void 0,(function*(){const r=Kt(),{status:o,data:a}=yield this._runtime.httpReq({url:s,headers:Object.assign(Object.assign({},r),n),method:t.HttpMethod.GET});if(200===o){const e=JSON.parse(a);return{code:e.resultCode,res:e}}return i.warn(`request failed -> Request-Id: ${r["Request-Id"]}, status: ${o}, url: ${s}`),{code:e.RCRTCCode.REQUEST_FAILED}}))}}var zt,Qt,Xt;e.RCLivingType=void 0,(zt=e.RCLivingType||(e.RCLivingType={}))[zt.VIDEO=0]="VIDEO",zt[zt.AUDIO=1]="AUDIO";class Zt{constructor(e,t,r){this._context=e,this._rtcToken="",this._liveUrl="",this._subTracks=[],this._livingType=null,this._mediaType=null,this._subTiny=!1,this._fromRetry=!1,this._appListener=null,this._service=new qt(t,e,r.mediaServer)}_getReqHeaders(n){return r(this,void 0,void 0,(function*(){const r=this._context.getCurrentId(),s=r;if(!this._rtcToken){const{code:r,data:o}=yield this._context.getRTCToken(s,t.RTCMode.LIVE,n);if(r!==t.ErrorCode.SUCCESS)return i.error(`getRTCToken failed: ${r}`),{code:e.RCRTCCode.SIGNAL_ERROR};this._rtcToken=o.rtcToken}return{code:e.RCRTCCode.SUCCESS,headers:{"App-Key":this._context.getAppkey(),UserId:r,RoomId:s,RoomType:t.RTCMode.LIVE,Token:this._rtcToken}}}))}_clearSubscribeInfo(){var e;this._liveUrl="",this._livingType=null,this._mediaType=null,this._subTiny=!1,this._subTracks.length=0,null===(e=this._pc)||void 0===e||e.destroy(),this._pc=null}_reTryExchange(){var t;return r(this,void 0,void 0,(function*(){this._fromRetry=!0;const{code:r}=yield this.subscribe(this._liveUrl,this._livingType,this._mediaType,this._subTiny);r===e.RCRTCCode.SUCCESS&&(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer())}))}subscribe(e,t,i,n=!1){return r(this,void 0,void 0,(function*(){return c((()=>this.__subscribe(e,t,i,n)))}))}__subscribe(n,s,o,a=!1){var c;return r(this,void 0,void 0,(function*(){const r=[];if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR,tracks:r};if(!this._fromRetry&&(null===(c=this._pc)||void 0===c||c.clearReTryExchangeTimer()),this._fromRetry=!1,!t.isString(n))return i.error(`liveUrl is invalid: ${n}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCLivingType.AUDIO,e.RCLivingType.VIDEO].includes(s))return i.error(`livingType is invalid: ${s}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(![e.RCMediaType.AUDIO_ONLY,e.RCMediaType.VIDEO_ONLY,e.RCMediaType.AUDIO_VIDEO].includes(o))return i.error(`mediaType is invalid: ${o}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};if(this._liveUrl&&this._liveUrl!==n)return{code:e.RCRTCCode.BROADCAST_SUB_LIST_NOT_EMPTY,tracks:r};this._pc||(this._pc=new Pt(this._reTryExchange.bind(this)),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,this._onTrackReady,this),this.registerReportListener(this._reportListener)),this._liveUrl=n;const{code:d,headers:u}=yield this._getReqHeaders(s);if(d!==e.RCRTCCode.SUCCESS)return{code:d,tracks:r};const l=`rc_mcu_${Date.now()}`,h="RongCloudRTC";0===this._subTracks.length&&(this._subTracks.push(new Ve(h,l),new Be(h,l)),this._pc.updateSubRemoteTracks(this._subTracks.slice()));const p={sdp:yield this._pc.createOffer(!0),liveUrl:n,mediaType:o,simulcast:a?mt.TINY:mt.NORMAL,switchstream:!1},m=yield this._service.broadcastSubscribe(u,p);if(m.code!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed: ${m.code}`),{code:m.code,tracks:r};const _=m.data;if(_.resultCode!==e.RCRTCCode.SUCCESS)return i.error(`andience subscribe failed! code: ${_.resultCode}; message: ${_.message}`),{code:_.resultCode,tracks:r};i.debug(`andience subscribe success: ${n}`),this._livingType=s,this._mediaType=o,this._subTiny=a;const{sdp:C,subscribedList:R}=_,f=[];return R.forEach((e=>{const{mediaType:t}=e,r=this._subTracks[t];f.push(r),r.__innerSetRemoteMuted(!0)})),this._pc.setRemoteAnswer(C.sdp),{code:e.RCRTCCode.SUCCESS,tracks:f}}))}unsubscribe(){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe()))}))}__unsubscribe(){var t;return r(this,void 0,void 0,(function*(){if(null===(t=this._pc)||void 0===t||t.clearReTryExchangeTimer(),!this._rtcToken||!this._liveUrl)return{code:e.RCRTCCode.SUCCESS};const{headers:r}=yield this._getReqHeaders(),{code:n}=yield this._service.broadcastExit(r);return n!==e.RCRTCCode.SUCCESS?i.error(`broadcast unsubscribe failed: ${n}`):i.debug("broadcast unsubscribe success"),this._clearSubscribeInfo(),{code:n}}))}registerReportListener(e){var t;this._reportListener=e,null===(t=this._pc)||void 0===t||t.registerReportListener(e)}registerTrackEventListener(e){this._appListener=e}_onTrackReady(t){var r,n;const s=t.receiver.track,o="audio"===s.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY,a=this._subTracks[o];a.__innerSetMediaStreamTrack(s);try{null===(n=null===(r=this._appListener)||void 0===r?void 0:r.onTrackReady)||void 0===n||n.call(r,a)}catch(e){i.error(e)}}}e.RCInnerCDNPullKind=void 0,(Qt=e.RCInnerCDNPullKind||(e.RCInnerCDNPullKind={})).RTMP="rtmp",Qt.FLV="flv",Qt.HLS="hls",e.RCInnerCDNPullIsHttps=void 0,(Xt=e.RCInnerCDNPullIsHttps||(e.RCInnerCDNPullIsHttps={}))[Xt.NOT_HTTPS=0]="NOT_HTTPS",Xt[Xt.HTTPS=1]="HTTPS";const er=Object.assign(Object.assign({},tt(e.RCResolution.W176_H144)),{frameRate:nt(e.RCFrameRate.FPS_15)});class tr{constructor(t,r,n,s,o,a){this._context=t,this._runtime=r,this._initOptions=n,this._roomId=s,this._joinResData=o,this._livingType=a,this._roomAnchorList=[],this._roomRes={},this._roomAnchorRes={},this._remoteTracks={},this._appListener=null,this._subscribedList=[],this._sessionId="",this._destroyed=!1,this._setInitData(),this._service=new qt(this._runtime,this._context,this._initOptions.mediaServer,this._initOptions.timeout),this._polarisReport=new Mt(this._context,this._runtime,this._roomId,this,Lt.Audience),this._polarisReport.sendR1(),this._pc=new Pt(this._reTryExchange.bind(this),this._polarisReport),this._pc.on(Pt.__INNER_EVENT_TRACK_READY__,(t=>{const r=t.streams[0].id,n=t.receiver.track,s=[r,"audio"===n.kind?e.RCMediaType.AUDIO_ONLY:e.RCMediaType.VIDEO_ONLY].join("_"),o=this._remoteTracks[s];o?(o.__innerSetMediaStreamTrack(n),this._callAppListener("onTrackReady",o)):i.warn("cannot found RCRemoteTrack:",n.id)})),this._context.onrtcdatachange=this.singalDataChange.bind(this)}_setInitData(){const{sessionId:t,remoteUserIds:r,remoteRTCUris:i,remoteMUCUris:n,remoteTracks:s,CDNUris:o}=((t,r)=>{const i=r.filter((e=>"RC_RTC_SESSIONID"===e.key))[0].value,n=r.filter((e=>"RC_ANCHOR_LIST"===e.key)).map((e=>JSON.parse(e.value||"[]")))[0],s=r.filter((e=>e.key.includes("RC_RES_"))).map((e=>JSON.parse(e.value||"{}"))),o=s.length?JSON.parse(s[0].mcu_uris||"[]"):[],a=[];o.forEach((r=>{const{mediaType:i,tag:n}=r,s=i===e.RCMediaType.AUDIO_ONLY?new Ve(n,"",t):new Be(n,"",t);a.push(s)}));const c=[],d=[];s.forEach((t=>{const r=JSON.parse(t.uris||"[]");c.push(...r),r.forEach((t=>{const{mediaType:r,tag:i,msid:n}=t,s=n.split("_")[0],o=r===e.RCMediaType.AUDIO_ONLY?new Ve(i,s):new Be(i,s);d.push(o)}))}));const u=r.filter((e=>"RC_CDN"===e.key)).map((e=>{const t=JSON.parse(e.value||"[]");return JSON.parse(t.cdn_uris)[0]}))[0];return{sessionId:i,remoteUserIds:n||[],remoteRTCUris:c,remoteMUCUris:o,remoteRTCTracks:d,remoteMCUTracks:a,remoteTracks:[...d,...a],CDNUris:u||{}}})(this._roomId,this._joinResData.kvEntries);this._sessionId=t,this._roomAnchorList=r,s.forEach((e=>{this._remoteTracks[e.getTrackId()]=e})),this._CDNUris=o,i.forEach((e=>{const t=e.msid.split("_")[0];this._roomAnchorRes[t]?this._roomAnchorRes[t].push(e):this._roomAnchorRes[t]=[e]})),n.forEach((e=>{const{mediaType:t,tag:r}=e,i=[this._roomId,r,t].join("_");this._roomRes[i]=e})),i.forEach((e=>{const t=qe(e);this._roomRes[t]=e}))}_assertRoomDestroyed(){if(this._destroyed){const t="This room has been destroyed. Please use `RCRTCClient.joinLivingRoomAsAudience` to catch another instance.";return i.warn(t),e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED}}singalDataChange(e,t){var r;if(t!==this._roomId)return void i.warn(`singalDataChange -> not the current room data: data roomId: ${t}, current roomId: ${this._roomId}`);i.debug("singalDataChange -> singalData:",JSON.stringify(e||{}));const n=[],s=null===(r=e.filter((e=>"RC_CDN"===e.key))[0])||void 0===r?void 0:r.value;s&&this._diffCDNUris(JSON.parse(JSON.parse(s).cdn_uris)[0]),e.forEach((e=>{const{key:t,value:r,timestamp:i,uid:s}=e;if(-1!==t.indexOf("RC_RES_")){const e=JSON.parse(r||"{}"),t=JSON.parse(e.mcu_uris||"[]"),i=JSON.parse(e.uris||"[]");return n.push(...t),void this._diffAnchorResource(i,s)}if("RC_ANCHOR_LIST"===t){const e=JSON.parse(r||"[]"),{joinUserIds:t,leftUserIds:i}=this._diffAnchorList(e);t.length>0&&this._handleNewJoinedAnchor(t),i.length>0&&this._handleLeftedAnchor(i)}})),this._diffRoomResource(n)}_diffAnchorList(e){const t=e.filter((e=>this._roomAnchorList.indexOf(e)<0));return{leftUserIds:this._roomAnchorList.filter((t=>e.indexOf(t)<0)),joinUserIds:t}}_handleNewJoinedAnchor(e){this._roomAnchorList.push(...e),this._callAppListener("onAnchorJoin",e)}_handleLeftedAnchor(e){return r(this,void 0,void 0,(function*(){this._roomAnchorList=this._roomAnchorList.filter((t=>!(e.indexOf(t)>-1)));const t=[];e.forEach((e=>{t.push(...this.getRemoteTracksByUserId(e)),delete this._roomAnchorRes[e]})),t.length&&(yield this.unsubscribe(t),t.forEach((e=>delete this._remoteTracks[e.getTrackId()]))),this._callAppListener("onAnchorLeave",e)}))}_diffRoomResource(t){return r(this,void 0,void 0,(function*(){const r=[],i=[],n=[];t.forEach((t=>{const i=qe(t),{userId:s,tag:o,mediaType:a}=ze(i),c=[this._roomId,o,a].join("_");if(!this._remoteTracks[c]){const i=a===e.RCMediaType.AUDIO_ONLY?new Ve(o,"",this._roomId):new Be(o,"",this._roomId);r.push(i),this._remoteTracks[c]=i,this._roomRes[i.getTrackId()]=t}n.push(c)})),Object.keys(this._remoteTracks).forEach((e=>{n.indexOf(e)<0&&this._remoteTracks[e].isMCUTrack()&&i.push(this._remoteTracks[e])})),r.length>0&&this._callAppListener("onTrackPublish",r),i.length>0&&this._onUserUnpublish(i,"onTrackUnpublish")}))}_diffAnchorResource(t,n){return r(this,void 0,void 0,(function*(){const r=this._roomAnchorRes[n]||(this._roomAnchorRes[n]=[]),{publishedList:s,unpublishedList:o,modifiedList:a}=Ze(r,t);if(s.length){const t=r.map(qe),n=[],o=[];if(s.forEach((i=>{const s=qe(i),a=t.indexOf(s),{userId:c,tag:d,mediaType:u}=ze(s);a>-1?r[a]=i:r.push(i);let l=this._remoteTracks[s];this._roomRes[s]=i,l?l.isSubscribed()&&n.push(l):(l=u===e.RCMediaType.AUDIO_ONLY?new Ve(d,c):new Be(d,c),this._remoteTracks[s]=l,o.push(l)),l.__innerSetRemoteMuted(0===i.state)})),n.length){const t=n.map((e=>e.getTrackId()));i.debug(`resub tracks -> ${JSON.stringify(t)}`);const{code:r}=yield c((()=>this._subscribeHandle(n,!0)));r!==e.RCRTCCode.SUCCESS&&i.error(`resub tracks failed -> code: ${r}, ids: ${JSON.stringify(t)}`)}this._callAppListener("onAnchorTrackPublish",o)}if(o.length){const e=o.map(qe);for(let t=r.length-1;t>=0;t-=1){const i=r[t];e.includes(qe(i))&&r.splice(t,1)}const t=o.map((e=>{const t=qe(e);return this._remoteTracks[t]}));yield this._onUserUnpublish(t,"onAnchorTrackUnpublish")}if(a.length){const e=r.map(qe);for(let t=0;t<a.length;t++){const i=a[t],n=qe(i),s=e.indexOf(n);r[s].state=i.state;const o=this._remoteTracks[n];o.__innerSetRemoteMuted(0===i.state),o.isAudioTrack()?this._callAppListener("onAudioMuteChange",o):this._callAppListener("onVideoMuteChange",o)}}}))}_onUserUnpublish(e,t){return r(this,void 0,void 0,(function*(){yield this.unsubscribe(e),e.forEach((e=>{this._subscribedList=this._subscribedList.filter((t=>t.track.getTrackId()!==e.getTrackId())),delete this._roomRes[e.getTrackId()],e.__innerDestroy(),delete this._remoteTracks[e.getTrackId()]})),this._callAppListener(t,e)}))}_callAppListener(e,...t){var r;const n=null===(r=this._appListener)||void 0===r?void 0:r[e];if(n)try{n(...t)}catch(e){i.error(e)}}_reTryExchange(){return r(this,void 0,void 0,(function*(){c((()=>r(this,void 0,void 0,(function*(){var t;const{reqBody:r}=yield this._createSubscribeParams(this._subscribedList,{},!0),n=yield this._exchangeHandle(r);if(n.code!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${n.code}`),{code:n.code};const{sdp:s,resultCode:o}=n.data;if(o!==e.RCRTCCode.SUCCESS)return i.error(`reTryExchange failed: ${o}`),{code:o};this._pc.clearReTryExchangeTimer();const a=this._subscribedList.filter((e=>e.track.isMCUTrack()));if(a.length>0){const e=a[0].track.getTrackId(),r=null===(t=this._roomRes[e])||void 0===t?void 0:t.msid,i=[this._roomId,"RongCloudRTC"].join("_");s.sdp=s.sdp.replace(new RegExp(r,"g"),i)}const c=yield this._pc.setRemoteAnswer(s.sdp);return c!==e.RCRTCCode.SUCCESS?{code:c}:void 0}))))}))}_createSubscribeParams(e,t,i){return r(this,void 0,void 0,(function*(){const r=yield this._pc.createOffer(i),n={resolutionInfo:[]},s={min:0,max:0};Object.keys(t).forEach((e=>{const{mediaStream:i,tinyStream:o}=t[e];[i,o].forEach(((t,i)=>{var o;const a=1===i?[e,"tiny"].join("_"):e;r.sdp=null===(o=r.sdp)||void 0===o?void 0:o.replace(new RegExp(t.id,"g"),a);const c=t.getVideoTracks()[0];if(!c)return;const d=0===i,{width:u,height:l,frameRate:h}=d?Ye(c):er;n.resolutionInfo.push({trackId:c.id,simulcast:d?mt.NORMAL:mt.TINY,resolution:`${u}x${l}`});const p=Ie(u,l),m=be(h);s.min+=p.minBitrate*m,s.max+=p.maxBitrate*m}))}));return{reqBody:{sdp:r,switchstream:!1,newVersionFlag:!0,subscribeList:e.map((e=>({simulcast:e.subTiny?mt.TINY:mt.NORMAL,resolution:"",uri:this._roomRes[e.track.getTrackId()].uri})))},dynamicBitrate:s,offer:r}}))}_subscribeHandle(i,n=!1){var s;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("tracks",i,(()=>t.isArray(i)&&i.length>0&&i.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))),o=i.map((e=>e instanceof je?{track:e}:e));let a=!1;const c=[];return o.forEach((e=>{const t=e.track.getTrackId();c.push(t);const i=r.find((e=>e.track.getTrackId()===t));i&&i.subTiny===e.subTiny||(i?i.subTiny=e.subTiny:r.push(e),a=!0)})),a||n?(null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.SUBSCRIBE,Nt.BEGIN,c),this._updateSubListHandle(r,!0)):{code:e.RCRTCCode.SUCCESS}}))}_getReqHeaders(){const e=this._context.getCurrentId();return{"App-Key":this._context.getAppkey(),RoomId:e,Token:this._joinResData.token,RoomType:t.RTCMode.LIVE,UserId:e,"Session-Id":this._sessionId}}_exchangeHandle(e){return this._service.broadcastSubscribe(this._getReqHeaders(),e)}_updateSubListHandle(n,s=!1){var o;return r(this,void 0,void 0,(function*(){if(this._assertRoomDestroyed())return{code:e.RCRTCCode.ROOM_HAS_BEEN_DESTROYED};if(!t.validate("resources",n,(()=>t.isArray(n)&&n.every((e=>e instanceof je||e.track instanceof je))),!0))return{code:e.RCRTCCode.PARAMS_ERROR};let r=n.map((e=>e instanceof je?{track:e}:Object.assign({},e)));const a={};r=r.filter((e=>{const t=e.track.getTrackId();return!a[t]&&(a[t]=!0)})).map((e=>Object.assign({},e)));const c=this._subscribedList.map((e=>Object.assign({},e)));if(!s){let t=!1;if(r.forEach((e=>{const r=c.findIndex((t=>t.track===e.track));if(-1===r)return void(t=!0);c.splice(r,1)[0].subTiny!==e.subTiny&&(t=!0)})),c.length&&(t=!0),!t)return{code:e.RCRTCCode.SUCCESS}}this._pc.clearReTryExchangeTimer(),this._pc.updateSubRemoteTracks(r.map((e=>e.track)));const{reqBody:d}=yield this._createSubscribeParams(r,{},!1),u=yield this._exchangeHandle(d);if(c.length){const e=[];c.forEach((t=>{e.push(t.track.getTrackId())})),null===(o=this._pc.reportParser)||void 0===o||o.clearLatestPacketsRecv(e)}if(u.code!==e.RCRTCCode.SUCCESS)return{code:u.code};const{sdp:l,resultCode:h,message:p,subscribedList:m}=u.data;if(h!==e.RCRTCCode.SUCCESS)return i.error("change subscribe list failed:",p,h),{code:h};r.forEach((e=>{const{track:t}=e;if(t.isMCUTrack()){const e=this._roomRes[t.getTrackId()].msid,{tag:r,userId:i}=ze(t.getTrackId()),n=[i,r].join("_");l.sdp=l.sdp.replace(new RegExp(e,"g"),n)}}));const _=yield this._pc.setRemoteAnswer(l.sdp);if(_!==e.RCRTCCode.SUCCESS)return{code:_};const C=null==m?void 0:m.map((e=>`${e.msid}_${e.mediaType}`)),R=r.filter((e=>{if(e.track.isMCUTrack()){const t=this._roomRes[e.track.getTrackId()],r=`${t.msid}_${t.mediaType}`;return C.includes(r)}return null==C?void 0:C.includes(e.track.getTrackId())})),f=null==R?void 0:R.map((e=>`${e.track.getTrackId()}`)),v=r.filter((e=>!(null==f?void 0:f.includes(e.track.getTrackId()))));for(const e in this._remoteTracks){const t=R.some((t=>t.track.getTrackId()===e));this._remoteTracks[e].__innerSetSubscribed(t)}return this._subscribedList.splice(0,this._subscribedList.length,...R),v.length?{code:e.RCRTCCode.SUCCESS,failedList:v}:{code:e.RCRTCCode.SUCCESS}}))}_diffCDNUris(e){return r(this,void 0,void 0,(function*(){if(this._CDNUris.url&&!e.url)return this._callAppListener("onCDNInfoDisable"),void(this._CDNUris=e);(!this._CDNUris||!this._CDNUris.url&&e.url)&&this._callAppListener("onCDNInfoEnable",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`});const t=this._CDNUris.w&&e.w&&this._CDNUris.w!==e.w,r=this._CDNUris.h&&e.h&&this._CDNUris.h!==e.h,i=this._CDNUris.fps&&e.fps&&this._CDNUris.fps!==e.fps;(t||r||i)&&this._callAppListener("onCDNInfoChange",{resolution:`W${e.w}_H${e.h}`,fps:`FPS_${e.fps}`}),this._CDNUris=e}))}_getCDNPlayUrl(t){return r(this,void 0,void 0,(function*(){const{w:r,h:n,fps:s}=t,o=this._initOptions.pullInnerCDNProtocol||e.RCInnerCDNPullKind.FLV,a=this._initOptions.pullInnerCDNUseHttps===e.RCInnerCDNPullIsHttps.NOT_HTTPS?e.RCInnerCDNPullIsHttps.NOT_HTTPS:e.RCInnerCDNPullIsHttps.HTTPS;if(!this._CDNUris.url)return i.error(`cdn_uris url is empty, the anchor need to open or push CDN, code: ${e.RCRTCCode.CDN_RESOURCE_IS_EMPTY}`),{code:e.RCRTCCode.CDN_RESOURCE_IS_EMPTY};const c={"App-Key":this._context.getAppkey(),Token:this._joinResData.token,RoomId:this.getRoomId(),UserId:this._context.getCurrentId(),SessionId:this.getSessionId()},d=[],{w:u=0,h:l=1}=this._CDNUris;u/l>1?(r&&d.push(`w=${r}`),n&&d.push(`h=${n}`)):(r&&d.push(`h=${r}`),n&&d.push(`w=${n}`)),s&&d.push(`fps=${s}`),d.push(`kind=${o}`),d.push(`is_https=${a}`);const h=d.join("&");let p=`${this._CDNUris.url}?`;h&&(p+=h);const{code:m,res:_}=yield this._service.getCDNResourceInfo(c,p);return m!==e.RCRTCCode.SUCCESS?(i.error(`getCDNPlayUrl failed: ${m}`),{code:m}):(i.info(`getCDNPlayUrl success: ${null==_?void 0:_.data.pull_url}`),{code:m,CDNPlayUrl:null==_?void 0:_.data.pull_url})}))}getCDNPlayUrl(t,n){return r(this,void 0,void 0,(function*(){if(t&&!rt(t))return i.error("`resolution` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};if(n&&!it(n))return i.error("`fps` is invalid"),{code:e.RCRTCCode.PARAMS_ERROR};const{width:r,height:s}=t?tt(t):{width:null,height:null},o=n?nt(n):null,a={};return r&&(a.w=r),s&&(a.h=s),o&&(a.fps=o),this._getCDNPlayUrl(a)}))}subscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this._subscribeHandle(e,!1)))}))}__unsubscribe(n){var s;return r(this,void 0,void 0,(function*(){if(!t.validate("tracks",n,(()=>t.isArray(n)&&n.length>0&&n.every((e=>e instanceof je))),!0))return i.error(`unsubscribe failed, tracks is invalid -> roomId: ${this._roomId}`),{code:e.RCRTCCode.PARAMS_ERROR};const r=this._subscribedList.map((e=>Object.assign({},e))).filter((e=>!n.includes(e.track)));return null===(s=this._polarisReport)||void 0===s||s.sendR2(Dt.SUBSCRIBE,Nt.END,n.map((e=>e.getTrackId()))),this._updateSubListHandle(r,!1)}))}unsubscribe(e){return r(this,void 0,void 0,(function*(){return c((()=>this.__unsubscribe(e)))}))}__destroy(e){var t;return r(this,void 0,void 0,(function*(){this._destroyed||(this._destroyed=!0,null===(t=this._audioLevelReport)||void 0===t||t.clearAudioLevelReportTimer(),e&&(yield this._context.quitLivingRoomAsAudience(this._roomId)),yield this._service.broadcastExit(this._getReqHeaders()),this._pc.destroy(),this._polarisReport=null,this._context.onrtcdatachange=()=>{})}))}getRemoteTrack(e){return this._remoteTracks[e]}__getPC(){return this._pc}getLocalTrack(e){return{}}__onReconnected(){return r(this,void 0,void 0,(function*(){const{code:e}=yield this._context.joinLivingRoomAsAudience(this._roomId,t.RTCMode.LIVE);e!==t.ErrorCode.SUCCESS&&i.error("join living room error when on reconnected")}))}registerRoomEventListener(e){this._appListener=e}onAudioLevelChange(e,t){var r;null===(r=this._audioLevelReport)||void 0===r||r.clearAudioLevelReportTimer(),this._audioLevelReport=new xt(this),this._audioLevelReport.onAudioLevelChange(e,t||1e3)}registerReportListener(e){var t;null===(t=this._pc)||void 0===t||t.registerReportListener(e)}getRoomId(){return this._roomId}getCrtUserId(){return this._context.getCurrentId()}getSessionId(){return this._sessionId}getRemoteUserIds(){return this._roomAnchorList}getRemoteTracksByUserId(e){const t=[];for(const r in this._remoteTracks){const i=this._remoteTracks[r];i.getUserId()===e&&t.push(i)}return t}getRemoteTracks(){const e=[],t=[];for(const e in this._remoteTracks){if(2===t.length)break;const r=this._remoteTracks[e];r.isMCUTrack()&&t.push(r)}return this._roomAnchorList.forEach((t=>{e.push(...this.getRemoteTracksByUserId(t))})),[...t,...e]}getRemoteRTCTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()||e.push(r)}return e}getRemoteMCUTracks(){const e=[];for(const t in this._remoteTracks){const r=this._remoteTracks[t];r.isMCUTrack()&&e.push(r)}return e}getCDNInfo(){return this._CDNUris.w?{resolution:`W${this._CDNUris.w}_H${this._CDNUris.h}`,fps:`FPS_${this._CDNUris.fps}`,CDNEnable:this._CDNUris.enableInnerCDN}:{CDNEnable:!1}}}const rr=(e,t)=>{const r=[];return r[0]=(null==t?void 0:t.withoutAudio)?void 0:e.getAudioTracks()[0],r[1]=(null==t?void 0:t.withoutVideo)?void 0:e.getVideoTracks()[0],r};class ir{constructor(e,t,r){this._context=e,this._runtime=t,this._options=r,this._crtRoom=null,this._audience=null,this._crtAudienceLivingRoom=null,It.setSdpSemantics(r.sdpSemantics||"plan-b"),this._service=new qt(this._runtime,this._context,this._options.mediaServer,this._options.timeout),this._context.onconnectionstatechange=this._onIMStatusChange.bind(this),this._context.ondisconnect=this._onIMDisconnect.bind(this),this._context.ondestroy=this._onIMUninit.bind(this),this._context.onmessage=this._handleMessage.bind(this)}_handleMessage(e){var r;return e.conversationType===t.ConversationType.RTC_ROOM&&(null===(r=this._crtRoom)||void 0===r||r.__parseInnerMessage(e),!0)}getCurrentId(){return this._context.getCurrentId()}joinRTCRoom(e,t){return c((()=>this._joinRTCRoom(e,t)))}_joinRTCRoom(n,o){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom -> roomId: ${n}; joinType: ${o||t.RTCJoinType.KICK}`);const{code:r,data:a}=yield this._context.joinRTCRoom(n,t.RTCMode.RTC,void 0,o);if(r!==t.ErrorCode.SUCCESS){i.error(`joinRoom failed -> code: ${r}`);return{code:r===s.JOIN_REFUSED?e.RCRTCCode.SIGNAL_JOIN_RTC_ROOM_REFUSED:r}}i.debug(`joinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(a)}`);const c=new Yt(this._context,this._runtime,n,a,this._service,this._options,this._releaseCrtRoomObj.bind(this));return this._crtRoom=c,{room:c,code:e.RCRTCCode.SUCCESS,userIds:c.getRemoteUserIds(),tracks:c.getRemoteTracks()}}))}joinLivingRoom(e,t){return c((()=>this._joinLivingRoom(e,t)))}_joinLivingRoom(n,s){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",s,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(this._context.getConnectionStatus()!==t.ConnectionStatus.CONNECTED)return{code:e.RCRTCCode.SIGNAL_DISCONNECTED};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};i.debug(`joinRoom, roomId: ${n}`);const{code:r,data:o}=yield this._context.joinRTCRoom(n,t.RTCMode.LIVE,s);if(r!==t.ErrorCode.SUCCESS)return i.error(`joinRoom failed -> code: ${r}`),{code:r};i.debug(`JoinRoom success -> userId: ${this._context.getCurrentId()}, roomId: ${n}, data: ${JSON.stringify(o)}`);const a=new Wt(this._context,this._runtime,n,o,this._service,this._options,this._releaseCrtRoomObj.bind(this),s,!1);this._crtRoom=a;const c={room:a,code:e.RCRTCCode.SUCCESS,userIds:a.getRemoteUserIds(),tracks:a.getRemoteTracks()};return a.__getCDNPushMode()===Jt.MANUAL&&Object.assign(c,{CDNEnable:a.__getCDNEnable()}),c}))}getAudienceClient(){return this._audience||(this._audience=new Zt(this._context,this._runtime,this._options)),this._audience}_onIMStatusChange(e){i.debug(`signal server connection state change: ${e}`),e===t.ConnectionStatus.CONNECTED&&this._crtRoom&&this._crtRoom.__onReconnected()}_onIMDisconnect(){i.debug("TODO -> on IM disconnect")}_onIMUninit(){i.debug("TODO -> on IM client ondestroy")}leaveRoom(e){return c((()=>this._leaveRoom(e)))}_leaveRoom(t){return r(this,void 0,void 0,(function*(){return this._crtRoom?(yield this._crtRoom.__destroy(!0),i.debug(`quitRTCRoom -> userId: ${this._context.getCurrentId()} , roomId: ${this._crtRoom.getRoomId()}`),this._crtRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}_releaseCrtRoomObj(){this._crtRoom=null}_getMediaStream(t,n="getUserMedia"){return r(this,void 0,void 0,(function*(){try{const r=yield navigator.mediaDevices[n](t);return{code:e.RCRTCCode.SUCCESS,stream:r}}catch(t){if("Permission denied"===t.message)return{code:e.RCRTCCode.PERMISSION_DENIED};i.error(`get user media failed -> ${t.message}`)}return{code:"getUserMedia"===n?e.RCRTCCode.GET_USER_MEDIA_FAILED:e.RCRTCCode.GET_DISPLAY_MEDIA_FAILED}}))}createMicrophoneAudioTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const{stream:n,code:s}=yield this._getMediaStream({audio:{deviceId:null==i?void 0:i.micphoneId,sampleRate:null==i?void 0:i.sampleRate}});if(s!==e.RCRTCCode.SUCCESS)return{code:s};const o=n.getAudioTracks()[0];return{code:s,track:new we(t,r,o)}}))}createCameraVideoTrack(t="RongCloudRTC",i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};const n=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W640_H480,{width:s,height:o}=tt(n),{stream:a,code:c}=yield this._getMediaStream({video:{deviceId:null==i?void 0:i.cameraId,frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:s,height:o,facingMode:null==i?void 0:i.faceMode}});if(c!==e.RCRTCCode.SUCCESS)return{code:c};const d=a.getVideoTracks()[0];return{code:c,track:new Ue(t,r,d)}}))}createMicrophoneAndCameraTracks(t="RongCloudRTC",i){var n,s,o,a,c,d;return r(this,void 0,void 0,(function*(){const r=[];if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};const u=this._context.getCurrentId();if(!u)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const l=rt(null===(n=null==i?void 0:i.video)||void 0===n?void 0:n.resolution)?i.video.resolution:e.RCResolution.W640_H480,{width:h,height:p}=tt(l),{stream:m,code:_}=yield this._getMediaStream({video:{deviceId:null===(s=null==i?void 0:i.video)||void 0===s?void 0:s.cameraId,frameRate:nt((null===(o=null==i?void 0:i.video)||void 0===o?void 0:o.frameRate)||e.RCFrameRate.FPS_15),width:h,height:p,facingMode:null===(a=null==i?void 0:i.video)||void 0===a?void 0:a.faceMode},audio:{deviceId:null===(c=null==i?void 0:i.audio)||void 0===c?void 0:c.micphoneId,sampleRate:null===(d=null==i?void 0:i.audio)||void 0===d?void 0:d.sampleRate}});return _!==e.RCRTCCode.SUCCESS||m.getTracks().forEach((e=>{"video"===e.kind?r.push(new Ue(t,u,e)):r.unshift(new we(t,u,e))})),{code:_,tracks:r}}))}createScreenVideoTrack(t="screenshare",i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};const r=this._context.getCurrentId();if(!r)return{code:e.RCRTCCode.INVALID_USER_ID};if(!at())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT};const n=/Electron/.test(navigator.userAgent);if(n&&!(null==i?void 0:i.chromeMediaSourceId))return{code:e.RCRTCCode.PARAMS_ERROR};const s=rt(null==i?void 0:i.resolution)?i.resolution:e.RCResolution.W1280_H720,{width:o,height:a}=tt(s),c=n?{mandatory:{chromeMediaSourceId:i.chromeMediaSourceId,chromeMediaSource:"desktop",minWidth:o,maxWidth:o,minHeight:a,maxHeight:a}}:{frameRate:nt((null==i?void 0:i.frameRate)||e.RCFrameRate.FPS_15),width:o,height:a},{stream:d,code:u}=yield this._getMediaStream({video:c,audio:!1},n?"getUserMedia":"getDisplayMedia");if(u!==e.RCRTCCode.SUCCESS)return{code:u};const l=d.getVideoTracks()[0];return{code:u,track:new $e(t,r,l)}}))}createLocalAudioTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"audio"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new De(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalVideoTrack(t,i){return r(this,void 0,void 0,(function*(){if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS};if(!i||"[object MediaStreamTrack]"!==i.toString()||"video"!==i.kind)return{code:e.RCRTCCode.CREATE_CUSTOM_TRACK_FAILED};const r=this._context.getCurrentId();return r?{code:e.RCRTCCode.SUCCESS,track:new Ne(t,r,i)}:{code:e.RCRTCCode.INVALID_USER_ID}}))}createLocalFileTracks(n,s,o){return r(this,void 0,void 0,(function*(){if(!Ge(n))return{code:e.RCRTCCode.INVALID_TAGS,tracks:[]};if(!ot())return{code:e.RCRTCCode.BROWSER_NOT_SUPPORT,tracks:[]};const r=s instanceof File?URL.createObjectURL(s):s;if(!t.isHttpUrl(r)&&!/^blob:/.test(r))return i.warn(`createLocalFileTracks failed: params error -> url: ${r}`),{code:e.RCRTCCode.PARAMS_ERROR,tracks:[]};const a=this._context.getCurrentId();return a?new Promise((t=>{const s=document.createElement("video");(null==o?void 0:o.withoutAudio)&&(s.muted=!0),s.onloadedmetadata=()=>{const c=[];let d;try{const e=s.mozCaptureStream?"mozCaptureStream":"captureStream";d=s[e]()}catch(n){i.error(`create RCLocalFileTrack failed, captureSteam error. -> url: ${r}`),i.error(n),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:c})}const[u,l]=rr(d,o);u&&c.push(new xe(n,a,u,s)),l&&c.push(new Me(n,a,l,s)),0===c.length&&(s.pause(),s.src=""),s.onerror=null,t({code:e.RCRTCCode.SUCCESS,tracks:c})},s.onerror=()=>{i.error(`create RCLocalFileTrack failed -> url: ${r}`),t({code:e.RCRTCCode.CREATE_FILE_TRACK_FAILED,tracks:[]})},s.src=r,s.loop=!0,s.play()})):{code:e.RCRTCCode.INVALID_USER_ID,tracks:[]}}))}createLocalTracks(t,i,n){return r(this,void 0,void 0,(function*(){const r=[];if(!Ge(t))return{code:e.RCRTCCode.INVALID_TAGS,tracks:r};if(!(i instanceof MediaStream))return{code:e.RCRTCCode.PARAMS_ERROR,tracks:r};const s=this._context.getCurrentId();if(!s)return{code:e.RCRTCCode.INVALID_USER_ID,tracks:r};const[o,a]=rr(i,n);return o&&r.push(new De(t,s,o)),a&&r.push(new Ne(t,s,a)),{code:e.RCRTCCode.SUCCESS,tracks:r}}))}joinLivingRoomAsAudience(n,s){return r(this,void 0,void 0,(function*(){if(dt(this._context.getNaviInfo()))return{code:e.RCRTCCode.PACKAGE_ENVIRONMENT_ERROR};if(!t.validate("roomId",n,t.notEmptyString,!0)||!t.validate("livingType",s,(t=>t===e.RCLivingType.AUDIO||t===e.RCLivingType.VIDEO)))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};if(!this._service.getNaviMS().length)return{code:e.RCRTCCode.NOT_OPEN_VIDEO_AUDIO_SERVER};const{code:r,data:o}=yield this._context.joinLivingRoomAsAudience(n,t.RTCMode.LIVE,s);if(r!==t.ErrorCode.SUCCESS)return i.error("audienceJoinLivingRoomError:",r),{code:e.RCRTCCode.SIGNAL_AUDIENCE_JOIN_ROOM_FAILED};i.info(`joinLivingRoomAsAudience success, room data: ${JSON.stringify(o)}`);const a=new tr(this._context,this._runtime,this._options,n,o,s);return this._crtAudienceLivingRoom=a,{room:a,code:e.RCRTCCode.SUCCESS,userIds:a.getRemoteUserIds(),RTCTracks:a.getRemoteRTCTracks(),MCUTracks:a.getRemoteMCUTracks(),CDNUris:a.getCDNInfo()}}))}leaveLivingRoomAsAudience(t){return r(this,void 0,void 0,(function*(){return this._crtAudienceLivingRoom?this._crtAudienceLivingRoom!==t?{code:e.RCRTCCode.PARAMS_ERROR}:(yield this._crtAudienceLivingRoom.__destroy(!0),this._crtAudienceLivingRoom=null,{code:e.RCRTCCode.SUCCESS}):{code:e.RCRTCCode.SUCCESS}}))}upgradeToAnchorRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:s}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.ViewerToAnchor,n._livingType);if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};yield this._crtAudienceLivingRoom.__destroy(!1);const o=new Wt(this._context,this._runtime,n._roomId,s,this._service,this._options,this._releaseCrtRoomObj.bind(this),n._livingType,!0);return this._crtRoom=o,this._crtAudienceLivingRoom=null,{room:o,code:e.RCRTCCode.SUCCESS}}))}downgradeToAudienceRoom(n){return r(this,void 0,void 0,(function*(){if(!t.validate("room._roomId",n._roomId,t.notEmptyString,!0))return{code:e.RCRTCCode.PARAMS_ERROR};if(this._crtAudienceLivingRoom)return{code:e.RCRTCCode.REPERT_JOIN_ROOM};const{code:r,data:s}=yield this._context.rtcIdentityChange(n._roomId,t.RTCIdentityChangeType.AnchorToViewer,n.getLivingType());if(r!==t.ErrorCode.SUCCESS)return i.error("change room identity error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED};i.info(`downgradeToAudienceRoom success, room data: ${JSON.stringify(s)}`);const o=new tr(this._context,this._runtime,this._options,n._roomId,s,n.getLivingType());return this._crtAudienceLivingRoom=o,this._crtRoom.__destroy(!1),this._crtRoom=null,{room:o,code:e.RCRTCCode.SUCCESS,userIds:o.getRemoteUserIds(),RTCTracks:o.getRemoteRTCTracks(),MCUTracks:o.getRemoteMCUTracks(),CDNUris:o.getCDNInfo()}}))}getJoinedRoomInfo(){return r(this,void 0,void 0,(function*(){const{code:r,data:n}=yield this._context.getRTCJoinedUserInfo(this._context.getCurrentId());return r!==t.ErrorCode.SUCCESS?(i.error("getJoinedUserInfo error",r),{code:e.RCRTCCode.SIGNAL_ROOM_CHANGE_IDENTITY_FAILED}):{code:e.RCRTCCode.SUCCESS,data:n}}))}}var nr;e.RCKickReason=void 0,(nr=e.RCKickReason||(e.RCKickReason={}))[nr.SERVER_KICK=1]="SERVER_KICK",nr[nr.OTHER_KICK=2]="OTHER_KICK";const sr={tag:"RCRTC",verify:e=>"browser"!==e.tag?(i.error(`RCRTC Plugin is not support the runtime '${e.tag}'`),!1):Je?(t.VersionManage.add("plugin-rtc","5.2.5"),!!t.VersionManage.validEngine(">=4.5.1")||(i.error(`The current engine version '${t.VersionManage.getInfo().engine}' error, plugin-rtc required engine version at least '>=4.5.1'.`),!1)):(i.error("Please use the https protocol or use `http://localhost` to open the page!"),!1),setup:(e,r,n={})=>(i.setLogLevel(n.logLevel),i.setLogStdout(n.logStdout),i.warn("RCRTC Version: 5.2.5, Commit: f6dea75bffc2ab49636bb0d23f94878d22a3a450"),i.warn(`browserInfo.browser -> ${st.browser}`),i.warn(`browserInfo.supportsUnifiedPlan -> ${st.supportsUnifiedPlan}`),i.warn(`browserInfo.version -> ${st.version}`),t.assert("options.mediaServer",n.mediaServer,(e=>!(!t.isHttpUrl(e)||"https:"===location.protocol&&!/^https/.test(e)))),t.assert("options.timeout",n.timeout,(e=>t.isNumber(e)&&e>=5e3&&e<=3e4)),t.assert("options.pingGap",n.pingGap,(e=>t.isNumber(e)&&e>=3e3&&e<=1e4)),new ir(e,r,n))},or={transResolution:tt,transFrameRate:nt,parseTrackId:ze,ifSupportLocalFileTrack:ot,ifSupportScreenShare:at};Object.defineProperty(e,"RTCJoinType",{enumerable:!0,get:function(){return t.RTCJoinType}}),e.RCAbstractRoom=Ut,e.RCAudienceClient=Zt,e.RCAudienceLivingRoom=tr,e.RCCameraVideoTrack=Ue,e.RCLivingRoom=Wt,e.RCLocalAudioTrack=De,e.RCLocalFileAudioTrack=xe,e.RCLocalFileTrack=Ae,e.RCLocalFileVideoTrack=Me,e.RCLocalTrack=Le,e.RCLocalVideoTrack=Ne,e.RCMCUConfigBuilder=Ft,e.RCMicphoneAudioTrack=we,e.RCRTCClient=ir,e.RCRTCRoom=Yt,e.RCRemoteAudioTrack=Ve,e.RCRemoteTrack=je,e.RCRemoteVideoTrack=Be,e.RCScreenVideoTrack=$e,e.RCTag={DEFAULT:"RongCloudRTC"},e.RCTrack=Oe,e.device=Pe,e.helper=or,e.installer=sr,Object.defineProperty(e,"__esModule",{value:!0})}));