/
home
/
techb158
/
ileadtechnology.com
/
SSM
/
public
/
vendors~js
/
communication
/
meeting
/
/home/techb158/ileadtechnology.com/SSM/public/vendors~js/communication/meeting
mkdir
upload
Name
Size
Mode
Actions
live.js
186729
0644
edit
dl
rm
live.js.map
187
0644
edit
dl
rm
Edit:
/home/techb158/ileadtechnology.com/SSM/public/vendors~js/communication/meeting/live.js
(186729B)
(window.webpackJsonp=window.webpackJsonp||[]).push([[387],{b9ZE:function(e,t,n){"use strict";(function(t){var n=n||window.AdapterJS||{};if(n.options=n.options||{},n.options.getAllCams=!!n.options.getAllCams,n.options.hidePluginInstallPrompt=!!n.options.hidePluginInstallPrompt,n.options.forceSafariPlugin=!!n.options.forceSafariPlugin,n.VERSION="0.15.4",n.onwebrtcready=n.onwebrtcready||function(e){},n._onwebrtcreadies=[],n.webRTCReady=function(e){if("function"!=typeof e)throw new Error("Callback provided is not a function");var t=function(){"function"==typeof window.require&&"function"==typeof n._defineMediaSourcePolyfill&&n._defineMediaSourcePolyfill(),e(null!==n.WebRTCPlugin.plugin)};!0===n.onwebrtcreadyDone?t():n._onwebrtcreadies.push(t)},n.WebRTCPlugin=n.WebRTCPlugin||{},n.WebRTCPlugin.pluginInfo=n.WebRTCPlugin.pluginInfo||{prefix:"Tem",plugName:"TemWebRTCPlugin",pluginId:"plugin0",type:"application/x-temwebrtcplugin",onload:"__TemWebRTCReady0",portalLink:"https://skylink.io/plugin/",downloadLink:null,companyName:"Temasys",downloadLinks:{mac:"https://bit.ly/webrtcpluginpkg",win:"https://bit.ly/webrtcpluginmsi"}},void 0!==n.WebRTCPlugin.pluginInfo.downloadLinks&&null!==n.WebRTCPlugin.pluginInfo.downloadLinks&&(navigator.platform.match(/^Mac/i)?n.WebRTCPlugin.pluginInfo.downloadLink=n.WebRTCPlugin.pluginInfo.downloadLinks.mac:navigator.platform.match(/^Win/i)&&(n.WebRTCPlugin.pluginInfo.downloadLink=n.WebRTCPlugin.pluginInfo.downloadLinks.win)),n.WebRTCPlugin.TAGS={NONE:"none",AUDIO:"audio",VIDEO:"video"},n.WebRTCPlugin.pageId=Math.random().toString(36).slice(2),n.WebRTCPlugin.plugin=null,n.WebRTCPlugin.setLogLevel=null,n.WebRTCPlugin.defineWebRTCInterface=null,n.WebRTCPlugin.isPluginInstalled=null,n.WebRTCPlugin.pluginInjectionInterval=null,n.WebRTCPlugin.injectPlugin=null,n.WebRTCPlugin.PLUGIN_STATES={NONE:0,INITIALIZING:1,INJECTING:2,INJECTED:3,READY:4},n.WebRTCPlugin.pluginState=n.WebRTCPlugin.PLUGIN_STATES.NONE,n.onwebrtcreadyDone=!1,n.WebRTCPlugin.PLUGIN_LOG_LEVELS={NONE:"NONE",ERROR:"ERROR",WARNING:"WARNING",INFO:"INFO",VERBOSE:"VERBOSE",SENSITIVE:"SENSITIVE"},n.WebRTCPlugin.WaitForPluginReady=null,n.WebRTCPlugin.callWhenPluginReady=null,n.documentReady=function(){return"interactive"===document.readyState&&!!document.body||"complete"===document.readyState},window.__TemWebRTCReady0=function(){n.documentReady()?(n.WebRTCPlugin.pluginState=n.WebRTCPlugin.PLUGIN_STATES.READY,n.maybeThroughWebRTCReady()):setTimeout(__TemWebRTCReady0,100)},n.maybeThroughWebRTCReady=function(){n.onwebrtcreadyDone||(n.onwebrtcreadyDone=!0,n._onwebrtcreadies.length?n._onwebrtcreadies.forEach((function(e){"function"==typeof e&&e(null!==n.WebRTCPlugin.plugin)})):"function"==typeof n.onwebrtcready&&n.onwebrtcready(null!==n.WebRTCPlugin.plugin))},n.TEXT={PLUGIN:{REQUIRE_INSTALLATION:"This website requires you to install a WebRTC-enabling plugin to work on this browser.",REQUIRE_RESTART:"Your plugin is being downloaded. Please run the installer, and restart your browser to begin using it.",NOT_SUPPORTED:"Your browser does not support WebRTC.",BUTTON:"Install Now"},REFRESH:{REQUIRE_REFRESH:"Please refresh page",BUTTON:"Refresh Page"}},n._iceConnectionStates={starting:"starting",checking:"checking",connected:"connected",completed:"connected",done:"completed",disconnected:"disconnected",failed:"failed",closed:"closed"},n._iceConnectionFiredStates=[],n.isDefined=null,window.webrtcDetectedType=null,window.MediaStream="function"==typeof MediaStream?MediaStream:null,window.RTCPeerConnection="function"==typeof RTCPeerConnection?RTCPeerConnection:null,window.RTCSessionDescription="function"==typeof RTCSessionDescription?RTCSessionDescription:null,window.RTCIceCandidate="function"==typeof RTCIceCandidate?RTCIceCandidate:null,window.getUserMedia="function"==typeof getUserMedia?getUserMedia:null,window.attachMediaStream=null,window.reattachMediaStream=null,window.webrtcDetectedBrowser=null,window.webrtcDetectedVersion=null,window.webrtcMinimumVersion=null,window.webrtcDetectedDCSupport=null,n.parseWebrtcDetectedBrowser=function(){var e=null;if(window.opr&&opr.addons||window.opera||navigator.userAgent.indexOf(" OPR/")>=0)e=navigator.userAgent.match(/OPR\/(\d+)/i)||[],window.webrtcDetectedBrowser="opera",window.webrtcDetectedVersion=parseInt(e[1]||"0",10),window.webrtcMinimumVersion=26,window.webrtcDetectedType="webkit",window.webrtcDetectedDCSupport="SCTP";else if(navigator.userAgent.match(/Bowser\/[0-9.]*/g)){e=navigator.userAgent.match(/Bowser\/[0-9.]*/g)||[];var t=parseInt((navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./i)||[])[2]||"0",10);window.webrtcDetectedBrowser="bowser",window.webrtcDetectedVersion=parseFloat((e[0]||"0/0").split("/")[1],10),window.webrtcMinimumVersion=0,window.webrtcDetectedType="webkit",window.webrtcDetectedDCSupport=t>30?"SCTP":"RTP"}else if(navigator.userAgent.indexOf("OPiOS")>0)e=navigator.userAgent.match(/OPiOS\/([0-9]+)\./),window.webrtcDetectedBrowser="opera",window.webrtcDetectedVersion=parseInt(e[1]||"0",10),window.webrtcMinimumVersion=0,window.webrtcDetectedType=null,window.webrtcDetectedDCSupport=null;else if(navigator.userAgent.indexOf("CriOS")>0)e=navigator.userAgent.match(/CriOS\/([0-9]+)\./)||[],window.webrtcDetectedVersion=parseInt(e[1]||"0",10),window.webrtcMinimumVersion=0,window.webrtcDetectedType=null,window.webrtcDetectedBrowser="chrome",window.webrtcDetectedDCSupport=null;else if(navigator.userAgent.indexOf("FxiOS")>0)e=navigator.userAgent.match(/FxiOS\/([0-9]+)\./)||[],window.webrtcDetectedBrowser="firefox",window.webrtcDetectedVersion=parseInt(e[1]||"0",10),window.webrtcMinimumVersion=0,window.webrtcDetectedType=null,window.webrtcDetectedDCSupport=null;else if(document.documentMode)e=/\brv[ :]+(\d+)/g.exec(navigator.userAgent)||[],window.webrtcDetectedBrowser="IE",window.webrtcDetectedVersion=parseInt(e[1],10),window.webrtcMinimumVersion=9,window.webrtcDetectedType="plugin",window.webrtcDetectedDCSupport="SCTP",webrtcDetectedVersion||(e=/\bMSIE[ :]+(\d+)/g.exec(navigator.userAgent)||[],window.webrtcDetectedVersion=parseInt(e[1]||"0",10));else if(window.StyleMedia||navigator.userAgent.match(/Edge\/(\d+).(\d+)$/))e=navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)||[],window.webrtcDetectedBrowser="edge",window.webrtcDetectedVersion=parseFloat((e[0]||"0/0").split("/")[1],10),window.webrtcMinimumVersion=13.10547,window.webrtcDetectedType="ms",window.webrtcDetectedDCSupport=null;else if("undefined"!=typeof InstallTrigger||navigator.userAgent.indexOf("irefox")>0)e=navigator.userAgent.match(/Firefox\/([0-9]+)\./)||[],window.webrtcDetectedBrowser="firefox",window.webrtcDetectedVersion=parseInt(e[1]||"0",10),window.webrtcMinimumVersion=33,window.webrtcDetectedType="moz",window.webrtcDetectedDCSupport="SCTP";else if(window.chrome&&window.chrome.webstore||navigator.userAgent.indexOf("Chrom")>0)e=navigator.userAgent.match(/Chrom(e|ium)\/([0-9]+)\./i)||[],window.webrtcDetectedBrowser="chrome",window.webrtcDetectedVersion=parseInt(e[2]||"0",10),window.webrtcMinimumVersion=38,window.webrtcDetectedType="webkit",window.webrtcDetectedDCSupport=window.webrtcDetectedVersion>30?"SCTP":"RTP";else if(/constructor/i.test(window.HTMLElement)||"[object SafariRemoteNotification]"===(!window.safari||safari.pushNotification).toString()||navigator.userAgent.match(/AppleWebKit\/(\d+)\./)||navigator.userAgent.match(/Version\/(\d+).(\d+)/)){e=navigator.userAgent.match(/version\/(\d+)\.(\d+)/i)||[];var r=navigator.userAgent.match(/AppleWebKit\/(\d+)/i)||[],i=navigator.userAgent.match(/(iPhone|iPad)/gi),o=r.length>=1&&r[1]>=604;if(window.webrtcDetectedBrowser="safari",window.webrtcDetectedVersion=parseInt(e[1]||"0",10),window.webrtcMinimumVersion=7,i)window.webrtcDetectedType=o?"AppleWebKit":null;else{var a=window.webrtcDetectedVersion,s=parseInt(e[2]||"0",10),c=11==a&&s<2;window.webrtcDetectedType=!o||n.options.forceSafariPlugin&&c?"plugin":"AppleWebKit"}window.webrtcDetectedDCSupport="SCTP"}n.webrtcDetectedBrowser=window.webrtcDetectedBrowser,n.webrtcDetectedVersion=window.webrtcDetectedVersion,n.webrtcMinimumVersion=window.webrtcMinimumVersion,n.webrtcDetectedType=window.webrtcDetectedType,n.webrtcDetectedDCSupport=window.webrtcDetectedDCSupport},n.addEvent=function(e,t,n){e.addEventListener?e.addEventListener(t,n,!1):e.attachEvent?e.attachEvent("on"+t,n):e[t]=n},n.renderNotificationBar=function(e,t,r){if(n.documentReady()){var i=window,o=document.createElement("iframe");o.name="adapterjs-alert",o.style.position="fixed",o.style.top="-41px",o.style.left=0,o.style.right=0,o.style.width="100%",o.style.height="40px",o.style.backgroundColor="#ffffe1",o.style.border="none",o.style.borderBottom="1px solid #888888",o.style.zIndex="9999999","string"==typeof o.style.webkitTransition?o.style.webkitTransition="all .5s ease-out":"string"==typeof o.style.transition&&(o.style.transition="all .5s ease-out"),document.body.appendChild(o);var a=o.contentWindow?o.contentWindow:o.contentDocument.document?o.contentDocument.document:o.contentDocument;a.document.open(),a.document.write('<span style="display: inline-block; font-family: Helvetica, Arial,sans-serif; font-size: .9rem; padding: 4px; vertical-align: middle; cursor: default;">'+e+"</span>"),t&&"function"==typeof r?(a.document.write('<button id="okay">'+t+'</button><button id="cancel">Cancel</button>'),a.document.close(),n.addEvent(a.document.getElementById("okay"),"click",(function(e){e.preventDefault();try{e.cancelBubble=!0}catch(e){}r(e)})),n.addEvent(a.document.getElementById("cancel"),"click",(function(e){i.document.body.removeChild(o)}))):a.document.close(),setTimeout((function(){"string"==typeof o.style.webkitTransform?o.style.webkitTransform="translateY(40px)":"string"==typeof o.style.transform?o.style.transform="translateY(40px)":o.style.top="0px"}),300)}},window.requestUserMedia="function"==typeof requestUserMedia?requestUserMedia:null,n.parseWebrtcDetectedBrowser(),["webkit","moz","ms","AppleWebKit"].indexOf(n.webrtcDetectedType)>-1){navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)&&window.RTCPeerConnection&&(window.msRTCPeerConnection=window.RTCPeerConnection),e.exports=function e(t,n,r){function i(a,s){if(!n[a]){if(!t[a]){if(o)return o(a,!0);var c=new Error("Cannot find module '"+a+"'");throw c.code="MODULE_NOT_FOUND",c}var d=n[a]={exports:{}};t[a][0].call(d.exports,(function(e){return i(t[a][1][e]||e)}),d,d.exports,e,t,n,r)}return n[a].exports}for(var o=!1,a=0;a<r.length;a++)i(r[a]);return i}({1:[function(e,t,n){function r(e,t,n,r,i){var o=c.writeRtpDescription(e.kind,t);if(o+=c.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=c.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":i||"active"),o+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var a=e.rtpSender._initialTrackId||e.rtpSender.track.id;e.rtpSender._initialTrackId=a;var s="msid:"+(r?r.id:"-")+" "+a+"\r\n";o+="a="+s,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+s,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+s,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+c.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+c.localCName+"\r\n"),o}function i(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]},r=function(e,t){e=parseInt(e,10);for(var n=0;n<t.length;n++)if(t[n].payloadType===e||t[n].preferredPayloadType===e)return t[n]},i=function(e,t,n,i){var o=r(e.parameters.apt,n),a=r(t.parameters.apt,i);return o&&a&&o.name.toLowerCase()===a.name.toLowerCase()};return e.codecs.forEach((function(r){for(var o=0;o<t.codecs.length;o++){var a=t.codecs[o];if(r.name.toLowerCase()===a.name.toLowerCase()&&r.clockRate===a.clockRate){if("rtx"===r.name.toLowerCase()&&r.parameters&&a.parameters.apt&&!i(r,a,e.codecs,t.codecs))continue;(a=JSON.parse(JSON.stringify(a))).numChannels=Math.min(r.numChannels,a.numChannels),n.codecs.push(a),a.rtcpFeedback=a.rtcpFeedback.filter((function(e){for(var t=0;t<r.rtcpFeedback.length;t++)if(r.rtcpFeedback[t].type===e.type&&r.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var r=0;r<t.headerExtensions.length;r++){var i=t.headerExtensions[r];if(e.uri===i.uri){n.headerExtensions.push(i);break}}})),n}function o(e,t,n){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(n)}function a(e,t){var n=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 n||e.addRemoteCandidate(t),!n}function s(e,t){var n=new Error(t);return n.name=e,n.code={NotSupportedError:9,InvalidStateError:11,InvalidAccessError:15,TypeError:void 0,OperationError:void 0}[e],n}var c=e("sdp");t.exports=function(e,t){function n(t,n){n.addTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function d(t,n,r,i){var o=new Event("track");o.track=n,o.receiver=r,o.transceiver={receiver:r},o.streams=i,e.setTimeout((function(){t._dispatchEvent("track",o)}))}var u=function(n){var r=this,i=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){r[e]=i[e].bind(i)})),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",n=JSON.parse(JSON.stringify(n||{})),this.usingBundle="max-bundle"===n.bundlePolicy,"negotiate"===n.rtcpMuxPolicy)throw s("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(n.rtcpMuxPolicy||(n.rtcpMuxPolicy="require"),n.iceTransportPolicy){case"all":case"relay":break;default:n.iceTransportPolicy="all"}switch(n.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:n.bundlePolicy="balanced"}if(n.iceServers=function(e,t){var n=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var r=e.urls||e.url;e.url&&e.urls;var i="string"==typeof r;return i&&(r=[r]),r=r.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||n?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(n=!0,!0)})),delete e.url,e.urls=i?r[0]:r,!!r.length}}))}(n.iceServers||[],t),this._iceGatherers=[],n.iceCandidatePoolSize)for(var o=n.iceCandidatePoolSize;o>0;o--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:n.iceServers,gatherPolicy:n.iceTransportPolicy}));else n.iceCandidatePoolSize=0;this._config=n,this.transceivers=[],this._sdpSessionId=c.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};Object.defineProperty(u.prototype,"localDescription",{configurable:!0,get:function(){return this._localDescription}}),Object.defineProperty(u.prototype,"remoteDescription",{configurable:!0,get:function(){return this._remoteDescription}}),u.prototype.onicecandidate=null,u.prototype.onaddstream=null,u.prototype.ontrack=null,u.prototype.onremovestream=null,u.prototype.onsignalingstatechange=null,u.prototype.oniceconnectionstatechange=null,u.prototype.onconnectionstatechange=null,u.prototype.onicegatheringstatechange=null,u.prototype.onnegotiationneeded=null,u.prototype.ondatachannel=null,u.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},u.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},u.prototype.getConfiguration=function(){return this._config},u.prototype.getLocalStreams=function(){return this.localStreams},u.prototype.getRemoteStreams=function(){return this.remoteStreams},u.prototype._createTransceiver=function(e,t){var n=this.transceivers.length>0,r={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&&n)r.iceTransport=this.transceivers[0].iceTransport,r.dtlsTransport=this.transceivers[0].dtlsTransport;else{var i=this._createIceAndDtlsTransports();r.iceTransport=i.iceTransport,r.dtlsTransport=i.dtlsTransport}return t||this.transceivers.push(r),r},u.prototype.addTrack=function(t,n){if(this._isClosed)throw s("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");if(this.transceivers.find((function(e){return e.track===t})))throw s("InvalidAccessError","Track already exists.");for(var r,i=0;i<this.transceivers.length;i++)this.transceivers[i].track||this.transceivers[i].kind!==t.kind||(r=this.transceivers[i]);return r||(r=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(n)&&this.localStreams.push(n),r.track=t,r.stream=n,r.rtpSender=new e.RTCRtpSender(t,r.dtlsTransport),r.rtpSender},u.prototype.addStream=function(e){var n=this;if(t>=15025)e.getTracks().forEach((function(t){n.addTrack(t,e)}));else{var r=e.clone();e.getTracks().forEach((function(e,t){var n=r.getTracks()[t];e.addEventListener("enabled",(function(e){n.enabled=e.enabled}))})),r.getTracks().forEach((function(e){n.addTrack(e,r)}))}},u.prototype.removeTrack=function(t){if(this._isClosed)throw s("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 n=this.transceivers.find((function(e){return e.rtpSender===t}));if(!n)throw s("InvalidAccessError","Sender was not created by this connection.");var r=n.stream;n.rtpSender.stop(),n.rtpSender=null,n.track=null,n.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(r)&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},u.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var n=t.getSenders().find((function(t){return t.track===e}));n&&t.removeTrack(n)}))},u.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},u.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},u.prototype._createIceGatherer=function(t,n){var r=this;if(n&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var n=!e.candidate||0===Object.keys(e.candidate).length;i.state=n?"completed":"gathering",null!==r.transceivers[t].bufferedCandidateEvents&&r.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),i},u.prototype._gather=function(t,n){var r=this,i=this.transceivers[n].iceGatherer;if(!i.onlocalcandidate){var o=this.transceivers[n].bufferedCandidateEvents;this.transceivers[n].bufferedCandidateEvents=null,i.removeEventListener("localcandidate",this.transceivers[n].bufferCandidates),i.onlocalcandidate=function(e){if(!(r.usingBundle&&n>0)){var o=new Event("icecandidate");o.candidate={sdpMid:t,sdpMLineIndex:n};var a=e.candidate,s=!a||0===Object.keys(a).length;if(s)"new"!==i.state&&"gathering"!==i.state||(i.state="completed");else{"new"===i.state&&(i.state="gathering"),a.component=1,a.ufrag=i.getLocalParameters().usernameFragment;var d=c.writeCandidate(a);o.candidate=Object.assign(o.candidate,c.parseCandidate(d)),o.candidate.candidate=d,o.candidate.toJSON=function(){return{candidate:o.candidate.candidate,sdpMid:o.candidate.sdpMid,sdpMLineIndex:o.candidate.sdpMLineIndex,usernameFragment:o.candidate.usernameFragment}}}var u=c.getMediaSections(r._localDescription.sdp);u[o.candidate.sdpMLineIndex]+=s?"a=end-of-candidates\r\n":"a="+o.candidate.candidate+"\r\n",r._localDescription.sdp=c.getDescription(r._localDescription.sdp)+u.join("");var p=r.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==r.iceGatheringState&&(r.iceGatheringState="gathering",r._emitGatheringStateChange()),s||r._dispatchEvent("icecandidate",o),p&&(r._dispatchEvent("icecandidate",new Event("icecandidate")),r.iceGatheringState="complete",r._emitGatheringStateChange())}},e.setTimeout((function(){o.forEach((function(e){i.onlocalcandidate(e)}))}),0)}},u.prototype._createIceAndDtlsTransports=function(){var t=this,n=new e.RTCIceTransport(null);n.onicestatechange=function(){t._updateIceConnectionState(),t._updateConnectionState()};var r=new e.RTCDtlsTransport(n);return r.ondtlsstatechange=function(){t._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:n,dtlsTransport:r}},u.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var n=this.transceivers[e].iceTransport;n&&(delete n.onicestatechange,delete this.transceivers[e].iceTransport);var r=this.transceivers[e].dtlsTransport;r&&(delete r.ondtlsstatechange,delete r.onerror,delete this.transceivers[e].dtlsTransport)},u.prototype._transceive=function(e,n,r){var o=i(e.localCapabilities,e.remoteCapabilities);n&&e.rtpSender&&(o.encodings=e.sendEncodingParameters,o.rtcp={cname:c.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(o.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(o)),r&&e.rtpReceiver&&o.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length?o.encodings=e.recvEncodingParameters:o.encodings=[{}],o.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(o.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(o.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(o))},u.prototype.setLocalDescription=function(e){var t,n,r=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject(s("TypeError",'Unsupported type "'+e.type+'"'));if(!o("setLocalDescription",e.type,r.signalingState)||r._isClosed)return Promise.reject(s("InvalidStateError","Can not set local "+e.type+" in state "+r.signalingState));if("offer"===e.type)t=c.splitSections(e.sdp),n=t.shift(),t.forEach((function(e,t){var n=c.parseRtpParameters(e);r.transceivers[t].localCapabilities=n})),r.transceivers.forEach((function(e,t){r._gather(e.mid,t)}));else if("answer"===e.type){t=c.splitSections(r._remoteDescription.sdp),n=t.shift();var a=c.matchPrefix(n,"a=ice-lite").length>0;t.forEach((function(e,t){var o=r.transceivers[t],s=o.iceGatherer,d=o.iceTransport,u=o.dtlsTransport,p=o.localCapabilities,l=o.remoteCapabilities;if(!(c.isRejected(e)&&0===c.matchPrefix(e,"a=bundle-only").length||o.rejected)){var f=c.getIceParameters(e,n),m=c.getDtlsParameters(e,n);a&&(m.role="server"),r.usingBundle&&0!==t||(r._gather(o.mid,t),"new"===d.state&&d.start(s,f,a?"controlling":"controlled"),"new"===u.state&&u.start(m));var v=i(p,l);r._transceive(o,v.codecs.length>0,!1)}}))}return r._localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?r._updateSignalingState("have-local-offer"):r._updateSignalingState("stable"),Promise.resolve()},u.prototype.setRemoteDescription=function(r){var i=this;if(-1===["offer","answer"].indexOf(r.type))return Promise.reject(s("TypeError",'Unsupported type "'+r.type+'"'));if(!o("setRemoteDescription",r.type,i.signalingState)||i._isClosed)return Promise.reject(s("InvalidStateError","Can not set remote "+r.type+" in state "+i.signalingState));var u={};i.remoteStreams.forEach((function(e){u[e.id]=e}));var p=[],l=c.splitSections(r.sdp),f=l.shift(),m=c.matchPrefix(f,"a=ice-lite").length>0,v=c.matchPrefix(f,"a=group:BUNDLE ").length>0;i.usingBundle=v;var g=c.matchPrefix(f,"a=ice-options:")[0];return i.canTrickleIceCandidates=!!g&&g.substr(14).split(" ").indexOf("trickle")>=0,l.forEach((function(o,s){var d=c.splitLines(o),l=c.getKind(o),g=c.isRejected(o)&&0===c.matchPrefix(o,"a=bundle-only").length,h=d[0].substr(2).split(" ")[2],C=c.getDirection(o,f),w=c.parseMsid(o),S=c.getMid(o)||c.generateIdentifier();if(g||"application"===l&&("DTLS/SCTP"===h||"UDP/DTLS/SCTP"===h))i.transceivers[s]={mid:S,kind:l,protocol:h,rejected:!0};else{!g&&i.transceivers[s]&&i.transceivers[s].rejected&&(i.transceivers[s]=i._createTransceiver(l,!0));var y,T,b,R,P,E,k,D,M,O,x,I=c.parseRtpParameters(o);g||(O=c.getIceParameters(o,f),(x=c.getDtlsParameters(o,f)).role="client"),k=c.parseRtpEncodingParameters(o);var L=c.parseRtcpParameters(o),A=c.matchPrefix(o,"a=end-of-candidates",f).length>0,N=c.matchPrefix(o,"a=candidate:").map((function(e){return c.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===r.type||"answer"===r.type)&&!g&&v&&s>0&&i.transceivers[s]&&(i._disposeIceAndDtlsTransports(s),i.transceivers[s].iceGatherer=i.transceivers[0].iceGatherer,i.transceivers[s].iceTransport=i.transceivers[0].iceTransport,i.transceivers[s].dtlsTransport=i.transceivers[0].dtlsTransport,i.transceivers[s].rtpSender&&i.transceivers[s].rtpSender.setTransport(i.transceivers[0].dtlsTransport),i.transceivers[s].rtpReceiver&&i.transceivers[s].rtpReceiver.setTransport(i.transceivers[0].dtlsTransport)),"offer"!==r.type||g)"answer"!==r.type||g||(T=(y=i.transceivers[s]).iceGatherer,b=y.iceTransport,R=y.dtlsTransport,P=y.rtpReceiver,E=y.sendEncodingParameters,D=y.localCapabilities,i.transceivers[s].recvEncodingParameters=k,i.transceivers[s].remoteCapabilities=I,i.transceivers[s].rtcpParameters=L,N.length&&"new"===b.state&&(!m&&!A||v&&0!==s?N.forEach((function(e){a(y.iceTransport,e)})):b.setRemoteCandidates(N)),v&&0!==s||("new"===b.state&&b.start(T,O,"controlling"),"new"===R.state&&R.start(x)),i._transceive(y,"sendrecv"===C||"recvonly"===C,"sendrecv"===C||"sendonly"===C),!P||"sendrecv"!==C&&"sendonly"!==C?delete y.rtpReceiver:(M=P.track,w?(u[w.stream]||(u[w.stream]=new e.MediaStream),n(M,u[w.stream]),p.push([M,P,u[w.stream]])):(u.default||(u.default=new e.MediaStream),n(M,u.default),p.push([M,P,u.default]))));else{(y=i.transceivers[s]||i._createTransceiver(l)).mid=S,y.iceGatherer||(y.iceGatherer=i._createIceGatherer(s,v)),N.length&&"new"===y.iceTransport.state&&(!A||v&&0!==s?N.forEach((function(e){a(y.iceTransport,e)})):y.iceTransport.setRemoteCandidates(N)),D=e.RTCRtpReceiver.getCapabilities(l),t<15019&&(D.codecs=D.codecs.filter((function(e){return"rtx"!==e.name}))),E=y.sendEncodingParameters||[{ssrc:1001*(2*s+2)}];var _,U=!1;"sendrecv"===C||"sendonly"===C?(U=!y.rtpReceiver,P=y.rtpReceiver||new e.RTCRtpReceiver(y.dtlsTransport,l),U&&(M=P.track,w&&"-"===w.stream||(w?(u[w.stream]||(u[w.stream]=new e.MediaStream,Object.defineProperty(u[w.stream],"id",{get:function(){return w.stream}})),Object.defineProperty(M,"id",{get:function(){return w.track}}),_=u[w.stream]):(u.default||(u.default=new e.MediaStream),_=u.default)),_&&(n(M,_),y.associatedRemoteMediaStreams.push(_)),p.push([M,P,_]))):y.rtpReceiver&&y.rtpReceiver.track&&(y.associatedRemoteMediaStreams.forEach((function(t){var n=t.getTracks().find((function(e){return e.id===y.rtpReceiver.track.id}));n&&function(t,n){n.removeTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(n,t)})),y.associatedRemoteMediaStreams=[]),y.localCapabilities=D,y.remoteCapabilities=I,y.rtpReceiver=P,y.rtcpParameters=L,y.sendEncodingParameters=E,y.recvEncodingParameters=k,i._transceive(i.transceivers[s],!1,U)}}})),void 0===i._dtlsRole&&(i._dtlsRole="offer"===r.type?"active":"passive"),i._remoteDescription={type:r.type,sdp:r.sdp},"offer"===r.type?i._updateSignalingState("have-remote-offer"):i._updateSignalingState("stable"),Object.keys(u).forEach((function(t){var n=u[t];if(n.getTracks().length){if(-1===i.remoteStreams.indexOf(n)){i.remoteStreams.push(n);var r=new Event("addstream");r.stream=n,e.setTimeout((function(){i._dispatchEvent("addstream",r)}))}p.forEach((function(e){var t=e[0],r=e[1];n.id===e[2].id&&d(i,t,r,[n])}))}})),p.forEach((function(e){e[2]||d(i,e[0],e[1],[])})),e.setTimeout((function(){i&&i.transceivers&&i.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&e.iceTransport.addRemoteCandidate({})}))}),4e3),Promise.resolve()},u.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")},u.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},u.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))},u.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){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 n=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",n)}},u.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){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 n=new Event("connectionstatechange");this._dispatchEvent("connectionstatechange",n)}},u.prototype.createOffer=function(){var n=this;if(n._isClosed)return Promise.reject(s("InvalidStateError","Can not call createOffer after close"));var i=n.transceivers.filter((function(e){return"audio"===e.kind})).length,o=n.transceivers.filter((function(e){return"video"===e.kind})).length,a=arguments[0];if(a){if(a.mandatory||a.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==a.offerToReceiveAudio&&(i=!0===a.offerToReceiveAudio?1:!1===a.offerToReceiveAudio?0:a.offerToReceiveAudio),void 0!==a.offerToReceiveVideo&&(o=!0===a.offerToReceiveVideo?1:!1===a.offerToReceiveVideo?0:a.offerToReceiveVideo)}for(n.transceivers.forEach((function(e){"audio"===e.kind?--i<0&&(e.wantReceive=!1):"video"===e.kind&&--o<0&&(e.wantReceive=!1)}));i>0||o>0;)i>0&&(n._createTransceiver("audio"),i--),o>0&&(n._createTransceiver("video"),o--);var d=c.writeSessionBoilerplate(n._sdpSessionId,n._sdpSessionVersion++);n.transceivers.forEach((function(r,i){var o=r.track,a=r.kind,s=r.mid||c.generateIdentifier();r.mid=s,r.iceGatherer||(r.iceGatherer=n._createIceGatherer(i,n.usingBundle));var d=e.RTCRtpSender.getCapabilities(a);t<15019&&(d.codecs=d.codecs.filter((function(e){return"rtx"!==e.name}))),d.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1"),r.remoteCapabilities&&r.remoteCapabilities.codecs&&r.remoteCapabilities.codecs.forEach((function(t){e.name.toLowerCase()===t.name.toLowerCase()&&e.clockRate===t.clockRate&&(e.preferredPayloadType=t.payloadType)}))})),d.headerExtensions.forEach((function(e){(r.remoteCapabilities&&r.remoteCapabilities.headerExtensions||[]).forEach((function(t){e.uri===t.uri&&(e.id=t.id)}))}));var u=r.sendEncodingParameters||[{ssrc:1001*(2*i+1)}];o&&t>=15019&&"video"===a&&!u[0].rtx&&(u[0].rtx={ssrc:u[0].ssrc+1}),r.wantReceive&&(r.rtpReceiver=new e.RTCRtpReceiver(r.dtlsTransport,a)),r.localCapabilities=d,r.sendEncodingParameters=u})),"max-compat"!==n._config.bundlePolicy&&(d+="a=group:BUNDLE "+n.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),d+="a=ice-options:trickle\r\n",n.transceivers.forEach((function(e,t){d+=r(e,e.localCapabilities,"offer",e.stream,n._dtlsRole),d+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===n.iceGatheringState||0!==t&&n.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,d+="a="+c.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(d+="a=end-of-candidates\r\n"))}));var u=new e.RTCSessionDescription({type:"offer",sdp:d});return Promise.resolve(u)},u.prototype.createAnswer=function(){var n=this;if(n._isClosed)return Promise.reject(s("InvalidStateError","Can not call createAnswer after close"));if("have-remote-offer"!==n.signalingState&&"have-local-pranswer"!==n.signalingState)return Promise.reject(s("InvalidStateError","Can not call createAnswer in signalingState "+n.signalingState));var o=c.writeSessionBoilerplate(n._sdpSessionId,n._sdpSessionVersion++);n.usingBundle&&(o+="a=group:BUNDLE "+n.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n");var a=c.getMediaSections(n._remoteDescription.sdp).length;n.transceivers.forEach((function(e,s){if(!(s+1>a)){if(e.rejected)return"application"===e.kind?"DTLS/SCTP"===e.protocol?o+="m=application 0 DTLS/SCTP 5000\r\n":o+="m=application 0 "+e.protocol+" webrtc-datachannel\r\n":"audio"===e.kind?o+="m=audio 0 UDP/TLS/RTP/SAVPF 0\r\na=rtpmap:0 PCMU/8000\r\n":"video"===e.kind&&(o+="m=video 0 UDP/TLS/RTP/SAVPF 120\r\na=rtpmap:120 VP8/90000\r\n"),void(o+="c=IN IP4 0.0.0.0\r\na=inactive\r\na=mid:"+e.mid+"\r\n");var c;e.stream&&("audio"===e.kind?c=e.stream.getAudioTracks()[0]:"video"===e.kind&&(c=e.stream.getVideoTracks()[0]),c&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1}));var d=i(e.localCapabilities,e.remoteCapabilities);!d.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,o+=r(e,d,"answer",e.stream,n._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(o+="a=rtcp-rsize\r\n")}}));var d=new e.RTCSessionDescription({type:"answer",sdp:o});return Promise.resolve(d)},u.prototype.addIceCandidate=function(e){var t,n=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(r,i){if(!n._remoteDescription)return i(s("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var o=e.sdpMLineIndex;if(e.sdpMid)for(var d=0;d<n.transceivers.length;d++)if(n.transceivers[d].mid===e.sdpMid){o=d;break}var u=n.transceivers[o];if(!u)return i(s("OperationError","Can not add ICE candidate"));if(u.rejected)return r();var p=Object.keys(e.candidate).length>0?c.parseCandidate(e.candidate):{};if("tcp"===p.protocol&&(0===p.port||9===p.port))return r();if(p.component&&1!==p.component)return r();if((0===o||o>0&&u.iceTransport!==n.transceivers[0].iceTransport)&&!a(u.iceTransport,p))return i(s("OperationError","Can not add ICE candidate"));var l=e.candidate.trim();0===l.indexOf("a=")&&(l=l.substr(2)),(t=c.getMediaSections(n._remoteDescription.sdp))[o]+="a="+(p.type?l:"end-of-candidates")+"\r\n",n._remoteDescription.sdp=c.getDescription(n._remoteDescription.sdp)+t.join("")}else for(var f=0;f<n.transceivers.length&&(n.transceivers[f].rejected||(n.transceivers[f].iceTransport.addRemoteCandidate({}),(t=c.getMediaSections(n._remoteDescription.sdp))[f]+="a=end-of-candidates\r\n",n._remoteDescription.sdp=c.getDescription(n._remoteDescription.sdp)+t.join(""),!n.usingBundle));f++);r()}))},u.prototype.getStats=function(t){if(t&&t instanceof e.MediaStreamTrack){var n=null;if(this.transceivers.forEach((function(e){e.rtpSender&&e.rtpSender.track===t?n=e.rtpSender:e.rtpReceiver&&e.rtpReceiver.track===t&&(n=e.rtpReceiver)})),!n)throw s("InvalidAccessError","Invalid selector.");return n.getStats()}var r=[];return this.transceivers.forEach((function(e){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(t){e[t]&&r.push(e[t].getStats())}))})),Promise.all(r).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 n=e[t];if(n&&n.prototype&&n.prototype.getStats){var r=n.prototype.getStats;n.prototype.getStats=function(){return r.apply(this).then((function(e){var t=new Map;return Object.keys(e).forEach((function(n){var r;e[n].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(r=e[n]).type]||r.type,t.set(n,e[n])})),t}))}}}));var p=["createOffer","createAnswer"];return p.forEach((function(e){var t=u.prototype[e];u.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)}})),(p=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=u.prototype[e];u.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=u.prototype[e];u.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)}})),u}},{sdp:2}],2:[function(e,t,n){var r={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},r.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},r.getDescription=function(e){var t=r.splitSections(e);return t&&t[0]},r.getMediaSections=function(e){var t=r.splitSections(e);return t.shift(),t},r.matchPrefix=function(e,t){return r.splitLines(e).filter((function(e){return 0===e.indexOf(t)}))},r.parseCandidate=function(e){for(var t,n={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],port:parseInt(t[5],10),type:t[7]},r=8;r<t.length;r+=2)switch(t[r]){case"raddr":n.relatedAddress=t[r+1];break;case"rport":n.relatedPort=parseInt(t[r+1],10);break;case"tcptype":n.tcpType=t[r+1];break;case"ufrag":n.ufrag=t[r+1],n.usernameFragment=t[r+1];break;default:n[t[r]]=t[r+1]}return n},r.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.ip),t.push(e.port);var n=e.type;return t.push("typ"),t.push(n),"host"!==n&&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(" ")},r.parseIceOptions=function(e){return e.substr(14).split(" ")},r.parseRtpMap=function(e){var t=e.substr(9).split(" "),n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=3===t.length?parseInt(t[2],10):1,n.numChannels=n.channels,n},r.writeRtpMap=function(e){var t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);var n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==n?"/"+n:"")+"\r\n"},r.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]}},r.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},r.parseFmtp=function(e){for(var t,n={},r=e.substr(e.indexOf(" ")+1).split(";"),i=0;i<r.length;i++)n[(t=r[i].trim().split("="))[0].trim()]=t[1];return n},r.writeFmtp=function(e){var t="",n=e.payloadType;if(void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var r=[];Object.keys(e.parameters).forEach((function(t){e.parameters[t]?r.push(t+"="+e.parameters[t]):r.push(t)})),t+="a=fmtp:"+n+" "+r.join(";")+"\r\n"}return t},r.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},r.writeRtcpFb=function(e){var t="",n=e.payloadType;return void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((function(e){t+="a=rtcp-fb:"+n+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},r.parseSsrcMedia=function(e){var t=e.indexOf(" "),n={ssrc:parseInt(e.substr(7,t-7),10)},r=e.indexOf(":",t);return r>-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.parseSsrcGroup=function(e){var t=e.substr(13).split(" ");return{semantics:t.shift(),ssrcs:t.map((function(e){return parseInt(e,10)}))}},r.getMid=function(e){var t=r.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)},r.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},r.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:r.matchPrefix(e+t,"a=fingerprint:").map(r.parseFingerprint)}},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),n},r.getIceParameters=function(e,t){var n=r.splitLines(e);return{usernameFragment:(n=n.concat(r.splitLines(t))).filter((function(e){return 0===e.indexOf("a=ice-ufrag:")}))[0].substr(12),password:n.filter((function(e){return 0===e.indexOf("a=ice-pwd:")}))[0].substr(10)}},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e)[0].split(" "),i=3;i<n.length;i++){var o=n[i],a=r.matchPrefix(e,"a=rtpmap:"+o+" ")[0];if(a){var s=r.parseRtpMap(a),c=r.matchPrefix(e,"a=fmtp:"+o+" ");switch(s.parameters=c.length?r.parseFmtp(c[0]):{},s.rtcpFeedback=r.matchPrefix(e,"a=rtcp-fb:"+o+" ").map(r.parseRtcpFb),t.codecs.push(s),s.name.toUpperCase()){case"RED":case"ULPFEC":t.fecMechanisms.push(s.name.toUpperCase())}}}return r.matchPrefix(e,"a=extmap:").forEach((function(e){t.headerExtensions.push(r.parseExtmap(e))})),t},r.writeRtpDescription=function(e,t){var n="";n+="m="+e+" ",n+=t.codecs.length>0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach((function(e){n+=r.writeRtpMap(e),n+=r.writeFmtp(e),n+=r.writeRtcpFb(e)}));var i=0;return t.codecs.forEach((function(e){e.maxptime>i&&(i=e.maxptime)})),i>0&&(n+="a=maxptime:"+i+"\r\n"),n+="a=rtcp-mux\r\n",t.headerExtensions&&t.headerExtensions.forEach((function(e){n+=r.writeExtmap(e)})),n},r.parseRtpEncodingParameters=function(e){var t,n=[],i=r.parseRtpParameters(e),o=-1!==i.fecMechanisms.indexOf("RED"),a=-1!==i.fecMechanisms.indexOf("ULPFEC"),s=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),c=s.length>0&&s[0].ssrc,d=r.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&&(t=d[0][1]),i.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var r={ssrc:c,codecPayloadType:parseInt(e.parameters.apt,10)};c&&t&&(r.rtx={ssrc:t}),n.push(r),o&&((r=JSON.parse(JSON.stringify(r))).fec={ssrc:t,mechanism:a?"red+ulpfec":"red"},n.push(r))}})),0===n.length&&c&&n.push({ssrc:c});var u=r.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,n.forEach((function(e){e.maxBitrate=u}))),n},r.parseRtcpParameters=function(e){var t={},n=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];n&&(t.cname=n.value,t.ssrc=n.ssrc);var i=r.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=i.length>0,t.compound=0===i.length;var o=r.matchPrefix(e,"a=rtcp-mux");return t.mux=o.length>0,t},r.parseMsid=function(e){var t,n=r.matchPrefix(e,"a=msid:");if(1===n.length)return{stream:(t=n[0].substr(7).split(" "))[0],track:t[1]};var i=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return i.length>0?{stream:(t=i[0].value.split(" "))[0],track:t[1]}:void 0},r.generateSessionId=function(){return Math.random().toString().substr(2,21)},r.writeSessionBoilerplate=function(e,t){var n=void 0!==t?t:2;return"v=0\r\no=thisisadapterortc "+(e||r.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,i){var o=r.writeRtpDescription(e.kind,t);if(o+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),o+="a=mid:"+e.mid+"\r\n",e.direction?o+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var a="msid:"+i.id+" "+e.rtpSender.track.id+"\r\n";o+="a="+a,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+a,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+a,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),o},r.getDirection=function(e,t){for(var n=r.splitLines(e),i=0;i<n.length;i++)switch(n[i]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[i].substr(2)}return t?r.getDirection(t):"sendrecv"},r.getKind=function(e){return r.splitLines(e)[0].split(" ")[0].substr(2)},r.isRejected=function(e){return"0"===e.split(" ",2)[1]},r.parseMLine=function(e){var t=r.splitLines(e)[0].substr(2).split(" ");return{kind:t[0],port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}},r.parseOLine=function(e){var t=r.matchPrefix(e,"o=")[0].substr(2).split(" ");return{username:t[0],sessionId:t[1],sessionVersion:parseInt(t[2],10),netType:t[3],addressType:t[4],address:t[5]}},r.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;for(var t=r.splitLines(e),n=0;n<t.length;n++)if(t[n].length<2||"="!==t[n].charAt(1))return!1;return!0},"object"==typeof t&&(t.exports=r)},{}],3:[function(e,n,r){(function(t){var r=e("./adapter_factory.js");n.exports=r({window:t.window})}).call(this,void 0!==t?t:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./adapter_factory.js":4}],4:[function(e,t,n){var r=e("./utils");t.exports=function(t,n){var i=t&&t.window,o={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0};for(var a in n)hasOwnProperty.call(n,a)&&(o[a]=n[a]);var s=r.log,c=r.detectBrowser(i),d=e("./chrome/chrome_shim")||null,u=e("./edge/edge_shim")||null,p=e("./firefox/firefox_shim")||null,l=e("./safari/safari_shim")||null,f=e("./common_shim")||null,m={browserDetails:c,commonShim:f,extractVersion:r.extractVersion,disableLog:r.disableLog,disableWarnings:r.disableWarnings};switch(c.browser){case"chrome":if(!d||!d.shimPeerConnection||!o.shimChrome)return s("Chrome shim is not included in this adapter release."),m;s("adapter.js shimming chrome."),m.browserShim=d,f.shimCreateObjectURL(i),d.shimGetUserMedia(i),d.shimMediaStream(i),d.shimSourceObject(i),d.shimPeerConnection(i),d.shimOnTrack(i),d.shimAddTrackRemoveTrack(i),d.shimGetSendersWithDtmf(i),d.shimSenderReceiverGetStats(i),d.fixNegotiationNeeded(i),f.shimRTCIceCandidate(i),f.shimMaxMessageSize(i),f.shimSendThrowTypeError(i);break;case"firefox":if(!p||!p.shimPeerConnection||!o.shimFirefox)return s("Firefox shim is not included in this adapter release."),m;s("adapter.js shimming firefox."),m.browserShim=p,f.shimCreateObjectURL(i),p.shimGetUserMedia(i),p.shimSourceObject(i),p.shimPeerConnection(i),p.shimOnTrack(i),p.shimRemoveStream(i),p.shimSenderGetStats(i),p.shimReceiverGetStats(i),p.shimRTCDataChannel(i),f.shimRTCIceCandidate(i),f.shimMaxMessageSize(i),f.shimSendThrowTypeError(i);break;case"edge":if(!u||!u.shimPeerConnection||!o.shimEdge)return s("MS edge shim is not included in this adapter release."),m;s("adapter.js shimming edge."),m.browserShim=u,f.shimCreateObjectURL(i),u.shimGetUserMedia(i),u.shimPeerConnection(i),u.shimReplaceTrack(i),f.shimMaxMessageSize(i),f.shimSendThrowTypeError(i);break;case"safari":if(!l||!o.shimSafari)return s("Safari shim is not included in this adapter release."),m;s("adapter.js shimming safari."),m.browserShim=l,f.shimCreateObjectURL(i),l.shimRTCIceServerUrls(i),l.shimCreateOfferLegacy(i),l.shimCallbacksAPI(i),l.shimLocalStreamsAPI(i),l.shimRemoteStreamsAPI(i),l.shimTrackEventTransceiver(i),l.shimGetUserMedia(i),f.shimRTCIceCandidate(i),f.shimMaxMessageSize(i),f.shimSendThrowTypeError(i);break;default:s("Unsupported browser!")}return m}},{"./chrome/chrome_shim":5,"./common_shim":7,"./edge/edge_shim":8,"./firefox/firefox_shim":11,"./safari/safari_shim":13,"./utils":14}],5:[function(e,t,n){function r(e,t,n){var r=n?"outbound-rtp":"inbound-rtp",i=new Map;if(null===t)return i;var o=[];return e.forEach((function(e){"track"===e.type&&e.trackIdentifier===t.id&&o.push(e)})),o.forEach((function(t){e.forEach((function(n){n.type===r&&n.trackId===t.id&&function e(t,n,r){n&&!r.has(n.id)&&(r.set(n.id,n),Object.keys(n).forEach((function(i){i.endsWith("Id")?e(t,t.get(n[i]),r):i.endsWith("Ids")&&n[i].forEach((function(n){e(t,t.get(n),r)}))})))}(e,n,i)}))})),i}var i=e("../utils.js"),o=i.log;t.exports={shimGetUserMedia:e("./getusermedia"),shimMediaStream:function(e){e.MediaStream=e.MediaStream||e.webkitMediaStream},shimOnTrack:function(e){if("object"!=typeof e||!e.RTCPeerConnection||"ontrack"in e.RTCPeerConnection.prototype)"RTCRtpTransceiver"in e||i.wrapPeerConnectionEvent(e,"track",(function(e){return e.transceiver||(e.transceiver={receiver:e.receiver}),e}));else{Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)},enumerable:!0,configurable:!0});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return n._ontrackpoly||(n._ontrackpoly=function(t){t.stream.addEventListener("addtrack",(function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.track.id})):{track:r.track};var o=new Event("track");o.track=r.track,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],n.dispatchEvent(o)})),t.stream.getTracks().forEach((function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.id})):{track:r};var o=new Event("track");o.track=r,o.receiver=i,o.transceiver={receiver:i},o.streams=[t.stream],n.dispatchEvent(o)}))},n.addEventListener("addstream",n._ontrackpoly)),t.apply(n,arguments)}}},shimGetSendersWithDtmf:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var 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()};var n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){var i=this,o=n.apply(i,arguments);return o||(o=t(i,e),i._senders.push(o)),o};var r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;r.apply(t,arguments);var n=t._senders.indexOf(e);-1!==n&&t._senders.splice(n,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var n=this;n._senders=n._senders||[],i.apply(n,[e]),e.getTracks().forEach((function(e){n._senders.push(t(n,e))}))};var o=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._senders=t._senders||[],o.apply(t,[e]),e.getTracks().forEach((function(e){var n=t._senders.find((function(t){return t.track===e}));n&&t._senders.splice(t._senders.indexOf(n),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)){var a=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=a.apply(e,[]);return t.forEach((function(t){t._pc=e})),t},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}},shimSenderReceiverGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&e.RTCRtpReceiver){if(!("getStats"in e.RTCRtpSender.prototype)){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,n=t.apply(e,[]);return n.forEach((function(t){t._pc=e})),n});var n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=n.apply(this,arguments);return e._pc=this,e}),e.RTCRtpSender.prototype.getStats=function(){var e=this;return this._pc.getStats().then((function(t){return r(t,e.track,!0)}))}}if(!("getStats"in e.RTCRtpReceiver.prototype)){var o=e.RTCPeerConnection.prototype.getReceivers;o&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,t=o.apply(e,[]);return t.forEach((function(t){t._pc=e})),t}),i.wrapPeerConnectionEvent(e,"track",(function(e){return e.receiver._pc=e.srcElement,e})),e.RTCRtpReceiver.prototype.getStats=function(){var e=this;return this._pc.getStats().then((function(t){return r(t,e.track,!1)}))}}if("getStats"in e.RTCRtpSender.prototype&&"getStats"in e.RTCRtpReceiver.prototype){var a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(){var t=this;if(arguments.length>0&&arguments[0]instanceof e.MediaStreamTrack){var n,r,i,o=arguments[0];return t.getSenders().forEach((function(e){e.track===o&&(n?i=!0:n=e)})),t.getReceivers().forEach((function(e){return e.track===o&&(r?i=!0:r=e),e.track===o})),i||n&&r?Promise.reject(new DOMException("There are more than one sender or receiver for the track.","InvalidAccessError")):n?n.getStats():r?r.getStats():Promise.reject(new DOMException("There is no sender or receiver for the track.","InvalidAccessError"))}return a.apply(t,arguments)}}}},shimSourceObject:function(e){var t=e&&e.URL;"object"==typeof e&&(!e.HTMLMediaElement||"srcObject"in e.HTMLMediaElement.prototype||Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var n=this;this._srcObject=e,this.src&&t.revokeObjectURL(this.src),e?(this.src=t.createObjectURL(e),e.addEventListener("addtrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)})),e.addEventListener("removetrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)}))):this.src=""}}))},shimAddTrackRemoveTrackWithNative:function(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((function(t){return e._shimmedLocalStreams[t][0]}))};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?-1===this._shimmedLocalStreams[n.id].indexOf(r)&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((function(e){if(t.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")}));var r=t.getSenders();n.apply(this,arguments);var i=t.getSenders().filter((function(e){return-1===r.indexOf(e)}));this._shimmedLocalStreams[e.id]=[e].concat(i)};var r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((function(n){var r=t._shimmedLocalStreams[n].indexOf(e);-1!==r&&t._shimmedLocalStreams[n].splice(r,1),1===t._shimmedLocalStreams[n].length&&delete t._shimmedLocalStreams[n]})),i.apply(this,arguments)}},shimAddTrackRemoveTrack:function(e){function t(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:n})}function n(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:n})}var r=i.detectBrowser(e);if(e.RTCPeerConnection.prototype.addTrack&&r.version>=65)return this.shimAddTrackRemoveTrackWithNative(e);var o=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this,t=o.apply(this);return e._reverseStreams=e._reverseStreams||{},t.map((function(t){return e._reverseStreams[t.id]}))};var a=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){var n=this;if(n._streams=n._streams||{},n._reverseStreams=n._reverseStreams||{},t.getTracks().forEach((function(e){if(n.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")})),!n._reverseStreams[t.id]){var r=new e.MediaStream(t.getTracks());n._streams[t.id]=r,n._reverseStreams[r.id]=t,t=r}a.apply(n,[t])};var s=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._streams=t._streams||{},t._reverseStreams=t._reverseStreams||{},s.apply(t,[t._streams[e.id]||e]),delete t._reverseStreams[t._streams[e.id]?t._streams[e.id].id:e.id],delete t._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,n){var r=this;if("closed"===r.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((function(e){return e===t})))throw new DOMException("The adapter.js addTrack polyfill only supports a single stream which is associated with the specified track.","NotSupportedError");if(r.getSenders().find((function(e){return e.track===t})))throw new DOMException("Track already exists.","InvalidAccessError");r._streams=r._streams||{},r._reverseStreams=r._reverseStreams||{};var o=r._streams[n.id];if(o)o.addTrack(t),Promise.resolve().then((function(){r.dispatchEvent(new Event("negotiationneeded"))}));else{var a=new e.MediaStream([t]);r._streams[n.id]=a,r._reverseStreams[a.id]=n,r.addStream(a)}return r.getSenders().find((function(e){return e.track===t}))},["createOffer","createAnswer"].forEach((function(n){var r=e.RTCPeerConnection.prototype[n];e.RTCPeerConnection.prototype[n]=function(){var e=this,n=arguments;return arguments.length&&"function"==typeof arguments[0]?r.apply(e,[function(r){var i=t(e,r);n[0].apply(null,[i])},function(e){n[1]&&n[1].apply(null,e)},arguments[2]]):r.apply(e,arguments).then((function(n){return t(e,n)}))}}));var c=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e=this;return arguments.length&&arguments[0].type?(arguments[0]=n(e,arguments[0]),c.apply(e,arguments)):c.apply(e,arguments)};var d=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var e=d.get.apply(this);return""===e.type?e:t(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){var t,n=this;if("closed"===n.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!==n)throw new DOMException("Sender was not created by this connection.","InvalidAccessError");n._streams=n._streams||{},Object.keys(n._streams).forEach((function(r){n._streams[r].getTracks().find((function(t){return e.track===t}))&&(t=n._streams[r])})),t&&(1===t.getTracks().length?n.removeStream(n._reverseStreams[t.id]):t.removeTrack(e.track),n.dispatchEvent(new Event("negotiationneeded")))}},shimPeerConnection:function(e){var t=i.detectBrowser(e);if(!e.RTCPeerConnection&&e.webkitRTCPeerConnection)e.RTCPeerConnection=function(t,n){return o("PeerConnection"),t&&t.iceTransportPolicy&&(t.iceTransports=t.iceTransportPolicy),new e.webkitRTCPeerConnection(t,n)},e.RTCPeerConnection.prototype=e.webkitRTCPeerConnection.prototype,e.webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.webkitRTCPeerConnection.generateCertificate}});else{var n=e.RTCPeerConnection;e.RTCPeerConnection=function(e,t){if(e&&e.iceServers){for(var r=[],o=0;o<e.iceServers.length;o++){var a=e.iceServers[o];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(i.deprecated("RTCIceServer.url","RTCIceServer.urls"),(a=JSON.parse(JSON.stringify(a))).urls=a.url,r.push(a)):r.push(e.iceServers[o])}e.iceServers=r}return new n(e,t)},e.RTCPeerConnection.prototype=n.prototype,Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return n.generateCertificate}})}var r=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,t,n){var i=this,o=arguments;if(arguments.length>0&&"function"==typeof e)return r.apply(this,arguments);if(0===r.length&&(0===arguments.length||"function"!=typeof arguments[0]))return r.apply(this,[]);var a=function(e){var t={};return e.result().forEach((function(e){var n={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((function(t){n[t]=e.stat(t)})),t[n.id]=n})),t},s=function(e){return new Map(Object.keys(e).map((function(t){return[t,e[t]]})))};if(arguments.length>=2){var c=function(e){o[1](s(a(e)))};return r.apply(this,[c,arguments[0]])}return new Promise((function(e,t){r.apply(i,[function(t){e(s(a(t)))},t])})).then(t,n)},t.version<51&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=arguments,t=this,r=new Promise((function(r,i){n.apply(t,[e[0],r,i])}));return e.length<2?r:r.then((function(){e[1].apply(null,[])}),(function(t){e.length>=3&&e[2].apply(null,[t])}))}})),t.version<52&&["createOffer","createAnswer"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var t=1===arguments.length?arguments[0]:void 0;return new Promise((function(r,i){n.apply(e,[r,i,t])}))}return n.apply(this,arguments)}})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var a=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?a.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())}},fixNegotiationNeeded:function(e){i.wrapPeerConnectionEvent(e,"negotiationneeded",(function(e){if("stable"===e.target.signalingState)return e}))},shimGetDisplayMedia:function(e,t){"getDisplayMedia"in e.navigator||"function"==typeof t&&(navigator.getDisplayMedia=function(e){return t(e).then((function(t){return e.video={mandatory:{chromeMediaSource:"desktop",chromeMediaSourceId:t,maxFrameRate:e.video.frameRate||3}},navigator.mediaDevices.getUserMedia(e)}))})}}},{"../utils.js":14,"./getusermedia":6}],6:[function(e,t,n){var r=e("../utils.js"),i=r.log;t.exports=function(e){var t=r.detectBrowser(e),n=e&&e.navigator,o=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var o={};"number"==typeof r.ideal?(o[i("min",n)]=r.ideal,t.optional.push(o),(o={})[i("max",n)]=r.ideal,t.optional.push(o)):(o[i("",n)]=r.ideal,t.optional.push(o))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",n)]=r.exact):["min","max"].forEach((function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])}))}})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},a=function(e,r){if(t.version>=61)return r(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){var a=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};a((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),a(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=o(e.audio)}if(e&&"object"==typeof e.video){var s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});var c,d=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!n.mediaDevices.getSupportedConstraints||!n.mediaDevices.getSupportedConstraints().facingMode||d)&&(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?c=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(c=["front"]),c))return n.mediaDevices.enumerateDevices().then((function(t){var n=(t=t.filter((function(e){return"videoinput"===e.kind}))).find((function(e){return c.some((function(t){return-1!==e.label.toLowerCase().indexOf(t)}))}));return!n&&t.length&&-1!==c.indexOf("back")&&(n=t[t.length-1]),n&&(e.video.deviceId=s.exact?{exact:n.deviceId}:{ideal:n.deviceId}),e.video=o(e.video),i("chrome: "+JSON.stringify(e)),r(e)}));e.video=o(e.video)}return i("chrome: "+JSON.stringify(e)),r(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:function(){return this.name+(this.message&&": ")+this.message}}};n.getUserMedia=function(e,t,r){a(e,(function(e){n.webkitGetUserMedia(e,t,(function(e){r&&r(s(e))}))}))};var c=function(e){return new Promise((function(t,r){n.getUserMedia(e,t,r)}))};if(n.mediaDevices||(n.mediaDevices={getUserMedia:c,enumerateDevices:function(){return new Promise((function(t){var n={audio:"audioinput",video:"videoinput"};return e.MediaStreamTrack.getSources((function(e){t(e.map((function(e){return{label:e.label,kind:n[e.kind],deviceId:e.id,groupId:""}})))}))}))},getSupportedConstraints:function(){return{deviceId:!0,echoCancellation:!0,facingMode:!0,frameRate:!0,height:!0,width:!0}}}),n.mediaDevices.getUserMedia){var d=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(e){return a(e,(function(e){return d(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("","NotFoundError");return t}),(function(e){return Promise.reject(s(e))}))}))}}else n.mediaDevices.getUserMedia=function(e){return c(e)};void 0===n.mediaDevices.addEventListener&&(n.mediaDevices.addEventListener=function(){i("Dummy mediaDevices.addEventListener called.")}),void 0===n.mediaDevices.removeEventListener&&(n.mediaDevices.removeEventListener=function(){i("Dummy mediaDevices.removeEventListener called.")})}},{"../utils.js":14}],7:[function(e,t,n){var r=e("sdp"),i=e("./utils");t.exports={shimRTCIceCandidate:function(e){if(e.RTCIceCandidate&&(!e.RTCIceCandidate||!("foundation"in e.RTCIceCandidate.prototype))){var 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){var n=new t(e),i=r.parseCandidate(e.candidate),o=Object.assign(n,i);return o.toJSON=function(){return{candidate:o.candidate,sdpMid:o.sdpMid,sdpMLineIndex:o.sdpMLineIndex,usernameFragment:o.usernameFragment}},o}return new t(e)},e.RTCIceCandidate.prototype=t.prototype,i.wrapPeerConnectionEvent(e,"icecandidate",(function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t}))}},shimCreateObjectURL:function(e){var t=e&&e.URL;if("object"==typeof e&&e.HTMLMediaElement&&"srcObject"in e.HTMLMediaElement.prototype&&t.createObjectURL&&t.revokeObjectURL){var n=t.createObjectURL.bind(t),r=t.revokeObjectURL.bind(t),o=new Map,a=0;t.createObjectURL=function(e){if("getTracks"in e){var t="polyblob:"+ ++a;return o.set(t,e),i.deprecated("URL.createObjectURL(stream)","elem.srcObject = stream"),t}return n(e)},t.revokeObjectURL=function(e){r(e),o.delete(e)};var s=Object.getOwnPropertyDescriptor(e.HTMLMediaElement.prototype,"src");Object.defineProperty(e.HTMLMediaElement.prototype,"src",{get:function(){return s.get.apply(this)},set:function(e){return this.srcObject=o.get(e)||null,s.set.apply(this,[e])}});var c=e.HTMLMediaElement.prototype.setAttribute;e.HTMLMediaElement.prototype.setAttribute=function(){return 2===arguments.length&&"src"===(""+arguments[0]).toLowerCase()&&(this.srcObject=o.get(arguments[1])||null),c.apply(this,arguments)}}},shimMaxMessageSize:function(e){if(!e.RTCSctpTransport&&e.RTCPeerConnection){var t=i.detectBrowser(e);"sctp"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"sctp",{get:function(){return void 0===this._sctp?null:this._sctp}});var n=function(e){var t=r.splitSections(e.sdp);return t.shift(),t.some((function(e){var t=r.parseMLine(e);return t&&"application"===t.kind&&-1!==t.protocol.indexOf("SCTP")}))},o=function(e){var t=e.sdp.match(/mozilla...THIS_IS_SDPARTA-(\d+)/);if(null===t||t.length<2)return-1;var n=parseInt(t[1],10);return n!=n?-1:n},a=function(e){var n=65536;return"firefox"===t.browser&&(n=t.version<57?-1===e?16384:2147483637:t.version<60?57===t.version?65535:65536:2147483637),n},s=function(e,n){var i=65536;"firefox"===t.browser&&57===t.version&&(i=65535);var o=r.matchPrefix(e.sdp,"a=max-message-size:");return o.length>0?i=parseInt(o[0].substr(19),10):"firefox"===t.browser&&-1!==n&&(i=2147483637),i},c=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;if(e._sctp=null,n(arguments[0])){var t,r=o(arguments[0]),i=a(r),d=s(arguments[0],r);t=0===i&&0===d?Number.POSITIVE_INFINITY:0===i||0===d?Math.max(i,d):Math.min(i,d);var u={};Object.defineProperty(u,"maxMessageSize",{get:function(){return t}}),e._sctp=u}return c.apply(e,arguments)}}},shimSendThrowTypeError:function(e){function t(e,t){var n=e.send;e.send=function(){var r=arguments[0],i=r.length||r.size||r.byteLength;if("open"===e.readyState&&t.sctp&&i>t.sctp.maxMessageSize)throw new TypeError("Message too large (can send a maximum of "+t.sctp.maxMessageSize+" bytes)");return n.apply(e,arguments)}}if(e.RTCPeerConnection&&"createDataChannel"in e.RTCPeerConnection.prototype){var n=e.RTCPeerConnection.prototype.createDataChannel;e.RTCPeerConnection.prototype.createDataChannel=function(){var e=this,r=n.apply(e,arguments);return t(r,e),r},i.wrapPeerConnectionEvent(e,"datachannel",(function(e){return t(e.channel,e.target),e}))}}}},{"./utils":14,sdp:2}],8:[function(e,t,n){var r=e("../utils"),i=e("./filtericeservers"),o=e("rtcpeerconnection-shim");t.exports={shimGetUserMedia:e("./getusermedia"),shimPeerConnection:function(e){var t=r.detectBrowser(e);if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){var n=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set:function(e){n.set.call(this,e);var t=new Event("enabled");t.enabled=e,this.dispatchEvent(t)}})}!e.RTCRtpSender||"dtmf"in e.RTCRtpSender.prototype||Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){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);var a=o(e,t.version);e.RTCPeerConnection=function(e){return e&&e.iceServers&&(e.iceServers=i(e.iceServers)),new a(e)},e.RTCPeerConnection.prototype=a.prototype},shimReplaceTrack:function(e){!e.RTCRtpSender||"replaceTrack"in e.RTCRtpSender.prototype||(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}}},{"../utils":14,"./filtericeservers":9,"./getusermedia":10,"rtcpeerconnection-shim":1}],9:[function(e,t,n){var r=e("../utils");t.exports=function(e,t){var n=!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&&r.deprecated("RTCIceServer.url","RTCIceServer.urls");var o="string"==typeof i;return o&&(i=[i]),i=i.filter((function(e){return 0!==e.indexOf("turn:")||-1===e.indexOf("transport=udp")||-1!==e.indexOf("turn:[")||n?0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp"):(n=!0,!0)})),delete e.url,e.urls=o?i[0]:i,!!i.length}}))}},{"../utils":14}],10:[function(e,t,n){t.exports=function(e){var t=e&&e.navigator,n=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return n(e).catch((function(e){return Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString:function(){return this.name}}}(e))}))}}},{}],11:[function(e,t,n){var r=e("../utils");t.exports={shimGetUserMedia:e("./getusermedia"),shimOnTrack:function(e){"object"!=typeof e||!e.RTCPeerConnection||"ontrack"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.transceiver={receiver:n.receiver},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))},enumerable:!0,configurable:!0}),"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimSourceObject:function(e){"object"==typeof e&&(!e.HTMLMediaElement||"srcObject"in e.HTMLMediaElement.prototype||Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}}))},shimPeerConnection:function(e){var t=r.detectBrowser(e);if("object"==typeof e&&(e.RTCPeerConnection||e.mozRTCPeerConnection)){e.RTCPeerConnection||(e.RTCPeerConnection=function(n,r){if(t.version<38&&n&&n.iceServers){for(var i=[],o=0;o<n.iceServers.length;o++){var a=n.iceServers[o];if(a.hasOwnProperty("urls"))for(var s=0;s<a.urls.length;s++){var c={url:a.urls[s]};0===a.urls[s].indexOf("turn")&&(c.username=a.username,c.credential=a.credential),i.push(c)}else i.push(n.iceServers[o])}n.iceServers=i}return new e.mozRTCPeerConnection(n,r)},e.RTCPeerConnection.prototype=e.mozRTCPeerConnection.prototype,e.mozRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.mozRTCPeerConnection.generateCertificate}}),e.RTCSessionDescription=e.mozRTCSessionDescription,e.RTCIceCandidate=e.mozRTCIceCandidate),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var n=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())};var i={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},o=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,n,r){return o.apply(this,[e||null]).then((function(e){if(t.version<48&&(e=function(e){var t=new Map;return Object.keys(e).forEach((function(n){t.set(n,e[n]),t[n]=e[n]})),t}(e)),t.version<53&&!n)try{e.forEach((function(e){e.type=i[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach((function(t,n){e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))}))}return e})).then(n,r)}}},shimSenderGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&(!e.RTCRtpSender||!("getStats"in e.RTCRtpSender.prototype))){var t=e.RTCPeerConnection.prototype.getSenders;t&&(e.RTCPeerConnection.prototype.getSenders=function(){var e=this,n=t.apply(e,[]);return n.forEach((function(t){t._pc=e})),n});var n=e.RTCPeerConnection.prototype.addTrack;n&&(e.RTCPeerConnection.prototype.addTrack=function(){var e=n.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)}}},shimReceiverGetStats:function(e){if("object"==typeof e&&e.RTCPeerConnection&&e.RTCRtpSender&&(!e.RTCRtpSender||!("getStats"in e.RTCRtpReceiver.prototype))){var t=e.RTCPeerConnection.prototype.getReceivers;t&&(e.RTCPeerConnection.prototype.getReceivers=function(){var e=this,n=t.apply(e,[]);return n.forEach((function(t){t._pc=e})),n}),r.wrapPeerConnectionEvent(e,"track",(function(e){return e.receiver._pc=e.srcElement,e})),e.RTCRtpReceiver.prototype.getStats=function(){return this._pc.getStats(this.track)}}},shimRemoveStream:function(e){!e.RTCPeerConnection||"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;r.deprecated("removeStream","removeTrack"),this.getSenders().forEach((function(n){n.track&&-1!==e.getTracks().indexOf(n.track)&&t.removeTrack(n)}))})},shimRTCDataChannel:function(e){e.DataChannel&&!e.RTCDataChannel&&(e.RTCDataChannel=e.DataChannel)},shimGetDisplayMedia:function(e,t){"getDisplayMedia"in e.navigator||(navigator.getDisplayMedia=function(e){if(!e||!e.video){var n=new DOMException("getDisplayMedia without video constraints is undefined");return n.name="NotFoundError",n.code=8,Promise.reject(n)}return!0===e.video?e.video={mediaSource:t}:e.video.mediaSource=t,navigator.mediaDevices.getUserMedia(e)})}}},{"../utils":14,"./getusermedia":12}],12:[function(e,t,n){var r=e("../utils"),i=r.log;t.exports=function(e){var t=r.detectBrowser(e),n=e&&e.navigator,o=e&&e.MediaStreamTrack,a=function(e){return{name:{InternalError:"NotReadableError",NotSupportedError:"TypeError",PermissionDeniedError:"NotAllowedError",SecurityError:"NotAllowedError"}[e.name]||e.name,message:{"The operation is insecure.":"The request is not allowed by the user agent or the platform in the current context."}[e.message]||e.message,constraint:e.constraint,toString:function(){return this.name+(this.message&&": ")+this.message}}},s=function(e,r,o){var s=function(e){if("object"!=typeof e||e.require)return e;var t=[];return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r=e[n]="object"==typeof e[n]?e[n]:{ideal:e[n]};if(void 0===r.min&&void 0===r.max&&void 0===r.exact||t.push(n),void 0!==r.exact&&("number"==typeof r.exact?r.min=r.max=r.exact:e[n]=r.exact,delete r.exact),void 0!==r.ideal){e.advanced=e.advanced||[];var i={};"number"==typeof r.ideal?i[n]={min:r.ideal,max:r.ideal}:i[n]=r.ideal,e.advanced.push(i),delete r.ideal,Object.keys(r).length||delete e[n]}}})),t.length&&(e.require=t),e};return e=JSON.parse(JSON.stringify(e)),t.version<38&&(i("spec: "+JSON.stringify(e)),e.audio&&(e.audio=s(e.audio)),e.video&&(e.video=s(e.video)),i("ff37: "+JSON.stringify(e))),n.mozGetUserMedia(e,r,(function(e){o(a(e))}))};if(n.mediaDevices||(n.mediaDevices={getUserMedia:function(e){return new Promise((function(t,n){s(e,t,n)}))},addEventListener:function(){},removeEventListener:function(){}}),n.mediaDevices.enumerateDevices=n.mediaDevices.enumerateDevices||function(){return new Promise((function(e){e([{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}])}))},t.version<41){var c=n.mediaDevices.enumerateDevices.bind(n.mediaDevices);n.mediaDevices.enumerateDevices=function(){return c().then(void 0,(function(e){if("NotFoundError"===e.name)return[];throw e}))}}if(t.version<49){var d=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(e){return d(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("The object can not be found here.","NotFoundError");return t}),(function(e){return Promise.reject(a(e))}))}}if(!(t.version>55&&"autoGainControl"in n.mediaDevices.getSupportedConstraints())){var u=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},p=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(n.mediaDevices.getUserMedia=function(e){return"object"==typeof e&&"object"==typeof e.audio&&(e=JSON.parse(JSON.stringify(e)),u(e.audio,"autoGainControl","mozAutoGainControl"),u(e.audio,"noiseSuppression","mozNoiseSuppression")),p(e)},o&&o.prototype.getSettings){var l=o.prototype.getSettings;o.prototype.getSettings=function(){var e=l.apply(this,arguments);return u(e,"mozAutoGainControl","autoGainControl"),u(e,"mozNoiseSuppression","noiseSuppression"),e}}if(o&&o.prototype.applyConstraints){var f=o.prototype.applyConstraints;o.prototype.applyConstraints=function(e){return"audio"===this.kind&&"object"==typeof e&&(e=JSON.parse(JSON.stringify(e)),u(e,"autoGainControl","mozAutoGainControl"),u(e,"noiseSuppression","mozNoiseSuppression")),f.apply(this,[e])}}}n.getUserMedia=function(e,i,o){if(t.version<44)return s(e,i,o);r.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),n.mediaDevices.getUserMedia(e).then(i,o)}}},{"../utils":14}],13:[function(e,t,n){var r=e("../utils");t.exports={shimLocalStreamsAPI:function(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}),"getStreamById"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getStreamById=function(e){var t=null;return this._localStreams&&this._localStreams.forEach((function(n){n.id===e&&(t=n)})),this._remoteStreams&&this._remoteStreams.forEach((function(n){n.id===e&&(t=n)})),t}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),-1===this._localStreams.indexOf(e)&&this._localStreams.push(e);var n=this;e.getTracks().forEach((function(r){t.call(n,r,e)}))},e.RTCPeerConnection.prototype.addTrack=function(e,n){return n&&(this._localStreams?-1===this._localStreams.indexOf(n)&&this._localStreams.push(n):this._localStreams=[n]),t.call(this,e,n)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);var t=this._localStreams.indexOf(e);if(-1!==t){this._localStreams.splice(t,1);var n=this,r=e.getTracks();this.getSenders().forEach((function(e){-1!==r.indexOf(e.track)&&n.removeTrack(e)}))}})}},shimRemoteStreamsAPI:function(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:function(){return this._onaddstream},set:function(e){this._onaddstream&&this.removeEventListener("addstream",this._onaddstream),this.addEventListener("addstream",this._onaddstream=e)}});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var e=this;return this._onaddstreampoly||this.addEventListener("track",this._onaddstreampoly=function(t){t.streams.forEach((function(t){if(e._remoteStreams||(e._remoteStreams=[]),!(e._remoteStreams.indexOf(t)>=0)){e._remoteStreams.push(t);var n=new Event("addstream");n.stream=t,e.dispatchEvent(n)}}))}),t.apply(e,arguments)}}},shimCallbacksAPI:function(e){if("object"==typeof e&&e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype,n=t.createOffer,r=t.createAnswer,i=t.setLocalDescription,o=t.setRemoteDescription,a=t.addIceCandidate;t.createOffer=function(e,t){var r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){var n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i};var s=function(e,t,n){var r=i.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r};t.setLocalDescription=s,s=function(e,t,n){var r=o.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.setRemoteDescription=s,s=function(e,t,n){var r=a.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.addIceCandidate=s}},shimGetUserMedia:function(e){var t=e&&e.navigator;t.getUserMedia||(t.webkitGetUserMedia?t.getUserMedia=t.webkitGetUserMedia.bind(t):t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t)))},shimRTCIceServerUrls:function(e){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){for(var i=[],o=0;o<e.iceServers.length;o++){var a=e.iceServers[o];!a.hasOwnProperty("urls")&&a.hasOwnProperty("url")?(r.deprecated("RTCIceServer.url","RTCIceServer.urls"),(a=JSON.parse(JSON.stringify(a))).urls=a.url,delete a.url,i.push(a)):i.push(e.iceServers[o])}e.iceServers=i}return new t(e,n)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in e.RTCPeerConnection&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return t.generateCertificate}})},shimTrackEventTransceiver:function(e){"object"==typeof e&&e.RTCPeerConnection&&"receiver"in e.RTCTrackEvent.prototype&&!e.RTCTransceiver&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimCreateOfferLegacy:function(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){var n=this;if(e){void 0!==e.offerToReceiveAudio&&(e.offerToReceiveAudio=!!e.offerToReceiveAudio);var r=n.getTransceivers().find((function(e){return e.sender.track&&"audio"===e.sender.track.kind}));!1===e.offerToReceiveAudio&&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.offerToReceiveAudio||r||n.addTransceiver("audio"),void 0!==e.offerToReceiveVideo&&(e.offerToReceiveVideo=!!e.offerToReceiveVideo);var i=n.getTransceivers().find((function(e){return e.sender.track&&"video"===e.sender.track.kind}));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection("sendonly"):"recvonly"===i.direction&&i.setDirection("inactive"):!0!==e.offerToReceiveVideo||i||n.addTransceiver("video")}return t.apply(n,arguments)}}}},{"../utils":14}],14:[function(e,t,n){function r(e,t,n){var r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}var i=!0;t.exports={extractVersion:r,wrapPeerConnectionEvent:function(e,t,n){if(e.RTCPeerConnection){var r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);var o=function(e){var t=n(e);t&&r(t)};return this._eventMap=this._eventMap||{},this._eventMap[r]=o,i.apply(this,[e,o])};var o=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[n])return o.apply(this,arguments);var r=this._eventMap[n];return delete this._eventMap[n],o.apply(this,[e,r])},Object.defineProperty(r,"on"+t,{get:function(){return this["_on"+t]},set:function(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})}},disableLog:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(i=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},disableWarnings:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):"adapter.js deprecation warnings "+(e?"disabled":"enabled")},log:function(){if("object"==typeof window){if(i)return;"undefined"!=typeof console&&console.log}},deprecated:function(e,t){},detectBrowser:function(e){var t=e&&e.navigator,n={browser:null,version:null};if(void 0===e||!e.navigator)return n.browser="Not a browser.",n;if(t.mozGetUserMedia)n.browser="firefox",n.version=r(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia)n.browser="chrome",n.version=r(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))n.browser="edge",n.version=r(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!e.RTCPeerConnection||!t.userAgent.match(/AppleWebKit\/(\d+)\./))return n.browser="Not a supported browser.",n;n.browser="safari",n.version=r(t.userAgent,/AppleWebKit\/(\d+)\./,1)}return n}}},{}]},{},[3])(3),navigator.mozGetUserMedia?(MediaStreamTrack.getSources=function(e){setTimeout((function(){e([{kind:"audio",id:"default",label:"",facing:""},{kind:"video",id:"default",label:"",facing:""}])}),0)},attachMediaStream=function(e,t){return e.srcObject=t,e},reattachMediaStream=function(e,t){return e.srcObject=t.srcObject,e}):navigator.webkitGetUserMedia?(attachMediaStream=function(e,t){return n.webrtcDetectedVersion>=43?e.srcObject=t:void 0!==e.src&&(e.src=URL.createObjectURL(t)),e},reattachMediaStream=function(e,t){return n.webrtcDetectedVersion>=43?e.srcObject=t.srcObject:e.src=t.src,e}):"AppleWebKit"===n.webrtcDetectedType?(attachMediaStream=function(e,t){return e.srcObject=t,e},reattachMediaStream=function(e,t){return e.srcObject=t.srcObject,e},navigator.mediaDevices&&navigator.mediaDevices.getUserMedia&&(navigator.getUserMedia=getUserMedia=function(e,t,n){navigator.mediaDevices.getUserMedia(e).then(t).catch(n)})):navigator.mediaDevices&&navigator.userAgent.match(/Edge\/(\d+).(\d+)$/)&&(attachMediaStream=function(e,t){return e.srcObject=t,e},reattachMediaStream=function(e,t){return e.srcObject=t.srcObject,e});var r=attachMediaStream;"opera"===n.webrtcDetectedBrowser&&(r=function(e,t){n.webrtcDetectedVersion>38?e.srcObject=t:void 0!==e.src&&(e.src=URL.createObjectURL(t))}),attachMediaStream=function(e,t){return"chrome"!==n.webrtcDetectedBrowser&&"opera"!==n.webrtcDetectedBrowser||t?r(e,t):e.src="",e};var i=reattachMediaStream;reattachMediaStream=function(e,t){return i(e,t),e},window.attachMediaStream=attachMediaStream,window.reattachMediaStream=reattachMediaStream,window.getUserMedia=function(e,t,n){navigator.getUserMedia(e,t,n)},n.attachMediaStream=attachMediaStream,n.reattachMediaStream=reattachMediaStream,n.getUserMedia=getUserMedia,"undefined"==typeof Promise&&(requestUserMedia=null),n.maybeThroughWebRTCReady()}else"object"==typeof console&&"function"==typeof console.log||(console={}||console,console.log=function(e){},console.info=function(e){},console.error=function(e){},console.dir=function(e){},console.exception=function(e){},console.trace=function(e){},console.warn=function(e){},console.count=function(e){},console.debug=function(e){},console.count=function(e){},console.time=function(e){},console.timeEnd=function(e){},console.group=function(e){},console.groupCollapsed=function(e){},console.groupEnd=function(e){}),n.WebRTCPlugin.WaitForPluginReady=function(){for(;n.WebRTCPlugin.pluginState!==n.WebRTCPlugin.PLUGIN_STATES.READY;);},n.WebRTCPlugin.callWhenPluginReady=function(e){if(n.WebRTCPlugin.pluginState===n.WebRTCPlugin.PLUGIN_STATES.READY)e();else var t=setInterval((function(){n.WebRTCPlugin.pluginState===n.WebRTCPlugin.PLUGIN_STATES.READY&&(clearInterval(t),e())}),100)},n.WebRTCPlugin.setLogLevel=function(e){n.WebRTCPlugin.callWhenPluginReady((function(){n.WebRTCPlugin.plugin.setLogLevel(e)}))},n.WebRTCPlugin.injectPlugin=function(){if(n.documentReady()&&n.WebRTCPlugin.pluginState===n.WebRTCPlugin.PLUGIN_STATES.INITIALIZING){n.WebRTCPlugin.pluginState=n.WebRTCPlugin.PLUGIN_STATES.INJECTING;var e=document.getElementById(n.WebRTCPlugin.pluginInfo.pluginId);if(e)if(n.WebRTCPlugin.plugin=e,n.WebRTCPlugin.pluginState=n.WebRTCPlugin.PLUGIN_STATES.INJECTED,n.WebRTCPlugin.plugin.valid)window[n.WebRTCPlugin.pluginInfo.onload]();else var t=setInterval((function(){n.WebRTCPlugin.plugin.valid&&(clearInterval(t),window[n.WebRTCPlugin.pluginInfo.onload]())}),100);else{if("IE"===n.webrtcDetectedBrowser&&n.webrtcDetectedVersion<=10){var r=document.createDocumentFragment();for(n.WebRTCPlugin.plugin=document.createElement("div"),n.WebRTCPlugin.plugin.innerHTML='<object id="'+n.WebRTCPlugin.pluginInfo.pluginId+'" type="'+n.WebRTCPlugin.pluginInfo.type+'" width="1" height="1"><param name="pluginId" value="'+n.WebRTCPlugin.pluginInfo.pluginId+'" /> <param name="windowless" value="false" /> <param name="pageId" value="'+n.WebRTCPlugin.pageId+'" /> <param name="onload" value="'+n.WebRTCPlugin.pluginInfo.onload+'" /><param name="tag" value="'+n.WebRTCPlugin.TAGS.NONE+'" />'+(n.options.getAllCams?'<param name="forceGetAllCams" value="True" />':"")+"</object>";n.WebRTCPlugin.plugin.firstChild;)r.appendChild(n.WebRTCPlugin.plugin.firstChild);document.body.appendChild(r),n.WebRTCPlugin.plugin=document.getElementById(n.WebRTCPlugin.pluginInfo.pluginId)}else n.WebRTCPlugin.plugin=document.createElement("object"),n.WebRTCPlugin.plugin.id=n.WebRTCPlugin.pluginInfo.pluginId,"IE"===n.webrtcDetectedBrowser?(n.WebRTCPlugin.plugin.width="1px",n.WebRTCPlugin.plugin.height="1px"):(n.WebRTCPlugin.plugin.width="0px",n.WebRTCPlugin.plugin.height="0px"),n.WebRTCPlugin.plugin.type=n.WebRTCPlugin.pluginInfo.type,n.WebRTCPlugin.plugin.innerHTML='<param name="onload" value="'+n.WebRTCPlugin.pluginInfo.onload+'"><param name="pluginId" value="'+n.WebRTCPlugin.pluginInfo.pluginId+'"><param name="windowless" value="false" /> '+(n.options.getAllCams?'<param name="forceGetAllCams" value="True" />':"")+'<param name="pageId" value="'+n.WebRTCPlugin.pageId+'"><param name="tag" value="'+n.WebRTCPlugin.TAGS.NONE+'" />',document.body.appendChild(n.WebRTCPlugin.plugin);n.WebRTCPlugin.pluginState=n.WebRTCPlugin.PLUGIN_STATES.INJECTED}}},n.WebRTCPlugin.isPluginInstalled=function(e,t,r,i,o){if("IE"!==n.webrtcDetectedBrowser){var a=navigator.mimeTypes;if(void 0!==a){for(var s=0;s<a.length;s++)if(a[s].type.indexOf(r)>=0)return void i();o()}else n.renderNotificationBar(n.TEXT.PLUGIN.NOT_SUPPORTED)}else{try{new ActiveXObject(e+"."+t)}catch(e){return void o()}i()}},n.WebRTCPlugin.defineWebRTCInterface=function(){if(n.WebRTCPlugin.pluginState!==n.WebRTCPlugin.PLUGIN_STATES.READY){n.WebRTCPlugin.pluginState=n.WebRTCPlugin.PLUGIN_STATES.INITIALIZING,n.isDefined=function(e){return null!=e},RTCSessionDescription=function(e){return n.WebRTCPlugin.WaitForPluginReady(),n.WebRTCPlugin.plugin.ConstructSessionDescription(e.type,e.sdp)},MediaStream=function(e){return n.WebRTCPlugin.WaitForPluginReady(),n.WebRTCPlugin.plugin.MediaStream(e)},RTCPeerConnection=function(e,t){if(null!=e&&!Array.isArray(e.iceServers))throw new Error("Failed to construct 'RTCPeerConnection': Malformed RTCConfiguration");if(null!=t){var r=!1;if(r|="object"!=typeof t,r|=t.hasOwnProperty("mandatory")&&void 0!==t.mandatory&&null!==t.mandatory&&t.mandatory.constructor!==Object,r|=t.hasOwnProperty("optional")&&void 0!==t.optional&&null!==t.optional&&!Array.isArray(t.optional))throw new Error("Failed to construct 'RTCPeerConnection': Malformed constraints object")}n.WebRTCPlugin.WaitForPluginReady();var i=null;if(e&&Array.isArray(e.iceServers)){i=e.iceServers;for(var o=0;o<i.length;o++)i[o].urls&&!i[o].url&&(i[o].url=i[o].urls),i[o].hasCredentials=n.isDefined(i[o].username)&&n.isDefined(i[o].credential)}if(n.WebRTCPlugin.plugin.PEER_CONNECTION_VERSION&&n.WebRTCPlugin.plugin.PEER_CONNECTION_VERSION>1)return i&&(e.iceServers=i),n.WebRTCPlugin.plugin.PeerConnection(e);var a=t&&t.mandatory?t.mandatory:null,s=t&&t.optional?t.optional:null;return n.WebRTCPlugin.plugin.PeerConnection(n.WebRTCPlugin.pageId,i,a,s)};var e=function(){};e.getSources=function(e){n.WebRTCPlugin.callWhenPluginReady((function(){n.WebRTCPlugin.plugin.GetSources(e)}))};var t=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n){if("string"==typeof e[n])return void(t[n]=e[n]);var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if("sourceId"===i("",n)&&void 0!==r.exact&&(r.ideal=r.exact,r.exact=void 0),void 0!==r.ideal){t.optional=t.optional||[];var o={};"number"==typeof r.ideal?(o[i("min",n)]=r.ideal,t.optional.push(o),(o={})[i("max",n)]=r.ideal,t.optional.push(o)):(o[i("",n)]=r.ideal,t.optional.push(o))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",n)]=r.exact):["min","max"].forEach((function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])}))}})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t};getUserMedia=function(e,r,i){var o={};o.audio=!!e.audio&&t(e.audio),o.video=!!e.video&&t(e.video),n.WebRTCPlugin.callWhenPluginReady((function(){n.WebRTCPlugin.plugin.getUserMedia(o,r,i)}))},window.navigator.getUserMedia=getUserMedia,"undefined"!=typeof Promise&&(requestUserMedia=function(e){return new Promise((function(t,n){try{getUserMedia(e,t,n)}catch(e){n(e)}}))},void 0===navigator.mediaDevices&&(navigator.mediaDevices={}),navigator.mediaDevices.getUserMedia=requestUserMedia,navigator.mediaDevices.enumerateDevices=function(){return new Promise((function(t){var n={audio:"audioinput",video:"videoinput"};return e.getSources((function(e){t(e.map((function(e){return{label:e.label,kind:n[e.kind],id:e.id,deviceId:e.id,groupId:""}})))}))}))}),attachMediaStream=function(e,t){if(e&&e.parentNode){var r;null===t?r="":(void 0!==t.enableSoundTracks&&t.enableSoundTracks(!0),r=t.id);var i=0===e.id.length?Math.random().toString(36).slice(2):e.id,o=e.nodeName.toLowerCase();if("object"!==o){var a;switch(o){case"audio":a=n.WebRTCPlugin.TAGS.AUDIO;break;case"video":a=n.WebRTCPlugin.TAGS.VIDEO;break;default:a=n.WebRTCPlugin.TAGS.NONE}var s=document.createDocumentFragment(),c=document.createElement("div"),d="";for(e.className?d='class="'+e.className+'" ':e.attributes&&e.attributes.class&&(d='class="'+e.attributes.class.value+'" '),c.innerHTML='<object id="'+i+'" '+d+'type="'+n.WebRTCPlugin.pluginInfo.type+'"><param name="pluginId" value="'+i+'" /> <param name="pageId" value="'+n.WebRTCPlugin.pageId+'" /> <param name="windowless" value="true" /> <param name="streamId" value="'+r+'" /> <param name="tag" value="'+a+'" /> </object>';c.firstChild;)s.appendChild(c.firstChild);var u="",p="";e.clientWidth||e.clientHeight?(p=e.clientWidth,u=e.clientHeight):(e.width||e.height)&&(p=e.width,u=e.height),e.parentNode.insertBefore(s,e),(s=document.getElementById(i)).width=p,s.height=u,e.parentNode.removeChild(e)}else{for(var l=e.children,f=0;f!==l.length;++f)if("streamId"===l[f].name){l[f].value=r;break}e.setStreamId(r)}var m=document.getElementById(i);return n.forwardEventHandlers(m,e,Object.getPrototypeOf(e)),m}},reattachMediaStream=function(e,t){for(var r=null,i=t.children,o=0;o!==i.length;++o)if("streamId"===i[o].name){n.WebRTCPlugin.WaitForPluginReady(),r=n.WebRTCPlugin.plugin.getStreamWithId(n.WebRTCPlugin.pageId,i[o].value);break}if(null!==r)return attachMediaStream(e,r)},window.attachMediaStream=attachMediaStream,window.reattachMediaStream=reattachMediaStream,window.getUserMedia=getUserMedia,n.attachMediaStream=attachMediaStream,n.reattachMediaStream=reattachMediaStream,n.getUserMedia=getUserMedia,n.forwardEventHandlers=function(e,t,r){var i=Object.getOwnPropertyNames(r);for(var o in i)if(o){var a=i[o];"function"==typeof a.slice&&"on"===a.slice(0,2)&&"function"==typeof t[a]&&n.addEvent(e,a.slice(2),t[a])}var s=Object.getPrototypeOf(r);s&&n.forwardEventHandlers(e,t,s)},RTCIceCandidate=function(e){return e.sdpMid||(e.sdpMid=""),n.WebRTCPlugin.WaitForPluginReady(),n.WebRTCPlugin.plugin.ConstructIceCandidate(e.sdpMid,e.sdpMLineIndex,e.candidate)},n.addEvent(document,"readystatechange",n.WebRTCPlugin.injectPlugin),n.WebRTCPlugin.injectPlugin()}},n.WebRTCPlugin.pluginNeededButNotInstalledCb=n.WebRTCPlugin.pluginNeededButNotInstalledCb||function(){n.addEvent(document,"readystatechange",n.WebRTCPlugin.pluginNeededButNotInstalledCbPriv),n.WebRTCPlugin.pluginNeededButNotInstalledCbPriv()},n.WebRTCPlugin.pluginNeededButNotInstalledCbPriv=function(){if(n.documentReady()&&(document.removeEventListener("readystatechange",n.WebRTCPlugin.pluginNeededButNotInstalledCbPriv),!n.options.hidePluginInstallPrompt)){var e,t=n.WebRTCPlugin.pluginInfo.downloadLink;if(t)n.WebRTCPlugin.pluginInfo.companyName?(e="This website requires you to install the ",n.WebRTCPlugin.pluginInfo.portalLink?e+=' <a href="'+n.WebRTCPlugin.pluginInfo.portalLink+'" target="_blank">'+n.WebRTCPlugin.pluginInfo.companyName+" WebRTC Plugin</a>":e+=n.WebRTCPlugin.pluginInfo.companyName+" WebRTC Plugin",e+=" to work on this browser."):e=n.TEXT.PLUGIN.REQUIRE_INSTALLATION,n.renderNotificationBar(e,n.TEXT.PLUGIN.BUTTON,(function(){if(window.open(t,"_top"),"safari"===webrtcDetectedBrowser&&11==webrtcDetectedVersion)n.renderNotificationBar(n.TEXT.PLUGIN.REQUIRE_RESTART);else var e=setInterval((function(){"IE"!==n.webrtcDetectedBrowser&&navigator.plugins.refresh(!1),n.WebRTCPlugin.isPluginInstalled(n.WebRTCPlugin.pluginInfo.prefix,n.WebRTCPlugin.pluginInfo.plugName,n.WebRTCPlugin.pluginInfo.type,(function(){clearInterval(e),n.WebRTCPlugin.defineWebRTCInterface()}),(function(){}))}),500)}));else n.renderNotificationBar(n.TEXT.PLUGIN.NOT_SUPPORTED)}},n.WebRTCPlugin.isPluginInstalled(n.WebRTCPlugin.pluginInfo.prefix,n.WebRTCPlugin.pluginInfo.plugName,n.WebRTCPlugin.pluginInfo.type,n.WebRTCPlugin.defineWebRTCInterface,n.WebRTCPlugin.pluginNeededButNotInstalledCb);e.exports=n}).call(this,n("yLpj"))},zWga:function(e,t,n){"use strict";(function(n,r){var i,o=function(o,a){var s;function c(e,t){function n(e){return!e.audio&&!e.video&&!e.screen&&e.data}var r="";r+="?userid="+e.userid,r+="&sessionid="+e.sessionid,r+="&msgEvent="+e.socketMessageEvent,r+="&socketCustomEvent="+e.socketCustomEvent,r+="&autoCloseEntireSession="+!!e.autoCloseEntireSession,!0===e.session.broadcast&&(r+="&oneToMany=true"),r+="&maxParticipantsAllowed="+e.maxParticipantsAllowed,e.enableScalableBroadcast&&(r+="&enableScalableBroadcast=true",r+="&maxRelayLimitPerUser="+(e.maxRelayLimitPerUser||2)),r+="&extra="+JSON.stringify(e.extra||{}),e.socketCustomParameters&&(r+=e.socketCustomParameters);try{io.sockets={}}catch(e){}if(e.socketURL||(e.socketURL="/"),"/"!=e.socketURL.substr(e.socketURL.length-1,1))throw'"socketURL" MUST end with a slash.';e.enableLogs&&("/"==e.socketURL?console.info("socket.io url is: ",location.origin+"/"):console.info("socket.io url is: ",e.socketURL));try{e.socket=io(e.socketURL+r)}catch(t){e.socket=io.connect(e.socketURL+r,e.socketOptions)}var i=e.multiPeersHandler;function o(t,n){e.peersBackup[t]||(e.peersBackup[t]={userid:t,extra:{}}),e.peersBackup[t].extra=n}e.socket.on("extra-data-updated",(function(t,n){e.peers[t]&&(e.peers[t].extra=n,e.onExtraDataUpdated({userid:t,extra:n}),o(t,n))})),e.socket.on(e.socketMessageEvent,(function t(r){if(r.remoteUserId==e.userid)if(e.peers[r.sender]&&e.peers[r.sender].extra!=r.message.extra&&(e.peers[r.sender].extra=r.extra,e.onExtraDataUpdated({userid:r.sender,extra:r.extra}),o(r.sender,r.extra)),r.message.streamSyncNeeded&&e.peers[r.sender]){var a=e.streamEvents[r.message.streamid];if(!a||!a.stream)return;var s=r.message.action;if("ended"===s||"inactive"===s||"stream-removed"===s)return e.peersBackup[a.userid]&&(a.extra=e.peersBackup[a.userid].extra),void e.onstreamended(a);var c="both"!=r.message.type?r.message.type:null;"function"==typeof a.stream[s]&&a.stream[s](c)}else if("dropPeerConnection"!==r.message){if(r.message.allParticipants)return-1===r.message.allParticipants.indexOf(r.sender)&&r.message.allParticipants.push(r.sender),void r.message.allParticipants.forEach((function(t){i[e.peers[t]?"renegotiatePeer":"createNewPeer"](t,{localPeerSdpConstraints:{OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},remotePeerSdpConstraints:{OfferToReceiveAudio:e.session.oneway?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.session.oneway?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo},isOneWay:!!e.session.oneway||"one-way"===e.direction,isDataOnly:n(e.session)})}));if(r.message.newParticipant){if(r.message.newParticipant==e.userid)return;if(e.peers[r.message.newParticipant])return;i.createNewPeer(r.message.newParticipant,r.message.userPreferences||{localPeerSdpConstraints:{OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},remotePeerSdpConstraints:{OfferToReceiveAudio:e.session.oneway?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.session.oneway?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo},isOneWay:!!e.session.oneway||"one-way"===e.direction,isDataOnly:n(e.session)})}else if(r.message.readyForOffer&&(e.attachStreams.length&&(e.waitingForLocalMedia=!1),e.waitingForLocalMedia))setTimeout((function(){t(r)}),1);else if(r.message.newParticipationRequest&&r.sender!==e.userid){e.peers[r.sender]&&e.deletePeer(r.sender);var d={extra:r.extra||{},localPeerSdpConstraints:r.message.remotePeerSdpConstraints||{OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},remotePeerSdpConstraints:r.message.localPeerSdpConstraints||{OfferToReceiveAudio:e.session.oneway?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.session.oneway?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo},isOneWay:void 0!==r.message.isOneWay?r.message.isOneWay:!!e.session.oneway||"one-way"===e.direction,isDataOnly:void 0!==r.message.isDataOnly?r.message.isDataOnly:n(e.session),dontGetRemoteStream:void 0!==r.message.isOneWay?r.message.isOneWay:!!e.session.oneway||"one-way"===e.direction,dontAttachLocalStream:!!r.message.dontGetRemoteStream,connectionDescription:r,successCallback:function(){}};e.onNewParticipant(r.sender,d)}else{if(r.message.changedUUID&&e.peers[r.message.oldUUID]&&(e.peers[r.message.newUUID]=e.peers[r.message.oldUUID],delete e.peers[r.message.oldUUID]),r.message.userLeft)return i.onUserLeft(r.sender),void(r.message.autoCloseEntireSession&&e.leave());i.addNegotiatedMessage(r.message,r.sender)}}else e.deletePeer(r.sender)}));var a=!1;e.socket.resetProps=function(){a=!1},e.socket.on("connect",(function(){a||(a=!0,e.enableLogs&&console.info("socket.io connection is opened."),setTimeout((function(){e.socket.emit("extra-data-updated",e.extra)}),1e3),t&&t(e.socket))})),e.socket.on("disconnect",(function(t){e.onSocketDisconnect(t)})),e.socket.on("error",(function(t){e.onSocketError(t)})),e.socket.on("user-disconnected",(function(t){t!==e.userid&&(e.onUserStatusChanged({userid:t,status:"offline",extra:e.peers[t]&&e.peers[t].extra||{}}),e.deletePeer(t))})),e.socket.on("user-connected",(function(t){t!==e.userid&&e.onUserStatusChanged({userid:t,status:"online",extra:e.peers[t]&&e.peers[t].extra||{}})})),e.socket.on("closed-entire-session",(function(t,n){e.leave(),e.onEntireSessionClosed({sessionid:t,userid:t,extra:n})})),e.socket.on("userid-already-taken",(function(t,n){e.onUserIdAlreadyTaken(t,n)})),e.socket.on("logs",(function(t){e.enableLogs&&console.debug("server-logs",t)})),e.socket.on("number-of-broadcast-viewers-updated",(function(t){e.onNumberOfBroadcastViewersUpdated(t)})),e.socket.on("set-isInitiator-true",(function(t){t==e.sessionid&&(e.isInitiator=!0)}))}function d(e){var t=this,n=["getAllParticipants","getLength","selectFirst","streams","send","forEach"];function r(){e.fbr=new FileBufferReader,e.fbr.onProgress=function(t){e.onFileProgress(t)},e.fbr.onBegin=function(t){e.onFileStart(t)},e.fbr.onEnd=function(t){e.onFileEnd(t)}}e.peers={getLength:function(){var e=0;for(var t in this)-1==n.indexOf(t)&&e++;return e},selectFirst:function(){var e;for(var t in this)-1==n.indexOf(t)&&(e=this[t]);return e},getAllParticipants:function(e){var t=[];for(var r in this)-1==n.indexOf(r)&&r!=e&&t.push(r);return t},forEach:function(t){this.getAllParticipants().forEach((function(n){t(e.peers[n])}))},send:function(n,r){var i=this;if(!h(n.size)&&!h(n.type)){if(e.enableFileSharing)return void t.shareFile(n,r);"string"!=typeof n&&(n=JSON.stringify(n))}if("text"===n.type||n instanceof ArrayBuffer||n instanceof DataView){if("text"===n.type&&(n=JSON.stringify(n)),r){var o=e.peers[r];if(o)return o.channels.length?void o.channels.forEach((function(e){e.send(n)})):(e.peers[r].createDataChannel(),e.renegotiate(r),void setTimeout((function(){i.send(n,r)}),3e3))}this.getAllParticipants().forEach((function(t){if(!i[t].channels.length)return e.peers[t].createDataChannel(),e.renegotiate(t),void setTimeout((function(){i[t].channels.forEach((function(e){e.send(n)}))}),3e3);i[t].channels.forEach((function(e){e.send(n)}))}))}else _.send({text:n,channel:this,connection:e,remoteUserId:r})}},this.uuid=e.userid,this.getLocalConfig=function(n,i,o){return o||(o={}),{streamsToShare:o.streamsToShare||{},rtcMultiConnection:e,connectionDescription:o.connectionDescription,userid:i,localPeerSdpConstraints:o.localPeerSdpConstraints,remotePeerSdpConstraints:o.remotePeerSdpConstraints,dontGetRemoteStream:!!o.dontGetRemoteStream,dontAttachLocalStream:!!o.dontAttachLocalStream,renegotiatingPeer:!!o.renegotiatingPeer,peerRef:o.peerRef,channels:o.channels||[],onLocalSdp:function(e){t.onNegotiationNeeded(e,i)},onLocalCandidate:function(n){(n=x.processCandidates(e,n))&&t.onNegotiationNeeded(n,i)},remoteSdp:n,onDataChannelMessage:function(n){if(!e.fbr&&e.enableFileSharing&&r(),"string"!=typeof n&&e.enableFileSharing){var o=this;n instanceof ArrayBuffer||n instanceof DataView?e.fbr.convertToObject(n,(function(e){o.onDataChannelMessage(e)})):n.readyForNextChunk?e.fbr.getNextChunk(n,(function(t,n){e.peers[i].channels.forEach((function(e){e.send(t)}))}),i):n.chunkMissing?e.fbr.chunkMissing(n):e.fbr.addChunk(n,(function(t){e.peers[i].peer.channel.send(t)}))}else t.onDataChannelMessage(n,i)},onDataChannelError:function(e){t.onDataChannelError(e,i)},onDataChannelOpened:function(e){t.onDataChannelOpened(e,i)},onDataChannelClosed:function(e){t.onDataChannelClosed(e,i)},onRemoteStream:function(n){e.peers[i]&&e.peers[i].streams.push(n),t.onGettingRemoteMedia(n,i)},onRemoteStreamRemoved:function(e){t.onRemovingRemoteMedia(e,i)},onPeerStateChanged:function(e){t.onPeerStateChanged(e),"new"===e.iceConnectionState&&t.onNegotiationStarted(i,e),"connected"===e.iceConnectionState&&t.onNegotiationCompleted(i,e),-1!==e.iceConnectionState.search(/closed|failed/gi)&&(t.onUserLeft(i),t.disconnectWith(i))}}},this.createNewPeer=function(t,n){if(!(e.maxParticipantsAllowed<=e.getAllParticipants().length)){if(n=n||{},e.isInitiator&&e.session.audio&&"two-way"===e.session.audio&&!n.streamsToShare&&(n.isOneWay=!1,n.isDataOnly=!1,n.session=e.session),!n.isOneWay&&!n.isDataOnly)return n.isOneWay=!0,void this.onNegotiationNeeded({enableMedia:!0,userPreferences:n},t);n=e.setUserPreferences(n,t);var r=this.getLocalConfig(null,t,n);e.peers[t]=new M(r)}},this.createAnsweringPeer=function(t,n,r){r=e.setUserPreferences(r||{},n);var i=this.getLocalConfig(t,n,r);e.peers[n]=new M(i)},this.renegotiatePeer=function(t,n,r){if(e.peers[t]){n||(n={}),n.renegotiatingPeer=!0,n.peerRef=e.peers[t].peer,n.channels=e.peers[t].channels;var i=this.getLocalConfig(r,t,n);e.peers[t]=new M(i)}else e.enableLogs&&console.error("Peer ("+t+") does not exist. Renegotiation skipped.")},this.replaceTrack=function(t,n,r){if(!e.peers[n])throw"This peer ("+n+") does not exist.";var i=e.peers[n].peer;i.getSenders&&"function"==typeof i.getSenders&&i.getSenders().length?i.getSenders().forEach((function(i){r&&"video"===i.track.kind&&(e.peers[n].peer.lastVideoTrack=i.track,i.replaceTrack(t)),r||"audio"!==i.track.kind||(e.peers[n].peer.lastAudioTrack=i.track,i.replaceTrack(t))})):(console.warn("RTPSender.replaceTrack is NOT supported."),this.renegotiatePeer(n))},this.onNegotiationNeeded=function(e,t){},this.addNegotiatedMessage=function(n,r){if(n.type&&n.sdp)return"answer"==n.type&&e.peers[r]&&e.peers[r].addRemoteSdp(n),"offer"==n.type&&(n.renegotiatingPeer?this.renegotiatePeer(r,null,n):this.createAnsweringPeer(n,r)),void(e.enableLogs&&console.log("Remote peer's sdp:",n.sdp));if(n.candidate)return e.peers[r]&&e.peers[r].addRemoteCandidate(n),void(e.enableLogs&&console.log("Remote peer's candidate pairs:",n.candidate));if(n.enableMedia){e.session=n.userPreferences.session||e.session,e.session.oneway&&e.attachStreams.length&&(e.attachStreams=[]),n.userPreferences.isDataOnly&&e.attachStreams.length&&(e.attachStreams.length=[]);var i={};e.attachStreams.forEach((function(e){i[e.streamid]={isAudio:!!e.isAudio,isVideo:!!e.isVideo,isScreen:!!e.isScreen}})),n.userPreferences.streamsToShare=i,t.onNegotiationNeeded({readyForOffer:!0,userPreferences:n.userPreferences},r)}n.readyForOffer&&e.onReadyForOffer(r,n.userPreferences)},this.onGettingRemoteMedia=function(e,t){},this.onRemovingRemoteMedia=function(e,t){},this.onGettingLocalMedia=function(e){},this.onLocalMediaError=function(t,n){e.onMediaError(t,n)},this.shareFile=function(t,n){r(),e.fbr.readAsArrayBuffer(t,(function(t){var r=e.getAllParticipants();n&&(r=[n]),r.forEach((function(n){e.fbr.getNextChunk(t,(function(t){e.peers[n].channels.forEach((function(e){e.send(t)}))}),n)}))}),{userid:e.userid,chunkSize:"Firefox"===DetectRTC.browser.name?15e3:e.chunkSize||0})};var i=new N(e);this.onDataChannelMessage=function(t,n){i.receive(JSON.parse(t),n,e.peers[n]?e.peers[n].extra:{})},this.onDataChannelClosed=function(t,n){t.userid=n,t.extra=e.peers[n]?e.peers[n].extra:{},e.onclose(t)},this.onDataChannelError=function(t,n){t.userid=n,event.extra=e.peers[n]?e.peers[n].extra:{},e.onerror(t)},this.onDataChannelOpened=function(t,n){e.peers[n].channels.length?e.peers[n].channels=[t]:(e.peers[n].channels.push(t),e.onopen({userid:n,extra:e.peers[n]?e.peers[n].extra:{},channel:t}))},this.onPeerStateChanged=function(t){e.onPeerStateChanged(t)},this.onNegotiationStarted=function(e,t){},this.onNegotiationCompleted=function(e,t){},this.getRemoteStreams=function(t){return t=t||e.peers.getAllParticipants()[0],e.peers[t]?e.peers[t].streams:[]}}function u(e,t,n){if("undefined"!=typeof CustomEvent){var r=new CustomEvent(t,{arguments:n,__exposedProps__:n});e.dispatchEvent(r)}}function p(e,t){t.stream&&t.stream&&t.stream.addEventListener&&(t.stream.addEventListener("mute",(function(n){(n=e.streamEvents[t.streamid]).session={audio:"audio"===n.muteType,video:"video"===n.muteType},e.onmute(n)}),!1),t.stream.addEventListener("unmute",(function(n){(n=e.streamEvents[t.streamid]).session={audio:"audio"===n.unmuteType,video:"video"===n.unmuteType},e.onunmute(n)}),!1))}function l(){if(window.crypto&&window.crypto.getRandomValues&&-1===navigator.userAgent.indexOf("Safari")){for(var e=window.crypto.getRandomValues(new Uint32Array(3)),t="",n=0,r=e.length;n<r;n++)t+=e[n].toString(36);return t}return(Math.random()*(new Date).getTime()).toString(36).replace(/\./g,"")}function f(e,t,n){if(n.autoCreateMediaElement){var r=!1;S(e,"video").length||e.isVideo||e.isScreen||(r=!0),"Firefox"===DetectRTC.browser.name&&(n.session.video||n.session.screen)&&(r=!1);var i=document.createElement(r?"audio":"video");if(i.srcObject=e,i.setAttribute("autoplay",!0),i.setAttribute("playsinline",!0),i.setAttribute("controls",!0),i.setAttribute("muted",!1),i.setAttribute("volume",1),"Firefox"===DetectRTC.browser.name){var o="ended";"oninactive"in i&&(o="inactive"),i.addEventListener(o,(function(){if(currentUserMediaRequest.remove(e.idInstance),"local"===e.type){o="ended","oninactive"in e&&(o="inactive"),A.onSyncNeeded(e.streamid,o),n.attachStreams.forEach((function(t,r){e.streamid===t.streamid&&delete n.attachStreams[r]}));var t=[];n.attachStreams.forEach((function(e){e&&t.push(e)})),n.attachStreams=t;var r=n.streamEvents[e.streamid];if(r)return void n.onstreamended(r);this.parentNode&&this.parentNode.removeChild(this)}}),!1)}var a=i.play();if(void 0!==a){var s=!1;setTimeout((function(){s||(s=!0,t(i))}),1e3),a.then((function(){s||(s=!0,t(i))})).catch((function(e){s||(s=!0,t(i))}))}else t(i)}else t({})}function m(e,t){window.removeEventListener(e,t),window.addEventListener(e,t,!1)}function v(e){var t=[];return e.forEach((function(e){e&&t.push(e)})),t}function g(e){return!e.audio&&!e.video&&!e.screen&&e.data}function h(e){return void 0===e}(s=void 0!==n?n:null)&&"undefined"==typeof window&&void 0!==n&&(n.navigator={userAgent:"Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45",getUserMedia:function(){}},n.console||(n.console={}),void 0===n.console.debug&&(n.console.debug=n.console.info=n.console.error=n.console.log=n.console.log||function(){console.log(arguments)}),"undefined"==typeof document&&(s.document={},document.createElement=document.captureStream=document.mozCaptureStream=function(){var e={getContext:function(){return e},play:function(){},pause:function(){},drawImage:function(){},toDataURL:function(){return""}};return e},document.addEventListener=document.removeEventListener=s.addEventListener=s.removeEventListener=function(){},s.HTMLVideoElement=s.HTMLMediaElement=function(){}),"undefined"==typeof io&&(s.io=function(){return{on:function(e,t){t=t||function(){},"connect"===e&&t()},emit:function(e,t,n){n=n||function(){},"open-room"!==e&&"join-room"!==e||n(!0,t.sessionid,null)}}}),"undefined"==typeof location&&(s.location={protocol:"file:",href:"",hash:"",origin:"self"}),"undefined"==typeof screen&&(s.screen={width:0,height:0}),"undefined"==typeof URL&&(s.URL={createObjectURL:function(){return""},revokeObjectURL:function(){return""}}),s.window=n),function(){var o="Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45";if(T="object"==typeof r&&"object"==typeof r.versions&&r.versions.node&&!r.browser){var a=r.versions.node.toString().replace("v","");o="Nodejs/"+a+" (NodeOS) AppleWebKit/"+a+" (KHTML, like Gecko) Nodejs/"+a+" Nodejs/"+a}!function(e){"undefined"==typeof window&&("undefined"==typeof window&&void 0!==n&&(n.navigator={userAgent:o,getUserMedia:function(){}},e.window=n),"undefined"==typeof location&&(e.location={protocol:"file:",href:"",hash:""}),"undefined"==typeof screen&&(e.screen={width:0,height:0}))}(void 0!==n?n:window);var s=window.navigator;void 0!==s?(void 0!==s.webkitGetUserMedia&&(s.getUserMedia=s.webkitGetUserMedia),void 0!==s.mozGetUserMedia&&(s.getUserMedia=s.mozGetUserMedia)):s={getUserMedia:function(){},userAgent:o};var c=!!/Android|webOS|iPhone|iPad|iPod|BB10|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(s.userAgent||""),d=!(-1===s.userAgent.indexOf("Edge")||!s.msSaveOrOpenBlob&&!s.msSaveBlob),u=!!window.opera||s.userAgent.indexOf(" OPR/")>=0,p=void 0!==window.InstallTrigger,l=/^((?!chrome|android).)*safari/i.test(s.userAgent),f=!!window.chrome&&!u,m="undefined"!=typeof document&&!!document.documentMode&&!d;function v(e,t){var n=0,r=!1,i=window.setInterval((function(){e()&&(window.clearInterval(i),t(r)),n++>50&&(window.clearInterval(i),t(r=!0))}),10)}var g={Android:function(){return s.userAgent.match(/Android/i)},BlackBerry:function(){return s.userAgent.match(/BlackBerry|BB10/i)},iOS:function(){return s.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return s.userAgent.match(/Opera Mini/i)},Windows:function(){return s.userAgent.match(/IEMobile/i)},any:function(){return g.Android()||g.BlackBerry()||g.iOS()||g.Opera()||g.Windows()},getOsName:function(){var e="Unknown OS";return g.Android()&&(e="Android"),g.BlackBerry()&&(e="BlackBerry"),g.iOS()&&(e="iOS"),g.Opera()&&(e="Opera Mini"),g.Windows()&&(e="Windows"),e}};var h="Unknown OS",C="Unknown OS Version";var w,S,y=function(){for(var e,t=s.appVersion,n=s.userAgent,r="-",i=[{s:"Windows 10",r:/(Windows 10.0|Windows NT 10.0)/},{s:"Windows 8.1",r:/(Windows 8.1|Windows NT 6.3)/},{s:"Windows 8",r:/(Windows 8|Windows NT 6.2)/},{s:"Windows 7",r:/(Windows 7|Windows NT 6.1)/},{s:"Windows Vista",r:/Windows NT 6.0/},{s:"Windows Server 2003",r:/Windows NT 5.2/},{s:"Windows XP",r:/(Windows NT 5.1|Windows XP)/},{s:"Windows 2000",r:/(Windows NT 5.0|Windows 2000)/},{s:"Windows ME",r:/(Win 9x 4.90|Windows ME)/},{s:"Windows 98",r:/(Windows 98|Win98)/},{s:"Windows 95",r:/(Windows 95|Win95|Windows_95)/},{s:"Windows NT 4.0",r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},{s:"Windows CE",r:/Windows CE/},{s:"Windows 3.11",r:/Win16/},{s:"Android",r:/Android/},{s:"Open BSD",r:/OpenBSD/},{s:"Sun OS",r:/SunOS/},{s:"Linux",r:/(Linux|X11)/},{s:"iOS",r:/(iPhone|iPad|iPod)/},{s:"Mac OS X",r:/Mac OS X/},{s:"Mac OS",r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},{s:"QNX",r:/QNX/},{s:"UNIX",r:/UNIX/},{s:"BeOS",r:/BeOS/},{s:"OS/2",r:/OS\/2/},{s:"Search Bot",r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/}],o=0;e=i[o];o++)if(e.r.test(n)){r=e.s;break}var a="-";switch(/Windows/.test(r)&&(/Windows (.*)/.test(r)&&(a=/Windows (.*)/.exec(r)[1]),r="Windows"),r){case"Mac OS X":/Mac OS X (10[\.\_\d]+)/.test(n)&&(a=/Mac OS X (10[\.\_\d]+)/.exec(n)[1]);break;case"Android":/Android ([\.\_\d]+)/.test(n)&&(a=/Android ([\.\_\d]+)/.exec(n)[1]);break;case"iOS":/OS (\d+)_(\d+)_?(\d+)?/.test(n)&&(a=(a=/OS (\d+)_(\d+)_?(\d+)?/.exec(t))[1]+"."+a[2]+"."+(0|a[3]))}return{osName:r,osVersion:a}}();y&&y.osName&&"-"!=y.osName?(h=y.osName,C=y.osVersion):g.any()&&"Android"==(h=g.getOsName())&&(C=!!(S=(w=(w||s.userAgent).toLowerCase()).match(/android\s([0-9\.]*)/))&&S[1]);var T="object"==typeof r&&"object"==typeof r.versions&&r.versions.node;"Unknown OS"===h&&T&&(h="Nodejs",C=r.versions.node.toString().replace("v",""));var b=!1,R=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){"undefined"!=typeof document&&"function"==typeof document.createElement&&(!b&&e in document.createElement("canvas")&&(b=!0),!R&&e in document.createElement("video")&&(R=!0))}));var P=/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/,E=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,k=/[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}/;var M=[],O=[],x=[],I=[];s.mediaDevices&&s.mediaDevices.enumerateDevices&&(s.enumerateDevices=function(e){var t=s.mediaDevices.enumerateDevices();t&&t.then?s.mediaDevices.enumerateDevices().then(e).catch((function(){e([])})):e([])});var L=!1;(void 0!==D&&"getSources"in D||s.mediaDevices&&s.mediaDevices.enumerateDevices)&&(L=!0);var A=!1,N=!1,_=!1,U=!1,W=!1;function j(e){if(L)if(!s.enumerateDevices&&window.MediaStreamTrack&&window.MediaStreamTrack.getSources&&(s.enumerateDevices=window.MediaStreamTrack.getSources.bind(window.MediaStreamTrack)),!s.enumerateDevices&&s.enumerateDevices&&(s.enumerateDevices=s.enumerateDevices.bind(s)),s.enumerateDevices){M=[],O=[],x=[],I=[],A=!1,N=!1,_=!1,U=!1,W=!1;var t={};s.enumerateDevices((function(n){n.forEach((function(e){var n={};for(var r in e)try{"function"!=typeof e[r]&&(n[r]=e[r])}catch(e){}t[n.deviceId+n.label+n.kind]||("audio"===n.kind&&(n.kind="audioinput"),"video"===n.kind&&(n.kind="videoinput"),n.deviceId||(n.deviceId=n.id),n.id||(n.id=n.deviceId),n.label?("videoinput"!==n.kind||W||(W=!0),"audioinput"!==n.kind||U||(U=!0)):(n.isCustomLabel=!0,"videoinput"===n.kind?n.label="Camera "+(I.length+1):"audioinput"===n.kind?n.label="Microphone "+(O.length+1):"audiooutput"===n.kind?n.label="Speaker "+(x.length+1):n.label="Please invoke getUserMedia once.",void 0!==G&&G.browser.isChrome&&G.browser.version>=46&&!/^(https:|chrome-extension:)$/g.test(location.protocol||"")&&"undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(n.label="HTTPs is required to get label of this "+n.kind+" device.")),"audioinput"===n.kind&&(A=!0,-1===O.indexOf(n)&&O.push(n)),"audiooutput"===n.kind&&(N=!0,-1===x.indexOf(n)&&x.push(n)),"videoinput"===n.kind&&(_=!0,-1===I.indexOf(n)&&I.push(n)),M.push(n),t[n.deviceId+n.label+n.kind]=n)})),void 0!==G&&(G.MediaDevices=M,G.hasMicrophone=A,G.hasSpeakers=N,G.hasWebcam=_,G.isWebsiteHasWebcamPermissions=W,G.isWebsiteHasMicrophonePermissions=U,G.audioInputDevices=O,G.audioOutputDevices=x,G.videoInputDevices=I),e&&e()}))}else e&&e();else e&&e()}var G=window.DetectRTC||{};G.browser=function(){s.appVersion;var e,t,n,r=s.userAgent,i=s.appName,o=""+parseFloat(s.appVersion),a=parseInt(s.appVersion,10);if(l&&!f&&-1!==r.indexOf("CriOS")&&(l=!1,f=!0),u){i="Opera";try{a=(o=s.userAgent.split("OPR/")[1].split(" ")[0]).split(".")[0]}catch(e){o="0.0.0.0",a=0}}else m?((t=r.indexOf("rv:"))>0?o=r.substring(t+3):(t=r.indexOf("MSIE"),o=r.substring(t+5)),i="IE"):f?(t=r.indexOf("Chrome"),i="Chrome",o=r.substring(t+7)):l?(t=r.indexOf("Safari"),i="Safari",o=r.substring(t+7),-1!==(t=r.indexOf("Version"))&&(o=r.substring(t+8)),-1!==s.userAgent.indexOf("Version/")&&(o=s.userAgent.split("Version/")[1].split(" ")[0])):p?(t=r.indexOf("Firefox"),i="Firefox",o=r.substring(t+8)):(e=r.lastIndexOf(" ")+1)<(t=r.lastIndexOf("/"))&&(i=r.substring(e,t),o=r.substring(t+1),i.toLowerCase()===i.toUpperCase()&&(i=s.appName));return d&&(i="Edge",o=s.userAgent.split("Edge/")[1]),-1!==(n=o.search(/[; \)]/))&&(o=o.substring(0,n)),a=parseInt(""+o,10),isNaN(a)&&(o=""+parseFloat(s.appVersion),a=parseInt(s.appVersion,10)),{fullVersion:o,version:a,name:i,isPrivateBrowsing:!1}}(),function(e){var t;try{if(window.webkitRequestFileSystem)window.webkitRequestFileSystem(window.TEMPORARY,1,(function(){t=!1}),(function(e){t=!0}));else if(window.indexedDB&&/Firefox/.test(window.navigator.userAgent)){var n;try{(n=window.indexedDB.open("test")).onerror=function(){return!0}}catch(e){t=!0}void 0===t&&v((function(){return"done"===n.readyState}),(function(e){e||(t=!n.result)}))}else if(function(e){var t=e.toLowerCase();if(0===t.indexOf("msie")&&0===t.indexOf("trident"))return!1;var n=/(?:msie|rv:)\s?([\d\.]+)/.exec(t);return!!(n&&parseInt(n[1],10)>=10)}(window.navigator.userAgent)){t=!1;try{window.indexedDB||(t=!0)}catch(e){t=!0}}else if(window.localStorage&&/Safari/.test(window.navigator.userAgent)){try{window.localStorage.setItem("test",1)}catch(e){t=!0}void 0===t&&(t=!1,window.localStorage.removeItem("test"))}}catch(e){t=!1}v((function(){return void 0!==t}),(function(n){e(t)}))}((function(e){G.browser.isPrivateBrowsing=!!e})),G.browser["is"+G.browser.name]=!0,G.osName=h,G.osVersion=C;"object"==typeof r&&"object"==typeof r.versions&&r.versions["node-webkit"];var B=!1;["RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","RTCIceGatherer"].forEach((function(e){B||e in window&&(B=!0)})),G.isWebRTCSupported=B,G.isORTCSupported="undefined"!=typeof RTCIceGatherer;var V=!1;((G.browser.isChrome&&G.browser.version>=35||G.browser.isFirefox&&G.browser.version>=34||G.browser.isEdge&&G.browser.version>=17||"Android"===G.osName&&G.browser.isChrome)&&(V=!0),/^(https:|chrome-extension:)$/g.test(location.protocol||""))||("undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(G.browser.isChrome||G.browser.isEdge||G.browser.isOpera)||G.browser.isFirefox)&&(V=!1);G.isScreenCapturingSupported=V;var F={isSupported:!1,isCreateMediaStreamSourceSupported:!1};["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"].forEach((function(e){F.isSupported||e in window&&(F.isSupported=!0,window[e]&&"createMediaStreamSource"in window[e].prototype&&(F.isCreateMediaStreamSourceSupported=!0))})),G.isAudioContextSupported=F.isSupported,G.isCreateMediaStreamSourceSupported=F.isCreateMediaStreamSourceSupported;var q=!1;G.browser.isChrome&&G.browser.version>31&&(q=!0),G.isRtpDataChannelsSupported=q;var z=!1;(G.browser.isFirefox&&G.browser.version>28||G.browser.isChrome&&G.browser.version>25||G.browser.isOpera&&G.browser.version>=11)&&(z=!0),G.isSctpDataChannelsSupported=z,G.isMobileDevice=c;var H=!1;(s.getUserMedia||s.mediaDevices&&s.mediaDevices.getUserMedia)&&(H=!0),G.browser.isChrome&&G.browser.version>=46&&!/^(https:|chrome-extension:)$/g.test(location.protocol||"")&&"undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(H="Requires HTTPs"),"Nodejs"===G.osName&&(H=!1),G.isGetUserMediaSupported=H;var J,K,X,Y="";screen.width&&(Y+=(screen.width?screen.width:"")+" x "+(screen.height?screen.height:""));G.displayResolution=Y,G.displayAspectRatio=(J=screen.width,K=screen.height,X=function e(t,n){return 0==n?t:e(n,t%n)}(J,K),J/X/(K/X)).toFixed(2),G.isCanvasSupportsStreamCapturing=b,G.isVideoSupportsStreamCapturing=R,"Chrome"==G.browser.name&&G.browser.version>=53&&(G.isCanvasSupportsStreamCapturing||(G.isCanvasSupportsStreamCapturing="Requires chrome flag: enable-experimental-web-platform-features"),G.isVideoSupportsStreamCapturing||(G.isVideoSupportsStreamCapturing="Requires chrome flag: enable-experimental-web-platform-features")),G.DetectLocalIPAddress=function(e,t){if(G.isWebRTCSupported){var n=!0,r=!0;!function(e,t){if("undefined"==typeof document||"function"!=typeof document.getElementById)return;var n={},r=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection;if(!r){var i=document.getElementById("iframe");if(!i)return;var o=i.contentWindow;r=o.RTCPeerConnection||o.mozRTCPeerConnection||o.webkitRTCPeerConnection}if(!r)return;var a=null;"Chrome"===G.browser&&G.browser.version<58&&(a={optional:[{RtpDataChannels:!0}]});var s=new r({iceServers:[{urls:"stun:stun.l.google.com:19302"}]},a);t&&(s.addStream?s.addStream(t):s.addTrack&&t.getTracks()[0]&&s.addTrack(t.getTracks()[0],t));function c(t){if(t){var r=E.exec(t);if(r){var i=r[1],o=t.match(P);void 0===n[i]&&e(i,o,!0),n[i]=!0}}else e()}if(s.onicecandidate=function(e){e.candidate&&e.candidate.candidate?c(e.candidate.candidate):c()},!t)try{s.createDataChannel("sctp",{})}catch(e){}G.isPromisesSupported?s.createOffer().then((function(e){s.setLocalDescription(e).then(d)})):s.createOffer((function(e){s.setLocalDescription(e,d,(function(){}))}),(function(){}));function d(){s.localDescription.sdp.split("\n").forEach((function(e){e&&0===e.indexOf("a=candidate:")&&c(e)}))}}((function(t){t?t.match(P)?e("Local: "+t,n=!1,r):t.match(k)?e("Public: "+t,n,r=!1):e("Public: "+t,n,r):e()}),t)}},G.isWebSocketsSupported="WebSocket"in window&&2===window.WebSocket.CLOSING,G.isWebSocketsBlocked=!G.isWebSocketsSupported,"Nodejs"===G.osName&&(G.isWebSocketsSupported=!0,G.isWebSocketsBlocked=!1),G.checkWebSocketsSupport=function(e){e=e||function(){};try{var t,n=new WebSocket("wss://echo.websocket.org:443/");n.onopen=function(){G.isWebSocketsBlocked=!1,t=(new Date).getTime(),n.send("ping")},n.onmessage=function(){G.WebsocketLatency=(new Date).getTime()-t+"ms",e(),n.close(),n=null},n.onerror=function(){G.isWebSocketsBlocked=!0,e()}}catch(t){G.isWebSocketsBlocked=!0,e()}},G.load=function(e){j(e=e||function(){})},G.MediaDevices=void 0!==M?M:[],G.hasMicrophone=A,G.hasSpeakers=N,G.hasWebcam=_,G.isWebsiteHasWebcamPermissions=W,G.isWebsiteHasMicrophonePermissions=U,G.audioInputDevices=O,G.audioOutputDevices=x,G.videoInputDevices=I;var $=!1;"undefined"!=typeof document&&"function"==typeof document.createElement&&"setSinkId"in document.createElement("video")&&($=!0),G.isSetSinkIdSupported=$;var Q=!1;G.browser.isFirefox&&"undefined"!=typeof mozRTCPeerConnection?"getSenders"in mozRTCPeerConnection.prototype&&(Q=!0):G.browser.isChrome&&"undefined"!=typeof webkitRTCPeerConnection&&"getSenders"in webkitRTCPeerConnection.prototype&&(Q=!0),G.isRTPSenderReplaceTracksSupported=Q;var Z=!1;G.browser.isFirefox&&G.browser.version>38&&(Z=!0),G.isRemoteStreamProcessingSupported=Z;var ee=!1;void 0!==D&&"applyConstraints"in D.prototype&&(ee=!0),G.isApplyConstraintsSupported=ee;var te=!1;G.browser.isFirefox&&G.browser.version>=43&&(te=!0),G.isMultiMonitorScreenCapturingSupported=te,G.isPromisesSupported=!!("Promise"in window),G.version="1.3.9",void 0===G&&(window.DetectRTC={});var ne=window.MediaStream;void 0===ne&&"undefined"!=typeof webkitMediaStream&&(ne=webkitMediaStream),G.MediaStream=void 0!==ne&&"function"==typeof ne&&Object.keys(ne.prototype),G.MediaStreamTrack=void 0!==D&&Object.keys(D.prototype);var re=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection;G.RTCPeerConnection=void 0!==re&&Object.keys(re.prototype),window.DetectRTC=G,e.exports=G,void 0===(i=function(){return G}.apply(t,[]))||(e.exports=i)}(),"undefined"!=typeof cordova&&(DetectRTC.isMobileDevice=!0,DetectRTC.browser.name="Chrome"),navigator&&navigator.userAgent&&-1!==navigator.userAgent.indexOf("Crosswalk")&&(DetectRTC.isMobileDevice=!0,DetectRTC.browser.name="Chrome"),window.addEventListener||(window.addEventListener=function(e,t,n){e.attachEvent&&e.attachEvent("on"+t,n)}),window.attachEventListener=function(e,t,n,r){e.addEventListener(t,n,r)};var C=window.MediaStream;function w(e,t){return(!e.session.audio||"two-way"!==e.session.audio)&&("Firefox"===DetectRTC.browser.name&&!1!==t||!("Chrome"!==DetectRTC.browser.name||DetectRTC.browser.version<50)&&(!0===typeof t||!(void 0!==t||!e.session.audio||!e.session.screen||e.session.video)&&(t=!0,!0)))}function S(e,t){return e&&e.getTracks?e.getTracks().filter((function(e){return e.kind===(t||"audio")})):[]}function y(){var e=!1;try{if("undefined"==typeof RTCRtpTransceiver)return!1;if(!("currentDirection"in RTCRtpTransceiver.prototype))return!1;var t=new b;try{t.addTransceiver("audio"),e=!0}catch(e){}t.close()}catch(t){e=!1}return e&&function(){var e=!1;try{var t=new b({sdpSemantics:"unified-plan"});try{var n=t.getConfiguration();e="unified-plan"==n.sdpSemantics||(n.sdpSemantics,!1)}catch(t){e=!1}}catch(t){e=!1}return e}()}function T(){if("undefined"!=typeof cordova&&void 0!==cordova.plugins&&void 0!==cordova.plugins.iosrtc){var e=cordova.plugins.iosrtc;window.webkitRTCPeerConnection=e.RTCPeerConnection,window.RTCSessionDescription=e.RTCSessionDescription,window.RTCIceCandidate=e.RTCIceCandidate,window.MediaStream=e.MediaStream,window.MediaStreamTrack=e.MediaStreamTrack,navigator.getUserMedia=navigator.webkitGetUserMedia=e.getUserMedia,e.debug.enable("iosrtc*"),"function"==typeof e.selectAudioOutput&&e.selectAudioOutput(window.iOSDefaultAudioOutputDevice||"speaker"),e.registerGlobals()}}void 0===C&&"undefined"!=typeof webkitMediaStream&&(C=webkitMediaStream),void 0!==C&&("stop"in C.prototype||(C.prototype.stop=function(){this.getTracks().forEach((function(e){e.stop()}))})),window.iOSDefaultAudioOutputDevice=window.iOSDefaultAudioOutputDevice||"speaker",document.addEventListener("deviceready",T,!1),T();var b,R={};function P(e){return{OfferToReceiveAudio:!!e.OfferToReceiveAudio,OfferToReceiveVideo:!!e.OfferToReceiveVideo}}void 0!==window.RTCPeerConnection?b=window.RTCPeerConnection:"undefined"!=typeof mozRTCPeerConnection?b=mozRTCPeerConnection:"undefined"!=typeof webkitRTCPeerConnection&&(b=webkitRTCPeerConnection);var E=window.RTCSessionDescription||window.mozRTCSessionDescription,k=window.RTCIceCandidate||window.mozRTCIceCandidate,D=window.MediaStreamTrack;function M(e){if(void 0!==window.RTCPeerConnection?b=window.RTCPeerConnection:"undefined"!=typeof mozRTCPeerConnection?b=mozRTCPeerConnection:"undefined"!=typeof webkitRTCPeerConnection&&(b=webkitRTCPeerConnection),E=window.RTCSessionDescription||window.mozRTCSessionDescription,k=window.RTCIceCandidate||window.mozRTCIceCandidate,D=window.MediaStreamTrack,!b)throw"WebRTC 1.0 (RTCPeerConnection) API are NOT available in this browser.";var t=e.rtcMultiConnection;this.extra=e.remoteSdp?e.remoteSdp.extra:t.extra,this.userid=e.userid,this.streams=[],this.channels=e.channels||[],this.connectionDescription=e.connectionDescription,this.addStream=function(e){t.addStream(e,n.userid)},this.removeStream=function(e){t.removeStream(e,n.userid)};var n=this;e.remoteSdp&&(this.connectionDescription=e.remoteSdp.connectionDescription);var r,i={};R.sdpConstraints=P({OfferToReceiveAudio:!0,OfferToReceiveVideo:!0});var o=!!e.renegotiatingPeer;e.remoteSdp&&(o=!!e.remoteSdp.renegotiatingPeer);var a=[];if(t.attachStreams.forEach((function(e){e&&a.push(e)})),o)r=e.peerRef;else{var s="all";(t.candidates.turn||t.candidates.relay)&&(t.candidates.stun||t.candidates.reflexive||t.candidates.host||(s="relay"));try{var c={iceServers:t.iceServers,iceTransportPolicy:t.iceTransportPolicy||s};void 0!==t.iceCandidatePoolSize&&(c.iceCandidatePoolSize=t.iceCandidatePoolSize),void 0!==t.bundlePolicy&&(c.bundlePolicy=t.bundlePolicy),void 0!==t.rtcpMuxPolicy&&(c.rtcpMuxPolicy=t.rtcpMuxPolicy),t.sdpSemantics&&(c.sdpSemantics=t.sdpSemantics||"unified-plan"),t.iceServers&&t.iceServers.length||(c=null,t.optionalArgument=null),r=new b(c,t.optionalArgument)}catch(e){try{c={iceServers:t.iceServers};r=new b(c)}catch(e){r=new b}}}!r.getRemoteStreams&&r.getReceivers&&(r.getRemoteStreams=function(){var e=new C;return r.getReceivers().forEach((function(t){e.addTrack(t.track)})),[e]}),!r.getLocalStreams&&r.getSenders&&(r.getLocalStreams=function(){var e=new C;return r.getSenders().forEach((function(t){e.addTrack(t.track)})),[e]}),r.onicecandidate=function(i){if(i.candidate)t.trickleIce&&e.onLocalCandidate({candidate:i.candidate.candidate,sdpMid:i.candidate.sdpMid,sdpMLineIndex:i.candidate.sdpMLineIndex});else if(!t.trickleIce){var o=r.localDescription;e.onLocalSdp({type:o.type,sdp:o.sdp,remotePeerSdpConstraints:e.remotePeerSdpConstraints||!1,renegotiatingPeer:!!e.renegotiatingPeer||!1,connectionDescription:n.connectionDescription,dontGetRemoteStream:!!e.dontGetRemoteStream,extra:t?t.extra:{},streamsToShare:f})}},a.forEach((function(i){e.remoteSdp&&e.remoteSdp.remotePeerSdpConstraints&&e.remoteSdp.remotePeerSdpConstraints.dontGetRemoteStream||e.dontAttachLocalStream||(i=t.beforeAddingStream(i,n))&&(r.getLocalStreams().forEach((function(e){i&&e.id==i.id&&(i=null)})),i&&i.getTracks&&i.getTracks().forEach((function(e){try{r.addTrack(e,i)}catch(e){}})))})),r.oniceconnectionstatechange=r.onsignalingstatechange=function(){var i=n.extra;t.peers[n.userid]&&(i=t.peers[n.userid].extra||i),r&&(e.onPeerStateChanged({iceConnectionState:r.iceConnectionState,iceGatheringState:r.iceGatheringState,signalingState:r.signalingState,extra:i,userid:n.userid}),r&&r.iceConnectionState&&-1!==r.iceConnectionState.search(/closed|failed/gi)&&n.streams instanceof Array&&n.streams.forEach((function(e){var n=t.streamEvents[e.id]||{streamid:e.id,stream:e,type:"remote"};t.onstreamended(n)})))};var d={OfferToReceiveAudio:!!a.length,OfferToReceiveVideo:!!a.length};e.localPeerSdpConstraints&&(d=e.localPeerSdpConstraints),R.sdpConstraints=P(d);var u={};r.ontrack=function(t){if(t&&"track"===t.type)if(t.stream=t.streams[t.streams.length-1],t.stream.id||(t.stream.id=t.track.id),u[t.stream.id]&&"Safari"!==DetectRTC.browser.name)t.track&&(t.track.onended=function(){r&&r.onremovestream(t)});else{u[t.stream.id]=t.stream.id;var n={};e.remoteSdp&&e.remoteSdp.streamsToShare?n=e.remoteSdp.streamsToShare:e.streamsToShare&&(n=e.streamsToShare);var o=n[t.stream.id];o?(t.stream.isAudio=o.isAudio,t.stream.isVideo=o.isVideo,t.stream.isScreen=o.isScreen):(t.stream.isVideo=!!S(t.stream,"video").length,t.stream.isAudio=!t.stream.isVideo,t.stream.isScreen=!1),t.stream.streamid=t.stream.id,i[t.stream.id]=t.stream,e.onRemoteStream(t.stream),t.stream.getTracks().forEach((function(e){e.onended=function(){r&&r.onremovestream(t)}})),t.stream.onremovetrack=function(){r&&r.onremovestream(t)}}},r.onremovestream=function(t){t.stream.streamid=t.stream.id,i[t.stream.id]&&delete i[t.stream.id],e.onRemoteStreamRemoved(t.stream)},"function"!=typeof r.removeStream&&(r.removeStream=function(e){e.getTracks().forEach((function(t){r.removeTrack(t,e)}))}),this.addRemoteCandidate=function(e){r.addIceCandidate(new k(e))},this.addRemoteSdp=function(e,n){n=n||function(){},"Safari"!==DetectRTC.browser.name&&(e.sdp=t.processSdp(e.sdp)),r.setRemoteDescription(new E(e)).then(n,(function(r){t.enableLogs&&console.error("setRemoteDescription failed","\n",r,"\n",e.sdp),n()})).catch((function(r){t.enableLogs&&console.error("setRemoteDescription failed","\n",r,"\n",e.sdp),n()}))};var p=!0;function l(t){t.binaryType="arraybuffer",t.onmessage=function(t){e.onDataChannelMessage(t.data)},t.onopen=function(){e.onDataChannelOpened(t)},t.onerror=function(t){e.onDataChannelError(t)},t.onclose=function(t){e.onDataChannelClosed(t)},t.internalSend=t.send,t.send=function(e){"open"===t.readyState&&t.internalSend(e)},r.channel=t}e.remoteSdp&&(p=!1),this.createDataChannel=function(){l(r.createDataChannel("sctp",{}))},!0!==t.session.data||o||(p?this.createDataChannel():r.ondatachannel=function(e){l(e.channel)}),this.enableDisableVideoEncoding=function(e){var t;if(r.getSenders().forEach((function(e){t||"video"!==e.track.kind||(t=e)})),t&&t.getParameters){var n=t.getParameters();n.encodings[1]&&(n.encodings[1].active=!!e),n.encodings[2]&&(n.encodings[2].active=!!e),t.setParameters(n)}},e.remoteSdp&&(e.remoteSdp.remotePeerSdpConstraints&&(d=e.remoteSdp.remotePeerSdpConstraints),R.sdpConstraints=P(d),this.addRemoteSdp(e.remoteSdp,(function(){m("createAnswer")}))),"two-way"!=t.session.audio&&"two-way"!=t.session.video&&"two-way"!=t.session.screen||(R.sdpConstraints=P({OfferToReceiveAudio:"two-way"==t.session.audio||e.remoteSdp&&e.remoteSdp.remotePeerSdpConstraints&&e.remoteSdp.remotePeerSdpConstraints.OfferToReceiveAudio,OfferToReceiveVideo:"two-way"==t.session.video||"two-way"==t.session.screen||e.remoteSdp&&e.remoteSdp.remotePeerSdpConstraints&&e.remoteSdp.remotePeerSdpConstraints.OfferToReceiveAudio}));var f={};function m(i){r[i](R.sdpConstraints).then((function(i){"Safari"!==DetectRTC.browser.name&&(i.sdp=t.processSdp(i.sdp)),r.setLocalDescription(i).then((function(){t.trickleIce&&(e.onLocalSdp({type:i.type,sdp:i.sdp,remotePeerSdpConstraints:e.remotePeerSdpConstraints||!1,renegotiatingPeer:!!e.renegotiatingPeer||!1,connectionDescription:n.connectionDescription,dontGetRemoteStream:!!e.dontGetRemoteStream,extra:t?t.extra:{},streamsToShare:f}),t.onSettingLocalDescription(n))}),(function(e){t.enableLogs&&console.error("setLocalDescription error",e)}))}),(function(e){t.enableLogs&&console.error("sdp-error",e)}))}r.getLocalStreams().forEach((function(e){f[e.streamid]={isAudio:!!e.isAudio,isVideo:!!e.isVideo,isScreen:!!e.isScreen}})),p&&m("createOffer"),r.nativeClose=r.close,r.close=function(){if(r){try{r.nativeClose!==r.close&&r.nativeClose()}catch(e){}r=null,n.peer=null}},this.peer=r}var O=function(){function e(e,r){var i=n(e);return i.videoCodecNumbers?"vp8"===r&&i.vp8LineNumber===i.videoCodecNumbers[0]||"vp9"===r&&i.vp9LineNumber===i.videoCodecNumbers[0]||"h264"===r&&i.h264LineNumber===i.videoCodecNumbers[0]?e:e=t(e,r,i):e}function t(e,t,n,r){var i="";if("vp8"===t){if(!n.vp8LineNumber)return e;i=n.vp8LineNumber}if("vp9"===t){if(!n.vp9LineNumber)return e;i=n.vp9LineNumber}if("h264"===t){if(!n.h264LineNumber)return e;i=n.h264LineNumber}var o=n.videoCodecNumbersOriginal.split("SAVPF")[0]+"SAVPF ",a=[i];return r&&(a=[]),n.videoCodecNumbers.forEach((function(e){e!==i&&a.push(e)})),o+=a.join(" "),e=e.replace(n.videoCodecNumbersOriginal,o)}function n(e){var t={};return e.split("\n").forEach((function(e){0===e.indexOf("m=video")&&(t.videoCodecNumbers=[],e.split("SAVPF")[1].split(" ").forEach((function(n){(n=n.trim())&&n.length&&(t.videoCodecNumbers.push(n),t.videoCodecNumbersOriginal=e)}))),-1===e.indexOf("VP8/90000")||t.vp8LineNumber||(t.vp8LineNumber=e.replace("a=rtpmap:","").split(" ")[0]),-1===e.indexOf("VP9/90000")||t.vp9LineNumber||(t.vp9LineNumber=e.replace("a=rtpmap:","").split(" ")[0]),-1===e.indexOf("H264/90000")||t.h264LineNumber||(t.h264LineNumber=e.replace("a=rtpmap:","").split(" ")[0])})),t}function r(e,t,n){return function(e,t,n,r,i){for(var o=-1!==n?n:e.length,a=t;a<o;++a)if(0===e[a].indexOf(r)&&(!i||-1!==e[a].toLowerCase().indexOf(i.toLowerCase())))return a;return null}(e,0,-1,t,n)}function i(e){var t=new RegExp("a=rtpmap:(\\d+) \\w+\\/\\d+"),n=e.match(t);return n&&2===n.length?n[1]:null}return{removeVPX:function(e){var r=n(e);return e=t(e,"vp9",r,!0),e=t(e,"vp8",r,!0)},disableNACK:function(e){if(!e||"string"!=typeof e)throw"Invalid arguments.";return e=(e=(e=(e=e.replace("a=rtcp-fb:126 nack\r\n","")).replace("a=rtcp-fb:126 nack pli\r\n","a=rtcp-fb:126 pli\r\n")).replace("a=rtcp-fb:97 nack\r\n","")).replace("a=rtcp-fb:97 nack pli\r\n","a=rtcp-fb:97 pli\r\n")},prioritize:function(e,t){if(t&&t.getSenders&&t.getSenders().length){if(!e||"string"!=typeof e)throw"Invalid arguments.";t.getSenders().forEach((function(t){for(var n=t.getParameters(),r=0;r<n.codecs.length;r++)if(n.codecs[r].mimeType==e){n.codecs.unshift(n.codecs.splice(r,1));break}t.setParameters(n)}))}},removeNonG722:function(e){return e.replace(/m=audio ([0-9]+) RTP\/SAVPF ([0-9 ]*)/g,"m=audio $1 RTP/SAVPF 9")},setApplicationSpecificBandwidth:function(e,t,n){return function(e,t,n){return t?("undefined"!=typeof isFirefox&&isFirefox||(n&&(t.screen?t.screen<300&&console.warn("It seems that you are using wrong bandwidth value for screen. Screen sharing is expected to fail."):console.warn("It seems that you are not using bandwidth for screen. Screen sharing is expected to fail.")),t.screen&&n&&(e=(e=e.replace(/b=AS([^\r\n]+\r\n)/g,"")).replace(/a=mid:video\r\n/g,"a=mid:video\r\nb=AS:"+t.screen+"\r\n")),(t.audio||t.video)&&(e=e.replace(/b=AS([^\r\n]+\r\n)/g,"")),t.audio&&(e=e.replace(/a=mid:audio\r\n/g,"a=mid:audio\r\nb=AS:"+t.audio+"\r\n")),t.screen?e=e.replace(/a=mid:video\r\n/g,"a=mid:video\r\nb=AS:"+t.screen+"\r\n"):t.video&&(e=e.replace(/a=mid:video\r\n/g,"a=mid:video\r\nb=AS:"+t.video+"\r\n"))),e):e}(e,t,n)},setVideoBitrates:function(e,t){return function(e,t){var n,o=(t=t||{}).min,a=t.max,s=e.split("\r\n"),c=r(s,"a=rtpmap","VP8/90000");if(c&&(n=i(s[c])),!n)return e;var d,u=r(s,"a=rtpmap","rtx/90000");if(u&&(d=i(s[u])),!u)return e;var p=r(s,"a=fmtp:"+d.toString());if(null!==p){var l="\r\n";l+="a=fmtp:"+n+" x-google-min-bitrate="+(o||"228")+"; x-google-max-bitrate="+(a||"228"),s[p]=s[p].concat(l),e=s.join("\r\n")}return e}(e,t)},setOpusAttributes:function(e,t){return function(e,t){t=t||{};var n,o=e.split("\r\n"),a=r(o,"a=rtpmap","opus/48000");if(a&&(n=i(o[a])),!n)return e;var s=r(o,"a=fmtp:"+n.toString());if(null===s)return e;var c="";return c+="; stereo="+(void 0!==t.stereo?t.stereo:"1"),c+="; sprop-stereo="+(void 0!==t["sprop-stereo"]?t["sprop-stereo"]:"1"),void 0!==t.maxaveragebitrate&&(c+="; maxaveragebitrate="+(t.maxaveragebitrate||1048576)),void 0!==t.maxplaybackrate&&(c+="; maxplaybackrate="+(t.maxplaybackrate||1048576)),void 0!==t.cbr&&(c+="; cbr="+(void 0!==t.cbr?t.cbr:"1")),void 0!==t.useinbandfec&&(c+="; useinbandfec="+t.useinbandfec),void 0!==t.usedtx&&(c+="; usedtx="+t.usedtx),void 0!==t.maxptime&&(c+="\r\na=maxptime:"+t.maxptime),o[s]=o[s].concat(c),e=o.join("\r\n")}(e,t)},preferVP9:function(t){return e(t,"vp9")},preferCodec:e,forceStereoAudio:function(e){for(var t=e.split("\r\n"),n=null,r=0;r<t.length;r++)if(-1!==t[r].search("opus/48000")){var i=extractSdp(t[r],/:(\d+) opus\/48000/i);break}for(r=0;r<t.length;r++){if(-1!==t[r].search("a=fmtp"))if(extractSdp(t[r],/a=fmtp:(\d+)/)===i){n=r;break}}return null===n?e:(t[n]=t[n].concat("; stereo=1; sprop-stereo=1"),e=t.join("\r\n"))}}}();window.BandwidthHandler=O;var x={processCandidates:function(e,t){var n=t.candidate,r=e.candidates,i=r.stun,o=r.turn;if(h(r.reflexive)||(i=r.reflexive),h(r.relay)||(o=r.relay),(r.host||!n.match(/typ host/g))&&(o||!n.match(/typ relay/g))&&(i||!n.match(/typ srflx/g))){var a=e.iceProtocols;if((a.udp||!n.match(/ udp /g))&&(a.tcp||!n.match(/ tcp /g)))return e.enableLogs&&console.debug("Your candidate pairs:",n),{candidate:n,sdpMid:t.sdpMid,sdpMLineIndex:t.sdpMLineIndex}}}},I={getIceServers:function(e){return[{urls:["stun:stun.l.google.com:19302","stun:stun1.l.google.com:19302","stun:stun2.l.google.com:19302","stun:stun.l.google.com:19302?transport=udp"]}]}};function L(e){if(!0!==currentUserMediaRequest.mutex){currentUserMediaRequest.mutex=!0;var t=JSON.stringify(e.localMediaConstraints);if(currentUserMediaRequest.streams[t])o(currentUserMediaRequest.streams[t].stream,!0);else{if(!!/BB10|BlackBerry/i.test(navigator.userAgent||"")||void 0===navigator.mediaDevices||"function"!=typeof navigator.mediaDevices.getUserMedia)return navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia,void navigator.getUserMedia(e.localMediaConstraints,(function(e){e.streamid=e.streamid||e.id||l(),e.idInstance=t,o(e)}),(function(t){e.onLocalMediaError(t,e.localMediaConstraints)}));if(void 0===navigator.mediaDevices){navigator.getUserMedia=navigator.getUserMedia||navigator.webkitGetUserMedia||navigator.mozGetUserMedia;var n,r,i=function(){};navigator.mediaDevices={getUserMedia:function(e){return navigator.getUserMedia(e,(function(e){e(stream),n=stream}),(function(e){i(e),r=e})),{then:function(e){if(!n)return e,{then:function(e){r?e(r):i=e}};e(n)}}}}}if(!0===e.localMediaConstraints.isScreen){if(navigator.mediaDevices.getDisplayMedia)navigator.mediaDevices.getDisplayMedia(e.localMediaConstraints).then((function(e){e.streamid=e.streamid||e.id||l(),e.idInstance=t,o(e)})).catch((function(t){e.onLocalMediaError(t,e.localMediaConstraints)}));else{if(!navigator.getDisplayMedia)throw new Error("getDisplayMedia API is not availabe in this browser.");navigator.getDisplayMedia(e.localMediaConstraints).then((function(e){e.streamid=e.streamid||e.id||l(),e.idInstance=t,o(e)})).catch((function(t){e.onLocalMediaError(t,e.localMediaConstraints)}))}return}navigator.mediaDevices.getUserMedia(e.localMediaConstraints).then((function(e){e.streamid=e.streamid||e.id||l(),e.idInstance=t,o(e)})).catch((function(t){e.onLocalMediaError(t,e.localMediaConstraints)}))}}else currentUserMediaRequest.queueRequests.push(e);function o(n,r){!function(e,t){e.mandatory&&e.mandatory.chromeMediaSource||e.mozMediaSource||e.mediaSource?t.isScreen=!0:e.video?t.isVideo=!0:e.audio&&(t.isAudio=!0)}(e.localMediaConstraints,n);var i="ended";"oninactive"in n&&(i="inactive"),n.addEventListener(i,(function(){delete currentUserMediaRequest.streams[t],currentUserMediaRequest.mutex=!1,currentUserMediaRequest.queueRequests.indexOf(e)&&(delete currentUserMediaRequest.queueRequests[currentUserMediaRequest.queueRequests.indexOf(e)],currentUserMediaRequest.queueRequests=v(currentUserMediaRequest.queueRequests))}),!1),currentUserMediaRequest.streams[t]={stream:n},currentUserMediaRequest.mutex=!1,currentUserMediaRequest.queueRequests.length&&L(currentUserMediaRequest.queueRequests.shift()),e.onGettingLocalMedia(n,r)}}window.currentUserMediaRequest={streams:[],mutex:!1,queueRequests:[],remove:function(e){this.mutex=!1;var t=this.streams[e];if(t){var n=(t=t.stream).currentUserMediaRequestOptions;this.queueRequests.indexOf(n)&&(delete this.queueRequests[this.queueRequests.indexOf(n)],this.queueRequests=v(this.queueRequests)),this.streams[e].stream=null,delete this.streams[e]}}};var A=function(){function e(e){if(e)return"string"==typeof e||void 0===e?e:e.audio&&e.video?null:e.audio?"audio":e.video?"video":void 0}return{setHandlers:function(t,n,r){if(t&&t.addEventListener){if(void 0===n||1==n){var i="ended";"oninactive"in t&&(i="inactive"),t.addEventListener(i,(function(){A.onSyncNeeded(this.streamid,i)}),!1)}t.mute=function(i,o){i=e(i),void 0!==o&&(n=o),void 0!==i&&"audio"!=i||S(t,"audio").forEach((function(e){e.enabled=!1,r.streamEvents[t.streamid].isAudioMuted=!0})),void 0!==i&&"video"!=i||S(t,"video").forEach((function(e){e.enabled=!1})),void 0!==n&&1!=n||A.onSyncNeeded(t.streamid,"mute",i),r.streamEvents[t.streamid].muteType=i||"both",u(t,"mute",i)},t.unmute=function(i,o){i=e(i),void 0!==o&&(n=o),function(){if(!r.streamEvents[t.streamid].mediaElement)return;var e=r.streamEvents[t.streamid].mediaElement;e.volume=0,function e(t,n,r,i){if((i=(i||0)+1)>=n)return;setTimeout((function(){r(),e(t,n,r,i)}),t)}(200,5,(function(){try{e.volume+=.2}catch(t){e.volume=1}}))}(),void 0!==i&&"audio"!=i||S(t,"audio").forEach((function(e){e.enabled=!0,r.streamEvents[t.streamid].isAudioMuted=!1})),void 0!==i&&"video"!=i||(S(t,"video").forEach((function(e){e.enabled=!0})),void 0!==i&&"video"==i&&r.streamEvents[t.streamid].isAudioMuted&&function e(n){n||(n=0),++n<100&&r.streamEvents[t.streamid].isAudioMuted&&(t.mute("audio"),setTimeout((function(){e(n)}),50))}()),void 0!==n&&1!=n||A.onSyncNeeded(t.streamid,"unmute",i),r.streamEvents[t.streamid].unmuteType=i||"both",u(t,"unmute",i)}}},onSyncNeeded:function(e,t,n){}}}();function N(e){var t={};return{receive:function(n,r,i){var o=n.uuid;if(t[o]||(t[o]=[]),t[o].push(n.message),n.last){var a=t[o].join("");n.isobject&&(a=JSON.parse(a));var s={data:a,userid:r,extra:i,latency:(new Date).getTime()-n.sendingTime};e.autoTranslateText?(s.original=s.data,e.Translator.TranslateText(s.data,(function(t){s.data=t,e.onmessage(s)}))):e.onmessage(s),delete t[o]}}}}var _={send:function(e){var t=e.connection,n=e.channel,r=e.remoteUserId,i=e.text,o=t.chunkSize||1e3,a="",s=!1;"string"!=typeof i&&(s=!0,i=JSON.stringify(i));var c=l(),d=(new Date).getTime();!function e(i,u){var p={type:"text",uuid:c,sendingTime:d};i&&(u=i,p.packets=parseInt(u.length/o));u.length>o?p.message=u.slice(0,o):(p.message=u,p.last=!0,p.isobject=s);n.send(p,r),(a=u.slice(p.message.length)).length&&setTimeout((function(){e(null,a)}),t.chunkInterval||100)}(i)}},U={handle:function(e){var t={};e.onFileStart=function(n){var r=document.createElement("div");if(r.title=n.name,r.innerHTML="<label>0%</label> <progress></progress>",n.remoteUserId&&(r.innerHTML+=" (Sharing with:"+n.remoteUserId+")"),e.filesContainer||(e.filesContainer=document.body||document.documentElement),e.filesContainer.insertBefore(r,e.filesContainer.firstChild),!n.remoteUserId)return t[n.uuid]={div:r,progress:r.querySelector("progress"),label:r.querySelector("label")},void(t[n.uuid].progress.max=n.maxChunks);t[n.uuid]||(t[n.uuid]={}),t[n.uuid][n.remoteUserId]={div:r,progress:r.querySelector("progress"),label:r.querySelector("label")},t[n.uuid][n.remoteUserId].progress.max=n.maxChunks},e.onFileProgress=function(e){var n=t[e.uuid];n&&(e.remoteUserId&&!(n=t[e.uuid][e.remoteUserId])||(n.progress.value=e.currentPosition||e.maxChunks||n.progress.max,function(e,t){if(-1!==e.position){var n=+e.position.toFixed(2).split(".")[1]||100;t.innerHTML=n+"%"}}(n.progress,n.label)))},e.onFileEnd=function(e){var n=t[e.uuid];if(n){if(!e.remoteUserId||(n=t[e.uuid][e.remoteUserId])){var r=n.div;-1!=e.type.indexOf("image")?r.innerHTML='<a href="'+e.url+'" download="'+e.name+'">Download <strong style="color:red;">'+e.name+'</strong> </a><br /><img src="'+e.url+'" title="'+e.name+'" style="max-width: 80%;">':r.innerHTML='<a href="'+e.url+'" download="'+e.name+'">Download <strong style="color:red;">'+e.name+'</strong> </a><br /><iframe src="'+e.url+'" title="'+e.name+'" style="width: 80%;border: 0;height: inherit;margin-top:1em;"></iframe>'}}else console.error("No such progress-helper element exist.",e)}}},W={handle:function(e){e.autoTranslateText=!1,e.language="en",e.googKey="AIzaSyCgB5hmFY74WYB-EoWkhr9cAGr6TiTHrEE",e.Translator={TranslateText:function(t,n){var r=document.createElement("script");r.type="text/javascript";var i=encodeURIComponent(t),o="method"+e.token();window[o]=function(e){e.data&&e.data.translations[0]&&n?n(e.data.translations[0].translatedText):e.error&&"Daily Limit Exceeded"===e.error.message?console.error('Text translation failed. Error message: "Daily Limit Exceeded."'):e.error?console.error(e.error.message):console.error(e)};var a="https://www.googleapis.com/language/translate/v2?key="+e.googKey+"&target="+(e.language||"en-US")+"&callback=window."+o+"&q="+i;r.src=a,document.getElementsByTagName("head")[0].appendChild(r)},getListOfLanguages:function(t){var n=new XMLHttpRequest;n.onreadystatechange=function(){if(n.readyState==XMLHttpRequest.DONE){var e=JSON.parse(n.responseText);if(e&&e.data&&e.data.languages)return void t(e.data.languages);if(e.error&&"Daily Limit Exceeded"===e.error.message)return void console.error('Text translation failed. Error message: "Daily Limit Exceeded."');if(e.error)return void console.error(e.error.message);console.error(e)}};var r="https://www.googleapis.com/language/translate/v2/languages?key="+e.googKey+"&target=en";n.open("GET",r,!0),n.send(null)}}}};!function(e){a=a||{useDefaultDevices:!0},e.channel=e.sessionid=(o||location.href.replace(/\/|:|#|\?|\$|\^|%|\.|`|~|!|\+|@|\[|\||]|\|*. /g,"").split("\n").join("").split("\r").join(""))+"";var t=new d(e),n={};function r(t){if(e.socketAutoReConnect=!0,e.socket)t&&t(e.socket);else{if(void 0===c)if("undefined"!=typeof FirebaseConnection)window.SocketConnection=FirebaseConnection;else{if("undefined"==typeof PubNubConnection)throw"SocketConnection.js seems missed.";window.SocketConnection=PubNubConnection}new c(e,(function(n){t&&t(e.socket)}))}}function i(n,r){e.socket.emit("join-room",{sessionid:e.sessionid,session:e.session,mediaConstraints:e.mediaConstraints,sdpConstraints:e.sdpConstraints,streams:u(),extra:e.extra,password:void 0!==e.password&&"object"!=typeof e.password?e.password:""},(function(i,o){if(!0===i){if(e.enableLogs&&console.log("isRoomJoined: ",i," roomid: ",e.sessionid),e.peers[e.sessionid])return;t.onNegotiationNeeded(n)}!1===i&&e.enableLogs&&console.warn("isRoomJoined: ",o," roomid: ",e.sessionid),r(i,e.sessionid,o)}))}function s(t){e.enableLogs&&console.log("Sending open-room signal to socket.io"),e.waitingForLocalMedia=!1,e.socket.emit("open-room",{sessionid:e.sessionid,session:e.session,mediaConstraints:e.mediaConstraints,sdpConstraints:e.sdpConstraints,streams:u(),extra:e.extra,identifier:e.publicRoomIdentifier,password:void 0!==e.password&&"object"!=typeof e.password?e.password:""},(function(n,r){!0===n&&(e.enableLogs&&console.log("isRoomOpened: ",n," roomid: ",e.sessionid),t(n,e.sessionid)),!1===n&&(e.enableLogs&&console.warn("isRoomOpened: ",r," roomid: ",e.sessionid),t(n,e.sessionid,r))}))}function u(){try{return e.streamEvents.selectAll("local").map((function(e){return{streamid:e.streamid,tracks:e.stream.getTracks().length}}))}catch(e){return[]}}function v(n,r){if(e.dontCaptureUserMedia||n.isDataOnly)r();else{var i={};n.localPeerSdpConstraints.OfferToReceiveAudio&&(i.audio=e.mediaConstraints.audio),n.localPeerSdpConstraints.OfferToReceiveVideo&&(i.video=e.mediaConstraints.video);var o=n.session||e.session;o.oneway&&"two-way"!==o.audio&&"two-way"!==o.video&&"two-way"!==o.screen?r():(o.oneway&&o.audio&&"two-way"===o.audio&&(o={audio:!0}),(o.audio||o.video||o.screen)&&(o.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:w(e)}).then((function(n){n.isScreen=!0,t.onGettingLocalMedia(n),!o.audio&&!o.video||w(e)?r(n):e.invokeGetUserMedia(null,r)}),(function(e){console.error("Unable to capture screen on Edge. HTTPs and version 17+ is required.")})):e.invokeGetUserMedia({audio:w(e),video:!0,isScreen:!0},!o.audio&&!o.video||w(e)?r:e.invokeGetUserMedia(null,r)):(o.audio||o.video)&&e.invokeGetUserMedia(null,r,o)))}}function h(t,n){t?(n.audio&&S(t,"audio").forEach((function(e){e.applyConstraints(n.audio)})),n.video&&S(t,"video").forEach((function(e){e.applyConstraints(n.video)}))):e.enableLogs&&console.error("No stream to applyConstraints.")}function T(n,r,i){r?t.replaceTrack(n,r,i):e.peers.getAllParticipants().forEach((function(e){t.replaceTrack(n,e,i)}))}t.onGettingLocalMedia=function(t,r){if(r=r||function(){},n[t.streamid])r();else{n[t.streamid]=!0;try{t.type="local"}catch(e){}e.setStreamEndHandler(t),f(t,(function(n){n.id=t.streamid,n.muted=!0,n.volume=0,-1===e.attachStreams.indexOf(t)&&e.attachStreams.push(t),void 0!==A&&A.setHandlers(t,!0,e),e.streamEvents[t.streamid]={stream:t,type:"local",mediaElement:n,userid:e.userid,extra:e.extra,streamid:t.streamid,isAudioMuted:!0};try{!function(e,t){if(t.stream&&S(t.stream,"audio").length){if(!e||!t)throw"Both arguments are required.";if(e.onspeaking&&e.onsilence){if("undefined"==typeof hark)throw"hark.js not found.";hark(t.stream,{onspeaking:function(){e.onspeaking(t)},onsilence:function(){e.onsilence(t)},onvolumechange:function(n,r){e.onvolumechange&&e.onvolumechange(merge({volume:n,threshold:r},t))}})}}}(e,e.streamEvents[t.streamid]),p(e,e.streamEvents[t.streamid]),e.onstream(e.streamEvents[t.streamid])}catch(e){}r()}),e)}},t.onGettingRemoteMedia=function(t,n){try{t.type="remote"}catch(e){}e.setStreamEndHandler(t,"remote-stream"),f(t,(function(r){r.id=t.streamid,void 0!==A&&A.setHandlers(t,!1,e),e.streamEvents[t.streamid]={stream:t,type:"remote",userid:n,extra:e.peers[n]?e.peers[n].extra:{},mediaElement:r,streamid:t.streamid},p(e,e.streamEvents[t.streamid]),e.onstream(e.streamEvents[t.streamid])}),e)},t.onRemovingRemoteMedia=function(t,n){var r=e.streamEvents[t.streamid];r||(r={stream:t,type:"remote",userid:n,extra:e.peers[n]?e.peers[n].extra:{},streamid:t.streamid,mediaElement:e.streamEvents[t.streamid]?e.streamEvents[t.streamid].mediaElement:null}),e.peersBackup[r.userid]&&(r.extra=e.peersBackup[r.userid].extra),e.onstreamended(r),delete e.streamEvents[t.streamid]},t.onNegotiationNeeded=function(t,n,i){i=i||function(){};var o={remoteUserId:n=n||t.remoteUserId,message:t=t||"",sender:e.userid};t.remoteUserId&&t.message&&t.sender&&(o=t),r((function(){e.socket.emit(e.socketMessageEvent,o,i)}))},t.onUserLeft=function(t){e.deletePeer(t)},t.disconnectWith=function(t,n){e.socket&&e.socket.emit("disconnect-with",t,n||function(){}),e.deletePeer(t)},e.socketOptions={transport:"polling"},e.openOrJoin=function(t,n){n=n||function(){},e.checkPresence(t,(function(t,r){if(t){e.sessionid=r;var o,a,c=!!e.session.oneway,d=g(e.session);a={OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},o={OfferToReceiveAudio:c?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:c?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo};var u={remoteUserId:e.sessionid,message:{newParticipationRequest:!0,isOneWay:c,isDataOnly:d,localPeerSdpConstraints:o,remotePeerSdpConstraints:a},sender:e.userid};v(u.message,(function(){i(u,n)}))}else e.waitingForLocalMedia=!0,e.isInitiator=!0,e.sessionid=r||e.sessionid,g(e.session)?s(n):e.captureUserMedia((function(){s(n)}))}))},e.waitingForLocalMedia=!1,e.open=function(t,n){n=n||function(){},e.waitingForLocalMedia=!0,e.isInitiator=!0,e.sessionid=t||e.sessionid,r((function(){g(e.session)?s(n):e.captureUserMedia((function(){s(n)}))}))},e.peersBackup={},e.deletePeer=function(t){if(t&&e.peers[t]){var n={userid:t,extra:e.peers[t]?e.peers[t].extra:{}};if(e.peersBackup[n.userid]&&(n.extra=e.peersBackup[n.userid].extra),e.onleave(n),e.peers[t]){e.peers[t].streams.forEach((function(e){e.stop()}));var r=e.peers[t].peer;if(r&&"closed"!==r.iceConnectionState)try{r.close()}catch(e){}e.peers[t]&&(e.peers[t].peer=null,delete e.peers[t])}}},e.rejoin=function(t){if(!e.isInitiator&&t&&Object.keys(t).length){var n={};e.peers[t.remoteUserId]&&(n=e.peers[t.remoteUserId].extra,e.deletePeer(t.remoteUserId)),t&&t.remoteUserId&&(e.join(t.remoteUserId),e.onReConnecting({userid:t.remoteUserId,extra:n}))}},e.join=function(t,n){e.sessionid=!!t&&(t.sessionid||t.remoteUserId||t)||e.sessionid,e.sessionid+="";var o=!1,a=!1,s=!1,c=!1;if(t&&t.session||!t||"string"==typeof t){var d=t&&t.session||e.session;s=!!d.oneway,c=g(d),a={OfferToReceiveAudio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:e.sdpConstraints.mandatory.OfferToReceiveVideo},o={OfferToReceiveAudio:s?!!e.session.audio:e.sdpConstraints.mandatory.OfferToReceiveAudio,OfferToReceiveVideo:s?!!e.session.video||!!e.session.screen:e.sdpConstraints.mandatory.OfferToReceiveVideo}}var u=function(){};"function"==typeof(n=n||{})&&(u=n,n={}),void 0!==n.localPeerSdpConstraints&&(o=n.localPeerSdpConstraints),void 0!==n.remotePeerSdpConstraints&&(a=n.remotePeerSdpConstraints),void 0!==n.isOneWay&&(s=n.isOneWay),void 0!==n.isDataOnly&&(c=n.isDataOnly);var p={remoteUserId:e.sessionid,message:{newParticipationRequest:!0,isOneWay:s,isDataOnly:c,localPeerSdpConstraints:o,remotePeerSdpConstraints:a},sender:e.userid};return v(p.message,(function(){r((function(){i(p,u)}))})),p},e.publicRoomIdentifier="",e.getUserMedia=e.captureUserMedia=function(n,r){n=n||function(){};var i=r||e.session;e.dontCaptureUserMedia||g(i)?n():(i.audio||i.video||i.screen)&&(i.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:w(e)}).then((function(o){if(o.isScreen=!0,t.onGettingLocalMedia(o),!i.audio&&!i.video||w(e))n(o);else{var a={};for(var s in i)"screen"!==s&&(a[s]=i[s]);e.invokeGetUserMedia(r,n,a)}}),(function(e){console.error("Unable to capture screen on Edge. HTTPs and version 17+ is required.")})):e.invokeGetUserMedia({audio:w(e),video:!0,isScreen:!0},(function(t){if(!i.audio&&!i.video||w(e))n(t);else{var o={};for(var a in i)"screen"!==a&&(o[a]=i[a]);e.invokeGetUserMedia(r,n,o)}})):(i.audio||i.video)&&e.invokeGetUserMedia(r,n,i))},e.onbeforeunload=function(n,r){e.closeBeforeUnload&&(e.peers.getAllParticipants().forEach((function(n){t.onNegotiationNeeded({userLeft:!0},n),e.peers[n]&&e.peers[n].peer&&e.peers[n].peer.close(),delete e.peers[n]})),r||e.closeSocket(),e.isInitiator=!1)},window.ignoreBeforeUnload?e.closeBeforeUnload=!1:(e.closeBeforeUnload=!0,window.addEventListener("beforeunload",e.onbeforeunload,!1)),e.userid=l(),e.changeUserId=function(t,n){n=n||function(){},e.userid=t||l(),e.socket.emit("changed-uuid",e.userid,n)},e.extra={},e.attachStreams=[],e.session={audio:!0,video:!0},e.enableFileSharing=!1,e.bandwidth={screen:!1,audio:!1,video:!1},e.codecs={audio:"opus",video:"VP9"},e.processSdp=function(t){return y()||"Safari"===DetectRTC.browser.name?t:("VP8"===e.codecs.video.toUpperCase()&&(t=O.preferCodec(t,"vp8")),"VP9"===e.codecs.video.toUpperCase()&&(t=O.preferCodec(t,"vp9")),"H264"===e.codecs.video.toUpperCase()&&(t=O.preferCodec(t,"h264")),"G722"===e.codecs.audio&&(t=O.removeNonG722(t)),"Firefox"===DetectRTC.browser.name||((e.bandwidth.video||e.bandwidth.screen)&&(t=O.setApplicationSpecificBandwidth(t,e.bandwidth,!!e.session.screen)),e.bandwidth.video&&(t=O.setVideoBitrates(t,{min:8*e.bandwidth.video*1024,max:8*e.bandwidth.video*1024})),e.bandwidth.audio&&(t=O.setOpusAttributes(t,{maxaveragebitrate:8*e.bandwidth.audio*1024,maxplaybackrate:8*e.bandwidth.audio*1024,stereo:1,maxptime:3}))),t)},void 0!==O&&(e.BandwidthHandler=e.CodecsHandler=O),e.mediaConstraints={audio:{mandatory:{},optional:e.bandwidth.audio?[{bandwidth:8*e.bandwidth.audio*1024||1048576}]:[]},video:{mandatory:{},optional:e.bandwidth.video?[{bandwidth:8*e.bandwidth.video*1024||1048576},{facingMode:"user"}]:[{facingMode:"user"}]}},"Firefox"===DetectRTC.browser.name&&(e.mediaConstraints={audio:!0,video:!0}),a.useDefaultDevices||DetectRTC.isMobileDevice||DetectRTC.load((function(){var t,n;if(DetectRTC.MediaDevices.forEach((function(r){"audioinput"===r.kind&&!1!==e.mediaConstraints.audio&&(t=r),"videoinput"===r.kind&&!1!==e.mediaConstraints.video&&(n=r)})),t){if("Firefox"===DetectRTC.browser.name)return void(!0!==e.mediaConstraints.audio?e.mediaConstraints.audio.deviceId=t.id:e.mediaConstraints.audio={deviceId:t.id});1==e.mediaConstraints.audio&&(e.mediaConstraints.audio={mandatory:{},optional:[]}),e.mediaConstraints.audio.optional||(e.mediaConstraints.audio.optional=[]);var r=[{sourceId:t.id}];e.mediaConstraints.audio.optional=r.concat(e.mediaConstraints.audio.optional)}if(n){if("Firefox"===DetectRTC.browser.name)return void(!0!==e.mediaConstraints.video?e.mediaConstraints.video.deviceId=n.id:e.mediaConstraints.video={deviceId:n.id});1==e.mediaConstraints.video&&(e.mediaConstraints.video={mandatory:{},optional:[]}),e.mediaConstraints.video.optional||(e.mediaConstraints.video.optional=[]);r=[{sourceId:n.id}];e.mediaConstraints.video.optional=r.concat(e.mediaConstraints.video.optional)}})),e.sdpConstraints={mandatory:{OfferToReceiveAudio:!0,OfferToReceiveVideo:!0},optional:[{VoiceActivityDetection:!1}]},e.sdpSemantics=null,e.iceCandidatePoolSize=null,e.bundlePolicy=null,e.rtcpMuxPolicy=null,e.iceTransportPolicy=null,e.optionalArgument={optional:[{DtlsSrtpKeyAgreement:!0},{googImprovedWifiBwe:!0},{googScreencastMinBitrate:300},{googIPv6:!0},{googDscp:!0},{googCpuUnderuseThreshold:55},{googCpuOveruseThreshold:85},{googSuspendBelowMinBitrate:!0},{googCpuOveruseDetection:!0}],mandatory:{}},e.iceServers=I.getIceServers(e),e.candidates={host:!0,stun:!0,turn:!0},e.iceProtocols={tcp:!0,udp:!0},e.onopen=function(t){e.enableLogs&&console.info("Data connection has been opened between you & ",t.userid)},e.onclose=function(t){e.enableLogs&&console.warn("Data connection has been closed between you & ",t.userid)},e.onerror=function(t){e.enableLogs&&console.error(t.userid,"data-error",t)},e.onmessage=function(t){e.enableLogs&&console.debug("data-message",t.userid,t.data)},e.send=function(t,n){e.peers.send(t,n)},e.close=e.disconnect=e.leave=function(){e.onbeforeunload(!1,!0)},e.closeEntireSession=function(t){t=t||function(){},e.socket.emit("close-entire-session",(function n(){e.getAllParticipants().length?setTimeout(n,100):(e.onEntireSessionClosed({sessionid:e.sessionid,userid:e.userid,extra:e.extra}),e.changeUserId(null,(function(){e.close(),t()})))}))},e.onEntireSessionClosed=function(t){e.enableLogs&&console.info("Entire session is closed: ",t.sessionid,t.extra)},e.onstream=function(t){var n=e.videosContainer;n.insertBefore(t.mediaElement,n.firstChild);var r=t.mediaElement.play();void 0===r?setTimeout((function(){t.mediaElement.play()}),2e3):r.catch((function(){})).then((function(){setTimeout((function(){t.mediaElement.play()}),2e3)}))},e.onstreamended=function(e){e.mediaElement||(e.mediaElement=document.getElementById(e.streamid)),e.mediaElement&&e.mediaElement.parentNode&&e.mediaElement.parentNode.removeChild(e.mediaElement)},e.direction="many-to-many",e.removeStream=function(t,n){var r;e.attachStreams.forEach((function(e){e.id===t&&(r=e)})),r?(e.peers.getAllParticipants().forEach((function(t){if(!n||t===n){var i=e.peers[t];try{i.peer.removeStream(r)}catch(e){}}})),e.renegotiate()):console.warn("No such stream exist.",t)},e.addStream=function(n,r){if(n.getTracks)return-1===e.attachStreams.indexOf(n)&&(n.streamid||(n.streamid=n.id),e.attachStreams.push(n)),void e.renegotiate(r);function i(t){n.streamCallback&&n.streamCallback(t),e.renegotiate(r)}g(n)?e.renegotiate(r):(n.audio||n.video||n.screen)&&(n.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:w(e)}).then((function(r){r.isScreen=!0,t.onGettingLocalMedia(r),!n.audio&&!n.video||w(e)?i(r):e.invokeGetUserMedia(null,(function(e){i(e)}))}),(function(e){console.error("Unable to capture screen on Edge. HTTPs and version 17+ is required.")})):e.invokeGetUserMedia({audio:w(e),video:!0,isScreen:!0},(function(t){!n.audio&&!n.video||w(e)?i(t):e.invokeGetUserMedia(null,(function(e){i(e)}))})):(n.audio||n.video)&&e.invokeGetUserMedia(null,i))},e.invokeGetUserMedia=function(n,r,i){i||(i=e.session),n||(n=e.mediaConstraints),L({onGettingLocalMedia:function(e){var i=n.video;i&&(i.mediaSource||i.mozMediaSource||i.mandatory&&i.mandatory.chromeMediaSource)&&(e.isScreen=!0),e.isScreen||(e.isVideo=!!S(e,"video").length,e.isAudio=!e.isVideo&&S(e,"audio").length),t.onGettingLocalMedia(e,(function(){"function"==typeof r&&r(e)}))},onLocalMediaError:function(e,n){t.onLocalMediaError(e,n)},localMediaConstraints:n||{audio:!!i.audio&&n.audio,video:!!i.video&&n.video}})},e.applyConstraints=function(t,n){if(D&&D.prototype.applyConstraints){var r;if(n)return e.streamEvents[n]&&(r=e.streamEvents[n].stream),void h(r,t);e.attachStreams.forEach((function(e){h(e,t)}))}else alert("track.applyConstraints is NOT supported in your browser.")},e.replaceTrack=function(n,r,i){if(n=n||{},b.prototype.getSenders)if(n instanceof D)T(n,r,i);else{if(n instanceof C)return S(n,"video").length&&T(S(n,"video")[0],r,!0),void(S(n,"audio").length&&T(S(n,"audio")[0],r,!1));if(g(n))throw"connection.replaceTrack requires audio and/or video and/or screen.";(n.audio||n.video||n.screen)&&(n.screen?"Edge"===DetectRTC.browser.name?navigator.getDisplayMedia({video:!0,audio:w(e)}).then((function(r){r.isScreen=!0,t.onGettingLocalMedia(r),!n.audio&&!n.video||w(e)?o(r):e.invokeGetUserMedia(null,o)}),(function(e){console.error("Unable to capture screen on Edge. HTTPs and version 17+ is required.")})):e.invokeGetUserMedia({audio:w(e),video:!0,isScreen:!0},!n.audio&&!n.video||w(e)?o:e.invokeGetUserMedia(null,o)):(n.audio||n.video)&&e.invokeGetUserMedia(null,o))}else e.addStream(n);function o(t){e.replaceTrack(t,r,i||n.video||n.screen)}},e.resetTrack=function(t,n){t||(t=e.getAllParticipants()),"string"==typeof t&&(t=[t]),t.forEach((function(t){var r=e.peers[t].peer;void 0!==n&&!0!==n||!r.lastVideoTrack||e.replaceTrack(r.lastVideoTrack,t,!0),void 0!==n&&!1!==n||!r.lastAudioTrack||e.replaceTrack(r.lastAudioTrack,t,!1)}))},e.renegotiate=function(n){n?t.renegotiatePeer(n):e.peers.getAllParticipants().forEach((function(e){t.renegotiatePeer(e)}))},e.setStreamEndHandler=function(t,n){if(t&&t.addEventListener&&(n=!!n,!t.alreadySetEndHandler)){t.alreadySetEndHandler=!0;var r="ended";"oninactive"in t&&(r="inactive"),t.addEventListener(r,(function(){if(t.idInstance&¤tUserMediaRequest.remove(t.idInstance),!n){var r=[];e.attachStreams.forEach((function(e){e.id!=t.id&&r.push(e)})),e.attachStreams=r}var i=e.streamEvents[t.streamid];if(i||(i={stream:t,streamid:t.streamid,type:n?"remote":"local",userid:e.userid,extra:e.extra,mediaElement:e.streamEvents[t.streamid]?e.streamEvents[t.streamid].mediaElement:null}),n&&e.peers[i.userid]){var o=e.peers[i.userid].peer;r=[];o.getRemoteStreams().forEach((function(e){e.id!=t.id&&r.push(e)})),e.peers[i.userid].streams=r}i.userid===e.userid&&"remote"===i.type||(e.peersBackup[i.userid]&&(i.extra=e.peersBackup[i.userid].extra),e.onstreamended(i),delete e.streamEvents[t.streamid])}),!1)}},e.onMediaError=function(t,n){e.enableLogs&&console.error(t,n)},e.autoCloseEntireSession=!1,e.filesContainer=e.videosContainer=document.body||document.documentElement,e.isInitiator=!1,e.shareFile=t.shareFile,void 0!==U&&U.handle(e),void 0!==W&&W.handle(e),e.token=l,e.onNewParticipant=function(t,n){e.acceptParticipationRequest(t,n)},e.acceptParticipationRequest=function(e,n){n.successCallback&&(n.successCallback(),delete n.successCallback),t.createNewPeer(e,n)},void 0!==A&&(e.StreamsHandler=A),e.onleave=function(e){},e.invokeSelectFileDialog=function(e){var t=new FileSelector;t.accept="*.*",t.selectSingleFile(e)},e.onmute=function(e){if(e&&e.mediaElement)if("both"===e.muteType||"video"===e.muteType){e.mediaElement.src=null;var t=e.mediaElement.pause();void 0!==t?t.then((function(){e.mediaElement.poster=e.snapshot||"https://cdn.webrtc-experiment.com/images/muted.png"})):e.mediaElement.poster=e.snapshot||"https://cdn.webrtc-experiment.com/images/muted.png"}else"audio"===e.muteType&&(e.mediaElement.muted=!0)},e.onunmute=function(e){e&&e.mediaElement&&e.stream&&("both"===e.unmuteType||"video"===e.unmuteType?(e.mediaElement.poster=null,e.mediaElement.srcObject=e.stream,e.mediaElement.play()):"audio"===e.unmuteType&&(e.mediaElement.muted=!1))},e.onExtraDataUpdated=function(t){t.status="online",e.onUserStatusChanged(t,!0)},e.getAllParticipants=function(t){return e.peers.getAllParticipants(t)},void 0!==A&&(A.onSyncNeeded=function(n,r,i){e.peers.getAllParticipants().forEach((function(e){t.onNegotiationNeeded({streamid:n,action:r,streamSyncNeeded:!0,type:i||"both"},e)}))}),e.connectSocket=function(e){r(e)},e.closeSocket=function(){try{io.sockets={}}catch(e){}e.socket&&("function"==typeof e.socket.disconnect&&e.socket.disconnect(),"function"==typeof e.socket.resetProps&&e.socket.resetProps(),e.socket=null)},e.getSocket=function(t){return!t&&e.enableLogs&&console.warn("getSocket.callback paramter is required."),t=t||function(){},e.socket?t(e.socket):r((function(){t(e.socket)})),e.socket},e.getRemoteStreams=t.getRemoteStreams;var R=["selectFirst","selectAll","forEach"];if(e.streamEvents={selectFirst:function(t){return e.streamEvents.selectAll(t)[0]},selectAll:function(t){t||(t={local:!0,remote:!0,isScreen:!0,isAudio:!0,isVideo:!0}),"local"==t&&(t={local:!0}),"remote"==t&&(t={remote:!0}),"screen"==t&&(t={isScreen:!0}),"audio"==t&&(t={isAudio:!0}),"video"==t&&(t={isVideo:!0});var n=[];return Object.keys(e.streamEvents).forEach((function(r){var i=e.streamEvents[r];if(-1===R.indexOf(r)){var o=!0;t.local&&"local"===i.type&&(o=!1),t.remote&&"remote"===i.type&&(o=!1),t.isScreen&&i.stream.isScreen&&(o=!1),t.isVideo&&i.stream.isVideo&&(o=!1),t.isAudio&&i.stream.isAudio&&(o=!1),t.userid&&i.userid===t.userid&&(o=!1),!1===o&&n.push(i)}})),n}},e.socketURL="/",e.socketMessageEvent="RTCMultiConnection-Message",e.socketCustomEvent="RTCMultiConnection-Custom-Message",e.DetectRTC=DetectRTC,e.setCustomSocketEvent=function(t){t&&(e.socketCustomEvent=t),e.socket&&e.socket.emit("set-custom-socket-event-listener",e.socketCustomEvent)},e.getNumberOfBroadcastViewers=function(t,n){e.socket&&t&&n&&e.socket.emit("get-number-of-users-in-specific-broadcast",t,n)},e.onNumberOfBroadcastViewersUpdated=function(t){e.enableLogs&&e.isInitiator&&console.info("Number of broadcast (",t.broadcastId,") viewers",t.numberOfBroadcastViewers)},e.onUserStatusChanged=function(t,n){e.enableLogs&&!n&&console.info(t.userid,t.status)},e.getUserMediaHandler=L,e.multiPeersHandler=t,e.enableLogs=!0,e.setCustomSocketHandler=function(e){void 0!==c&&(c=e)},e.chunkSize=4e4,e.maxParticipantsAllowed=1e3,e.disconnectWith=t.disconnectWith,e.checkPresence=function(t,n){t=t||e.sessionid,"SSEConnection"!==c.name?e.socket?e.socket.emit("check-presence",t+"",(function(t,r,i){e.enableLogs&&console.log("checkPresence.isRoomExist: ",t," roomid: ",r),n(t,r,i)})):e.connectSocket((function(){e.checkPresence(t,n)})):SSEConnection.checkPresence(t,(function(t,r,i){if(!e.socket)return t||(e.userid=r),void e.connectSocket((function(){n(t,r,i)}));n(t,r)}))},e.onReadyForOffer=function(t,n){e.multiPeersHandler.createNewPeer(t,n)},e.setUserPreferences=function(t){return e.dontAttachStream&&(t.dontAttachLocalStream=!0),e.dontGetRemoteStream&&(t.dontGetRemoteStream=!0),t},e.updateExtraData=function(){e.socket.emit("extra-data-updated",e.extra)},e.enableScalableBroadcast=!1,e.maxRelayLimitPerUser=3,e.dontCaptureUserMedia=!1,e.dontAttachStream=!1,e.dontGetRemoteStream=!1,e.onReConnecting=function(t){e.enableLogs&&console.info("ReConnecting with",t.userid,"...")},e.beforeAddingStream=function(e){return e},e.beforeRemovingStream=function(e){return e},"undefined"!=typeof isChromeExtensionAvailable&&(e.checkIfChromeExtensionAvailable=isChromeExtensionAvailable),"undefined"!=typeof isFirefoxExtensionAvailable&&(e.checkIfChromeExtensionAvailable=isFirefoxExtensionAvailable),"undefined"!=typeof getChromeExtensionStatus&&(e.getChromeExtensionStatus=getChromeExtensionStatus),e.modifyScreenConstraints=function(e){return e},e.onPeerStateChanged=function(t){e.enableLogs&&-1!==t.iceConnectionState.search(/closed|failed/gi)&&console.error("Peer connection is closed between you & ",t.userid,t.extra,"state:",t.iceConnectionState)},e.isOnline=!0,m("online",(function(){e.isOnline=!0})),m("offline",(function(){e.isOnline=!1})),e.isLowBandwidth=!1,navigator&&navigator.connection&&navigator.connection.type&&(e.isLowBandwidth=-1!==navigator.connection.type.toString().toLowerCase().search(/wifi|cell/g),e.isLowBandwidth)){if(e.bandwidth={audio:!1,video:!1,screen:!1},e.mediaConstraints.audio&&e.mediaConstraints.audio.optional&&e.mediaConstraints.audio.optional.length){var P=[];e.mediaConstraints.audio.optional.forEach((function(e){void 0===e.bandwidth&&P.push(e)})),e.mediaConstraints.audio.optional=P}if(e.mediaConstraints.video&&e.mediaConstraints.video.optional&&e.mediaConstraints.video.optional.length){P=[];e.mediaConstraints.video.optional.forEach((function(e){void 0===e.bandwidth&&P.push(e)})),e.mediaConstraints.video.optional=P}}e.getExtraData=function(t,n){if(!t)throw"remoteUserId is required.";if("function"!=typeof n)return e.peers[t]?e.peers[t].extra:e.peersBackup[t]?e.peersBackup[t].extra:{};e.socket.emit("get-remote-user-extra-data",t,(function(e,t,r){n(e,t,r)}))},a.autoOpenOrJoin&&e.openOrJoin(e.sessionid),e.onUserIdAlreadyTaken=function(t,n){e.close(),e.closeSocket(),e.isInitiator=!1,e.userid=e.token(),e.join(e.sessionid),e.enableLogs&&console.warn("Userid already taken.",t,"Your new userid:",e.userid)},e.trickleIce=!0,e.version="3.6.9",e.onSettingLocalDescription=function(t){e.enableLogs&&console.info("Set local description for remote user",t.userid)},e.resetScreen=function(){sourceId=null,DetectRTC&&DetectRTC.screen&&delete DetectRTC.screen.sourceId,currentUserMediaRequest={streams:[],mutex:!1,queueRequests:[]}},e.autoCreateMediaElement=!0,e.password=null,e.setPassword=function(t,n){n=n||function(){},e.socket?e.socket.emit("set-password",t,n):(e.password=t,n(!0,e.sessionid,null))},e.onSocketDisconnect=function(t){e.enableLogs&&console.warn("socket.io connection is closed")},e.onSocketError=function(t){e.enableLogs&&console.warn("socket.io connection is failed")},e.errors={ROOM_NOT_AVAILABLE:"Room not available",INVALID_PASSWORD:"Invalid password",USERID_NOT_AVAILABLE:"User ID does not exist",ROOM_PERMISSION_DENIED:"Room permission denied",ROOM_FULL:"Room full",DID_NOT_JOIN_ANY_ROOM:"Did not join any room yet",INVALID_SOCKET:"Invalid socket",PUBLIC_IDENTIFIER_MISSING:"publicRoomIdentifier is required",INVALID_ADMIN_CREDENTIAL:"Invalid username or password attempted"}}(this)};e.exports=t=o,void 0===(i=function(){return o}.apply(t,[]))||(e.exports=i)}).call(this,n("yLpj"),n("8oxB"))}}]); //# sourceMappingURL=live.js.map?id=3cfe98c0ad0f67b7e3fe
Save
cmd:
run