Your IP : 3.148.221.78


Current Path : /var/www/axolotl/data/www/axolotl.ru/www/bitrix/js/voximplant/
Upload File :
Current File : /var/www/axolotl/data/www/axolotl.ru/www/bitrix/js/voximplant/voximplant.min.js

var VoxImplant;VoxImplant=(()=>{var e={1206:function(e){e.exports=function(e){var t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={i:r,l:!1,exports:{}};return e[r].call(i.exports,i,i.exports,n),i.l=!0,i.exports}return n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var i in e)n.d(r,i,function(t){return e[t]}.bind(null,i));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,"a",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p="",n(n.s=90)}({17:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=n(18),i=function(){function e(){}return e.getFirstMatch=function(e,t){var n=t.match(e);return n&&n.length>0&&n[1]||""},e.getSecondMatch=function(e,t){var n=t.match(e);return n&&n.length>1&&n[2]||""},e.matchAndReturnConst=function(e,t,n){if(e.test(t))return n},e.getWindowsVersionName=function(e){switch(e){case"NT":return"NT";case"XP":case"NT 5.1":return"XP";case"NT 5.0":return"2000";case"NT 5.2":return"2003";case"NT 6.0":return"Vista";case"NT 6.1":return"7";case"NT 6.2":return"8";case"NT 6.3":return"8.1";case"NT 10.0":return"10";default:return}},e.getMacOSVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),10===t[0])switch(t[1]){case 5:return"Leopard";case 6:return"Snow Leopard";case 7:return"Lion";case 8:return"Mountain Lion";case 9:return"Mavericks";case 10:return"Yosemite";case 11:return"El Capitan";case 12:return"Sierra";case 13:return"High Sierra";case 14:return"Mojave";case 15:return"Catalina";default:return}},e.getAndroidVersionName=function(e){var t=e.split(".").splice(0,2).map((function(e){return parseInt(e,10)||0}));if(t.push(0),!(1===t[0]&&t[1]<5))return 1===t[0]&&t[1]<6?"Cupcake":1===t[0]&&t[1]>=6?"Donut":2===t[0]&&t[1]<2?"Eclair":2===t[0]&&2===t[1]?"Froyo":2===t[0]&&t[1]>2?"Gingerbread":3===t[0]?"Honeycomb":4===t[0]&&t[1]<1?"Ice Cream Sandwich":4===t[0]&&t[1]<4?"Jelly Bean":4===t[0]&&t[1]>=4?"KitKat":5===t[0]?"Lollipop":6===t[0]?"Marshmallow":7===t[0]?"Nougat":8===t[0]?"Oreo":9===t[0]?"Pie":void 0},e.getVersionPrecision=function(e){return e.split(".").length},e.compareVersions=function(t,n,r){void 0===r&&(r=!1);var i=e.getVersionPrecision(t),a=e.getVersionPrecision(n),s=Math.max(i,a),o=0,c=e.map([t,n],(function(t){var n=s-e.getVersionPrecision(t),r=t+new Array(n+1).join(".0");return e.map(r.split("."),(function(e){return new Array(20-e.length).join("0")+e})).reverse()}));for(r&&(o=s-Math.min(i,a)),s-=1;s>=o;){if(c[0][s]>c[1][s])return 1;if(c[0][s]===c[1][s]){if(s===o)return 0;s-=1}else if(c[0][s]<c[1][s])return-1}},e.map=function(e,t){var n,r=[];if(Array.prototype.map)return Array.prototype.map.call(e,t);for(n=0;n<e.length;n+=1)r.push(t(e[n]));return r},e.find=function(e,t){var n,r;if(Array.prototype.find)return Array.prototype.find.call(e,t);for(n=0,r=e.length;n<r;n+=1){var i=e[n];if(t(i,n))return i}},e.assign=function(e){for(var t,n,r=e,i=arguments.length,a=new Array(i>1?i-1:0),s=1;s<i;s++)a[s-1]=arguments[s];if(Object.assign)return Object.assign.apply(Object,[e].concat(a));var o=function(){var e=a[t];"object"==typeof e&&null!==e&&Object.keys(e).forEach((function(t){r[t]=e[t]}))};for(t=0,n=a.length;t<n;t+=1)o();return e},e.getBrowserAlias=function(e){return r.BROWSER_ALIASES_MAP[e]},e.getBrowserTypeByAlias=function(e){return r.BROWSER_MAP[e]||""},e}();t.default=i,e.exports=t.default},18:function(e,t,n){"use strict";t.__esModule=!0,t.ENGINE_MAP=t.OS_MAP=t.PLATFORMS_MAP=t.BROWSER_MAP=t.BROWSER_ALIASES_MAP=void 0,t.BROWSER_ALIASES_MAP={"Amazon Silk":"amazon_silk","Android Browser":"android",Bada:"bada",BlackBerry:"blackberry",Chrome:"chrome",Chromium:"chromium",Electron:"electron",Epiphany:"epiphany",Firefox:"firefox",Focus:"focus",Generic:"generic","Google Search":"google_search",Googlebot:"googlebot","Internet Explorer":"ie","K-Meleon":"k_meleon",Maxthon:"maxthon","Microsoft Edge":"edge","MZ Browser":"mz","NAVER Whale Browser":"naver",Opera:"opera","Opera Coast":"opera_coast",PhantomJS:"phantomjs",Puffin:"puffin",QupZilla:"qupzilla",QQ:"qq",QQLite:"qqlite",Safari:"safari",Sailfish:"sailfish","Samsung Internet for Android":"samsung_internet",SeaMonkey:"seamonkey",Sleipnir:"sleipnir",Swing:"swing",Tizen:"tizen","UC Browser":"uc",Vivaldi:"vivaldi","WebOS Browser":"webos",WeChat:"wechat","Yandex Browser":"yandex",Roku:"roku"},t.BROWSER_MAP={amazon_silk:"Amazon Silk",android:"Android Browser",bada:"Bada",blackberry:"BlackBerry",chrome:"Chrome",chromium:"Chromium",electron:"Electron",epiphany:"Epiphany",firefox:"Firefox",focus:"Focus",generic:"Generic",googlebot:"Googlebot",google_search:"Google Search",ie:"Internet Explorer",k_meleon:"K-Meleon",maxthon:"Maxthon",edge:"Microsoft Edge",mz:"MZ Browser",naver:"NAVER Whale Browser",opera:"Opera",opera_coast:"Opera Coast",phantomjs:"PhantomJS",puffin:"Puffin",qupzilla:"QupZilla",qq:"QQ Browser",qqlite:"QQ Browser Lite",safari:"Safari",sailfish:"Sailfish",samsung_internet:"Samsung Internet for Android",seamonkey:"SeaMonkey",sleipnir:"Sleipnir",swing:"Swing",tizen:"Tizen",uc:"UC Browser",vivaldi:"Vivaldi",webos:"WebOS Browser",wechat:"WeChat",yandex:"Yandex Browser"},t.PLATFORMS_MAP={tablet:"tablet",mobile:"mobile",desktop:"desktop",tv:"tv"},t.OS_MAP={WindowsPhone:"Windows Phone",Windows:"Windows",MacOS:"macOS",iOS:"iOS",Android:"Android",WebOS:"WebOS",BlackBerry:"BlackBerry",Bada:"Bada",Tizen:"Tizen",Linux:"Linux",ChromeOS:"Chrome OS",PlayStation4:"PlayStation 4",Roku:"Roku"},t.ENGINE_MAP={EdgeHTML:"EdgeHTML",Blink:"Blink",Trident:"Trident",Presto:"Presto",Gecko:"Gecko",WebKit:"WebKit"}},90:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(91))&&r.__esModule?r:{default:r},a=n(18);function s(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}var o=function(){function e(){}var t,n,r;return e.getParser=function(e,t){if(void 0===t&&(t=!1),"string"!=typeof e)throw new Error("UserAgent should be a string");return new i.default(e,t)},e.parse=function(e){return new i.default(e).getResult()},t=e,r=[{key:"BROWSER_MAP",get:function(){return a.BROWSER_MAP}},{key:"ENGINE_MAP",get:function(){return a.ENGINE_MAP}},{key:"OS_MAP",get:function(){return a.OS_MAP}},{key:"PLATFORMS_MAP",get:function(){return a.PLATFORMS_MAP}}],(n=null)&&s(t.prototype,n),r&&s(t,r),e}();t.default=o,e.exports=t.default},91:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r=c(n(92)),i=c(n(93)),a=c(n(94)),s=c(n(95)),o=c(n(17));function c(e){return e&&e.__esModule?e:{default:e}}var d=function(){function e(e,t){if(void 0===t&&(t=!1),null==e||""===e)throw new Error("UserAgent parameter can't be empty");this._ua=e,this.parsedResult={},!0!==t&&this.parse()}var t=e.prototype;return t.getUA=function(){return this._ua},t.test=function(e){return e.test(this._ua)},t.parseBrowser=function(){var e=this;this.parsedResult.browser={};var t=o.default.find(r.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.browser=t.describe(this.getUA())),this.parsedResult.browser},t.getBrowser=function(){return this.parsedResult.browser?this.parsedResult.browser:this.parseBrowser()},t.getBrowserName=function(e){return e?String(this.getBrowser().name).toLowerCase()||"":this.getBrowser().name||""},t.getBrowserVersion=function(){return this.getBrowser().version},t.getOS=function(){return this.parsedResult.os?this.parsedResult.os:this.parseOS()},t.parseOS=function(){var e=this;this.parsedResult.os={};var t=o.default.find(i.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.os=t.describe(this.getUA())),this.parsedResult.os},t.getOSName=function(e){var t=this.getOS().name;return e?String(t).toLowerCase()||"":t||""},t.getOSVersion=function(){return this.getOS().version},t.getPlatform=function(){return this.parsedResult.platform?this.parsedResult.platform:this.parsePlatform()},t.getPlatformType=function(e){void 0===e&&(e=!1);var t=this.getPlatform().type;return e?String(t).toLowerCase()||"":t||""},t.parsePlatform=function(){var e=this;this.parsedResult.platform={};var t=o.default.find(a.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.platform=t.describe(this.getUA())),this.parsedResult.platform},t.getEngine=function(){return this.parsedResult.engine?this.parsedResult.engine:this.parseEngine()},t.getEngineName=function(e){return e?String(this.getEngine().name).toLowerCase()||"":this.getEngine().name||""},t.parseEngine=function(){var e=this;this.parsedResult.engine={};var t=o.default.find(s.default,(function(t){if("function"==typeof t.test)return t.test(e);if(t.test instanceof Array)return t.test.some((function(t){return e.test(t)}));throw new Error("Browser's test function is not valid")}));return t&&(this.parsedResult.engine=t.describe(this.getUA())),this.parsedResult.engine},t.parse=function(){return this.parseBrowser(),this.parseOS(),this.parsePlatform(),this.parseEngine(),this},t.getResult=function(){return o.default.assign({},this.parsedResult)},t.satisfies=function(e){var t=this,n={},r=0,i={},a=0;if(Object.keys(e).forEach((function(t){var s=e[t];"string"==typeof s?(i[t]=s,a+=1):"object"==typeof s&&(n[t]=s,r+=1)})),r>0){var s=Object.keys(n),c=o.default.find(s,(function(e){return t.isOS(e)}));if(c){var d=this.satisfies(n[c]);if(void 0!==d)return d}var l=o.default.find(s,(function(e){return t.isPlatform(e)}));if(l){var g=this.satisfies(n[l]);if(void 0!==g)return g}}if(a>0){var u=Object.keys(i),h=o.default.find(u,(function(e){return t.isBrowser(e,!0)}));if(void 0!==h)return this.compareVersion(i[h])}},t.isBrowser=function(e,t){void 0===t&&(t=!1);var n=this.getBrowserName().toLowerCase(),r=e.toLowerCase(),i=o.default.getBrowserTypeByAlias(r);return t&&i&&(r=i.toLowerCase()),r===n},t.compareVersion=function(e){var t=[0],n=e,r=!1,i=this.getBrowserVersion();if("string"==typeof i)return">"===e[0]||"<"===e[0]?(n=e.substr(1),"="===e[1]?(r=!0,n=e.substr(2)):t=[],">"===e[0]?t.push(1):t.push(-1)):"="===e[0]?n=e.substr(1):"~"===e[0]&&(r=!0,n=e.substr(1)),t.indexOf(o.default.compareVersions(i,n,r))>-1},t.isOS=function(e){return this.getOSName(!0)===String(e).toLowerCase()},t.isPlatform=function(e){return this.getPlatformType(!0)===String(e).toLowerCase()},t.isEngine=function(e){return this.getEngineName(!0)===String(e).toLowerCase()},t.is=function(e,t){return void 0===t&&(t=!1),this.isBrowser(e,t)||this.isOS(e)||this.isPlatform(e)},t.some=function(e){var t=this;return void 0===e&&(e=[]),e.some((function(e){return t.is(e)}))},e}();t.default=d,e.exports=t.default},92:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=/version\/(\d+(\.?_?\d+)+)/i,s=[{test:[/googlebot/i],describe:function(e){var t={name:"Googlebot"},n=i.default.getFirstMatch(/googlebot\/(\d+(\.\d+))/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/opera/i],describe:function(e){var t={name:"Opera"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:opera)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opr\/|opios/i],describe:function(e){var t={name:"Opera"},n=i.default.getFirstMatch(/(?:opr|opios)[\s/](\S+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/SamsungBrowser/i],describe:function(e){var t={name:"Samsung Internet for Android"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:SamsungBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Whale/i],describe:function(e){var t={name:"NAVER Whale Browser"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:whale)[\s/](\d+(?:\.\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MZBrowser/i],describe:function(e){var t={name:"MZ Browser"},n=i.default.getFirstMatch(/(?:MZBrowser)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/focus/i],describe:function(e){var t={name:"Focus"},n=i.default.getFirstMatch(/(?:focus)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/swing/i],describe:function(e){var t={name:"Swing"},n=i.default.getFirstMatch(/(?:swing)[\s/](\d+(?:\.\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/coast/i],describe:function(e){var t={name:"Opera Coast"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:coast)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/opt\/\d+(?:.?_?\d+)+/i],describe:function(e){var t={name:"Opera Touch"},n=i.default.getFirstMatch(/(?:opt)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/yabrowser/i],describe:function(e){var t={name:"Yandex Browser"},n=i.default.getFirstMatch(/(?:yabrowser)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/ucbrowser/i],describe:function(e){var t={name:"UC Browser"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:ucbrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/Maxthon|mxios/i],describe:function(e){var t={name:"Maxthon"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:Maxthon|mxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/epiphany/i],describe:function(e){var t={name:"Epiphany"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:epiphany)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/puffin/i],describe:function(e){var t={name:"Puffin"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:puffin)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sleipnir/i],describe:function(e){var t={name:"Sleipnir"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:sleipnir)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/k-meleon/i],describe:function(e){var t={name:"K-Meleon"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/(?:k-meleon)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/micromessenger/i],describe:function(e){var t={name:"WeChat"},n=i.default.getFirstMatch(/(?:micromessenger)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qqbrowser/i],describe:function(e){var t={name:/qqbrowserlite/i.test(e)?"QQ Browser Lite":"QQ Browser"},n=i.default.getFirstMatch(/(?:qqbrowserlite|qqbrowser)[/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/msie|trident/i],describe:function(e){var t={name:"Internet Explorer"},n=i.default.getFirstMatch(/(?:msie |rv:)(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/\sedg\//i],describe:function(e){var t={name:"Microsoft Edge"},n=i.default.getFirstMatch(/\sedg\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/edg([ea]|ios)/i],describe:function(e){var t={name:"Microsoft Edge"},n=i.default.getSecondMatch(/edg([ea]|ios)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/vivaldi/i],describe:function(e){var t={name:"Vivaldi"},n=i.default.getFirstMatch(/vivaldi\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/seamonkey/i],describe:function(e){var t={name:"SeaMonkey"},n=i.default.getFirstMatch(/seamonkey\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/sailfish/i],describe:function(e){var t={name:"Sailfish"},n=i.default.getFirstMatch(/sailfish\s?browser\/(\d+(\.\d+)?)/i,e);return n&&(t.version=n),t}},{test:[/silk/i],describe:function(e){var t={name:"Amazon Silk"},n=i.default.getFirstMatch(/silk\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/phantom/i],describe:function(e){var t={name:"PhantomJS"},n=i.default.getFirstMatch(/phantomjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/slimerjs/i],describe:function(e){var t={name:"SlimerJS"},n=i.default.getFirstMatch(/slimerjs\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t={name:"BlackBerry"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/blackberry[\d]+\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t={name:"WebOS Browser"},n=i.default.getFirstMatch(a,e)||i.default.getFirstMatch(/w(?:eb)?[o0]sbrowser\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/bada/i],describe:function(e){var t={name:"Bada"},n=i.default.getFirstMatch(/dolfin\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/tizen/i],describe:function(e){var t={name:"Tizen"},n=i.default.getFirstMatch(/(?:tizen\s?)?browser\/(\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/qupzilla/i],describe:function(e){var t={name:"QupZilla"},n=i.default.getFirstMatch(/(?:qupzilla)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/firefox|iceweasel|fxios/i],describe:function(e){var t={name:"Firefox"},n=i.default.getFirstMatch(/(?:firefox|iceweasel|fxios)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/electron/i],describe:function(e){var t={name:"Electron"},n=i.default.getFirstMatch(/(?:electron)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/MiuiBrowser/i],describe:function(e){var t={name:"Miui"},n=i.default.getFirstMatch(/(?:MiuiBrowser)[\s/](\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/chromium/i],describe:function(e){var t={name:"Chromium"},n=i.default.getFirstMatch(/(?:chromium)[\s/](\d+(\.?_?\d+)+)/i,e)||i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/chrome|crios|crmo/i],describe:function(e){var t={name:"Chrome"},n=i.default.getFirstMatch(/(?:chrome|crios|crmo)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/GSA/i],describe:function(e){var t={name:"Google Search"},n=i.default.getFirstMatch(/(?:GSA)\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t={name:"Android Browser"},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/playstation 4/i],describe:function(e){var t={name:"PlayStation 4"},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/safari|applewebkit/i],describe:function(e){var t={name:"Safari"},n=i.default.getFirstMatch(a,e);return n&&(t.version=n),t}},{test:[/.*/i],describe:function(e){var t=-1!==e.search("\\(")?/^(.*)\/(.*)[ \t]\((.*)/:/^(.*)\/(.*) /;return{name:i.default.getFirstMatch(t,e),version:i.default.getSecondMatch(t,e)}}}];t.default=s,e.exports=t.default},93:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18),s=[{test:[/Roku\/DVP/],describe:function(e){var t=i.default.getFirstMatch(/Roku\/DVP-(\d+\.\d+)/i,e);return{name:a.OS_MAP.Roku,version:t}}},{test:[/windows phone/i],describe:function(e){var t=i.default.getFirstMatch(/windows phone (?:os)?\s?(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.WindowsPhone,version:t}}},{test:[/windows /i],describe:function(e){var t=i.default.getFirstMatch(/Windows ((NT|XP)( \d\d?.\d)?)/i,e),n=i.default.getWindowsVersionName(t);return{name:a.OS_MAP.Windows,version:t,versionName:n}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(e){var t={name:a.OS_MAP.iOS},n=i.default.getSecondMatch(/(Version\/)(\d[\d.]+)/,e);return n&&(t.version=n),t}},{test:[/macintosh/i],describe:function(e){var t=i.default.getFirstMatch(/mac os x (\d+(\.?_?\d+)+)/i,e).replace(/[_\s]/g,"."),n=i.default.getMacOSVersionName(t),r={name:a.OS_MAP.MacOS,version:t};return n&&(r.versionName=n),r}},{test:[/(ipod|iphone|ipad)/i],describe:function(e){var t=i.default.getFirstMatch(/os (\d+([_\s]\d+)*) like mac os x/i,e).replace(/[_\s]/g,".");return{name:a.OS_MAP.iOS,version:t}}},{test:function(e){var t=!e.test(/like android/i),n=e.test(/android/i);return t&&n},describe:function(e){var t=i.default.getFirstMatch(/android[\s/-](\d+(\.\d+)*)/i,e),n=i.default.getAndroidVersionName(t),r={name:a.OS_MAP.Android,version:t};return n&&(r.versionName=n),r}},{test:[/(web|hpw)[o0]s/i],describe:function(e){var t=i.default.getFirstMatch(/(?:web|hpw)[o0]s\/(\d+(\.\d+)*)/i,e),n={name:a.OS_MAP.WebOS};return t&&t.length&&(n.version=t),n}},{test:[/blackberry|\bbb\d+/i,/rim\stablet/i],describe:function(e){var t=i.default.getFirstMatch(/rim\stablet\sos\s(\d+(\.\d+)*)/i,e)||i.default.getFirstMatch(/blackberry\d+\/(\d+([_\s]\d+)*)/i,e)||i.default.getFirstMatch(/\bbb(\d+)/i,e);return{name:a.OS_MAP.BlackBerry,version:t}}},{test:[/bada/i],describe:function(e){var t=i.default.getFirstMatch(/bada\/(\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Bada,version:t}}},{test:[/tizen/i],describe:function(e){var t=i.default.getFirstMatch(/tizen[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.Tizen,version:t}}},{test:[/linux/i],describe:function(){return{name:a.OS_MAP.Linux}}},{test:[/CrOS/],describe:function(){return{name:a.OS_MAP.ChromeOS}}},{test:[/PlayStation 4/],describe:function(e){var t=i.default.getFirstMatch(/PlayStation 4[/\s](\d+(\.\d+)*)/i,e);return{name:a.OS_MAP.PlayStation4,version:t}}}];t.default=s,e.exports=t.default},94:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18),s=[{test:[/googlebot/i],describe:function(){return{type:"bot",vendor:"Google"}}},{test:[/huawei/i],describe:function(e){var t=i.default.getFirstMatch(/(can-l01)/i,e)&&"Nova",n={type:a.PLATFORMS_MAP.mobile,vendor:"Huawei"};return t&&(n.model=t),n}},{test:[/nexus\s*(?:7|8|9|10).*/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Nexus"}}},{test:[/ipad/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/Macintosh(.*?) FxiOS(.*?)\//],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Apple",model:"iPad"}}},{test:[/kftt build/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon",model:"Kindle Fire HD 7"}}},{test:[/silk/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet,vendor:"Amazon"}}},{test:[/tablet(?! pc)/i],describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){var t=e.test(/ipod|iphone/i),n=e.test(/like (ipod|iphone)/i);return t&&!n},describe:function(e){var t=i.default.getFirstMatch(/(ipod|iphone)/i,e);return{type:a.PLATFORMS_MAP.mobile,vendor:"Apple",model:t}}},{test:[/nexus\s*[0-6].*/i,/galaxy nexus/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Nexus"}}},{test:[/[^-]mobi/i],describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"blackberry"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"BlackBerry"}}},{test:function(e){return"bada"===e.getBrowserName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"windows phone"===e.getBrowserName()},describe:function(){return{type:a.PLATFORMS_MAP.mobile,vendor:"Microsoft"}}},{test:function(e){var t=Number(String(e.getOSVersion()).split(".")[0]);return"android"===e.getOSName(!0)&&t>=3},describe:function(){return{type:a.PLATFORMS_MAP.tablet}}},{test:function(e){return"android"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.mobile}}},{test:function(e){return"macos"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop,vendor:"Apple"}}},{test:function(e){return"windows"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"linux"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.desktop}}},{test:function(e){return"playstation 4"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}},{test:function(e){return"roku"===e.getOSName(!0)},describe:function(){return{type:a.PLATFORMS_MAP.tv}}}];t.default=s,e.exports=t.default},95:function(e,t,n){"use strict";t.__esModule=!0,t.default=void 0;var r,i=(r=n(17))&&r.__esModule?r:{default:r},a=n(18),s=[{test:function(e){return"microsoft edge"===e.getBrowserName(!0)},describe:function(e){if(/\sedg\//i.test(e))return{name:a.ENGINE_MAP.Blink};var t=i.default.getFirstMatch(/edge\/(\d+(\.?_?\d+)+)/i,e);return{name:a.ENGINE_MAP.EdgeHTML,version:t}}},{test:[/trident/i],describe:function(e){var t={name:a.ENGINE_MAP.Trident},n=i.default.getFirstMatch(/trident\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){return e.test(/presto/i)},describe:function(e){var t={name:a.ENGINE_MAP.Presto},n=i.default.getFirstMatch(/presto\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:function(e){var t=e.test(/gecko/i),n=e.test(/like gecko/i);return t&&!n},describe:function(e){var t={name:a.ENGINE_MAP.Gecko},n=i.default.getFirstMatch(/gecko\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}},{test:[/(apple)?webkit\/537\.36/i],describe:function(){return{name:a.ENGINE_MAP.Blink}}},{test:[/(apple)?webkit/i],describe:function(e){var t={name:a.ENGINE_MAP.WebKit},n=i.default.getFirstMatch(/webkit\/(\d+(\.?_?\d+)+)/i,e);return n&&(t.version=n),t}}];t.default=s,e.exports=t.default}})},9091:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(209),i=n(7998),a=n(1150),s=n(4106),o=n(2957),c=n(141),d=n(125),l=n(245),g="The operator status update failed by timeout.",u="You try to perform multiple ACD operations at the same time. This can lead to an unexpected behavior of your application.",h="You probably use the same credentials in the different browsers or multiple browser's windows. This can cause conflicts between instances.",p="Wrong ACD status name {0}";class f{static get newUUID(){return(new r.default).toString()+"_"+f._connectionId}static setConnectionId(e){this._connectionId=e}static removeConnectionId(){this._connectionId=void 0}static setStatus(e){return new Promise(((t,n)=>{f._checkBeforeRun(i.OperatorACDStatuses[e],n);const r=f.newUUID;l.default.callRemoteFunction(s.RemoteFunction.setOperatorACDStatus,e,r),this._acdRequests.push({resolve:t,reject:n,timer:window.setTimeout((()=>{f._acdRequests=f._acdRequests.filter((e=>e.uuid!==r)),n(g)}),58e3),uuid:r,status:e})}))}static getStatus(){return new Promise(((e,t)=>{f._checkBeforeRun(void 0,t);const n=f.newUUID;l.default.callRemoteFunction(s.RemoteFunction.getOperatorACDStatus,n),this._acdRequests.push({resolve:e,reject:t,timer:window.setTimeout((()=>{f._acdRequests=f._acdRequests.filter((e=>e.uuid!==n)),t(g)}),58e3),uuid:n})}))}static onError(e,t,n){const{actor:r,actorIdx:i}=f._getActorByUUID(e);r&&(clearTimeout(r.timer),r.reject(new Error(o.Utils.strFormat(p,r.status||"get operation"))),f._acdRequests.splice(0,i+1))}static onStatusUpdated(e,t,n){f._checkConnectionId(t);const{actor:r,actorIdx:i}=f._getActorByUUID(t);if(r){if(clearTimeout(r.timer),0!==i)for(let t=0;t<i;t++)clearTimeout(f._acdRequests[t].timer),f._acdRequests[t].reject(new Error(o.Utils.strFormat("The {0} status is set in your code after {1}. The {0} status is ignored.",r.status||"get operation",e)));void 0===r.status||r.status===e?r.resolve(e):r.reject(new Error(o.Utils.strFormat("The {0} status is not acceptable for the current operator state. The operator is {1} now. Please, check the ACD module documentation for details.",r.status,e))),f._acdRequests.splice(0,i+1)}d.Client.getInstance().dispatchEvent({name:c.Events.ACDStatusUpdated,id:f._getConnectonIdFromUUID(t),status:e,description:n})}static _checkBeforeRun(e,t){f._connectionId||t(new Error("You can't set an operator status before login.")),f._acdRequests.length>0&&(a.LogManager.get().writeMessage(a.LogCategory.CLIENT,"ACD",a.LogLevel.WARNING,u),d.Client.getInstance().dispatchEvent({name:c.Events.ACDError,code:5,message:u})),void 0===e||Object.values(i.OperatorACDStatuses).includes(e)||t(new Error(o.Utils.strFormat(p,e)))}static _getActorByUUID(e){let t=-1;return{actor:this._acdRequests.find(((n,r)=>{if(n.uuid===e)return t=r,!0})),actorIdx:t}}static _getConnectonIdFromUUID(e){const t=e.split("_");return 1===t.length||"gw"===t[1]?f._connectionId:t[1]}static _checkConnectionId(e){var t;const n=e.split("_");1!==n.length&&n[1]===(null===(t=f._connectionId)||void 0===t?void 0:t.split("_")[0])||(d.Client.getInstance().dispatchEvent({name:c.Events.ACDError,code:6,message:h}),a.LogManager.get().writeMessage(a.LogCategory.CLIENT,"ACD",a.LogLevel.WARNING,h))}}t.default=f,f._acdRequests=[]},2089:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(209),i=n(7998),a=n(1150),s=n(4106),o=n(2957),c=n(141),d=n(125),l=n(245),g="The operator status update failed by timeout.",u="You try to perform multiple ACD operations at the same time. This can lead to an unexpected behavior of your application.",h="You probably use the same credentials in the different browsers or multiple browser's windows. This can cause conflicts between instances.",p="Wrong ACD status name {0}";class f{static get newUUID(){return(new r.default).toString()+"_"+f._connectionId}static setConnectionId(e){this._connectionId=e}static removeConnectionId(){this._connectionId=void 0}static setStatus(e){return new Promise(((t,n)=>{f._checkBeforeRun(i.OperatorACDStatuses[e],n);const r=f.newUUID;l.default.callRemoteFunction(s.RemoteFunction.setOperatorMessagingStatus,e,r),this._acdRequests.push({resolve:t,reject:n,timer:window.setTimeout((()=>{f._acdRequests=f._acdRequests.filter((e=>e.uuid!==r)),n(g)}),58e3),uuid:r,status:e})}))}static getStatus(){return new Promise(((e,t)=>{f._checkBeforeRun(void 0,t);const n=f.newUUID;l.default.callRemoteFunction(s.RemoteFunction.getOperatorMessagingStatus,n),this._acdRequests.push({resolve:e,reject:t,timer:window.setTimeout((()=>{f._acdRequests=f._acdRequests.filter((e=>e.uuid!==n)),t(g)}),58e3),uuid:n})}))}static onError(e,t,n){const{actor:r,actorIdx:i}=f._getActorByUUID(e);r&&(clearTimeout(r.timer),r.reject(new Error(o.Utils.strFormat(p,r.status||"get operation"))),f._acdRequests.splice(0,i+1))}static onStatusUpdated(e,t,n){f._checkConnectionId(t);const{actor:r,actorIdx:i}=f._getActorByUUID(t);if(r){if(clearTimeout(r.timer),0!==i)for(let t=0;t<i;t++)clearTimeout(f._acdRequests[t].timer),f._acdRequests[t].reject(new Error(o.Utils.strFormat("The {0} status is set in your code after {1}. The {0} status is ignored.",r.status||"get operation",e)));void 0===r.status||r.status===e?r.resolve(e):r.reject(new Error(o.Utils.strFormat("The {0} status is not acceptable for the current operator state. The operator is {1} now. Please, check the ACD module documentation for details.",r.status,e))),f._acdRequests.splice(0,i+1)}d.Client.getInstance().dispatchEvent({name:c.Events.SQMessagingStatusUpdated,id:f._getConnectonIdFromUUID(t),status:e,description:n})}static _checkBeforeRun(e,t){f._connectionId||t(new Error("You can't set an operator status before login.")),f._acdRequests.length>0&&(a.LogManager.get().writeMessage(a.LogCategory.CLIENT,"ACD",a.LogLevel.WARNING,u),d.Client.getInstance().dispatchEvent({name:c.Events.SQError,code:5,message:u})),void 0===e||Object.values(i.OperatorACDStatuses).includes(e)||t(new Error(o.Utils.strFormat(p,e)))}static _getActorByUUID(e){let t=-1;return{actor:this._acdRequests.find(((n,r)=>{if(n.uuid===e)return t=r,!0})),actorIdx:t}}static _getConnectonIdFromUUID(e){const t=e.split("_");return 1===t.length||"gw"===t[1]?f._connectionId:t[1]}static _checkConnectionId(e){var t;const n=e.split("_");1!==n.length&&n[1]===(null===(t=f._connectionId)||void 0===t?void 0:t.split("_")[0])||(d.Client.getInstance().dispatchEvent({name:c.Events.SQError,code:6,message:h}),a.LogManager.get().writeMessage(a.LogCategory.CLIENT,"ACD",a.LogLevel.WARNING,h))}}t.default=f,f._acdRequests=[]},3947:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Authenticator=t.AuthenticatorState=void 0;const i=n(1150),a=n(84),s=n(4106),o=n(575),c=n(125),d=n(9091),l=n(4758),g=n(2089),u=n(245);var h;!function(e){e[e.IDLE=0]="IDLE",e[e.IN_PROGRESS=1]="IN_PROGRESS"}(h=t.AuthenticatorState||(t.AuthenticatorState={}));class p{constructor(){this.FAIL_CODE_SECOND_STAGE=301,this.FAIL_CODE_ONE_TIME_KEY=302,this._displayName=null,this._username=null,this._authorized=!1,this.currentState=h.IDLE,this.logger=i.LogManager.get().createLogger(i.LogCategory.SIGNALING,this._traceName()),u.default.setRPCHandler(o.RemoteEvent.loginFailed,((e,t)=>{this.onLoginFailed(e,t)})),u.default.setRPCHandler(o.RemoteEvent.loginSuccessful,((e,t)=>{this.onLoginSuccesful(e,t)})),u.default.setRPCHandler(o.RemoteEvent.refreshOauthTokenFailed,(e=>{this.handler.onRefreshTokenFailed(e)})),u.default.setRPCHandler(o.RemoteEvent.refreshOauthTokenSuccessful,(e=>{this.handler.onRefreshTokenSuccess(e.OAuth)})),u.default.addHandler(this)}static get(){return void 0===this.inst&&(this.inst=new p),this.inst}setHandler(e){this.handler=e}onLoginFailed(e,t){switch(this.currentState=h.IDLE,e){case this.FAIL_CODE_ONE_TIME_KEY:this.handler.onOneTimeKeyGenerated(t);break;case this.FAIL_CODE_SECOND_STAGE:this.handler.onSecondStageInitiated();break;default:this.handler.onLoginFailed(e)}}onLoginSuccesful(e,t){this.currentState=h.IDLE,this._authorized=!0,a.PCFactory.get().iceConfig=t.iceConfig,d.default.setConnectionId(t.connectionId),g.default.setConnectionId(t.connectionId),c.Client.getInstance().setConnectionData(null,t.connectionId),this._displayName=e,this.handler.onLoginSuccessful(e,t.OAuth)}get displayName(){return this._displayName}basicLogin(e,t,n){if(this.currentState!=h.IDLE)return void this.logger.error("Login operation already in progress");this._username=e,this.currentState=h.IN_PROGRESS;let r=t;if("md5"===n.credentialType){const n=e.split("@")[0];r=l.Md5.hashStr(`${n}:voximplant.com:${t}`).toString()}u.default.callRemoteFunction(s.RemoteFunction.login,e,r,n)}tokenLogin(e,t){this.currentState==h.IDLE?(this._username=e,this.currentState=h.IN_PROGRESS,u.default.callRemoteFunction(s.RemoteFunction.login,e,"",t)):this.logger.error("Login operation already in progress")}tokenRefresh(e,t,n){n?u.default.callRemoteFunction(s.RemoteFunction.refreshOauthToken,e,{refreshToken:t,deviceToken:n}):u.default.callRemoteFunction(s.RemoteFunction.refreshOauthToken,e,t)}loginUsingOneTimeKey(e,t,n){this.logger.info("loginWithOneTimeKey running for "+e),this.currentState==h.IDLE?(this._username=e,this.currentState=h.IN_PROGRESS,u.default.callRemoteFunction(s.RemoteFunction.loginUsingOneTimeKey,e,t,n)):this.logger.error("Login operation already in progress. loginWithOneTimeKey was canceled")}loginStage2(e,t,n){this.logger.info("loginWithCode running for "+e),this.currentState==h.IDLE?(this._username=e,this.currentState=h.IN_PROGRESS,u.default.callRemoteFunction(s.RemoteFunction.loginStage2,e,t,n)):this.logger.error("Login operation already in progress. loginWithCode was canceled.")}generateOneTimeKey(e){this.logger.info("requestOneTimeLoginKey running for "+e),this.currentState==h.IDLE?(this.currentState=h.IN_PROGRESS,u.default.callRemoteFunction(s.RemoteFunction.loginGenerateOneTimeKey,e)):this.logger.error("Login operation already in progress. requestOneTimeLoginKey was canceled.")}username(){return this._username}authorized(){return this._authorized}onSignalingConnected(){}onSignalingConnectionFailed(e){}onSignalingClosed(){this.currentState=h.IDLE,this._authorized=!1,this._displayName=null,this._username=null}onMediaConnectionFailed(){this.currentState=h.IDLE}ziAuthorized(e){this._authorized=e}_traceName(){return"Authenticator"}}r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"setHandler",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"onLoginFailed",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"onLoginSuccesful",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"basicLogin",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"tokenLogin",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"tokenRefresh",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"loginUsingOneTimeKey",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"loginStage2",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"generateOneTimeKey",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"username",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"authorized",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"onSignalingConnected",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"onSignalingConnectionFailed",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"onSignalingClosed",null),r([i.LogManager.d_trace(i.LogCategory.AUTHENTICATOR)],p.prototype,"onMediaConnectionFailed",null),t.Authenticator=p},3869:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(1150),i=n(9165),a=n(6518),s=n(9551),o=n(9023),c=n(125),d=n(1206);var l;!function(e){let t,n;function l(e,t,n){let r=e;return"object"!=typeof r&&(r={}),r[t]={ideal:n},r}!function(e){e[e.Firefox=1]="Firefox",e[e.Webkit=2]="Webkit",e[e.Edge=3]="Edge",e[e.Safari=4]="Safari"}(t||(t={}));d.getParser(window.navigator.userAgent);function g(e,t){return new s.SignalingDTMFSender(t)}function u(){return new Promise((e=>{e(!1)}))}function h(e){let t=!1,n=!1;return e.audioEnabled&&(t=!0,e.audioInputId&&(t=l(t,"deviceId",e.audioInputId))),e.videoEnabled&&(n=!0,e.videoSettings&&(n=e.videoSettings),e.videoInputId&&(n=l(n,"deviceId",e.videoInputId))),{peerIdentity:null,audio:t,video:n}}function p(){n=navigator.mozGetUserMedia?t.Firefox:navigator.webkitGetUserMedia?t.Webkit:t.Safari}e.isIphone=function(){return!(!c.Client.getInstance().config().experiments||!c.Client.getInstance().config().experiments.emulate_ios)||(navigator.userAgent.match(/iPhone/i)||navigator.userAgent.match(/iPod/i))},e.isIpad=function(){return!(!c.Client.getInstance().config().experiments||!c.Client.getInstance().config().experiments.emulate_ios)||(navigator.userAgent.match(/iPad/i)||navigator.maxTouchPoints>0&&n===t.Safari)},e.isScreenSharingSupported=function(){return n===t.Firefox||n===t.Webkit||n===t.Safari&&0===navigator.maxTouchPoints},e.getWSVendor=function(e=!0){switch(n||p(),n){case t.Firefox:return"firefox";case t.Webkit:return"chrome";case t.Safari:return"safari";default:return""}},e.init=function(){switch(n||p(),n&&r.LogManager.get().writeMessage(r.LogCategory.RTC,"Core",r.LogLevel.INFO,"Detected browser "+t[n]),e.getDTMFSender=g,e.screenSharingSupported=u,n){case t.Firefox:e.attachMedia=i.FF.attachStream,e.detachMedia=i.FF.detachStream,e.getScreenMedia=i.FF.getScreenMedia,e.getRTCStats=i.FF.getRTCStats,e.screenSharingSupported=i.FF.screenSharingSupported,e.getDTMFSender=i.FF.getDTMFSender;break;case t.Webkit:e.attachMedia=a.Webkit.attachStream,e.detachMedia=a.Webkit.detachStream,e.getScreenMedia=a.Webkit.getScreenMedia,e.getRTCStats=a.Webkit.getRTCStats,e.screenSharingSupported=a.Webkit.screenSharingSupported,e.getDTMFSender=a.Webkit.getDTMFSender;break;case t.Safari:e.attachMedia=o.Safari.attachStream,e.detachMedia=o.Safari.detachStream,e.getScreenMedia=o.Safari.getScreenMedia,e.getRTCStats=o.Safari.getRTCStats,e.screenSharingSupported=o.Safari.screenSharingSupported,e.getDTMFSender=o.Safari.getDTMFSender;break;default:r.LogManager.get().writeMessage(r.LogCategory.RTC,"Core",r.LogLevel.INFO,"Unsupported browser "+navigator.userAgent)}e.composeConstraints=h}}(l||(l={})),t.default=l},9165:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.FF=void 0;const r=n(9551),i=n(1150);class a{static attachStream(e){let t=e.element;void 0===t.srcObject?t.mozSrcObject=e.stream:t.srcObject=e.stream}static detachStream(e){let t=e.element;void 0===t.srcObject?t.mozSrcObject=null:t.srcObject=null,t.src=""}static screenSharingSupported(){return new Promise(((e,t)=>{"https:"==window.location.protocol?e(!0):e(!1)}))}static getScreenMedia(){const e={audio:!1,video:{mediaSource:"window"}};return i.LogManager.get().writeMessage(i.LogCategory.USERMEDIA,"[constraints]",i.LogLevel.TRACE,JSON.stringify(e)),navigator.mediaDevices.getUserMedia(e)}static getRTCStats(e){return new Promise(((t,n)=>{e.getStats(null).then((e=>{let n=[];e.forEach((e=>{"inbound-rtp"!=e.type&&"outbound-rtp"!=e.type||n.push(e)})),t({raw:n,formatted:a.prepareRTCStats(e)})})).catch(n)}))}static prepareRTCStats(e){let t=[];return e.forEach((e=>{"outbound-rtp"===e.type||e.isRemote?t.push(Object.assign(e,{framesPerSecond:e.framesPerSecond?e.framesPerSecond:e.framerateMean,encoderBitrate:e.bitrateMean})):t.push(e)})),t}static getDTMFSender(e,t){const n=/Firefox\/([0-9\.]+)(?:\s|$)/,i=navigator.userAgent;if(n.test(i)){if(+n.exec(i)[1].split(".")[0]>=53){const t=e.getSenders().map((e=>{if(e.track&&"audio"===e.track.kind&&e.dtmf)return e.dtmf}));if(t.length>0)return t[0]}}return new r.SignalingDTMFSender(t)}_traceName(){return"FF"}}t.FF=a},9023:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Safari=void 0;const r=n(9551);class i{static attachStream(e){e.element.srcObject=e.stream}static detachStream(e){e.pauseElement(),e.element.src=""}static getDTMFSender(e,t){return new r.SignalingDTMFSender(t)}static getScreenMedia(){return navigator.mediaDevices.getDisplayMedia({audio:!1,video:!0})}static screenSharingSupported(){return navigator&&navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia?Promise.resolve(!0):Promise.resolve(!1)}static getRTCStats(e){return new Promise(((t,n)=>{let r=[];e.getStats(null).then((e=>{e.forEach((e=>{if("ssrc"==e.type){let t={};t.id=e.id,t.type=e.type,t.timestamp=e.timestamp,r.push(t)}})),t({raw:r,formatted:i.prepareRTCStats(e)})})).catch(n)}))}static prepareRTCStats(e){let t=[];return e.forEach((e=>{"track"!==e.type||e.kind?"outbound-rtp"===e.type||"inbound-rtp"===e.type?t.push(Object.assign(e,{trackId:e.mediaTrackId})):t.push(e):t.push(Object.assign(e,{kind:e.id.includes("audio")?"audio":e.id.includes("video")?"video":void 0}))})),t}_traceName(){return"Safari"}}t.Safari=i},9551:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SignalingDTMFSender=void 0;const r=n(4106),i=n(245);t.SignalingDTMFSender=class{constructor(e){this._id=e}insertDTMF(e,t,n){(""+e).split("").forEach((e=>this.sendKey(e)))}sendKey(e){let t;t="*"==e?10:"#"==e?11:parseInt(e),(t>=0||t<=11)&&i.default.callRemoteFunction(r.RemoteFunction.sendDTMF,this._id,t)}_traceName(){return"SignalingDTMFSender"}}},6518:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Webkit=void 0;const r=n(9551),i=n(125),a=n(1150);class s{static attachStream(e){let t=e.element;try{t.srcObject=e.stream;const n=i.Client.getInstance()._defaultSinkId;null!=n&&"function"==typeof t.setSinkId&&t.setSinkId(n)}catch(e){a.LogManager.get().writeMessage(a.LogCategory.USERMEDIA,"Webkit: ",a.LogLevel.WARNING,JSON.stringify(e))}}static detachStream(e){e.element.srcObject=null,e.pauseElement(),e.element.src=""}static getDTMFSender(e,t){if(!e.createDTMFSender)return new r.SignalingDTMFSender(t);{let t=[];if(e.getLocalStreams().forEach((e=>{e.getAudioTracks().forEach((e=>{t.push(e)}))})),t.length)return e.createDTMFSender(t[0])}}static screenSharingSupported(){return-1!==navigator.userAgent.indexOf("Android")?Promise.resolve(!1):new Promise(((e,t)=>{if(navigator.getDisplayMedia)e(!0);else if(navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia)e(!0);else{const t=r=>{r.origin===window.location.origin&&"VoximplantWebsdkExtensionLoaded"===r.data&&(window.removeEventListener("message",t),clearTimeout(n),e(!0))};window.addEventListener("message",t),window.postMessage("VoximplantWebsdkCheckExtension","*");const n=setTimeout((()=>{window.removeEventListener("message",t),e(!1)}),800)}}))}static getScreenMedia(e=!1){return navigator.getDisplayMedia?navigator.getDisplayMedia({video:!0,audio:e}):navigator.mediaDevices&&navigator.mediaDevices.getDisplayMedia?navigator.mediaDevices.getDisplayMedia({video:!0,audio:e}):new Promise(((t,n)=>{window.postMessage("voximplantWebsdkGetSourceId","*");const r=i=>{if(i.data&&i.origin===window.location.origin&&i.data.result){if("err"===i.data.result)return n(new Error(i.data.reason));if("ok"===i.data.result&&void 0!==i.data.sourceId){window.removeEventListener("message",r);const s={audio:e,video:{mandatory:{chromeMediaSource:"desktop",maxWidth:screen.width>1920?screen.width:1920,maxHeight:screen.height>1080?screen.height:1080,chromeMediaSourceId:i.data.sourceId},optional:[{googTemporalLayeredScreencast:!0}]}};a.LogManager.get().writeMessage(a.LogCategory.USERMEDIA,"[constraints]",a.LogLevel.INFO,JSON.stringify(s)),navigator.mediaDevices.getUserMedia(s).then((e=>{t(e)}),(e=>{n(e)}))}}};window.addEventListener("message",r)}))}static getRTCStats(e){return new Promise(((t,n)=>{let r=[];e.getStats(null).then((e=>{e.forEach((e=>{"outbound-rtp"!=e.type&&"inbound-rtp"!=e.type||r.push(e)})),t({raw:r,formatted:s.prepareRTCStats(e)})})).catch(n)}))}static prepareRTCStats(e){let t=[];return e.forEach((e=>{"inbound-rtp"===e.type&&e.isRemote?t.push(Object.assign(e,{type:"remote-inbound-rtp"})):"outbound-rtp"===e.type&&e.isRemote?t.push(Object.assign(e,{type:"remote-outbound-rtp"})):t.push(e)})),t}_traceName(){return"Webkit"}}t.Webkit=s},4610:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractCall=t.CallMode=t.CallState=void 0;const i=n(3576),a=n(2282),s=n(1150),o=n(4106),c=n(3385),d=n(9411),l=n(245);var g;!function(e){e[e.ALERTING="ALERTING"]="ALERTING",e[e.PROGRESSING="PROGRESSING"]="PROGRESSING",e[e.CONNECTED="CONNECTED"]="CONNECTED",e[e.UPDATING="UPDATING"]="UPDATING",e[e.ENDED="ENDED"]="ENDED"}(g=t.CallState||(t.CallState={})),function(e){e[e.P2P=0]="P2P",e[e.SERVER=1]="SERVER"}(t.CallMode||(t.CallMode={}));class u extends i.EventTarget{constructor(e){super(),this.remoteMuteState=!0,this.logger=s.LogManager.get().createLogger(s.LogCategory.CALL,`Call ${e}`)}id(){return this.settings?this.settings.id:"new"}number(){return this.settings.number}displayName(){return this.settings.displayName}getCallDuration(){return Date.now()-this.startTime}headers(){return this.settings.extraHeaders}state(){return g[this.settings.state]}checkCallMode(e){return this.settings.mode==e}hangup(e){if(this.logger.info("hangup()"),this.settings.state==g.CONNECTED||this.settings.state==g.UPDATING||this.settings.state==g.PROGRESSING)l.default.callRemoteFunction(o.RemoteFunction.disconnectCall,this.settings.id,d.AbstractCallManager.cleanHeaders(e));else{if(this.settings.state!=g.ALERTING)throw new Error("WRONG_CALL_STATE");l.default.callRemoteFunction(o.RemoteFunction.rejectCall,this.settings.id,!0,d.AbstractCallManager.cleanHeaders(e))}}mutePlayback(){this.logger.info("mutePlayback()"),this.remoteMuteState=!1,this.getEndpoints().forEach((e=>{e.mediaRenderers.forEach((e=>{e.setVolume(0)}))}))}unmutePlayback(){this.logger.info("unmutePlayback()"),this.remoteMuteState=!0,this.getEndpoints().forEach((e=>{e.mediaRenderers.forEach((e=>{e.setVolume(1)}))}))}restoreRMute(){this.settings.active&&this.getEndpoints().forEach((e=>{e.mediaRenderers.forEach((e=>{e.setVolume(this.remoteMuteState?1:0)}))}))}sendInfo(e,t,n){this.logger.info(`sendInfo(${e}, ${JSON.stringify(t)})`);let r,i,a=e.indexOf("/");-1==a?(r="application",i=e):(r=e.substring(0,a),i=e.substring(a+1)),l.default.callRemoteFunction(o.RemoteFunction.sendSIPInfo,this.settings.id,r,i,t,d.AbstractCallManager.cleanHeaders(n))}sendMessage(e){this.logger.info("sendMessage()"),this.sendInfo(c.Constants.ZINGAYA_IM_MIME_TYPE,e,{})}addEventListener(e,t){super.addEventListener(e,t)}on(e,t,n){super.on(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}off(e,t){super.off(e,t)}dispatchEvent(e){this.settings.state!==g.UPDATING||e.name!==a.CallEvents.Updated&&e.name!==a.CallEvents.UpdateFailed||this._setState(g.CONNECTED),super.dispatchEvent(e)}onConnected(e,t){if(this.signalingConnected)return!!this.checkState([g.PROGRESSING,g.ALERTING],"onConnected")&&(this._setState(g.CONNECTED),this.startTime=Date.now(),this.dispatchEvent({name:"Connected",call:this,headers:e}),!0)}onFailed(e,t,n){return this.dispatchEvent({name:"Failed",call:this,headers:n,code:e,reason:t}),this._setState(g.ENDED),!0}_setState(e){const t={call:this,old:this.settings.state,new:e,name:a.CallEvents.StateUpdated};return this.settings.state=e,this.dispatchEvent(t),e}checkState(e,t){if(e)if("string"!=typeof e){let n=!1,r=e;for(let e=0;e<r.length;e++)r[e]==this.settings.state&&(n=!0);if(!n)return this.logger.warning("Received "+t+" in invalid state "+this.settings.state),!1}else if(this.settings.state!=e)return this.logger.warning("Received "+t+" in invalid state "+this.settings.state),!1;return!0}}r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"number",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"displayName",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"headers",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"checkCallMode",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"hangup",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"mutePlayback",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"unmutePlayback",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"restoreRMute",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"sendInfo",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"sendMessage",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"addEventListener",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"on",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"removeEventListener",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"off",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"dispatchEvent",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"onConnected",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"onFailed",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"_setState",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],u.prototype,"checkState",null),t.AbstractCall=u},9411:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.AbstractCallManager=void 0;const i=n(3385),a=n(1150),s=n(125),o=n(575),c=n(245),d=n(4610),l=n(2282),g=n(141);class u{constructor(){this.protocolVersion="3",this._h264first=!1,this.iceServers={},this.wsConfMap=new WeakMap,this.confEpManagerMap=new WeakMap,this.endpointManagers=new WeakMap,this._calls={},c.default.addHandler(this),c.default.setRPCHandler(o.RemoteEvent.onICEConfig,((e,t)=>{this.onICEResult(e,!0,t)})),c.default.setRPCHandler(o.RemoteEvent.onICEConfigFailed,(e=>{this.onICEResult(e,!1)})),c.default.setRPCHandler(o.RemoteEvent.handleRejectReinvite,((e,t,n)=>{this.handleRejectReinvite(e,t,n)})),c.default.setRPCHandler(o.RemoteEvent.handleConnectionDisconnected,((e,t,n)=>{this.handleConnectionDisconnected(e,t,n)})),c.default.setRPCHandler(o.RemoteEvent.handleConnectionFailed,((e,t,n,r)=>{this.handleConnectionFailed(e,t,n,r)})),c.default.setRPCHandler(o.RemoteEvent.handleSIPInfo,((e,t,n,r,i)=>{this.handleSIPInfo(e,t,n,r,i)})),c.default.setRPCHandler(o.RemoteEvent.handleSipEvent,(e=>{this.handleSipEvent(e)}))}removeCall(e){delete this._calls[e]}get numCalls(){return this._numCalls}static cleanHeaders(e){let t={};for(let n in e)"X-"!=n.substring(0,2)&&n!=i.Constants.CALL_DATA_HEADER||(t[n]=e[n]);return t}static addCustomDataToHeaders(e){return void 0!==e.customData&&(void 0===e.extraHeaders&&(e.extraHeaders={}),e.extraHeaders["VI-CallData"]=e.customData),e}handleConnectionFailed(e,t,n,r){let i=this.findCall(e,"handleConnectionFailed");i&&"object"==typeof i&&(this.removeCall(e),s.Client.getInstance().stopProgressTone(),i.onFailed(t,n,r))}getEndpointManager(e){return this.endpointManagers.get(e)}onICEResult(e,t,n){if(t){let t=n;if(window.__VIIceServer__&&n){const e=/(stun:|turn:)(.*)*:(\d*)(\?transport=)?(tcp|udp)?/gm,r="$1"+window.__VIIceServer__+":$3$4$5";t=n.map((t=>(Array.isArray(t.urls)?t.urls=t.urls.map((t=>t.replace(e,r))):t.urls=t.urls.replace(e,r),t)))}this.iceServers[e]=t,console.log("ice servers",this.iceServers[e]);const r=this.findCall(e,"onICEResult");r&&(r.peerConnection.setConfiguration?r.peerConnection.setConfiguration(Object.assign(Object.assign({},r.peerConnection.getConfiguration()),{iceServers:t})):this.logger.info("Failed to set ICE config due to RTCPeerConnection doesn't have the setConfiguration method"))}}checkMaximumCallCount(){if(Object.keys(this._calls).length>199)throw new Error("The max calls number limit has been reached.")}handleConnectionDisconnected(e,t,n){let r=this.findCall(e,"handleConnectionDisconnected");r&&(s.Client.getInstance().stopProgressTone(),r.onDisconnected(t,n).then((()=>this.removeCall(e))).catch((t=>{this.logger.error(`Can't remove the call ${e}: ${t.message}`)})))}handleSIPInfo(e,t,n,r,i){let a=this.findCall(e,"handleSIPInfo");a&&a.onInfo(a,t,n,r,i)}handleSipEvent(e){}onSignalingConnected(){}onSignalingClosed(){for(let e in this._calls)this._calls.hasOwnProperty(e)&&(this._calls[e].hangup(),this._calls[e].onFailed(409,"Connection Closed",{}));this._calls={}}onSignalingConnectionFailed(e){}onMediaConnectionFailed(){}handleRejectReinvite(e,t,n){let r=this.findCall(e,"handleReinvite");r&&r.dispatchEvent({code:20,call:r})}async hangupAllCalls(){const e=Object.values(this._calls).map((e=>new Promise((t=>{const n=setTimeout((()=>{this.logger.info(`The timeout of disconnected event for the call ${e.id()} has reached.`),this.removeCall(e.id()),e.settings.state=d.CallState.ENDED,t()}),1500);e.on(l.CallEvents.Disconnected,(()=>{clearTimeout(n),t()}),{once:!0}),e.hangup();const r=this.endpointManagers.get(e);null==r||r.getEndpoints().forEach((e=>r.destructEndpoint(e.id)))}))));await Promise.all(e)}patchAudioMixConf(e,t){var n;if(e.settings.isConference&&t){this.logger.info("patchAudioMixConf(): workaround for mixed audio conferences");const t=null===(n=e.peerConnection.getTransceivers())||void 0===n?void 0:n[0].receiver.track;if(t){e.settings.mixedAudioTrackID=t.id;const n=(()=>{const e=document.createElement("audio");return e.autoplay=!0,e.id=t.id,e.style.display="none",e.srcObject=new MediaStream([t]),e})();document.body.appendChild(n),n.play().catch((e=>{this.logger.warning(`Can't start audio track: ${t.id}. ${e.message}`),s.Client.getInstance().dispatchEvent({name:g.Events.PlaybackError,element:n,error:e})}))}}}}r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"handleConnectionFailed",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"onICEResult",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"handleConnectionDisconnected",null),r([a.LogManager.d_trace(a.LogCategory.CALLEXSERVER)],u.prototype,"handleSIPInfo",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"handleSipEvent",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"onSignalingConnected",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"onSignalingClosed",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"onSignalingConnectionFailed",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u.prototype,"handleRejectReinvite",null),r([a.LogManager.d_trace(a.LogCategory.CALLMANAGER)],u,"addCustomDataToHeaders",null),t.AbstractCallManager=u},3308:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Call=void 0;const i=n(2282),a=n(3385),s=n(1150),o=n(84),c=n(308),d=n(3869),l=n(4106),g=n(125),u=n(7272),h=n(4610),p=n(2957),f=n(9002),m=n(245),v=n(9699);var C=u.default.AudioDeviceManager,_=u.default.StreamManager;class E extends h.AbstractCall{constructor(e,t,n,r){super(e),this.remoteCandidateStore=[],this.PROMISE_REJECT_TIMEOUT=3e3,this._audioSenderTransform=p.Utils.getDefaultStreamTransformer(),this._videoSenderTransform=p.Utils.getDefaultStreamTransformer(),this._callPromises={},this.signalingConnected=!1,this.settings=r,this.settings.id=e,this.settings.displayName=t,this.settings.mode=h.CallMode.P2P,this.settings.active=!0,this.settings.usedSinkId=null,this.settings.incoming=n,this.settings.state=n?h.CallState.ALERTING:h.CallState.PROGRESSING;g.Client.getInstance().config();this.settings.audioDirections={sendAudio:!0},this.settings.videoDirections="boolean"==typeof r.video?{sendVideo:r.video,receiveVideo:!0}:r.video,this.settings.hasEarlyMedia=!1,r.audioSenderTransform&&(this._audioSenderTransform=r.audioSenderTransform),r.videoSenderTransform&&(this._videoSenderTransform=r.videoSenderTransform),navigator.mediaDevices.addEventListener("devicechange",this.onDeviceChange.bind(this))}async onDeviceChange(){if(!this)return;const e=C.get(),t=e.getDefaultAudioSettings();if(t&&!t.inputId&&!t.outputId)return;const n=[],r=[];if((await navigator.mediaDevices.enumerateDevices()).forEach((e=>{let t={id:e.deviceId,name:e.label,group:e.groupId};"audiooutput"===e.kind?r.push(t):"audio"!==e.kind&&"audioinput"!==e.kind||n.push(t)})),t&&("default"!==t.inputId||"default"!==t.outputId)){let i=(e,t)=>{var n,r,i;let a=null;return t&&(a=null===(n=e.find((e=>e.id===t)))||void 0===n?void 0:n.id),a||(a=null===(r=e.find((e=>"default"===e.id)))||void 0===r?void 0:r.id),a||(a=null===(i=e[0])||void 0===i?void 0:i.id),a};const a=i(n,t.inputId),s=i(r,t.outputId);await e.setCallAudioSettings(this,{inputId:a,outputId:s}),await e.setDefaultAudioSettings({inputId:a,outputId:s})}}get promise(){return this._promise}get peerConnection(){return this._peerConnection}set peerConnection(e){this._peerConnection=e}get stateValue(){return this.settings.state}active(){return this.settings.active}_setActive(e){const t={call:this,old:this.settings.active,new:e,name:i.CallEvents.ActiveUpdated};return this.settings.active=e,this.dispatchEvent(t),this.muteIncomingStreams(e),e}muteIncomingStreams(e){this.getEndpoints().forEach((t=>{t.mediaRenderers.forEach((t=>{t.stream.getTracks().forEach((t=>{t.enabled=e}))}))}))}answer(e,t,n){if(this.logger.info(`answer(${JSON.stringify(e)}, ${JSON.stringify(t)}, ${JSON.stringify(n)})`),void 0!==e&&(void 0!==t&&"object"==typeof t||(t={}),t[a.Constants.CALL_DATA_HEADER]=e),void 0!==n&&(n={sendVideo:g.Client.getInstance().config().videoSupport,receiveVideo:g.Client.getInstance().config().videoSupport}),this.settings.state!=h.CallState.ALERTING)throw new Error("WRONG_CALL_STATE");if(n&&"object"==typeof n){const e={sendVideo:!1,receiveVideo:!0};this._peerConnection.setVideoFlags(Object.assign(Object.assign({},e),n))}}decline(e){if(this.logger.info("decline()"),this.settings.state!=h.CallState.ALERTING)throw new Error("WRONG_CALL_STATE");m.default.callRemoteFunction(l.RemoteFunction.rejectCall,this.settings.id,!1,c.CallManager.cleanHeaders(e))}reject(e){if(this.logger.info("reject()"),this.settings.state!=h.CallState.ALERTING)throw new Error("WRONG_CALL_STATE");m.default.callRemoteFunction(l.RemoteFunction.rejectCall,this.settings.id,!0,c.CallManager.cleanHeaders(e))}hangup(e){super.hangup(e),this.logger.info(`Call ${this.settings.id} was disconnected by the user`);Object.keys(c.CallManager.get().calls).some((e=>e!==this.settings.id))||(this.logger.info(`There are no other calls ${JSON.stringify(Object.keys(c.CallManager.get().calls))}, clean local streams`),_.clearUmCache())}sendTone(e){this.logger.info(`sendTone(${e})`),this.settings.active&&this._peerConnection.sendDTMF(e)}muteMicrophone(){this.logger.info("muteMicrophone()"),this.peerConnection.muteMicrophone(!0)}unmuteMicrophone(){this.logger.info("unmuteMicrophone()"),this.peerConnection.muteMicrophone(!1)}showRemoteVideo(e=!0){throw new Error("Deprecated: please use CSS to display each Media Renderer")}setRemoteVideoPosition(e,t){throw new Error("Deprecated: please use CSS to position '#voximplantcontainer' element")}setRemoteVideoSize(e,t){throw new Error("Deprecated: please use CSS to set size of '#voximplantcontainer' element")}setVideoSettings(e,t,n){throw new Error("Deprecated: please use the Hardware interface instead")}getVideoElementId(){throw new Error("Deprecated: please use the Media Renderer interface instead")}onDisconnected(e,t){return new Promise(((n,r)=>{const i=u.default.StreamManager.get()._getScreenSharing(this);if(i&&i.forEach((e=>{u.default.StreamManager.get()._clearScreenSharing(this,e)})),!this.checkState([h.CallState.CONNECTED,h.CallState.ALERTING,h.CallState.PROGRESSING,h.CallState.UPDATING],"onDisconnected"))return r(new Error(`Call in the wrong state ${this.state()}`)),!1;this._setState(h.CallState.ENDED),n(!0),this.dispatchEvent({name:"Disconnected",call:this,headers:e,params:t})}))}onStopRinging(){return!!this.checkState([h.CallState.PROGRESSING,h.CallState.CONNECTED],"onStopRinging")&&(this.dispatchEvent({name:"ProgressToneStop",call:this}),!0)}onRingOut(){return!!this.checkState(h.CallState.PROGRESSING,"onRingOut")&&(this.dispatchEvent({name:"ProgressToneStart",call:this}),!0)}onTransferComplete(){return!!this.checkState(h.CallState.CONNECTED,"onTransferComplete")&&(this.dispatchEvent({name:"TransferComplete",call:this}),!0)}onTransferFailed(){return!!this.checkState(h.CallState.CONNECTED,"onTransferFailed")&&(this.dispatchEvent({name:"TransferFailed",call:this}),!0)}onInfo(e,t,n,r,i){if(e.stateValue==h.CallState.CONNECTED||e.stateValue==h.CallState.PROGRESSING||e.stateValue==h.CallState.ALERTING||e.stateValue==h.CallState.UPDATING){let s=t+"/"+n;if(s==a.Constants.ZINGAYA_IM_MIME_TYPE)this.dispatchEvent({name:"onSendMessage",call:this,text:r});else if(s==a.Constants.P2P_SPD_FRAG_MIME_TYPE){let t=JSON.parse(r);for(let n in t)void 0!==e&&void 0!==e.peerConnection?e.peerConnection.addRemoteCandidate(t[n][1],t[n][0]):(this.logger.info("Candidate skipped. Connection not created yet."),this.remoteCandidateStore.push(t[n]))}else s===a.Constants.VI_CONF_PARTICIPANT_INFO_ADDED||s===a.Constants.VI_CONF_PARTICIPANT_INFO_REMOVED||s===a.Constants.VI_CONF_PARTICIPANT_INFO_UPDATED||this.dispatchEvent({name:"InfoReceived",call:this,body:r,headers:i,mimeType:s});return!0}this.logger.warning("received handleSIPInfo for call: "+e.id()+" in invalid state: "+e.state())}setActive(e){return this.logger.info(`setActive(${e})`),new Promise(((t,n)=>{if(e!==this.settings.active)return"firefox"===d.default.getWSVendor()?(this.sendInfo(a.Constants.VI_HOLD_EMUL,JSON.stringify({hold:!e})),void t(this.dispatchUpdatedEventWith(!0))):void(this.settings.state==h.CallState.CONNECTED?(this._setState(h.CallState.UPDATING),this._setActive(e),e?m.default.callRemoteFunction(l.RemoteFunction.unhold,this.settings.id):m.default.callRemoteFunction(l.RemoteFunction.hold,this.settings.id),t(this.dispatchUpdatedEventWith(!0))):(this.dispatchUpdatedEventWith(!1,v.CallFailedUpdateReasons.holdCallInWrongState),n({name:i.CallEvents.UpdateFailed,code:11,call:this})));t(this.dispatchUpdatedEventWith(!1,v.CallFailedUpdateReasons.sameActiveState(e)))}))}canStartSendingCandidates(){void 0===this._peerConnection&&(this._peerConnection=o.PCFactory.get().peerConnections[this.settings.id]),this._peerConnection.canStartSendingCandidates()}_addCallPromise(e,t){var n;const r=Object.assign({},t);null!==(n=r.expire)&&void 0!==n||(r.expire=setTimeout(t.reject,this.PROMISE_REJECT_TIMEOUT)),this._callPromises[e]=r}_resolveCallPromise(e){e.forEach((e=>{var t;const n=this._callPromises[e];n&&(n.resolve(null===(t=n.event)||void 0===t?void 0:t.call(n,!0)),clearTimeout(n.expire),this._callPromises[e]=void 0)}))}_rejectCallPromise(e){e.forEach((e=>{var t;const n=this._callPromises[e];n&&(n.reject(null===(t=n.event)||void 0===t?void 0:t.call(n,!1)),clearTimeout(n.expire),this._callPromises[e]=void 0)}))}sendVideo(e){if(this.logger.info(`sendVideo(${e})`),"boolean"!=typeof e)return Promise.reject(this.dispatchUpdatedEventWith(!1,v.CallFailedUpdateReasons.wrongTypeOfArgument(e)));if(!this.active())return Promise.reject(this.dispatchUpdatedEventWith(!1,v.CallFailedUpdateReasons.mediaOnHold));let t=this.peerConnection?this.peerConnection.getTransceivers().filter((e=>{var t;return"video"===(null===(t=e.sender.track)||void 0===t?void 0:t.kind)})):[];const n=u.default.StreamManager.get()._getScreenSharing(this)||[];return this.peerConnection?e&&n.length?new Promise(((t,r)=>{this._addCallPromise("sendVideo",{event:this.dispatchUpdatedEventWith.bind(this),resolve:t,reject:r}),this.settings.videoDirections.sendVideo||(this.settings.videoDirections.sendVideo=!0);const i=n[0];u.default.StreamManager.get()._clearScreenSharing(this,i).then((()=>u.default.StreamManager.get().getCallStream(this,!0))).then((t=>{let n=t.getVideoTracks();this.peerConnection.replaceSharingToVideo(n[0],"video"),this.settings.videoDirections.sendVideo=e})).catch((()=>{this._rejectCallPromise(["sendVideo"])}))})):!0===this.settings.videoDirections.sendVideo&&e||!1===this.settings.videoDirections.sendVideo&&!e&&!t.length?Promise.resolve({call:this,name:i.CallEvents.Updated,result:!0}):new Promise(((t,n)=>{this.settings.videoDirections.sendVideo=e,this.peerConnection.enableVideo(e),this._addCallPromise("sendVideo",{event:this.dispatchUpdatedEventWith.bind(this),resolve:t,reject:n})})):Promise.resolve({call:this,name:i.CallEvents.Updated,result:!0})}sendMedia(e,t){return this._setState(h.CallState.UPDATING),null==e&&(e=this.settings.audioDirections.sendAudio),null==t&&(t=this.settings.videoDirections.sendVideo),this.peerConnection.sendMedia(e,t).then((n=>(null!=t&&(this.settings.videoDirections.sendVideo=t),null!=e&&(this.settings.audioDirections.sendAudio=e),n)))}shareScreen(e,t){return void 0===e&&void 0===t||this.logger.warning("The `showLocalView` and `replaceVideo` arguments of the `shareScreen` method are deprecated since v4.6.0. The `shareScreen` method now replaces local and sent video with screen sharing by default, sending video and sharing screen now unavailable.\nTo send both video and screen sharing in a conference, use the `joinAsSharing` method to join as a separate screen sharing member."),this.logger.info("shareScreen()"),this.active()?new Promise(((e,t)=>{u.default.StreamManager.get()._getScreenSharing(this).length&&(this.logger.warning("Screen sharing already active."),t(new Error("Screen sharing already active."))),d.default.isScreenSharingSupported?u.default.StreamManager.get()._newScreenSharing(this).then((t=>{if(this.settings.videoDirections.sendVideo){let n=[];t.stream.getTracks().forEach((e=>{"video"===e.kind&&n.push(this.peerConnection.replaceSharingToVideo(e,"sharing"))})),Promise.all(n).then((()=>{this.peerConnection.restoreMute(),e(this.dispatchUpdatedEventWith(!0))}))}else this.peerConnection.addCustomMedia(t.stream).then((t=>{this.peerConnection.restoreMute(),u.default.StreamManager.get().isLocalVideoRequested&&u.default.StreamManager.get().updateLocalVideo("sharing"),e(this.dispatchUpdatedEventWith(!0))}))})).catch((e=>{this.logger.warning(e.message),t(e)})):(this.logger.warning("Sorry, this browser does not support screen sharing."),t(new Error("Sorry, this browser does not support screen sharing.")))})):Promise.reject(this.dispatchUpdatedEventWith(!1,v.CallFailedUpdateReasons.mediaOnHold))}stopSharingScreen(){return this.logger.info("stopSharingScreen()"),this.active()?new Promise(((e,t)=>{const n=u.default.StreamManager.get()._getScreenSharing(this);if(n){let r=n.length;n.forEach((n=>{u.default.StreamManager.get()._clearScreenSharing(this,n).then((()=>this.settings.videoDirections.sendVideo?u.default.StreamManager.get().updateCallStream(this):this.peerConnection.removeCustomMedia(n.stream))).then((()=>{this.settings.videoDirections.sendVideo&&this.settings.simulcast&&this.settings.isConference&&this.peerConnection.getTransceivers().forEach((e=>{if("inactive"!==e.currentDirection&&e.sender.track&&"video"===e.sender.track.kind){const t=p.Utils.buildSimulcastLayers({trackSettings:e.sender.track.getSettings(),trackType:"video",profileName:this.settings.simulcastProfileName});this.peerConnection.setEncodingsParams(e,t)}})),n.stream=void 0,r--,r<=0&&(u.default.StreamManager.get().updateLocalVideo("video"),this.peerConnection.restoreMute(),this.dispatchEvent({name:i.CallEvents.SharingStopped,call:this,result:!0}),e({name:i.CallEvents.SharingStopped,result:!0,call:this}))})).catch((e=>{this.logger.warning(e.message),t(e)}))}))}else this.logger.warning("Sorry, screen sharing not started yet."),t(new Error("Sorry, screen sharing not started yet."))})):Promise.reject(this.dispatchUpdatedEventWith(!1,v.CallFailedUpdateReasons.mediaOnHold))}getRemoteAudioStreams(){throw new Error("Deprecated: please use the Media Renderer interface of each call instead")}getRemoteVideoStreams(){throw new Error("Deprecated: please use the Media Renderer interface of each call instead")}useAudioOutput(e){throw new Error("Deprecated: please use the Media Renderer interface of each call instead")}getAudioElementId(){throw new Error("Deprecated: please use the Media Renderer interface of each call instead")}runIncomingReInvite(e,t){if(this.settings.state===h.CallState.UPDATING)m.default.callRemoteFunction(l.RemoteFunction.rejectReInvite,this.settings.id,{});else{this._setState(h.CallState.UPDATING);const n=c.CallManager.get().isSDPHasVideo(t);this.peerConnection.handleRemoteOffer(e,t,n).then((()=>{this.peerConnection.restoreMute(),this.peerConnection.restoreVideoSending()}))}}setActiveForce(e){this._setActive(e)}getEndpoints(){return c.CallManager.get().getEndpointManager(this).getEndpoints()}scaleVideoResolutionDownBy(e){const t=[];return this.peerConnection.getTransceivers().forEach((n=>{if(n.currentDirection&&-1!==n.currentDirection.indexOf("send")||n.direction&&-1!==n.direction.indexOf("send")){const r=n.sender.getParameters();-1!=e?r.encodings[0].scaleResolutionDownBy=e:delete r.encodings[0].scaleResolutionDownBy,t.push(n.sender.setParameters(r))}})),Promise.all(t)}dispatchUpdatedEventWith(e,t){const n=Object.assign({name:i.CallEvents.Updated,result:e,call:this},t&&{reason:t});return this.dispatchEvent(n),n}get audioSenderTransform(){return this._audioSenderTransform}set audioSenderTransform(e){this._audioSenderTransform=e,this.peerConnection&&this.peerConnection.updateSenderTransformers()}get videoSenderTransform(){return this._videoSenderTransform}set videoSenderTransform(e){this._videoSenderTransform=e,this.peerConnection&&this.peerConnection.updateSenderTransformers()}get audioMediaTrackTransform(){return this._audioMediaTrackTransform}set audioMediaTrackTransform(e){this._audioMediaTrackTransform=e,this.peerConnection&&this.peerConnection.updateSenderTrackTransformers()}get videoMediaTrackTransform(){return this._videoMediaTrackTransform}set videoMediaTrackTransform(e){this._videoMediaTrackTransform=e,this.peerConnection&&this.peerConnection.updateSenderTrackTransformers()}_traceName(){return"Call"}}r([f.debounceDecorator(200)],E.prototype,"onDeviceChange",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"active",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"_setActive",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"answer",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"decline",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"reject",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"hangup",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"sendTone",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"muteMicrophone",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"unmuteMicrophone",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"showRemoteVideo",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"setRemoteVideoPosition",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"setRemoteVideoSize",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"setVideoSettings",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"getVideoElementId",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"onDisconnected",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"onStopRinging",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"onRingOut",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"onTransferComplete",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"onTransferFailed",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"onInfo",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"setActive",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"canStartSendingCandidates",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"sendVideo",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"shareScreen",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"stopSharingScreen",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"getRemoteAudioStreams",null),r([s.LogManager.d_trace(s.LogCategory.CALL)],E.prototype,"getRemoteVideoStreams",null),r([s.LogManager.d_trace(s.LogCategory.CLIENT)],E.prototype,"useAudioOutput",null),r([s.LogManager.d_trace(s.LogCategory.CLIENT)],E.prototype,"getAudioElementId",null),r([s.LogManager.d_trace(s.LogCategory.CLIENT)],E.prototype,"runIncomingReInvite",null),r([s.LogManager.d_trace(s.LogCategory.CLIENT)],E.prototype,"setActiveForce",null),t.Call=E},6081:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallError=void 0,function(e){e[e.NUMBER_IS_BUSY=486]="NUMBER_IS_BUSY",e[e.TERMINATED=487]="TERMINATED",e[e.INVALID_NUMBER=404]="INVALID_NUMBER",e[e.NUMBER_IS_UNAVAILABLE=480]="NUMBER_IS_UNAVAILABLE",e[e.REJECTED=603]="REJECTED",e[e.INSUFFICIENT_FUNDS=402]="INSUFFICIENT_FUNDS",e[e.ACCESS_DENIED=403]="ACCESS_DENIED",e[e.NOT_CONNECTED_TO_VOXIMPLANT=1003]="NOT_CONNECTED_TO_VOXIMPLANT",e[e.NOT_AUTHORIZED=1004]="NOT_AUTHORIZED",e[e.HTTP_NOT_SECURE=1008]="HTTP_NOT_SECURE"}(t.CallError||(t.CallError={}))},2282:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallEvents=void 0,function(e){e[e.Connected="Connected"]="Connected",e[e.Disconnected="Disconnected"]="Disconnected",e[e.Failed="Failed"]="Failed",e[e.ProgressToneStart="ProgressToneStart"]="ProgressToneStart",e[e.ProgressToneStop="ProgressToneStop"]="ProgressToneStop",e[e.MessageReceived="onSendMessage"]="MessageReceived",e[e.InfoReceived="InfoReceived"]="InfoReceived",e[e.TransferComplete="TransferComplete"]="TransferComplete",e[e.TransferFailed="TransferFailed"]="TransferFailed",e[e.ICETimeout="ICETimeout"]="ICETimeout",e[e.RTCStatsReceived="RTCStatsReceived"]="RTCStatsReceived",e[e.CallStatsReceived="CallStatsReceived"]="CallStatsReceived",e[e.MediaElementCreated="MediaElementCreated"]="MediaElementCreated",e[e.MediaElementRemoved="MediaElementRemoved"]="MediaElementRemoved",e[e.ICECompleted="ICECompleted"]="ICECompleted",e[e.Updated="Updated"]="Updated",e[e.PendingUpdate="PendingUpdate"]="PendingUpdate",e[e.UpdateFailed="UpdateFailed"]="UpdateFailed",e[e.LocalVideoStreamAdded="LocalVideoStreamAdded"]="LocalVideoStreamAdded",e[e.EndpointAdded="EndpointAdded"]="EndpointAdded",e[e.EndpointRemoved="EndpointRemoved"]="EndpointRemoved",e[e.StateUpdated="StateUpdated"]="StateUpdated",e[e.ActiveUpdated="ActiveUpdated"]="ActiveUpdated",e[e.QualityIssueCodecMismatch="QualityIssueCodecMismatch"]="QualityIssueCodecMismatch",e[e.QualityIssueHighMediaLatency="QualityIssueHighMediaLatency"]="QualityIssueHighMediaLatency",e[e.QualityIssueICEDisconnected="QualityIssueICEDisconnected"]="QualityIssueICEDisconnected",e[e.QualityIssueLocalVideoDegradation="QualityIssueLocalVideoDegradation"]="QualityIssueLocalVideoDegradation",e[e.QualityIssueLowBandwidth="QualityIssueLowBandwidth"]="QualityIssueLowBandwidth",e[e.QualityIssueNoAudioSignal="QualityIssueNoAudioSignal"]="QualityIssueNoAudioSignal",e[e.QualityIssuePacketLoss="QualityIssuePacketLoss"]="QualityIssuePacketLoss",e[e.SharingStopped="SharingStopped"]="SharingStopped"}(t.CallEvents||(t.CallEvents={}))},304:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.CallExMedia=void 0;const i=n(3308),a=n(1150),s=n(4106),o=n(3385),c=n(125),d=n(7272),l=n(2282),g=n(245);class u extends i.Call{answer(e,t,n){super.answer(e,t),void 0!==e&&(void 0!==t&&"object"==typeof t||(t={}),t[o.Constants.CALL_DATA_HEADER]=e),this._answerHeaders=t;c.Client.getInstance().config();return new Promise(((e,t)=>{this._answerPromise=e,this.settings.videoDirections={sendVideo:"object"==typeof n&&n.sendVideo,receiveVideo:!0};const r=()=>{d.default.StreamManager.get().getCallStream(this).then((e=>{this._peerConnection.fastAddCustomMedia(e),this._peerConnection.getLocalAnswer().then((e=>{const t={mids:this.peerConnection.getMidKinds()};g.default.callRemoteFunction(s.RemoteFunction.acceptCall,this.id(),this._answerHeaders,e.sdp,t),this._peerConnection._fixFFSoundBug(),this._answerPromise()})).catch((()=>{}))})).catch((e=>t(e)))};this._peerConnection?r():setTimeout(r,600)}))}setActive(e){return e===this.settings.active?new Promise(((e,t)=>{t({name:l.CallEvents.Updated,result:!1,call:this})})):(this._setActive(e),this.peerConnection.hold(!e))}_traceName(){return"CallExMedia"}}r([a.LogManager.d_trace(a.LogCategory.CALL)],u.prototype,"answer",null),r([a.LogManager.d_trace(a.LogCategory.CALL)],u.prototype,"setActive",null),t.CallExMedia=u},8748:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.CallExServer=void 0;const i=n(3308),a=n(308),s=n(1150),o=n(4106),c=n(4610),d=n(245);class l extends i.Call{constructor(e,t,n,r){super(e,t,n,r),this.settings.mode=c.CallMode.SERVER}answer(e,t){super.answer(e,t);const n={mids:this.peerConnection.getMidKinds()};d.default.callRemoteFunction(o.RemoteFunction.acceptCall,this.settings.id,a.CallManager.cleanHeaders(t),n)}_traceName(){return"CallExServer"}}r([s.LogManager.d_trace(s.LogCategory.CALLEXSERVER)],l.prototype,"answer",null),t.CallExServer=l},9699:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CallFailedUpdateReasons=void 0,t.CallFailedUpdateReasons={mediaOnHold:"Operation can't be performed due to the call isn't active",holdCallInWrongState:"Trying to make the call inactive in the wrong state",sameActiveState:e=>"Call already "+(e?"active":"inactive"),wrongTypeOfArgument:e=>`An argument for the sendVideo() method must be boolean type. Has received ${e}`}},308:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.CallManager=void 0;const i=n(2282),a=n(2957),s=n(3947),o=n(3385),c=n(1150),d=n(84),l=n(125),g=n(6746),u=n(4106),h=n(575),p=n(3421),f=n(8879),m=n(7272);var v=m.default.StreamManager;const C=n(6278),_=n(9411),E=n(304),S=n(8748),y=n(9574),M=n(4610),R=n(9553),L=n(245);class T extends _.AbstractCallManager{constructor(){super(),this.logger=c.LogManager.get().createLogger(c.LogCategory.SIGNALING,this._traceName()),L.default.setRPCHandler(h.RemoteEvent.handleIncomingConnection,((e,t,n,r,i,a)=>{this.handleIncomingConnection(e,t,n,r,i,a)})),L.default.setRPCHandler(h.RemoteEvent.handleConnectionConnected,((e,t,n,r,i)=>{this.handleConnectionConnected(e,t,n,i)})),L.default.setRPCHandler(h.RemoteEvent.handleRingOut,(e=>{this.handleRingOut(e)})),L.default.setRPCHandler(h.RemoteEvent.stopRinging,(e=>{this.stopRinging(e)})),L.default.setRPCHandler(h.RemoteEvent.handleTransferStarted,(e=>{this.handleTransferStarted(e)})),L.default.setRPCHandler(h.RemoteEvent.handleTransferComplete,(e=>{this.handleTransferComplete(e)})),L.default.setRPCHandler(h.RemoteEvent.handleTransferFailed,(e=>{this.handleTransferFailed(e)})),L.default.setRPCHandler(h.RemoteEvent.handleReInvite,((e,t,n,r)=>{this.handleInReinvite(e,t,n,r)})),L.default.setRPCHandler(h.RemoteEvent.handleAcceptReinvite,((e,t,n,r)=>{this.handleReinvite(e,t,n,r)})),L.default.setRPCHandler(h.RemoteEvent.startEarlyMedia,((e,t,n,r)=>{const i=this.findCall(e,"startEarlyMedia");i&&(i.settings.hasEarlyMedia=!0),this.startEarlyMedia(e,t,n,r)}))}static get(){return void 0===this.inst&&(this.inst=new T),this.inst}get calls(){return this._calls}getCallInstance(e,t,n,r){const i="3"==this.protocolVersion?new E.CallExMedia(e,t,n,r):new S.CallExServer(e,t,n,r);return this.endpointManagers.set(i,new y.default(i)),this._calls[e]=i,i}call(e){this.checkMaximumCallCount();let t={number:null,video:{sendVideo:!1,receiveVideo:!1},isAudio:!1,customData:null,extraHeaders:{},wiredLocal:!0,wiredRemote:!0,H264first:this._h264first,VP8first:!1,forceActive:!1,extraParams:{}},n=a.Utils.mixObjectToLeft(t,e);n=T.addCustomDataToHeaders(n);let r=a.Utils.generateUUID();if(this._calls[r])throw this.logger.error("Call "+r+" already exists"),new Error("Internal error");const i=this.getCallInstance(r,s.Authenticator.get().displayName,!1,n);n.H264first&&(i.rearangeCodecs=p.CodecSorterHelpers.H264Sorter);let c=!1;return i.settings.active=!0,Object.keys(this._calls).length>1&&!n.forceActive&&(i.setActiveForce(!1),c=!0),void 0===n.extraHeaders[o.Constants.DIRECT_CALL_HEADER]&&"2"==this.protocolVersion?L.default.callRemoteFunction(u.RemoteFunction.createCall,-1,n.number,n.video,r,null,null,n.extraHeaders,n.extraParams):d.PCFactory.get().setupDirectPC(r,g.PeerConnectionMode.P2P,e.video,c).then((e=>{i.peerConnection=d.PCFactory.get().peerConnections[r];const t={mids:i.peerConnection.getMidKinds()};L.default.callRemoteFunction(u.RemoteFunction.createCall,-1,n.number,!0,r,null,null,n.extraHeaders,"",e.sdp,t)})).catch((e=>{this.handleConnectionFailed(i.id(),403,"Media access denied",{})})),i.sendVideo(n.video.sendVideo||!1).catch((()=>{})),i}callConference(e){this.checkMaximumCallCount();let t={number:null,video:{sendVideo:!1,receiveVideo:!1},customData:null,extraHeaders:{},wiredLocal:!0,wiredRemote:!0,H264first:this._h264first,VP8first:!1,forceActive:!1,extraParams:{},simulcast:!1},n=a.Utils.mixObjectToLeft(t,e);n=T.addCustomDataToHeaders(n);let r=a.Utils.generateUUID();if(this._calls[r])throw this.logger.error("Call "+r+" already exists"),new Error("Internal error");const i=this.getCallInstance(r,s.Authenticator.get().displayName,!1,n);n.H264first&&(i.rearangeCodecs=p.CodecSorterHelpers.H264ConfSorter);let o=!1;return i.settings.active=!0,i.settings.isConference=!0,Object.keys(this._calls).length>1&&!n.forceActive&&(i.setActiveForce(!1),o=!0),d.PCFactory.get().setupDirectPC(r,g.PeerConnectionMode.CONFERENCE,e.video,o).then((e=>{i.peerConnection=d.PCFactory.get().peerConnections[r];const t={mids:i.peerConnection.getMidKinds()};L.default.callRemoteFunction(u.RemoteFunction.callConference,-1,n.number,!0,r,null,null,n.extraHeaders,"",e.sdp,t)})).catch((e=>{this.handleConnectionFailed(i.id(),403,"Media access denied",{})})),i.sendVideo(n.video.sendVideo||!1),this.confEpManagerMap.set(i,new R.ConferenceEndpointManager(i)),this.wsConfMap.set(i,new C.ConfSignaling(i)),i}getConferenceEndpointManager(e){return this.confEpManagerMap.get(e)}getConfSignaling(e){return this.wsConfMap.get(e)}isSDPHasVideo(e){const t=e.indexOf("m=video");if(-1===t)return!1;const n=e.indexOf("a=sendrecv",t),r=e.indexOf("a=sendonly",t),i=e.indexOf("m=",t);return-1!==n&&(n<i||-1===i)||-1!==r&&(r<i||-1===i)}transferCall(e,t){let n=[e,t];for(let e=0;e<n.length;e++){let t=this._calls[n[e].id()];if(!t)return void this.logger.error("trying to transfer unknown call "+t.id());if(t.stateValue!=M.CallState.CONNECTED)return void this.logger.error("trying to transfer call "+t.id()+" in state "+t.state())}L.default.callRemoteFunction(u.RemoteFunction.transferCall,e.id(),t.id())}removeCall(e){var t;const n=this._calls[e];if(super.removeCall(e),(null==n?void 0:n.settings.isConference)&&(null==n?void 0:n.settings.mixedAudioTrackID)){const e=document.getElementById(n.settings.mixedAudioTrackID);e&&(e.src=null,e.srcObject=null,null===(t=e.parentElement)||void 0===t||t.removeChild(e))}m.default.StreamManager.get().updateLocalVideo();Object.values(this._calls).some((e=>"ENDED"!==e.state()))||v.clearUmCache()}setProtocolVersion(e){this.protocolVersion=e}useVideoSource(e){let t=Object.keys(this._calls).length;return new Promise(((n,r)=>{for(let i in this._calls)if(this._calls.hasOwnProperty(i)){const a=this._calls[i];m.default.CameraManager.get().setCallVideoSettings(a,Object.assign(Object.assign({},m.default.CameraManager.get().getCallVideoSettings(a)),{cameraId:e})),m.default.StreamManager.get().updateCallStream(a).then((e=>{t--,t<=0&&n()}),(e=>{r(e)}))}}))}setVideoSettings(e){let t=Object.keys(this._calls).length;return new Promise(((n,r)=>{0===t&&n();for(let i in this._calls)if(this._calls.hasOwnProperty(i)){const a=this._calls[i];m.default.CameraManager.get().setCallVideoSettings(a,m.default.CameraManager.legacyParamConverter(e)).then((e=>{t--,t<=0&&n()}),(e=>{r(e)}))}}))}useAudioSource(e){let t=Object.keys(this._calls).length;return new Promise(((n,r)=>{0===t&&n();for(let i in this._calls)if(this._calls.hasOwnProperty(i)){const a=this._calls[i];m.default.AudioDeviceManager.get().setCallAudioSettings(a,Object.assign(Object.assign({},m.default.AudioDeviceManager.get().getCallAudioSettings(a)),{inputId:e})).then((e=>{t--,t<=0&&n()}),(e=>{r(e)}))}}))}handleIncomingConnection(e,t,n,r,i,a){if(this._calls[e])throw this.logger.error("Call "+e+" already exists"),new Error("Internal error");let s={number:t,extraHeaders:r,video:f.SDPMuggle.detectDirections(i).some((e=>"video"===e.type&&("sendonly"===e.direction||"sendrecv"===e.direction))),wiredLocal:!0,wiredRemote:!0,forceActive:!1};const c=this.getCallInstance(e,n,!0,s);this._h264first&&(c.rearangeCodecs=p.CodecSorterHelpers.H264Sorter);let g=!1;if(c.settings.active=!0,Object.keys(this._calls).length>1&&(c.setActiveForce(!1),g=!0),l.Client.getInstance().onIncomingCall(e,t,n,r,this.isSDPHasVideo(i)),void 0===s.extraHeaders[o.Constants.DIRECT_CALL_HEADER]&&"2"==this.protocolVersion)c.peerConnection=d.PCFactory.get().getPeerConnect(e);else{let t=[];f.SDPMuggle.checkIsVimsSectionExistsIn(i)&&!window.__VIIceServer__||(t=this.iceServers[e],f.SDPMuggle.checkIsVimsSectionExistsIn(i)||(c.settings.isDirect=!0));const n=c.settings.incoming?f.SDPMuggle.fixSetupSection(i):i;if(d.PCFactory.get().incomeDirectPC(e,{receiveVideo:!0,sendVideo:!0},n,g,t).then((e=>{c.peerConnection=e,c.remoteCandidateStore.length&&(this.logger.info(`Apply skipped candidates for call ${c.id()}`),c.remoteCandidateStore.forEach((e=>{c.peerConnection.addRemoteCandidate(e[1],e[0])})),c.remoteCandidateStore=[])})),!c.settings.isConference&&a){this.endpointManagers.get(c).setMIDInfo(a)}}}handleRingOut(e){let t=this.findCall(e,"handleRingOut");t&&(l.Client.getInstance().playProgressTone(!0),t.onRingOut(),t.canStartSendingCandidates())}handleConnectionConnected(e,t,n,r){let i=this.findCall(e,"handleConnectionConnected");if(i){if(this.logger.info(`handleConnectionConnected(), received SDP: \n${n}`),!i.settings.isConference&&r){this.endpointManagers.get(i).setMIDInfo(r)}if(this.patchAudioMixConf(i,r),n&&!f.SDPMuggle.checkIsVimsSectionExistsIn(n)&&(i.settings.isDirect=!0),i.signalingConnected=!0,i.canStartSendingCandidates(),i.onConnected(t,n),m.default.StreamManager.get().updateLocalVideo(),void 0!==n&&n.length>0){const e=n.indexOf("m=video");if(-1!==e){const t=n.indexOf("a=sendrecv",e),r=n.indexOf("a=sendonly",e),i=n.indexOf("a=recvonly",e),a=n.indexOf("a=inactive",e);-1===t&&-1===r&&-1===i&&-1===a&&(n+="a=inactive\r\n")}i.settings.hasEarlyMedia||i.peerConnection.processRemoteAnswer(t,n)}}}startEarlyMedia(e,t,n,r){let i=this.findCall(e,"startEarlyMedia");if(i){if(this.logger.info(`startEarlyMedia(), received SDP: \n${n}`),i.settings.hasEarlyMedia=!0,void 0!==n&&(i.peerConnection.processRemoteAnswer(t,n),!i.settings.isConference&&r)){this.endpointManagers.get(i).setMIDInfo(r)}l.Client.getInstance().stopProgressTone()}}stopRinging(e){let t=this.findCall(e,"stopRinging");t&&(t.canStartSendingCandidates(),l.Client.getInstance().stopProgressTone(),t.onStopRinging())}handleTransferStarted(e){}handleTransferComplete(e){let t=this.findCall(e,"handleTransferComplete");t&&t.onTransferComplete()}handleTransferFailed(e){let t=this.findCall(e,"handleTransferFailed");t&&t.onTransferFailed()}async handleReinvite(e,t,n,r){let i=this.findCall(e,"handleReinvite");if(!i)return;!i.settings.isConference&&r&&i.active()&&await this.getEndpointManager(i).setMIDInfo(r);const a=this.isSDPHasVideo(n);i.peerConnection.handleReinvite(t,n,a)}handleInReinvite(e,t,n,r){let a=this.findCall(e,"handleReinvite");a&&(this.logger.info(`handleInReinvite(), received SDP: \n${n}`),this.getEndpointManager(a).setMIDInfo(r).then((()=>{const e=a.settings.incoming?f.SDPMuggle.fixSetupSection(n):n;a.runIncomingReInvite(t,e),a.dispatchEvent({name:i.CallEvents.PendingUpdate,result:!0,call:a})})))}findCall(e,t){let n=this._calls[e];return""===e&&(n=this._calls[Object.keys(this._calls)[0]]),void 0===n?null:n}recalculateNumCalls(){this._numCalls=0;for(let e in this._calls)this._calls.hasOwnProperty(e)&&this._numCalls++}icerestart(){Object.values(this._calls).forEach((e=>{let t=e.peerConnection.impl.iceConnectionState;this.logger.info(`ICE connection state is ${t} for call ${e.id()}`),e.settings.isDirect&&e.settings.incoming||"stable"!==e.peerConnection.impl.signalingState||"failed"!==t&&"disconnected"!==t||e.peerConnection._runReinvite(!0)}))}_traceName(){return"CallManager"}}r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"call",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"removeCall",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"useVideoSource",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"setVideoSettings",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"useAudioSource",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleIncomingConnection",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleRingOut",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleConnectionConnected",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"stopRinging",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleTransferStarted",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleTransferComplete",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleTransferFailed",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleReinvite",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"handleInReinvite",null),r([c.LogManager.d_trace(c.LogCategory.CALLMANAGER)],T.prototype,"findCall",null),t.CallManager=T},9144:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Endpoint=void 0;const r=n(3576),i=n(8597),a=n(1150);class s extends r.EventTarget{constructor(e=!0){super(),this.isDefault=e,this.sipUri="",this.displayName="",this.userName="",this.wasAdded=!1,this.mediaRenderers=[],this.addDefaultEventListener(i.EndpointEvents.RemoteMediaAdded,(e=>{e.mediaRenderer.renderDefault()})),this.logger=a.LogManager.get().createLogger(a.LogCategory.ENDPOINT,`${this._traceName()} ${this.id}`)}enableAll(){const e=this.mediaRenderers.map((e=>e.enable()));return Promise.all(e)}disableAll(){const e=this.mediaRenderers.map((e=>e.disable()));return Promise.all(e)}useAudioOutput(e){this.logger.info(`useAudioOutput(${e})`),this.mediaRenderers&&this.mediaRenderers.forEach((t=>t.useAudioOutput(e)))}updateInfo(e){this.place=e.place,this.sipUri=e.sipURI,this.displayName=e.displayName,this.userName=e.username}_traceName(){return"Endpoint"}}t.Endpoint=s},8597:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.EndpointEvents=void 0,function(e){e.InfoUpdated="InfoUpdated",e.Removed="Removed",e.RemoteMediaAdded="RemoteMediaAdded",e.RemoteMediaRemoved="RemoteMediaRemoved",e.RemoteMediaUpdated="RemoteMediaUpdated",e.RTCStatsReceived="RTCStatsReceived",e.VoiceStart="VoiceStart",e.VoiceEnd="VoiceEnd",e.MediaRenderDisabled="MediaRenderDisabled",e.MediaRenderEnabled="MediaRenderEnabled"}(t.EndpointEvents||(t.EndpointEvents={}))},9574:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0});const i=n(9144),a=n(3992),s=n(2282),o=n(8597),c=n(7222),d=n(8707),l=n(308);class g{constructor(e){this.call=e,this.transceiverBucket=[],this.displayRules={new:{audio:["default"],video:["default"]}},this.transceiverEndpointHashMap=new WeakMap,this.activeEndpoints=new Map,this.activeMR=new Map,this.mutex=new a.TaskMutex,this.endpointInfo={endpoints:{},reinviteCauses:[]}}setDisplayRules(e){throw new Error("not implemented")}setMIDInfo(e){const t=JSON.parse(e);t.endpoints[""]&&(t.endpoints[this.call.id()]=t.endpoints[""],delete t.endpoints[""]);const n=this.diffEndpoints(t);this.endpointInfo=t;for(let e in n.added)n.added.hasOwnProperty(e)&&this.constructEndpoint(e,n.added[e]);for(let e in n.removed)n.removed.hasOwnProperty(e)&&this.destructEndpoint(e);for(let e in n.changed)if(n.changed.hasOwnProperty(e)){const r=this.activeEndpoints.get(e);for(let i in n.changed[e].midDiff.added)n.changed[e].midDiff.added.hasOwnProperty(i)&&this.transceiverBucket.forEach((n=>{n.mid===i&&this.createNewMR(n,r,t.endpoints[e].mids)}));for(let i in n.changed[e].midDiff.changed)if(n.changed[e].midDiff.changed.hasOwnProperty(i)){const a=this.activeMR.get(i);a?(a.kind=n.changed[e].midDiff.changed[i],r.dispatchEvent({name:o.EndpointEvents.RemoteMediaUpdated,call:this.call,endpoint:r,mediaRenderer:a})):this.transceiverBucket.forEach((n=>{n.mid===i&&this.createNewMR(n,r,t.endpoints[e].mids)}))}for(let i in n.changed[e].midDiff.removed)if(n.changed[e].midDiff.removed.hasOwnProperty(i)){let n=t.endpoints[e].mids;if("ViewerCall"===this.call._traceName()&&Object.keys(n).find((e=>"audio"===n[e]))){const e=this.activeMR.get(i);e&&(e.kind="audio",e.stream.getVideoTracks().forEach((t=>{t.stop(),e.stream.removeTrack(t)})),this.activeMR.delete(i)),r.dispatchEvent({name:o.EndpointEvents.RemoteMediaUpdated,call:this.call,endpoint:r,mediaRenderer:e})}else{const e=this.activeMR.get(i);this.removeMediaRenderer(r,e),this.activeMR.delete(i)}}}}updateTransceiver(e){if(!e.mid)return;this.transceiverBucket.find((t=>t===e))||this.transceiverBucket.push(e);const t=this.searchEndpointByMid(e.mid);t&&this.createNewMR(e,t.endpoint,t.mids)}getEndpointInfo(){return this.endpointInfo}destructEndpoint(e){const t=this.activeEndpoints.get(e);t&&(t.mediaRenderers.forEach((e=>{t.dispatchEvent({name:o.EndpointEvents.RemoteMediaRemoved,call:this.call,endpoint:t,mediaRenderer:e}),e.mids.forEach((e=>this.activeMR.delete(e))),e.clear()})),this.activeEndpoints.delete(e),t.dispatchEvent({name:o.EndpointEvents.Removed,call:this.call,endpoint:t}),this.call.dispatchEvent({name:s.CallEvents.EndpointRemoved,call:this.call,endpoint:t}))}makeMids(e){const t={};return d.default.parse(e).media.forEach(((e,n)=>{const r=e.attr.find((e=>"mid"===e.name));t[r?r.value:n]=e.descr.media})),{endpoints:{[this.call.id()]:{place:0,type:"call",mids:t}},reinviteCauses:[]}}constructEndpoint(e,t,n=!1){const r=new i.Endpoint(n);let a;r.id=e,a=this.call.settings.isConference?this.getDataForConference({id:e,place:t.place}):{id:e,place:t.place,displayName:this.call.settings.displayName,sipURI:"",username:""},r.updateInfo(a),this.activeEndpoints.set(e,r),this.call.dispatchEvent({name:s.CallEvents.EndpointAdded,endpoint:r,call:this.call}),this.transceiverBucket.forEach((e=>this.updateTransceiver(e)))}getDataForConference({id:e,place:t}){const n={id:e,place:t,displayName:"",sipURI:"",username:""},r=this.endpointInfo.reinviteCauses.find((t=>t.id===e));return r&&(r.displayName&&(n.displayName=r.displayName),r.sipURI&&(n.sipURI=r.sipURI),r.username&&(n.username=r.username)),n}diffMids(e,t){const n={added:{},changed:{},removed:{},unchanged:{}};let r=!1;for(let i in t)t.hasOwnProperty(i)&&(e.hasOwnProperty(i)?e[i]!==t[i]?(n.changed[i]=t[i],r=!0):n.unchanged[i]=t[i]:(n.added[i]=t[i],r=!0));for(let i in e)e.hasOwnProperty(i)&&!t.hasOwnProperty(i)&&(n.removed[i]=e[i],r=!0);return{result:r,diff:n}}searchEndpointByMid(e){for(let t in this.endpointInfo.endpoints)if(this.endpointInfo.endpoints.hasOwnProperty(t)&&this.endpointInfo.endpoints[t].mids[e])return{endpoint:this.activeEndpoints.get(t),mids:this.endpointInfo.endpoints[t].mids};return null}getEndpoints(){return Array.from(this.activeEndpoints.values())}diffEndpoints(e){const t={added:{},changed:{},removed:{},unchanged:{}};for(let n in e.endpoints)if(e.endpoints.hasOwnProperty(n))if(this.endpointInfo.endpoints.hasOwnProperty(n)){const r=this.diffMids(this.endpointInfo.endpoints[n].mids,e.endpoints[n].mids);r.result?t.changed[n]=Object.assign(Object.assign({},e.endpoints[n]),{midDiff:r.diff}):t.unchanged[n]=e.endpoints[n]}else t.added[n]=e.endpoints[n];for(let n in this.endpointInfo.endpoints)this.endpointInfo.endpoints.hasOwnProperty(n)&&!e.endpoints.hasOwnProperty(n)&&(t.removed[n]=this.endpointInfo.endpoints[n]);return t}createNewMR(e,t,n){if(!e.mid)return;this.transceiverEndpointHashMap.set(e,t);const r=this.mediaRendererFabric(e,n);r&&(r.conferenceEpManagerUpdateState=()=>{var e;null===(e=l.CallManager.get().getConferenceEndpointManager(this.call))||void 0===e||e.updateState()},r.conferenceEpManagerUpdateRenderSize=()=>{var e;null===(e=l.CallManager.get().getConferenceEndpointManager(this.call))||void 0===e||e.updateRenderSize()},this.activeMR.set(e.mid,r),t.mediaRenderers.push(r),t.dispatchEvent({name:o.EndpointEvents.RemoteMediaAdded,call:this.call,endpoint:t,mediaRenderer:r}))}mediaRendererFabric(e,t){if(e.mid){if(this.activeMR.has(e.mid))return null;if("ViewerCall"!==this.call._traceName())return new c.MediaRenderer({stream:new MediaStream([e.receiver.track]),kind:t[e.mid],transceivers:[e],mids:[e.mid]});{const n=Object.keys(t),r=this.transceiverBucket.filter((e=>n.includes(e.mid)));if("audio"===t[e.mid])return n.length>r.length?null:2===n.length&&n.length===r.length?new c.MediaRenderer({stream:new MediaStream([r[0].receiver.track,r[1].receiver.track]),kind:"video",transceivers:[r[0],r[1]],mids:[r[0].mid,r[1].mid]}):new c.MediaRenderer({stream:new MediaStream([e.receiver.track]),kind:"audio",transceivers:[e],mids:[e.mid]});if("video"===t[e.mid]||"sharing"===t[e.mid]){let i=n.find((e=>"audio"===t[e])),a=this.activeMR.get(i),s=r.find((e=>e.mid===i));if(a&&a.element instanceof HTMLVideoElement)return a.kind="video",a.stream.addTrack(e.receiver.track),a.element.srcObject=a.stream,a.transceivers=[e,s],a.mids=[e.mid,s.mid],a;if(a){let n=this.transceiverEndpointHashMap.get(e);this.removeMediaRenderer(n,a);const r=new c.MediaRenderer({stream:new MediaStream([s.receiver.track,e.receiver.track]),kind:t[e.mid],transceivers:[e],mids:[e.mid]});return this.activeMR.set(i,r),r}if(!a&&r.find((e=>e.mid===i))){const n=new c.MediaRenderer({stream:new MediaStream([s.receiver.track,e.receiver.track]),kind:t[e.mid],transceivers:[e],mids:[e.mid]});return this.activeMR.set(i,n),n}return new c.MediaRenderer({stream:new MediaStream([e.receiver.track]),kind:t[e.mid],transceivers:[e],mids:[e.mid]})}}}}removeMediaRenderer(e,t){e.mediaRenderers=e.mediaRenderers.filter((e=>e.id!==t.id)),e.dispatchEvent({name:o.EndpointEvents.RemoteMediaRemoved,call:this.call,endpoint:e,mediaRenderer:t}),t.clear()}}r([a.queueDecorator()],g.prototype,"setDisplayRules",null),r([a.queueDecorator()],g.prototype,"setMIDInfo",null),r([a.queueDecorator()],g.prototype,"updateTransceiver",null),t.default=g},6497:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.SharingCall=void 0;const i=n(1150),a=n(3947),s=n(3902),o=n(4610),c=n(3385),d=n(245),l=n(4106),g=n(125),u=n(575),h=n(3869);class p extends o.AbstractCall{constructor(e,t){super(e),this.signalingConnected=!1,this.settings={id:e,displayName:a.Authenticator.get().displayName,mode:o.CallMode.P2P,number:t.number,video:{sendVideo:!0,receiveVideo:!1},customData:null,extraHeaders:t.extraHeaders,wiredLocal:!0,wiredRemote:!0,H264first:!0,VP8first:!1,forceActive:!1,usedSinkId:null,extraParams:{},active:!0,state:o.CallState.PROGRESSING,audioDirections:{sendAudio:!1},videoDirections:{sendVideo:!0,receiveVideo:!1},hasEarlyMedia:!1,incoming:!1,simulcast:!1,isConference:!0,simulcastProfileName:"general"};const n=new RTCPeerConnection;let r;n?this.getNewScreenSharing().then((t=>{if(null!==t.stream){const i=t.stream.getVideoTracks()[0],a=t.stream.getAudioTracks()[0]||"audio";n.addTransceiver(a,{direction:"sendonly",streams:[t.stream]}),n.addTransceiver(i,{direction:"sendonly",streams:[t.stream]}),n.createOffer({offerToReceiveAudio:!1,offerToReceiveVideo:!1}).then((e=>(r=e,n.setLocalDescription(e)))).then((()=>{this.peerConnection=n;d.default.callRemoteFunction(l.RemoteFunction.callConference,-1,this.settings.number,!0,e,null,null,this.settings.extraHeaders,"",r.sdp,{mids:{0:"audio",1:"sharing"}})})).catch((()=>{this.handleConnectionFailed(1001,"",{})}))}else this.handleConnectionFailed(1001,"",{})})):this.handleConnectionFailed(1001,"",{}),this.setHandlers()}getEndpoints(){return[]}getNewScreenSharing(){return new Promise(((e,t)=>{h.default.getScreenMedia(this.settings.audioDirections.sendAudio).then((t=>{const n={stream:t,renderer:null};t.getTracks().forEach((e=>{e.onended=()=>{this.hangup()}})),e(n)})).catch((e=>{this.logger.error(`Media access denied: ${e?e.message||e.name||e:"unknown"}`),t(e)}))}))}setHandlers(){d.default.setRPCHandler(u.RemoteEvent.handleRejectReinvite,((e,t,n)=>{e===this.settings.id&&this.handleRejectReinvite()})),d.default.setRPCHandler(u.RemoteEvent.handleConnectionDisconnected,((e,t,n)=>{e===this.settings.id&&this.handleConnectionDisconnected(e,t,n)})),d.default.setRPCHandler(u.RemoteEvent.handleConnectionFailed,((e,t,n,r)=>{e===this.settings.id&&this.handleConnectionFailed(t,n,r)})),d.default.setRPCHandler(u.RemoteEvent.handleSIPInfo,((e,t,n,r,i)=>{e===this.settings.id&&this.handleSIPInfo(t,n,r,i)})),d.default.setRPCHandler(u.RemoteEvent.handleConnectionConnected,((e,t,n)=>{e===this.settings.id&&this.handleConnectionConnected(t,n)})),d.default.setRPCHandler(u.RemoteEvent.handleReInvite,((e,t,n)=>{e===this.settings.id&&this.handleInReinvite(t,n)})),d.default.setRPCHandler(u.RemoteEvent.handleAcceptReinvite,((e,t,n)=>{e===this.settings.id&&this.handleReinvite(n)}))}handleRejectReinvite(){this.dispatchEvent({code:20,call:this})}handleInReinvite(e,t){return new Promise((n=>{this.logger.info(`handleInReinvite(), received SDP: \n${t}`);const r=new RTCSessionDescription({sdp:t,type:"offer"});this.peerConnection.setRemoteDescription(r).then((()=>this.peerConnection.createAnswer())).then((t=>{this.peerConnection.setLocalDescription(t).then((()=>{this.restoreRMute(),d.default.callRemoteFunction(l.RemoteFunction.acceptReInvite,this.settings.id,e,t.sdp),n()}))})).catch((e=>{this.dispatchEvent({name:"SDP",origin:"handleInReinvite",sdp:this.peerConnection.localDescription,description:`answer_reject: ${e.message}`}),this.logger.error(e),n()}))}))}handleConnectionConnected(e,t){return new Promise((n=>{this.logger.info(`handleConnectionConnected(), received SDP: \n${t}`),void 0!==t&&"have-local-offer"===this.peerConnection.signalingState?(this.signalingConnected=!0,this.onConnected(e,t),this.processRemoteAnswer(t).then((()=>n())).catch((e=>{this.logger.error(e),n()}))):(this.logger.error(`handleConnectionConnected: Wrong connection state ${this.peerConnection.signalingState} or empty SDP`),n())}))}handleConnectionDisconnected(e,t,n){g.Client.getInstance().stopProgressTone(),this.peerConnection.getTransceivers().forEach((e=>{const t=e.sender.track;e.sender.replaceTrack(null).then((()=>{t&&(t.onended=null,t.onmute=null,t.stop()),e.direction="inactive"}))})),this.onDisconnected(t,n).catch((t=>{this.logger.error(`Can't remove the call ${e}: ${t.message}`)}))}handleSIPInfo(e,t,n,r){this.onInfo(this,e,t,n,r)}handleReinvite(e){return new Promise((t=>{this.logger.info(`handleReinvite(), received SDP: \n${e}`),this.processRemoteAnswer(e).then((()=>t())).catch((e=>{this.logger.error(e),t()}))}))}handleConnectionFailed(e,t,n){g.Client.getInstance().stopProgressTone(),this.onFailed(e,t,n)}onDisconnected(e,t){return new Promise(((n,r)=>{this._setState(o.CallState.ENDED),this.dispatchEvent({name:"Disconnected",call:this,headers:e,params:t}),n(!0)}))}onInfo(e,t,n,r,i){return t+"/"+n==c.Constants.ZINGAYA_IM_MIME_TYPE?this.dispatchEvent({name:"onSendMessage",call:this,text:r}):this.dispatchEvent({name:"InfoReceived",call:this,body:r,headers:i,mimeType:t+"/"+n}),!0}processRemoteAnswer(e){return new Promise(((t,n)=>{if(void 0!==e&&e.length>0){let r={sdp:e,type:s.RTCSdpType.answer};this.peerConnection.setRemoteDescription(r).then((()=>{this.restoreRMute(),t()})).catch((e=>{this.dispatchEvent({name:"SDP",origin:"_processRemoteAnswer",sdp:this.peerConnection.localDescription,description:`answer_reject: ${e.message}`}),n(e)}))}else n()}))}_traceName(){return"ViewerCall"}}r([i.LogManager.d_trace(i.LogCategory.CALL)],p.prototype,"handleConnectionFailed",null),r([i.LogManager.d_trace(i.LogCategory.CALL)],p.prototype,"onDisconnected",null),t.SharingCall=p},4211:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});const r=n(6497),i=n(2957),a=n(4610),s=n(2282),o=n(1150);class c{constructor(){this.calls=new Map,this.logger=o.LogManager.get().createLogger(o.LogCategory.SIGNALING,"SharingCallManager")}static get(){var e;return null!==(e=this.inst)&&void 0!==e||(this.inst=new c),this.inst}findCall(e){return this.calls.get(e)}call(e){const t=i.Utils.generateUUID(),n=new r.SharingCall(t,e);return this.calls.set(t,n),n}removeCall(e){this.calls.delete(e)}async hangupAllCalls(){const e=Array.from(this.calls.values()).map((e=>new Promise((t=>{const n=setTimeout((()=>{this.logger.info(`The timeout of disconnected event for the call ${e.id()} has reached.`),this.removeCall(e.id()),e.settings.state=a.CallState.ENDED,t()}),1500);e.on(s.CallEvents.Disconnected,(()=>{clearTimeout(n),t()}),{once:!0}),e.hangup()}))));await Promise.all(e)}}t.default=c},8582:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.ViewerCall=void 0;const i=n(1150),a=n(3947),s=n(9774),o=n(3902),c=n(4610),d=n(3385);class l extends c.AbstractCall{constructor(e,t){super(e),this.signalingConnected=!1,this.settings={id:e,displayName:a.Authenticator.get().displayName,mode:c.CallMode.P2P,number:t.number,video:{sendVideo:!1,receiveVideo:!0},customData:null,extraHeaders:t.extraHeaders,wiredLocal:!0,wiredRemote:!0,H264first:!0,VP8first:!1,forceActive:!1,usedSinkId:null,extraParams:{},active:!0,state:c.CallState.PROGRESSING,audioDirections:{sendAudio:!1},videoDirections:{sendVideo:!1,receiveVideo:!0},hasEarlyMedia:!1,incoming:!1,simulcast:!1,isConference:!0,simulcastProfileName:"general"}}getEndpoints(){return s.ViewerManager.get().getEndpointManager(this).getEndpoints()}onDisconnected(e,t){return new Promise(((n,r)=>{this._setState(c.CallState.ENDED);const i=s.ViewerManager.get().getEndpointManager(this);i.getEndpoints().forEach((e=>{i.destructEndpoint(e.id)})),this.dispatchEvent({name:"Disconnected",call:this,headers:e,params:t}),n(!0)}))}onInfo(e,t,n,r,i){return t+"/"+n==d.Constants.ZINGAYA_IM_MIME_TYPE?this.dispatchEvent({name:"onSendMessage",call:this,text:r}):this.dispatchEvent({name:"InfoReceived",call:this,body:r,headers:i,mimeType:t+"/"+n}),!0}processRemoteAnswer(e){return new Promise(((t,n)=>{if(void 0!==e&&e.length>0){let r={sdp:e,type:o.RTCSdpType.answer};this.peerConnection.setRemoteDescription(r).then((()=>{this.restoreRMute(),t()})).catch((e=>{this.dispatchEvent({name:"SDP",origin:"_processRemoteAnswer",sdp:this.peerConnection.localDescription,description:`answer_reject: ${e.message}`}),n(e)}))}else n()}))}_traceName(){return"ViewerCall"}}r([i.LogManager.d_trace(i.LogCategory.CALL)],l.prototype,"onDisconnected",null),t.ViewerCall=l},9774:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.ViewerManager=void 0;const i=n(1150),a=n(2957),s=n(4106),o=n(575),c=n(9411),d=n(8582),l=n(9574),g=n(3992),u=n(245),h=n(9553),p=n(6278);class f extends c.AbstractCallManager{constructor(){super(),this.peerConnectionManagers=new WeakMap,this.mutex=new g.TaskMutex,this.logger=i.LogManager.get().createLogger(i.LogCategory.SIGNALING,this._traceName()),u.default.setRPCHandler(o.RemoteEvent.handleConnectionConnected,((e,t,n,r,i)=>{this.handleConnectionConnected(e,t,n,i)})),u.default.setRPCHandler(o.RemoteEvent.handleReInvite,((e,t,n,r)=>{this.handleInReinvite(e,t,n,r)})),u.default.setRPCHandler(o.RemoteEvent.handleAcceptReinvite,((e,t,n)=>{this.handleReinvite(e,t,n)})),u.default.setRPCHandler(o.RemoteEvent.startEarlyMedia,((e,t,n)=>{this.startEarlyMedia(e,t,n)}))}static get(){return void 0===this.inst&&(this.inst=new f),this.inst}get calls(){return this._calls}joinAsViewer(e){let t=a.Utils.generateUUID();if(this._calls[t])throw this.logger.error("Call "+t+" already exists"),new Error("Internal error");const n=new d.ViewerCall(t,e);this._calls[t]=n;const r=f.get().calls[t],i=new RTCPeerConnection;let o;return i.addEventListener("track",(e=>this.onAddTrack(e,n))),i?(i.addTransceiver("audio",{direction:"recvonly"}),i.addTransceiver("video",{direction:"recvonly"}),i.createOffer({offerToReceiveAudio:!0,offerToReceiveVideo:!0}).then((e=>(o=e,i.setLocalDescription(e)))).then((()=>{n.peerConnection=i,this.endpointManagers.set(n,new l.default(n)),u.default.callRemoteFunction(s.RemoteFunction.callConference,-1,n.settings.number,!0,t,null,null,n.settings.extraHeaders,"",o.sdp)})).catch((()=>{f.get().handleConnectionFailed(r.settings.id,1001,"",{})}))):f.get().handleConnectionFailed(r.settings.id,1001,"",{}),this.confEpManagerMap.set(n,new h.ConferenceEndpointManager(n)),this.wsConfMap.set(n,new p.ConfSignaling(n)),n}getConferenceEndpointManager(e){return this.confEpManagerMap.get(e)}getConfSignaling(e){return this.wsConfMap.get(e)}_traceName(){return"ViewerManager"}findCall(e,t){let n=this._calls[e];return""===e&&(n=this._calls[Object.keys(this._calls)[0]]),void 0===n?null:n}handleConnectionConnected(e,t,n,r){return new Promise((i=>{let a=this.findCall(e,"handleConnectionConnected");a?(this.logger.info(`handleConnectionConnected(), received SDP: \n${n}`),this.patchAudioMixConf(a,r),void 0!==n&&"have-local-offer"===a.peerConnection.signalingState?(a.signalingConnected=!0,a.onConnected(t,n),a.processRemoteAnswer(n).then((()=>i())).catch((e=>{this.logger.error(e),i()}))):(this.logger.error(`handleConnectionConnected: Wrong connection state ${a.peerConnection.signalingState} or empty SDP`),i())):i()}))}startEarlyMedia(e,t,n){return new Promise((t=>{let r=this.findCall(e,"startEarlyMedia");r?(this.logger.info(`startEarlyMedia(), received SDP: \n${n}`),void 0!==n&&"have-local-offer"===r.peerConnection.signalingState?(r.settings.hasEarlyMedia=!0,r.processRemoteAnswer(n).then((()=>t())).catch((e=>{this.logger.error(e),t()}))):(this.logger.error(`handleConnectionConnected: Wrong connection state ${r.peerConnection.signalingState} or empty SDP`),t())):t()}))}handleReinvite(e,t,n){return new Promise((t=>{let r=this.findCall(e,"handleReinvite");r?(this.logger.info(`handleReinvite(), received SDP: \n${n}`),r.processRemoteAnswer(n).then((()=>t())).catch((e=>{this.logger.error(e),t()}))):t()}))}handleInReinvite(e,t,n,r){return new Promise((i=>{const a=this.findCall(e,"handleInReinvite");a?(this.logger.info(`handleInReinvite(), received SDP: \n${n}`),this.getEndpointManager(a).setMIDInfo(r).then((()=>{const e=new RTCSessionDescription({sdp:n,type:"offer"});return a.peerConnection.setRemoteDescription(e)})).then((()=>a.peerConnection.createAnswer())).then((e=>{a.peerConnection.setLocalDescription(e).then((()=>{a.restoreRMute(),u.default.callRemoteFunction(s.RemoteFunction.acceptReInvite,a.settings.id,t,e.sdp),i()}))})).catch((e=>{a.dispatchEvent({name:"SDP",origin:"handleInReinvite",sdp:a.peerConnection.localDescription,description:`answer_reject: ${e.message}`}),this.logger.error(e),i()}))):i()}))}onAddTrack(e,t){if(t){const n=f.get().getEndpointManager(t);n&&n.updateTransceiver(e.transceiver)}}}r([i.LogManager.d_trace(i.LogCategory.CALLMANAGER)],f.prototype,"findCall",null),r([g.queueDecorator()],f.prototype,"handleConnectionConnected",null),r([g.queueDecorator()],f.prototype,"startEarlyMedia",null),r([g.queueDecorator()],f.prototype,"handleReinvite",null),r([g.queueDecorator()],f.prototype,"handleInReinvite",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],f.prototype,"onAddTrack",null),t.ViewerManager=f},125:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Client=void 0;const i=n(7998),a=n(141),s=n(2957),o=n(3947),c=n(3869),d=n(1150),l=n(84),g=n(308),u=n(3576),h=n(4106),p=n(575),f=n(6230),m=n(209),v=n(7272),C=n(9091),_=n(2089),E=n(304),S=n(8582),y=n(9774),M=n(245),R=n(6081),L=n(4211),T=n(4007),I=n(8879);class A extends u.EventTarget{constructor(){if(super(),this._connected=!1,this.progressToneScript={US:"440@-19,480@-19;*(2/4/1+2)",RU:"425@-19;*(1/3/1)"},this.playingNow=!1,this.serversList=[],this.level=100,this.micRequired=!1,this.videoConstraints=null,this.progressToneCountry="US",this.progressTone=!0,this.enableTrace=!1,this.showDebugInfo=!1,this.showWarnings=!1,this.RTCsupported=!1,this._deviceEnumAPI=!1,this._h264first=!1,this._VP8first=!1,this.limitVCodecs=void 0,this.limitACodecs=void 0,this._alreadyInitialized=!1,A.instance)throw new Error("Error - use VoxImplant.getInstance()");A.instance=this,this._promises={},c.default.init(),l.PCFactory.get().requireMedia=!1,this.voxCallManager=g.CallManager.get(),this.voxViewerManager=y.ViewerManager.get(),this.setLogLevelAll(d.LogLevel.NONE),M.default.setRPCHandler(p.RemoteEvent.onPCStats,((e,t)=>{l.PCFactory.get().getPeerConnect(e)&&this.dispatchEvent({name:"NetStatsReceived",stats:t})})),this.logger=d.LogManager.get().createLogger(d.LogCategory.CLIENT,this._traceName()),this._defaultSinkId=null,this.loginState=0}get version(){return"v4.6.2-2446-1662370100-e859aaa762ad02c7527a99531c494db65aa64cec"}static getInstance(){return void 0===A.instance&&(A.instance=new A),A.instance}playProgressTone(e=!1){(!e||e&&this.progressTone)&&null!==this.progressToneScript[this.progressToneCountry]&&(this.playingNow||this.playToneScript(this.progressToneScript[this.progressToneCountry]),this.playingNow=!0)}stopProgressTone(){this.playingNow&&(this.stopPlayback(),this.playingNow=!1)}onIncomingCall(e,t,n,r,i){this.dispatchEvent({name:a.Events.IncomingCall,call:g.CallManager.get().calls[e],headers:r,video:i})}get alreadyInitialized(){return this._alreadyInitialized}init(e){return new Promise((async(t,n)=>{if(this.alreadyInitialized&&n(new Error("WebSDK already initialized")),this._alreadyInitialized=!0,this._config=void 0!==e?e:{},void 0!==this._config.progressToneCountry&&(this.progressToneCountry=this._config.progressToneCountry),!0!==this._config.progressTone&&(this.progressTone=!1),void 0!==this._config.serverIp&&(this.serverIp=this._config.serverIp),void 0!==this._config.enableTrace&&(this.enableTrace=this._config.enableTrace),void 0!==this._config.showDebugInfo&&(this.showDebugInfo=this._config.showDebugInfo),!1!==this._config.showWarnings&&(this.showWarnings=!0),"string"==typeof this._config.videoContainerId&&(this.remoteVideoContainerId=this._config.videoContainerId),"string"==typeof this._config.remoteVideoContainerId&&(this.remoteVideoContainerId=this._config.remoteVideoContainerId),"string"==typeof this._config.localVideoContainerId&&(this.localVideoContainerId=this._config.localVideoContainerId),!1!==this._config.micRequired&&(this.micRequired=!0),void 0!==this._config.videoSupport?this.videoSupport=this._config.videoSupport:this.videoSupport=!1,void 0===this._config.queueType&&(this._config.queueType=i.QueueTypes.ACD),void 0!==this._config.H264first&&(this._h264first=this._config.H264first,g.CallManager.get()._h264first=this._h264first),void 0!==this._config.VP8first&&(this._VP8first=this._config.VP8first),void 0!==this._config.rtcStatsCollectionInterval?g.CallManager.get().rtcStatsCollectionInterval=this._config.rtcStatsCollectionInterval:g.CallManager.get().rtcStatsCollectionInterval=1e4,void 0!==A.getInstance().config().experiments&&void 0!==A.getInstance().config().experiments.rtcStatsInquiryInterval?g.CallManager.get().rtcStatsInquiryInterval=A.getInstance().config().experiments.rtcStatsInquiryInterval:g.CallManager.get().rtcStatsInquiryInterval=500,!this._config.protocolVersion||"2"!==this._config.protocolVersion&&"3"!==this._config.protocolVersion?this._callProtocolVersion="3":(this._callProtocolVersion=this._config.protocolVersion,g.CallManager.get().setProtocolVersion(this._callProtocolVersion)),this._config.prettyPrint&&d.LogManager.get().setPrettyPrint(this._config.prettyPrint),this.showWarnings&&this.setLogLevelAll(d.LogLevel.WARNING),this.showDebugInfo&&this.setLogLevelAll(d.LogLevel.INFO),this.enableTrace&&this.setLogLevelAll(d.LogLevel.TRACE),this.logger.info(`SDK version: ${this.version}`),this.logger.info(`init(${JSON.stringify(this._config)})`),"127.0.0.1"!=window.location.hostname&&"localhost"!=window.location.hostname&&"https:"!=window.location.protocol&&void 0!==console.error&&this.showWarnings&&this.logger.warning("WARNING: getUserMedia() is deprecated on insecure origins, and support will be removed in the future. You should consider switching your application to a secure origin, such as HTTPS. See https://goo.gl/rStTGz for more details."),this._config.experiments&&this._config.experiments.ignorewebrtc)this.RTCsupported=!0;else if("undefined"!=typeof webkitRTCPeerConnection||void 0!==this.mozRTCPeerConnection||"undefined"!=typeof RTCPeerConnection||"undefined"!=typeof RTCIceGatherer)if("undefined"!=typeof mozRTCPeerConnection)try{new mozRTCPeerConnection({iceServers:[]}),this.RTCsupported=!0}catch(e){}else this.RTCsupported=!0;if(!this.RTCsupported)throw n(new Error("NO_WEBRTC_SUPPORT")),new Error("NO_WEBRTC_SUPPORT");var r;if(void 0!==this._config.videoConstraints){this.videoConstraints=this._config.videoConstraints;const e=v.default.CameraManager.legacyParamConverter(this._config.videoConstraints);try{await v.default.CameraManager.get().setDefaultVideoSettings(e)}catch(t){n(new Error(`WebSDK haven't be able to set ${JSON.stringify(e)} as the default video settings`))}}null!=window.location.href.match(/^file\:\/{3}.*$/g)&&void 0!==console.error&&this.showWarnings&&console.error("WebRTC requires application to be loaded from a web server"),this.voxAuth=o.Authenticator.get(),this.voxAuth.setHandler({onLoginSuccessful:(e,t)=>{this.loginState=2;const n={name:a.Events.AuthResult,displayName:e,result:!0,tokens:t};this._resolvePromise("login",n),this.dispatchEvent(n)},onLoginFailed:e=>{this.loginState=0;const t={name:a.Events.AuthResult,code:e,result:!1};this._rejectPromise("login",t),this.dispatchEvent(t)},onSecondStageInitiated:()=>{const e={name:a.Events.AuthResult,code:301,result:!1};this._rejectPromise("login",e),this.dispatchEvent(e)},onOneTimeKeyGenerated:e=>{const t={name:a.Events.AuthResult,key:e,code:302,result:!1};this._resolvePromise("loginkey",t),this.dispatchEvent(t)},onRefreshTokenFailed:e=>{const t={name:a.Events.RefreshTokenResult,code:e,result:!1};this.dispatchEvent(t)},onRefreshTokenSuccess:e=>{const t={name:a.Events.RefreshTokenResult,tokens:e,result:!0};this.dispatchEvent(t)}}),M.default.addHandler(this),M.default.setRPCHandler(p.RemoteEvent.sipRegisterSuccessful,((e,t)=>{this.dispatchEvent({name:"SIPRegistrationSuccessful",id:e,sipuri:t})})),M.default.setRPCHandler(p.RemoteEvent.onACDStatus,((e,t,n,r)=>{C.default.onStatusUpdated(t,n,r)})),M.default.setRPCHandler(p.RemoteEvent.SQMessagingStatusUpdated,((e,t,n,r)=>{_.default.onStatusUpdated(t,n,r)})),M.default.setRPCHandler(p.RemoteEvent.onSQStatusError,((e,t,n,r)=>{_.default.onError(t,n,r),C.default.onError(t,n,r)})),M.default.setRPCHandler(p.RemoteEvent.sipRegisterFailed,((e,t,n,r)=>{this.dispatchEvent({name:"SIPRegistrationFailed",id:e,sipuri:t,status:n,reason:r})})),M.default.setRPCHandler(p.RemoteEvent.unregisterPushTokenResult,(e=>{f.PushService.updatePromiseResult(e)})),M.default.setRPCHandler(p.RemoteEvent.registerPushTokenResult,(e=>{f.PushService.updatePromiseResult(e)})),r=setInterval((()=>{"undefined"!=typeof document&&(clearInterval(r),this.dispatchEvent({name:a.Events.SDKReady,version:this.version}),t({name:a.Events.SDKReady,version:this.version}))}),100)}))}getErrorCall(e,t,n,r){const i="viewer"===e?new S.ViewerCall(s.Utils.generateUUID(),t):new E.CallExMedia(s.Utils.generateUUID(),o.Authenticator.get().displayName,!1,t);return setTimeout((()=>{i.onFailed(n,r,{})}),500),i}isHttps(){return"https:"===window.location.protocol||"localhost"===window.location.hostname||window.location.href.includes("127.0.0.1")}call(e,t,n,r){void 0===t&&void 0===n&&void 0===r||this.logger.warning("useVideo, customData, extraHeaders are deprecated since 4.6.0. Please use the same parameter in the CallSettings instead."),this.logger.info(`call(${JSON.stringify(e)}, ${JSON.stringify(t)})`);let i={H264first:this._h264first,VP8first:this._VP8first};switch(i="string"==typeof e||"number"==typeof e?{number:e,video:t,customData:n,extraHeaders:r}:e,typeof i.video){case"boolean":i.isAudio=!i.video,i.video={sendVideo:i.video,receiveVideo:i.video};break;case"undefined":i.isAudio=!0,i.video={sendVideo:!1,receiveVideo:!0}}if(!this.isHttps())return this.getErrorCall("call",i,R.CallError.HTTP_NOT_SECURE,"Sorry, your connection to this site is not secure, so the WebRTC call is prohibited. Please, use https:// instead");try{return s.Utils.checkCA(),this.voxCallManager.call(i)}catch(e){return this.getErrorCall("call",i,+e.code,e.message)}}callConference(e,t,n,r){void 0===t&&void 0===n&&void 0===r||this.logger.warning("useVideo, customData, extraHeaders are deprecated since 4.6.0. Please use the same parameter in the CallSettings instead."),this.logger.info(`callConference(callSettings: ${JSON.stringify(e)}, useVideo: ${JSON.stringify(t)})`);let i={H264first:this._h264first,VP8first:this._VP8first};switch(i="string"==typeof e||"number"==typeof e?{number:e,video:t,customData:n,extraHeaders:r}:e,typeof i.video){case"boolean":i.video={sendVideo:i.video,receiveVideo:i.video};break;case"undefined":i.video={sendVideo:!1,receiveVideo:!0}}if(i.isConference=!0,!this.isHttps())return this.getErrorCall("conf",i,R.CallError.HTTP_NOT_SECURE,"Sorry, your connection to this site is not secure, so the WebRTC call is prohibited. Please, use https:// instead");try{return s.Utils.checkCA(),this.voxCallManager.callConference(i)}catch(e){return console.error(e),this.getErrorCall("conf",i,+e.code,e.message)}}joinAsSharing(e,t,n){this.logger.info(`joinAsSharing(${e})`);let r={number:e,audioDirections:{sendAudio:t},extraHeaders:n};if(!this.isHttps())return this.getErrorCall("sharing",r,R.CallError.HTTP_NOT_SECURE,"Sorry, your connection to this site is not secure, so the WebRTC call is prohibited. Please, use https:// instead");try{return s.Utils.checkCA(),L.default.get().call(r)}catch(e){return this.getErrorCall("call",r,+e.code,e.message)}}joinAsViewer(e,t){this.logger.info(`joinAsViewer(${e})`);let n={number:e,extraHeaders:t};if(!this.isHttps())return this.getErrorCall("viewer",n,R.CallError.HTTP_NOT_SECURE,"Sorry, your connection to this site is not secure, so the WebRTC call is prohibited. Please, use https:// instead");try{return s.Utils.checkCA(),this.voxViewerManager.joinAsViewer(n)}catch(e){return this.getErrorCall("viewer",n,+e.code,e.message)}}config(){return this._config}async connect(){return void 0===this._config&&this.logger.warning("Please, run VoxImplant init before connect."),M.default.connect(this._config.queueType,this._config.serverIp)}async disconnect(){this.logger.info("disconnect()"),this.checkConnection(),await Promise.all([L.default.get().hangupAllCalls(),y.ViewerManager.get().hangupAllCalls(),g.CallManager.get().hangupAllCalls()]),await M.default.disconnect(),v.default.StreamManager.get().clear(),M.default.removeRPCHandler(p.RemoteEvent.onCallRemoteFunctionError),M.default.removeRPCHandler(p.RemoteEvent.handleError)}setOperatorACDStatus(e){return this.logger.info(`setOperatorACDStatus(${e})`),C.default.setStatus(e)}setOperatorSQMessagingStatus(e){if(this._config.queueType==i.QueueTypes.SmartQueue||this._config.queueType==i.QueueTypes.SmartQueueV1Beta)return this.logger.info(`setOperatorSQMessagingStatus (${e})`),_.default.setStatus(e);Promise.reject("This function only enabled in SmartQueue. You must set QueueType to QueueTypes.SmartQueue in the ClientConfig")}getOperatorACDStatus(){return C.default.getStatus()}getOperatorSQMessagingStatus(){return _.default.getStatus()}login(e,t,n){return this.logger.info(`login(${e}, ${t?"***":void 0}, {receiveCalls: ${n&&n.receiveCalls}})`),this.loginState=1,new Promise(((r,i)=>{this._promises.login={resolve:r,reject:i},n=void 0!==n?n:{},this.checkConnection(),this._config.experiments&&this._config.experiments.mediaServer&&(n.mediaServer=this._config.experiments.mediaServer),this.voxAuth.basicLogin(e,t,n)}))}loginWithCode(e,t,n){return this.loginState=1,new Promise(((r,i)=>{this._promises.login={resolve:r,reject:i},n=void 0!==n?n:{},n=Object.assign(Object.assign({},n),{serverPresenceControl:!1}),this.checkConnection(),this.voxAuth.loginStage2(e,t,n)}))}loginWithToken(e,t,n){return this.logger.info(`loginWithToken(${e}, '***', {receiveCalls: ${n&&n.receiveCalls}})`),this.loginState=1,new Promise(((r,i)=>{this._promises.login={resolve:r,reject:i},n=void 0!==n?n:{},(n=Object.assign(Object.assign({},n),{serverPresenceControl:!1})).accessToken=t,this.checkConnection(),this.voxAuth.tokenLogin(e,n)}))}tokenRefresh(e,t,n){return this.logger.info(`tokenRefresh(${e})`),new Promise(((r,i)=>{const s=e=>{e.result?r(e):i(e),this.off(a.Events.RefreshTokenResult,s)};this.on(a.Events.RefreshTokenResult,s),this.voxAuth.tokenRefresh(e,t,n)}))}requestOneTimeLoginKey(e){return new Promise(((t,n)=>{this._promises.loginkey={resolve:t,reject:n},this.checkConnection(),this.voxAuth.generateOneTimeKey(e)}))}loginWithOneTimeKey(e,t,n){return this.logger.info(`loginWithOneTimeKey(${e}, '***' , {receiveCalls: ${n&&n.receiveCalls}})`),this.loginState=1,new Promise(((r,i)=>{this._promises.login={resolve:r,reject:i},n=void 0!==n?n:{},n=Object.assign(Object.assign({},n),{serverPresenceControl:!1}),this.checkConnection(),this.voxAuth.loginUsingOneTimeKey(e,t,n)}))}connected(){return this._connected}showLocalVideo(e=!0,t=!1,n=!1){return this.logger.info(`showLocalVideo(${e}, ${t}, ${n})`),e?v.default.StreamManager.get().showLocalVideo():v.default.StreamManager.get().hideLocalVideo()}setLocalVideoPosition(e,t){throw new Error("Deprecated: please use CSS to position '#voximplantlocalvideo' element")}setLocalVideoSize(e,t){throw new Error("Deprecated: please use CSS to set size of '#voximplantlocalvideo' element")}setVideoSettings(e,t,n){v.default.CameraManager.get().setDefaultVideoSettings(v.default.CameraManager.legacyParamConverter(e)),g.CallManager.get().setVideoSettings(e).then((()=>{t&&t(null)}),(e=>{n&&n(null)}))}setVideoBandwidth(e){this.logger.info(`setVideoBandwidth(${e})`),this.checkConnection(),l.PCFactory.get().setBandwidthParams(e),M.default.callRemoteFunction(h.RemoteFunction.setDesiredVideoBandwidth,e)}playToneScript(e,t=!1){this.logger.info(`playToneScript('***', ${t})`),s.Utils.playToneScript(e,t)}stopPlayback(){this.logger.info("stopPlayback()"),s.Utils.stopPlayback()&&this.dispatchEvent({name:a.Events.PlaybackFinished})}volume(e){throw new Error("Deprecated: please use the Media Renderer interface of each call instead")}audioSources(){throw Error("Deprecated: please use Hardware module to manipulate devices")}videoSources(){throw Error("Deprecated: please use Hardware module to manipulate devices")}audioOutputs(){throw Error("Deprecated: please use Hardware module to manipulate devices")}useAudioSource(e,t,n){const r=v.default.AudioDeviceManager.get().getDefaultAudioSettings();return v.default.AudioDeviceManager.get().setDefaultAudioSettings(Object.assign(Object.assign({},r),{inputId:e})),new Promise(((r,i)=>g.CallManager.get().useAudioSource(e).then((()=>{t&&t(null),r(null)}),(e=>{n&&n(e),i(e)}))))}useVideoSource(e,t,n){const r=v.default.CameraManager.get().getDefaultVideoSettings();return v.default.CameraManager.get().setDefaultVideoSettings(Object.assign(Object.assign({},r),{cameraId:e})),new Promise(((r,i)=>g.CallManager.get().useVideoSource(e).then((()=>{t&&t(null),r(null)}),(e=>{n&&n(e),i(e)}))))}useAudioOutput(e){return new Promise(((t,n)=>{"chrome"!==c.default.getWSVendor(!0)&&n(new Error("Unsupported browser. Only Google Chrome 49 and above.")),this._defaultSinkId=e,t()}))}attachRecordingDevice(e,t){d.LogManager.get().writeMessage(d.LogCategory.CLIENT,"DEPRECATED",d.LogLevel.ERROR,"Now all media connection on demand. There is no reason do it by hand."),e&&e(null)}detachRecordingDevice(){v.default.StreamManager.get().clear()}setCallActive(e,t=!0){return e.setActive(t)}sendVideo(e=!0){d.LogManager.get().writeMessage(d.LogCategory.CLIENT,"DEPRECATED",d.LogLevel.ERROR,"This function deprecated. Use Call.sendVideo() instead.")}isRTCsupported(){try{const e=new RTCPeerConnection;if(void 0===navigator.getUserMedia&&void 0===navigator.mediaDevices.getUserMedia)throw new Error("No getUserMedia");e.addTransceiver("audio");return e.getTransceivers().forEach((e=>{if(!e.stopped&&"stopped"!==e.direction&&"stopped"!==e.currentDirection&&(e.sender.replaceTrack(null),e.direction="sendrecv",void 0===e.currentDirection))throw new Error("No currentDirection")})),e.close(),!0}catch(e){return!1}}transferCall(e,t){this.logger.info(`transferCall(${e}, ${e})`);try{s.Utils.checkCA(),this.voxCallManager.transferCall(e,t)}catch(n){this.voxCallManager.handleConnectionFailed(e.id(),+n.message,"",{}),this.voxCallManager.handleConnectionFailed(t.id(),+n.message,"",{})}}setLogLevel(e,t){d.LogManager.get().setLogLevel(e,t)}onSignalingConnected(){this._connected=!0;const e={name:a.Events.ConnectionEstablished};this._resolvePromise("connect",e),this.dispatchEvent(e)}onSignalingClosed(){this._connected=!1,this.dispatchEvent({name:a.Events.ConnectionClosed}),this.progressTone&&this.stopProgressTone()}onSignalingConnectionFailed(e){this._connected=!1,this._rejectPromise("connect",event)}onMediaConnectionFailed(){}getCall(e){return g.CallManager.get().calls[e]}removeCall(e){g.CallManager.get().removeCall(e)}screenSharingSupported(){return c.default.screenSharingSupported()}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}on(e,t,n){super.on(e,t)}off(e,t){super.off(e,t)}registerForPushNotificatuons(e){return this.logger.info("Deprecated registerForPushNotificatuons()"),f.PushService.register(e)}registerForPushNotifications(e){return this.logger.info("registerForPushNotifications()"),f.PushService.register(e)}unregisterForPushNotificatuons(e){return this.logger.info("Deprecated unregisterForPushNotificatuons()"),f.PushService.unregister(e)}unregisterForPushNotifications(e){return this.logger.info("unregisterForPushNotifications()"),f.PushService.unregister(e)}handlePushNotification(e){return this.logger.info("handlePushNotification()"),f.PushService.incomingPush(e)}getGUID(){return(new m.default).toString()}enableSilentLogging(e){d.LogManager.get().shadowLogging=e}clearSilentLog(){d.LogManager.get().clearSilentLog()}getSilentLog(){return d.LogManager.get().getSLog()}setLoggerCallback(e){d.LogManager.get().setLoggerCallback(e)}getClientState(){const e=M.default.currentState();return e==M.VoxSignalingState.CONNECTING||e==M.VoxSignalingState.WSCONNECTED?d.ClientState.CONNECTING:e==M.VoxSignalingState.CLOSING||e==M.VoxSignalingState.IDLE?d.ClientState.DISCONNECTED:e==M.VoxSignalingState.CONNECTED?1==this.loginState?d.ClientState.LOGGING_IN:2==this.loginState?d.ClientState.LOGGED_IN:d.ClientState.CONNECTED:void 0}setSwfColor(){d.LogManager.get().writeMessage(d.LogCategory.CLIENT,"NOT SUPPORTED",d.LogLevel.ERROR,"setSwfColor deprecated, and not supported!")}_traceName(){return"Client"}checkConnection(){if(!this._connected)throw new Error("NOT_CONNECTED_TO_VOXIMPLANT")}_resolvePromise(e,t){const n=this._promises[e];n&&(n.resolve(t),this._promises[e]=void 0)}_rejectPromise(e,t){const n=this._promises[e];n&&(n.reject(t),this._promises[e]=void 0)}setLogLevelAll(e){const t=d.LogManager.get();Object.keys(d.LogCategory).forEach((n=>{t.setLogLevel(d.LogCategory[n],e)}))}setConnectionData(e,t){e&&(this._config.gateway=e),t&&(this._config.connectionId=t)}isInsertableStreamsSupported(){var e,t;return(null===(t=null===(e=this.config())||void 0===e?void 0:e.experiments)||void 0===t?void 0:t.encodedInsertableStreams)&&window.RTCRtpSender&&!!RTCRtpSender.prototype.createEncodedStreams}isMediaTrackInsertableStreamSupported(){var e,t;return(null===(t=null===(e=this.config())||void 0===e?void 0:e.experiments)||void 0===t?void 0:t.mediaTrackInsertableStreams)&&window.MediaStreamTrackProcessor&&window.MediaStreamTrackGenerator}limitAudioCodecs(e){return this.limitACodecs=e,this.logger.info(`limitAudioCodecs(): Trying to limit audio codecs to \n${JSON.stringify(e)}`),new Promise((async(t,n)=>{let r,i;const a=()=>{null==r||r.getTracks().forEach((e=>e.stop())),null==i||i.close()};try{if(r=await T.StreamManager.getUserMedia({audio:!0,video:!1}),i=new RTCPeerConnection,i){await i.addTransceiver(r.getAudioTracks()[0]);const s=await i.createOffer().catch((()=>n("limitAudioCodecs(): cannot get local offer"))),o=I.SDPMuggle.reduceCodecs(s,{audio:e});return this.logger.info(`limitAudioCodecs(): limit codecs was resolved with result ${o.isAudio} \n${o.sdp.sdp}`),a(),t(o.isAudio)}return this.logger.info("limitAudioCodecs(): Cannot create a test peer connection"),a(),n("limitAudioCodecs(): Cannot create a test peer connection, audio codecs will be full reduced")}catch(e){return this.logger.info(`limitAudioCodecs(): ${e.message}`),a(),n("limitAudioCodecs(): Media access denied, audio codecs will be full reduced")}}))}limitVideoCodecs(e){return this.limitVCodecs=e,this.logger.info(`limitVideoCodecs(): Trying to limit video codecs to \n${JSON.stringify(e)}`),new Promise((async(t,n)=>{let r,i;const a=()=>{null==r||r.getTracks().forEach((e=>e.stop())),null==i||i.close()};try{if(r=await T.StreamManager.getUserMedia({audio:!0,video:!0}),i=new RTCPeerConnection,i){await i.addTransceiver(r.getAudioTracks()[0]),await i.addTransceiver(r.getVideoTracks()[0]);const s=await i.createOffer().catch((()=>n("limitVideoCodecs(): cannot get local offer"))),o=I.SDPMuggle.reduceCodecs(s,{video:e});return this.logger.info(`limitVideoCodecs(): limit codecs was resolved with result ${o.isVideo} \n${o.sdp.sdp}`),a(),t(o.isVideo)}return this.logger.info("limitVideoCodecs(): Cannot create a test peer connection"),a(),n("limitVideoCodecs(): Cannot create a test peer connection, video codecs will be full reduced")}catch(e){return this.logger.info(`limitVideoCodecs(): ${e.message}`),a(),n("limitVideoCodecs(): Media access denied, video codecs will be full reduced")}}))}}r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"playProgressTone",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"stopProgressTone",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"onIncomingCall",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"init",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"call",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"callConference",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"joinAsSharing",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"joinAsViewer",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"connect",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"disconnect",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setOperatorACDStatus",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setOperatorSQMessagingStatus",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"getOperatorACDStatus",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"getOperatorSQMessagingStatus",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"login",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"loginWithCode",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"loginWithToken",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"tokenRefresh",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"requestOneTimeLoginKey",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"loginWithOneTimeKey",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"connected",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"showLocalVideo",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setLocalVideoPosition",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setLocalVideoSize",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setVideoSettings",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setVideoBandwidth",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"playToneScript",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"stopPlayback",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"volume",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"audioSources",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"videoSources",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"audioOutputs",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"useAudioSource",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"useVideoSource",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"useAudioOutput",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"attachRecordingDevice",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"detachRecordingDevice",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setCallActive",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"sendVideo",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"isRTCsupported",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"transferCall",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setLogLevel",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"onSignalingConnected",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"onSignalingClosed",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"onSignalingConnectionFailed",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"onMediaConnectionFailed",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"getCall",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"removeCall",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"addEventListener",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"removeEventListener",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"on",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"off",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"checkConnection",null),r([d.LogManager.d_trace(d.LogCategory.CLIENT)],A.prototype,"setLogLevelAll",null),t.Client=A},9553:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.ConferenceEndpointManager=void 0;const i=n(3992),a=n(308),s=n(6278),o=n(9002),c=n(9001);class d{constructor(e){this.call=e,this.currentState={},this.mutex=new i.TaskMutex}updateState(){const e={};this.call.getEndpoints().forEach((t=>{e[t.id]={audio:[],video:[]},t.mediaRenderers.forEach((n=>{n.enabled&&("audio"===n.kind?e[t.id].audio=[...e[t.id].audio,...n.mids]:"video"!==n.kind&&"sharing"!==n.kind||(e[t.id].video=[...e[t.id].video,...n.mids]))}))}));const t=this.diffStates(e);if(t.dirty){this.currentState=e,this.call.getEndpoints().forEach((e=>{e.mediaRenderers.forEach((n=>{n.mids.forEach((r=>{t.mrEnabled.includes(r)&&e.dispatchEvent({name:c.EndpointEvents.MediaRenderEnabled,endpoint:e,call:this.call,mediaRenderer:n}),t.mrDisabled.includes(r)&&e.dispatchEvent({name:c.EndpointEvents.MediaRenderDisabled,endpoint:e,call:this.call,mediaRenderer:n})}))}))}));const n=a.CallManager.get().getConfSignaling(this.call);n&&n.runFunction(s.ConfSignalingRemoteFunctions.MANAGE_ENDPOINTS,e)}}updateRenderSize(){const e={};this.call.getEndpoints().forEach((t=>{const n={};t.mediaRenderers.forEach((e=>{if("audio"!==e.kind&&e.videoSize&&e.videoSize.width&&e.videoSize.height){const t=[e.videoSize.width,e.videoSize.height];e.mids.forEach((e=>n[e]=t))}})),Object.keys(n).length&&(e[t.id]=n)}));const t=a.CallManager.get().getConfSignaling(this.call);t&&t.runFunction(s.ConfSignalingRemoteFunctions.REQUEST_VIDEO_SIZE,e)}setCurrentState(e){throw Error("Not implemented")}diffStates(e){const t=["added","default"];let n=!1,r=[],i=[],a=[],s=[],o=[],c={};for(let r in this.currentState)this.currentState.hasOwnProperty(r)&&!t.includes(r)&&(e[r]?["audio","video"].forEach((t=>{this.currentState[r][t]&&this.currentState[r][t].includes("default")?(o.push(r),n=!0):e[r][t]&&e[r][t].includes("default")?(s.push(r),n=!0):(this.currentState[r][t]&&this.currentState[r][t].forEach((i=>{e[r][t]&&e[r][t].includes(i)||(a.push(i),n=!0)})),e[r][t]&&e[r][t].forEach((e=>{this.currentState[r][t]&&this.currentState[r][t].includes(e)||(i.push(e),n=!0)})))})):(n=!0,c[r]=e[r]));for(let i in e)e.hasOwnProperty(i)&&!t.includes(i)&&(this.currentState[i]||(n=!0,r.push(i)));return{dirty:n,removed:r,mrEnabled:i,mrDisabled:a,allEnabled:s,allDisabled:o}}}r([o.debounceDecorator(400,!1)],d.prototype,"updateState",null),r([o.debounceDecorator(400,!1)],d.prototype,"updateRenderSize",null),r([i.queueDecorator()],d.prototype,"setCurrentState",null),t.ConferenceEndpointManager=d},3385:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Constants=void 0;class n{}t.Constants=n,n.DIRECT_CALL_HEADER="X-DirectCall",n.VIAMEDIA_CALL_HEADER="X-ViaMedia",n.CALLSTATSIOID_HEADER="X-CallstatsIOID",n.CALL_DATA_HEADER="VI-CallData",n.ZINGAYA_IM_MIME_TYPE="application/zingaya-im",n.P2P_SPD_FRAG_MIME_TYPE="voximplant/sdpfrag",n.VI_HOLD_EMUL="vi/holdemul",n.VI_SPD_OFFER_MIME_TYPE="vi/sdpoffer",n.VI_SPD_ANSWER_MIME_TYPE="vi/sdpanswer",n.VI_CONF_PARTICIPANT_INFO_ADDED="vi/conf-info-added",n.VI_CONF_PARTICIPANT_INFO_REMOVED="vi/conf-info-removed",n.VI_CONF_PARTICIPANT_INFO_UPDATED="vi/conf-info-updated",n.VI_CONF_PARTICIPANT_BATCH="vi/conf-batch"},9002:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.debounceDecorator=void 0;const r=n(1150);t.debounceDecorator=function(e=400,t=!1){let n;return(i,a,s)=>({value:function(...i){n&&t&&r.LogManager.get().writeMessage(r.LogCategory.UTILS,"Debounce",r.LogLevel.WARNING,"Function has been debounced."),clearTimeout(n),n=setTimeout((()=>{n=null,s.value.apply(this,i)}),e)}})}},3576:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.EventTarget=void 0;const i=n(1150);class a{sysOn(e,t,n){this._ETonTo("system",e,t,n)}sysOff(e,t){this._EToffTo("system",e,t)}on(e,t,n){this._ETonTo("user",e,t,n)}off(e,t){this._EToffTo("user",e,t)}_ETonTo(e,t,n,r){void 0===this.eventListeners&&(this.eventListeners={});let i=this.eventListeners;void 0===i[t]&&(i[t]=[]);const a={listener:n,options:r,_triggered:!1,_namespace:e};r&&r.capture?i[t].unshift(a):i[t].push(a)}_EToffTo(e,t,n){const r=this.eventListeners;if(void 0!==r&&void 0!==r[t])if("function"==typeof n){for(let i=0;i<r[t].length;i++)if(r[t][i].listener==n&&r[t][i]._namespace===e){r[t].splice(i,1);break}}else r[t]=r[t].filter((t=>t._namespace!==e))}dispatchEvent(e){if(void 0!==this.eventListeners&&void 0!==this.eventListeners[e.name]){const t=this.eventListeners[e.name].filter((e=>"user"===e._namespace));i.LogManager.get().writeMessage(i.LogCategory.UTILS,"[event]",i.LogLevel.INFO,`${e.name}${e.name.includes("QualityIssue")?" "+e.level:""}, listeners: ${t.length}`);for(let n=0;n<this.eventListeners[e.name].length;n++)try{if(!(this.eventListeners[e.name][n].options&&this.eventListeners[e.name][n].options.once&&this.eventListeners[e.name][n]._triggered||"system"!==this.eventListeners[e.name][n]._namespace&&"user"!==this.eventListeners[e.name][n]._namespace&&("default"!==this.eventListeners[e.name][n]._namespace||t.length))){this.eventListeners[e.name][n]._triggered=!0;if(!1===this.eventListeners[e.name][n].listener(e))return}}catch(e){console.error(e)}}else i.LogManager.get().writeMessage(i.LogCategory.UTILS,"[event]",i.LogLevel.INFO,`${e.name}${e.name.includes("QualityIssue")?" "+e.level:""}, listeners: 0`)}removeEventListener(e,t){this.off(e,t)}addEventListener(e,t,n){this.on(e,t,n)}addDefaultEventListener(e,t){this._ETonTo("default",e,t,{})}removeDefaultEventListener(e){this._EToffTo("default",e)}_traceName(){return"EventTarget"}}r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"sysOn",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"sysOff",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"on",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"off",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"removeEventListener",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"addEventListener",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"addDefaultEventListener",null),r([i.LogManager.d_trace(i.LogCategory.EVENTTARGET)],a.prototype,"removeDefaultEventListener",null),t.EventTarget=a},141:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Events=void 0,function(e){e[e.SDKReady="SDKReady"]="SDKReady",e[e.ConnectionEstablished="ConnectionEstablished"]="ConnectionEstablished",e[e.ConnectionFailed="ConnectionFailed"]="ConnectionFailed",e[e.ConnectionClosed="ConnectionClosed"]="ConnectionClosed",e[e.Reconnecting="Reconnecting"]="Reconnecting",e[e.Reconnected="Reconnected"]="Reconnected",e[e.AuthResult="AuthResult"]="AuthResult",e[e.RefreshTokenResult="RefreshTokenResult"]="RefreshTokenResult",e[e.PlaybackFinished="PlaybackFinished"]="PlaybackFinished",e[e.MicAccessResult="MicAccessResult"]="MicAccessResult",e[e.IncomingCall="IncomingCall"]="IncomingCall",e[e.SourcesInfoUpdated="SourcesInfoUpdated"]="SourcesInfoUpdated",e[e.NetStatsReceived="NetStatsReceived"]="NetStatsReceived",e[e.SIPRegistrationSuccessful="SIPRegistrationSuccessful"]="SIPRegistrationSuccessful",e[e.SIPRegistrationFailed="SIPRegistrationFailed"]="SIPRegistrationFailed",e[e.ACDStatusUpdated="ACDStatusUpdated"]="ACDStatusUpdated",e[e.SQMessagingStatusUpdated="SQMessagingStatusUpdated"]="SQMessagingStatusUpdated",e[e.ACDError="ACDError"]="ACDError",e[e.SQError="SQError"]="SQError",e[e.PlaybackError="PlaybackError"]="PlaybackError"}(t.Events||(t.Events={}))},209:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(e){this.str=e||n.getNewGUIDString()}toString(){return this.str}static getNewGUIDString(){let e=(new Date).getTime();return window.performance&&"function"==typeof window.performance.now&&(e+=performance.now()),"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(t=>{let n=(e+16*Math.random())%16|0;return e=Math.floor(e/16),("x"==t?n:3&n|8).toString(16)}))}_traceName(){return"GUID"}}t.default=n},7272:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Hardware=void 0;const r=n(4855);var i;!function(e){let t,n;!function(e){e[e.DevicesUpdated="DevicesUpdated"]="DevicesUpdated",e[e.MediaRendererAdded="MediaRendererAdded"]="MediaRendererAdded",e[e.MediaRendererUpdated="MediaRendererUpdated"]="MediaRendererUpdated",e[e.MediaRendererRemoved="MediaRendererRemoved"]="MediaRendererRemoved",e[e.BeforeMediaRendererRemoved="BeforeMediaRendererRemoved"]="BeforeMediaRendererRemoved"}(t=e.HardwareEvents||(e.HardwareEvents={})),function(e){e[e.VIDEO_QUALITY_HIGH="video_quality_high"]="VIDEO_QUALITY_HIGH",e[e.VIDEO_QUALITY_LOW="video_quality_low"]="VIDEO_QUALITY_LOW",e[e.VIDEO_QUALITY_MEDIUM="video_quality_medium"]="VIDEO_QUALITY_MEDIUM",e[e.VIDEO_SIZE_QQVGA="video_size_qqvga"]="VIDEO_SIZE_QQVGA",e[e.VIDEO_SIZE_QCIF="video_size_qcif"]="VIDEO_SIZE_QCIF",e[e.VIDEO_SIZE_QVGA="video_size_qvga"]="VIDEO_SIZE_QVGA",e[e.VIDEO_SIZE_CIF="video_size_cif"]="VIDEO_SIZE_CIF",e[e.VIDEO_SIZE_nHD="video_size_nhd"]="VIDEO_SIZE_nHD",e[e.VIDEO_SIZE_VGA="video_size_vga"]="VIDEO_SIZE_VGA",e[e.VIDEO_SIZE_SVGA="video_size_svga"]="VIDEO_SIZE_SVGA",e[e.VIDEO_SIZE_HD="video_size_hd"]="VIDEO_SIZE_HD",e[e.VIDEO_SIZE_UXGA="video_size_uxga"]="VIDEO_SIZE_UXGA",e[e.VIDEO_SIZE_FHD="video_size_fhd"]="VIDEO_SIZE_FHD",e[e.VIDEO_SIZE_UHD="video_size_uhd"]="VIDEO_SIZE_UHD"}(n=e.VideoQuality||(e.VideoQuality={}));class i extends r.AudioDeviceManager{}e.AudioDeviceManager=i;class a extends r.CameraManager{}e.CameraManager=a;class s extends r.StreamManager{}e.StreamManager=s}(i=t.Hardware||(t.Hardware={})),t.default=i},2709:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.AudioDeviceManager=void 0;const i=n(1150),a=n(4007),s=n(9699);class o{constructor(){if(void 0!==o.instance)throw new Error("Error - use StreamManager.get()");navigator&&navigator.mediaDevices&&navigator.mediaDevices.getSupportedConstraints?this._supportedConstraints=navigator.mediaDevices.getSupportedConstraints():this._supportedConstraints={},this.__defaultParams={},this._lastAudioInputDevices=[],this._lastAudioOutputDevices=[],this._callParams={},this.logger=i.LogManager.get().createLogger(i.LogCategory.USERMEDIA,this._traceName())}getAudioContext(){if(this.audioContext)return this.audioContext;if(void 0!==window.AudioContext||void 0!==window.webkitAudioContext){window.AudioContext=window.AudioContext||window.webkitAudioContext;try{return this.audioContext=new AudioContext,this.audioContext}catch(e){return this.audioContext=null,null}}}prepareAudioContext(){this.getAudioContext()}static get(){return void 0===o.instance&&(o.instance=new o),o.instance}getInputDevices(){return navigator.mediaDevices.enumerateDevices().then((e=>(this.logger.info(`Got input devices: ${JSON.stringify(e)}`),this._lastAudioInputDevices=e.map((e=>{if("audio"===e.kind||"audioinput"===e.kind)return{id:e.deviceId,name:e.label,group:e.groupId}})).filter((e=>void 0!==e)),this._lastAudioInputDevices)))}getOutputDevices(){return navigator.mediaDevices.enumerateDevices().then((e=>(this.logger.info(`Got output devices: ${JSON.stringify(e)}`),this._lastAudioOutputDevices=e.map((e=>{if("audiooutput"===e.kind)return{id:e.deviceId,name:e.label,group:e.groupId}})).filter((e=>void 0!==e)),this._lastAudioOutputDevices)))}getDefaultAudioSettings(){return this.__defaultParams}setDefaultAudioSettings(e){this.logger.info(`Set default audio settings: ${JSON.stringify(e)}`),this.__defaultParams=e}setCallAudioSettings(e,t){return this.logger.info(`Setting call ${e.id()} audio settings: ${JSON.stringify(t)}`),e.active()?new Promise(((n,r)=>{this._callParams[e.id()]===t&&n();const i=this._callParams[e.id()].outputId!==t.outputId,s=this._callParams[e.id()].inputId!==t.inputId||this._callParams[e.id()].noiseSuppression!==t.noiseSuppression||this._callParams[e.id()].echoCancellation!==t.echoCancellation||this._callParams[e.id()].disableAudio!==t.disableAudio;this.logger.info(`Must update renderers: ${i}, must update source: ${s}`),this._callParams[e.id()]=t,i&&e.getEndpoints().forEach((e=>{e.mediaRenderers.forEach((e=>e.useAudioOutput(t.outputId)))})),s?a.StreamManager.get().updateCallStream(e).then((()=>{n()})).catch((t=>{this.logger.warning(`Failed to update call ${e.id()} stream: ${t}`),r(t)})):n()})):Promise.reject(e.dispatchUpdatedEventWith(!1,s.CallFailedUpdateReasons.mediaOnHold))}getCallAudioSettings(e){return this._callParams[e.id()]}getCallConstraints(e){return this._callParams[e]?this._getAudioConstraints(this._callParams[e]):(this._callParams[e]=this.__defaultParams,this._getAudioConstraints(this.__defaultParams))}_getAudioConstraints(e){if(e.disableAudio)return!1;let t="ideal";e.strict;const n={};return e.inputId&&(n.deviceId={exact:e.inputId}),e.echoCancellation&&this._supportedConstraints.echoCancellation&&(n.echoCancellation=e.echoCancellation),e.noiseSuppression&&this._supportedConstraints.noiseSuppression&&(n.noiseSuppression=e.echoCancellation),e.autoGainControl&&this._supportedConstraints.autoGainControl&&(n.autoGainControl=e.autoGainControl),e.advanced&&(n.advanced=e.advanced),n.echoCancellationType="system",!Object.keys(n)||n}_traceName(){return"AudioDeviceManager"}}r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"getInputDevices",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"getOutputDevices",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"getDefaultAudioSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"setDefaultAudioSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"setCallAudioSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"getCallAudioSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"getCallConstraints",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],o.prototype,"_getAudioConstraints",null),t.AudioDeviceManager=o},2334:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.CameraManager=void 0;const i=n(1150),a=n(4007),s=n(7272),o=n(3869),c=n(9699);class d{constructor(){if(void 0!==d.instance)throw new Error("Error - use StreamManager.get()");navigator&&navigator.mediaDevices&&navigator.mediaDevices.getSupportedConstraints?this._supportedConstraints=navigator.mediaDevices.getSupportedConstraints():this._supportedConstraints={},this._callParams={},this._lastCameraDevices=[],this.__defaultParams={},this.logger=i.LogManager.get().createLogger(i.LogCategory.USERMEDIA,this._traceName())}static get(){return void 0===d.instance&&(d.instance=new d),d.instance}setDefaultVideoSettings(e){return new Promise((t=>{const n=this._validateCameraParams(e);this.logger.info(`Setting  default video settings, params: ${JSON.stringify(e)}, valid params: ${JSON.stringify(n)}`),this.__defaultParams=n,setTimeout((()=>{s.Hardware.StreamManager.get().updateLocalVideo()}),1e3),t(null)}))}getDefaultVideoSettings(){return this.__defaultParams}setCallVideoSettings(e,t){const n=this._validateCameraParams(t);return this.logger.info(`Setting call ${e.id()} video settings, params: ${JSON.stringify(t)}, valid params: ${JSON.stringify(n)}`),e.active()?(this._callParams[e.id()]=n,new Promise(((t,n)=>{a.StreamManager.get().updateCallStream(e).then((()=>{t()})).catch((t=>{this.logger.warning(`Failed to set call ${e.id()} video settings: ${t}`),n(t)}))}))):Promise.reject(e.dispatchUpdatedEventWith(!1,c.CallFailedUpdateReasons.mediaOnHold))}getCallVideoSettings(e){return this._callParams[e.id()]}getCallConstraints(e){return"__local__"===e?(this._callParams[e]=this.__defaultParams,this._getVideoConstraints(this.__defaultParams)):this._callParams[e]?this._getVideoConstraints(this._callParams[e]):(this._callParams[e]=this.__defaultParams,this._getVideoConstraints(this.__defaultParams))}getInputDevices(){return navigator.mediaDevices.enumerateDevices().then((e=>(this.logger.info(`Got input devices: ${JSON.stringify(e)}`),this._lastCameraDevices=e.map((e=>{if("video"===e.kind||"videoinput"===e.kind)return{id:e.deviceId,name:e.label,group:e.groupId}})).filter((e=>void 0!==e)),this._lastCameraDevices)))}_getVideoConstraints(e){const t={};return e.cameraId?t.deviceId={exact:e.cameraId}:void 0!==e.facingMode&&(!1===e.facingMode?t.facingMode="environment":t.facingMode="user"),e.frameHeight&&(t.height={},e.strict?t.height.min=e.frameHeight:t.height.ideal=e.frameHeight),e.frameWidth&&(t.width={},e.strict?t.width.min=e.frameWidth:t.width.ideal=e.frameWidth),e.frameRate&&e.frameRate>0&&this._supportedConstraints.frameRate&&(t.frameRate=e.frameRate+""),e.aspectRatio&&e.aspectRatio>0&&this._supportedConstraints.aspectRatio&&(t.aspectRatio={exact:e.aspectRatio+""}),!Object.keys(t)||t}_validateCameraParams(e){if(e.videoQuality){(e.frameHeight||e.frameWidth)&&this.logger.warning('"videoQuality" parameter detected. The "frameHeight" and the "frameWidth" params will be ignored');const t=this._videoQualityToSize(e.videoQuality);e.frameWidth=t.w,e.frameHeight=t.h}return o.default.isIphone()&&(delete e.videoQuality,delete e.frameWidth,delete e.frameHeight,delete e.frameRate),e}_videoQualityToSize(e){switch(e){case s.Hardware.VideoQuality.VIDEO_QUALITY_HIGH:return{w:1280,h:720};case s.Hardware.VideoQuality.VIDEO_QUALITY_MEDIUM:return{w:640,h:480};case s.Hardware.VideoQuality.VIDEO_QUALITY_LOW:return{w:320,h:240};case s.Hardware.VideoQuality.VIDEO_SIZE_QQVGA:return{w:160,h:120};case s.Hardware.VideoQuality.VIDEO_SIZE_QCIF:return{w:176,h:144};case s.Hardware.VideoQuality.VIDEO_SIZE_QVGA:return{w:320,h:240};case s.Hardware.VideoQuality.VIDEO_SIZE_CIF:return{w:352,h:288};case s.Hardware.VideoQuality.VIDEO_SIZE_nHD:return{w:640,h:360};case s.Hardware.VideoQuality.VIDEO_SIZE_VGA:return{w:640,h:480};case s.Hardware.VideoQuality.VIDEO_SIZE_SVGA:return{w:800,h:600};case s.Hardware.VideoQuality.VIDEO_SIZE_HD:return{w:1280,h:720};case s.Hardware.VideoQuality.VIDEO_SIZE_UXGA:return{w:1600,h:1200};case s.Hardware.VideoQuality.VIDEO_SIZE_FHD:return{w:1920,h:1080};case s.Hardware.VideoQuality.VIDEO_SIZE_UHD:return{w:3840,h:2160};default:return{w:320,h:240}}}static legacyParamConverter(e){const t={videoQuality:s.Hardware.VideoQuality.VIDEO_QUALITY_MEDIUM};return e.width&&("string"==typeof e.width||"number"==typeof e.width?(delete t.videoQuality,t.frameWidth=e.width):"string"==typeof e.width.exact||"number"==typeof e.width.exact?(delete t.videoQuality,t.frameWidth=e.width.exact,t.strict=!0):"string"==typeof e.width.min||"number"==typeof e.width.min?(delete t.videoQuality,t.frameWidth=e.width.min):"string"==typeof e.width.max||"number"==typeof e.width.max?(delete t.videoQuality,t.frameWidth=e.width.max):"string"!=typeof e.width.ideal&&"number"!=typeof e.width.ideal||(delete t.videoQuality,t.frameWidth=e.width.ideal)),e.height&&("string"==typeof e.height||"number"==typeof e.height?(delete t.videoQuality,t.frameHeight=e.height):"string"==typeof e.height.exact||"number"==typeof e.height.exact?(delete t.videoQuality,t.frameHeight=e.height.exact,t.strict=!0):"string"==typeof e.height.min||"number"==typeof e.height.min?(delete t.videoQuality,t.frameHeight=e.height.min):"string"==typeof e.height.max||"number"==typeof e.height.max?(delete t.videoQuality,t.frameHeight=e.height.max):"string"!=typeof e.height.ideal&&"number"!=typeof e.height.ideal||(delete t.videoQuality,t.frameHeight=e.height.ideal)),t}testResolutions(e){const t=[s.Hardware.VideoQuality.VIDEO_SIZE_QQVGA,s.Hardware.VideoQuality.VIDEO_SIZE_QCIF,s.Hardware.VideoQuality.VIDEO_SIZE_QVGA,s.Hardware.VideoQuality.VIDEO_SIZE_CIF,s.Hardware.VideoQuality.VIDEO_SIZE_nHD,s.Hardware.VideoQuality.VIDEO_SIZE_VGA,s.Hardware.VideoQuality.VIDEO_SIZE_SVGA,s.Hardware.VideoQuality.VIDEO_SIZE_HD,s.Hardware.VideoQuality.VIDEO_SIZE_UXGA,s.Hardware.VideoQuality.VIDEO_SIZE_FHD,s.Hardware.VideoQuality.VIDEO_SIZE_UHD];return this._lastResolutionTestResult?new Promise(((e,t)=>{e(this._lastResolutionTestResult)})):this._testResolutions(t,{},e)}_testResolutions(e,t,n){if(e.length){let r=e.shift(),i={strict:!0};const o=this._videoQualityToSize(r);i.frameWidth=o.w,i.frameHeight=o.h,n&&(i.cameraId=n);let c={video:this._getVideoConstraints(i)};return a.StreamManager.getUserMedia(c).then((i=>(this.logger.info("_testResolutions(): Media access granted"),i.getTracks().forEach((e=>e.stop())),t[s.Hardware.VideoQuality[r]]=!0,this._testResolutions(e,t,n))),(i=>(this.logger.error(`_testResolutions(): Media access denied: ${i?i.message||i.name||i:"unknown"}`),t[s.Hardware.VideoQuality[r]]=!1,this._testResolutions(e,t,n))))}return this._lastResolutionTestResult=t,t}loadResolutionTestResult(e){return!![s.Hardware.VideoQuality.VIDEO_SIZE_QQVGA,s.Hardware.VideoQuality.VIDEO_SIZE_QCIF,s.Hardware.VideoQuality.VIDEO_SIZE_QVGA,s.Hardware.VideoQuality.VIDEO_SIZE_CIF,s.Hardware.VideoQuality.VIDEO_SIZE_nHD,s.Hardware.VideoQuality.VIDEO_SIZE_VGA,s.Hardware.VideoQuality.VIDEO_SIZE_SVGA,s.Hardware.VideoQuality.VIDEO_SIZE_HD,s.Hardware.VideoQuality.VIDEO_SIZE_UXGA,s.Hardware.VideoQuality.VIDEO_SIZE_FHD,s.Hardware.VideoQuality.VIDEO_SIZE_UHD].every((t=>void 0!==e[s.Hardware.VideoQuality[t]]))&&(this._lastResolutionTestResult=e,!0)}_traceName(){return"CameraManager"}}r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"setDefaultVideoSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"getDefaultVideoSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"setCallVideoSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"getCallVideoSettings",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"getCallConstraints",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"getInputDevices",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"_getVideoConstraints",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d.prototype,"_validateCameraParams",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],d,"legacyParamConverter",null),t.CameraManager=d},4007:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.StreamManager=void 0;const i=n(1150),a=n(7272),s=n(3576),o=n(2334),c=n(3869),d=n(141),l=n(125),g=n(2709),u=n(7222),h=n(308);class p extends s.EventTarget{constructor(){if(super(),this.isLocalVideoRequested=!1,this._dedicatedMirrorStream=null,void 0!==p.instance)throw new Error("Error - use StreamManager.get()");this._callStreams={},this._localMediaRenderers=[],this._sharingStreams={},this.logger=i.LogManager.get().createLogger(i.LogCategory.HARDWARE,this._traceName())}static get(){return void 0===p.instance&&(p.instance=new p),p.instance}async getCallStream(e,t=!1){const n=void 0===e?"__default":e.id();if(this._callStreams[n]&&!t)return this._callStreams[n];{const t=this._composeConstraints(e);if(this.logger.info(`[constraints]: ${JSON.stringify(t)}`),!t.audio&&!t.video&&"__default"!==n)return null;try{const e=await p.getUserMedia(t);return this.logger.info("Media access granted"),this._callStreams[n]=e,e.getTracks().forEach((e=>{e.onended=this.onCallEnded,e.onmute=this.onCallEnded})),l.Client.getInstance().dispatchEvent({name:d.Events.MicAccessResult,result:!0,stream:e}),e}catch(r){let i=null;try{"NotFoundError"===(null==r?void 0:r.name)&&(i=await this._handleNotFoundError(e,t)),"NotReadableError"===(null==r?void 0:r.name)&&(i=await this._handleNotReadableError(e,t))}catch(e){throw this.logger.error(`Media access denied: ${(null==e?void 0:e.message)||(null==e?void 0:e.name)||e||"unknown"}`),l.Client.getInstance().dispatchEvent({name:d.Events.MicAccessResult,result:!1,stream:null}),e}return this.logger.info("Media access granted"),i&&(this._callStreams[n]=i),null==i||i.getTracks().forEach((e=>{e.onended=this.onCallEnded,e.onmute=this.onCallEnded})),l.Client.getInstance().dispatchEvent({name:d.Events.MicAccessResult,result:Boolean(i),stream:i,fallback:!0}),i}}}async _handleNotFoundError(e,t){let n={audio:!0};return this.logger.info(`[NotFoundError backup constraints]: ${JSON.stringify(t)}`),void 0!==e&&(e.settings.videoDirections.sendVideo=!1,n=this._composeConstraints(e)),await p.getUserMedia(n)}async _handleNotReadableError(e,t){var n,r;const i=void 0===e?"__default":e.id();this.logger.info(`[NotReadableError constraints]: ${JSON.stringify(t)}`);this._callStreams[i].getTracks().forEach((e=>e.stop()));try{return await p.getUserMedia(t)}catch(t){const i={video:Boolean(null===(r=null===(n=null==e?void 0:e.settings)||void 0===n?void 0:n.videoDirections)||void 0===r?void 0:r.sendVideo),audio:!0};return this.logger.info(`[NotReadableError fallback constraints]: ${JSON.stringify(i)}`),await p.getUserMedia(i)}}_updateCallStream(e){return this.remCallStream(e),this.getCallStream(e)}updateCallStream(e){return this.logger.info(`Updating call ${e.id()} stream`),new Promise(((t,n)=>{const r=this._callStreams[e.id()],i=()=>{setTimeout((()=>this.updateLocalVideo()),500),e.peerConnection.restoreMute();const t=()=>{r.getTracks().forEach((t=>{e.peerConnection.getTransceivers().some((e=>e.sender.track&&e.sender.track.id===t.id))||c.default.isIphone()||t.stop()}))};setTimeout(t,500),setTimeout(t,2e3),setTimeout(t,5e3)},a=()=>{i(),t()};this.getCallStream(e,!0).then((t=>{const i=r.getTracks(),s=t.getTracks(),o=i.map((e=>e.kind)).sort(),c=s.map((e=>e.kind)).sort();return e._addCallPromise("deviceChange",{resolve:a,reject:n}),i.length===s.length&&o.every(((e,t)=>e===c[t]))?e.peerConnection.updateCustomMedia(t):(e.peerConnection.fastRemoveCustomMedia(r),this._remCallStream(r),e.peerConnection.addCustomMedia(t))})).catch(n)}))}remCallStream(e){const t=void 0===e?"__default":e.id();this._callStreams[t]&&(this._remCallStream(this._callStreams[t]),this._callStreams[t]=void 0,delete this._callStreams[t])}_remCallStream(e){e&&(c.default.isIphone()||e.getTracks().forEach((t=>{t.onended=void 0,t.onmute=void 0,t.stop(),e.removeTrack(t)})))}clear(){this._mirrorStream&&this._mirrorStream.getTracks().forEach((e=>{e.onended=void 0,e.onmute=void 0,e.stop()})),this._mirrorStream=void 0;for(let e in this._callStreams)if(this._callStreams.hasOwnProperty(e)){const t=this._callStreams[e];t&&t.getTracks().forEach((e=>{e.onended=void 0,e.onmute=void 0,e.stop()}))}this._callStreams={}}getLocalMediaRenderers(){return this._localMediaRenderers}showLocalVideo(e=!0){return new Promise(((t,n)=>{const r="voximplantlocalvideo";if(this.isLocalVideoRequested)return this.logger.warning("The local video is already displaying."),t(this._localMediaRenderers[0]);const i=this._getVideoFromCalls();if(i){const n=new u.MediaRenderer({stream:new MediaStream([i]),kind:"video",placeOnDom:e,isLocal:!0,deprecatedId:r,mids:["local"]});this._localMediaRenderers.push(n),t(n),this.dispatchEvent({name:a.default.HardwareEvents.MediaRendererAdded,renderer:n}),this.isLocalVideoRequested=!0}else this.getDedicatedMirrorStream().then((n=>{this._dedicatedMirrorStream&&this.stopDedicatedMirrorStream(),this._dedicatedMirrorStream=n;const i=new u.MediaRenderer({stream:n,kind:"video",placeOnDom:e,isLocal:!0,deprecatedId:r,mids:["local"]});this._localMediaRenderers.push(i),t(i),this.dispatchEvent({name:a.default.HardwareEvents.MediaRendererAdded,renderer:i}),this.isLocalVideoRequested=!0})).catch(n)}))}async getDedicatedMirrorStream(){try{return await p.getUserMedia({video:o.CameraManager.get().getCallConstraints("__local__")})}catch(e){if("NotReadableError"===(null==e?void 0:e.name))return this.stopDedicatedMirrorStream(),await p.getUserMedia({video:o.CameraManager.get().getCallConstraints("__local__")});throw e}}stopDedicatedMirrorStream(){if(this._dedicatedMirrorStream){this._dedicatedMirrorStream.getTracks().forEach((e=>{e.onended=null,e.onmute=null,e.stop()}));try{this._dedicatedMirrorStream.stop()}catch(e){}this._dedicatedMirrorStream=null}}updateLocalVideo(e){if(this._localMediaRenderers&&0===this._localMediaRenderers.length||!this.isLocalVideoRequested)return;const t=this._getVideoFromCalls();t?this._localMediaRenderers[0].stream.getVideoTracks()[0].id!==t.id&&(this._localMediaRenderers[0].replaceVideo(new MediaStream([t])),this.stopDedicatedMirrorStream(),this.dispatchEvent({name:a.default.HardwareEvents.MediaRendererUpdated,renderer:this._localMediaRenderers[0],type:e||this._localMediaRenderers[0].kind})):this.getDedicatedMirrorStream().then((t=>{this._dedicatedMirrorStream&&this.stopDedicatedMirrorStream(),this._dedicatedMirrorStream=t,this._localMediaRenderers[0]&&(this._localMediaRenderers[0].kind=e||"video",this._localMediaRenderers[0].replaceVideo(t),this.dispatchEvent({name:a.default.HardwareEvents.MediaRendererUpdated,renderer:this._localMediaRenderers[0],type:e||this._localMediaRenderers[0].kind}))}))}hideLocalVideo(){return this.isLocalVideoRequested?(this.dispatchEvent({name:a.default.HardwareEvents.BeforeMediaRendererRemoved,renderer:this._localMediaRenderers[0]}),this.isLocalVideoRequested=!1,this._dedicatedMirrorStream&&this.stopDedicatedMirrorStream(),0!==this._localMediaRenderers.length?(this._localMediaRenderers[0].clear(),this._localMediaRenderers[0].stream=null,this._localMediaRenderers.shift(),this.dispatchEvent({name:a.default.HardwareEvents.MediaRendererRemoved,renderer:this._localMediaRenderers[0]}),Promise.resolve()):void 0):Promise.resolve()}on(e,t,n){super.on(e,t)}off(e,t){super.off(e,t)}_newScreenSharing(e){return new Promise(((t,n)=>{c.default.getScreenMedia().then((n=>{var r;this.logger.info("Media access granted");const i={stream:n,renderer:null};n.getTracks().forEach((t=>{t.onended=()=>e.stopSharingScreen()}));let a=null===(r=this._localMediaRenderers)||void 0===r?void 0:r[0];a&&(a.kind="sharing"),void 0===this._sharingStreams[e.id()]&&(this._sharingStreams[e.id()]=[]),this._sharingStreams[e.id()].push(i),t(i)})).catch((e=>{this.logger.error(`Media access denied: ${e?e.message||e.name||e:"unknown"}`),n(e)}))}))}_getScreenSharing(e){return void 0!==this._sharingStreams[e.id()]?this._sharingStreams[e.id()]:[]}_clearScreenSharing(e,t){return new Promise(((n,r)=>{var i;this._sharingStreams[e.id()]=this._sharingStreams[e.id()].filter((e=>e.stream.id!==t.stream.id)),t.renderer&&(this._localMediaRenderers=this._localMediaRenderers.filter((e=>e.id!==t.renderer.id)),t.renderer.clear(),t.renderer=void 0),t.stream.getTracks().forEach((e=>{e.onended=null,e.stop()})),"sharing"===(null===(i=this._localMediaRenderers[0])||void 0===i?void 0:i.kind)&&(this._localMediaRenderers[0].kind="video"),n()}))}_getTracksKind(e){let t={};const n=this._callStreams[e.id()];void 0!==n&&n.getTracks().forEach((e=>t[e.id]=e.kind));const r=this._sharingStreams[e.id()];return void 0!==r&&r.forEach((e=>{e.stream.getTracks().forEach((e=>t[e.id]="sharing"))})),t}_traceName(){return"StreamManager"}_getVideoFromCalls(){const e=h.CallManager.get(),t=[];for(const n in e.calls)if(e.calls.hasOwnProperty(n)){const r=e.calls[n];if(!r.active())break;const i={time:r.getCallDuration(),track:null};if(r.peerConnection){r.peerConnection.getTransceivers().forEach((e=>{null===i.track&&-1!==e.direction.indexOf("send")&&e.sender.track&&"video"===e.sender.track.kind&&"live"===e.sender.track.readyState&&(i.track=e.sender.track)}))}i.track&&t.push(i)}return t.length?(t.sort(((e,t)=>e.time>t.time?1:e.time<t.time?-1:0)),t[0].track):null}onCallEnded(){}_composeConstraints(e){const t=void 0===e?"__default":e.id(),n={};return"__default"!==t&&void 0!==e&&e.settings.videoDirections.sendVideo?n.video=o.CameraManager.get().getCallConstraints(t):n.video=!1,"__default"===t||e.settings.audioDirections.sendAudio?n.audio=g.AudioDeviceManager.get().getCallConstraints(t):n.audio=!1,n}static getUserMedia(e){return new Promise(((t,n)=>{navigator.mediaDevices.getUserMedia(e).then((e=>{p.umCache.push(e),t(e)})).catch(n)}))}static clearUmCache(){p.umCache=p.umCache.filter((e=>{const t=p.get()._dedicatedMirrorStream;return!(!t||e.id!==t.id)||(e.getTracks().forEach((e=>e.stop())),!1)}))}}p.umCache=[],r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"getCallStream",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_handleNotFoundError",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_handleNotReadableError",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_updateCallStream",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"updateCallStream",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"remCallStream",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_remCallStream",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"clear",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"getLocalMediaRenderers",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"showLocalVideo",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"hideLocalVideo",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"on",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"off",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_newScreenSharing",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_getScreenSharing",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_clearScreenSharing",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_getTracksKind",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"onCallEnded",null),r([i.LogManager.d_trace(i.LogCategory.HARDWARE)],p.prototype,"_composeConstraints",null),t.StreamManager=p},4855:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.StreamManager=t.CameraManager=t.AudioDeviceManager=void 0;var r=n(2709);Object.defineProperty(t,"AudioDeviceManager",{enumerable:!0,get:function(){return r.AudioDeviceManager}});var i=n(2334);Object.defineProperty(t,"CameraManager",{enumerable:!0,get:function(){return i.CameraManager}});var a=n(4007);Object.defineProperty(t,"StreamManager",{enumerable:!0,get:function(){return a.StreamManager}})},6230:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.PushService=void 0;const r=n(4106),i=n(209),a=n(245);class s{static updatePromiseResult(e){const t=this._pushPromises[e.params];t&&(clearTimeout(t.expire),e.msg?t.reject(e.msg):t.resolve(),delete this._pushPromises[e.params])}static register(e){return new Promise(((t,n)=>{const s=(new i.default).toString();a.default.callRemoteFunction(r.RemoteFunction.registerPushToken,e,s)?this._pushPromises[s]={resolve:t,reject:n,expire:setTimeout(n,3e4)}:n()}))}static unregister(e){return new Promise(((t,n)=>{const s=(new i.default).toString();a.default.callRemoteFunction(r.RemoteFunction.unregisterPushToken,e,s)?this._pushPromises[s]={resolve:t,reject:n,expire:setTimeout(n,3e4)}:n()}))}static incomingPush(e){return new Promise(((t,n)=>{a.default.callRemoteFunction(r.RemoteFunction.pushFeedback,e)?t():n()}))}_traceName(){return"PushService"}}t.PushService=s,s._pushPromises={}},1150:(e,t)=>{"use strict";var n,r;Object.defineProperty(t,"__esModule",{value:!0}),t.LogManager=t.Logger=t.ClientState=t.LogCategory=t.LogLevel=void 0,function(e){e[e.NONE=0]="NONE",e[e.ERROR=1]="ERROR",e[e.WARNING=2]="WARNING",e[e.INFO=3]="INFO",e[e.TRACE=4]="TRACE"}(n=t.LogLevel||(t.LogLevel={})),function(e){e[e.SIGNALING=0]="SIGNALING",e[e.RTC=1]="RTC",e[e.USERMEDIA=2]="USERMEDIA",e[e.CALL=3]="CALL",e[e.CALLEXP2P=4]="CALLEXP2P",e[e.CALLEXSERVER=5]="CALLEXSERVER",e[e.CALLMANAGER=6]="CALLMANAGER",e[e.CLIENT=7]="CLIENT",e[e.AUTHENTICATOR=8]="AUTHENTICATOR",e[e.PCFACTORY=9]="PCFACTORY",e[e.UTILS=10]="UTILS",e[e.ORTC=11]="ORTC",e[e.MESSAGING=12]="MESSAGING",e[e.REINVITEQ=13]="REINVITEQ",e[e.HARDWARE=14]="HARDWARE",e[e.ENDPOINT=15]="ENDPOINT",e[e.EVENTTARGET=16]="EVENTTARGET"}(r=t.LogCategory||(t.LogCategory={})),function(e){e[e.DISCONNECTED="DISCONNECTED"]="DISCONNECTED",e[e.CONNECTING="CONNECTING"]="CONNECTING",e[e.CONNECTED="CONNECTED"]="CONNECTED",e[e.LOGGING_IN="LOGGING_IN"]="LOGGING_IN",e[e.LOGGED_IN="LOGGED_IN"]="LOGGED_IN"}(t.ClientState||(t.ClientState={}));class i{constructor(e,t,n){this.category=e,this.label=t,this.provider=n}log(e,t){this.provider.writeMessage(this.category,this.label,e,t)}error(e){this.log(n.ERROR,e)}warning(e){this.log(n.WARNING,e)}info(e){this.log(n.INFO,e)}trace(e){this.log(n.TRACE,e)}}t.Logger=i;class a{constructor(){this.timeOriginGap=0,this.isFirstPrint=!0,this.levels={},this.showTrace=!1,this._shadowLogging=!1}get shadowLogging(){return this._shadowLogging}set shadowLogging(e){this._shadowLogging||(this._shadowLog=[]),this._shadowLogging=e}static get(){return void 0===this.inst&&(this.inst=new a,this.inst.prettyPrint=!1),this.inst}static d_trace(e){return(t,r,i)=>({value:function(...s){const o="login"===r||"basicLogin"===r||"sendWSMessage"===r&&"login"===s[0],c="sendWSMessage"===r?2:1,d=t._traceName?`${t._traceName()}${this&&this.settings?` ${this.settings.id}`:this&&this.id&&"function"!=typeof this.id?` ${this.id}`:""}`:"";let l="";try{l=s.map(((e,t)=>o&&t===c?'"********"':JSON.stringify(e))).join()}catch(e){l="circular structure"}return a.get().writeMessage(e,d,n.TRACE,`${r}(${l})`),i.value.apply(this,s)}})}getSLog(){return this._shadowLog}clearSilentLog(){this._shadowLog=[]}setLoggerCallback(e){this._outerCallback=e}setPrettyPrint(e){this.prettyPrint=e}setLogLevel(e,t){t===n.TRACE?this.showTrace=!0:this.levels[r[e]]=t}writeMessage(e,t,i,s){i===n.TRACE?a.traceTick++:a.logTick++,this.timeOriginGap||(this.timeOriginGap=performance.now());const o="string"==typeof s?s:JSON.stringify(s),c=this.isFirstPrint?this.prettyPrint?(new Date).toUTCString():(new Date).toString():parseInt(""+(performance.now()-this.timeOriginGap)/1e3),d=i===n.TRACE?`VIWSTR ${a.traceTick}`:`VIWSLR ${a.logTick}`,l=`${d} ${c} ${n[i]} ${t}: ${o}`;if(i<=(void 0!==this.levels[r[e]]?this.levels[r[e]]:n.NONE)||i===n.TRACE&&this.showTrace){if(void 0!==console.debug&&void 0!==console.info&&void 0!==console.error&&void 0!==console.warn)if(this.prettyPrint){const e=`%c${d} ${c} [${n[i]}] %c${t}: %c${o}`,r={[n.ERROR]:"color:#fab005",[n.WARNING]:"color:#af2a2a",[n.INFO]:"color:#0ca678",[n.TRACE]:"color:#8f66ff"};i===n.ERROR?console.error(l):i===n.WARNING?console.warn(e,r[i],"color:#2375a2","color:#000"):i===n.INFO?console.info(e,r[i],"color:#2375a2","color:#000"):i===n.TRACE?console.debug(e,r[i],"color:#2375a2","color:#000"):console.log(e,r[i],"color:#2375a2","color:#000")}else i===n.ERROR?console.error(l):i===n.WARNING?console.warn(l):i===n.INFO?console.info(l):i===n.TRACE?console.debug(l):console.log(l);else console.log(l);this.isFirstPrint&&(this.isFirstPrint=!1)}this.shadowLogging&&(i!==n.TRACE||this.showTrace)&&this._shadowLog.push(l),"function"!=typeof this._outerCallback||i===n.TRACE&&!this.showTrace||this._outerCallback({formattedText:l,category:e,label:t,level:i,message:o})}createLogger(e,t){return new i(e,t,this)}_traceName(){return"Logger"}}t.LogManager=a,a.logTick=0,a.traceTick=0},7222:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.MediaRenderer=void 0;const i=n(3869),a=n(125),s=n(1150),o=n(2957),c=n(2282),d=n(141),l=n(7272),g=n(8597);class u{constructor(e){this._playElemLock=0,this._encodedStreams=[],this._enabled=!0,this.isRemoving=!1,this._receiverTransform=o.Utils.getDefaultStreamTransformer();const{stream:t,kind:n,placeOnDom:r,isLocal:i,deprecatedId:c,transceivers:d,mids:l}=e;this.transceivers=d,this.stream=t,this.kind=n,this.mids=l,this.placeOnDom=r||!1,this.isLocal=i||!1,this._attemptsToReload=0,this.errorTimer=null;const g=a.Client.getInstance(),u=this.isLocal?g.config().localVideoContainerId:g.config().remoteVideoContainerId;void 0===this.kind&&(this.kind=t.getVideoTracks().length?"video":"audio"),this._id=o.Utils.generateUUID(),this.logger=s.LogManager.get().createLogger(s.LogCategory.USERMEDIA,this._traceName()),this.stream.getTracks().forEach((e=>{e.onended=()=>{this.checkStreamActive(t)}})),this.stream.getTracks().length&&u&&(this.createElement(c),this.placeOnDom&&this.renderDefault()),a.Client.getInstance().isInsertableStreamsSupported()&&this.transceivers.length&&this.transceivers.forEach((e=>{const t=e.receiver.createEncodedStreams();this._encodedStreams.push(t)}))}checkStreamActive(e){e.getTracks().some((e=>"live"===e.readyState))||this.clear()}get id(){return this._id}renderDefault(){const e=a.Client.getInstance(),t=this.isLocal?e.config().localVideoContainerId:e.config().remoteVideoContainerId,n=document.getElementById(t);this.render(n)}get enabled(){return this._enabled}enable(){return this.transceivers.length?(this._enabled=!0,this.conferenceEpManagerUpdateState&&this.conferenceEpManagerUpdateState(),Promise.resolve()):Promise.reject()}disable(){return this.transceivers.length?(this._enabled=!1,this.conferenceEpManagerUpdateState&&this.conferenceEpManagerUpdateState(),Promise.resolve()):Promise.reject()}requestVideoSize(e,t){if(!this.transceivers.length)return Promise.reject();this.videoSize={width:e,height:t},this.conferenceEpManagerUpdateRenderSize()}render(e){if(this.logger.info(`render() id: ${this._id} to ${e?e.tagName.toLowerCase():"no_container"} #${e?e.id:"no_container"} class ${e?e.className:"no_container"}`),!(a.Client.getInstance().config()&&a.Client.getInstance().config().experiments&&a.Client.getInstance().config().experiments.preventRendering))if(e&&("video"===e.tagName.toLowerCase()&&"audio"!==this.kind||"audio"===e.tagName.toLowerCase()&&"audio"===this.kind))this.isElementCreated=!1,this.element=e,i.default.attachMedia(this),this.logger.info(`render() container: The readyState of el id ${this._id}: ${this.element.readyState}, networkState ${this.element.networkState} and paused: ${this.element.paused}`),this.addListeners();else{const t=e||document.body;this.createElement(),this.logger.info(`render(): The readyState of el id ${this._id}: ${this.element.readyState}, networkState ${this.element.networkState} and paused: ${this.element.paused}`),t.appendChild(this.element),this.addListeners()}}createElement(e){if(this.isElementCreated=!0,this.element=document.getElementById(this.stream.getTracks()[0].id)||document.createElement("sharing"===this.kind?"video":this.kind),this.element.autoplay=!0,this.isLocal&&(this.element.muted=!0),this.element.setAttribute("playsinline",null),e?document.getElementById("voximplantlocalvideo")?this.element.id=this.stream.getTracks()[0].id:this.element.id="voximplantlocalvideo":this.element.id=this.stream.getTracks()[0].id,"audio"!==this.kind)this.stream.getAudioTracks().length||(this.element.muted=!0);else{const e=l.default.AudioDeviceManager.get().getDefaultAudioSettings();e.outputId&&"function"==typeof this.element.setSinkId&&this.element.setSinkId("").then((()=>{this.element.setSinkId(e.outputId+"")})).catch((()=>{this.element.setSinkId(e.outputId+"")}))}i.default.attachMedia(this)}addListeners(){this.element.addEventListener("canplaythrough",this.onCanplaythrough.bind(this)),this.element.addEventListener("error",this.onError.bind(this)),this.element.addEventListener("abort",this.onAbort.bind(this)),this.element.addEventListener("stalled",(()=>{this.logger.info(`Failed to fetch data, but trying for ${this.kind} ${JSON.stringify(this.mids)}`)})),this.element.addEventListener("suspend",(()=>{this.logger.info(`The media ${this.kind} for ${JSON.stringify(this.mids)} was suspended.`)}))}onError(e){this.errorTimer||(this.logger.info(`An error occurred during the loading of an ${this.kind} for ${JSON.stringify(this.mids)}: ${JSON.stringify(e)}`),this.logger.info(`The readyState of el id ${this._id}: ${this.element.readyState}, networkState ${this.element.networkState} and paused: ${this.element.paused}`),this.errorTimer=setTimeout((()=>{this._attemptsToReload++,this._attemptsToReload<=10&&this.element.load(),clearTimeout(this.errorTimer)}),1e3))}onAbort(){this.errorTimer||(this.logger.info(`The loading of an ${this.kind} for ${JSON.stringify(this.mids)} is aborted.`),this.logger.info(`The readyState of el id ${this._id}: ${this.element.readyState}, networkState ${this.element.networkState} and paused: ${this.element.paused}`),clearTimeout(this.errorTimer),this.errorTimer=setTimeout((()=>{i.default.detachMedia(this),i.default.attachMedia(this),clearTimeout(this.errorTimer)}),1e3))}onCanplaythrough(){this.element&&(clearTimeout(this.errorTimer),this.playElement(),this.element.onpause=this.playElement)}replaceVideo(e){this.stream=e,i.default.attachMedia(this)}clear(){this.isRemoving?this.logger.info(`MediaRendered ID: already removing ${this._id}. Ignored.`):(this.isRemoving=!0,this.onBeforeDestroy&&this.onBeforeDestroy(),this.element&&(clearTimeout(this.errorTimer),this.element.removeEventListener("canplaythrough",this.onCanplaythrough),this.element.removeEventListener("error",this.onError),this.element.removeEventListener("abort",this.onAbort),i.default.detachMedia(this),this.isElementCreated&&(this.element.id="",void 0!==this.element.parentElement&&null!==this.element.parentElement?this.element.parentElement&&this.element.parentElement.removeChild(this.element):this.element.parentNode&&this.element.parentNode&&this.element.parentNode.removeChild(this.element))),this.onDestroy&&this.onDestroy())}setVolume(e){this.logger.info(`setVolume(${e})`),this.element&&(this.element.volume=e)}useAudioOutput(e){this.logger.info(`useAudioOutput(${e})`);try{"function"==typeof this.element.setSinkId&&this.element.setSinkId(e)}catch(e){this.logger.warning("Set audio output is impossible. Browser not support this option.")}}_traceName(){return"MediaRenderer"}playElement(){this.logger.info(`playElement(): The readyState of el id ${this._id}: ${this.element.readyState}, networkState ${this.element.networkState} and paused: ${this.element.paused}`),this.element&&this.element.paused&&this.element.readyState>3&&(this.logger.info(`MediaRenderer ID:${this._id} for ${JSON.stringify(this.mids)} is trying to play`),this.element.play().catch((e=>{this.logger.warning(`Can't start playing MediaRenderer ID:${this._id}. ${e.message}`),a.Client.getInstance().dispatchEvent({name:d.Events.PlaybackError,element:this.element,error:e})})))}pauseElement(){if(0===this._playElemLock||this._playElemLock>10)if(this.element instanceof HTMLVideoElement){let e=this.element.pause();void 0!==e&&e.catch((e=>{}))}else this.element.pause();else this._playElemLock+=1,setTimeout(this.pauseElement,400)}notifyAboutCreation(e,t){t.wasAdded?(t.dispatchEvent({name:g.EndpointEvents.RemoteMediaAdded,call:e,endpoint:t,mediaRenderer:this}),e.dispatchEvent({name:c.CallEvents.MediaElementCreated,call:e,stream:this.stream,element:this.element,type:this.kind})):setTimeout((()=>this.notifyAboutCreation(e,t)),400)}get receiverTransform(){return this._receiverTransform}set receiverTransform(e){this._receiverTransform=e,this._encodedStreams.forEach((e=>{e.readable.pipeThrough(this._receiverTransform).pipeTo(e.writable)}))}}r([s.LogManager.d_trace(s.LogCategory.USERMEDIA)],u.prototype,"checkStreamActive",null),r([s.LogManager.d_trace(s.LogCategory.USERMEDIA)],u.prototype,"renderDefault",null),r([s.LogManager.d_trace(s.LogCategory.USERMEDIA)],u.prototype,"render",null),r([s.LogManager.d_trace(s.LogCategory.USERMEDIA)],u.prototype,"clear",null),r([s.LogManager.d_trace(s.LogCategory.USERMEDIA)],u.prototype,"setVolume",null),r([s.LogManager.d_trace(s.LogCategory.USERMEDIA)],u.prototype,"useAudioOutput",null),t.MediaRenderer=u},6054:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Messaging=void 0;const r=n(7250),i=n(311),a=n(8635);var s;!function(e){e.getInstance=function(){return t.getInstance()};class t extends r.Messenger{}e.Messenger=t;class n extends i.Conversation{}e.Conversation=n;class s extends a.Message{}let o,c,d;e.Message=s,function(e){e.UNKNOWN="UNKNOWN",e.createConversation="createConversation",e.editConversation="editConversation",e.removeConversation="removeConversation",e.joinConversation="joinConversation",e.leaveConversation="leaveConversation",e.getConversation="getConversation",e.getConversations="getConversations",e.getPublicConversations="getPublicConversations",e.searchConversations="searchConversations",e.removeEmptyConversation="removeEmptyConversation",e.addParticipants="addParticipants",e.editParticipants="editParticipants",e.removeParticipants="removeParticipants",e.getUser="getUser",e.getUsers="getUsers",e.editUser="editUser",e.setStatus="setStatus",e.sendMessage="sendMessage",e.editMessage="editMessage",e.removeMessage="removeMessage",e.typingMessage="typingMessage",e.isRead="isRead",e.subscribe="subscribe",e.unsubscribe="unsubscribe",e.manageNotification="manageNotification",e.getSubscriptionList="getSubscriptionList",e.createBot="createBot",e.removeBot="removeBot",e.retransmitEvents="retransmitEvents"}(o=e.MessengerAction||(e.MessengerAction={})),function(e){e.CreateConversation="CreateConversation",e.EditConversation="EditConversation",e.RemoveConversation="RemoveConversation",e.GetConversation="GetConversation",e.GetPublicConversations="GetPublicConversations",e.SendMessage="SendMessage",e.EditMessage="EditMessage",e.RemoveMessage="RemoveMessage",e.Typing="Typing",e.EditUser="EditUser",e.GetUser="GetUser",e.Error="Error",e.RetransmitEvents="RetransmitEvents",e.Read="Read",e.Subscribe="Subscribe",e.Unsubscribe="Unsubscribe",e.SetStatus="SetStatus",e.GetSubscriptionList="GetSubscriptionList",e.CreateBot="CreateBot",e.RemoveBot="RemoveBot"}(c=e.MessengerEvents||(e.MessengerEvents={})),function(e){e[e.Error_0=0]="Error_0",e[e.Error_1=1]="Error_1",e[e.Error_2=2]="Error_2",e[e.Error_3=3]="Error_3",e[e.Error_8=8]="Error_8",e[e.Error_10=10]="Error_10",e[e.Error_11=11]="Error_11",e[e.Error_12=12]="Error_12",e[e.Error_13=13]="Error_13",e[e.Error_15=15]="Error_15",e[e.Error_16=16]="Error_16",e[e.Error_18=18]="Error_18",e[e.Error_19=19]="Error_19",e[e.Error_21=21]="Error_21",e[e.Error_22=22]="Error_22",e[e.Error_23=23]="Error_23",e[e.Error_24=24]="Error_24",e[e.Error_25=25]="Error_25",e[e.Error_26=26]="Error_26",e[e.Error_28=28]="Error_28",e[e.Error_30=30]="Error_30",e[e.Error_32=32]="Error_32",e[e.Error_33=33]="Error_33",e[e.Error_34=34]="Error_34",e[e.Error_35=35]="Error_35",e[e.Error_36=36]="Error_36",e[e.Error_37=37]="Error_37",e[e.Error_38=38]="Error_38",e[e.Error_39=39]="Error_39",e[e.Error_40=40]="Error_40",e[e.Error_41=41]="Error_41",e[e.Error_42=42]="Error_42",e[e.Error_43=43]="Error_43",e[e.Error_500=500]="Error_500"}(d=e.MessengerError||(e.MessengerError={}))}(s=t.Messaging||(t.Messaging={})),t.default=s},311:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Conversation=void 0;const i=n(1150),a=n(7250),s=n(1855),o=n(8635),c=n(7050),d=n(8202),l=n(6968),g=n(6054);class u{constructor(e){this._backup={},this._uuid=e.uuid,this._participants=e.participants,this._title=e.title,this._direct=e.direct,this._publicJoin=e.publicJoin,this._uberConversation=e.uberConversation,this._customData=e.customData,this._createdAt=e.createdAt,this._lastUpdate=e.lastUpdate,this._lastSeq=Number(e.lastSeq)}get uuid(){return this._uuid}get title(){return this._title}set title(e){this._backup.title=this._title,this._title=e}get createdAt(){return this._createdAt}get lastUpdate(){return this._lastUpdate}get direct(){return this._direct}get uberConversation(){return this._uberConversation}get publicJoin(){return this._publicJoin}set publicJoin(e){this._backup.publicJoin=this._publicJoin,this._publicJoin=e}get participants(){return this._participants}get customData(){return this._customData}set customData(e){this._backup.customData=this._customData,this._customData=e}get lastSeq(){return this._lastSeq}updateSeq(e){"number"==typeof e&&e>this._lastSeq&&(this._lastSeq=e),this._lastUpdate=Date.now()/1e3|0}static _createFromBus(e,t){return new u({participants:e.participants&&Array.isArray(e.participants)?e.participants.map((e=>{const t=Number(e.flags)===l.MsgPermissions.all,n=Number(e.flags)>l.MsgPermissions.is_owner&&e.flags<l.MsgPermissions.all,r=Number(e.flags).toString(2).slice(-6).split("").reverse();return{userId:Number(e.user_id),lastRead:e.last_read,isOwner:t||n,canWrite:t||"1"===r[0],canEdit:t||"1"===r[1],canRemove:t||"1"===r[2],canManageParticipants:t||"1"===r[3],canEditAll:t||"1"===r[4],canRemoveAll:t||"1"===r[5]}})):[],title:e.title,uuid:e.uuid,direct:e.direct,publicJoin:e.enable_public_join,uberConversation:e.uber_conversation,createdAt:e.created_at,lastUpdate:e.last_update,lastSeq:t,customData:e.custom_data&&"object"==typeof e.custom_data?e.custom_data:void 0})}static createFromCache(e){return new u({uuid:e.uuid,title:e.title,participants:e.participants||[],direct:e.direct,publicJoin:e.publicJoin,uberConversation:e.uberConversation,createdAt:e.createdAt,lastUpdate:e.lastUpdate,customData:e.customData})}toCache(){return{uuid:this._uuid,title:this._title,participants:this._participants,direct:this._direct,publicJoin:this._publicJoin,uberConversation:this._uberConversation,createdAt:this._createdAt,lastUpdate:this._lastUpdate,customData:this._customData,lastSeq:this._lastSeq}}_getCreatePayload(){return{participants:this._prepareParticipants(this._participants).map((e=>Object.assign(e,{flags:e.flags?e.flags:7}))),title:"string"==typeof this._title?this._title:"",direct:"boolean"==typeof this._direct&&this._direct,enable_public_join:"boolean"==typeof this._publicJoin&&this._publicJoin,uber_conversation:"boolean"==typeof this._uberConversation?this._uberConversation:void 0,custom_data:"object"==typeof this._customData?this._customData:{}}}_getEditPayload(){if(void 0===this._uuid)throw Error("You must get conversation UUID with MessengetAction.getConversation() action!");return{uuid:this._uuid,title:"string"==typeof this._title?this._title:"",enable_public_join:"boolean"==typeof this._publicJoin&&this._publicJoin,custom_data:"object"==typeof this._customData?this._customData:{}}}_getUserPermissions(e){const t=(e.isOwner?"1000000000":"")+[e.canRemoveAll,e.canEditAll,e.canManageParticipants,e.canRemove,e.canEdit,e.canWrite].map((e=>e?1:0)).join("");return parseInt(t,2)}_prepareParticipants(e){return e.map((e=>({user_id:e.userId,flags:this._getUserPermissions(e),last_read:e.lastRead})))}_revertChanges(){Object.keys(this._backup).forEach((e=>{this[e]=this._backup[e]})),this._backup={}}update(){return s.default.get().editConversation(this)}setTitle(e){return"string"!=typeof e?a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.editConversation):(this._backup.title=this._title,this._title=e,s.default.get().editConversation(this))}setPublicJoin(e){return"boolean"!=typeof e?a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.editConversation):(this._backup.publicJoin=this._publicJoin,this._publicJoin=e,s.default.get().editConversation(this))}setCustomData(e){return!e||Array.isArray(e)||"object"!=typeof e?a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.editConversation):(this._backup.customData=this._customData,this._customData=e,s.default.get().editConversation(this))}addParticipants(e){return Array.isArray(e)&&0!=e.length?new Promise(((t,n)=>{const r=c.MsgSignaling.get().sendWsMessage(d.MsgAction.addParticipants,{uuid:this._uuid,participants:this._prepareParticipants(e)});a.Messenger.getInstance()._registerPromise(r,t,n)})):a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.addParticipants)}editParticipants(e){return Array.isArray(e)&&0!=e.length?new Promise(((t,n)=>{const r=c.MsgSignaling.get().sendWsMessage(d.MsgAction.editParticipants,{uuid:this._uuid,participants:this._prepareParticipants(e)});a.Messenger.getInstance()._registerPromise(r,t,n)})):a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.editParticipants)}removeParticipants(e){return Array.isArray(e)&&0!=e.length?new Promise(((t,n)=>{const r=c.MsgSignaling.get().sendWsMessage(d.MsgAction.removeParticipants,{uuid:this._uuid,participants:e.filter((e=>void 0!==e.userId)).map((e=>e.userId))});a.Messenger.getInstance()._registerPromise(r,t,n)})):a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.removeParticipants)}sendMessage(e,t){if("string"!=typeof e||void 0===t||!Array.isArray(t)||!t.every((e=>e&&"object"==typeof e)))return a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.sendMessage);return new o.Message(e,t).sendTo(this)}typing(){return this._debounceLock?Promise.resolve(!1):(setTimeout((()=>{this._debounceLock=!1}),1e4),this._debounceLock=!0,new Promise(((e,t)=>{const n=c.MsgSignaling.get().sendWsMessage(d.MsgAction.typingMessage,{conversation:this._uuid});a.Messenger.getInstance()._registerPromise(n,e,t)})))}markAsRead(e){return new Promise(((t,n)=>{const r=c.MsgSignaling.get().sendWsMessage(d.MsgAction.isRead,{conversation:this._uuid,seq:e});a.Messenger.getInstance()._registerPromise(r,t,n)}))}retransmitEvents(e,t,n){return"number"!=typeof t||"number"!=typeof e?a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.retransmitEvents):new Promise(((r,i)=>{let s,o,l;Promise.all(Array(t-e+1).fill(0).map(((t,n)=>n+e)).map((e=>new Promise(((t,n)=>{const r=n=>{n.events&&n.events[0]&&Number(n.events[0].seq)===e&&n.requestUuid===s&&(clearTimeout(c),a.Messenger.getInstance().off(g.default.MessengerEvents.RetransmitEvents,r),a.Messenger.getInstance().off(g.default.MessengerEvents.Error,i),o||(o=n.initiator),l||(l=n.messengerAction),t(n.events[0]))},i=t=>{t.messengerAction==g.default.MessengerAction.retransmitEvents&&t.events&&t.events[0]&&Number(t.events[0].seq)===e&&(clearTimeout(c),a.Messenger.getInstance().off(g.default.MessengerEvents.RetransmitEvents,r),a.Messenger.getInstance().off(g.default.MessengerEvents.Error,i),n(t))},c=setTimeout((()=>{a.Messenger.getInstance().off(g.default.MessengerEvents.RetransmitEvents,r),a.Messenger.getInstance().off(g.default.MessengerEvents.Error,i),a.Messenger.getInstance().reject(g.default.MessengerError.Error_0,g.default.MessengerAction.retransmitEvents).catch(n)}),a.Messenger.rejectTimeout);a.Messenger.getInstance().on(g.default.MessengerEvents.RetransmitEvents,r),a.Messenger.getInstance().on(g.default.MessengerEvents.Error,i)}))))).then((e=>r({initiator:o,messengerAction:l,events:e,requestUuid:s}))).catch(i),s=c.MsgSignaling.get().sendWsMessage(d.MsgAction.retransmitEvents,{conversation:this._uuid,events_from:0|e,events_to:0|t,count:n})}))}_traceName(){return"Conversation"}}r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"updateSeq",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"toCache",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"_getCreatePayload",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"_getEditPayload",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"_prepareParticipants",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"_revertChanges",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"update",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"addParticipants",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"editParticipants",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"removeParticipants",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"typing",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"markAsRead",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u.prototype,"retransmitEvents",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u,"_createFromBus",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],u,"createFromCache",null),t.Conversation=u},1855:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0});const i=n(7050),a=n(7250),s=n(311),o=n(8635),c=n(1150),d=n(6054),l=n(249),g=n(6623),u=n(8202);class h{constructor(){if(h.instance)throw new Error(g.MESSAGING_ERR_2);this.signalling=i.MsgSignaling.get(),this.signalling.addEventListener(l.MsgEvent.onCreateConversation,((e,t)=>{this.resolveEvent(e,d.default.MessengerEvents.CreateConversation,t)})),this.signalling.addEventListener(l.MsgEvent.onEditConversation,((e,t)=>{this.resolveEvent(e,d.default.MessengerEvents.EditConversation,t)})),this.signalling.addEventListener(l.MsgEvent.onRemoveConversation,((e,t)=>{a.Messenger.getInstance()._dispatchEvent(d.default.MessengerEvents.RemoveConversation,{uuid:e.object.uuid,seq:e.seq,messengerAction:d.default.MessengerAction[e.on_incoming_event],initiator:Number(e.initiator),timestamp:"number"==typeof e.timestamp?1e3*e.timestamp:void 0,requestUuid:t},t)})),this.signalling.addEventListener(l.MsgEvent.onGetConversation,((e,t)=>{this.resolveEvent(e,d.default.MessengerEvents.GetConversation,t)})),this.signalling.addEventListener(l.MsgEvent.onGetPublicConversations,((e,t)=>{a.Messenger.getInstance()._dispatchEvent(d.default.MessengerEvents.GetPublicConversations,{conversations:e.object.uuid,initiator:Number(e.initiator),messengerAction:d.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)})),this.signalling.addEventListener(l.MsgEvent.onSendMessage,((e,t)=>{this.resolveMessageEvent(e,d.default.MessengerEvents.SendMessage,t)})),this.signalling.addEventListener(l.MsgEvent.onEditMessage,((e,t)=>{this.resolveMessageEvent(e,d.default.MessengerEvents.EditMessage,t)})),this.signalling.addEventListener(l.MsgEvent.onRemoveMessage,((e,t)=>{this.resolveMessageEvent(e,d.default.MessengerEvents.RemoveMessage,t)})),this.signalling.addEventListener(l.MsgEvent.isRead,((e,t)=>{a.Messenger.getInstance()._dispatchEvent(d.default.MessengerEvents.Read,{conversation:e.object.conversation,seq:e.object.seq,initiator:Number(e.initiator),messengerAction:d.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)})),this.signalling.addEventListener(l.MsgEvent.onTyping,((e,t)=>{a.Messenger.getInstance()._dispatchEvent(d.default.MessengerEvents.Typing,{conversation:e.object.conversation,initiator:Number(e.initiator),messengerAction:d.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)})),this.signalling.addEventListener(l.MsgEvent.onRetransmitEvents,((e,t)=>{a.Messenger.getInstance()._dispatchEvent(d.default.MessengerEvents.RetransmitEvents,{events:[e.object&&e.object.event?-1==e.object.event.indexOf("Message")&&e.object.payload?{conversation:s.Conversation._createFromBus(e.object.payload.object,e.object.payload.seq),initiator:Number(e.object.payload.initiator),seq:e.object.payload.seq,messengerAction:d.default.MessengerAction[e.object.payload.on_incoming_event],timestamp:"number"==typeof e.object.payload.timestamp?1e3*e.object.payload.timestamp:void 0}:{message:o.Message._createFromBus(e.object.payload.object,Number(e.object.payload.initiator)),initiator:Number(e.object.payload.initiator),seq:e.object.payload.seq,timestamp:"number"==typeof e.object.payload.timestamp?1e3*e.object.payload.timestamp:void 0,messengerAction:d.default.MessengerAction[e.object.payload.on_incoming_event]}:void 0],initiator:Number(e.initiator),messengerAction:d.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)}))}static get(){return h.instance=h.instance||new h,h.instance}resolveEvent(e,t,n){const r=s.Conversation._createFromBus(e.object,e.seq);void 0!==r&&r.updateSeq(e.seq),a.Messenger.getInstance()._dispatchEvent(t,{conversation:r,initiator:Number(e.initiator),seq:e.seq,messengerAction:d.default.MessengerAction[e.on_incoming_event],timestamp:"number"==typeof e.timestamp?1e3*e.timestamp:void 0,requestUuid:n},n)}resolveMessageEvent(e,t,n){const r=o.Message._createFromBus(e.object,Number(e.initiator));a.Messenger.getInstance()._dispatchEvent(t,{message:r,initiator:Number(e.initiator),seq:e.seq,messengerAction:d.default.MessengerAction[e.on_incoming_event],timestamp:"number"==typeof e.timestamp?1e3*e.timestamp:void 0},n)}static deserialize(e){return s.Conversation.createFromCache(e)}static serialize(e){return e.toCache()}createConversation(e,t,n,r,i,o){return new Promise(((c,d)=>{const l=this.signalling.sendWsMessage(u.MsgAction.createConversation,new s.Conversation({participants:e,title:t,direct:n,publicJoin:r,customData:o,uberConversation:i})._getCreatePayload());a.Messenger.getInstance()._registerPromise(l,c,d)}))}editConversation(e){return new Promise(((t,n)=>{let r;const i=e=>{e.requestUuid===r&&(clearTimeout(o),a.Messenger.getInstance().off(d.default.MessengerEvents.EditConversation,i),a.Messenger.getInstance().off(d.default.MessengerEvents.Error,s),t(e))},s=t=>{t.requestUuid===r&&(clearTimeout(o),a.Messenger.getInstance().off(d.default.MessengerEvents.EditConversation,i),a.Messenger.getInstance().off(d.default.MessengerEvents.Error,s),e._revertChanges(),n(t))},o=setTimeout((()=>{a.Messenger.getInstance().off(d.default.MessengerEvents.EditConversation,i),a.Messenger.getInstance().off(d.default.MessengerEvents.Error,s),a.Messenger.getInstance().reject(d.default.MessengerError.Error_0,d.default.MessengerAction.editConversation).catch(n)}),a.Messenger.rejectTimeout);a.Messenger.getInstance().on(d.default.MessengerEvents.EditConversation,i),a.Messenger.getInstance().on(d.default.MessengerEvents.Error,s),r=this.signalling.sendWsMessage(u.MsgAction.editConversation,e._getEditPayload())}))}getConversation(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(u.MsgAction.getConversation,{uuid:e});a.Messenger.getInstance()._registerPromise(r,t,n)}))}getConversations(e){if(!Array.isArray(e))return a.Messenger.getInstance().reject(d.default.MessengerError.Error_0,d.default.MessengerAction.getConversations);let t;const n=Promise.all(e.map((e=>new Promise(((n,r)=>{const i=r=>{r.requestUuid===t&&r.conversation.uuid===e&&(clearTimeout(o),a.Messenger.getInstance().off(d.default.MessengerEvents.GetConversation,i),a.Messenger.getInstance().off(d.default.MessengerEvents.Error,s),n(r))},s=e=>{e.requestUuid===t&&(clearTimeout(o),a.Messenger.getInstance().off(d.default.MessengerEvents.GetConversation,i),a.Messenger.getInstance().off(d.default.MessengerEvents.Error,s),r(e))},o=setTimeout((()=>{a.Messenger.getInstance().off(d.default.MessengerEvents.GetConversation,i),a.Messenger.getInstance().off(d.default.MessengerEvents.Error,s),a.Messenger.getInstance().reject(d.default.MessengerError.Error_0,d.default.MessengerAction.getConversation).catch(r)}),a.Messenger.rejectTimeout);a.Messenger.getInstance().on(d.default.MessengerEvents.GetConversation,i),a.Messenger.getInstance().on(d.default.MessengerEvents.Error,s)})))));return t=this.signalling.sendWsMessage(u.MsgAction.getConversations,{uuid:e}),n}getPublicConversations(){return new Promise(((e,t)=>{const n=this.signalling.sendWsMessage(u.MsgAction.getPublicConversations,{});a.Messenger.getInstance()._registerPromise(n,e,t)}))}static extractUserName(e){if(-1===e.indexOf("@"))return e;{const t=e.split("@");return t[1]=t[1].split(".").splice(0,2).join("."),t.join("@")}}_traceName(){return"ConversationManager"}}r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"resolveEvent",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"resolveMessageEvent",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"createConversation",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"editConversation",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"getConversation",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"getConversations",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h.prototype,"getPublicConversations",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h,"get",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h,"deserialize",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h,"serialize",null),r([c.LogManager.d_trace(c.LogCategory.MESSAGING)],h,"extractUserName",null),t.default=h},8635:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Message=void 0;const i=n(1150),a=n(7050),s=n(8202),o=n(7250);class c{constructor(e,t){this._text=e,void 0!==t&&Array.isArray(t)&&t.every((e=>e&&"object"==typeof e))?this._payload=t:this._payload=[]}get uuid(){return this._uuid}get conversation(){return this._conversation}get text(){return this._text}set text(e){this._text=e}get payload(){return this._payload}set payload(e){this._payload=e}get sender(){return this._sender}static _createFromBus(e,t){let n=new c(e.text,e.payload);return n._uuid=e.uuid,n._conversation=e.conversation,n._sender=t,n}static createFromCache(e){let t=new c(e.text,e.payload);return t._uuid=e.uuid,t._conversation=e.conversation,t._sender=Number(e.sender),t}toCache(){return{uuid:this._uuid,text:this._text,payload:this._payload,conversation:this._conversation,sender:this._sender}}getPayload(){let e={text:this._text,conversation:this._conversation};return void 0!==this._payload&&Array.isArray(this._payload)&&this._payload.every((e=>"object"==typeof e))?e.payload=this._payload:e.payload=[],e}sendTo(e){return this._conversation=e.uuid,new Promise(((e,t)=>{const n=a.MsgSignaling.get().sendWsMessage(s.MsgAction.sendMessage,this.getPayload());o.Messenger.getInstance()._registerPromise(n,e,t)}))}update(){return new Promise(((e,t)=>{const n=a.MsgSignaling.get().sendWsMessage(s.MsgAction.editMessage,Object.assign(this.getPayload(),{uuid:this._uuid}));o.Messenger.getInstance()._registerPromise(n,e,t)}))}remove(){return new Promise(((e,t)=>{const n=a.MsgSignaling.get().sendWsMessage(s.MsgAction.removeMessage,{uuid:this._uuid,conversation:this.conversation});o.Messenger.getInstance()._registerPromise(n,e,t)}))}_traceName(){return"Message"}}r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c.prototype,"toCache",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c.prototype,"getPayload",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c.prototype,"sendTo",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c.prototype,"update",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c.prototype,"remove",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c,"_createFromBus",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],c,"createFromCache",null),t.Message=c},7250:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Messenger=void 0;const i=n(1150),a=n(7050),s=n(249),o=n(1855),c=n(311),d=n(8635),l=n(6054),g=n(3947),u=n(6623),h=n(8202),p={0:"Something went wrong. Please check your input or required parameters."};class f{constructor(){if(f.instance)throw new Error(u.MESSAGING_ERR_1);this.eventListeners={},this.awaitPromiseList={},this.cm=o.default.get(),this.signalling=a.MsgSignaling.get(),this.signalling.addEventListener(s.MsgEvent.onError,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.Error,{initiator:this.currentUserId,code:e.code,description:e.description,messengerAction:l.default.MessengerAction[e.on_incoming_event],timestamp:"number"==typeof e.timestamp?1e3*e.timestamp:void 0,requestUuid:t},t)})),this.signalling.addEventListener(s.MsgEvent.onEditUser,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.EditUser,{user:{userId:Number(e.object.user_id),userName:e.object.user_name,displayName:e.object.display_name,conversationsList:e.object.conversations_list,notificationEvents:e.object.notification_events?e.object.notification_events.map(this.msgEventToMessengerEvent):void 0,customData:e.object.custom_data,privateCustomData:e.object.private_custom_data},initiator:Number(e.initiator),messengerAction:l.default.MessengerAction[e.on_incoming_event],timestamp:"number"==typeof e.timestamp?1e3*e.timestamp:void 0,requestUuid:t},t)})),this.signalling.addEventListener(s.MsgEvent.onGetUser,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.GetUser,{user:{userId:Number(e.object.user_id),userName:e.object.user_name,displayName:e.object.display_name,conversationsList:e.object.conversations_list,notificationEvents:e.object.notification_events?e.object.notification_events.map(this.msgEventToMessengerEvent):void 0,customData:e.object.custom_data,privateCustomData:e.object.private_custom_data},initiator:Number(e.initiator),messengerAction:l.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)})),this.signalling.addEventListener(s.MsgEvent.onSetStatus,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.SetStatus,{online:e.object.online,initiator:Number(e.initiator),messengerAction:l.default.MessengerAction[e.on_incoming_event],timestamp:"number"==typeof e.timestamp?1e3*e.timestamp:void 0,requestUuid:t},t)})),this.signalling.addEventListener(s.MsgEvent.onSubscribe,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.Subscribe,{users:e.object.user_id,initiator:Number(e.initiator),messengerAction:l.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)})),this.signalling.addEventListener(s.MsgEvent.onUnsubscribe,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.Unsubscribe,{users:e.object.user_id,initiator:Number(e.initiator),messengerAction:l.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)})),this.signalling.addEventListener(s.MsgEvent.onGetSubscriptionList,((e,t)=>{this._dispatchEvent(l.default.MessengerEvents.GetSubscriptionList,{users:e.object.subscriptions,initiator:Number(e.initiator),messengerAction:l.default.MessengerAction[e.on_incoming_event],requestUuid:t},t)}))}static getInstance(){return f.instance=f.instance||new f,f.instance}addEventListener(e,t){void 0===this.eventListeners[e]&&(this.eventListeners[e]=[]),this.eventListeners[e].push(t)}removeEventListener(e,t){if(void 0!==this.eventListeners[e])if("function"==typeof t){for(let n=0;n<this.eventListeners[e].length;n++)if(this.eventListeners[e][n]===t){this.eventListeners[e].splice(n,1);break}}else this.eventListeners[e]=[]}on(e,t){this.addEventListener(e,t)}off(e,t){this.removeEventListener(e,t)}_dispatchEvent(e,t,n){void 0!==this.eventListeners[e]&&this.eventListeners[e].forEach((e=>{"function"==typeof e&&e(t)})),n&&void 0!==this.awaitPromiseList[n]&&(e===l.default.MessengerEvents.Error&&"function"==typeof this.awaitPromiseList[n].reject&&this.awaitPromiseList[n].reject(t),"function"==typeof this.awaitPromiseList[n].resolve&&this.awaitPromiseList[n].resolve(t),window.clearTimeout(this.awaitPromiseList[n].expire)),void 0!==this.eventListeners[e]&&0!=this.eventListeners[e].length||i.LogManager.get().writeMessage(i.LogCategory.MESSAGING,"",i.LogLevel.INFO,`The ${e} event dispatched, but no handler registered for this event type.`)}_registerPromise(e,t,n){this.awaitPromiseList[e]={resolve:t,reject:n,expire:window.setTimeout(n,f.rejectTimeout)}}getConversation(e){return this.cm.getConversation(e)}getConversations(e){if(!(Array.isArray(e)&&e.length>30))return this.cm.getConversations(e);i.LogManager.get().writeMessage(i.LogCategory.MESSAGING,"Rate limit",i.LogLevel.ERROR,"you can get maximum 30 conversation in a single getConversations call")}getPublicConversations(){return this.cm.getPublicConversations()}getRawConversations(e){return this.cm.getConversations(e)}createConversation(e,t,n,r,i,a){return this.cm.createConversation(e,t,n,r,i,a)}createConversationFromCache(e){return e&&"object"==typeof e?c.Conversation.createFromCache(e):null}joinConversation(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(h.MsgAction.joinConversation,{uuid:e});f.getInstance()._registerPromise(r,t,n)}))}leaveConversation(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(h.MsgAction.leaveConversation,{uuid:e});f.getInstance()._registerPromise(r,t,n)}))}getMe(){return o.default.extractUserName(g.Authenticator.get().username())}getMyId(){return this.currentUserId?Promise.resolve(this.currentUserId):this.getUser(this.getMe()).then((e=>e.user.userId))}getUser(e){return new Promise(((t,n)=>{let r;const i=e=>{e.requestUuid===r&&(clearTimeout(s),this.off(l.default.MessengerEvents.GetUser,i),this.off(l.default.MessengerEvents.Error,a),e.user.userName===this.getMe()&&(this.currentUserId=Number(e.user.userId)),t(e))},a=e=>{e.requestUuid===r&&(clearTimeout(s),this.off(l.default.MessengerEvents.GetUser,i),this.off(l.default.MessengerEvents.Error,a),n(e))},s=setTimeout((()=>{f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),f.getInstance().reject(l.default.MessengerError.Error_0,l.default.MessengerAction.getUser).catch(n)}),f.rejectTimeout);this.on(l.default.MessengerEvents.GetUser,i),this.on(l.default.MessengerEvents.Error,a),r=this.signalling.sendWsMessage(h.MsgAction.getUser,{user_name:e})}))}getUserById(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(h.MsgAction.getUser,{user_id:e});f.getInstance()._registerPromise(r,t,n)}))}getUsers(e){if(!Array.isArray(e))return f.getInstance().reject(l.default.MessengerError.Error_0,l.default.MessengerAction.getUsers);let t;const n=Promise.all(e.map((e=>new Promise(((n,r)=>{const i=r=>{r.requestUuid===t&&r.user.userName===e&&(clearTimeout(s),f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),n(r))},a=e=>{e.requestUuid===t&&(clearTimeout(s),f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),r(e))},s=setTimeout((()=>{f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),f.getInstance().reject(l.default.MessengerError.Error_0,l.default.MessengerAction.getUsers).catch(r)}),f.rejectTimeout);f.getInstance().on(l.default.MessengerEvents.GetUser,i),f.getInstance().on(l.default.MessengerEvents.Error,a)})))));return t=this.signalling.sendWsMessage(h.MsgAction.getUsers,{users:e.map((e=>({user_name:e})))}),n}getUsersById(e){if(!Array.isArray(e))return f.getInstance().reject(l.default.MessengerError.Error_0,l.default.MessengerAction.getUsers);let t;const n=Promise.all(e.map((e=>new Promise(((n,r)=>{const i=r=>{r.requestUuid===t&&r.user.userId===e&&(clearTimeout(s),f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),n(r))},a=e=>{e.requestUuid===t&&(clearTimeout(s),f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),r(e))},s=setTimeout((()=>{f.getInstance().off(l.default.MessengerEvents.GetUser,i),f.getInstance().off(l.default.MessengerEvents.Error,a),f.getInstance().reject(l.default.MessengerError.Error_0,l.default.MessengerAction.getUsers).catch(r)}),f.rejectTimeout);f.getInstance().on(l.default.MessengerEvents.GetUser,i),f.getInstance().on(l.default.MessengerEvents.Error,a)})))));return t=this.signalling.sendWsMessage(h.MsgAction.getUsers,{users:e.map((e=>({user_id:e})))}),n}editUser(e,t){let n={};return e&&(n.custom_data=e),t&&(n.private_custom_data=t),new Promise(((e,t)=>{const r=this.signalling.sendWsMessage(h.MsgAction.editUser,n);f.getInstance()._registerPromise(r,e,t)}))}setStatus(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(h.MsgAction.setStatus,{online:e});f.getInstance()._registerPromise(r,t,n)}))}subscribe(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(h.MsgAction.subscribe,{user_id:e});f.getInstance()._registerPromise(r,t,n)}))}unsubscribe(e,t){return new Promise(((n,r)=>{const i=this.signalling.sendWsMessage(h.MsgAction.unsubscribe,{user_id:e,all:t});f.getInstance()._registerPromise(i,n,r)}))}getSubscriptionList(){return new Promise(((e,t)=>{const n=this.signalling.sendWsMessage(h.MsgAction.getSubscriptionList,{});f.getInstance()._registerPromise(n,e,t)}))}manageNotification(e){return new Promise(((t,n)=>{const r=this.signalling.sendWsMessage(h.MsgAction.manageNotification,{notifications:e.map((e=>e===l.default.MessengerEvents.CreateConversation?s.MsgEvent.onCreateConversation:e===l.default.MessengerEvents.SendMessage?s.MsgEvent.onSendMessage:e===l.default.MessengerEvents.EditMessage?s.MsgEvent.onEditMessage:void 0))});f.getInstance()._registerPromise(r,t,n)}))}createMessageFromCache(e){return e&&"object"==typeof e?d.Message.createFromCache(e):null}reject(e,t){const n={code:e,description:p[e],initiator:this.currentUserId,messengerAction:t};return this._dispatchEvent(l.default.MessengerEvents.Error,n),Promise.reject(n)}msgEventToMessengerEvent(e){return e===s.MsgEvent.onCreateConversation?l.default.MessengerEvents.CreateConversation:e===s.MsgEvent.onSendMessage?l.default.MessengerEvents.SendMessage:e===s.MsgEvent.onEditMessage?l.default.MessengerEvents.EditMessage:e}_traceName(){return"Messenger"}}f.rejectTimeout=2e4,r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"addEventListener",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"removeEventListener",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"on",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"off",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"_dispatchEvent",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"_registerPromise",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getConversation",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getConversations",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getPublicConversations",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getRawConversations",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"createConversation",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"createConversationFromCache",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"joinConversation",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"leaveConversation",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getMe",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getMyId",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getUser",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getUserById",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getUsers",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getUsersById",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"editUser",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"setStatus",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"subscribe",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"unsubscribe",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"getSubscriptionList",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"manageNotification",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f.prototype,"createMessageFromCache",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],f,"getInstance",null),t.Messenger=f},6623:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MESSAGING_ERR_2=t.MESSAGING_ERR_1=void 0,t.MESSAGING_ERR_1="Error - use Client.getIM()",t.MESSAGING_ERR_2="Error - use ConversationManager.get()"},6968:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MsgPermissions=t.MsgService=void 0;n(249);!function(e){e[e.Chat="chat"]="Chat"}(t.MsgService||(t.MsgService={})),function(e){e[e.none=0]="none",e[e.can_write=1]="can_write",e[e.can_edit=2]="can_edit",e[e.can_remove=4]="can_remove",e[e.can_manage_participants=8]="can_manage_participants",e[e.can_edit_all=16]="can_edit_all",e[e.can_remove_all=32]="can_remove_all",e[e.is_owner=32768]="is_owner",e[e.all=65535]="all"}(t.MsgPermissions||(t.MsgPermissions={}))},84:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.PCFactory=void 0;const i=n(6746),a=n(1150),s=n(308),o=n(4610),c=n(3869),d=n(4106),l=n(575),g=n(125),u=n(7272),h=n(8879),p=n(245),f=n(3902);class m{constructor(){this.iceConfig=null,this._peerConnections={},this.waitingPeerConnections={},this.logger=a.LogManager.get().createLogger(a.LogCategory.RTC,this._traceName()),this._requireMedia=!0,"firefox"===c.default.getWSVendor()&&(m.hasTransceivers=!0),p.default.setRPCHandler(l.RemoteEvent.createPC,((e,t)=>{this.rpcHandlerCreatePC(e,t)})),p.default.setRPCHandler(l.RemoteEvent.destroyPC,(e=>{this.rpcHandlerDestroyPC(e)})),p.default.addHandler(this)}get peerConnections(){return this._peerConnections}get requireMedia(){return this._requireMedia}set requireMedia(e){this._requireMedia=e}static get(){return null===this.inst&&(this.inst=new m),this.inst}static sdpOffersVideo(e){return{receiveVideo:-1!==e.indexOf("m=video"),sendVideo:!0}}setupDirectPC(e,t,n,r){let i=new f.TransreceiverPC(e,t,n);const a=s.CallManager.get().calls[e];if(i){i.setHoldKey(r);g.Client.getInstance().config();return u.default.StreamManager.get().getCallStream(a).then((t=>(null!==t&&i.fastAddCustomMedia(t),this._peerConnections[e]=i,i.getLocalOffer())))}s.CallManager.get().handleConnectionFailed(a.id(),1001,"",{})}incomeDirectPC(e,t,n,r,a){let o=new f.TransreceiverPC(e,i.PeerConnectionMode.P2P,t,a);return o.setHoldKey(r),o._setRemoteDescription(n).then((()=>{if(s.CallManager.get().calls[e])return this._peerConnections[e]=o,o;o.close()}))}getPeerConnect(e){return this._peerConnections[e]}onSignalingConnected(){}onSignalingClosed(){this.logger.info("Closing all peer connections because signaling connection has closed"),this.waitingPeerConnections={};for(let e in this._peerConnections)this._peerConnections[e].close();this._peerConnections={}}onSignalingConnectionFailed(e){}onMediaConnectionFailed(){}closeAll(){for(let e in this._peerConnections)this._peerConnections[e].close();this._peerConnections={}}setBandwidthParams(e){this._bandwidthParams=e}addBandwidthParams(e){return this._bandwidthParams&&(e.sdp=e.sdp.replace(/(a=mid:video.*\r\n)/g,"$1b=AS:"+this._bandwidthParams+"\r\n")),e}rpcHandlerCreatePC(e,t){this.logger.info(`rpcHandlerCreatePC(), received SDP: \n${t.replace("<br>","\n\r")}`),t=h.SDPMuggle.addSetupAttribute(t);const n=m.sdpOffersVideo(t),r=i.PeerConnectionMode.CLIENT_SERVER_V1;p.default.callRemoteFunction(d.RemoteFunction.muteLocal,e,!1);const a=new f.TransreceiverPC(e,r,n);this._peerConnections[e]=a;let c=s.CallManager.get().calls[e];u.default.StreamManager.get().getCallStream(c).then((n=>{"__default"===e&&(t=t.replace("a=sendrecv","a=recvonly")),a.fastAddCustomMedia(n),a.processRemoteOffer(t).then((t=>{void 0===c||c.checkCallMode(o.CallMode.SERVER)?p.default.callRemoteFunction(d.RemoteFunction.confirmPC,e,t):p.default.callRemoteFunction(d.RemoteFunction.acceptCall,[e,s.CallManager.cleanHeaders(c.headers()),t]),"__default"!==e&&void 0!==s.CallManager.get().calls[e]&&(s.CallManager.get().calls[e].peerConnection=a)}))})).catch((e=>{void 0!==c?s.CallManager.get().handleConnectionFailed(c.id(),403,"Media access denied",{}):p.default.onConnectionFailedRPC()}))}rpcHandlerDestroyPC(e){this._peerConnections[e]&&("__default"===e?setTimeout((()=>{this._peerConnections[e].close(),delete this._peerConnections[e]}),200):(this._peerConnections[e].close(),delete this._peerConnections[e])),delete this.waitingPeerConnections[e]}_traceName(){return"PCFactory"}}m.inst=null,m.hasTransceivers=!1,r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"setupDirectPC",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"incomeDirectPC",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"getPeerConnect",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"onSignalingConnected",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"onSignalingClosed",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"onSignalingConnectionFailed",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"onMediaConnectionFailed",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"closeAll",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"setBandwidthParams",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"addBandwidthParams",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"rpcHandlerCreatePC",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m.prototype,"rpcHandlerDestroyPC",null),r([a.LogManager.d_trace(a.LogCategory.PCFACTORY)],m,"sdpOffersVideo",null),t.PCFactory=m},6746:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.PeerConnection=t.PeerConnectionMode=t.PeerConnectionState=void 0;const i=n(1150),a=n(308),s=n(3385),o=n(4106),c=n(4265),d=n(125),l=n(7272),g=n(8707),u=n(4610),h=n(245),p=n(2282);var f,m;!function(e){e[e.IDLE=0]="IDLE",e[e.REMOTEOFFER=1]="REMOTEOFFER",e[e.LOCALOFFER=2]="LOCALOFFER",e[e.ESTABLISHING=3]="ESTABLISHING",e[e.ESTABLISHED=4]="ESTABLISHED",e[e.CLOSED=5]="CLOSED"}(f=t.PeerConnectionState||(t.PeerConnectionState={})),function(e){e[e.CLIENT_SERVER_V1=0]="CLIENT_SERVER_V1",e[e.P2P=1]="P2P",e[e.CONFERENCE=2]="CONFERENCE"}(m=t.PeerConnectionMode||(t.PeerConnectionMode={}));class v{constructor(e,t,n){this.id=e,this.mode=t,this.videoEnabled=n,this.onHold=!1,this.muteMicState=!1,this.SEND_CANDIDATE_DELAY=1e3,this.mediaRepository=[],this.candidateList=[],this.localCandidateTimer=-1,this.logger=i.LogManager.get().createLogger(i.LogCategory.RTC,`${this._traceName()} ${e}`),this.logger.info("PC created"),this.state=f.IDLE,this.pendingCandidates=[],"_default"!==e&&a.CallManager.get().calls[e]&&(this.reInviteQ=new c.ReInviteQ(a.CallManager.get().calls[e],this._canReInvite))}get remoteStreams(){return this._remoteStreams}getId(){return this.id}getState(){return this.state}processRemoteAnswer(e,t){return this.state=f.ESTABLISHING,this._processRemoteAnswer(e,t)}getLocalOffer(){return this.state===f.IDLE||this.state===f.ESTABLISHED||f.LOCALOFFER?(this.logger.info("getLocalOffer()"),this.state=f.LOCALOFFER,this._getLocalOffer()):(this.logger.error("getLocalOffer() in state "+f[this.state]),new Promise(((e,t)=>{t("Invalid state")})))}getLocalAnswer(){return this._getLocalAnswer()}processRemoteOffer(e){return this.state===f.IDLE||this.state===f.ESTABLISHED?(this.state=f.ESTABLISHING,this._processRemoteOffer(e)):(this.logger.error("processRemoteOffer() in state "+f[this.state]),new Promise(((e,t)=>{t("Invalid state")})))}close(){this.logger.info("close()"),this._close()}addRemoteCandidate(e,t){return this.logger.info(`addRemoteCandidate(${e}, ${t})`),this._addRemoteCandidate(e,t)}handleReinvite(e,t,n){return this._handleReinvite(e,t,n)}handleRemoteOffer(e,t,n){return this._handleRemoteOffer(e,t,n)}addCandidateToSend(e,t){this.pendingCandidates.push([t,e]),this.canSendCandidates&&this.startCandidateSendTimer()}canStartSendingCandidates(){this.canSendCandidates=!0,this.startCandidateSendTimer()}sendDTMF(e){this._sendDTMF(e,500,50)}setVideoEnabled(e){const t=this.videoEnabled.receiveVideo;this.videoEnabled=e,t!=e.receiveVideo&&this._hold(this.onHold)}setVideoFlags(e){this.videoEnabled=e}getDirections(){return this._getDirections()}setHoldKey(e){this.onHold=e}getMidKinds(){if(this._call){const e={},t=this.getTransceivers(),n=l.default.StreamManager.get()._getScreenSharing(this._call)||[];let r=[];return n.forEach((e=>{r=[...r,...e.stream.getTracks().map((e=>e.id))]})),t.forEach((t=>{t.sender&&t.sender.track&&t.sender.track.kind&&("video"===t.sender.track.kind&&r.length&&~r.indexOf(t.sender.track.id)?e[t.mid]="sharing":e[t.mid]=t.sender.track.kind)})),e}return{}}getTrackKind(e){if(this._call){const t=l.default.StreamManager.get()._getTracksKind(this._call),n=this.getTransceivers(),r=g.default.parse(e);let i=[];for(const e in t)if(t.hasOwnProperty(e)){const t=n.find((t=>!(t.stopped||"stopped"===t.direction||"stopped"===t.currentDirection)&&t.sender&&t.sender.track&&t.sender.track.id===e));if(t){const n=r.media.find((e=>e.attr.some((e=>"mid"===e.name&&e.value===t.mid))));if(n){const t=n.attr.find((e=>"msid"===e.name));if(t){const n=t.value.split(" ");if(n.length>1){const t=n[1];t!=e&&i.push({from:e,to:t})}}}}}let a=Object.assign({},t);return i.forEach((e=>{const t=a[e.from];delete a[e.from],a[e.to]=t})),a}return{}}sendMedia(e,t){return new Promise(((e,t)=>{this.onHold?t({result:!1,call:this._call}):this.reInviteQ.add({fx:()=>{d.Client.getInstance().config();l.default.StreamManager.get().updateCallStream(this._call)},reject:t,resolve:t=>{this.restoreMute(),e(t)}})}))}hold(e){return new Promise(((t,n)=>{this.onHold===e&&t({call:this._call,name:p.CallEvents.Updated,result:!0}),this.reInviteQ.add({fx:()=>{this._hold(e)},reject:n,resolve:e=>{this.restoreMute(),t(e)}})}))}hdnFRS(){return new Promise(((e,t)=>{this.onHold?t({result:!1,call:this._call}):this.reInviteQ.add({fx:()=>{this._hdnFRS()},reject:t,resolve:t=>{this.restoreMute(),e(t)}})}))}muteMicrophone(e){this.muteMicState!==e?(this.muteMicState=e,this.onHold?this.logger.warning(`Can't change the microphone state to ${e}: the call is on hold.`):this.getTransceivers().forEach((e=>{var t,n;const r=e.sender&&e.sender.track?e.sender.track.kind:null;"audio"===r&&"live"===e.sender.track.readyState?(this.logger.warning(`Change track ${e.mid} with kind ${r}.`),e.sender.track.enabled=!this.muteMicState):this.logger.warning(`Skip track ${e.mid} with kind ${r} in the ${null===(n=null===(t=e.sender)||void 0===t?void 0:t.track)||void 0===n?void 0:n.readyState} state.`)}))):this.logger.warning(`Can't change the microphone state to ${e}: already in the state.`)}restoreMute(){this._call.settings.active&&setTimeout((()=>{this._call.settings.state!==u.CallState.ENDED&&(this._call.restoreRMute(),this.getTransceivers().forEach((e=>{"audio"===(e.sender&&e.sender.track?e.sender.track.kind:null)&&"live"===e.sender.track.readyState&&(e.sender.track.enabled=!this.muteMicState)})))}),100)}restoreVideoSending(){}addCustomMedia(e){return new Promise(((t,n)=>{this.reInviteQ.add({fx:()=>{this._addCustomMedia(e)},reject:n,resolve:e=>{this.restoreMute(),t()}})}))}fastAddCustomMedia(e){this._addCustomMedia(e)}fastRemoveCustomMedia(e){this._removeCustomMedia(e)}removeCustomMedia(e){return new Promise(((t,n)=>{this.reInviteQ.add({fx:()=>{this._removeCustomMedia(e)},reject:n,resolve:e=>{this.restoreMute(),t()}})}))}updateCustomMedia(e){this._updateCustomMedia(e)}replaceSharingToVideo(e,t){return this._replaceSharingToVideo(e,t)}setEncodingsParams(e,t){this._setEncodingsParams(e,t)}_traceName(){return"PeerConnection"}setState(e){this.logger.info("Transmitting from "+f[this.state]+" to "+f[e]),this.state=e}sendLocalCandidateToPeer(e,t){this._call=a.CallManager.get().calls[this.id],this.mode===m.CLIENT_SERVER_V1?h.default.callRemoteFunction(o.RemoteFunction.addCandidate,this.id,e,t):(this.candidateList.push([t,e]),this.localCandidateTimer<=0&&(this.localCandidateTimer=window.setTimeout((()=>{window.clearTimeout(this.localCandidateTimer),this.localCandidateTimer=-1,a.CallManager.get().calls[this.id]&&a.CallManager.get().calls[this.id].sendInfo(s.Constants.P2P_SPD_FRAG_MIME_TYPE,JSON.stringify(this.candidateList),{}),this.candidateList=[]}),200)))}startCandidateSendTimer(){null!==this.candidateSendTimer&&void 0!==this.candidateSendTimer||(this.candidateSendTimer=setTimeout((()=>{this.candidateSendTimer=null,this.pendingCandidates.length>0&&a.CallManager.get().calls[this.id]&&a.CallManager.get().calls[this.id].sendInfo(s.Constants.P2P_SPD_FRAG_MIME_TYPE,JSON.stringify(this.pendingCandidates),{}),this.pendingCandidates=[]}),this.SEND_CANDIDATE_DELAY))}}r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"getState",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"processRemoteAnswer",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"getLocalOffer",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"getLocalAnswer",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"processRemoteOffer",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"close",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"addRemoteCandidate",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"handleReinvite",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"handleRemoteOffer",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"addCandidateToSend",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"canStartSendingCandidates",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"sendDTMF",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"setVideoEnabled",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"setVideoFlags",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"setHoldKey",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"getTrackKind",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"sendMedia",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"hold",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"hdnFRS",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"muteMicrophone",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"restoreMute",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"restoreVideoSending",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"addCustomMedia",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"fastAddCustomMedia",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"fastRemoveCustomMedia",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"removeCustomMedia",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"updateCustomMedia",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"replaceSharingToVideo",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"setEncodingsParams",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"setState",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"sendLocalCandidateToPeer",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],v.prototype,"startCandidateSendTimer",null),t.PeerConnection=v},4265:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.ReInviteQ=void 0;const i=n(2282),a=n(1150);class s{constructor(e,t){this._pcStatus=t,this._q=[],e.on(i.CallEvents.Updated,(e=>{if(a.LogManager.get().writeMessage(a.LogCategory.REINVITEQ,"CallEvent",a.LogLevel.TRACE,`Updated with result ${e.result}`),s._currentReinvite){const t=s._currentReinvite;e.result?t.resolve(e):t.reject(e),s._currentReinvite=void 0}this.runNext()})),e.on(i.CallEvents.PendingUpdate,(e=>{a.LogManager.get().writeMessage(a.LogCategory.REINVITEQ,"CallEvent",a.LogLevel.TRACE,"IncomingUpdate. Local RI=="+typeof s._currentReinvite),s._currentReinvite&&(e.result?s._currentReinvite.resolve(e):s._currentReinvite.reject(e),s._currentReinvite=void 0)})),e.on(i.CallEvents.UpdateFailed,(e=>{a.LogManager.get().writeMessage(a.LogCategory.REINVITEQ,"CallEvent",a.LogLevel.TRACE,"UpdateFailed"),s._currentReinvite&&(s._currentReinvite.reject(),s._currentReinvite=void 0)}))}runNext(){void 0===s._currentReinvite&&this._q.length>0&&this._pcStatus()&&(s._currentReinvite=this._q.splice(0,1)[0],s._currentReinvite.fx())}add(e){this._q.push(e),this.runNext()}clear(){this._q.forEach((e=>{e.reject()}))}_traceName(){return"ReInviteQ"}}r([a.LogManager.d_trace(a.LogCategory.REINVITEQ)],s.prototype,"runNext",null),r([a.LogManager.d_trace(a.LogCategory.REINVITEQ)],s.prototype,"add",null),r([a.LogManager.d_trace(a.LogCategory.REINVITEQ)],s.prototype,"clear",null),t.ReInviteQ=s},6127:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.CodecSorter=void 0;const r=n(8707);class i{constructor(e){this.originalSDP=e}getUserCodecList(){void 0===this.originalCodecList&&(this.originalCodecList=r.default.parse(this.originalSDP));let e={sections:[]};return e.sections=this.originalCodecList.media.filter((e=>"video"===e.descr.media||"audio"===e.descr.media)).map(((e,t,n)=>{let r=/(rtx|red|ulpfec)/,i=e.attr.filter((e=>"rtpmap"===e.name&&!e.value.find((e=>e.value.match(r)))));return{kind:e.descr.media,codec:i}})),e}setUserCodecList(e){void 0===this.originalCodecList&&(this.originalCodecList=r.default.parse(this.originalSDP));for(let t=0;t<e.sections.length;t++)if(e.sections[t].kind===this.originalCodecList.media[t].descr.media){let n=i.resortSection(e.sections[t].codec,this.originalCodecList.media[t].attr,this.originalCodecList.media[t].descr.media);this.originalCodecList.media[t].attr=n.codecs,this.originalCodecList.media[t].descr.fmt=n.order,this.originalCodecList.media[t].descr.fmtCount=n.order.length}}static resortSection(e,t,n){let r=[],i=[],a=[],s=[];t.forEach((e=>"rtpmap"===e.name?a.push(e):"ssrc"===e.name?i.push(e):void r.push(e)));let o=e.map((e=>{let t=e.value.find((e=>"rtpmap"===e.name)).value,n=a.find((e=>e.value.find((e=>!!~e.value.indexOf(t)))));if(n)return s.push(t.split(" ")[0]),n})).filter(Boolean);if("video"===n.toLowerCase()){let e=[],t=[],n=a.filter((e=>e.value.find((e=>!!~e.value.indexOf("rtx"))))),s=a.filter((e=>e.value.find((e=>e.value.match(/(red|ulpfec)/)))));return o=o.concat(s),o.forEach((r=>{e.push(r),t.push(r.value.find((e=>"rtpmap"===e.name)).value.split(" ")[0]);let i=this.matchRtx(r,n);i&&(e.push(i),t.push(i.value.find((e=>"rtpmap"===e.name)).value.split(" ")[0]))})),{codecs:[...r,...e,...i],order:t}}return{codecs:[...r,...o,...i],order:s}}static matchRtx(e,t){let n=e.value.find((e=>"rtpmap"===e.name)).value.split(" ")[0],r=t.find((e=>e.value.find((e=>!!~e.value.indexOf(`apt=${n}`)))));return r}getSDP(){return this.originalCodecList.toString()}_traceName(){return"CodecSorter"}}t.CodecSorter=i},3421:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.CodecSorterHelpers=void 0;const i=n(1150);class a{static H264Sorter(e,t){return new Promise(t?t=>{for(let t=0;t<e.sections.length;t++)if("video"==e.sections[t].kind.toLowerCase()){let n=e.sections[t].codec.filter((e=>{let t=e.value.findIndex((e=>"rtpmap"===e.name));return-1!=e.value[t].value.toLowerCase().indexOf("h264")&&-1==e.value[t].value.toLowerCase().indexOf("uc")}));n.length&&(e.sections[t].codec=n)}t(e)}:t=>{for(let t=0;t<e.sections.length;t++)"video"==e.sections[t].kind.toLowerCase()&&e.sections[t].codec.sort(((e,t)=>{let n=e.value.findIndex((e=>"rtpmap"===e.name)),r=t.value.findIndex((e=>"rtpmap"===e.name));return-1!=e.value[n].value.toLowerCase().indexOf("h264")&&-1==e.value[n].value.toLowerCase().indexOf("uc")?-1:-1!=t.value[r].value.toLowerCase().indexOf("h264")&&-1==t.value[r].value.toLowerCase().indexOf("uc")?1:0}));t(e)})}static H264ConfSorter(e,t){return new Promise(t?t=>{for(let t=0;t<e.sections.length;t++)if("video"==e.sections[t].kind.toLowerCase()){let n=e.sections[t].codec.filter((e=>{let t=e.value.findIndex((e=>"rtpmap"===e.name));return-1!=e.value[t].value.toLowerCase().indexOf("h264")&&-1==e.value[t].value.toLowerCase().indexOf("uc")}));n.length&&(e.sections[t].codec=n)}t(e)}:t=>{for(let t=0;t<e.sections.length;t++)"video"==e.sections[t].kind.toLowerCase()&&(e.sections[t].codec.sort(((e,t)=>{let n=e.value.findIndex((e=>"rtpmap"===e.name)),r=t.value.findIndex((e=>"rtpmap"===e.name));return-1!=e.value[n].value.toLowerCase().indexOf("h264")&&-1==e.value[n].value.toLowerCase().indexOf("uc")?-1:-1!=t.value[r].value.toLowerCase().indexOf("h264")&&-1==t.value[r].value.toLowerCase().indexOf("uc")?1:0})),e.sections[t].codec.sort(((e,t)=>{e.value.findIndex((e=>"rtpmap"===e.name)),t.value.findIndex((e=>"rtpmap"===e.name));let n=e.value.findIndex((e=>"fmtp"===e.name)),r=t.value.findIndex((e=>"fmtp"===e.name));return e.value[n]&&t.value[r]?-1!==e.value[n].value.toLowerCase().indexOf("profile-level-id=42e01f")&&-1!==e.value[n].value.toLowerCase().indexOf("packetization-mode=1")?-1:-1!==t.value[r].value.toLowerCase().indexOf("profile-level-id=42e01f")&&-1!==e.value[n].value.toLowerCase().indexOf("packetization-mode=1")?1:0:0})));t(e)})}_traceName(){return"CodecSorterHelpers"}}r([i.LogManager.d_trace(i.LogCategory.RTC)],a,"H264Sorter",null),r([i.LogManager.d_trace(i.LogCategory.RTC)],a,"H264ConfSorter",null),t.CodecSorterHelpers=a},8707:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});class n{constructor(){this.attrCount=0,this.bandwCount=0,this.mediaCount=0,this.dummyLines=[]}static parse(e){const t=new n;return n.splitLines(e).forEach(((e,r)=>{switch(e.trim().charAt(0)){case"a":const i=n.parseAttr(e,r);if(i)if(t.mediaCount){if(!(t.media[t.mediaCount-1].attrCount<260))throw new Error("Error adding media attribute, attribute is ignored");t.addMediaAttribute(i,t.mediaCount-1)}else{if(!(t.attrCount<260))throw new Error("Error adding media attribute, attribute is ignored");t.addSessionAttribute(i)}break;case"o":t.origin=n.parseOrigin(e,r);break;case"s":t.name=n.parseGenericLine(e,r);break;case"c":const a=n.parseConnectionInfo(e,r);t.mediaCount?t.media[t.mediaCount-1].conn=a:t.conn=a;break;case"t":t.time=n.parseTime(e,r);break;case"m":const s=n.parseMedia(e,r);if(void 0===t.media&&(t.media=[]),!(t.mediaCount<256))throw new Error("Error adding media, media is ignored");t.media[t.mediaCount]=s,t.mediaCount++;break;case"v":n.parseVersion(e,r);break;case"b":const o=n.parseBandwidthInfo(e,r);if(t.mediaCount){if(!(t.media[t.mediaCount-1].bandwCount<8))throw new Error("Error adding session bandwidth info, info is ignored");t.media[t.mediaCount-1].bandw.push(o),t.media[t.mediaCount-1].bandwCount++}else{if(!(t.bandwCount<8))throw new Error("Error adding session bandwidth info, info is ignored");void 0===t.bandw&&(t.bandw=[]),t.bandw[t.bandwCount]=o,t.bandwCount++}break;default:t.dummyLines.push(n.parseGenericLine(e,r))}})),t}static parseAttr(e,t){0!==e.indexOf("a=")&&n.scannerError(e,t);const r=n.chopLine(e).split(":");return{name:r[0],value:r.slice(1).join(":")}}static splitLines(e){return e.split(/(\r\n|\r|\n)/).filter((e=>e.length>0)).filter(RegExp.prototype.test.bind(/^([a-z])=(.*)/))}static parseGenericLine(e,t){return 1!==e.indexOf("=")&&n.scannerError(e,t),e.substr(2)}static parseOrigin(e,t){0!==e.indexOf("o=")&&n.scannerError(e,t);const r=n.chopLine(e).split(/[\s\t]+/);return{user:r[0],id:r[1],version:r[2],netType:r[3],addrType:r[4],addr:r[5]}}static parseVersion(e,t){0!==e.indexOf("v=0")&&n.scannerError(e,t)}static parseTime(e,t){0!==e.indexOf("t=")&&n.scannerError(e,t);const r=n.chopLine(e).split(/[\s\t]+/);return{start:parseInt(r[0]),stop:parseInt(r[1])}}static parseConnectionInfo(e,t){0!==e.indexOf("c=")&&n.scannerError(e,t);const r=n.chopLine(e).split(/[\s\t]+/);return{netType:r[0],addrType:r[1],addr:r[2]}}static parseBandwidthInfo(e,t){0!==e.indexOf("b=")&&n.scannerError(e,t);const r=n.chopLine(e).split(/[:]+/);return{modifier:r[0],value:parseInt(r[1])}}static scannerError(e,t){throw new Error(`Error parsing sdp in line ${t}: "${e}" is not valid sdp line`)}static chopLine(e){return e.substr(2)}static parseMedia(e,t){0!==e.indexOf("m=")&&n.scannerError(e,t);const r=n.chopLine(e).split(/[\s\t]+/),i=r[1].split("/");return{descr:{media:r[0],port:parseInt(i[0]),portCount:parseInt(i[1]||"0"),transport:r[2],fmtCount:r.length-3,fmt:r.slice(3)},attrCount:0,bandwCount:0,attr:[],bandw:[]}}addSessionAttribute(e){void 0===this.attr&&(this.attr=[]),this.attr.push(e),this.attrCount++}addMediaAttribute(e,t){void 0===this.media[t].attr&&(this.media[t].attr=[]);let n=e.value.split(" ")[0];~["rtcp","ice-ufrag","ice-pwd","ice-options","fingerprint","setup"].indexOf(e.name)?this.addAttr(t,e,"ice"):~["rtpmap","rtcp-fb","fmtp"].indexOf(e.name)?this.addAttr(t,e,"rtpmap",n):~["extmap"].indexOf(e.name)?this.addAttr(t,e,"extmap"):~["ssrc"].indexOf(e.name)?this.addAttr(t,e,"ssrc"):this.media[t].attr.push(e),this.media[t].attrCount++}addAttr(e,t,n,r){let i=this.media[e].attr.findIndex((e=>r?e.name===n&&e.value[0].value.split(" ")[0]===r:e.name===n));-1!==i?this.media[e].attr[i].value.push(t):this.media[e].attr.push({name:n,value:[t]})}toString(){const e=[];e.push("v=0"),e.push(`o=${this.origin.user} ${this.origin.id} ${this.origin.version} ${this.origin.netType} ${this.origin.addrType} ${this.origin.addr}`),e.push(`s=${this.name}`),this.conn&&e.push(n.printConnectionInfo(this.conn));for(let t=0;t<this.bandwCount;t++)e.push(n.printBandwidthInfo(this.bandw[t]));e.push(`t=${this.time.start} ${this.time.stop}`);for(let t=0;t<this.attrCount;t++)e.push(n.printAttrInfo(this.attr[t]));for(let t=0;t<this.mediaCount;t++){const r=this.media[t];let i=`m=${r.descr.media} ${r.descr.port}${r.descr.portCount?"/"+r.descr.portCount:""} ${r.descr.transport}`;for(let e=0;e<r.descr.fmtCount;e++)i+=" "+r.descr.fmt[e];e.push(i),r.conn&&e.push(n.printConnectionInfo(r.conn));for(let t=0;t<r.bandwCount;t++)e.push(n.printBandwidthInfo(r.bandw[t]));const a=["sendrecv","sendonly","recvonly","inactive"],s=r.attr.find((e=>!!~a.indexOf(e.name)));s&&e.push(n.printAttrInfo(s));const o=r.attr.find((e=>"ice"===e.name));o&&o.value.forEach((t=>{e.push(n.printAttrInfo(t))}));let c=r.attr.filter((e=>"ice"!==e.name&&!~a.indexOf(e.name)));for(let t=0;t<c.length;t++)Array.isArray(c[t].value)?c[t].value.forEach((t=>{e.push(n.printAttrInfo(t))})):e.push(n.printAttrInfo(c[t]))}return e.join("\r\n")+"\r\n"}static printConnectionInfo(e){return`c=${e.netType} ${e.addrType} ${e.addr}`}static printBandwidthInfo(e){return`b=${e.modifier}:${e.value}`}static printAttrInfo(e){return`a=${e.name}${e.value?":"+e.value:""}`}}t.default=n,n.SDP_EINSDP="Wrong sdp lines"},8879:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SDPMuggle=void 0;const r=n(125),i=n(1206),a=n(8707);class s{static getSDPLines(e){return e.split(/(\r\n|\r|\n)/).filter(s.validLine)}static createSDPFrom(e,t){return new RTCSessionDescription({sdp:e.join("\r\n")+"\r\n",type:t})}static detectDirections(e){let t=[],n=e.split(/(\r\n|\r|\n)/).filter(s.validLine),r="";return n.forEach((e=>{if(0===e.indexOf("m=")){let t=e.substr(2);r=t.split(" ")[0]}""===r||"a=sendrecv"!==e&&"a=sendonly"!==e&&"a=recvonly"!==e&&"a=inactive"!==e||(t.push({type:r,direction:e.substr(2)}),r="")})),t}static checkIsVimsSectionExistsIn(e){return e.includes("VIMS")}static removeTelephoneEvents(e){if(-1!==e.sdp.indexOf("a=rtpmap:127 telephone-event/8000")){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=-1;for(let e=0;e<t.length;e++){if(-1!==t[e].indexOf("m=audio")){let n=t[e];"string"==typeof n&&(t[e]=n.replace(" 127",""))}-1!==t[e].indexOf("a=rtpmap:127 telephone-event/8000")&&(n=e)}return t.splice(n,1),new RTCSessionDescription({sdp:t.join("\r\n")+"\r\n",type:e.type})}return e}static removeDoubleOpus(e){if(-1!==e.sdp.indexOf("a=rtpmap:109 opus")&&-1!==e.sdp.indexOf("a=rtpmap:111 opus")){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=-1;for(let e=0;e<t.length;e++){if(-1!==t[e].indexOf("m=audio")){let n=t[e];"string"==typeof n&&(t[e]=n.replace(" 109",""))}-1!==t[e].indexOf("a=rtpmap:109 opus")&&(n=e)}return t.splice(n,1),new RTCSessionDescription({sdp:t.join("\r\n")+"\r\n",type:e.type})}return e}static removeDoublePT(e){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=[];for(let e=0;e<t.length;e++){let r=t[e];0===r.indexOf("m=video")&&(n=r.split(" "),t[e]=n.filter(((e,t)=>{if(0===t)return!0;for(let r=t-1;r>=2;r--)if(n[r]===e)return!1;return!0})).join(" "))}return new RTCSessionDescription({sdp:t.join("\r\n")+"\r\n",type:e.type})}static removeTransportCC(e){if(-1!==e.sdp.indexOf("http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01")){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=[];return t.forEach(((e,t)=>{-1!==e.indexOf("http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01")&&n.unshift(t)})),n.forEach((e=>t.splice(e,1))),new RTCSessionDescription({sdp:t.join("\r\n")+"\r\n",type:e.type})}return e}static removeTIAS(e){if(-1!==e.sdp.indexOf("b=TIAS:13888000")||-1!==e.sdp.indexOf("b=AS:13888")){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=[];t.forEach(((e,t)=>{-1===e.indexOf("b=TIAS:13888000")&&-1===e.indexOf("b=AS:13888")||n.unshift(t)})),n.forEach((e=>t.splice(e,1))),e={type:e.type,sdp:t.join("\r\n")+"\r\n"}}return e}static fixVideoRecieve(e,t){if(-1!==e.sdp.indexOf("m=video")&&!t){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=null;return t=t.map(((e,t)=>(null===n?-1!==e.indexOf("m=video")&&(n=t):"a=sendrecv"===e?e="a=sendonly":"a=recvonly"===e&&(e="a=inactive"),e))),new RTCSessionDescription({sdp:t.join("\r\n")+"\r\n",type:e.type})}return e}static addSetupAttribute(e){return-1==e.indexOf("a=setup:")&&(e+="a=setup:actpass\r\n"),e}static findTrackByMid(e,t){let n=e.split(/(\r\n|\r|\n)/).filter(s.validLine),r=-1;for(let e=0;e<n.length&&(-1===n[e].indexOf("a=mid:")||-1===r);e++)if(-1!==n[e].indexOf(`a=mid:${t}`)&&(r=e),-1!==n[e].indexOf("msid:")&&-1!==r)return n[e].split(" ").slice(-1).pop();return""}static addXAS(e){if(r.Client.getInstance().config().experiments.xas&&r.Client.getInstance().config().experiments.xas){let t=e.sdp;const n=r.Client.getInstance().config().experiments.xas;return void 0!==n.as&&-1!==n.as&&(t=t.replace(/(a=mid:video.*\r\n)/g,"$1b=AS:"+n.as+"\r\n")),void 0!==n.tias&&-1!==n.tias&&(t=t.replace(/(a=mid:video.*\r\n)/g,"$1b=TIAS:"+n.as+"\r\n")),new RTCSessionDescription({sdp:t,type:e.type})}return e}static fixFFMIDBug(e){if(-1==e.sdp.indexOf("a=mid")){const t=e.sdp.replace(/(m=audio.*\r\n)/g,"$1a=mid:0\r\n");return new RTCSessionDescription({sdp:t,type:e.type})}return e}static fixFMTP(e){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine),n=[];return t=t.filter((t=>{if(0==t.indexOf("a=fmtp")){let r=t.split(" ")[1],i=r.replace("apt=","");return-1!==e.sdp.indexOf(`a=rtpmap:${i}`)||(n.push(r[0].replace("a=fmtp:","")),!1)}return!0})).filter((e=>-1===e.indexOf("a=rtpmap:")||-1===n.indexOf(e.split(" ")[0].replace("a=rtpmap:","")))).map((e=>{if(-1!==e.indexOf("m=")){return e.split(" ").filter((e=>-1===n.indexOf(e))).join(" ")}return e})),{sdp:t.join("\r\n")+"\r\n",type:e.type}}static trimMediaAttr(e){let t=e.sdp.split(/(\r\n|\r|\n)/).filter(s.validLine);return t=t.map((e=>(e.includes("a=fmtp")&&(e=e.split(";").map((e=>e.trim())).join(";")),e))),new RTCSessionDescription({sdp:t.join("\r\n")+"\r\n",type:e.type})}static fixSetupSection(e){if(!i.getParser(window.navigator.userAgent).satisfies({chrome:">94.00.0"})||navigator.userAgent.match(/BitrixDesktop/i))return e;return this.getSDPLines(e).map((e=>e.includes("a=setup:")?e.replace(/:.+$/,":active"):e)).join("\r\n")+"\r\n"}static forcePassiveSetupSection(e){if(!i.getParser(window.navigator.userAgent).satisfies({chrome:">94.00.0"})||navigator.userAgent.match(/BitrixDesktop/i))return e;const t=this.getSDPLines(e.sdp).map((e=>e.includes("a=setup:")?e.replace(/:.+$/,":passive"):e));return Object.assign(Object.assign({},e),{sdp:t.join("\r\n")+"\r\n"})}static reduceCodecs(e,t){let n=a.default.parse(e.sdp),r=!1,i=!1;return n.media.forEach(((e,a)=>{var o,c;if(!e.attr.find((e=>"inactive"===e.name))){let d=[],l=[],g=[],u=[];if(e.attr.forEach((e=>"rtpmap"===e.name?g.push(e):"ssrc"===e.name?l.push(e):void d.push(e))),"audio"===e.descr.media){if(!(null===(o=t.audio)||void 0===o?void 0:o.length))return;let e=s.reduceAudioCodecs(g,t.audio);u.push(...e.reducedCodecs),i=e.isAudio}else if("video"===e.descr.media){if(!(null===(c=t.video)||void 0===c?void 0:c.length))return;let e=s.reduceVideoCodecs(g,t.video);u.push(...e.reducedCodecs),r=e.isVideo}u.length?(n.media[a].attr=[...d,...u,...l],n.media[a].descr.fmtCount=u.length,n.media[a].descr.fmt=u.map((e=>e.value[0].value.split(" ")[0])),n.media[a].attrCount=n.media[a].attr.length):(delete n.media[a],n.mediaCount--)}})),{sdp:{type:e.type,sdp:n.toString()},isVideo:r,isAudio:i}}static reduceVideoCodecs(e,t){const n=[];let r=!1;const i=e.filter((e=>e.value.find((e=>!!~e.value.indexOf("rtx")))));return e.forEach((e=>{var a;const s=e.value.find((e=>"rtpmap"===e.name)).value,o=t.filter((e=>!!~s.indexOf(e.name)));if(o.length){const t=null===(a=e.value.find((e=>"fmtp"===e.name)))||void 0===a?void 0:a.value;o.forEach((a=>{let s=Object.keys(a.params||{}).length;for(const e in a.params)~t.indexOf(`${e}=${a.params[e]}`)&&s--;if(0===s&&(a.optional||r||(r=!0),n.push(e),i.length)){let t=((e,t)=>{const n=e.value.find((e=>"rtpmap"===e.name)).value.split(" ")[0];return t.find((e=>e.value.find((e=>!!~e.value.indexOf(`apt=${n}`)))))})(e,i);t&&n.push(t)}}))}})),{reducedCodecs:n,isVideo:r}}static reduceAudioCodecs(e,t){const n=[];let r=!1;return e.forEach((e=>{var i;const a=e.value.find((e=>"rtpmap"===e.name)).value,s=t.filter((e=>!!~a.indexOf(e.name)));if(s.length){const t=null===(i=e.value.find((e=>"fmtp"===e.name)))||void 0===i?void 0:i.value;s.forEach((i=>{let a=Object.keys(i.params||{}).length;for(const e in i.params)~t.indexOf(`${e}=${i.params[e]}`)&&a--;0===a&&(i.optional||r||(r=!0),n.push(e))}))}})),{reducedCodecs:n,isAudio:r}}_traceName(){return"SDPMuggle"}}t.SDPMuggle=s,s.validLine=RegExp.prototype.test.bind(/^([a-z])=(.*)/)},3902:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.TransreceiverPC=t.RTCSdpType=void 0;const i=n(6746),a=n(3869),s=n(84),o=n(1150),c=n(9551),d=n(308),l=n(4106),g=n(6127),u=n(2282),h=n(8879),p=n(125),f=n(4265),m=n(7272),v=n(2957),C=n(245);var _=m.default.StreamManager;const E=n(6665),S=n(8552);var y,M;!function(e){e[e.offer="offer"]="offer",e[e.answer="answer"]="answer",e[e.pranswer="pranswer"]="pranswer",e[e.rollback="rollback"]="rollback"}(y=t.RTCSdpType||(t.RTCSdpType={})),function(e){e[e.controlling="controlling"]="controlling",e[e.controlled="controlled"]="controlled"}(M||(M={}));class R extends i.PeerConnection{constructor(e,t,n,r){super(e,t,n),this.candidatePool=[],this.candidateQueueMap=new Map([["local",[]],["remote",[]]]),this.iceTimer=null,this.needTransportRestart=!0,this.ICE_TIMEOUT=2e4,this._needIceRestart=!1,this._canReInvite=()=>"connected"===this.impl.iceConnectionState||"completed"===this.impl.iceConnectionState,this._TransceiverEncoderMap=new WeakMap;let i=s.PCFactory.get().iceConfig;null==i&&(i={gatherPolicy:"all",iceServers:[]}),r&&(i.iceServers=r),i.bundlePolicy="max-compat",this._createImpl(i)}_getLocalOfferRegular(){return this.iceRole=M.controlling,new Promise(((e,t)=>{let n={};this._call&&(a.default.isIphone()||!this._call.settings.isConference&&!this._call.settings.isAudio)&&(n=this.getReceiveOptions()),this.resetEncodings().then((()=>(this.logger.info("_getLocalOfferRegular(), start create local SDP"),this.impl.createOffer(n)))).then((e=>{this.logger.info(`_getLocalOfferRegular(), created local SDP: \n${e.sdp}`);let t={type:e.type,sdp:e.sdp};return t=s.PCFactory.get().addBandwidthParams(t),t=h.SDPMuggle.removeDoublePT(t),t=this._reduceCodecs(t),t=h.SDPMuggle.trimMediaAttr(t),this.codecRearrange(t)})).then((e=>(this.srcLocalSDP=e.sdp,this.logger.info(`_getLocalOfferRegular(), set local SDP: \n${e.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"getLocalOffer",sdp:e}),this.impl.setLocalDescription(e)))).then((()=>{e(this.impl.localDescription)})).catch((e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"_getLocalOfferRegular",sdp:this.impl.localDescription,description:`offer_reject: ${e.message}`}),t(e)}))}))}updateHoldState(){this.impl.getTransceivers().forEach((e=>{e.sender.track&&("audio"===e.sender.track.kind?e.sender.track.enabled=!this.onHold&&!this.muteMicState:e.sender.track.enabled=!this.onHold)}))}_processRemoteAnswer(e,t){if(0===t.length&&this._call)return this.logger.error("Empty SDP from server. Call will be terminated."),void this._call.hangup({"X-WebRTCError":"no sdp"});if("stable"===this.impl.signalingState)return;let n={sdp:t,type:y.answer};return this.srcRemoteSDP=t,n=h.SDPMuggle.removeTIAS(n),n=h.SDPMuggle.trimMediaAttr(n),this.logger.info(`_processRemoteAnswer(), set remote SDP: \n${n.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"processRemoteAnswer",sdp:n}),this.impl.setRemoteDescription(n).then((e=>{this._needIceRestart&&(this._call.settings.isDirect&&this._call.settings.incoming||this._runReinvite(!0))})).catch((e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"_processRemoteAnswer",sdp:this.impl.localDescription,description:`answer_reject: ${e.message}`})}))}_getLocalOffer(){return"firefox"===a.default.getWSVendor()&&this.impl.remoteDescription&&this.impl.remoteDescription.sdp&&-1===this.impl.remoteDescription.sdp.indexOf("VIMS")?this._getLocalOfferFF():this._getLocalOfferRegular()}_getLocalOfferFF(){return this.iceRole=M.controlling,new Promise(((e,t)=>{let n={};!this._call||!a.default.isIphone()&&this._call.settings.isConference||(n=this.getReceiveOptions()),this.resetEncodings().then((()=>this.impl.createOffer(n))).then((e=>{this.logger.info(`_getLocalOfferFF(), created local SDP: \n${e.sdp}`);let t={type:e.type,sdp:e.sdp};return t=s.PCFactory.get().addBandwidthParams(t),t=h.SDPMuggle.removeDoublePT(t),t=this._reduceCodecs(t),t=h.SDPMuggle.trimMediaAttr(t),this.codecRearrange(t)})).then((t=>{this.srcLocalSDP=t.sdp,this._pendingOffer=t,e(t)})).catch((e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"_getLocalOfferFF",sdp:this._pendingOffer,description:`offer_reject: ${e.message}`}),t(e)}))}))}_getLocalAnswer(){return this.iceRole=M.controlled,new Promise(((e,t)=>{let n={mandatory:{}};!this._call||!a.default.isIphone()&&this._call.settings.isConference||(n={mandatory:this.getReceiveOptions()}),this.resetEncodings().then((()=>this.impl.createAnswer(n))).then((e=>{this.logger.info(`_getLocalAnswer(), created local SDP: \n${e.sdp}`);let t={type:e.type,sdp:e.sdp};return t=s.PCFactory.get().addBandwidthParams(t),t=h.SDPMuggle.removeDoublePT(t),t=h.SDPMuggle.fixVideoRecieve(t,this._call.settings.videoDirections.receiveVideo),t=this._reduceCodecs(t),t=h.SDPMuggle.trimMediaAttr(t),this._call&&this._call.settings.incoming&&(t=h.SDPMuggle.forcePassiveSetupSection(t)),this.codecRearrange(t)})).then((e=>(this.srcLocalSDP=e.sdp,this.logger.info(`_getLocalAnswer(), set local SDP: \n${e.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"getLocalAnswer",sdp:e}),this.impl.setLocalDescription(Object.assign(Object.assign({},e),{type:"answer"}))))).then((()=>{e({type:y.answer,sdp:this.impl.localDescription.sdp})})).catch((e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"_getLocalAnswer",sdp:this.impl.localDescription,description:`answer_reject: ${e.message}`}),t(e)}))}))}_processRemoteOffer(e){return 0===e.length&&this._call?(this.logger.error("Empty SDP from server. Call will be terminated."),void this._call.hangup({"X-WebRTCError":"no sdp"})):(this.iceRole=M.controlled,new Promise(((t,n)=>{let r=new RTCSessionDescription({sdp:e,type:y.offer});this.srcRemoteSDP=e,r=h.SDPMuggle.removeTIAS(r),r=h.SDPMuggle.fixFFMIDBug(r),r=h.SDPMuggle.trimMediaAttr(r),this.logger.info(`_processRemoteOffer(), set remote SDP: \n${r.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"processRemoteOffer",sdp:r}),this.resetEncodings().then((()=>this.impl.setRemoteDescription(r))).then((()=>{let e={mandatory:{}};return!this._call||!a.default.isIphone()&&this._call.settings.isConference||(e={mandatory:this.getReceiveOptions()}),this.impl.createAnswer(e)})).then((e=>(this.logger.info(`_processRemoteOffer(), created local SDP: \n${e.sdp}`),e=h.SDPMuggle.removeDoublePT(e),e=this._reduceCodecs(e),e=h.SDPMuggle.trimMediaAttr(e),this.codecRearrange(e)))).then((e=>(this.srcLocalSDP=e.sdp,this.logger.info(`_processRemoteOffer(), set local SDP: \n${e.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"processRemoteOffer",sdp:e}),this.impl.setLocalDescription(e)))).then((()=>{t(this.impl.localDescription.sdp)})).catch((e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"_processRemoteOffer",sdp:this.impl.localDescription,description:`answer_reject: ${e.message}`}),n(e)}))})))}_setRemoteDescription(e){if(0===e.length&&this._call)return this.logger.error("Empty SDP from server. Call will be terminated."),void this._call.hangup({"X-WebRTCError":"no sdp"});let t=new RTCSessionDescription({sdp:e,type:y.offer});return t=h.SDPMuggle.removeTIAS(t),t=h.SDPMuggle.trimMediaAttr(t),this.srcRemoteSDP=e,this.logger.info(`_setRemoteDescription(), set remote SDP: \n${t.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"setRemoteDescription",sdp:t}),this.impl.setRemoteDescription(t)}_handleRemoteOffer(e,t,n=!1){return this.renegotiationInProgress=!0,0===t.length&&this._call?(this.logger.error("Empty SDP from server. Call will be terminated."),void this._call.hangup({"X-WebRTCError":"no sdp"})):new Promise(((r,i)=>{const s=new RTCSessionDescription({sdp:t,type:"offer"});"safari"!==a.default.getWSVendor()&&"stable"!==this.impl.signalingState&&"safari"!==a.default.getWSVendor()?this.resetEncodings().then((()=>Promise.all([this.impl.setLocalDescription({type:"rollback"}),this.impl.setRemoteDescription(s)]))).then((()=>this.impl.createAnswer())).then((t=>{let n={sdp:t.sdp,type:t.type};n=h.SDPMuggle.removeDoubleOpus(n),n=h.SDPMuggle.removeDoublePT(n),n=h.SDPMuggle.fixVideoRecieve(n,this.videoEnabled.receiveVideo),n=h.SDPMuggle.trimMediaAttr(n),n=this._reduceCodecs(n),this.impl.setLocalDescription(n).then((()=>{this.renegotiationInProgress=!1,this.updateHoldState();const t={mids:this.getMidKinds()};C.default.callRemoteFunction(l.RemoteFunction.acceptReInvite,this._call.id(),e,n.sdp,t),this._call&&this._call.dispatchEvent({name:u.CallEvents.Updated,result:!0,call:this._call}),r()}))})).catch((r=>{n?console.error(r):setTimeout((()=>{this._handleRemoteOffer(e,t,!0)}),300)})):this.resetEncodings().then((()=>this.impl.setRemoteDescription(s))).then((()=>this.impl.createAnswer())).then((t=>{let n={sdp:t.sdp,type:t.type};n=this._reduceCodecs(n),n=h.SDPMuggle.trimMediaAttr(n),this.impl.setLocalDescription(n).then((()=>{const t={mids:this.getMidKinds()};C.default.callRemoteFunction(l.RemoteFunction.acceptReInvite,this._call.id(),e,n.sdp,t),this.renegotiationInProgress=!1,this._call&&this._call.dispatchEvent({name:u.CallEvents.Updated,result:!0,call:this._call}),this.updateHoldState(),r()}))})).catch((e=>console.error(e)))}))}_handleReinvite(e,t){return 0===t.length&&this._call?(this.logger.error("Empty SDP from server. Call will be terminated."),void this._call.hangup({"X-WebRTCError":"no sdp"})):new Promise(((e,n)=>{var r,i,a;const s=e=>{this._call&&(this._call.dispatchEvent({name:"SDP",origin:"_handleReinvite",sdp:this.impl.localDescription,description:`answer_reject: ${e.message}`}),this._call._rejectCallPromise(["sendVideo","deviceChange"])),n(e)};if(this.banReinviteAnswer&&(null===(r=this._call)||void 0===r||r._rejectCallPromise(["sendVideo","deviceChange"]),n(new Error)),!1===this.renegotiationInProgress)null===(i=this._call)||void 0===i||i._resolveCallPromise(["sendVideo","deviceChange"]),e();else if(!0===this.renegotiationInProgress){let n={sdp:t,type:y.answer};this.renegotiationInProgress=!1,this.srcRemoteSDP=t,n=h.SDPMuggle.removeTIAS(n),n=h.SDPMuggle.trimMediaAttr(n),this.impl.setRemoteDescription(n).then((()=>{this._call&&(this._call.dispatchEvent({name:u.CallEvents.Updated,result:!0,call:this._call}),this._call._resolveCallPromise(["sendVideo","deviceChange"])),this.updateHoldState(),e()})).catch((e=>{this._call&&this._call.dispatchEvent({name:u.CallEvents.Updated,result:!1,call:this._call}),this.renegotiationInProgress=!1,this.logger.error(JSON.stringify(e)),s(e)})),clearTimeout(this.renegotiationTimer)}else null===(a=this._call)||void 0===a||a._rejectCallPromise(["sendVideo","deviceChange"]),n(new Error("Universe was broken!"))}))}_close(){clearInterval(this.rtcCollectingCycle),this.impl.onnegotiationneeded=null;p.Client.getInstance().config();S.unregisterPeerConnection(this.impl),this.impl.close(),this._localStream=null,this._remoteStreams=null}_addRemoteCandidate(e,t){return new Promise(((n,r)=>{try{const r=new RTCIceCandidate({candidate:e.substring(2),sdpMLineIndex:t});this.candidatePool.push(r),this._addIceCandidateToQueue(r,"remote").then(n)}catch(e){n()}}))}async _addIceCandidatesFromQueue(){if(this.logger.info(`Adding ICE candidates from pool in state ${this.impl.signalingState}`),"stable"!==this.impl.signalingState)return;const e="remote",t=this.candidateQueueMap.get(e);this.candidateQueueMap.set(e,[]),this.logger.info(`Adding ${t.length} ICE candidates`),t.forEach((e=>{this.logger.info(`Adding ICE candidate ${JSON.stringify(e)}`),this.impl.addIceCandidate(e)}))}async _addIceCandidateToQueue(e,t){var n;if(this.logger.info(`Adding ${t} candidate ${e.candidate} in state ${this.impl.signalingState}`),"stable"===this.impl.signalingState)try{await this.impl.addIceCandidate(e)}catch(e){this.logger.error(`Error on adding ICE candidate: ${e}`)}else null===(n=this.candidateQueueMap.get(t))||void 0===n||n.push(e)}setConfiguration(e){this.impl&&setTimeout((()=>{if(this.srcRemoteSDP&&-1===this.srcRemoteSDP.indexOf("VIMS")||window.__VIIceServer__)if(this.impl&&this.impl.setConfiguration)this.impl.setConfiguration(e),this.renegotiationInProgress=!1,this._runReinvite(!0),setTimeout((()=>{this.candidatePool.forEach((e=>{this.impl.addIceCandidate(e).catch((()=>{}))}))}),2e3);else if(this._pendingOffer){let t=[];this.impl.getTransceivers().map((e=>{e.sender.track&&t.push(e.sender.track)})),this._createImpl(e),t.forEach((e=>{this.impl.addTrack(e,new MediaStream([e]))})),this.impl.createOffer().then((e=>(this.logger.info(`setConfiguration(), created local SDP: \n${e.sdp}`),this._needIceRestart=!0,this.logger.info(`setConfiguration(), set local SDP: \n${this._pendingOffer.sdp}`),this.impl.setLocalDescription(this._pendingOffer)))).then((()=>{this._pendingOffer=void 0})).catch((e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"setConfiguration",sdp:this.impl.localDescription,description:`answer_reject: ${e.message}`}),console.error(e)}))}}),800)}_sendDTMF(e,t,n){try{this.dtmfSender.insertDTMF(e,t,n)}catch(r){this.dtmfSender=new c.SignalingDTMFSender(this._call.id()),this.dtmfSender.insertDTMF(e,t,n)}}_hdnFRSPrep(){this.banReinviteAnswer=!0}_hdnFRS(){this.renegotiationInProgress=!1,this.onRenegotiation()}_traceName(){return"TransreceiverPC"}hasLocalAudio(){return this.impl.getLocalStreams().some((e=>!!e.getAudioTracks().length))}enableVideo(e){let t=[];this._call&&(t=m.default.StreamManager.get()._getScreenSharing(this._call)||[]);const n=[];t.forEach((e=>e.stream.getTracks().forEach((e=>n.push(e.id))))),e?(this._call.settings.videoDirections.sendVideo=!0,m.default.StreamManager.get().getCallStream(this._call,!0).then((e=>{let t=[];if(a.default.isIphone()||a.default.isIpad()){let n=e.getAudioTracks(),r=this._call.peerConnection.getTransceivers().find((e=>e.sender.track&&"audio"===e.sender.track.kind));t.push(this.__replaceTrack(r,n[0]))}let n=e.getVideoTracks();n.length&&t.push(this._addVideoTransceiver(n[0],e,"video")),Promise.all(t).then((()=>{m.default.StreamManager.get().updateLocalVideo(),this.updateSenderTrackTransformers(),this.onRenegotiation()}))}))):(t.length&&t.forEach((e=>{m.default.StreamManager.get()._clearScreenSharing(this._call,e)})),this.impl.getTransceivers().forEach((e=>{"sendrecv"!==e.currentDirection&&"sendonly"!==e.currentDirection&&"inactive"!==e.currentDirection||!e.sender.track||"video"!==e.sender.track.kind||(e.sender.track.enabled=!1,this.__replaceTrack(e,null).then((()=>{e.direction="recvonly",this._call.settings.videoDirections.sendVideo=!1,this.onRenegotiation()})).catch((e=>{this.logger.warning("Wrong transceiver on replace")})))})))}_replaceSharingToVideo(e,t){return new Promise((n=>{var r;const i=this.getTransceivers().filter((e=>e.sender.track&&"video"===e.sender.track.kind));if(i&&i.length){if(this.isSimulcast()){const n=v.Utils.buildSimulcastLayers({trackSettings:e.getSettings(),trackType:t,profileName:null===(r=this._call)||void 0===r?void 0:r.settings.simulcastProfileName});this._setEncodingsParams(i[0],n)}else{const n=v.Utils.buildNotSimulcastLayers({trackSettings:e.getSettings(),trackType:t});this.logger.info(`New encodings params were applied for ${t} track: ${JSON.stringify(n)}`),this._setEncodingsParams(i[0],n)}this.__replaceTrack(i[0],e).then((()=>{m.default.StreamManager.get().isLocalVideoRequested&&m.default.StreamManager.get().updateLocalVideo(),this._runReinvite(),n()}))}else n()}))}getTransceivers(){return this.impl.getTransceivers?this.impl.getTransceivers():[]}getRemoteDescription(){return this.impl.remoteDescription&&this.impl.remoteDescription.sdp?this.impl.remoteDescription.sdp:""}_addCustomMedia(e){var t;if(!e||"closed"===this.impl.signalingState)return;let n="video";m.default.StreamManager.get()._getScreenSharing(this._call).forEach((t=>{t.stream.id===e.id&&(n="sharing")}));const r=d.CallManager.get().getEndpointManager(this._call),i=e.getAudioTracks(),s=this._getDefaultDirection();if(i.length)i.forEach((t=>{let n=this.getEmptyTransceiverForKind("audio");n?("inactive"!==n.direction&&"recvonly"!==n.direction||(n.direction=this._getDefaultDirection()),this.impl.addTrack(t,e),this.onRenegotiation()):(n=this.impl.addTransceiver(t,{direction:s,streams:[e]}),this.onRenegotiation()),this.updateTransceiver(r,n)}));else if("sharing"!==n){const e=this.impl.addTransceiver("audio",{direction:"recvonly"});this.onRenegotiation(),this.updateTransceiver(r,e)}const o=e.getVideoTracks();if(o.length)o.forEach((t=>{this._addVideoTransceiver(t,e,n)}));else{if(!this._call.settings.isConference&&this.impl.getTransceivers().filter((e=>"video"===e.receiver.track.kind)).length)return;if(this._call.settings.isAudio)return;const i={direction:"recvonly",streams:[e]};this.isSimulcast()?i.sendEncodings=v.Utils.buildSimulcastLayers({trackSettings:null,trackType:n,profileName:null===(t=this._call)||void 0===t?void 0:t.settings.simulcastProfileName}):(i.sendEncodings=v.Utils.buildNotSimulcastLayers({trackSettings:null,trackType:n}),this.logger.info(`New encodings params were applied for ${n} track: ${JSON.stringify(i.sendEncodings)}`));const a=this.impl.addTransceiver("video",i);this.onRenegotiation(),this.updateTransceiver(r,a)}if(!this.dtmfSender&&this._call){const e=a.default.getDTMFSender(this.impl,this._call.id());e&&(this.dtmfSender=e)}setTimeout((()=>{this.updateSenderTransformers(),this.updateSenderTrackTransformers()}),2e3)}getEmptyTransceiverForKind(e){return this._call&&this._call.settings.isConference?this.impl.getTransceivers().find((t=>!(isNaN(Number(t.mid))||"recvonly"!==t.direction&&"inactive"!==t.direction||t.receiver.track.kind!==e||t.sender.track))):this.impl.getTransceivers().find((t=>t.receiver.track.kind===e&&!t.sender.track))}updateTransceiver(e,t){e.updateTransceiver(t)}_removeCustomMedia(e){if(!e)return;this.renegotiationInProgress=!0;const t=this.impl.getTransceivers();e.getTracks().forEach((e=>{let n;n=this._call.settings.isConference?t.find((t=>!isNaN(Number(t.mid))&&t.sender.track&&t.sender.track===e)):t.find((t=>t.sender.track&&t.sender.track===e)),n&&(n.direction="inactive",this.__replaceTrack(n,null).then((()=>{this.renegotiationInProgress=!1,this._runReinvite()})))}))}_updateCustomMedia(e){if(!e||"closed"===this.impl.signalingState)return;const t=[];e.getTracks().forEach((e=>{const n=this.impl.getTransceivers().find((t=>t.sender.track&&t.sender.track.kind===e.kind));n&&t.push(this.__replaceTrack(n,e))})),t.length&&Promise.all(t).then((()=>{this.updateSenderTrackTransformers(),this._runReinvite()}))}_fixFFSoundBug(){"firefox"===a.default.getWSVendor()&&s.PCFactory.hasTransceivers&&setTimeout((()=>{if(this.impl.getSenders){this.impl.getSenders().forEach((e=>{if(e.replaceTrack){const t=e.track;e.replaceTrack(t)}}))}}),1e3)}getConfiguration(){return this.impl?this.impl.getConfiguration():null}_hold(e){this.onHold=e,this.impl.getTransceivers().forEach((t=>{t.stopped||"stopped"===t.direction||"stopped"===t.currentDirection||(t.direction=e?"sendonly":"sendrecv")})),this._runReinvite()}_getDirections(){let e={};return e.local=h.SDPMuggle.detectDirections(this.impl.localDescription.sdp),e.remote=h.SDPMuggle.detectDirections(this.impl.remoteDescription.sdp),e}_createImpl(e){if(p.Client.getInstance().config()&&p.Client.getInstance().config().experiments&&p.Client.getInstance().config().experiments.relayOnly&&(e=Object.assign(Object.assign({},e),{iceTransportPolicy:"relay"})),p.Client.getInstance().isInsertableStreamsSupported()&&(this.logger.warning("encodedInsertableStreams is enabled"),e=Object.assign(Object.assign({},e),{encodedInsertableStreams:!0})),this.mode===i.PeerConnectionMode.CONFERENCE&&"chrome"===a.default.getWSVendor()){const t={mandatory:{},optional:[]},n=RTCPeerConnection;this.impl=new n(e,t)}else this.impl=new RTCPeerConnection(e);E.registerSource(this.impl,(e=>{if(this._call){const t={};this._call.getEndpoints().forEach((e=>{e.mediaRenderers.forEach((n=>{n.transceivers[0]&&n.transceivers[0].receiver&&n.transceivers[0].receiver.track&&(t[n.transceivers[0].receiver.track.id]={mr:n.id,ep:e.id})}))}));const n={};for(let r in e.inbound)t[r]?(n[t[r].mr]=e.inbound[r],n[t[r].mr].endpoint=t[r].ep):n[r]=e.inbound[r];e.inbound=n,this._call.dispatchEvent({name:u.CallEvents.CallStatsReceived,stats:e})}})),this.impl.getTransceivers&&"firefox"===a.default.getWSVendor()&&(s.PCFactory.hasTransceivers=!0),this.impl.addEventListener("track",(e=>this.onAddTrack(e))),this.impl.onicecandidate=e=>{this.onICECandidate(e.candidate)},this.renegotiationInProgress=!1,this.impl.onsignalingstatechange=e=>this.onSignalingStateChange(),this.impl.oniceconnectionstatechange=e=>this.onConnectionChange(),this.impl.onconnectionstatechange=e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"onconnectionstatechange",description:this.impl.connectionState})},this.impl.onicegatheringstatechange=e=>{this._call&&this._call.dispatchEvent({name:"SDP",origin:"onicegatheringstatechange",description:this.impl.iceGatheringState})},this.iceRole=M.controlling,this._remoteStreams=[],this.banReinviteAnswer=!1,this._call=d.CallManager.get().calls[this.id],void 0!==this._call?this.onHold=!this._call.active():this.onHold=!1,this.needTransportRestart=!1,"_default"!==this.id&&d.CallManager.get().calls[this.id]&&(this.reInviteQ=new f.ReInviteQ(d.CallManager.get().calls[this.id],this._canReInvite))}onSignalingStateChange(){this._call&&this._call.dispatchEvent({name:"SDP",origin:"onsignalingstatechange",description:this.impl.signalingState}),this.logger.info("Signal state changed to "+this.impl.signalingState+" for PC: "+this.id),"stable"===this.impl.signalingState&&(this.reInviteQ&&this.reInviteQ.runNext(),this._addIceCandidatesFromQueue())}onConnectionChange(){this.logger.info(`PCS: ${this.impl.connectionState} ${this.impl.iceConnectionState}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"oniceconnectionstatechange",description:this.impl.iceConnectionState}),"failed"!==this.impl.iceConnectionState&&"disconnected"!==this.impl.iceConnectionState||d.CallManager.get().icerestart(),"closed"===this.impl.connectionState&&this._call&&_.get().remCallStream(this._call),"completed"===this.impl.iceConnectionState&&void 0!==this._call&&(this._call.dispatchEvent({name:"ICECompleted",call:this._call}),clearTimeout(this.iceTimer)),"completed"!==this.impl.iceConnectionState&&"connected"!==this.impl.iceConnectionState||(this.iceTimer&&clearTimeout(this.iceTimer),this.iceTimer=null,this.reInviteQ&&this.reInviteQ.runNext())}onRenegotiation(){if(this._call&&this._call.dispatchEvent({name:"SDP",origin:"negotiationneeded",description:"negotiationneeded"}),void 0!==this.impl)if("disconnected"!==this.impl.connectionState&&"failed"!==this.impl.connectionState){if(null!==this.impl.localDescription)return"connected"!==this.impl.iceConnectionState&&"completed"!==this.impl.iceConnectionState?(this.logger.info("Renegotiation requested while ice state is "+this.impl.iceConnectionState+". Postponing"),void setTimeout(this.onRenegotiation,100)):void(this.renegotiationInProgress?this.logger.info("Renegotiation in progress. Queueing"):(this.logger.info("Renegotiation started"),this._runReinvite()));this.logger.info("Renegotiation needed, but no local SD. Skipping")}else this.logger.info("Renegotiation requested on closed PeerConnection")}getReceiveOptions(){return{offerToReceiveAudio:!this.onHold,offerToReceiveVideo:this.videoEnabled.receiveVideo&&!this.onHold,voiceActivityDetection:!0}}onICECandidate(e){e&&""!==e.candidate?this.sendLocalCandidateToPeer("a="+e.candidate,e.sdpMLineIndex):this.logger.info("End of candidates")}onAddTrack(e){if(this._call){const t=d.CallManager.get().getEndpointManager(this._call);this._call.settings.isConference||"inactive"!==e.transceiver.direction||(e.transceiver.direction="recvonly"),this.updateTransceiver(t,e.transceiver)}}_runReinvite(e=!1){if(!1===this.renegotiationInProgress){this.renegotiationInProgress=!0;let t={};!a.default.isIphone()&&(this._call.settings.isConference||this.impl.getTransceivers&&"firefox"===a.default.getWSVendor())||(t=this.getReceiveOptions()),e&&(t.iceRestart=!0),this.logger.trace(JSON.stringify(t)),this.updateHoldState(),this.resetEncodings().then((()=>this.impl.createOffer(t))).then((e=>(this.logger.info(`_runReinvite(), created local SDP: \n${e.sdp}`),this.codecRearrange(e)))).then((e=>{let t={type:e.type,sdp:e.sdp};return t=s.PCFactory.get().addBandwidthParams(t),t=h.SDPMuggle.removeTelephoneEvents(t),t=h.SDPMuggle.removeDoubleOpus(t),t=h.SDPMuggle.removeDoublePT(t),t=h.SDPMuggle.fixVideoRecieve(t,this.videoEnabled.receiveVideo),t=h.SDPMuggle.trimMediaAttr(t),t=this._reduceCodecs(t),t})).then((t=>{this.srcLocalSDP=t.sdp,this.impl.setLocalDescription(t).then((()=>{this.logger.info(`_handleReinvite(), set remote SDP: \n${t.sdp}`),this._call&&this._call.dispatchEvent({name:"SDP",origin:"handleReinviteInProgress",sdp:t.sdp});let n={mids:this.getMidKinds(),iceRestart:e};C.default.callRemoteFunction(l.RemoteFunction.reInvite,this._call.id(),{},t.sdp,n)}))})).catch((e=>{this._call&&(this._call.dispatchEvent({name:"SDP",origin:"_runReinvite",sdp:this.impl.localDescription,description:`offer_reject: Error when renegotiation start ${e.message}`}),this._call._rejectCallPromise(["sendVideo","deviceChange"])),this.logger.error("Error when renegotiation start "+e.message)}))}else this.logger.error("Another renegotiation in progress")}codecRearrange(e){return new Promise(((t,n)=>{let r=d.CallManager.get().calls[this.id];if(void 0!==r){let i=new g.CodecSorter(e.sdp),a=i.getUserCodecList();void 0!==r.rearangeCodecs?r.rearangeCodecs(a,r.settings.incoming).then((n=>{i.setUserCodecList(n),t({type:e.type,sdp:i.getSDP()})}),(e=>{this.logger.error(JSON.stringify(e)),this._call&&this._call.dispatchEvent({name:"SDP",origin:"codecRearrange",sdp:this.impl.localDescription,description:`reject: ${e.message}`}),n(e)})):(i.setUserCodecList(a),this.logger.info("No sdp codecs transformer registered"),t({type:e.type,sdp:i.getSDP()}))}else t(e)}))}__replaceTrack(e,t){return new Promise(((n,r)=>{const i=e.sender.track;a.default.isIpad()&&!t?(this.impl.removeTrack(e.sender),n()):e.sender.replaceTrack(t).then((()=>{!i||t&&i.id===t.id||a.default.isIphone()||a.default.isIpad()||(i.onended=null,i.onmute=null,i.stop()),n()})).catch((t=>{this.logger.warning(`The attempt to replace track for ${e.mid} failed`),r()}))}))}_setEncodingsParams(e,t){if(this.isSimulcast()){let n=e.sender.getParameters();n&&n.encodings&&n.encodings.length>1&&n.encodings.forEach((e=>{let n=t.find((t=>t.rid===e.rid));(null==n?void 0:n.maxBitrate)&&(e.maxBitrate=n.maxBitrate),(null==n?void 0:n.maxFramerate)&&(e.maxFramerate=n.maxFramerate),(null==n?void 0:n.scaleResolutionDownBy)&&(e.scaleResolutionDownBy=n.scaleResolutionDownBy)})),e.sender.setParameters(n)}else{let n=e.sender.getParameters();n&&n.encodings&&n.encodings[0]&&t[0]&&(t[0].maxBitrate&&(n.encodings[0].maxBitrate=t[0].maxBitrate),t[0].maxFramerate&&(n.encodings[0].maxFramerate=t[0].maxFramerate),t[0].scaleResolutionDownBy&&(n.encodings[0].scaleResolutionDownBy=t[0].scaleResolutionDownBy)),e.sender.setParameters(n)}}_getDefaultDirection(){return this._call&&this._call.settings.isConference&&this._call.settings.simulcast?"sendonly":"sendrecv"}_addVideoTransceiver(e,t,n){return new Promise(((r,i)=>{var a,s;const o=d.CallManager.get().getEndpointManager(this._call),c={direction:this._getDefaultDirection(),streams:[t]};let l=this.getEmptyTransceiverForKind("video");const g=e.getSettings();if(l){if("inactive"!==l.direction&&"recvonly"!==l.direction||(l.direction=this._getDefaultDirection()),this.isSimulcast()){const e=v.Utils.buildSimulcastLayers({trackSettings:g,trackType:n,profileName:null===(a=this._call)||void 0===a?void 0:a.settings.simulcastProfileName});this._setEncodingsParams(l,e)}l.sender.replaceTrack(e).then((()=>{this.updateTransceiver(o,l),this.onRenegotiation(),r()}))}else{if(this.isSimulcast())c.sendEncodings=v.Utils.buildSimulcastLayers({trackSettings:g,trackType:n,profileName:null===(s=this._call)||void 0===s?void 0:s.settings.simulcastProfileName});else{const t=e.getSettings();c.sendEncodings=v.Utils.buildNotSimulcastLayers({trackSettings:t,trackType:n}),this.logger.info(`New encodings params were applied for ${n} track: ${JSON.stringify(c.sendEncodings)}`)}l=this.impl.addTransceiver(e,c),this.onRenegotiation(),this.updateTransceiver(o,l),r()}}))}_reduceCodecs(e){const t=[{name:"H264",params:{"profile-level-id":"42e0"}},{name:"VP8"},{name:"red",optional:!0},{name:"ulpfec",optional:!0}],n=[{name:"telephone-event/8000"},{name:"opus"}],r=p.Client.getInstance().limitVCodecs||t,i=p.Client.getInstance().limitACodecs||n;if(p.Client.getInstance().limitVCodecs||p.Client.getInstance().limitACodecs){const t=h.SDPMuggle.reduceCodecs(e,{video:r,audio:i}).sdp;return this.logger.info(`_reduceCodecs(), SDP after codec was reduced: \n${t.sdp}`),t}if(!this._call.settings.isConference)return e;const a=h.SDPMuggle.reduceCodecs(e,{audio:n,video:t}).sdp;return this.logger.info(`_reduceCodecs(), SDP after codec was reduced: \n${a.sdp}`),a}isSimulcast(){return this._call&&!a.default.isIphone()&&this._call.settings.isConference&&this._call.settings.simulcast}updateSenderTransformers(){p.Client.getInstance().isInsertableStreamsSupported()&&this._call&&this.impl.getTransceivers().forEach((e=>{var t;if(null===(t=e.sender)||void 0===t?void 0:t.track){let t;this._TransceiverEncoderMap.has(e)?t=this._TransceiverEncoderMap.get(e):(t=e.sender.createEncodedStreams(),this._TransceiverEncoderMap.set(e,t));const n="audio"===e.sender.track.kind?this._call.audioSenderTransform:this._call.videoSenderTransform;t.readable.pipeThrough(n).pipeTo(t.writable)}}))}updateSenderTrackTransformers(){if(!p.Client.getInstance().isMediaTrackInsertableStreamSupported()||!this._call)return;let e=[];e=m.default.StreamManager.get()._getScreenSharing(this._call)||[];const t=[];e.forEach((e=>e.stream.getTracks().forEach((e=>t.push(e.id))))),this.impl.getTransceivers().forEach((async e=>{var n;if((null===(n=e.sender)||void 0===n?void 0:n.track)&&!t.includes(e.sender.track.id)){let t;const n=e.sender.track;"audio"===n.kind&&"function"==typeof this._call.audioMediaTrackTransform?t=await this._call.audioMediaTrackTransform(n):"video"===n.kind&&"function"==typeof this._call.videoMediaTrackTransform&&(t=await this._call.videoMediaTrackTransform(n)),t&&e.sender.replaceTrack(t)}}))}manageLayers(e){const t=this.impl.getTransceivers().filter((e=>-1!==e.currentDirection.indexOf("send"))).filter((e=>"video"===e.sender.track.kind));t.length&&this.isSimulcast()&&t.forEach((t=>{const n=t.sender.getParameters();n&&n.encodings&&n.encodings.length>1&&(n.encodings=n.encodings.map((t=>(t.rid&&t.maxBitrate&&(t.active=e.includes(t.rid)),t))));try{t.sender.setParameters(n)}catch(e){this.logger.error("Can't update simulcast parameters")}}))}async resetEncodings(){var e;const t=this.impl.getTransceivers();for(let n of t)if(!isNaN(Number(n.mid))&&"audio"!==(null===(e=n.receiver.track)||void 0===e?void 0:e.kind)&&"inactive"!==n.direction&&"stopped"!==n.direction&&(this.logger.info(`Reset simulcast layers for mid=${n.mid}`),"null"!==n.mid)){const e=n.sender.getParameters();e&&e.encodings&&(e.encodings=e.encodings.map((e=>(e.active=!0,e))),await n.sender.setParameters(e))}}}r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_getLocalOfferRegular",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"updateHoldState",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_processRemoteAnswer",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_getLocalOffer",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_getLocalOfferFF",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_getLocalAnswer",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_setRemoteDescription",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_handleReinvite",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_close",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_addRemoteCandidate",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"setConfiguration",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_sendDTMF",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_hdnFRSPrep",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_hdnFRS",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"hasLocalAudio",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"enableVideo",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_replaceSharingToVideo",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_addCustomMedia",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_removeCustomMedia",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_updateCustomMedia",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_fixFFSoundBug",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"getConfiguration",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_hold",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_createImpl",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"onSignalingStateChange",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"onConnectionChange",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"onRenegotiation",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"getReceiveOptions",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"onICECandidate",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"onAddTrack",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"codecRearrange",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_setEncodingsParams",null),r([o.LogManager.d_trace(o.LogCategory.RTC)],R.prototype,"_reduceCodecs",null),t.TransreceiverPC=R},6278:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.ConfSignalingRemoteFunctions=t.ConfSignalingRemoteEvents=t.ConfSignaling=t.ConfSignalingState=void 0;const i=n(1150),a=n(2282),s=n(8597);var o;!function(e){e[e.CONNECTING=0]="CONNECTING",e[e.CONNECTED=1]="CONNECTED",e[e.CLOSED=2]="CLOSED"}(o=t.ConfSignalingState||(t.ConfSignalingState={}));class c{constructor(e){this.call=e,this.reconnectionAttempts=10,this.logger=i.LogManager.get().createLogger(i.LogCategory.SIGNALING,this._traceName()),this.currentState=o.CONNECTING,e.sysOn(a.CallEvents.Connected,(t=>{e.sysOn(a.CallEvents.MessageReceived,(e=>{try{let t=JSON.parse(e.text);"vi/upgrade"===t.event&&(this.rand=t.rand,this.connectTo(t.url))}catch(e){this.logger.warning("Can't parse JSON data: "+e.text)}})),e.sendMessage("vi/upgrade")}))}_traceName(){return"ConfSignaling"}connectTo(e){this.lastWSUrl=e,this.ws=new WebSocket(e),this.ws.onopen=e=>this.onWSConnected(),this.ws.onclose=e=>this.onWSClosed(e),this.ws.onerror=e=>this.onWSError(e),this.ws.onmessage=e=>this.onWSData(e.data)}onWSConnected(){this.connectingTimer=setTimeout((()=>{this.ws.close()}),2e3),this.ws.send(this.rand)}onWSClosed(e){this.ws&&(this.ws.close(),this.ws=void 0),this.currentState=o.CLOSED,e.wasClean||this.reconnect()}reconnect(){this.reconnectionAttempts>0&&(this.reconnectionAttempts--,this.connectTo(this.lastWSUrl))}onWSError(e){this.ws.close(),this.ws=void 0,this.currentState=o.CLOSED,this.logger.warning("Error in onConfSignalingConnectionFailed callback: "+e)}onWSData(e){let t;try{switch(t=JSON.parse(e),t.name){case"vad":this.call.getEndpoints().forEach((e=>{if(e.id===t.endpoint){let n=s.EndpointEvents.VoiceEnd;t.enabled&&(n=s.EndpointEvents.VoiceStart),e.dispatchEvent({name:n,call:this.call,endpoint:e})}}));break;case"hello":clearInterval(this.connectingTimer),this.reconnectionAttempts=10,this.currentState=o.CONNECTED;break;default:this.logger.warning("Unknown command: "+t.name)}}catch(t){this.logger.warning("Can't parse JSON data: "+e)}}runFunction(e,t){this.ws.send(JSON.stringify({name:e,payload:t}))}}r([i.LogManager.d_trace(i.LogCategory.SIGNALING)],c.prototype,"connectTo",null),r([i.LogManager.d_trace(i.LogCategory.SIGNALING)],c.prototype,"onWSConnected",null),r([i.LogManager.d_trace(i.LogCategory.SIGNALING)],c.prototype,"onWSClosed",null),r([i.LogManager.d_trace(i.LogCategory.SIGNALING)],c.prototype,"reconnect",null),r([i.LogManager.d_trace(i.LogCategory.SIGNALING)],c.prototype,"onWSError",null),r([i.LogManager.d_trace(i.LogCategory.SIGNALING)],c.prototype,"onWSData",null),t.ConfSignaling=c,function(e){e.VAD="vad",e.MUTE="mute",e.MANAGE_ENDPOINTS="manageEndpoints",e.CAP_BITRATE="capBitrate",e.MESSAGE="message"}(t.ConfSignalingRemoteEvents||(t.ConfSignalingRemoteEvents={})),function(e){e.MUTE="mute",e.MANAGE_ENDPOINTS="manageEndpoints",e.MESSAGE="message",e.REQUEST_VIDEO_SIZE="requestVideoSize"}(t.ConfSignalingRemoteFunctions||(t.ConfSignalingRemoteFunctions={}))},8202:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MsgAction=void 0,function(e){e.UNKNOWN="UNKNOWN",e.createConversation="createConversation",e.editConversation="editConversation",e.removeConversation="removeConversation",e.joinConversation="joinConversation",e.leaveConversation="leaveConversation",e.getConversation="getConversation",e.getConversations="getConversations",e.getPublicConversations="getPublicConversations",e.searchConversations="searchConversations",e.removeEmptyConversation="removeEmptyConversation",e.addParticipants="addParticipants",e.editParticipants="editParticipants",e.removeParticipants="removeParticipants",e.getUser="getUser",e.getUsers="getUsers",e.editUser="editUser",e.setStatus="setStatus",e.sendMessage="sendMessage",e.editMessage="editMessage",e.removeMessage="removeMessage",e.typingMessage="typingMessage",e.isRead="isRead",e.subscribe="subscribe",e.unsubscribe="unsubscribe",e.manageNotification="manageNotification",e.getSubscriptionList="getSubscriptionList",e.createBot="createBot",e.removeBot="removeBot",e.retransmitEvents="retransmitEvents"}(t.MsgAction||(t.MsgAction={}))},249:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.MsgEvent=void 0,function(e){e.onError="onError",e.onCreateConversation="onCreateConversation",e.onEditConversation="onEditConversation",e.onRemoveConversation="onRemoveConversation",e.onGetConversation="onGetConversation",e.onGetPublicConversations="onGetPublicConversations",e.onGetUser="onGetUser",e.onEditUser="onEditUser",e.onSetStatus="onSetStatus",e.onSendMessage="onSendMessage",e.onEditMessage="onEditMessage",e.onRemoveMessage="onRemoveMessage",e.isRead="isRead",e.onTyping="onTyping",e.onSubscribe="onSubscribe",e.onUnsubscribe="onUnsubscribe",e.onGetSubscriptionList="onGetSubscriptionList",e.onCreateBot="onCreateBot",e.onRemoveBot="onRemoveBot",e.onRetransmitEvents="onRetransmitEvents"}(t.MsgEvent||(t.MsgEvent={}))},7050:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.MsgSignaling=void 0;const i=n(1150),a=n(249),s=n(3576),o=n(6968),c=n(209),d=n(245);class l extends s.EventTarget{constructor(){if(super(),l.instance)throw new Error("Error - use Client.getMessagingInstance()");this.query=[],setInterval((()=>{this.updateQuery()}),220)}static get(){return l.instance=l.instance||new l,l.instance}capitalize(e){return e.toString()[0].toUpperCase()+e.toString().slice(1)}updateQuery(){if(this.query.length){const e=this.query.splice(0,1);d.default.sendRaw(e[0])}}addEventListener(e,t,n){super.addEventListener(e,t,n)}dispatchMsgEvent(e,t){var n,r;if(null===(n=this.eventListeners)||void 0===n?void 0:n[e]){const n=this.eventListeners[e];for(let e of n)null===(r=e.listener)||void 0===r||r.call(e,null==t?void 0:t.payload,null==t?void 0:t.request_uuid)}}handleWsData(e){if(-1==Object.values(a.MsgEvent).indexOf(e.event))throw new Error("Unknown messaging event "+e.event+" with payload "+JSON.stringify(e.payload));this.dispatchMsgEvent(e.event,e)}sendWsMessage(e,t){const n=["subscribe","unsubscribe","typingMessage","isRead","setStatus"].includes(e)?"CommonNamespace":"IncomingNamespace",r=(new c.default).toString(),i={service:o.MsgService.Chat,event:e,payload:Object.assign(t,{"@type":`type/vox.store.${n}.${{setStatus:"PresenceMessage",isRead:"StatusMessage",typingMessage:"TypingMessage",subscribe:"ManageSubscribes",unsubscribe:"ManageSubscribes",addParticipants:"ManageParticipants",editParticipants:"ManageParticipants",manageNotification:"ManageNotifications",getPublicConversations:"GetConversations",retransmitEvents:"RetransmitRequest"}[e]||this.capitalize(e)}`}),request_uuid:r};return this.query.push(i),r}_traceName(){return"MsgSignaling"}}r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],l.prototype,"handleWsData",null),r([i.LogManager.d_trace(i.LogCategory.MESSAGING)],l.prototype,"sendWsMessage",null),t.MsgSignaling=l},575:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoteEvent=void 0,function(e){e[e.loginFailed="loginFailed"]="loginFailed",e[e.loginSuccessful="loginSuccessful"]="loginSuccessful",e[e.handleError="handleError"]="handleError",e[e.onPCStats="__onPCStats"]="onPCStats",e[e.handleIncomingConnection="handleIncomingConnection"]="handleIncomingConnection",e[e.handleConnectionConnected="handleConnectionConnected"]="handleConnectionConnected",e[e.handleConnectionDisconnected="handleConnectionDisconnected"]="handleConnectionDisconnected",e[e.handleRingOut="handleRingOut"]="handleRingOut",e[e.startEarlyMedia="startEarlyMedia"]="startEarlyMedia",e[e.stopRinging="stopRinging"]="stopRinging",e[e.handleConnectionFailed="handleConnectionFailed"]="handleConnectionFailed",e[e.handleSIPInfo="handleSIPInfo"]="handleSIPInfo",e[e.handleSipEvent="handleSipEvent"]="handleSipEvent",e[e.handleTransferStarted="handleTransferStarted"]="handleTransferStarted",e[e.handleTransferComplete="handleTransferComplete"]="handleTransferComplete",e[e.handleTransferFailed="handleTransferFailed"]="handleTransferFailed",e[e.handleReInvite="handleReInvite"]="handleReInvite",e[e.handleAcceptReinvite="handleAcceptReinvite"]="handleAcceptReinvite",e[e.handleRejectReinvite="handleRejectReinvite"]="handleRejectReinvite",e[e.createPC="__createPC"]="createPC",e[e.destroyPC="__destroyPC"]="destroyPC",e[e.connectionSuccessful="__connectionSuccessful"]="connectionSuccessful",e[e.connectionFailed="__connectionFailed"]="connectionFailed",e[e.createConnection="__createConnection"]="createConnection",e[e.pong="__pong"]="pong",e[e.increaseGain="increaseGain"]="increaseGain",e[e.handlePreFlightCheckResult="handlePreFlightCheckResult"]="handlePreFlightCheckResult",e[e.handleVoicemail="handleVoicemail"]="handleVoicemail",e[e.onCallRemoteFunctionError="onCallRemoteFunctionError"]="onCallRemoteFunctionError",e[e.refreshOauthTokenFailed="refreshOauthTokenFailed"]="refreshOauthTokenFailed",e[e.refreshOauthTokenSuccessful="refreshOauthTokenSuccessful"]="refreshOauthTokenSuccessful",e[e.registerPushTokenResult="registerPushTokenResult"]="registerPushTokenResult",e[e.unregisterPushTokenResult="unregisterPushTokenResult"]="unregisterPushTokenResult",e[e.sipRegisterSuccessful="sipRegisterSuccessful"]="sipRegisterSuccessful",e[e.sipRegisterFailed="sipRegisterFailed"]="sipRegisterFailed",e[e.onACDStatus="onACDStatus"]="onACDStatus",e[e.SQMessagingStatusUpdated="SQMessagingStatusUpdated"]="SQMessagingStatusUpdated",e[e.onSQStatusError="onSQStatusError"]="onSQStatusError",e[e.onICEConfig="onICEConfig"]="onICEConfig",e[e.onICEConfigFailed="onICEConfigFailed"]="onICEConfigFailed"}(t.RemoteEvent||(t.RemoteEvent={}))},4106:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.RemoteFunction=void 0,function(e){e[e.ping="__ping"]="ping",e[e.login="login"]="login",e[e.loginGenerateOneTimeKey="loginGenerateOneTimeKey"]="loginGenerateOneTimeKey",e[e.loginStage2="loginStage2"]="loginStage2",e[e.setOperatorACDStatus="setOperatorACDStatus"]="setOperatorACDStatus",e[e.getOperatorACDStatus="getOperatorACDStatus"]="getOperatorACDStatus",e[e.setOperatorMessagingStatus="setOperatorMessagingStatus"]="setOperatorMessagingStatus",e[e.getOperatorMessagingStatus="getOperatorMessagingStatus"]="getOperatorMessagingStatus",e[e.setDesiredVideoBandwidth="setDesiredVideoBandwidth"]="setDesiredVideoBandwidth",e[e.rejectCall="rejectCall"]="rejectCall",e[e.disconnectCall="disconnectCall"]="disconnectCall",e[e.sendDTMF="sendDTMF"]="sendDTMF",e[e.sendSIPInfo="sendSIPInfo"]="sendSIPInfo",e[e.hold="hold"]="hold",e[e.unhold="unhold"]="unhold",e[e.acceptCall="acceptCall"]="acceptCall",e[e.createCall="createCall"]="createCall",e[e.callConference="callConference"]="callConference",e[e.transferCall="transferCall"]="transferCall",e[e.muteLocal="__muteLocal"]="muteLocal",e[e.reInvite="ReInvite"]="reInvite",e[e.acceptReInvite="AcceptReInvite"]="acceptReInvite",e[e.rejectReInvite="RejectReInvite"]="rejectReInvite",e[e.confirmPC="__confirmPC"]="confirmPC",e[e.addCandidate="__addCandidate"]="addCandidate",e[e.loginUsingOneTimeKey="loginUsingOneTimeKey"]="loginUsingOneTimeKey",e[e.refreshOauthToken="refreshOauthToken"]="refreshOauthToken",e[e.zPromptFinished="promptFinished"]="zPromptFinished",e[e.zStartPreFlightCheck="__startPreFlightCheck"]="zStartPreFlightCheck",e[e.registerPushToken="registerPushToken"]="registerPushToken",e[e.unregisterPushToken="unregisterPushToken"]="unregisterPushToken",e[e.pushFeedback="pushFeedback"]="pushFeedback",e[e.refreshIceConfig="refreshIceConfig"]="refreshIceConfig"}(t.RemoteFunction||(t.RemoteFunction={}))},245:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VoxSignalingState=void 0;const r=n(2262),i=n(7050),a=n(3576),s=n(125),o=n(141),c=n(308),d=[];let l=null;class g extends a.EventTarget{}const u=new g;function h(e,t){1===e&&2===t&&d.forEach((e=>e.onSignalingConnected())),3===t&&d.forEach((e=>e.onSignalingConnectionFailed(""))),4===t&&s.Client.getInstance().dispatchEvent({name:o.Events.Reconnecting}),4===e&&2===t&&(s.Client.getInstance().dispatchEvent({name:o.Events.Reconnected}),c.CallManager.get().icerestart()),5===t&&d.forEach((e=>e.onSignalingClosed()))}function p(e){e.service?i.MsgSignaling.get().handleWsData(e):u.eventListeners[e.name]&&u.eventListeners[e.name].forEach((t=>t.listener.apply(null,e.params)))}const f={setRPCHandler:function(e,t){u.addEventListener(e,t)},removeRPCHandler:function(e,t){u.removeEventListener(e,t)},callRemoteFunction:function(e,...t){return l.send({name:e,params:t}),!0},addHandler:function(e){d.push(e)},onConnectionFailedRPC:function(){},currentState:function(){if(!l)return m.IDLE;switch(l.state){case 0:case 3:case 5:default:return m.IDLE;case 1:return m.CONNECTING;case 2:case 4:return m.CONNECTED}},disconnect:async function(){l&&(await l.clear(),l=null)},connect:async function(e,t){if(!l||5===l.state||3===l.state)return l=new r.Connection(e,2,Array.isArray(t)?t:[t]),l.outerMessageHandler=p,l.outerStateHandler=h,await l.connect(),2===l.state||(await l.clear(),l=null,!1)},sendRaw:function(e){return l.send(e)}};var m;!function(e){e[e.IDLE=0]="IDLE",e[e.CONNECTING=1]="CONNECTING",e[e.WSCONNECTED=2]="WSCONNECTED",e[e.CONNECTED=3]="CONNECTED",e[e.CLOSING=4]="CLOSING"}(m=t.VoxSignalingState||(t.VoxSignalingState={})),t.default=f},2262:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s},i=this&&this.__asyncValues||function(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t,n=e[Symbol.asyncIterator];return n?n.call(e):(e="function"==typeof __values?__values(e):e[Symbol.iterator](),t={},r("next"),r("throw"),r("return"),t[Symbol.asyncIterator]=function(){return this},t);function r(n){t[n]=e[n]&&function(t){return new Promise((function(r,i){(function(e,t,n,r){Promise.resolve(r).then((function(t){e({value:t,done:n})}),t)})(r,i,(t=e[n](t)).done,t.value)}))}}};Object.defineProperty(t,"__esModule",{value:!0}),t.Connection=void 0;const a=n(4234),s=n(1783),o=n(5383),c=n(3658),d=n(2071),l=n(9367),g=n(1666),u=n(125),h=n(1150),p=n(5604);class f{constructor(e,t,n){this.logger=h.LogManager.get().createLogger(0,"SIG2"),this.messageHandler=async(e,t)=>{this.logger.info(a.t("INFO_CONN_MESSAGE",t.uuid,e));try{const n=JSON.parse(e);if(!n.type)return void this.logger.error(a.t("ERR_CONN_MESSAGE_FORMAT_TYPE","type"));switch(n.type){case"close":this.validateSeq(n.seq,t)&&await this.processClose(n);break;case"ack":await this.processAck(n);break;case"error":this.awaitingTransportHandler&&(this.destroyTransportSilent(this.awaitingTransportHandler.transport),this.awaitingTransportHandler.resolve(p.CONNECTION_CODE.SERVER_ERROR),this.awaitingTransportHandler=null);break;case"id":await this.setConnectionId(n),await this.sendData({type:"lastrx",seq:this.remoteClock});break;case"lastrx":await this.processLastRtx(n);break;case"msg":this.validateSeq(n.seq,t)&&await this.processMsg(n);break;default:this.logger.error(a.t("ERR_CONN_MESSAGE_FORMAT_TYPE","type"))}}catch(e){this.logger.error(a.t("ERR_CONN_MESSAGE_PARSING_ERR")),console.error(e)}},this.onTransportClose=async(e,t)=>{if(this.logger.info(a.t("INFO_CONN_TRANSPORT_CLOSED",e.uuid,t.reason,t.code.toString())),e.onClose=null,e.messageHandler=null,!this.transportList.has(e))return;const n=Array.from(this.transportList).some((e=>1===e.state||0===e.state));this.transportList.delete(e),n||(this.connectionId?(this.logger.info(a.t("INFO_CONN_RECONNECT_NEEDED")),2===this.state&&(this.setState(4),await this.reconnect()?this.setState(2):this.setState(5))):this.setState(3))},this.state=0,this.config={balancerUrl:"https://balancer.voximplant.com/getNearestHost",acdVersion:e,imVersion:t,servers:Array.from(n)}}validateSeq(e,t){return e===this.remoteClock+1||(this.logger.warning(a.t("INFO_CONN_BALANCER",e.toString(),this.remoteClock.toString(),t.uuid)),t.destroy(g.TransportCloseCodes.WRONG_SEQ,"Wrong seq"),!1)}async setConnectionId(e){this.logger.info(a.t("INFO_CONN_CONNECTION_ID_SET",e.id)),this.connectionId=e.id,this.awaitingTransportHandler&&(this.awaitingTransportHandler.resolve(p.CONNECTION_CODE.CONNECTED),this.awaitingTransportHandler=null)}async processAck(e){const t=Array.from(this.messagePool.keys()).sort()[0];this.logger.trace(a.t("TRACE_CONN_ACK_RECEIVED",e.seq.toString(),this.localClock.toString(),t.toString()));let n=0;for(let r=t;r<=e.seq;r++)this.messagePool.has(r)&&(this.messagePool.delete(r),n++);this.ackTimeout&&(clearTimeout(this.ackTimeout),this.ackTimeout=null),this.logger.trace(a.t("TRACE_CONN_ACK_CLEARED",n.toString()))}async processLastRtx(e){const t=this.localClock-e.seq;let n=0;for(let t=e.seq;t<=this.localClock;t++){const e=this.messagePool.get(t);e&&(await this.sendData(e),n++)}this.logger.trace(a.t("TRACE_CONN_RETRANSMIT",e.seq.toString(),this.localClock.toString(),t.toString(),n.toString()))}async processClose(e){await this.clearRoutine(!1)}async processMsg(e){this.remoteClock=e.seq,this.outerMessageHandler&&this.outerMessageHandler(e.payload),this.sendACK()}transformMsgPayload(e){if(e.payload.service){const t=e.payload;return Object.assign({name:`${t.service}.${t.event}`},e.payload)}if(e.payload.name){const t=e.payload;return Object.assign({name:`GW.${t.name}`},d.hydratePayload(t.name,t.params))}return{name:"UnknownGWMessage",payload:e.payload}}sendACK(){this.sendData({type:"ack",seq:this.remoteClock}).catch((e=>{}))}async send(e){if(1!==this.state&&2!==this.state&&4!==this.state)return void this.logger.warning(a.t("WARN_CONN_WRONG_STATE","send message",u.Client.getInstance().getClientState().toString(),""+this.state));const t=++this.localClock,n={type:"msg",seq:t,payload:e};this.messagePool.set(t,n),this.ackTimeout||2!==this.state||(this.ackTimeout=setTimeout((()=>{this.transportList.forEach((e=>e.destroy(g.TransportCloseCodes.TIMEOUT))),clearTimeout(this.ackTimeout)}),6e3)),await this.sendData(n)}async sendData(e){var t,n;const r=this.transportList.values();try{for(var s,o=i(r);!(s=await o.next()).done;){const t=s.value;this.logger.info(a.t("INFO_CONN_TO_MESSAGE",t.uuid,JSON.stringify(e))),await t.send(JSON.stringify(e))}}catch(e){t={error:e}}finally{try{s&&!s.done&&(n=o.return)&&await n.call(o)}finally{if(t)throw t.error}}}async requestBalancer(){var e,t,r,i;let s="https://balancer.voximplant.com/getNearestHost";(null===(e=this.config)||void 0===e?void 0:e.balancerUrl)&&(0===(null===(t=this.config)||void 0===t?void 0:t.balancerUrl.indexOf("https://"))?s=null===(r=this.config)||void 0===r?void 0:r.balancerUrl:this.logger.warning(a.t("WARN_CONN_WRONG_BALANCER_URL",null===(i=this.config)||void 0===i?void 0:i.balancerUrl))),this.logger.info(a.t("INFO_CONN_BALANCER",s));try{const e=await n.g.fetch(s),t=await e.text();if(200!==e.status)throw new Error(`Response code: ${e.status}`);if(0===t.length)throw new Error("Response body is empty");return t.split(";")}catch(e){console.error(e),this.logger.error(a.t("ERR_CONN_WRONG_BALANCER_RESPONSE",e.message,s))}return[]}makeConnectionURL(e){var t,r;let i="nodejs";const a=n.g.navigator;return(null==a?void 0:a.mozGetUserMedia)?i="firefox":(null==a?void 0:a.webkitGetUserMedia)?i="chrome":a&&(i="safari"),`wss://${e}/platform?version=5&client_version=4.6.0&video=true&ccheck=false&client_platform=${i}&im_version=${(null===(t=this.config)||void 0===t?void 0:t.imVersion)||2}&acd_version=${(null===(r=this.config)||void 0===r?void 0:r.acdVersion)||1}${this.connectionId?"&id="+this.connectionId:""}`}async connect(){var e;if(this.logger.info(a.t("INFO_CONN_START_CONNECTION")),this.state>0)return void this.logger.warning(a.t("WARN_CONN_WRONG_STATE","connect",s.VIConnectionStateStrings[this.state],""+this.state));this.setState(1),this.localClock=0,this.remoteClock=0,this.messagePool=new Map,this.transportList=new Set;let t=null===(e=this.config)||void 0===e?void 0:e.servers;if(t&&t.length&&t[0]||(t=await this.requestBalancer()),0===t.length){const e=a.t("ERR_CONN_FAILED","No gateways to connect");throw this.logger.error(e),this.setState(3),new Error(e)}this.logger.info(a.t("INFO_CONN_CONNECTION_POOL",t.join(", ")));if(await this.firstConnection(t))this.setState(2),this.pingInterval&&clearInterval(this.pingInterval),this.pingInterval=setInterval((()=>this.doPing()),2e3);else{a.t("ERR_CONN_FAILED",a.t("ERR_CONN_CLOUD_IS_UNREACHABLE",t.join(", ")));this.setState(3)}}doPing(){2===this.state&&this.send({name:"__ping"})}async reconnect(){this.logger.info(a.t("INFO_CONN_RECONNECT","1"));let e=await this.connectToServer(this.currentServer);if(console.error(e),e===p.CONNECTION_CODE.CONNECTED)return!0;const t=async()=>await this.connectToServer(this.currentServer),n=c.makePromiseTimeout(t,200),r=c.makePromiseTimeout(t,1e3),i=c.makePromiseTimeout(t,5e3),s=[n,n,r,r,r,i,i,i,i];for(let t=0;t<s.length;t++)if(e!==p.CONNECTION_CODE.CONNECTED)switch(this.logger.info(a.t("INFO_CONN_RECONNECT",(t+2).toString())),e=await s[t](this.currentServer),console.error(e),e){case p.CONNECTION_CODE.NOT_CONNECTED:this.logger.info(a.t("INFO_CONN_RECONNECT_ATTEMPT_FAILED",(t+2).toString()));break;case p.CONNECTION_CODE.SERVER_ERROR:return!1}return e===p.CONNECTION_CODE.CONNECTED}async firstConnection(e){for(const t of e){this.logger.info(a.t("INFO_CONN_CONNECT",t));if(await this.connectToServer(t)===p.CONNECTION_CODE.CONNECTED)return this.logger.info(a.t("INFO_CONN_CONNECT_SUCCESSFUL",t)),this.currentServer=t,!0}return!1}async connectToServer(e){const t=this.makeConnectionURL(e),n=new o.Transport;return await n.connect(t)?(this.transportList.add(n),this.logger.info(a.t("INFO_CONN_TRANSPORT_CONNECTED",n.uuid)),n.messageHandler=this.messageHandler,n.onClose=this.onTransportClose,await new Promise((e=>{this.awaitingTransportHandler&&(this.destroyTransportSilent(this.awaitingTransportHandler.transport),this.awaitingTransportHandler.resolve(p.CONNECTION_CODE.NOT_CONNECTED)),this.awaitingTransportHandler={resolve:e,transport:n}}))):(n.destroy(g.TransportCloseCodes.NOT_CONNECTED),1)}async clear(){await this.clearRoutine(!0)}async clearRoutine(e){if(0===this.state||3===this.state||5===this.state)return void this.logger.warning(a.t("WARN_CONN_WRONG_STATE","disconnect",s.VIConnectionStateStrings[this.state],""+this.state));this.pingInterval&&clearInterval(this.pingInterval),this.logger.info(a.t("INFO_CONN_CLEAR")),this.setState(5);const t={type:"close",seq:this.localClock++};this.transportList.forEach((n=>{2===n.state&&e&&n.send(JSON.stringify(t)),this.destroyTransportSilent(n)}))}destroyTransportSilent(e){this.transportList.delete(e),e.onClose=null,e.messageHandler=null,e.destroy(g.TransportCloseCodes.CLIENT_ERROR,"Closing by connection"),this.logger.info(a.t("INFO_CONN_TRANSPORT_DESTROY",e.uuid))}setState(e){const t=this.state;this.state=e,this.outerStateHandler&&this.outerStateHandler(t,e)}}r([l.throttleDecorator(5e3)],f.prototype,"sendACK",null),t.Connection=f},5604:(e,t)=>{"use strict";var n;Object.defineProperty(t,"__esModule",{value:!0}),t.CONNECTION_CODE=void 0,function(e){e[e.CONNECTED=0]="CONNECTED",e[e.NOT_CONNECTED=1]="NOT_CONNECTED",e[e.SERVER_ERROR=2]="SERVER_ERROR"}(n||(n={})),t.CONNECTION_CODE=n},1783:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.VIConnectionStateStrings=t.VIConnectionState=void 0;const n={disconnected:0,connecting:1,connected:2,failed:3,reconnecting:4,closed:5};t.VIConnectionState=n;const r=Object.keys(n);t.VIConnectionStateStrings=r},2071:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.dehydratePayload=t.hydratePayload=void 0;const n={loginFailed:["code","extra"],loginSuccessful:["displayName","params"],__onPCStats:["stats"],handleIncomingConnection:["id","headers","sdp","extra"],handleConnectionConnected:["id","headers","sdp","endpointData","scheme"],handleConnectionDisconnected:["id","headers","params"],handleRingOut:["id"],startEarlyMedia:["id","headers","sdp","scheme"],stopRinging:["id"],handleConnectionFailed:["id","code","reason","headers"],handleSIPInfo:["id","type","subType","body","headers"],handleSipEvent:["id"],handleTransferStarted:["id"],handleTransferComplete:["id"],handleTransferFailed:["id"],handleReInvite:["id","headers","sdp","scheme"],handleAcceptReinvite:["id","headers","sdp"],handleRejectReinvite:["id","headers","sdp"],__createPC:["id","sdp"],__destroyPC:["id"],__connectionSuccessful:["token"],__connectionFailed:[],__createConnection:["token"],__pong:[],increaseGain:[],handlePreFlightCheckResult:["a","b","c"],handleVoicemail:["event"],refreshOauthTokenFailed:["code"],refreshOauthTokenSuccessful:["oauth"],registerPushTokenResult:["result"],unregisterPushTokenResult:["result"],sipRegisterSuccessful:["id","sipUri"],sipRegisterFailed:["id","sipUri","status","reason"],onACDStatus:["id","status","uuid","description"],SQMessagingStatusUpdated:["id","status","uuid","description"],onSQStatusError:["id","uuid","code","description"],onICEConfig:["id","config"],onICEConfigFailed:["id"]},r={__ping:[],login:["username","password"],loginGenerateOneTimeKey:[],setOperatorACDStatus:[],getOperatorACDStatus:[],setOperatorMessagingStatus:[],getOperatorMessagingStatus:[],setDesiredVideoBandwidth:[],rejectCall:[],disconnectCall:[],sendDTMF:[],sendSIPInfo:[],hold:[],unhold:[],acceptCall:[],createCall:[],callConference:[],transferCall:[],__muteLocal:[],ReInvite:[],AcceptReInvite:[],RejectReInvite:[],__confirmPC:[],__addCandidate:[],loginUsingOneTimeKey:[],refreshOauthToken:[],promptFinished:[],registerPushToken:[],unregisterPushToken:[],pushFeedback:[]};t.hydratePayload=function(e,t){const r=n[e];if(!r)throw new Error(`Rule unknown for ${e}`);return t.reduce(((e,t,n)=>(e[r[n]]=t,e)),{})},t.dehydratePayload=function(e,t){const n=r[e];if(!n)throw new Error(`Rule unknown for ${e}`);return n.reduce(((e,n)=>{const r=t[n]||null;return e.push(r),e}),[])}},9367:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.throttleDecorator=void 0,t.throttleDecorator=function(e=200){let t,r;return(i,a,s)=>({value:function(...i){var a;t||(t=Date.now()),n.g.clearTimeout(r),t&&Date.now()-t>=e?(null===(a=s.value)||void 0===a||a.apply(this,i),t=Date.now()):r=n.g.setTimeout((()=>{var n;Date.now()-t>=e&&(null===(n=s.value)||void 0===n||n.apply(this,i),t=Date.now())}),e-(Date.now()-t))}})}},5383:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.Transport=void 0;const r=n(1666),i=n(2957);t.Transport=class{constructor(){this.state=0,this.uuid=i.Utils.generateUUID()}send(e){if(this.ws.readyState===WebSocket.CLOSED||this.ws.readyState===WebSocket.CLOSING)return this.state=4,this.parentOnClose("Client error",r.TransportCloseCodes.CLIENT_ERROR,!1),void this.ws.close(r.TransportCloseCodes.CLIENT_ERROR,"Client error");this.ws.send(e)}destroy(e,t){e!==r.TransportCloseCodes.NOT_CONNECTED?this.ws.close(e,t):this.state=4}async connect(e){return new Promise((t=>{this.state=1,this.ws=new WebSocket(e);const n=e=>{this.state=0,t(!1)};this.ws.addEventListener("open",(()=>{this.state=2,this.ws.removeEventListener("error",n),this.ws.addEventListener("message",(e=>{this.messageHandler&&this.messageHandler(e.data,this)})),this.ws.addEventListener("close",(({reason:e,code:t,wasClean:n})=>{4!==this.state&&(this.state=4,this.parentOnClose(e,t,n))})),this.ws.addEventListener("error",(e=>{this.state=4,this.parentOnClose("Client error",r.TransportCloseCodes.CLIENT_ERROR,!1),this.ws.close(r.TransportCloseCodes.CLIENT_ERROR,"Client error")})),t(!0)})),this.ws.addEventListener("error",n)}))}parentOnClose(e,t,n){this.onClose&&this.onClose(this,{reason:e,code:t,wasClean:n})}}},1666:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.TransportCloseCodes=void 0;t.TransportCloseCodes={NOT_CONNECTED:-1,NORMAL:1e3,WRONG_SEQ:4001,SERVER_ERROR:4002,CLIENT_ERROR:4003,TIMEOUT:4004}},3658:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.makePromiseTimeout=void 0,t.makePromiseTimeout=function(e,t){return function(...n){return new Promise((r=>{setTimeout((async function(){const t=await e.apply(n);r(t)}),t)}))}}},4234:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.t=void 0;const n=Object.assign(Object.assign(Object.assign(Object.assign(Object.assign(Object.assign({},{TEST_REPLACE:"This is a {1} {2} replace"}),{TRACE_CONN_ACK_RECEIVED:"ASK message: received ask {1}, local clock {2}, minimal stored clock {3}",TRACE_CONN_ACK_CLEARED:"ASK message: cleared {1} msg from the pool.",TRACE_CONN_RETRANSMIT:"LastRTX message: requested from {1} current {2} total requested {3} can be sent {4}"}),{INFO_CONN_START_CONNECTION:"Start connecting procedure",INFO_CONN_BALANCER:"Request balancer url {1}",INFO_CONN_TRANSPORT_CONNECTED:"Transport was connected uuid:{1}",INFO_CONN_TRANSPORT_CLOSED:"Transport was closed unexpectedly uuid:{1} reason:{2} code {3}",INFO_CONN_TRANSPORT_DESTROY:"Transport was successful closed uuid:{1}",INFO_CONN_CONNECTION_POOL:"Connecting to Voximplant gateways: {1}",INFO_CONN_CONNECT:"Trying to connect with {1}",INFO_CONN_CONNECT_SUCCESSFUL:"Connection with {1} was successful",INFO_CONN_RECONNECT_NEEDED:"Trying to restore connection",INFO_CONN_RECONNECT:"Attempt to reconnect #{1}",INFO_CONN_RECONNECT_ATTEMPT_FAILED:"Attempt #{1} failed. Timeout.",INFO_CONN_CLEAR:"Start disconnecting procedure.",INFO_CONN_MESSAGE:'New message from Transport uuid: {1}. "{2}"',INFO_CONN_TO_MESSAGE:'New message to Transport uuid: {1}. "{2}"',INFO_CONN_CONNECTION_ID_SET:"Set new connection id: {1}",INFO_TRANSPORT_CLOSED:"Transport {1} was closed with code {2} reason: {3}"}),{WARN_CORE_WRONG_EVENT:"{1} internal event is unhandled. Looks like you forgot to connect some module. If you can't solve this yourself, please contact our technical support at support@voximplant.com.",WARN_CONN_WRONG_BALANCER_URL:'The Balancer URL must be secure. "{1}" not starts with "https://"',WARN_CONN_WRONG_STATE:"You try to {1} in the wrong state {2}({3})",WARN_CONN_WRONG_SEQ:"Received seq={1}, last seq={2}. Transport {3} will terminated.",WARN_TRANSPORT_NO_HANDLER:"Transport {1} has no message handler. Message was dropped.",WARN_TRANSPORT_NO_CLOSE_HANDLER:"Transport {1} has no close handler."}),{ERR_LOADING_MODULE:"Error loading module: ",ERR_MODULE_CONSTRUCTOR:"The modules field must be array",ERR_CORE_HANDLER_THROW:'Some module throw error while handle the "{1}" event. Error message is "{2}"',ERR_CORE_PRE_HANDLER_THROW:'Some module throw error while pre handle the "{1}" event. Error message is "{2}"',ERR_CORE_POST_HANDLER_THROW:'Some module throw error while post handle the "{1}" event. Error message is "{2}"',ERR_STATE_IS_READONLY:"SDK.state is read only.",ERR_CONFIG_IS_READONLY:"SDK.config is read only.",ERR_AlREADY_CONNECTED:'SDK already connected. Please use "async SDK.disconnect()" at first place.',ERR_NOT_CONNECTED_YET:'SDK not connected yet. Please use "async SDK.connect()" at first place.',ERR_CONN_WRONG_BALANCER_RESPONSE:'Wrong balancer response. "{1}" from "{2}"',ERR_CONN_FAILED:"Connection failed. Reason: {1}",ERR_CONN_CLOUD_IS_UNREACHABLE:"Voximplant cloud is unreachable. List of servers {1}",ERR_CONN_MESSAGE_PARSING_ERR:"Error while parsing message from Transport",ERR_CONN_MESSAGE_FORMAT_TYPE:'Error in message from Transport: "{1}" field not set.',ERR_CONN_CONNECTION_ID_ALREADY_SET:"Connection id already set and can't be updated."}),{THROW_WRONG_ENVIRONMENT:"Wrong environment",THROW_WRONG_MODULES_CONSTRUCTOR:"Modules config must be an array or a function that returns array"});t.t=(e,...t)=>{const i=n[e];return i?r(i,...t):e};const r=(e,...t)=>e.replace(/{(\d+)}/g,(function(e,n){return void 0!==t[n-1]?t[n-1]:e}))},9007:(e,t)=>{"use strict";function n({trackType:e,layerCount:t,minTrackSize:n}){return"video"===e?{bitrateParams:[n>=1080?24e5:18e5,5e5,1e5],scaleDownParams:[1,n/360,n/280],framerateParams:[30,30,15]}:{framerateParams:[30,2===t?30:10,1===t?30:1],scaleDownParams:[1,1,1]}}Object.defineProperty(t,"__esModule",{value:!0}),t.getSimulcastProfile=void 0,t.getSimulcastProfile=function(e){return"b24"===e.profileName?function({trackType:e,layerCount:t,minTrackSize:n}){if("video"===e)return{framerateParams:[25,2===t?25:15,1===t?25:2===t?15:25],bitrateParams:[n>=1080?24e5:18e5,8e5,3e5],scaleDownParams:[1,1,1===t?1:n/320]};return{framerateParams:[30,2===t?30:10,1===t?30:1],scaleDownParams:[1,1,1]}}(e):n(e)}},4893:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.getCollectInterval=t.LOW_BATTERY_COLLECT_INTERVAL=t.BATTERY_COLLECT_INTERVAL=t.DEFAULT_COLLECT_INTERVAL=void 0;t.DEFAULT_COLLECT_INTERVAL=1e3;t.BATTERY_COLLECT_INTERVAL=3e3;t.LOW_BATTERY_COLLECT_INTERVAL=1e4,t.getCollectInterval=async function(){try{const e=navigator.getBattery;if(e){const t=await e();if(!t.charging)return t.level&&t.level<=.3?1e4:3e3}}catch(e){}return 1e3}},8552:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.unregisterPeerConnection=t.registerSource=void 0;const r=n(4893),i=n(7141),a=n(2746),s=n(9258),o=n(171),c=n(5229),d=n(2182),l=n(1954),g=n(1150),u="voximplant_statistics_collectStats",h="voximplant_statistics_collectStats_measure";let p=!1;const f=new Set,m=new WeakMap,v=new WeakMap;let C,_=!1,E=r.DEFAULT_COLLECT_INTERVAL;let S=i.baseStatsStrategy;async function y(){performance.mark(u),r.getCollectInterval().then((e=>{E=e}));let e=0;for(const n of f.values())if("connected"===n.connectionState){e++;const r=await n.getStats(),u=(t=r,c.checkBlink(t,p)?o.blinkStatsStrategy:l.checkWebkit(t,p)?s.webkitStatsStrategy:d.checkGecko(t,p)?a.geckoStatsStrategy:i.baseStatsStrategy);u.name!==S.name&&(g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,`Stats strategy changed from ${S.name} to ${u.name}`),S=u);const h=v.get(n),f=S.process(r,h);v.set(n,JSON.parse(JSON.stringify(f)));const C=m.get(n);C&&C(f)}var t;performance.measure(h,u);const n=performance.getEntriesByName(h);g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,`Collected stats for ${e} of ${f.size}. Time: ${n[0].duration}`),performance.clearMarks(u),performance.clearMeasures(h),0===f.size&&(_=!1,clearInterval(C))}function M(e){f.delete(e),g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,"Statics source was removed "),0===f.size&&(g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,"Statics interval was stopped"),_=!1)}t.unregisterPeerConnection=M,t.registerSource=function(e,t,n){g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,"Add a new statistic source"),n&&n.addEventListener("abort",(function(){g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,"Abort statistic source"),M(e)})),m.set(e,t),function(e){f.add(e),g.LogManager.get().writeMessage(g.LogCategory.RTC,"Stat2",g.LogLevel.INFO,"Statics source was added "),_||(_=!0,C=setInterval(y,E))}(e)}},6665:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.registerSource=void 0;const r=n(8552);Object.defineProperty(t,"registerSource",{enumerable:!0,get:function(){return r.registerSource}})},7141:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.baseStatsStrategy=void 0;const n={process:function(e){return{connection:{timestamp:0,availableOutgoingBitrate:0,bytesReceived:0,bytesSent:0,rtt:0,localPort:0,localProtocol:"udp",localType:"relay",remotePort:0,remoteProtocol:"tcp",remoteType:"relay"},inbound:{},outbound:{}}},name:"rfc"};t.baseStatsStrategy=n},171:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.blinkStatsStrategy=void 0;const r=n(3236);const i={process:function(e,t){const[n,i]=r.utils.formatStats(e),a={},s={};let o={};return n.forEach((e=>{var n,c;switch(e.type){case"outbound-rtp":{const a=i.get(e.remoteId),o=i.get(e.codecId),d=i.get(e.trackId);if(!d)return;const l=i.get(d.mediaSourceId),g=l.trackIdentifier,u=e.rid?null===(n=null==t?void 0:t.outbound[g])||void 0===n?void 0:n.find((t=>t.rid===e.rid)):null===(c=null==t?void 0:t.outbound[g])||void 0===c?void 0:c[0];let h=0;u&&(h=r.utils.calculateBitrate(e.bytesSent,u.bytesSent,e.timestamp,u.timestamp));const p={bytesSent:e.bytesSent,packetsSent:e.packetsSent,rid:e.rid,jitter:0,rtt:0,totalRtt:0,packetsLost:0,loss:0,codec:o.mimeType,pt:o.payloadType,timestamp:e.timestamp,bitrate:h};switch(a&&(p.jitter=a.jitter,p.rtt=a.roundTripTime,p.totalRtt=a.totalRoundTripTime||a.roundTripTime,p.packetsLost=a.packetsLost,p.loss=a.packetsLost/(e.packetsSent+a.packetsLost)),e.kind){case"audio":{const e=l;p.kind="audio",p.audioLevel=e.audioLevel||0,p.totalAudioEnergy=e.totalAudioEnergy||0;break}case"video":{const t=l;p.kind="video",p.baseWidth=t.width,p.baseHeight=t.height,p.width=e.frameWidth||0,p.height=e.frameHeight||0,p.framesPerSecond=e.framesPerSecond||0,p.baseFramesPerSecond=t.framesPerSecond,p.qualityLimitationReason=e.qualityLimitationReason,p.qualityLimitationResolutionChanges=e.qualityLimitationResolutionChanges,p.firCount=e.firCount,p.pliCount=e.pliCount,p.nackCount=e.nackCount,p.qpSum=e.qpSum,p.framesEncoded=e.framesEncoded,p.keyFramesEncoded=e.keyFramesEncoded;break}}s[g]||(s[g]=[]),s[g].push(p);break}case"inbound-rtp":{const n=i.get(e.trackId);if(!n)return;const s=n.trackIdentifier,o=null==t?void 0:t.inbound[s];let c=0;switch(o&&(c=r.utils.calculateBitrate(e.bytesReceived,o.bytesReceived,e.timestamp,o.timestamp)),a[s]={timestamp:e.timestamp,kind:n.kind,bytesReceived:e.bytesReceived||0,packetsReceived:e.packetsReceived||0,packetsLost:e.packetsLost||0,loss:e.packetsLost/(e.packetsReceived+e.packetsLost),jitter:e.jitter||0,bitrate:c},n.kind){case"audio":a[s]=Object.assign(Object.assign({},a[s]),{audioLevel:n.audioLevel||0,totalAudioEnergy:n.totalAudioEnergy||0,totalSamplesReceived:n.totalSamplesReceived||0,totalSamplesDuration:n.totalSamplesDuration||0,insertedSamplesForDeceleration:n.insertedSamplesForDeceleration||0,silentConcealedSamples:n.silentConcealedSamples||0});break;case"video":{let t=0;if(o&&o.framesReceived){const r=o.framesReceived||n.framesReceived;t=(n.framesReceived-r)/(e.timestamp-o.timestamp)*1e3|0}a[s]=Object.assign(Object.assign({},a[s]),{height:n.frameHeight||0,width:n.frameWidth||0,framesReceived:n.framesReceived||0,framesDecoded:n.framesDecoded||0,framesDropped:n.framesDropped||0,framesPerSecond:t});break}}break}case"candidate-pair":{if("succeeded"!==e.state||!e.nominated)return;const t=i.get(e.remoteCandidateId),n=i.get(e.localCandidateId);if(!t||!n)return;const r=t.candidateType,a=t.ip||t.address,s=t.protocol,c=t.port,d=n.candidateType,l=n.ip||n.address,g=n.protocol,u=n.port,h=e.totalRoundTripTime,p=e.currentRoundTripTime,{bytesSent:f,bytesReceived:m,availableOutgoingBitrate:v,timestamp:C}=e;o={timestamp:C,remoteType:r,remoteIp:a,remoteProtocol:s,remotePort:c,localType:d,localIp:l,localProtocol:g,localPort:u,bytesSent:f,bytesReceived:m,availableOutgoingBitrate:v,rtt:h,currentRtt:p};break}}})),{connection:o,outbound:s,inbound:a}},name:"blink"};t.blinkStatsStrategy=i},5229:(e,t)=>{"use strict";function n(e){return void 0!==e.address&&void 0!==e.isRemote||void 0!==e.ip&&void 0!==e.isRemote}Object.defineProperty(t,"__esModule",{value:!0}),t.checkBlink=void 0,t.checkBlink=function(e,t=!1){let r=!0,i=!1;return e.forEach((e=>{if(r){switch(e.type){case"peer-connection":i=!0;break;case"media-source":r="audio"===(a=e).kind?void 0!==a.audioLevel&&void 0!==a.totalAudioEnergy&&void 0!==a.totalSamplesDuration:"video"===a.kind&&void 0!==a.width&&void 0!==a.height&&void 0!==a.framesPerSecond;break;case"local-candidate":case"remote-candidate":r=n(e);break;case"transport":r=function(e){return void 0!==e.packetsSent&&void 0!==e.packetsReceived}(e);break;case"inbound-rtp":r=function(e){return"audio"===e.kind||"video"===e.kind&&void 0!==e.decoderImplementation}(e);break;case"outbound-rtp":r=function(e){return"audio"===e.kind||"video"===e.kind&&void 0!==e.qualityLimitationReason&&void 0!==e.encoderImplementation}(e);break;case"track":r=function(e){return void 0!==e.kind}(e)}t&&console.error("After "+e.type,r)}var a})),i||(r=!1),t&&console.error("Blink detection result is:",r),r}},2182:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.checkGecko=void 0,t.checkGecko=function(e,t=!1){let n=!0;return e.forEach((e=>{if(n){switch(e.type){case"candidate-pair":n=void 0!==(r=e).lastPacketReceivedTimestamp&&void 0!==r.lastPacketSentTimestamp;break;case"inbound-rtp":n=function(e){return console.error(e),"video"!==e.kind||void 0!==e.discardedPackets&&void 0!==e.bitrateMean&&void 0!==e.bitrateStdDev&&void 0!==e.framerateMean&&void 0!==e.framerateStdDev&&void 0!==e.framesDecoded}(e)}t&&console.error("After "+e.type,n)}var r})),t&&console.error("Gecko detection result is:",n),n}},1954:(e,t)=>{"use strict";function n(e){return void 0!==e.deleted}Object.defineProperty(t,"__esModule",{value:!0}),t.checkWebkit=void 0,t.checkWebkit=function(e,t=!1){let r=!0,i=!1;return e.forEach((e=>{if(r){switch(e.type){case"peer-connection":i=!0;break;case"local-candidate":case"remote-candidate":r=n(e);break;case"track":r=function(e){if(e.framesReceived){const t=e;return void 0!==t.freezeCount&&void 0!==t.pauseCount&&void 0!==t.sumOfSquaredFramesDuration&&void 0!==t.totalFramesDuration&&void 0!==t.totalFreezesDuration&&void 0!==t.totalPausesDuration}return!0}(e)}t&&console.error("After "+e.type,r)}})),i||(r=!1),r}},2746:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.geckoStatsStrategy=void 0;const r=n(3236);const i={process:function(e,t){const[n,i]=r.utils.formatStats(e),a={},s={};let o={};return n.forEach((e=>{switch(e.type){case"outbound-rtp":{const t=i.get(e.remoteId),n=e.ssrc,r=t.packetsLost/(t.packetsLost+t.packetsReceived),a={kind:e.kind,bytesSent:e.bytesSent,packetsSent:e.packetsSent,jitter:0,rtt:t.roundTripTime||0,packetsLost:t.packetsLost,loss:r,timestamp:e.timestamp,bitrate:0};"video"===e.kind&&(a.framesPerSecond=e.framerateMean,a.bitrate=e.bitrateMean,a.firCount=e.firCount,a.pliCount=e.pliCount,a.nackCount=e.nackCount),s[n]=[a];break}case"inbound-rtp":{const n=e.ssrc,i=null==t?void 0:t.inbound[n];let s=0;if(i&&(s=r.utils.calculateBitrate(e.bytesReceived,i.bytesReceived,e.timestamp,i.timestamp)),a[n]={timestamp:e.timestamp,kind:e.kind,bytesReceived:e.bytesReceived||0,packetsReceived:e.packetsReceived||0,packetsLost:e.packetsLost||0,loss:e.packetsLost/(e.packetsReceived+e.packetsLost),jitter:e.jitter||0,bitrate:s},"video"===e.kind)a[n]=Object.assign(Object.assign({},a[n]),{framesDecoded:e.framesDecoded||0,framesPerSecond:e.framerateMean,bitrate:e.bitrateMean});break}case"candidate-pair":{if("succeeded"!==e.state||!e.nominated)return;const t=i.get(e.remoteCandidateId),n=i.get(e.localCandidateId);if(!t||!n)return;const r=t.candidateType,a=t.ip||t.address,s=t.protocol,c=t.port,d=n.candidateType,l=n.ip||n.address,g=n.protocol,u=n.port,{bytesSent:h,bytesReceived:p,timestamp:f}=e;o={timestamp:f,remoteType:r,remoteIp:a,remoteProtocol:s,remotePort:c,localType:d,localIp:l,localProtocol:g,localPort:u,bytesSent:h,bytesReceived:p};break}}})),{connection:o,outbound:s,inbound:a}},name:"gecko"};t.geckoStatsStrategy=i},3236:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.utils=void 0;const n={calculateBitrate:function(e,t,n,r){return(e-t)/(n-r)*8e3},formatStats:function(e){const t=e,n=new Map;return t.forEach((e=>n.set(e.id,e))),[t,n]}};t.utils=n},9258:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.webkitStatsStrategy=void 0;const r=n(3236);const i={process:function(e,t){const[n,i]=r.utils.formatStats(e),a={},s={};let o={};return n.forEach((e=>{switch(e.type){case"outbound-rtp":{const n=i.get(e.remoteId),a=i.get(e.codecId),o=i.get(e.trackId);if(!o)return;const c=o.trackIdentifier,d=e.rid?null==t?void 0:t.outbound[c].find((t=>t.rid===e.rid)):null==t?void 0:t.outbound[c][0];let l=0;d&&(l=r.utils.calculateBitrate(e.bytesSent,d.bytesSent,e.timestamp,d.timestamp));const g={bytesSent:e.bytesSent,packetsSent:e.packetsSent,rid:e.rid,jitter:0,rtt:0,totalRtt:0,packetsLost:0,loss:0,codec:a.mimeType,pt:a.payloadType,timestamp:e.timestamp,bitrate:l};if(n){g.jitter=n.jitter,g.rtt=n.roundTripTime,g.packetsLost=n.packetsLost;const t=n.packetsLost||0;g.loss=t/(e.packetsSent+t)}switch(e.kind){case"audio":g.kind="audio";break;case"video":{const{frameWidth:t,frameHeight:n}=o;g.kind="video",g.baseWidth=t,g.baseHeight=n,g.width=e.frameWidth||0,g.height=e.frameHeight||0,g.framesPerSecond=e.framesPerSecond||0,g.qualityLimitationReason=e.qualityLimitationReason,g.qualityLimitationResolutionChanges=e.qualityLimitationResolutionChanges,g.firCount=e.firCount,g.pliCount=e.pliCount,g.nackCount=e.nackCount,g.qpSum=e.qpSum,g.framesEncoded=e.framesEncoded,g.keyFramesEncoded=e.keyFramesEncoded;break}}s[c]||(s[c]=[]),s[c].push(g);break}case"inbound-rtp":{const n=i.get(e.trackId);if(!n)return;const s=n.trackIdentifier,o=null==t?void 0:t.inbound[s];let c=0;switch(o&&(c=r.utils.calculateBitrate(e.bytesReceived,o.bytesReceived,e.timestamp,o.timestamp)),a[s]={timestamp:e.timestamp,kind:e.kind,bytesReceived:e.bytesReceived||0,packetsReceived:e.packetsReceived||0,packetsLost:e.packetsLost||0,loss:e.packetsLost/(e.packetsReceived+e.packetsLost),jitter:0,bitrate:c},e.kind){case"audio":{const{audioLevel:t}=n;a[s]=Object.assign(Object.assign({},a[s]),{jitter:e.jitter,audioLevel:t,totalAudioEnergy:e.totalAudioEnergy||0,totalSamplesReceived:e.totalSamplesReceived||0,totalSamplesDuration:e.totalSamplesDuration||0,insertedSamplesForDeceleration:e.insertedSamplesForDeceleration||0,silentConcealedSamples:e.silentConcealedSamples||0});break}case"video":{let t=0;if(o&&o.framesReceived){const n=o.framesReceived||e.framesReceived;t=(e.framesReceived-n)/(e.timestamp-o.timestamp)*1e3|0}const{freezeCount:r,pauseCount:i,totalFramesDuration:c,totalFreezesDuration:d,totalPausesDuration:l}=n;a[s]=Object.assign(Object.assign({},a[s]),{height:e.frameHeight||0,width:e.frameWidth||0,framesReceived:e.framesReceived||0,framesDecoded:e.framesDecoded||0,freezeCount:r,pauseCount:i,totalFramesDuration:c,totalFreezesDuration:d,totalPausesDuration:l,framesPerSecond:t});break}}break}case"candidate-pair":{if("succeeded"!==e.state||!e.nominated)return;const t=i.get(e.remoteCandidateId),n=i.get(e.localCandidateId);if(!t||!n)return;const r=t.candidateType,a=t.protocol,s=t.port,c=n.candidateType,d=n.protocol,l=n.port,g=e.totalRoundTripTime,u=e.currentRoundTripTime,{bytesSent:h,bytesReceived:p,availableOutgoingBitrate:f,timestamp:m}=e;o={timestamp:m,remoteType:r,remoteProtocol:a,remotePort:s,localType:c,localProtocol:d,localPort:l,bytesSent:h,bytesReceived:p,availableOutgoingBitrate:f,rtt:g,currentRtt:u};break}}})),{connection:o,outbound:s,inbound:a}},name:"webkit"};t.webkitStatsStrategy=i},7998:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.OperatorACDStatuses=t.QueueTypes=void 0,function(e){e[e.ACD=1]="ACD",e[e.SmartQueue=2]="SmartQueue",e[e.SmartQueueV1Beta=3]="SmartQueueV1Beta"}(t.QueueTypes||(t.QueueTypes={})),function(e){e[e.Offline="OFFLINE"]="Offline",e[e.Online="ONLINE"]="Online",e[e.Ready="READY"]="Ready",e[e.InService="IN_SERVICE"]="InService",e[e.AfterService="AFTER_SERVICE"]="AfterService",e[e.Timeout="TIMEOUT"]="Timeout",e[e.DND="DND"]="DND",e[e.CustomStatus_1="CUSTOM_1"]="CustomStatus_1",e[e.CustomStatus_2="CUSTOM_2"]="CustomStatus_2",e[e.CustomStatus_3="CUSTOM_3"]="CustomStatus_3",e[e.CustomStatus_4="CUSTOM_4"]="CustomStatus_4",e[e.CustomStatus_5="CUSTOM_5"]="CustomStatus_5",e[e.CustomStatus_6="CUSTOM_6"]="CustomStatus_6",e[e.CustomStatus_7="CUSTOM_7"]="CustomStatus_7",e[e.CustomStatus_8="CUSTOM_8"]="CustomStatus_8",e[e.CustomStatus_9="CUSTOM_9"]="CustomStatus_9",e[e.CustomStatus_10="CUSTOM_10"]="CustomStatus_10"}(t.OperatorACDStatuses||(t.OperatorACDStatuses={}))},3992:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.queueDecorator=t.TaskMutex=void 0;t.TaskMutex=class{constructor(){this.queue=[],this.locked=!1}acquire(){return this.locked?new Promise((e=>this.queue.push(e))):(this.locked=!0,Promise.resolve())}release(){if(this.queue.length)return this.queue.shift()();this.locked=!1}use(e){return this.acquire().then((()=>Promise.resolve().then((()=>e.descriptor.value.apply(e.instance,e.args))).then((e=>(this.release(),e))).catch((e=>{throw this.release(),e}))))}},t.queueDecorator=function(){return(e,t,n)=>({value:function(...e){return this.mutex.use({args:e,descriptor:n,instance:this})}})}},2957:function(e,t,n){"use strict";var r=this&&this.__decorate||function(e,t,n,r){var i,a=arguments.length,s=a<3?t:null===r?r=Object.getOwnPropertyDescriptor(t,n):r;if("object"==typeof Reflect&&"function"==typeof Reflect.decorate)s=Reflect.decorate(e,t,n,r);else for(var o=e.length-1;o>=0;o--)(i=e[o])&&(s=(a<3?i(s):a>3?i(t,n,s):i(t,n))||s);return a>3&&s&&Object.defineProperty(t,n,s),s};Object.defineProperty(t,"__esModule",{value:!0}),t.Utils=void 0;const i=n(1150),a=n(125),s=n(3947),o=n(7272),c=n(6081),d=n(9007);class l{static cadScript(e){return e.split(";").map((function(e){if(0!==e.length){var t=e.match(/\([0-9\/\.,\*\+]*\)$/),n=e.substring(0,t.index),r=t.pop();if(t.length)throw new Error("cadence script should be of the form `%f(%f/%f[,%f/%f])`");if(n="*"===n?1/0:parseFloat(n),isNaN(n))throw new Error("cadence length should be of the form `%f`");return{duration:n,sections:r=r.slice(1,r.length-1).split(",").map((function(e){try{var t=e.split("/");if(t.length>3)throw new Error;return{on:(t=t.map((function(e,t){var n;if(2===t)return e.split("+").map((function(e){var t=parseInt(e,10);if(isNaN(t))throw new Error;return t-1}));if("*"==e&&(n=1/0),n=n||parseFloat(e),isNaN(n))throw new Error;return n})))[0],off:t[1],frequencies:t[2]}}catch(e){throw new Error("cadence segments should be of the form `%f/%f[%d[+%d]]`")}}))}}}))}static freqScript(e){return e.split(",").map((function(e){try{var t=e.split("@"),n=parseInt(t.shift()),r=parseFloat(t.shift());if(t.length)throw Error();return{frequency:n,decibels:r}}catch(e){throw new Error("freqScript pairs are expected to be of the form `%d@%f[,%d@%f]`")}}))}static toneScript(e){var t=e.split(";");return{frequencies:this.freqScript(t.shift()),cadences:this.cadScript(t.join(";"))}}static playToneScript(e,t=!1){if(void 0!==window.AudioContext||void 0!==window.webkitAudioContext){var n=o.default.AudioDeviceManager.get().getAudioContext();if(null===n)return;var r=this.toneScript(e),i=[],a=0,s=function(e){for(var t=0;t<n.sampleRate*e;t++)i.push(0)},c=function(e,t){for(var a=0;a<n.sampleRate*t;a++){for(var s=0,o=0;o<e.length;o++)s+=Math.pow(10,r.frequencies[e[o]].decibels/20)*Math.sin((i.length+a)*(3.14159265359/n.sampleRate)*r.frequencies[e[o]].frequency),a<10&&(s*=a/10),a>n.sampleRate*t-10&&(s*=(n.sampleRate*t-a)/10);i.push(s)}},d=function(e,t){if(t!=1/0)var n=t;else n=t=20;if(0!==e.off&&e.off!=1/0)for(;n>0;){c(e.frequencies,e.on),n-=e.on,s(e.off);n-=e.off;n=parseInt(String(10*n))/10}else c(e.frequencies,t)},l=function(e){e.duration!=1/0?a+=e.duration:a+=20;for(var t=0;t<e.sections.length;t++)d(e.sections[t],e.duration)};this.source=n.createBufferSource();for(var g=0;g<r.cadences.length;g++)r.cadences[g].duration==1/0&&(this.source.loop=!0),l(r.cadences[g]);this.source.connect(n.destination);for(var u=n.createBuffer(1,a*n.sampleRate,n.sampleRate),h=u.getChannelData(0),p=0;p<a*n.sampleRate;p++)h[p]=i[p];i=null,this.source.buffer=u,!0===t&&(this.source.loop=!0),this.source.start(0)}}static stopPlayback(){return void 0!==this.source&&null!==this.source&&(this.source.stop(0),this.source=null,!0)}static getServers(e=!1){return fetch("https://balancer.voximplant.com/getNearestHost").then((e=>e.text()))}static generateUUID(){let e=this._gri,t=this._ha;return t(e(32),8)+"-"+t(e(16),4)+"-"+t(16384|e(12),4)+"-"+t(32768|e(14),4)+"-"+t(e(48),12)}static _gri(e){return e<0?NaN:e<=30?0|Math.random()*(1<<e):e<=53?(0|Math.random()*(1<<30))+(0|Math.random()*(1<<e-30))*(1<<30):NaN}static _ha(e,t){let n=e.toString(16),r=t-n.length,i="0";for(;r>0;r>>>=1,i+=i)1&r&&(n=i+n);return n}static checkCA(){if(!a.Client.getInstance().connected())throw new Error(c.CallError.NOT_CONNECTED_TO_VOXIMPLANT.toString());if(!s.Authenticator.get().authorized())throw new Error(c.CallError.NOT_AUTHORIZED.toString())}static mixObjectToLeft(e,t){for(var n in e)void 0!==t[n]&&(e[n]=t[n]);return e}static strFormat(e,...t){return e.replace(/{(\d+)}/g,(function(e,n){return void 0!==t[n]?t[n]:e}))}_traceName(){return"Utils"}static buildSimulcastLayers({trackSettings:e,trackType:t,profileName:n}){e||(e={width:1920,height:1080});const r=e.width>e.height?e.height:e.width,i=l.getSimulcastLayerCount(r),a=d.getSimulcastProfile({profileName:n,trackType:t,layerCount:i,minTrackSize:r});return l.buildSimulcastBuilderByProfile(i,a)}static getSimulcastLayerCount(e){return e>=720?3:e>=480?2:1}static buildSimulcastBuilderByProfile(e,t){const n=["h","m","l"].slice(3-e),r=[];let i,a,s;t.bitrateParams&&(i=t.bitrateParams.slice(3-e),i[0]=t.bitrateParams[0]),t.scaleDownParams&&(a=t.scaleDownParams.slice(3-e),a[0]=t.scaleDownParams[0]),t.framerateParams&&(s=t.framerateParams.slice(3-e),s[0]=t.framerateParams[0]);for(let t=0;t<e;t++){const e={rid:n[t]};i&&(e.maxBitrate=i[t]),a&&(e.scaleResolutionDownBy=a[t]),s&&(e.maxFramerate=s[t]),r.push(e)}return r}static getDefaultStreamTransformer(){return window.RTCRtpSender&&RTCRtpSender.prototype.createEncodedStreams?new TransformStream({start(){},async transform(e,t){t.enqueue(e)},flush(){}}):void 0}static buildNotSimulcastLayers({trackSettings:e,trackType:t}){var n;e||(e={width:1920,height:1080});const r=null===(n=a.Client.getInstance().limitVCodecs)||void 0===n?void 0:n.filter((e=>"red"!==e.name&&"ulpfec"!==e.name)),i=!(null==r?void 0:r.filter((e=>!("H264"===e.name&&"42e01f"===e.params["profile-level-id"]))).length);let s=1;if("sharing"===t&&i){const t=e.height/720,n=e.width/1280;t>=n&&n>1&&(s=n),n<=t&&t>1&&(s=t)}const o=e.width>e.height?e.height:e.width;return[{maxBitrate:o>=1080?25e5:o>=720?15e5:5e5,maxFramerate:30,scaleResolutionDownBy:s}]}}l.source=null,r([i.LogManager.d_trace(i.LogCategory.UTILS)],l,"cadScript",null),r([i.LogManager.d_trace(i.LogCategory.UTILS)],l,"freqScript",null),r([i.LogManager.d_trace(i.LogCategory.UTILS)],l,"toneScript",null),r([i.LogManager.d_trace(i.LogCategory.UTILS)],l,"playToneScript",null),r([i.LogManager.d_trace(i.LogCategory.UTILS)],l,"stopPlayback",null),r([i.LogManager.d_trace(i.LogCategory.UTILS)],l,"getServers",null),t.Utils=l},9001:function(e,t,n){"use strict";var r=this&&this.__createBinding||(Object.create?function(e,t,n,r){void 0===r&&(r=n),Object.defineProperty(e,r,{enumerable:!0,get:function(){return t[n]}})}:function(e,t,n,r){void 0===r&&(r=n),e[r]=t[n]}),i=this&&this.__exportStar||function(e,t){for(var n in e)"default"===n||Object.prototype.hasOwnProperty.call(t,n)||r(t,e,n)};Object.defineProperty(t,"__esModule",{value:!0}),t.getMessenger=t.version=t.getInstance=t.ClientState=t.LogLevel=t.LogCategory=t.QueueTypes=t.OperatorACDStatuses=t.EndpointEvents=t.Endpoint=t.CallEvents=t.Events=t.Messaging=void 0;const a=n(125),s=n(3947),o=n(6054);var c=n(6054);Object.defineProperty(t,"Messaging",{enumerable:!0,get:function(){return c.Messaging}});var d=n(141);Object.defineProperty(t,"Events",{enumerable:!0,get:function(){return d.Events}});var l=n(2282);Object.defineProperty(t,"CallEvents",{enumerable:!0,get:function(){return l.CallEvents}});var g=n(9144);Object.defineProperty(t,"Endpoint",{enumerable:!0,get:function(){return g.Endpoint}});var u=n(8597);Object.defineProperty(t,"EndpointEvents",{enumerable:!0,get:function(){return u.EndpointEvents}});var h=n(7998);Object.defineProperty(t,"OperatorACDStatuses",{enumerable:!0,get:function(){return h.OperatorACDStatuses}}),Object.defineProperty(t,"QueueTypes",{enumerable:!0,get:function(){return h.QueueTypes}});var p=n(1150);Object.defineProperty(t,"LogCategory",{enumerable:!0,get:function(){return p.LogCategory}}),Object.defineProperty(t,"LogLevel",{enumerable:!0,get:function(){return p.LogLevel}}),Object.defineProperty(t,"ClientState",{enumerable:!0,get:function(){return p.ClientState}}),i(n(7272),t),t.getInstance=function(){return a.Client.getInstance()},t.version=a.Client.getInstance().version,t.getMessenger=function(){if(!s.Authenticator.get().authorized())throw new Error("NOT_AUTHORIZED");return o.default.Messenger.getInstance()}},4758:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0});var n=function(){function e(){this._state=new Int32Array(4),this._buffer=new ArrayBuffer(68),this._buffer8=new Uint8Array(this._buffer,0,68),this._buffer32=new Uint32Array(this._buffer,0,17),this.start()}return e.hashStr=function(e,t){return void 0===t&&(t=!1),this.onePassHasher.start().appendStr(e).end(t)},e.hashAsciiStr=function(e,t){return void 0===t&&(t=!1),this.onePassHasher.start().appendAsciiStr(e).end(t)},e._hex=function(t){var n,r,i,a,s=e.hexChars,o=e.hexOut;for(a=0;a<4;a+=1)for(r=8*a,n=t[a],i=0;i<8;i+=2)o[r+1+i]=s.charAt(15&n),n>>>=4,o[r+0+i]=s.charAt(15&n),n>>>=4;return o.join("")},e._md5cycle=function(e,t){var n=e[0],r=e[1],i=e[2],a=e[3];r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&i|~r&a)+t[0]-680876936|0)<<7|n>>>25)+r|0)&r|~n&i)+t[1]-389564586|0)<<12|a>>>20)+n|0)&n|~a&r)+t[2]+606105819|0)<<17|i>>>15)+a|0)&a|~i&n)+t[3]-1044525330|0)<<22|r>>>10)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&i|~r&a)+t[4]-176418897|0)<<7|n>>>25)+r|0)&r|~n&i)+t[5]+1200080426|0)<<12|a>>>20)+n|0)&n|~a&r)+t[6]-1473231341|0)<<17|i>>>15)+a|0)&a|~i&n)+t[7]-45705983|0)<<22|r>>>10)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&i|~r&a)+t[8]+1770035416|0)<<7|n>>>25)+r|0)&r|~n&i)+t[9]-1958414417|0)<<12|a>>>20)+n|0)&n|~a&r)+t[10]-42063|0)<<17|i>>>15)+a|0)&a|~i&n)+t[11]-1990404162|0)<<22|r>>>10)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&i|~r&a)+t[12]+1804603682|0)<<7|n>>>25)+r|0)&r|~n&i)+t[13]-40341101|0)<<12|a>>>20)+n|0)&n|~a&r)+t[14]-1502002290|0)<<17|i>>>15)+a|0)&a|~i&n)+t[15]+1236535329|0)<<22|r>>>10)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&a|i&~a)+t[1]-165796510|0)<<5|n>>>27)+r|0)&i|r&~i)+t[6]-1069501632|0)<<9|a>>>23)+n|0)&r|n&~r)+t[11]+643717713|0)<<14|i>>>18)+a|0)&n|a&~n)+t[0]-373897302|0)<<20|r>>>12)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&a|i&~a)+t[5]-701558691|0)<<5|n>>>27)+r|0)&i|r&~i)+t[10]+38016083|0)<<9|a>>>23)+n|0)&r|n&~r)+t[15]-660478335|0)<<14|i>>>18)+a|0)&n|a&~n)+t[4]-405537848|0)<<20|r>>>12)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&a|i&~a)+t[9]+568446438|0)<<5|n>>>27)+r|0)&i|r&~i)+t[14]-1019803690|0)<<9|a>>>23)+n|0)&r|n&~r)+t[3]-187363961|0)<<14|i>>>18)+a|0)&n|a&~n)+t[8]+1163531501|0)<<20|r>>>12)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r&a|i&~a)+t[13]-1444681467|0)<<5|n>>>27)+r|0)&i|r&~i)+t[2]-51403784|0)<<9|a>>>23)+n|0)&r|n&~r)+t[7]+1735328473|0)<<14|i>>>18)+a|0)&n|a&~n)+t[12]-1926607734|0)<<20|r>>>12)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r^i^a)+t[5]-378558|0)<<4|n>>>28)+r|0)^r^i)+t[8]-2022574463|0)<<11|a>>>21)+n|0)^n^r)+t[11]+1839030562|0)<<16|i>>>16)+a|0)^a^n)+t[14]-35309556|0)<<23|r>>>9)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r^i^a)+t[1]-1530992060|0)<<4|n>>>28)+r|0)^r^i)+t[4]+1272893353|0)<<11|a>>>21)+n|0)^n^r)+t[7]-155497632|0)<<16|i>>>16)+a|0)^a^n)+t[10]-1094730640|0)<<23|r>>>9)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r^i^a)+t[13]+681279174|0)<<4|n>>>28)+r|0)^r^i)+t[0]-358537222|0)<<11|a>>>21)+n|0)^n^r)+t[3]-722521979|0)<<16|i>>>16)+a|0)^a^n)+t[6]+76029189|0)<<23|r>>>9)+i|0,r=((r+=((i=((i+=((a=((a+=((n=((n+=(r^i^a)+t[9]-640364487|0)<<4|n>>>28)+r|0)^r^i)+t[12]-421815835|0)<<11|a>>>21)+n|0)^n^r)+t[15]+530742520|0)<<16|i>>>16)+a|0)^a^n)+t[2]-995338651|0)<<23|r>>>9)+i|0,r=((r+=((a=((a+=(r^((n=((n+=(i^(r|~a))+t[0]-198630844|0)<<6|n>>>26)+r|0)|~i))+t[7]+1126891415|0)<<10|a>>>22)+n|0)^((i=((i+=(n^(a|~r))+t[14]-1416354905|0)<<15|i>>>17)+a|0)|~n))+t[5]-57434055|0)<<21|r>>>11)+i|0,r=((r+=((a=((a+=(r^((n=((n+=(i^(r|~a))+t[12]+1700485571|0)<<6|n>>>26)+r|0)|~i))+t[3]-1894986606|0)<<10|a>>>22)+n|0)^((i=((i+=(n^(a|~r))+t[10]-1051523|0)<<15|i>>>17)+a|0)|~n))+t[1]-2054922799|0)<<21|r>>>11)+i|0,r=((r+=((a=((a+=(r^((n=((n+=(i^(r|~a))+t[8]+1873313359|0)<<6|n>>>26)+r|0)|~i))+t[15]-30611744|0)<<10|a>>>22)+n|0)^((i=((i+=(n^(a|~r))+t[6]-1560198380|0)<<15|i>>>17)+a|0)|~n))+t[13]+1309151649|0)<<21|r>>>11)+i|0,r=((r+=((a=((a+=(r^((n=((n+=(i^(r|~a))+t[4]-145523070|0)<<6|n>>>26)+r|0)|~i))+t[11]-1120210379|0)<<10|a>>>22)+n|0)^((i=((i+=(n^(a|~r))+t[2]+718787259|0)<<15|i>>>17)+a|0)|~n))+t[9]-343485551|0)<<21|r>>>11)+i|0,e[0]=n+e[0]|0,e[1]=r+e[1]|0,e[2]=i+e[2]|0,e[3]=a+e[3]|0},e.prototype.start=function(){return this._dataLength=0,this._bufferLength=0,this._state.set(e.stateIdentity),this},e.prototype.appendStr=function(t){var n,r,i=this._buffer8,a=this._buffer32,s=this._bufferLength;for(r=0;r<t.length;r+=1){if((n=t.charCodeAt(r))<128)i[s++]=n;else if(n<2048)i[s++]=192+(n>>>6),i[s++]=63&n|128;else if(n<55296||n>56319)i[s++]=224+(n>>>12),i[s++]=n>>>6&63|128,i[s++]=63&n|128;else{if((n=1024*(n-55296)+(t.charCodeAt(++r)-56320)+65536)>1114111)throw new Error("Unicode standard supports code points up to U+10FFFF");i[s++]=240+(n>>>18),i[s++]=n>>>12&63|128,i[s++]=n>>>6&63|128,i[s++]=63&n|128}s>=64&&(this._dataLength+=64,e._md5cycle(this._state,a),s-=64,a[0]=a[16])}return this._bufferLength=s,this},e.prototype.appendAsciiStr=function(t){for(var n,r=this._buffer8,i=this._buffer32,a=this._bufferLength,s=0;;){for(n=Math.min(t.length-s,64-a);n--;)r[a++]=t.charCodeAt(s++);if(a<64)break;this._dataLength+=64,e._md5cycle(this._state,i),a=0}return this._bufferLength=a,this},e.prototype.appendByteArray=function(t){for(var n,r=this._buffer8,i=this._buffer32,a=this._bufferLength,s=0;;){for(n=Math.min(t.length-s,64-a);n--;)r[a++]=t[s++];if(a<64)break;this._dataLength+=64,e._md5cycle(this._state,i),a=0}return this._bufferLength=a,this},e.prototype.getState=function(){var e=this,t=e._state;return{buffer:String.fromCharCode.apply(null,e._buffer8),buflen:e._bufferLength,length:e._dataLength,state:[t[0],t[1],t[2],t[3]]}},e.prototype.setState=function(e){var t,n=e.buffer,r=e.state,i=this._state;for(this._dataLength=e.length,this._bufferLength=e.buflen,i[0]=r[0],i[1]=r[1],i[2]=r[2],i[3]=r[3],t=0;t<n.length;t+=1)this._buffer8[t]=n.charCodeAt(t)},e.prototype.end=function(t){void 0===t&&(t=!1);var n,r=this._bufferLength,i=this._buffer8,a=this._buffer32,s=1+(r>>2);if(this._dataLength+=r,i[r]=128,i[r+1]=i[r+2]=i[r+3]=0,a.set(e.buffer32Identity.subarray(s),s),r>55&&(e._md5cycle(this._state,a),a.set(e.buffer32Identity)),(n=8*this._dataLength)<=4294967295)a[14]=n;else{var o=n.toString(16).match(/(.*?)(.{0,8})$/);if(null===o)return;var c=parseInt(o[2],16),d=parseInt(o[1],16)||0;a[14]=c,a[15]=d}return e._md5cycle(this._state,a),t?this._state:e._hex(this._state)},e.stateIdentity=new Int32Array([1732584193,-271733879,-1732584194,271733878]),e.buffer32Identity=new Int32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),e.hexChars="0123456789abcdef",e.hexOut=[],e.onePassHasher=new e,e}();t.Md5=n,"5d41402abc4b2a76b9719d911017c592"!==n.hashStr("hello")&&console.error("Md5 self test failed.")}},t={};function n(r){if(t[r])return t[r].exports;var i=t[r]={exports:{}};return e[r].call(i.exports,i,i.exports,n),i.exports}return n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),n(9001)})();