@arcware-cloud/pixelstreaming-websdk 1.4.9 → 1.4.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/core.cjs +1 -1
- package/core.mjs +1 -1
- package/core.umd.cjs +1 -1
- package/index.cjs +3 -2
- package/index.mjs +1 -1
- package/index.umd.cjs +3 -2
- package/package.json +1 -1
- package/types/core/ArcwareConfig.d.ts +1 -1
package/index.mjs
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
var e={6758(e,t,n){n.d(t,{b:()=>s});class i{constructor(e){this._args=[],this._callback=e}handleEvent(e){this._callback(...this._args),this._args=[]}setArgs(...e){this._args=e}}class s extends EventTarget{constructor(){super(),this._eventListeners=new Map}removeListenerInternal(e,t){if(this._eventListeners.has(e)){const n=this._eventListeners.get(e);if(void 0===n)return this;for(let i=0;i<n.length;++i){const s=n[i];if(s.callback===t){super.removeEventListener(e,s.eventListenerWrapper),n.splice(i,1);break}}}return this}addListener(e,t){return this.on(e,t)}on(e,t){var n;const s=new i(t);return super.addEventListener(e,s),this._eventListeners.has(e)||this._eventListeners.set(e,new Array),null===(n=this._eventListeners.get(e))||void 0===n||n.push({callback:t,eventListenerWrapper:s}),this}once(e,t){var n;const s=new i((...n)=>{t(n),this.removeListenerInternal(e,t)});return super.addEventListener(e,s,{once:!0}),this._eventListeners.has(e)||this._eventListeners.set(e,new Array),null===(n=this._eventListeners.get(e))||void 0===n||n.push({callback:t,eventListenerWrapper:s}),this}removeListener(e,t){return this.removeListenerInternal(e,t),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){if(this._eventListeners.has(e)){const t=this._eventListeners.get(e);if(void 0===t)return this;for(const n of t)this.removeEventListener(e,n.eventListenerWrapper);this._eventListeners.delete(e)}return this}emit(e,...t){if(this._eventListeners.has(e)){const n=this._eventListeners.get(e);if(void 0===n)return!1;for(const e of n)e.eventListenerWrapper.setArgs(...t);return super.dispatchEvent(new Event(e)),!0}return!1}}},948(e,t,n){var i;n.d(t,{Vy:()=>r}),function(e){e[e.Disabled=0]="Disabled",e[e.Error=1]="Error",e[e.Warning=2]="Warning",e[e.Info=3]="Info",e[e.Debug=4]="Debug"}(i||(i={}));class s{constructor(){this.logLevel=i.Debug,this.includeStack=!0}}let r=new class{InitLogging(e,t){this.ValidateContext(),this.context.logLevel=e,this.context.includeStack=t}Debug(e){this.ValidateContext(),this.context.logLevel>=i.Debug&&this.CommonLog("Debug",e)}Info(e){this.ValidateContext(),this.context.logLevel>=i.Info&&this.CommonLog("Info",e)}Warning(e){this.ValidateContext(),this.context.logLevel>=i.Warning&&this.CommonLog("Warning",e)}Error(e){this.ValidateContext(),this.context.logLevel>=i.Error&&this.CommonLog("Error",e)}CommonLog(e,t){let n=`[${e}] - ${t}`;this.context.includeStack&&(n+=`\nStack: ${this.GetStackTrace()}`),"Error"===e?console.error(n):"Warning"===e?console.warn(n):console.log(n)}GetStackTrace(){const e=new Error;let t="No Stack Available for this browser";return e.stack&&(t=e.stack.toString().replace(/Error/g,"")),t}ValidateContext(){this.context||("undefined"!=typeof window&&window?window.loggerContext?this.context=window.loggerContext:(this.context=new s,window.loggerContext=this.context):this.context=new s)}}},9899(e,t,n){function i(e,t){const n=e.create();return n.type=e.typeName,t&&e.mergePartial(n,t),n}n.d(t,{o:()=>i})},9027(e,t,n){n.d(t,{$W:()=>c,B1:()=>S,BI:()=>F,C_:()=>G,H2:()=>B,Rd:()=>Z,Rq:()=>Q,ZF:()=>R,hU:()=>D,l8:()=>g,q5:()=>b,tg:()=>j,vq:()=>W,x:()=>k,yB:()=>T,zW:()=>v});var i=n(8899),s=n(3923),r=n(2285);class o extends r.G{constructor(){super("base_message",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new o;class a extends r.G{constructor(){super("peerConnectionOptions",[])}create(e){const t=globalThis.Object.create(this.messagePrototype);return void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const l=new a;class d extends r.G{constructor(){super("config",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"peerConnectionOptions",kind:"message",T:()=>l},{no:3,name:"protocolVersion",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.peerConnectionOptions=l.internalBinaryRead(e,e.uint32(),n,r.peerConnectionOptions);break;case 3:r.protocolVersion=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),e.peerConnectionOptions&&l.internalBinaryWrite(e.peerConnectionOptions,t.tag(2,i.O0.LengthDelimited).fork(),n).join(),void 0!==e.protocolVersion&&t.tag(3,i.O0.LengthDelimited).string(e.protocolVersion);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const c=new d;class h extends r.G{constructor(){super("identify",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new h;class u extends r.G{constructor(){super("endpointId",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:9},{no:3,name:"protocolVersion",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.id="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.id=e.string();break;case 3:r.protocolVersion=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.id&&t.tag(2,i.O0.LengthDelimited).string(e.id),void 0!==e.protocolVersion&&t.tag(3,i.O0.LengthDelimited).string(e.protocolVersion);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new u;class m extends r.G{constructor(){super("endpointIdConfirm",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"committedId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.committedId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.committedId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.committedId&&t.tag(2,i.O0.LengthDelimited).string(e.committedId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new m;class p extends r.G{constructor(){super("streamerIdChanged",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"newID",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.newID="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.newID=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.newID&&t.tag(2,i.O0.LengthDelimited).string(e.newID);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const g=new p;class f extends r.G{constructor(){super("listStreamers",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const v=new f;class y extends r.G{constructor(){super("streamerList",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"ids",kind:"scalar",repeat:2,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.ids=[],void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.ids.push(e.string());break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);for(let n=0;n<e.ids.length;n++)t.tag(2,i.O0.LengthDelimited).string(e.ids[n]);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const b=new y;class w extends r.G{constructor(){super("subscribe",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"streamerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.streamerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.streamerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.streamerId&&t.tag(2,i.O0.LengthDelimited).string(e.streamerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const S=new w;class C extends r.G{constructor(){super("unsubscribe",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new C;class E extends r.G{constructor(){super("subscribeFailed",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"message",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.message="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.message=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.message&&t.tag(2,i.O0.LengthDelimited).string(e.message);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const T=new E;class x extends r.G{constructor(){super("playerConnected",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"dataChannel",kind:"scalar",T:8},{no:3,name:"sfu",kind:"scalar",T:8},{no:5,name:"playerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.dataChannel=!1,t.sfu=!1,t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.dataChannel=e.bool();break;case 3:r.sfu=e.bool();break;case 5:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),!1!==e.dataChannel&&t.tag(2,i.O0.Varint).bool(e.dataChannel),!1!==e.sfu&&t.tag(3,i.O0.Varint).bool(e.sfu),""!==e.playerId&&t.tag(5,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new x;class I extends r.G{constructor(){super("playerDisconnected",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"playerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.playerId&&t.tag(2,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new I;class M extends r.G{constructor(){super("offer",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"playerId",kind:"scalar",opt:!0,T:9},{no:4,name:"sfu",kind:"scalar",opt:!0,T:8},{no:5,name:"multiplex",kind:"scalar",opt:!0,T:8},{no:6,name:"scalabilityMode",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.sdp="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.sdp=e.string();break;case 3:r.playerId=e.string();break;case 4:r.sfu=e.bool();break;case 5:r.multiplex=e.bool();break;case 6:r.scalabilityMode=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.sdp&&t.tag(2,i.O0.LengthDelimited).string(e.sdp),void 0!==e.playerId&&t.tag(3,i.O0.LengthDelimited).string(e.playerId),void 0!==e.sfu&&t.tag(4,i.O0.Varint).bool(e.sfu),void 0!==e.multiplex&&t.tag(5,i.O0.Varint).bool(e.multiplex),void 0!==e.scalabilityMode&&t.tag(6,i.O0.LengthDelimited).string(e.scalabilityMode);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const k=new M;class L extends r.G{constructor(){super("answer",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"playerId",kind:"scalar",opt:!0,T:9},{no:4,name:"minBitrateBps",kind:"scalar",opt:!0,T:5},{no:5,name:"maxBitrateBps",kind:"scalar",opt:!0,T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.sdp="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.sdp=e.string();break;case 3:r.playerId=e.string();break;case 4:r.minBitrateBps=e.int32();break;case 5:r.maxBitrateBps=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.sdp&&t.tag(2,i.O0.LengthDelimited).string(e.sdp),void 0!==e.playerId&&t.tag(3,i.O0.LengthDelimited).string(e.playerId),void 0!==e.minBitrateBps&&t.tag(4,i.O0.Varint).int32(e.minBitrateBps),void 0!==e.maxBitrateBps&&t.tag(5,i.O0.Varint).int32(e.maxBitrateBps);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const R=new L;class P extends r.G{constructor(){super("iceCandidateData",[{no:1,name:"candidate",kind:"scalar",T:9},{no:2,name:"sdpMid",kind:"scalar",T:9},{no:3,name:"sdpMLineIndex",kind:"scalar",T:5},{no:4,name:"usernameFragment",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.candidate="",t.sdpMid="",t.sdpMLineIndex=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.candidate=e.string();break;case 2:r.sdpMid=e.string();break;case 3:r.sdpMLineIndex=e.int32();break;case 4:r.usernameFragment=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.candidate&&t.tag(1,i.O0.LengthDelimited).string(e.candidate),""!==e.sdpMid&&t.tag(2,i.O0.LengthDelimited).string(e.sdpMid),0!==e.sdpMLineIndex&&t.tag(3,i.O0.Varint).int32(e.sdpMLineIndex),void 0!==e.usernameFragment&&t.tag(4,i.O0.LengthDelimited).string(e.usernameFragment);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const O=new P;class A extends r.G{constructor(){super("iceCandidate",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"candidate",kind:"message",T:()=>O},{no:3,name:"playerId",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.candidate=O.internalBinaryRead(e,e.uint32(),n,r.candidate);break;case 3:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),e.candidate&&O.internalBinaryWrite(e.candidate,t.tag(2,i.O0.LengthDelimited).fork(),n).join(),void 0!==e.playerId&&t.tag(3,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const F=new A;class N extends r.G{constructor(){super("disconnectPlayer",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"playerId",kind:"scalar",T:9},{no:3,name:"reason",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.playerId=e.string();break;case 3:r.reason=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.playerId&&t.tag(2,i.O0.LengthDelimited).string(e.playerId),void 0!==e.reason&&t.tag(3,i.O0.LengthDelimited).string(e.reason);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new N;class _ extends r.G{constructor(){super("ping",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"time",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.time=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.time=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.time&&t.tag(2,i.O0.Varint).int32(e.time);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const D=new _;class V extends r.G{constructor(){super("pong",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"time",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.time=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.time=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.time&&t.tag(2,i.O0.Varint).int32(e.time);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const B=new V;class U extends r.G{constructor(){super("streamerDisconnected",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new U;class H extends r.G{constructor(){super("layerPreference",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"spatialLayer",kind:"scalar",T:5},{no:3,name:"temporalLayer",kind:"scalar",T:5},{no:4,name:"playerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.spatialLayer=0,t.temporalLayer=0,t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.spatialLayer=e.int32();break;case 3:r.temporalLayer=e.int32();break;case 4:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.spatialLayer&&t.tag(2,i.O0.Varint).int32(e.spatialLayer),0!==e.temporalLayer&&t.tag(3,i.O0.Varint).int32(e.temporalLayer),""!==e.playerId&&t.tag(4,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const W=new H;class z extends r.G{constructor(){super("dataChannelRequest",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const j=new z;class $ extends r.G{constructor(){super("peerDataChannels",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"playerId",kind:"scalar",T:9},{no:3,name:"sendStreamId",kind:"scalar",T:5},{no:4,name:"recvStreamId",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.playerId="",t.sendStreamId=0,t.recvStreamId=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.playerId=e.string();break;case 3:r.sendStreamId=e.int32();break;case 4:r.recvStreamId=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.playerId&&t.tag(2,i.O0.LengthDelimited).string(e.playerId),0!==e.sendStreamId&&t.tag(3,i.O0.Varint).int32(e.sendStreamId),0!==e.recvStreamId&&t.tag(4,i.O0.Varint).int32(e.recvStreamId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const Q=new $;class q extends r.G{constructor(){super("peerDataChannelsReady",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const G=new q;class K extends r.G{constructor(){super("streamerDataChannels",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sfuId",kind:"scalar",T:9},{no:3,name:"sendStreamId",kind:"scalar",T:5},{no:4,name:"recvStreamId",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.sfuId="",t.sendStreamId=0,t.recvStreamId=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.sfuId=e.string();break;case 3:r.sendStreamId=e.int32();break;case 4:r.recvStreamId=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.sfuId&&t.tag(2,i.O0.LengthDelimited).string(e.sfuId),0!==e.sendStreamId&&t.tag(3,i.O0.Varint).int32(e.sendStreamId),0!==e.recvStreamId&&t.tag(4,i.O0.Varint).int32(e.recvStreamId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new K;class J extends r.G{constructor(){super("startStreaming",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new J;class X extends r.G{constructor(){super("stopStreaming",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new X;class Y extends r.G{constructor(){super("playerCount",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"count",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.count=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.count=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.count&&t.tag(2,i.O0.Varint).int32(e.count);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const Z=new Y;class ee extends r.G{constructor(){super("stats",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"data",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.data="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.data=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.data&&t.tag(2,i.O0.LengthDelimited).string(e.data);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new ee},8496(e,t,n){n.d(t,{P:()=>r});var i=n(9027),s=n(9899);class r{get RTT(){return this.rtt}constructor(e,t){this.alive=!1,this.rtt=0,this.protocol=e,this.timeout=t,this.onResponse=this.onHeartbeatResponse.bind(this),this.protocol.transport.on("close",this.stop.bind(this)),this.start()}start(){this.alive=!0,this.protocol.on("pong",this.onResponse),this.keepalive=setInterval(this.sendHeartbeat.bind(this),this.timeout)}stop(){clearInterval(this.keepalive),this.protocol.off("pong",this.onResponse)}sendHeartbeat(){var e;!1!==this.alive?(this.alive=!1,this.protocol.sendMessage(s.o(i.hU,{time:(new Date).getTime()}))):null===(e=this.onTimeout)||void 0===e||e.call(this)}onHeartbeatResponse(e){this.rtt=(new Date).getTime()-e.time,this.alive=!0}}},3532(e,t,n){n.d(t,{t:()=>r});var i=n(6758),s=n(948);class r extends i.b{static get SIGNALLING_VERSION(){return"1.3.0"}constructor(e){super(),this.transport=e,e.onMessage=t=>{let n;try{const e=JSON.parse(t);s.Vy.Debug("Protocol received => \n"+JSON.stringify(e,void 0,4)),n=e}catch(e){return void(e instanceof Error?s.Vy.Error(`Error parsing message string ${t}.\n${e.message}`):s.Vy.Error("Unknown error while parsing message data in handleOnMessage"))}e.emit("message",n),this.emit(n.type,n)||this.emit("unhandled",n)}}connect(e){return this.transport.connect(e)}disconnect(e,t){this.transport.disconnect(e,t)}isConnected(){return this.transport.isConnected()}sendMessage(e){this.transport.sendMessage(JSON.stringify(e)),this.transport.emit("out",e),s.Vy.Debug("Protocol sent => \n"+JSON.stringify(e,void 0,4))}}},7447(e,t,n){n.d(t,{T:()=>r});var i=n(948),s=n(6758);class r extends s.b{constructor(e){super(),this.WS_OPEN_STATE=1,this.protocols=e}sendMessage(e){this.webSocket&&this.webSocket.send(e)}connect(e){i.Vy.Info(e);try{return this.webSocket=new WebSocket(e,this.protocols),this.webSocket.onopen=e=>this.handleOnOpen(),this.webSocket.onerror=e=>this.handleOnError(),this.webSocket.onclose=e=>this.handleOnClose(e),this.webSocket.onmessage=e=>this.handleOnMessage(e),this.webSocket.onmessagebinary=e=>this.handleOnMessageBinary(e),!0}catch(e){return i.Vy.Error(e),!1}}disconnect(e,t){this.webSocket&&this.webSocket.close(e,t)}isConnected(){return!!this.webSocket&&this.webSocket.readyState!=WebSocket.CLOSED}handleOnMessageBinary(e){e&&e.data&&e.data.text().then(e=>{const t=new MessageEvent("messageFromBinary",{data:e});this.handleOnMessage(t)}).catch(e=>{i.Vy.Error(`Failed to parse binary blob from websocket, reason: ${e.message}`)})}handleOnMessage(e){e.data&&e.data instanceof Blob?this.handleOnMessageBinary(e):this.onMessage&&this.onMessage(e.data)}handleOnOpen(){i.Vy.Info("Connected to the signalling server via WebSocket"),this.emit("open")}handleOnError(){this.emit("error")}handleOnClose(e){i.Vy.Info("Disconnected to the signalling server via WebSocket: "+JSON.stringify(e.code)+" - "+e.reason),this.emit("close",e)}}},9046(e,t,n){n.d(t,{p:()=>i});class i{static addVideoHeaderExtensionToSdp(e,t){const n=e.split("\n").filter(e=>e.startsWith("a=extmap:")).map(e=>parseInt(e.split(" ")[0].substring(9),10)).sort((e,t)=>e-t).filter((e,t,n)=>n.indexOf(e)===t),i="a=extmap:"+(n[n.length-1]+1)+" "+t+"\r\n",s=e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n");return s.shift()+s.map(e=>e.startsWith("m=video")?e+i:e).join("")}}},5785(e,t,n){n.d(t,{R:()=>o});var i=n(223),s=n(948),r=n(6077);class o{constructor(e,t,n){this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=e,this.pixelStreaming=t,this.onDismissAfk=n,this.onAFKTimedOutCallback=()=>{console.log("AFK timed out, did you want to override this callback?")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new r.jr))}startAfkWarningTimer(){this.config.getNumericSettingValue(i.k$.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(i.iI.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(i.iI.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout(()=>this.activateAfkEvent(),1e3*this.config.getNumericSettingValue(i.k$.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new r.mC({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.config.getNumericSettingValue(i.k$.AFKCountdownSecs),this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new r.S_({countDown:this.countDown})),this.config.isFlagEnabled(i.iI.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval(()=>{this.countDown--,0==this.countDown?(this.pixelStreaming.dispatchEvent(new r.Kr),this.onAFKTimedOutCallback(),s.Vy.Info("You have been disconnected due to inactivity"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new r.S_({countDown:this.countDown}))},1e3)}}},223(e,t,n){n.d(t,{B9:()=>g,Bs:()=>b,CR:()=>h,Ri:()=>v,TS:()=>y,gw:()=>p,iI:()=>c,k$:()=>u,mY:()=>f,tQ:()=>m});var i=n(948),s=n(5131),r=n(9468),o=n(4746),a=n(5828),l=n(6077),d=n(114);class c{}c.AutoConnect="AutoConnect",c.AutoPlayVideo="AutoPlayVideo",c.AFKDetection="TimeoutIfIdle",c.HoveringMouseMode="HoveringMouse",c.ForceMonoAudio="ForceMonoAudio",c.ForceTURN="ForceTURN",c.FakeMouseWithTouches="FakeMouseWithTouches",c.IsQualityController="ControlsQuality",c.MatchViewportResolution="MatchViewportRes",c.StartVideoMuted="StartVideoMuted",c.SuppressBrowserKeys="SuppressBrowserKeys",c.UseMic="UseMic",c.UseModalForTextInput="UseModalForTextInput",c.UseCamera="UseCamera",c.KeyboardInput="KeyboardInput",c.MouseInput="MouseInput",c.TouchInput="TouchInput",c.GamepadInput="GamepadInput",c.XRControllerInput="XRControllerInput",c.WaitForStreamer="WaitForStreamer",c.HideUI="HideUI",c.EnableCaptureTimeExt="EnableCaptureTimeExt";const h=e=>Object.getOwnPropertyNames(c).some(t=>c[t]===e);class u{}u.AFKTimeoutSecs="AFKTimeout",u.AFKCountdownSecs="AFKCountdown",u.MinQP="MinQP",u.MaxQP="MaxQP",u.MinQuality="MinQuality",u.MaxQuality="MaxQuality",u.CompatQualityMin="CompatQualityMin",u.CompatQualityMax="CompatQualityMax",u.WebRTCFPS="WebRTCFPS",u.WebRTCMinBitrate="WebRTCMinBitrate",u.WebRTCMaxBitrate="WebRTCMaxBitrate",u.MaxReconnectAttempts="MaxReconnectAttempts",u.StreamerAutoJoinInterval="StreamerAutoJoinInterval",u.KeepaliveDelay="KeepaliveDelay";const m=e=>Object.getOwnPropertyNames(u).some(t=>u[t]===e);class p{}p.SignallingServerUrl="ss";const g=e=>Object.getOwnPropertyNames(p).some(t=>p[t]===e);class f{}f.PreferredCodec="PreferredCodec",f.StreamerId="StreamerId",f.PreferredQuality="PreferredQuality";const v=e=>Object.getOwnPropertyNames(f).some(t=>f[t]===e);class y{constructor(e={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:t,useUrlParams:n,webSocketProtocols:i}=e;this._useUrlParams=!!n,this._webSocketProtocols=i,this.populateDefaultSettings(this._useUrlParams,t)}get useUrlParams(){return this._useUrlParams}get webSocketProtocols(){return this._webSocketProtocols}populateDefaultSettings(e,t){this.textParameters.set(p.SignallingServerUrl,new o.c(p.SignallingServerUrl,"Signalling url","Url of the signalling server",t&&Object.prototype.hasOwnProperty.call(t,p.SignallingServerUrl)?t[p.SignallingServerUrl]:("https:"===location.protocol?"wss://":"ws://")+window.location.hostname+("80"===window.location.port||""===window.location.port?"":`:${window.location.port}`),e)),this.optionParameters.set(f.StreamerId,new a.G(f.StreamerId,"Streamer ID","The ID of the streamer to stream.",t&&Object.prototype.hasOwnProperty.call(t,f.StreamerId)?t[f.StreamerId]:"",t&&Object.prototype.hasOwnProperty.call(t,f.StreamerId)?[t[f.StreamerId]]:void 0,e));const n=function(e){const t=d.C.getSupportedVideoCodecs();if(t.includes(e))return e;for(const n of t)if(n.startsWith(e))return n;return e};this.optionParameters.set(f.PreferredCodec,new a.G(f.PreferredCodec,"Preferred Codec","The preferred codec to be used during codec negotiation",t&&Object.prototype.hasOwnProperty.call(t,f.PreferredCodec)?n(t[f.PreferredCodec]):function(){const e=d.C.getSupportedVideoCodecs();if(1==e.length)return e[0];if(e.length>0){const t=e[0];for(const t of e)if(t.startsWith("H264"))return t;return t}return i.Vy.Error("Could not find any reasonable video codec to assign as a default."),""}(),d.C.getSupportedVideoCodecs(),e,n)),this.optionParameters.set(f.PreferredQuality,new a.G(f.PreferredQuality,"Preferred Quality","The preferred quality of the stream (only applicable when using the SFU)",t&&Object.prototype.hasOwnProperty.call(t,f.PreferredQuality)?t[f.PreferredQuality]:"Default",["Default"],e)),this.flags.set(c.AutoConnect,new s.T(c.AutoConnect,"Auto connect to stream","Whether we should attempt to auto connect to the signalling server or show a click to start prompt.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.AutoConnect))&&t[c.AutoConnect],e)),this.flags.set(c.AutoPlayVideo,new s.T(c.AutoPlayVideo,"Auto play video","When video is ready automatically start playing it as opposed to showing a play button.",!t||!Object.prototype.hasOwnProperty.call(t,c.AutoPlayVideo)||t[c.AutoPlayVideo],e)),this.flags.set(c.UseMic,new s.T(c.UseMic,"Use microphone","Make browser request microphone access and open an input audio track.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.UseMic))&&t[c.UseMic],e)),this.flags.set(c.UseModalForTextInput,new s.T(c.UseModalForTextInput,"Use modal for text input","When entering input into a streamed UE text widget, use an input modal.",!t||!Object.prototype.hasOwnProperty.call(t,c.UseModalForTextInput)||t[c.UseModalForTextInput],e)),this.flags.set(c.UseCamera,new s.T(c.UseCamera,"Use webcam","Make browser request webcam access and open a input video track.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.UseCamera))&&t[c.UseCamera],e)),this.flags.set(c.StartVideoMuted,new s.T(c.StartVideoMuted,"Start video muted","Video will start muted if true.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.StartVideoMuted))&&t[c.StartVideoMuted],e)),this.flags.set(c.SuppressBrowserKeys,new s.T(c.SuppressBrowserKeys,"Suppress browser keys","Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.",!t||!Object.prototype.hasOwnProperty.call(t,c.SuppressBrowserKeys)||t[c.SuppressBrowserKeys],e)),this.flags.set(c.IsQualityController,new s.T(c.IsQualityController,"Is quality controller?","True if this peer controls stream quality",!t||!Object.prototype.hasOwnProperty.call(t,c.IsQualityController)||t[c.IsQualityController],e)),this.flags.set(c.ForceMonoAudio,new s.T(c.ForceMonoAudio,"Force mono audio","Force browser to request mono audio in the SDP",!(!t||!Object.prototype.hasOwnProperty.call(t,c.ForceMonoAudio))&&t[c.ForceMonoAudio],e)),this.flags.set(c.ForceTURN,new s.T(c.ForceTURN,"Force TURN","Only generate TURN/Relayed ICE candidates.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.ForceTURN))&&t[c.ForceTURN],e)),this.flags.set(c.AFKDetection,new s.T(c.AFKDetection,"AFK if idle","Timeout the experience if user is AFK for a period.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.AFKDetection))&&t[c.AFKDetection],e)),this.flags.set(c.MatchViewportResolution,new s.T(c.MatchViewportResolution,"Match viewport resolution","Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.MatchViewportResolution))&&t[c.MatchViewportResolution],e)),this.flags.set(c.HoveringMouseMode,new s.T(c.HoveringMouseMode,"Control Scheme: Locked Mouse","Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.HoveringMouseMode))&&t[c.HoveringMouseMode],e,(e,t)=>{t.label=`Control Scheme: ${e?"Hovering":"Locked"} Mouse`})),this.flags.set(c.FakeMouseWithTouches,new s.T(c.FakeMouseWithTouches,"Fake mouse with touches","A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.FakeMouseWithTouches))&&t[c.FakeMouseWithTouches],e)),this.flags.set(c.KeyboardInput,new s.T(c.KeyboardInput,"Keyboard input","If enabled, send keyboard events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.KeyboardInput)||t[c.KeyboardInput],e)),this.flags.set(c.MouseInput,new s.T(c.MouseInput,"Mouse input","If enabled, send mouse events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.MouseInput)||t[c.MouseInput],e)),this.flags.set(c.TouchInput,new s.T(c.TouchInput,"Touch input","If enabled, send touch events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.TouchInput)||t[c.TouchInput],e)),this.flags.set(c.GamepadInput,new s.T(c.GamepadInput,"Gamepad input","If enabled, send gamepad events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.GamepadInput)||t[c.GamepadInput],e)),this.flags.set(c.XRControllerInput,new s.T(c.XRControllerInput,"XR controller input","If enabled, send XR controller events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.XRControllerInput)||t[c.XRControllerInput],e)),this.flags.set(c.WaitForStreamer,new s.T(c.WaitForStreamer,"Wait for streamer","Will continue trying to connect to the first streamer available.",!t||!Object.prototype.hasOwnProperty.call(t,c.WaitForStreamer)||t[c.WaitForStreamer],e)),this.flags.set(c.HideUI,new s.T(c.HideUI,"Hide the UI overlay","Will hide all UI overlay details",!(!t||!Object.prototype.hasOwnProperty.call(t,c.HideUI))&&t[c.HideUI],e)),this.flags.set(c.EnableCaptureTimeExt,new s.T(c.EnableCaptureTimeExt,"Enable abs-capture-time","Enables the abs-capture-time RTP header extension",!(!t||!Object.prototype.hasOwnProperty.call(t,c.EnableCaptureTimeExt))&&t[c.EnableCaptureTimeExt],e)),this.numericParameters.set(u.AFKTimeoutSecs,new r.U(u.AFKTimeoutSecs,"AFK timeout","The time (in seconds) it takes for the application to time out if AFK timeout is enabled.",0,null,t&&Object.prototype.hasOwnProperty.call(t,u.AFKTimeoutSecs)?t[u.AFKTimeoutSecs]:120,e)),this.numericParameters.set(u.AFKCountdownSecs,new r.U(u.AFKCountdownSecs,"AFK countdown","The time (in seconds) for a user to respond before the stream is ended after an AFK timeout.",10,null,10,e)),this.numericParameters.set(u.MaxReconnectAttempts,new r.U(u.MaxReconnectAttempts,"Max Reconnects","Maximum number of reconnects the application will attempt when a streamer disconnects.",0,999,t&&Object.prototype.hasOwnProperty.call(t,u.MaxReconnectAttempts)?t[u.MaxReconnectAttempts]:3,e)),this.numericParameters.set(u.MinQP,new r.U(u.MinQP,"Min QP","The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,t&&Object.prototype.hasOwnProperty.call(t,u.MinQP)?t[u.MinQP]:0,e)),this.numericParameters.set(u.MaxQP,new r.U(u.MaxQP,"Max QP","The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,t&&Object.prototype.hasOwnProperty.call(t,u.MaxQP)?t[u.MaxQP]:51,e)),this.numericParameters.set(u.MinQuality,new r.U(u.MinQuality,"Min Quality","The lower bound for the quality factor of the encoder. 0 = Worst quality, 100 = Best quality.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.MinQuality)?t[u.MinQuality]:0,e)),this.numericParameters.set(u.MaxQuality,new r.U(u.MaxQuality,"Max Quality","The upper bound for the quality factor of the encoder. 0 = Worst quality, 100 = Best quality.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.MaxQuality)?t[u.MaxQuality]:100,e)),this.numericParameters.set(u.CompatQualityMin,new r.U(u.CompatQualityMin,"Min Quality","The lower bound for encoding quality. 0 = Worst, 100 = Best.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.CompatQualityMin)?t[u.CompatQualityMin]:0,e)),this.numericParameters.set(u.CompatQualityMax,new r.U(u.CompatQualityMax,"Max Quality","The upper bound for encoding quality. 0 = Worst, 100 = Best.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.CompatQualityMax)?t[u.CompatQualityMax]:100,e)),this.numericParameters.set(u.WebRTCFPS,new r.U(u.WebRTCFPS,"Max FPS","The maximum FPS that WebRTC will try to transmit frames at.",1,999,t&&Object.prototype.hasOwnProperty.call(t,u.WebRTCFPS)?t[u.WebRTCFPS]:60,e)),this.numericParameters.set(u.WebRTCMinBitrate,new r.U(u.WebRTCMinBitrate,"Min Bitrate (kbps)","The minimum bitrate that WebRTC should use.",0,5e5,t&&Object.prototype.hasOwnProperty.call(t,u.WebRTCMinBitrate)?t[u.WebRTCMinBitrate]:0,e)),this.numericParameters.set(u.WebRTCMaxBitrate,new r.U(u.WebRTCMaxBitrate,"Max Bitrate (kbps)","The maximum bitrate that WebRTC should use.",0,5e5,t&&Object.prototype.hasOwnProperty.call(t,u.WebRTCMaxBitrate)?t[u.WebRTCMaxBitrate]:0,e)),this.numericParameters.set(u.StreamerAutoJoinInterval,new r.U(u.StreamerAutoJoinInterval,"Streamer Auto Join Interval (ms)","Delay between retries when waiting for an available streamer.",500,9e5,t&&Object.prototype.hasOwnProperty.call(t,u.StreamerAutoJoinInterval)?t[u.StreamerAutoJoinInterval]:3e3,e)),this.numericParameters.set(u.KeepaliveDelay,new r.U(u.KeepaliveDelay,"Connection Keepalive delay","Delay between keepalive pings to the signalling server.",0,9e5,t&&Object.prototype.hasOwnProperty.call(t,u.KeepaliveDelay)?t[u.KeepaliveDelay]:3e4,e))}_addOnNumericSettingChangedListener(e,t){this.numericParameters.has(e)&&this.numericParameters.get(e).addOnChangedListener(t)}_addOnOptionSettingChangedListener(e,t){this.optionParameters.has(e)&&this.optionParameters.get(e).addOnChangedListener(t)}getNumericSettingValue(e){if(this.numericParameters.has(e))return this.numericParameters.get(e).number;throw new Error(`There is no numeric setting with the id of ${e}`)}getTextSettingValue(e){if(this.textParameters.has(e))return this.textParameters.get(e).value;throw new Error(`There is no numeric setting with the id of ${e}`)}setNumericSetting(e,t){if(!this.numericParameters.has(e))throw new Error(`There is no numeric setting with the id of ${e}`);this.numericParameters.get(e).number=t}_addOnSettingChangedListener(e,t){this.flags.has(e)&&(this.flags.get(e).onChange=t)}_addOnTextSettingChangedListener(e,t){this.textParameters.has(e)&&(this.textParameters.get(e).onChange=t)}getSettingOption(e){return this.optionParameters.get(e)}isFlagEnabled(e){return this.flags.get(e).flag}setFlagEnabled(e,t){this.flags.has(e)?this.flags.get(e).flag=t:i.Vy.Warning(`Cannot toggle flag called ${e} - it does not exist in the Config.flags map.`)}setTextSetting(e,t){this.textParameters.has(e)?this.textParameters.get(e).text=t:i.Vy.Warning(`Cannot set text setting called ${e} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(e,t){this.optionParameters.has(e)?this.optionParameters.get(e).options=t:i.Vy.Warning(`Cannot set text setting called ${e} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(e,t){if(this.optionParameters.has(e)){const n=this.optionParameters.get(e),i=n.options;i.includes(t)||(i.push(t),n.options=i),n.selected=t}else i.Vy.Warning(`Cannot set text setting called ${e} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(e,t){this.flags.has(e)?this.flags.get(e).label=t:i.Vy.Warning(`Cannot set label for flag called ${e} - it does not exist in the Config.flags map.`)}setSettings(e){for(const t of Object.keys(e))h(t)?this.setFlagEnabled(t,e[t]):m(t)?this.setNumericSetting(t,e[t]):g(t)?this.setTextSetting(t,e[t]):v(t)&&this.setOptionSettingValue(t,e[t])}getSettings(){const e={};for(const[t,n]of this.flags.entries())e[t]=n.flag;for(const[t,n]of this.numericParameters.entries())e[t]=n.number;for(const[t,n]of this.textParameters.entries())e[t]=n.text;for(const[t,n]of this.optionParameters.entries())e[t]=n.selected;return e}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(e){for(const t of this.flags.keys()){const n=this.flags.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"flag",value:t,target:n})))}for(const t of this.numericParameters.keys()){const n=this.numericParameters.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"number",value:t,target:n})))}for(const t of this.textParameters.keys()){const n=this.textParameters.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"text",value:t,target:n})))}for(const t of this.optionParameters.keys()){const n=this.optionParameters.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"option",value:t,target:n})))}}}var b;!function(e){e[e.LockedMouse=0]="LockedMouse",e[e.HoveringMouse=1]="HoveringMouse"}(b||(b={}))},8532(e,t,n){n.d(t,{E:()=>i});class i{constructor(e,t,n,i,s=()=>{}){this.parseURLParams(),this.onChange=s,this.onChangeEmit=()=>{},this.id=e,this.description=n,this.label=t,this.value=i}set label(e){this._label=e,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(e){this._value=e,this.onChange(this._value,this),this.onChangeEmit(this._value)}updateURLParams(){if(this.useUrlParams){const e=new URLSearchParams(window.location.search),t=this.getValueAsString();let n=!1;for(const[i,s]of e)if(i.toLowerCase()==this.id.toLowerCase()){e.set(i,t),n=!0;break}n||e.set(this.id,t),window.history.replaceState({},"",""!==e.toString()?`${location.pathname}?${e}`:`${location.pathname}`)}}getValueAsString(){return""}parseURLParams(){this._urlParams={};const e=new URLSearchParams(window.location.search);for(const[t,n]of e)this._urlParams[t.toLowerCase()]=n}hasURLParam(e){return e.toLowerCase()in this._urlParams}getURLParam(e){return this.hasURLParam(e)?this._urlParams[e.toLowerCase()]:""}}},5131(e,t,n){n.d(t,{T:()=>s});var i=n(8532);class s extends i.E{constructor(e,t,n,i,s,r=()=>{}){if(super(e,t,n,i,r),s&&this.hasURLParam(this.id)){const e=this.getURLParam(this.id);this.flag="false"!=e.toLowerCase()}else this.flag=i;this.useUrlParams=s}getValueAsString(){return this.flag?"true":"false"}enable(){this.flag=!0}get flag(){return!!this.value}set flag(e){this.value=e}}},9468(e,t,n){n.d(t,{U:()=>s});var i=n(8532);class s extends i.E{constructor(e,t,n,i,s,r,o,a=()=>{}){if(super(e,t,n,r,a),this._min=i,this._max=s,o&&this.hasURLParam(this.id)){const e=Number.parseFloat(this.getURLParam(this.id));this.number=Number.isNaN(e)?r:e}else this.number=r;this.useUrlParams=o}getValueAsString(){return this.number.toString()}set number(e){this.value=this.clamp(e)}get number(){return this.value}clamp(e){return null==this._min&&null==this._max?e:null==this._min?Math.min(this._max,e):null==this._max?Math.max(this._min,e):Math.max(Math.min(this._max,e),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(e){this.onChange=e}}},5828(e,t,n){n.d(t,{G:()=>r});var i=n(948),s=n(8532);class r extends s.E{constructor(e,t,n,i,s,r,o=function(e){return e},a=()=>{}){super(e,t,n,i,a),this._urlParamResolver=o;const l=this.hasURLParam(this.id)?this._urlParamResolver(this.getURLParam(this.id)):i;this.options=null!=s?s:[l],this.selected=l,this.useUrlParams=r}getValueAsString(){return this.selected}addOnChangedListener(e){this.onChange=e}get options(){return this._options}set options(e){this._options=e,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(e){void 0!==e&&(this.options.includes(e)?this.value=e:i.Vy.Error(`Could not set "${e}" as the selected option for ${this.id} because it wasn't one of the options.`))}set urlParamResolver(e){this._urlParamResolver=e}}},4746(e,t,n){n.d(t,{c:()=>s});var i=n(8532);class s extends i.E{constructor(e,t,n,i,s,r=()=>{}){super(e,t,n,i,r),s&&this.hasURLParam(this.id)?this.text=this.getURLParam(this.id):this.text=i,this.useUrlParams=s}getValueAsString(){return this.text}get text(){return this.value}set text(e){this.value=e}}},4045(e,t,n){n.d(t,{a:()=>s});var i=n(948);class s{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(e,t,n){this.peerConnection=e,this.label=t,this.datachannelOptions=n,null==n&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType="arraybuffer",this.dataChannel.onopen=e=>this.handleOnOpen(e),this.dataChannel.onclose=e=>this.handleOnClose(e),this.dataChannel.onmessage=e=>this.handleOnMessage(e),this.dataChannel.onerror=e=>this.handleOnError(e)}handleOnOpen(e){var t;i.Vy.Info(`Data Channel (${this.label}) opened.`),this.onOpen(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}handleOnClose(e){var t;i.Vy.Info(`Data Channel (${this.label}) closed.`),this.onClose(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}handleOnMessage(e){i.Vy.Info(`Data Channel (${this.label}) message: ${e}`)}handleOnError(e){var t;i.Vy.Info(`Data Channel (${this.label}) error: ${e}`),this.onError(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}onOpen(e,t){}onClose(e,t){}onError(e,t){}}},9355(e,t,n){n.d(t,{I:()=>r});var i=n(948),s=n(8733);class r{constructor(e,t){this.intervalHandle=void 0,this.sink=e,this.callback=t,this.records=new Map,this.seq=0}start(e){return!this.isRunning()&&(this.startTime=Date.now(),this.records.clear(),this.intervalHandle=window.setInterval((()=>{Date.now()-this.startTime>=e.duration?this.stop():this.sendRequest(e.requestSize,e.responseSize)}).bind(this),Math.floor(1e3/e.rps)),!0)}stop(){this.intervalHandle&&(window.clearInterval(this.intervalHandle),this.intervalHandle=void 0,this.callback(this.produceResult()))}produceResult(){const e=new Map(this.records);return{records:e,dataChannelRtt:Math.ceil(Array.from(this.records.values()).reduce((e,t)=>e+(t.playerReceivedTimestamp-t.playerSentTimestamp),0)/this.records.size),playerToStreamerTime:Math.ceil(Array.from(this.records.values()).reduce((e,t)=>e+(t.streamerReceivedTimestamp-t.playerSentTimestamp),0)/this.records.size),streamerToPlayerTime:Math.ceil(Array.from(this.records.values()).reduce((e,t)=>e+(t.playerReceivedTimestamp-t.streamerSentTimestamp),0)/this.records.size),exportLatencyAsCSV:()=>{let t="Timestamp;RTT;PlayerToStreamer;StreamerToPlayer;\n";return e.forEach(e=>{t+=e.playerSentTimestamp+";",t+=e.playerReceivedTimestamp-e.playerSentTimestamp+";",t+=e.streamerReceivedTimestamp-e.playerSentTimestamp+";",t+=e.playerReceivedTimestamp-e.streamerSentTimestamp+";",t+="\n"}),t}}}isRunning(){return!!this.intervalHandle}receive(e){if(!this.isRunning())return;if(!e)return void i.Vy.Error("Undefined response from server");const t=this.records.get(e.Seq);t&&t.update(e)}sendRequest(e,t){const n=this.createRequest(e,t),i=new s.T(n);this.records.set(i.seq,i),this.sink(n)}createRequest(e,t){return{Seq:this.seq++,FillResponseSize:t,Filler:e?"A".repeat(e):""}}}},8733(e,t,n){n.d(t,{T:()=>i});class i{constructor(e){this.seq=e.Seq,this.playerSentTimestamp=Date.now(),this.requestFillerSize=e.Filler?e.Filler.length:0}update(e){this.playerReceivedTimestamp=Date.now(),this.streamerReceivedTimestamp=e.ReceivedTimestamp,this.streamerSentTimestamp=e.SentTimestamp,this.responseFillerSize=e.Filler?e.Filler.length:0}}},8236(e,t,n){n.d(t,{p:()=>s});var i=n(948);class s{constructor(e){this.dataChannelProvider=e}canSend(){return void 0!==this.dataChannelProvider.getDataChannelInstance().dataChannel&&"open"==this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState}sendData(e){const t=this.dataChannelProvider.getDataChannelInstance();"open"==t.dataChannel.readyState?(t.dataChannel.send(e),i.Vy.Info(`Message Sent: ${new Uint8Array(e)}`),this.resetAfkWarningTimerOnDataSend()):i.Vy.Error(`Message Failed: ${new Uint8Array(e)}`)}resetAfkWarningTimerOnDataSend(){}}},235(e,t,n){n.d(t,{C9:()=>i});class i{constructor(){this.PixelStreamingSettings=new s,this.EncoderSettings=new r,this.WebRTCSettings=new o}ueCompatible(){null!=this.WebRTCSettings.MaxFPS&&(this.WebRTCSettings.FPS=this.WebRTCSettings.MaxFPS)}}class s{}class r{}class o{}},724(e,t,n){n.d(t,{Z:()=>s});var i=n(948);class s{constructor(){this.ReceiptTimeMs=null,this.TransmissionTimeMs=null,this.PreCaptureTimeMs=null,this.PostCaptureTimeMs=null,this.PreEncodeTimeMs=null,this.PostEncodeTimeMs=null,this.EncodeMs=null,this.CaptureToSendMs=null,this.testStartTimeMs=0,this.browserReceiptTimeMs=0,this.latencyExcludingDecode=0,this.testDuration=0,this.networkLatency=0,this.browserSendLatency=0,this.frameDisplayDeltaTimeMs=0,this.endToEndLatency=0,this.encodeLatency=0}setFrameDisplayDeltaTime(e){0==this.frameDisplayDeltaTimeMs&&(this.frameDisplayDeltaTimeMs=Math.round(e))}processFields(){null!=this.EncodeMs||null==this.PreEncodeTimeMs&&null==this.PostEncodeTimeMs||(i.Vy.Info(`Setting Encode Ms \n ${this.PostEncodeTimeMs} \n ${this.PreEncodeTimeMs}`),this.EncodeMs=this.PostEncodeTimeMs-this.PreEncodeTimeMs),null!=this.CaptureToSendMs||null==this.PreCaptureTimeMs&&null==this.PostCaptureTimeMs||(i.Vy.Info(`Setting CaptureToSendMs Ms \n ${this.PostCaptureTimeMs} \n ${this.PreCaptureTimeMs}`),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}},1065(e,t,n){n.d(t,{f:()=>i});class i{constructor(e){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=e,this.rootElement=document.createElement("div"),this.rootElement.id="freezeFrame",this.rootElement.style.display="none",this.rootElement.style.pointerEvents="none",this.rootElement.style.position="absolute",this.rootElement.style.zIndex="20",this.imageElement=document.createElement("img"),this.imageElement.style.position="absolute",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display="block"}setElementForHide(){this.rootElement.style.display="none"}updateImageElementSource(e){const t=btoa(e.reduce((e,t)=>e+String.fromCharCode(t),""));this.imageElement.src="data:image/jpeg;base64,"+t}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(0!==this.freezeFrameWidth&&0!==this.freezeFrameHeight){let e=0,t=0,n=0,i=0;const s=this.rootDiv.clientWidth/this.rootDiv.clientHeight,r=this.freezeFrameWidth/this.freezeFrameHeight;s<r?(e=this.rootDiv.clientWidth,t=Math.floor(this.rootDiv.clientWidth/r),n=Math.floor(.5*(this.rootDiv.clientHeight-t)),i=0):(e=Math.floor(this.rootDiv.clientHeight*r),t=this.rootDiv.clientHeight,n=0,i=Math.floor(.5*(this.rootDiv.clientWidth-e))),this.rootElement.style.width=this.rootDiv.offsetWidth+"px",this.rootElement.style.height=this.rootDiv.offsetHeight+"px",this.rootElement.style.left="0px",this.rootElement.style.top="0px",this.imageElement.style.width=e+"px",this.imageElement.style.height=t+"px",this.imageElement.style.left=i+"px",this.imageElement.style.top=n+"px"}}}},2865(e,t,n){n.d(t,{f:()=>r});var i=n(948),s=n(1065);class r{constructor(e){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new s.f(e)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(e,t){this.freezeFrame.updateImageElementSource(e),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),t()}}processFreezeFrameMessage(e,t){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(e.slice(1,5).buffer).getInt32(0,!0);const n=e.slice(5);if(this.jpeg){const e=new Uint8Array(this.jpeg.length+n.length);e.set(this.jpeg,0),e.set(n,this.jpeg.length),this.jpeg=e}else this.jpeg=n,this.receiving=!0,i.Vy.Info(`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,i.Vy.Info(`received complete freeze frame ${this.size}`),this.updateFreezeFrameAndShow(this.jpeg,t)):this.jpeg.length>this.size&&(i.Vy.Error(`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}},3501(e,t,n){n.d(t,{g:()=>r});var i,s=n(4568);!function(e){e[e.RightClusterBottomButton=0]="RightClusterBottomButton",e[e.RightClusterRightButton=1]="RightClusterRightButton",e[e.RightClusterLeftButton=2]="RightClusterLeftButton",e[e.RightClusterTopButton=3]="RightClusterTopButton",e[e.LeftShoulder=4]="LeftShoulder",e[e.RightShoulder=5]="RightShoulder",e[e.LeftTrigger=6]="LeftTrigger",e[e.RightTrigger=7]="RightTrigger",e[e.SelectOrBack=8]="SelectOrBack",e[e.StartOrForward=9]="StartOrForward",e[e.LeftAnalogPress=10]="LeftAnalogPress",e[e.RightAnalogPress=11]="RightAnalogPress",e[e.LeftClusterTopButton=12]="LeftClusterTopButton",e[e.LeftClusterBottomButton=13]="LeftClusterBottomButton",e[e.LeftClusterLeftButton=14]="LeftClusterLeftButton",e[e.LeftClusterRightButton=15]="LeftClusterRightButton",e[e.CentreButton=16]="CentreButton",e[e.LeftStickHorizontal=0]="LeftStickHorizontal",e[e.LeftStickVertical=1]="LeftStickVertical",e[e.RightStickHorizontal=2]="RightStickHorizontal",e[e.RightStickVertical=3]="RightStickVertical"}(i||(i={}));class r{constructor(e){this.streamMessageController=e,this.onGamepadConnectedListener=this.onGamepadConnected.bind(this),this.onGamepadDisconnectedListener=this.onGamepadDisconnected.bind(this),this.beforeUnloadListener=this.onBeforeUnload.bind(this),this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window)}register(){window.addEventListener("beforeunload",this.beforeUnloadListener);const e=window;if("GamepadEvent"in e?(window.addEventListener("gamepadconnected",this.onGamepadConnectedListener),window.addEventListener("gamepaddisconnected",this.onGamepadDisconnectedListener)):"WebKitGamepadEvent"in e&&(window.addEventListener("webkitgamepadconnected",this.onGamepadConnectedListener),window.addEventListener("webkitgamepaddisconnected",this.onGamepadDisconnectedListener)),this.controllers=[],navigator.getGamepads)for(const e of navigator.getGamepads())e&&this.onGamepadConnected(new GamepadEvent("gamepadconnected",{gamepad:e}))}unregister(){window.removeEventListener("gamepadconnected",this.onGamepadConnectedListener),window.removeEventListener("gamepaddisconnected",this.onGamepadDisconnectedListener),window.removeEventListener("webkitgamepadconnected",this.onGamepadConnectedListener),window.removeEventListener("webkitgamepaddisconnected",this.onGamepadDisconnectedListener);for(const e of this.controllers)e&&void 0!==e.id&&this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([e.id]);this.controllers=[]}onGamepadResponseReceived(e){for(const t of this.controllers)if(t&&void 0===t.id){t.id=e;break}}onGamepadConnected(e){const t=e.gamepad,n={currentState:(0,s.L)(t),prevState:(0,s.L)(t),id:void 0};this.controllers[t.index]=n,window.requestAnimationFrame(()=>this.updateStatus()),this.streamMessageController.toStreamerHandlers.get("GamepadConnected")()}onGamepadDisconnected(e){const t=e.gamepad,n=this.controllers[t.index];delete this.controllers[t.index],this.controllers=this.controllers.filter(e=>void 0!==e),void 0!==n.id&&this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([n.id])}scanGamepads(){const e=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let t=0;t<e.length;t++)e[t]&&void 0!==this.controllers[e[t].index]&&(this.controllers[e[t].index].currentState=e[t])}updateStatus(){this.scanGamepads();const e=this.streamMessageController.toStreamerHandlers;for(const t of this.controllers){if(!t)continue;const n=void 0===t.id?this.controllers.indexOf(t):t.id,r=t.currentState;for(let s=0;s<t.currentState.buttons.length;s++){const r=t.currentState.buttons[s],o=t.prevState.buttons[s];r.pressed?s==i.LeftTrigger?e.get("GamepadAnalog")([n,5,r.value]):s==i.RightTrigger?e.get("GamepadAnalog")([n,6,r.value]):e.get("GamepadButtonPressed")([n,s,o.pressed?1:0]):!r.pressed&&o.pressed&&(s==i.LeftTrigger?e.get("GamepadAnalog")([n,5,0]):s==i.RightTrigger?e.get("GamepadAnalog")([n,6,0]):e.get("GamepadButtonReleased")([n,s,0]))}for(let t=0;t<r.axes.length;t+=2){const i=parseFloat(r.axes[t].toFixed(4)),s=-parseFloat(r.axes[t+1].toFixed(4));e.get("GamepadAnalog")([n,t+1,i]),e.get("GamepadAnalog")([n,t+2,s])}const o=this.controllers.indexOf(t);this.controllers[o].prevState=(0,s.L)(r)}this.controllers.length>0&&this.requestAnimationFrame(()=>this.updateStatus())}onBeforeUnload(e){for(const e of this.controllers)e&&void 0!==e.id&&this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([e.id])}}},4568(e,t,n){function i(e){return JSON.parse(JSON.stringify({buttons:e.buttons.map(e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched,value:e.value}))),axes:e.axes}))}n.d(t,{L:()=>i})},1104(e,t,n){n.d(t,{a:()=>h});var i=n(7281),s=n(6003),r=n(7883),o=n(7633),a=n(7764),l=n(3501),d=n(223),c=n(948);class h{constructor(e,t,n){this.activeKeys=new u,this.toStreamerMessagesProvider=e,this.videoElementProvider=t,this.coordinateConverter=n}registerKeyBoard(e){c.Vy.Info("Register Keyboard Events");const t=new i.Y(this.toStreamerMessagesProvider,e,this.activeKeys);return t.register(),t}registerMouse(e){let t;return c.Vy.Info("Register Mouse Events"),t=e==d.Bs.HoveringMouse?new r.g(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys):new s.u(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys),t.register(),t}registerTouch(e){let t;return c.Vy.Info("Registering Touch"),t=e?new a.P(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter):new o.s(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter),t.register(),t}registerGamePad(){c.Vy.Info("Register Game Pad");const e=new l.g(this.toStreamerMessagesProvider);return e.register(),e}}class u{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}},3199(e,t,n){n.d(t,{v:()=>i});const i=Object.freeze({Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93})},7281(e,t,n){n.d(t,{Y:()=>a});var i=n(4438),s=n(948),r=n(223),o=n(3199);class a{constructor(e,t,n){this.streamMessageController=e,this.config=t,this.activeKeys=n,this.onKeyDownListener=this.handleOnKeyDown.bind(this),this.onKeyUpListener=this.handleOnKeyUp.bind(this),this.onKeyPressListener=this.handleOnKeyPress.bind(this)}register(){document.addEventListener("keydown",this.onKeyDownListener),document.addEventListener("keyup",this.onKeyUpListener),document.addEventListener("keypress",this.onKeyPressListener)}unregister(){document.removeEventListener("keydown",this.onKeyDownListener),document.removeEventListener("keyup",this.onKeyUpListener),document.removeEventListener("keypress",this.onKeyPressListener)}handleOnKeyDown(e){var t;const n=this.getKeycode(e);n&&229!==n&&(null===(t=this.streamMessageController.toStreamerHandlers.get("KeyDown"))||void 0===t||t([this.getKeycode(e),e.repeat?1:0]),this.activeKeys.getActiveKeys().push(n),n===i.h.backSpace&&this.handleOnKeyPress(new KeyboardEvent("keypress",{charCode:i.h.backSpace,keyCode:i.h.backSpace})),this.config.isFlagEnabled(r.iI.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(n)&&e.preventDefault())}handleOnKeyUp(e){var t;const n=this.getKeycode(e);n&&(null===(t=this.streamMessageController.toStreamerHandlers.get("KeyUp"))||void 0===t||t([n]),this.config.isFlagEnabled(r.iI.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(n)&&e.preventDefault())}handleOnKeyPress(e){var t;const n=this.getKeycode(e);n&&(null===(t=this.streamMessageController.toStreamerHandlers.get("KeyPress"))||void 0===t||t([n]))}getKeycode(e){if(!("keyCode"in e)){const t=e;return t.code in o.v?o.v[t.code]:(s.Vy.Warning(`Keyboard code of ${t.code} is not supported in our mapping, ignoring this key.`),null)}return e.keyCode===i.h.shift&&"ShiftRight"===e.code?i.h.rightShift:e.keyCode===i.h.control&&"ControlRight"===e.code?i.h.rightControl:e.keyCode===i.h.alt&&"AltRight"===e.code?i.h.rightAlt:e.keyCode}isKeyCodeBrowserKey(e){return e>=112&&e<=123||9===e}}},8888(e,t,n){n.d(t,{J:()=>s,w:()=>i});class i{}i.mainButton=0,i.auxiliaryButton=1,i.secondaryButton=2,i.fourthButton=3,i.fifthButton=4;class s{}s.primaryButton=1,s.secondaryButton=2,s.auxiliaryButton=4,s.fourthButton=8,s.fifthButton=16},6141(e,t,n){n.d(t,{M:()=>s});var i=n(8888);class s{constructor(e,t,n,i){this.streamMessageController=e,this.coordinateConverter=n,this.videoPlayer=t,this.activeKeys=i,this.onEnterListener=this.onMouseEnter.bind(this),this.onLeaveListener=this.onMouseLeave.bind(this)}register(){this.registerMouseEnterAndLeaveEvents()}unregister(){this.unregisterMouseEnterAndLeaveEvents()}registerMouseEnterAndLeaveEvents(){const e=this.videoPlayer.getVideoParentElement();null==e||e.addEventListener("mouseenter",this.onEnterListener),null==e||e.addEventListener("mouseleave",this.onLeaveListener)}unregisterMouseEnterAndLeaveEvents(){const e=this.videoPlayer.getVideoParentElement();null==e||e.removeEventListener("mouseenter",this.onEnterListener),null==e||e.removeEventListener("mouseleave",this.onLeaveListener)}onMouseEnter(e){var t;this.videoPlayer.isVideoReady()&&(null===(t=this.streamMessageController.toStreamerHandlers.get("MouseEnter"))||void 0===t||t(),this.pressMouseButtons(e.buttons,e.x,e.y))}onMouseLeave(e){var t;this.videoPlayer.isVideoReady()&&(null===(t=this.streamMessageController.toStreamerHandlers.get("MouseLeave"))||void 0===t||t(),this.releaseMouseButtons(e.buttons,e.x,e.y))}releaseMouseButtons(e,t,n){const s=this.coordinateConverter.translateUnsigned(t,n);e&i.J.primaryButton&&this.sendMouseUp(i.w.mainButton,s.x,s.y),e&i.J.secondaryButton&&this.sendMouseUp(i.w.secondaryButton,s.x,s.y),e&i.J.auxiliaryButton&&this.sendMouseUp(i.w.auxiliaryButton,s.x,s.y),e&i.J.fourthButton&&this.sendMouseUp(i.w.fourthButton,s.x,s.y),e&i.J.fifthButton&&this.sendMouseUp(i.w.fifthButton,s.x,s.y)}pressMouseButtons(e,t,n){if(!this.videoPlayer.isVideoReady())return;const s=this.coordinateConverter.translateUnsigned(t,n);e&i.J.primaryButton&&this.sendMouseDown(i.w.mainButton,s.x,s.y),e&i.J.secondaryButton&&this.sendMouseDown(i.w.secondaryButton,s.x,s.y),e&i.J.auxiliaryButton&&this.sendMouseDown(i.w.auxiliaryButton,s.x,s.y),e&i.J.fourthButton&&this.sendMouseDown(i.w.fourthButton,s.x,s.y),e&i.J.fifthButton&&this.sendMouseDown(i.w.fifthButton,s.x,s.y)}sendMouseDown(e,t,n){var i;null===(i=this.streamMessageController.toStreamerHandlers.get("MouseDown"))||void 0===i||i([e,t,n])}sendMouseUp(e,t,n){var i;const s=this.coordinateConverter.translateUnsigned(t,n);null===(i=this.streamMessageController.toStreamerHandlers.get("MouseUp"))||void 0===i||i([e,s.x,s.y])}}},7883(e,t,n){n.d(t,{g:()=>s});var i=n(6141);class s extends i.M{constructor(e,t,n,i){super(e,t,n,i),this.videoElementParent=t.getVideoParentElement(),this.onMouseUpListener=this.onMouseUp.bind(this),this.onMouseDownListener=this.onMouseDown.bind(this),this.onMouseDblClickListener=this.onMouseDblClick.bind(this),this.onMouseWheelListener=this.onMouseWheel.bind(this),this.onMouseMoveListener=this.onMouseMove.bind(this),this.onContextMenuListener=this.onContextMenu.bind(this)}register(){super.register(),this.videoElementParent.addEventListener("mousemove",this.onMouseMoveListener),this.videoElementParent.addEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.addEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.addEventListener("contextmenu",this.onContextMenuListener),this.videoElementParent.addEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.addEventListener("dblclick",this.onMouseDblClickListener)}unregister(){this.videoElementParent.removeEventListener("mousemove",this.onMouseMoveListener),this.videoElementParent.removeEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.removeEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.removeEventListener("contextmenu",this.onContextMenuListener),this.videoElementParent.removeEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.removeEventListener("dblclick",this.onMouseDblClickListener),super.unregister()}onMouseDown(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseDown")([e.button,t.x,t.y]),e.preventDefault()}onMouseUp(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseUp")([e.button,t.x,t.y]),e.preventDefault()}onContextMenu(e){this.videoPlayer.isVideoReady()&&e.preventDefault()}onMouseMove(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY),n=this.coordinateConverter.translateSigned(e.movementX,e.movementY);this.streamMessageController.toStreamerHandlers.get("MouseMove")([t.x,t.y,n.x,n.y]),e.preventDefault()}onMouseWheel(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseWheel")([e.wheelDelta,t.x,t.y]),e.preventDefault()}onMouseDblClick(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseDouble")([e.button,t.x,t.y])}}},6003(e,t,n){n.d(t,{u:()=>r});var i=n(948),s=n(6141);class r extends s.M{constructor(e,t,n,i){super(e,t,n,i),this.videoElementParent=t.getVideoParentElement(),this.x=this.videoElementParent.getBoundingClientRect().width/2,this.y=this.videoElementParent.getBoundingClientRect().height/2,this.normalizedCoord=this.coordinateConverter.translateUnsigned(this.x,this.y),this.onRequestLockListener=this.onRequestLock.bind(this),this.onLockStateChangeListener=this.onLockStateChange.bind(this),this.onMouseUpListener=this.onMouseUp.bind(this),this.onMouseDownListener=this.onMouseDown.bind(this),this.onMouseDblClickListener=this.onMouseDblClick.bind(this),this.onMouseWheelListener=this.onMouseWheel.bind(this),this.onMouseMoveListener=this.onMouseMove.bind(this)}register(){super.register(),this.videoElementParent.requestPointerLock=this.videoElementParent.requestPointerLock||this.videoElementParent.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,this.videoElementParent.requestPointerLock&&this.videoElementParent.addEventListener("click",this.onRequestLockListener),document.addEventListener("pointerlockchange",this.onLockStateChangeListener),document.addEventListener("mozpointerlockchange",this.onLockStateChangeListener),this.videoElementParent.addEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.addEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.addEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.addEventListener("dblclick",this.onMouseDblClickListener)}unregister(){const e=document.pointerLockElement||document.mozPointerLockElement;document.exitPointerLock&&e===this.videoElementParent&&document.exitPointerLock(),this.videoElementParent.removeEventListener("click",this.onRequestLockListener),document.removeEventListener("pointerlockchange",this.onLockStateChangeListener),document.removeEventListener("mozpointerlockchange",this.onLockStateChangeListener),document.removeEventListener("mousemove",this.onMouseMoveListener),this.videoElementParent.removeEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.removeEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.removeEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.removeEventListener("dblclick",this.onMouseDblClickListener),super.unregister()}onRequestLock(){this.videoElementParent.requestPointerLock()}onLockStateChange(){(document.pointerLockElement||document.mozPointerLockElement)===this.videoElementParent?(i.Vy.Info("Pointer locked"),document.addEventListener("mousemove",this.onMouseMoveListener)):(i.Vy.Info("The pointer lock status is now unlocked"),document.removeEventListener("mousemove",this.onMouseMoveListener),this.activeKeys.getActiveKeys().forEach(e=>{this.streamMessageController.toStreamerHandlers.get("KeyUp")([e])}))}onMouseDown(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseDown")([e.button,this.normalizedCoord.x,this.normalizedCoord.y])}onMouseUp(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseUp")([e.button,this.normalizedCoord.x,this.normalizedCoord.y])}onMouseMove(e){if(!this.videoPlayer.isVideoReady())return;const t=this.videoPlayer.getVideoParentElement().clientWidth,n=this.videoPlayer.getVideoParentElement().clientHeight;for(this.x+=e.movementX,this.y+=e.movementY;this.x>t;)this.x-=t;for(;this.y>n;)this.y-=n;for(;this.x<0;)this.x+=t;for(;this.y<0;)this.y+=n;this.normalizedCoord=this.coordinateConverter.translateUnsigned(this.x,this.y);const i=this.coordinateConverter.translateSigned(e.movementX,e.movementY);this.streamMessageController.toStreamerHandlers.get("MouseMove")([this.normalizedCoord.x,this.normalizedCoord.y,i.x,i.y])}onMouseWheel(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseWheel")([e.wheelDelta,this.normalizedCoord.x,this.normalizedCoord.y])}onMouseDblClick(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseDouble")([e.button,this.normalizedCoord.x,this.normalizedCoord.y])}}},4438(e,t,n){n.d(t,{h:()=>i});class i{}i.backSpace=8,i.shift=16,i.control=17,i.alt=18,i.rightShift=253,i.rightControl=254,i.rightAlt=255},7633(e,t,n){n.d(t,{s:()=>s});var i=n(948);class s{constructor(e,t,n){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.streamMessageController=e,this.videoPlayer=t,this.coordinateConverter=n,this.videoElementParent=t.getVideoElement(),this.onTouchStartListener=this.onTouchStart.bind(this),this.onTouchEndListener=this.onTouchEnd.bind(this),this.onTouchMoveListener=this.onTouchMove.bind(this)}register(){this.videoElementParent.addEventListener("touchstart",this.onTouchStartListener),this.videoElementParent.addEventListener("touchend",this.onTouchEndListener),this.videoElementParent.addEventListener("touchmove",this.onTouchMoveListener)}unregister(){this.videoElementParent.removeEventListener("touchstart",this.onTouchStartListener),this.videoElementParent.removeEventListener("touchend",this.onTouchEndListener),this.videoElementParent.removeEventListener("touchmove",this.onTouchMoveListener)}rememberTouch(e){const t=this.fingers.pop();void 0===t&&i.Vy.Info("exhausted touch identifiers"),this.fingerIds.set(e.identifier,t)}forgetTouch(e){this.fingers.push(this.fingerIds.get(e.identifier)),this.fingers.sort(function(e,t){return t-e}),this.fingerIds.delete(e.identifier)}onTouchStart(e){if(this.videoPlayer.isVideoReady()){for(let t=0;t<e.changedTouches.length;t++)this.rememberTouch(e.changedTouches[t]);this.emitTouchData("TouchStart",e.changedTouches),e.preventDefault()}}onTouchEnd(e){if(this.videoPlayer.isVideoReady()){this.emitTouchData("TouchEnd",e.changedTouches);for(let t=0;t<e.changedTouches.length;t++)this.forgetTouch(e.changedTouches[t]);e.preventDefault()}}onTouchMove(e){this.videoPlayer.isVideoReady()&&(this.emitTouchData("TouchMove",e.touches),e.preventDefault())}emitTouchData(e,t){if(!this.videoPlayer.isVideoReady())return;const n=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),s=this.streamMessageController.toStreamerHandlers;for(let r=0;r<t.length;r++){const o=1,a=t[r],l=a.clientX-n.left,d=a.clientY-n.top;i.Vy.Info(`F${this.fingerIds.get(a.identifier)}=(${l}, ${d})`);const c=this.coordinateConverter.translateUnsigned(l,d);switch(e){case"TouchStart":s.get("TouchStart")([o,c.x,c.y,this.fingerIds.get(a.identifier),this.maxByteValue*(a.force>0?a.force:1),c.inRange?1:0]);break;case"TouchEnd":s.get("TouchEnd")([o,c.x,c.y,this.fingerIds.get(a.identifier),this.maxByteValue*a.force,c.inRange?1:0]);break;case"TouchMove":s.get("TouchMove")([o,c.x,c.y,this.fingerIds.get(a.identifier),this.maxByteValue*(a.force>0?a.force:1),c.inRange?1:0])}}}}},7764(e,t,n){n.d(t,{P:()=>s});var i=n(8888);class s{constructor(e,t,n){this.streamMessageController=e,this.videoPlayer=t,this.coordinateConverter=n,this.onTouchStartListener=this.onTouchStart.bind(this),this.onTouchEndListener=this.onTouchEnd.bind(this),this.onTouchMoveListener=this.onTouchMove.bind(this),this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect()}register(){document.addEventListener("touchstart",this.onTouchStartListener),document.addEventListener("touchend",this.onTouchEndListener),document.addEventListener("touchmove",this.onTouchMoveListener)}unregister(){document.removeEventListener("touchstart",this.onTouchStartListener),document.removeEventListener("touchend",this.onTouchEndListener),document.removeEventListener("touchmove",this.onTouchMoveListener)}onTouchStart(e){if(this.videoPlayer.isVideoReady()&&e.target===this.videoPlayer.getVideoElement()){if(null==this.fakeTouchFinger){const t=e.changedTouches[0];this.fakeTouchFinger={id:t.identifier,x:t.clientX-this.videoElementParentClientRect.left,y:t.clientY-this.videoElementParentClientRect.top};const n=this.videoPlayer.getVideoParentElement(),s=new MouseEvent("mouseenter",t);n.dispatchEvent(s);const r=this.coordinateConverter.translateUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.streamMessageController.toStreamerHandlers.get("MouseDown")([i.w.mainButton,r.x,r.y])}e.preventDefault()}}onTouchEnd(e){if(!this.videoPlayer.isVideoReady()||null==this.fakeTouchFinger)return;const t=this.videoPlayer.getVideoParentElement(),n=this.streamMessageController.toStreamerHandlers;for(let s=0;s<e.changedTouches.length;s++){const r=e.changedTouches[s];if(r.identifier===this.fakeTouchFinger.id){const e=r.clientX-this.videoElementParentClientRect.left,s=r.clientY-this.videoElementParentClientRect.top,o=this.coordinateConverter.translateUnsigned(e,s);n.get("MouseUp")([i.w.mainButton,o.x,o.y]);const a=new MouseEvent("mouseleave",r);t.dispatchEvent(a),this.fakeTouchFinger=null;break}}e.preventDefault()}onTouchMove(e){if(!this.videoPlayer.isVideoReady()||null==this.fakeTouchFinger)return;const t=this.streamMessageController.toStreamerHandlers;for(let n=0;n<e.touches.length;n++){const i=e.touches[n];if(i.identifier===this.fakeTouchFinger.id){const e=i.clientX-this.videoElementParentClientRect.left,n=i.clientY-this.videoElementParentClientRect.top,s=this.coordinateConverter.translateUnsigned(e,n),r=this.coordinateConverter.translateSigned(e-this.fakeTouchFinger.x,n-this.fakeTouchFinger.y);t.get("MouseMove")([s.x,s.y,r.x,r.y]),this.fakeTouchFinger.x=e,this.fakeTouchFinger.y=n;break}}e.preventDefault()}}},2807(e,t,n){n.d(t,{E:()=>s});var i=n(4568);class s{constructor(e){this.toStreamerMessagesProvider=e,this.controllers=[]}updateStatus(e,t,n){if(e.gamepad){const s=t.getPose(e.gripSpace,n);if(!s)return;let r=0;e.profiles.includes("htc-vive")?r=1:e.profiles.includes("oculus-touch")&&(r=2),this.toStreamerMessagesProvider.toStreamerHandlers.get("XRSystem")([r]);let o=2;switch(e.handedness){case"left":o=0;break;case"right":o=1}const a=s.transform.matrix,l=[];for(let e=0;e<16;e++)l[e]=new Float32Array([a[e]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get("XRControllerTransform")([l[0],l[4],l[8],l[12],l[1],l[5],l[9],l[13],l[2],l[6],l[10],l[14],l[3],l[7],l[11],l[15],o]),void 0===this.controllers[o]&&(this.controllers[o]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[o].prevState=(0,i.L)(e.gamepad)),this.controllers[o].currentState=(0,i.L)(e.gamepad);const d=this.controllers[o],c=d.currentState,h=d.prevState;for(let e=0;e<c.buttons.length;e++){const t=c.buttons[e],n=h.buttons[e];if(t.pressed){const i=n.pressed?1:0;this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([o,e,i,t.value])}else n.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([o,e,0]);if(t.touched){const t=n.touched?1:0;this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonTouched")([o,e,t])}else n.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonTouchReleased")([o,e,0])}for(let e=0;e<c.axes.length;e++){const t=c.axes[e];t!=h.axes[e]&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRAnalog")([o,e,t])}this.controllers[o].prevState=c}}}},6679(e,t,n){n.d(t,{F:()=>c});var i=n(5683),s=n(8749),r=n(9904),o=n(434),a=n(5016),l=n(156),d=n(948);class c{constructor(){this.inboundVideoStats=new i.IR,this.inboundAudioStats=new i.$o,this.datachannelStats=new s.L,this.outboundVideoStats=new o.k,this.outboundAudioStats=new o.k,this.remoteOutboundAudioStats=new o.G,this.remoteOutboundVideoStats=new o.G,this.sessionStats=new a.Y,this.streamStats=new l.I,this.codecs=new Map}processStats(e){this.localCandidates=new Array,this.remoteCandidates=new Array,this.candidatePairs=new Array,e.forEach(e=>{switch(e.type){case"candidate-pair":this.handleCandidatePair(e);break;case"certificate":case"media-source":case"media-playout":case"peer-connection":case"remote-inbound-rtp":break;case"codec":this.handleCodec(e);break;case"data-channel":this.handleDataChannel(e);break;case"inbound-rtp":this.handleInboundRTP(e);break;case"local-candidate":this.handleLocalCandidate(e);break;case"outbound-rtp":this.handleLocalOutbound(e);break;case"remote-candidate":this.handleRemoteCandidate(e);break;case"remote-outbound-rtp":this.handleRemoteOutbound(e);break;case"track":this.handleTrack(e);break;case"transport":this.handleTransport(e);break;case"stream":this.handleStream(e);break;default:d.Vy.Error("unhandled Stat Type"),d.Vy.Info(e)}})}handleStream(e){this.streamStats=e}handleCandidatePair(e){this.candidatePairs.push(e)}handleDataChannel(e){this.datachannelStats.bytesReceived=e.bytesReceived,this.datachannelStats.bytesSent=e.bytesSent,this.datachannelStats.dataChannelIdentifier=e.dataChannelIdentifier,this.datachannelStats.id=e.id,this.datachannelStats.label=e.label,this.datachannelStats.messagesReceived=e.messagesReceived,this.datachannelStats.messagesSent=e.messagesSent,this.datachannelStats.protocol=e.protocol,this.datachannelStats.state=e.state,this.datachannelStats.timestamp=e.timestamp}handleLocalCandidate(e){const t=new r.y;t.label="local-candidate",t.address=e.address,t.port=e.port,t.protocol=e.protocol,t.candidateType=e.candidateType,t.id=e.id,t.relayProtocol=e.relayProtocol,t.transportId=e.transportId,this.localCandidates.push(t)}handleRemoteCandidate(e){const t=new r.y;t.label="remote-candidate",t.address=e.address,t.port=e.port,t.protocol=e.protocol,t.id=e.id,t.candidateType=e.candidateType,t.relayProtocol=e.relayProtocol,t.transportId=e.transportId,this.remoteCandidates.push(t)}handleInboundRTP(e){switch(e.kind){case"video":e.bytesReceived>this.inboundVideoStats.bytesReceived&&e.timestamp>this.inboundVideoStats.timestamp&&(this.inboundVideoStats.bitrate=8*(e.bytesReceived-this.inboundVideoStats.bytesReceived)/(e.timestamp-this.inboundVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate));for(const t in e)this.inboundVideoStats[t]=e[t];break;case"audio":e.bytesReceived>this.inboundAudioStats.bytesReceived&&e.timestamp>this.inboundAudioStats.timestamp&&(this.inboundAudioStats.bitrate=8*(e.bytesReceived-this.inboundAudioStats.bytesReceived)/(e.timestamp-this.inboundAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate));for(const t in e)this.inboundAudioStats[t]=e[t];break;default:d.Vy.Error(`Kind should be audio or video, we got ${e.kind} - that's unsupported.`)}}handleLocalOutbound(e){const t="audio"===e.kind?this.outboundAudioStats:this.outboundVideoStats;t.active=e.active,t.codecId=e.codecId,t.bytesSent=e.bytesSent,t.frameHeight=e.frameHeight,t.frameWidth=e.frameWidth,t.framesEncoded=e.framesEncoded,t.framesPerSecond=e.framesPerSecond,t.headerBytesSent=e.headerBytesSent,t.id=e.id,t.keyFramesEncoded=e.keyFramesEncoded,t.kind=e.kind,t.mediaSourceId=e.mediaSourceId,t.mid=e.mid,t.nackCount=e.nackCount,t.packetsSent=e.packetsSent,t.qpSum=e.qpSum,t.qualityLimitationDurations=e.qualityLimitationDurations,t.qualityLimitationReason=e.qualityLimitationReason,t.remoteId=e.remoteId,t.retransmittedBytesSent=e.retransmittedBytesSent,t.rid=e.rid,t.scalabilityMode=e.scalabilityMode,t.ssrc=e.ssrc,t.targetBitrate=e.targetBitrate,t.timestamp=e.timestamp,t.totalEncodeTime=e.totalEncodeTime,t.totalEncodeBytesTarget=e.totalEncodeBytesTarget,t.totalPacketSendDelay=e.totalPacketSendDelay,t.transportId=e.transportId}handleRemoteOutbound(e){const t="audio"===e.kind?this.remoteOutboundAudioStats:this.remoteOutboundVideoStats;t.bytesSent=e.bytesSent,t.codecId=e.codecId,t.id=e.id,t.kind=e.kind,t.localId=e.localId,t.packetsSent=e.packetsSent,t.remoteTimestamp=e.remoteTimestamp,t.reportsSent=e.reportsSent,t.roundTripTimeMeasurements=e.roundTripTimeMeasurements,t.ssrc=e.ssrc,t.timestamp=e.timestamp,t.totalRoundTripTime=e.totalRoundTripTime,t.transportId=e.transportId}handleTrack(e){"track"!==e.type||"video_label"!==e.trackIdentifier&&"video"!==e.kind||(this.inboundVideoStats.framesDropped=e.framesDropped,this.inboundVideoStats.framesReceived=e.framesReceived,this.inboundVideoStats.frameHeight=e.frameHeight,this.inboundVideoStats.frameWidth=e.frameWidth)}handleTransport(e){this.transportStats=e}handleCodec(e){const t=e.id;this.codecs.set(t,e)}handleSessionStatistics(e,t,n){const i=Date.now()-e;this.sessionStats.runTime=new Date(i).toISOString().substr(11,8).toString();const s=null===t?"Not sent yet":t?"true":"false";this.sessionStats.controlsStreamInput=s,this.sessionStats.videoEncoderAvgQP=n}isNumber(e){return"number"==typeof e&&isFinite(e)}getActiveCandidatePair(){if(void 0===this.candidatePairs)return null;if(this.transportStats){const e=this.candidatePairs.find(e=>e.id===this.transportStats.selectedCandidatePairId);return void 0===e?null:e}const e=this.candidatePairs.find(e=>e.selected);return void 0===e?null:e}}},9904(e,t,n){n.d(t,{y:()=>i});class i{}},8749(e,t,n){n.d(t,{L:()=>i});class i{}},5683(e,t,n){n.d(t,{$o:()=>i,IR:()=>s});class i{}class s{}},7937(e,t,n){n.d(t,{b3:()=>r});class i{}class s{}class r{constructor(){this.latestSenderRecvClockOffset=null}calculate(e,t){const n=new o,i=this.getRTTMs(e);if(null!=i){n.rttMs=i;const s=this.getCaptureSource(t);if(null!=s){const t=this.calculateSenderLatency(e,s);null!==t&&(n.senderLatencyMs=t)}}return void 0!==e.inboundVideoStats.totalProcessingDelay&&void 0!==e.inboundVideoStats.framesDecoded&&(n.averageProcessingDelayMs=e.inboundVideoStats.totalProcessingDelay/e.inboundVideoStats.framesDecoded*1e3),void 0!==e.inboundVideoStats.jitterBufferDelay&&void 0!==e.inboundVideoStats.jitterBufferEmittedCount&&(n.averageJitterBufferDelayMs=e.inboundVideoStats.jitterBufferDelay/e.inboundVideoStats.jitterBufferEmittedCount*1e3),void 0!==e.inboundVideoStats.framesDecoded&&void 0!==e.inboundVideoStats.totalDecodeTime&&(n.averageDecodeLatencyMs=e.inboundVideoStats.totalDecodeTime/e.inboundVideoStats.framesDecoded*1e3),void 0!==e.inboundVideoStats.totalAssemblyTime&&void 0!==e.inboundVideoStats.framesAssembledFromMultiplePackets&&(n.averageAssemblyDelayMs=e.inboundVideoStats.totalAssemblyTime/e.inboundVideoStats.framesAssembledFromMultiplePackets*1e3),void 0!==e.inboundVideoStats.googTimingFrameInfo&&e.inboundVideoStats.googTimingFrameInfo.length>0&&(n.frameTiming=this.extractFrameTimingInfo(e.inboundVideoStats.googTimingFrameInfo)),void 0!==n.frameTiming&&void 0!==n.frameTiming.captureToSendLatencyMs&&void 0!==n.averageProcessingDelayMs&&void 0!==n.rttMs&&(n.averageE2ELatency=n.frameTiming.captureToSendLatencyMs+.5*n.rttMs+n.averageProcessingDelayMs),null!=n.senderLatencyMs&&void 0!==n.averageProcessingDelayMs&&void 0!==n.rttMs&&(n.averageE2ELatency=n.senderLatencyMs+.5*n.rttMs+n.averageProcessingDelayMs),n}extractFrameTimingInfo(e){const t=new s,n=e.split(",");return 15===n.length&&(t.rtpTimestamp=Number.parseInt(n[0]),t.captureTimestamp=Number.parseInt(n[1]),t.encodeStartTimestamp=Number.parseInt(n[2]),t.encodeFinishTimestamp=Number.parseInt(n[3]),t.packetizerFinishTimestamp=Number.parseInt(n[4]),t.pacerExitTimestamp=Number.parseInt(n[5]),t.networkTimestamp1=Number.parseInt(n[6]),t.networkTimestamp2=Number.parseInt(n[7]),t.receiveStart=Number.parseInt(n[8]),t.receiveFinish=Number.parseInt(n[9]),t.decodeStart=Number.parseInt(n[10]),t.decodeFinish=Number.parseInt(n[11]),t.renderTime=Number.parseInt(n[12]),t.isOutlier=Number.parseInt(n[13])>0,t.isTriggeredByTimer=Number.parseInt(n[14])>0,t.encoderLatencyMs=t.encodeFinishTimestamp-t.encodeStartTimestamp,t.packetizeLatencyMs=t.packetizerFinishTimestamp-t.encodeFinishTimestamp,t.pacerLatencyMs=t.pacerExitTimestamp-t.packetizerFinishTimestamp,t.captureToSendLatencyMs=t.pacerExitTimestamp-t.captureTimestamp),t}calculateSenderLatency(e,t){const n=t.captureTimestamp+t.senderCaptureTimeOffset;let i=this.calculateSenderReceiverClockOffset(e);if(null==i){if(null==this.latestSenderRecvClockOffset)return null;i=this.latestSenderRecvClockOffset}else this.latestSenderRecvClockOffset=i;const s=n+i-22089888e5;return t.timestamp-s}getCaptureSource(e){e=e.filter(e=>"video"===e.track.kind);for(const t of e){const e=t.getSynchronizationSources().concat(t.getContributingSources());for(const t of e)if(void 0!==t.captureTimestamp&&void 0!==t.senderCaptureTimeOffset&&void 0!==t.timestamp){const e=new i;return e.timestamp=t.timestamp,e.captureTimestamp=t.captureTimestamp,e.senderCaptureTimeOffset=t.senderCaptureTimeOffset,e}}return null}calculateSenderReceiverClockOffset(e){if(void 0===e.remoteOutboundVideoStats||void 0===e.remoteOutboundVideoStats.timestamp||void 0===e.remoteOutboundVideoStats.remoteTimestamp)return null;const t=e.remoteOutboundVideoStats.timestamp,n=e.remoteOutboundVideoStats.remoteTimestamp,i=this.getRTTMs(e);return void 0!==t&&void 0!==n&&null!==i?t-(n+.5*i):null}getRTTMs(e){const t=e.getActiveCandidatePair();return t&&void 0!==t.currentRoundTripTime?1e3*t.currentRoundTripTime:e.remoteOutboundVideoStats&&void 0!==e.remoteOutboundVideoStats.totalRoundTripTime&&void 0!==e.remoteOutboundVideoStats.roundTripTimeMeasurements&&e.remoteOutboundVideoStats.roundTripTimeMeasurements>0?e.remoteOutboundVideoStats.totalRoundTripTime/e.remoteOutboundVideoStats.roundTripTimeMeasurements*1e3:e.remoteOutboundAudioStats&&void 0!==e.remoteOutboundAudioStats.totalRoundTripTime&&void 0!==e.remoteOutboundAudioStats.roundTripTimeMeasurements&&e.remoteOutboundAudioStats.roundTripTimeMeasurements>0?e.remoteOutboundAudioStats.totalRoundTripTime/e.remoteOutboundAudioStats.roundTripTimeMeasurements*1e3:null}}class o{constructor(){this.senderLatencyMs=void 0,this.senderLatencyAbsCaptureTimeMs=void 0,this.rttMs=void 0,this.averageProcessingDelayMs=void 0,this.averageJitterBufferDelayMs=void 0,this.averageDecodeLatencyMs=void 0,this.averageAssemblyDelayMs=void 0,this.averageE2ELatency=void 0,this.frameTiming=void 0}}},434(e,t,n){n.d(t,{G:()=>s,k:()=>i});class i{}class s{}},1615(e,t,n){n.d(t,{J:()=>h});var i=n(948),s=n(223),r=n(6679),o=n(7963),a=n(3507),l=n(9046),d=n(7937),c=function(e,t,n,i){return new(n||(n=Promise))(function(s,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}l((i=i.apply(e,t||[])).next())})};class h{constructor(e,t,n){this.config=t,this.createPeerConnection(e,n),this.latencyCalculator=new d.b3}createPeerConnection(e,t){this.config.isFlagEnabled(s.iI.ForceTURN)&&(e.iceTransportPolicy="relay",i.Vy.Info("Forcing TURN usage by setting ICE Transport Policy in peer connection config.")),this.peerConnection=new RTCPeerConnection(e),this.peerConnection.onsignalingstatechange=e=>this.handleSignalStateChange(e),this.peerConnection.oniceconnectionstatechange=e=>this.handleIceConnectionStateChange(e),this.peerConnection.onicegatheringstatechange=e=>this.handleIceGatheringStateChange(e),this.peerConnection.ontrack=e=>this.handleOnTrack(e),this.peerConnection.onicecandidate=e=>this.handleIceCandidate(e),this.peerConnection.ondatachannel=e=>this.handleDataChannel(e),this.aggregatedStats=new r.F,this.preferredCodec=t,this.updateCodecSelection=!0}createOffer(e,t){return c(this,void 0,void 0,function*(){i.Vy.Info("Create Offer");const n="localhost"===location.hostname||"127.0.0.1"===location.hostname,r="https:"===location.protocol;let o=t.isFlagEnabled(s.iI.UseMic),a=t.isFlagEnabled(s.iI.UseCamera);!o&&!a||n||r||(o=!1,a=!1,i.Vy.Error("Microphone and Webcam access in the browser will not work if you are not on HTTPS or localhost. Disabling mic and webcam access."),i.Vy.Error("For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.setupTransceiversAsync(o,a).finally(()=>{var t;null===(t=this.peerConnection)||void 0===t||t.createOffer(e).then(e=>{var t;this.showTextOverlayConnecting(),e.sdp=this.mungeSDP(e.sdp,o),null===(t=this.peerConnection)||void 0===t||t.setLocalDescription(e),this.onSendWebRTCOffer(e)}).catch(()=>{this.showTextOverlaySetupFailure()})})})}receiveOffer(e,t){return c(this,void 0,void 0,function*(){var n;i.Vy.Info("Receive Offer"),this.isFirefox()&&(e.sdp=e.sdp.replace(/^a=extmap:\d+ http:\/\/www\.webrtc\.org\/experiments\/rtp-hdrext\/abs-capture-time\r\n/gm,"")),null===(n=this.peerConnection)||void 0===n||n.setRemoteDescription(e).then(()=>{this.onSetRemoteDescription(e);const n="localhost"===location.hostname||"127.0.0.1"===location.hostname,r="https:"===location.protocol;let o=t.isFlagEnabled(s.iI.UseMic),a=t.isFlagEnabled(s.iI.UseCamera);!o&&!a||n||r||(o=!1,a=!1,i.Vy.Error("Microphone and Webcam access in the browser will not work if you are not on HTTPS or localhost. Disabling mic and webcam access."),i.Vy.Error("For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.config.setOptionSettingOptions(s.mY.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(e)),this.setupTransceiversAsync(o,a).finally(()=>{var e;null===(e=this.peerConnection)||void 0===e||e.createAnswer().then(e=>{var t;return e.sdp=this.mungeSDP(e.sdp,o),null===(t=this.peerConnection)||void 0===t?void 0:t.setLocalDescription(e)}).then(()=>{var e;this.onSetLocalDescription(null===(e=this.peerConnection)||void 0===e?void 0:e.currentLocalDescription)}).catch(e=>{i.Vy.Error(`createAnswer() failed - ${e}`)})})})})}receiveAnswer(e){var t;null===(t=this.peerConnection)||void 0===t||t.setRemoteDescription(e),this.config.setOptionSettingOptions(s.mY.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(e))}generateStats(){this.peerConnection.getStats().then(e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats);const t=this.latencyCalculator.calculate(this.aggregatedStats,this.peerConnection.getReceivers());if(this.onLatencyCalculated(t),this.updateCodecSelection&&this.aggregatedStats.inboundVideoStats.codecId){const e=this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId);if(void 0===e)return;const t=e.mimeType.replace("video/","");let n=t;e.sdpFmtpLine&&""!==e.sdpFmtpLine.trim()&&(n=`${t} ${e.sdpFmtpLine.trim()}`);const i=this.config.getSettingOption(s.mY.PreferredCodec).options;if(i.includes(n))return void this.config.setOptionSettingValue(s.mY.PreferredCodec,n);const r=i.filter(e=>-1!==e.indexOf(t));if(r.length>0)return void this.config.setOptionSettingValue(s.mY.PreferredCodec,r[0])}})}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(e,t){let n=e.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,"$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r\n"),i="maxaveragebitrate=510000;";return t&&(i+="sprop-maxcapturerate=48000;"),i+=this.config.isFlagEnabled(s.iI.ForceMonoAudio)?"stereo=0;":"stereo=1;",i+="useinbandfec=1",n=n.replace("useinbandfec=1",i),this.config.isFlagEnabled(s.iI.EnableCaptureTimeExt)&&!this.isFirefox()&&(n=l.p.addVideoHeaderExtensionToSdp(n,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time")),n}isFirefox(){return navigator.userAgent.indexOf("Firefox")>0}handleOnIce(e){var t;i.Vy.Info("peerconnection handleOnIce"),this.config.isFlagEnabled(s.iI.ForceTURN)&&e.candidate.indexOf("relay")<0?i.Vy.Info(`Dropping candidate because it was not TURN relay. | Type= ${e.type} | Protocol= ${e.protocol} | Address=${e.address} | Port=${e.port} |`):null===(t=this.peerConnection)||void 0===t||t.addIceCandidate(e)}handleSignalStateChange(e){i.Vy.Info("signaling state change: "+e)}handleIceConnectionStateChange(e){i.Vy.Info("ice connection state change: "+e),this.onIceConnectionStateChange(e)}handleIceGatheringStateChange(e){i.Vy.Info("ice gathering state change: "+JSON.stringify(e))}handleOnTrack(e){e.streams.length<1||"probator"==e.streams[0].id||("video"==e.track.kind&&(this.videoTrack=e.track),"audio"==e.track.kind&&(this.audioTrack=e.track),this.onTrack(e))}handleIceCandidate(e){this.onPeerIceCandidate(e)}handleDataChannel(e){this.onDataChannel(e)}onTrack(e){}onIceConnectionStateChange(e){}onPeerIceCandidate(e){}onDataChannel(e){}fuzzyIntersectUEAndBrowserCodecs(e){const t=new Array,n=this.parseAvailableCodecs(e),i=this.config.getSettingOption(s.mY.PreferredCodec).options;for(const e of n)if(i.includes(e))t.push(e);else{const n=e.split(" ")[0];for(const e of i)if(e.includes(n)){t.push(e);break}}return t}setupTransceiversAsync(e,t){return c(this,void 0,void 0,function*(){var n,i,s,r,o,a,l,d;let c=!1;for(const e of null!==(i=null===(n=this.peerConnection)||void 0===n?void 0:n.getTransceivers())&&void 0!==i?i:[])if(e&&e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind){c=!0;break}if(t?yield this.setupVideoSender(c):c||null===(s=this.peerConnection)||void 0===s||s.addTransceiver("video",{direction:"recvonly"}),RTCRtpReceiver.getCapabilities&&""!=this.preferredCodec)for(const e of null!==(o=null===(r=this.peerConnection)||void 0===r?void 0:r.getTransceivers())&&void 0!==o?o:[])if(e&&e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind&&e.setCodecPreferences){const t=this.preferredCodec.split(" "),n={mimeType:"video/"+t[0],clockRate:9e4,sdpFmtpLine:t[1]?t[1]:""},i=[n];RTCRtpReceiver.getCapabilities("video").codecs.forEach(e=>{(e.mimeType!=n.mimeType||(null==e?void 0:e.sdpFmtpLine)!=(null==n?void 0:n.sdpFmtpLine))&&i.push(e)});for(const e of i)void 0!==(null==e?void 0:e.sdpFmtpLine)&&""!==e.sdpFmtpLine||delete e.sdpFmtpLine;e.setCodecPreferences(i)}let h=!1;for(const e of null!==(l=null===(a=this.peerConnection)||void 0===a?void 0:a.getTransceivers())&&void 0!==l?l:[])if(e&&e.receiver&&e.receiver.track&&"audio"===e.receiver.track.kind){h=!0;break}e?yield this.setupAudioSender(h):h||null===(d=this.peerConnection)||void 0===d||d.addTransceiver("audio",{direction:"recvonly"})})}setupVideoSender(e){return c(this,void 0,void 0,function*(){var t,n,i,s;const r=yield navigator.mediaDevices.getUserMedia({video:!0});if(r)if(e){for(const e of null!==(n=null===(t=this.peerConnection)||void 0===t?void 0:t.getTransceivers())&&void 0!==n?n:[])if(a.V.canTransceiverReceiveVideo(e))for(const t of r.getTracks())t.kind&&"video"==t.kind&&(e.sender.replaceTrack(t),e.direction="sendrecv")}else for(const e of r.getTracks())e.kind&&"video"==e.kind&&(null===(i=this.peerConnection)||void 0===i||i.addTransceiver(e,{direction:"sendrecv"}));else e||null===(s=this.peerConnection)||void 0===s||s.addTransceiver("video",{direction:"recvonly"})})}setupAudioSender(e){return c(this,void 0,void 0,function*(){var t,n,i,s;const r=yield navigator.mediaDevices.getUserMedia({video:!1,audio:{autoGainControl:!1,channelCount:1,echoCancellation:!1,latency:0,noiseSuppression:!1,sampleRate:48e3,sampleSize:16,volume:1}});if(r)if(e){for(const e of null!==(n=null===(t=this.peerConnection)||void 0===t?void 0:t.getTransceivers())&&void 0!==n?n:[])if(a.V.canTransceiverReceiveAudio(e))for(const t of r.getTracks())t.kind&&"audio"==t.kind&&(e.sender.replaceTrack(t),e.direction="sendrecv")}else for(const e of r.getTracks())e.kind&&"audio"==e.kind&&(null===(i=this.peerConnection)||void 0===i||i.addTransceiver(e,{direction:"sendrecv"}));else e||null===(s=this.peerConnection)||void 0===s||s.addTransceiver("audio",{direction:"recvonly"})})}onVideoStats(e){}onLatencyCalculated(e){}onSendWebRTCOffer(e){}onSetRemoteDescription(e){}onSetLocalDescription(e){}showTextOverlayConnecting(){}showTextOverlaySetupFailure(){}parseAvailableCodecs(e){if(!RTCRtpReceiver.getCapabilities)return["Only available on Chrome"];const t=[],n=(0,o.splitSections)(e.sdp);return n.shift(),n.forEach(e=>{const{codecs:n}=(0,o.parseRtpParameters)(e),i=/(VP\d|H26\d|AV1).*/;n.forEach(e=>{const n=e.name+" "+Object.keys(e.parameters||{}).map(t=>t+"="+e.parameters[t]).join(";");if(null!==i.exec(n)){"VP9"==e.name&&(e.parameters={"profile-id":"0"});const n=e.name+" "+Object.keys(e.parameters||{}).map(t=>t+"="+e.parameters[t]).join(";");t.push(n)}})}),t}}},5016(e,t,n){n.d(t,{Y:()=>i});class i{}},156(e,t,n){n.d(t,{I:()=>i});class i{}},9307(e,t,n){n.d(t,{z:()=>u});var i=n(223),s=n(9139),r=n(948),o=n(6077),a=n(9689),l=n(474),d=n(9355),c=n(3507),h=n(9629);class u{constructor(e,t){this.allowConsoleCommands=!1,this.config=e,(null==t?void 0:t.videoElementParent)&&(this._videoElementParent=t.videoElementParent),this._eventEmitter=new o.R5,this.configureSettings(),this.setWebRtcPlayerController(new s.n(this.config,this)),this._webXrController=new a.R(this._webRtcController),this._setupWebRtcTCPRelayDetection=this._setupWebRtcTCPRelayDetection.bind(this),this._eventEmitter.addEventListener("webRtcConnected",e=>{this._eventEmitter.addEventListener("statsReceived",this._setupWebRtcTCPRelayDetection)})}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement("div"),this._videoElementParent.id="videoElementParent"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(i.iI.IsQualityController,e=>{!0!==e||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()}),this.config._addOnSettingChangedListener(i.iI.AFKDetection,e=>{this._webRtcController.setAfkEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.MatchViewportResolution,()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()}),this.config._addOnSettingChangedListener(i.iI.HoveringMouseMode,e=>{this.config.setFlagLabel(i.iI.HoveringMouseMode,`Control Scheme: ${e?"Hovering":"Locked"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(i.iI.MouseInput))}),this.config._addOnSettingChangedListener(i.iI.KeyboardInput,e=>{this._webRtcController.setKeyboardInputEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.MouseInput,e=>{this._webRtcController.setMouseInputEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.FakeMouseWithTouches,e=>{this._webRtcController.setTouchInputEnabled(this.config.isFlagEnabled(i.iI.TouchInput))}),this.config._addOnSettingChangedListener(i.iI.TouchInput,e=>{this._webRtcController.setTouchInputEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.GamepadInput,e=>{this._webRtcController.setGamePadInputEnabled(e)}),this.config._addOnNumericSettingChangedListener(i.k$.MinQP,e=>{r.Vy.Info("-------- Sending MinQP --------"),this._webRtcController.sendEncoderMinQP(e),r.Vy.Info("-------------------------------------------");const t=Math.trunc(100*(1-e/51));this.config.setNumericSetting(i.k$.CompatQualityMax,t)}),this.config._addOnNumericSettingChangedListener(i.k$.MaxQP,e=>{r.Vy.Info("-------- Sending MaxQP --------"),this._webRtcController.sendEncoderMaxQP(e),r.Vy.Info("-------------------------------------------");const t=Math.trunc(100*(1-e/51));this.config.setNumericSetting(i.k$.CompatQualityMin,t)}),this.config._addOnNumericSettingChangedListener(i.k$.MinQuality,e=>{r.Vy.Info("-------- Sending MinQuality --------"),this._webRtcController.sendEncoderMinQuality(e),r.Vy.Info("-------------------------------------------"),this.config.setNumericSetting(i.k$.CompatQualityMin,e)}),this.config._addOnNumericSettingChangedListener(i.k$.MaxQuality,e=>{r.Vy.Info("-------- Sending MaxQuality --------"),this._webRtcController.sendEncoderMaxQuality(e),r.Vy.Info("-------------------------------------------"),this.config.setNumericSetting(i.k$.CompatQualityMax,e)}),this.config._addOnNumericSettingChangedListener(i.k$.CompatQualityMin,e=>{e=51-e/100*51,r.Vy.Info("-------- Sending MinQP from quality value --------"),this._webRtcController.sendEncoderMaxQP(e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.CompatQualityMax,e=>{e=51-e/100*51,r.Vy.Info("-------- Sending MaxQP from quality value --------"),this._webRtcController.sendEncoderMinQP(e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.WebRTCMinBitrate,e=>{r.Vy.Info("-------- Sending web rtc settings --------"),this._webRtcController.sendWebRTCMinBitrate(1e3*e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.WebRTCMaxBitrate,e=>{r.Vy.Info("-------- Sending web rtc settings --------"),this._webRtcController.sendWebRTCMaxBitrate(1e3*e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.WebRTCFPS,e=>{r.Vy.Info("-------- Sending web rtc settings --------"),this._webRtcController.sendWebRTCFps(e),r.Vy.Info("-------------------------------------------")}),this.config._addOnOptionSettingChangedListener(i.mY.PreferredCodec,e=>{this._webRtcController&&this._webRtcController.setPreferredCodec(e)}),this.config._registerOnChangeEvents(this._eventEmitter)}_onInputControlOwnership(e){this._inputController=e}setWebRtcPlayerController(e){this._webRtcController=e,this._webRtcController.setPreferredCodec(this.config.getSettingOption(i.mY.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new o.y6),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new o.oK),this._webRtcController.tryReconnect("Reconnecting...")}disconnect(){this._eventEmitter.dispatchEvent(new o.iu),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(i.iI.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}unmuteMicrophone(e=!1){if(!this.config.isFlagEnabled("UseMic"))return e?(this.config.setFlagEnabled("UseMic",!0),void this.reconnect()):void r.Vy.Warning("Trying to unmute mic, but PixelStreaming was initialized with no microphone track. Call with forceEnable == true to re-connect with a mic track.");this.setMicrophoneMuted(!1)}muteMicrophone(){this.config.isFlagEnabled("UseMic")?this.setMicrophoneMuted(!0):r.Vy.Info("Trying to mute mic, but PixelStreaming has no microphone track, so sending sound is already disabled.")}setMicrophoneMuted(e){var t,n,i,s;for(const r of null!==(s=null===(i=null===(n=null===(t=this._webRtcController)||void 0===t?void 0:t.peerConnectionController)||void 0===n?void 0:n.peerConnection)||void 0===i?void 0:i.getTransceivers())&&void 0!==s?s:[])c.V.canTransceiverSendAudio(r)&&(r.sender.track.enabled=!e)}unmuteCamera(e=!1){if(!this.config.isFlagEnabled("UseCamera"))return e?(this.config.setFlagEnabled("UseCamera",!0),void this.reconnect()):void r.Vy.Warning("Trying to unmute video, but PixelStreaming was initialized with no video track. Call with forceEnable == true to re-connect with a video track.");this.setCameraMuted(!1)}muteCamera(){this.config.isFlagEnabled("UseCamera")?this.setCameraMuted(!0):r.Vy.Info("Trying to mute camera, but PixelStreaming has no video track, so sending video is already disabled.")}setCameraMuted(e){var t,n,i,s;for(const r of null!==(s=null===(i=null===(n=null===(t=this._webRtcController)||void 0===t?void 0:t.peerConnectionController)||void 0===n?void 0:n.peerConnection)||void 0===i?void 0:i.getTransceivers())&&void 0!==s?s:[])c.V.canTransceiverSendVideo(r)&&(r.sender.track.enabled=!e)}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new o.nV)}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new o.xV)}_onWebRtcSdpOffer(e){this._eventEmitter.dispatchEvent(new o.PC({sdp:e}))}_onWebRtcSdpAnswer(e){this._eventEmitter.dispatchEvent(new o.zx({sdp:e}))}_onLatencyCalculated(e){this._eventEmitter.dispatchEvent(new o.L0({latencyInfo:e}))}_onStreamLoading(){this._eventEmitter.dispatchEvent(new o.Bg)}_onDisconnect(e,t){this._eventEmitter.dispatchEvent(new o.Nu({eventString:e,allowClickToReconnect:t}))}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new o.Ys)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new o.d4)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new o.tv)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new o.Qy),this._videoStartTime=Date.now()}_onLatencyTestResult(e){this._eventEmitter.dispatchEvent(new o.Cc({latencyTimings:e}))}_onDataChannelLatencyTestResponse(e){this._eventEmitter.dispatchEvent(new o.Fh({response:e}))}_onVideoStats(e){this._videoStartTime&&void 0!==this._videoStartTime||(this._videoStartTime=Date.now()),e.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new o.d_({aggregatedStats:e}))}_onVideoEncoderAvgQP(e){this._eventEmitter.dispatchEvent(new o.x1({avgQP:e}))}_onInitialSettings(e){var t;this._eventEmitter.dispatchEvent(new o.EG({settings:e})),e.PixelStreamingSettings&&(this.allowConsoleCommands=null!==(t=e.PixelStreamingSettings.AllowPixelStreamingCommands)&&void 0!==t&&t,!1===this.allowConsoleCommands&&r.Vy.Info("-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled."));const n=this.config.useUrlParams,s=new h.Z(window.location.search);r.Vy.Info(`using URL parameters ${n}`),e.EncoderSettings&&(e.EncoderSettings.MinQP&&(this.config.setNumericSetting(i.k$.MinQP,n&&s.has(i.k$.MinQP)?Number.parseFloat(s.get(i.k$.MinQP)):e.EncoderSettings.MinQP||0),this.config.setNumericSetting(i.k$.MaxQP,n&&s.has(i.k$.MaxQP)?Number.parseFloat(s.get(i.k$.MaxQP)):e.EncoderSettings.MaxQP||51)),e.EncoderSettings.MinQuality&&(this.config.setNumericSetting(i.k$.MinQuality,n&&s.has(i.k$.MinQuality)?Number.parseFloat(s.get(i.k$.MinQuality)):e.EncoderSettings.MinQuality||0),this.config.setNumericSetting(i.k$.MaxQuality,n&&s.has(i.k$.MaxQuality)?Number.parseFloat(s.get(i.k$.MaxQuality)):e.EncoderSettings.MaxQuality||100)),n&&(s.has(i.k$.CompatQualityMin)&&this.config.setNumericSetting(i.k$.CompatQualityMin,Number.parseFloat(s.get(i.k$.CompatQualityMin))),s.has(i.k$.CompatQualityMax)&&this.config.setNumericSetting(i.k$.CompatQualityMax,Number.parseFloat(s.get(i.k$.CompatQualityMax))))),e.WebRTCSettings&&(this.config.setNumericSetting(i.k$.WebRTCMinBitrate,n&&s.has(i.k$.WebRTCMinBitrate)?Number.parseFloat(s.get(i.k$.WebRTCMinBitrate)):e.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(i.k$.WebRTCMaxBitrate,n&&s.has(i.k$.WebRTCMaxBitrate)?Number.parseFloat(s.get(i.k$.WebRTCMaxBitrate)):e.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(i.k$.WebRTCFPS,n&&s.has(i.k$.WebRTCFPS)?Number.parseFloat(s.get(i.k$.WebRTCFPS)):e.WebRTCSettings.FPS))}_onQualityControlOwnership(e){this.config.setFlagEnabled(i.iI.IsQualityController,e)}_onPlayerCount(e){this._eventEmitter.dispatchEvent(new o.d2({count:e}))}_onSubscribeFailed(e){this._eventEmitter.dispatchEvent(new o._h({message:e}))}_setupWebRtcTCPRelayDetection(e){const t=e.data.aggregatedStats.getActiveCandidatePair();if(null!=t){const n=e.data.aggregatedStats.localCandidates.find(e=>e.id==t.localCandidateId,null);null!=n&&"relay"==n.candidateType&&"tcp"==n.relayProtocol&&this._eventEmitter.dispatchEvent(new o.KB),this._eventEmitter.removeEventListener("statsReceived",this._setupWebRtcTCPRelayDetection)}}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestDataChannelLatencyTest(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._dataChannelLatencyTestController||(this._dataChannelLatencyTestController=new d.I(this._webRtcController.sendDataChannelLatencyTest.bind(this._webRtcController),e=>{this._eventEmitter.dispatchEvent(new o.L7({result:e}))}),this.addEventListener("dataChannelLatencyTestResponse",({data:{response:e}})=>{this._dataChannelLatencyTestController.receive(e)})),this._dataChannelLatencyTestController.start(e))}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(e),!0)}emitCommand(e){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&"ConsoleCommand"in e||(this._webRtcController.emitCommand(e),0))}emitConsoleCommand(e){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(e),0))}sendTextboxEntry(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendTextboxEntry(e),!0)}addResponseEventListener(e,t){this._webRtcController.responseController.addResponseEventListener(e,t)}removeResponseEventListener(e){this._webRtcController.responseController.removeResponseEventListener(e)}dispatchEvent(e){return this._eventEmitter.dispatchEvent(e)}addEventListener(e,t){this._eventEmitter.addEventListener(e,t)}removeEventListener(e,t){this._eventEmitter.removeEventListener(e,t)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(e){this._webRtcController.signallingUrlBuilder=e}get webRtcController(){return this._webRtcController}get signallingProtocol(){return this._webRtcController.protocol}get webXrController(){return this._webXrController}registerMessageHandler(e,t,n){t!==l.Tt.FromStreamer||void 0!==n?t===l.Tt.ToStreamer&&void 0===n?this._webRtcController.streamMessageController.registerMessageHandler(t,e,t=>this._webRtcController.sendMessageController.sendMessageToStreamer(e,t)):this._webRtcController.streamMessageController.registerMessageHandler(t,e,e=>n(e)):r.Vy.Warning(`Unable to register an undefined handler for ${e}`)}get toStreamerHandlers(){return this._webRtcController.streamMessageController.toStreamerHandlers}isReconnecting(){return this._webRtcController.isReconnecting}}},1054(e,t,n){n.d(t,{G:()=>s});var i=n(948);class s{constructor(){this.responseEventListeners=new Map}addResponseEventListener(e,t){this.responseEventListeners.set(e,t)}removeResponseEventListener(e){this.responseEventListeners.delete(e)}onResponse(e){i.Vy.Info("DataChannelReceiveMessageType.Response");const t=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info(t),this.responseEventListeners.forEach(e=>{e(t)})}}},3447(e,t,n){n.d(t,{g:()=>s});var i=n(948);class s{constructor(e,t){this.dataChannelSender=e,this.toStreamerMessagesMapProvider=t}sendMessageToStreamer(e,t){void 0===t&&(t=[]);const n=this.toStreamerMessagesMapProvider.toStreamerMessages.get(e);if(void 0===n)return void i.Vy.Error(`Attempted to send a message to the streamer with message type: ${e}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);if(n.structure&&t&&n.structure.length!==t.length)return void i.Vy.Error(`Provided message data doesn't match expected layout. Expected [ ${n.structure.map(e=>{switch(e){case"uint8":case"uint16":case"int16":case"float":case"double":default:return"number";case"string":return"string"}}).toString()} ] but received [ ${t.map(e=>typeof e).toString()} ]`);let s=0;const r=new TextEncoder;t.forEach((e,t)=>{switch(n.structure[t]){case"uint8":s+=1;break;case"uint16":case"int16":s+=2;break;case"float":s+=4;break;case"double":s+=8;break;case"string":s+=2,s+=2*r.encode(e).length}});const o=new DataView(new ArrayBuffer(s+1));o.setUint8(0,n.id);let a=1;t.forEach((e,t)=>{switch(n.structure[t]){case"uint8":o.setUint8(a,e),a+=1;break;case"uint16":o.setUint16(a,e,!0),a+=2;break;case"int16":o.setInt16(a,e,!0),a+=2;break;case"float":o.setFloat32(a,e,!0),a+=4;break;case"double":o.setFloat64(a,e,!0),a+=8;break;case"string":o.setUint16(a,e.length,!0),a+=2;for(let t=0;t<e.length;t++)o.setUint16(a,e.charCodeAt(t),!0),a+=2}}),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(o.buffer):i.Vy.Info(`Data channel cannot send yet, skipping sending message: ${e} - ${new Uint8Array(o.buffer)}`)}}},474(e,t,n){n.d(t,{QR:()=>r,Tt:()=>i});var i,s=n(948);class r{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new Map,this.fromStreamerMessages=new Map}populateDefaultProtocol(){this.toStreamerMessages.set("IFrameRequest",{id:0,structure:[]}),this.toStreamerMessages.set("RequestQualityControl",{id:1,structure:[]}),this.toStreamerMessages.set("FpsRequest",{id:2,structure:[]}),this.toStreamerMessages.set("AverageBitrateRequest",{id:3,structure:[]}),this.toStreamerMessages.set("StartStreaming",{id:4,structure:[]}),this.toStreamerMessages.set("StopStreaming",{id:5,structure:[]}),this.toStreamerMessages.set("LatencyTest",{id:6,structure:["string"]}),this.toStreamerMessages.set("RequestInitialSettings",{id:7,structure:[]}),this.toStreamerMessages.set("TestEcho",{id:8,structure:[]}),this.toStreamerMessages.set("DataChannelLatencyTest",{id:9,structure:[]}),this.toStreamerMessages.set("UIInteraction",{id:50,structure:["string"]}),this.toStreamerMessages.set("Command",{id:51,structure:["string"]}),this.toStreamerMessages.set("TextboxEntry",{id:52,structure:["string"]}),this.toStreamerMessages.set("KeyDown",{id:60,structure:["uint8","uint8"]}),this.toStreamerMessages.set("KeyUp",{id:61,structure:["uint8"]}),this.toStreamerMessages.set("KeyPress",{id:62,structure:["uint16"]}),this.toStreamerMessages.set("MouseEnter",{id:70,structure:[]}),this.toStreamerMessages.set("MouseLeave",{id:71,structure:[]}),this.toStreamerMessages.set("MouseDown",{id:72,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.set("MouseUp",{id:73,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.set("MouseMove",{id:74,structure:["uint16","uint16","int16","int16"]}),this.toStreamerMessages.set("MouseWheel",{id:75,structure:["int16","uint16","uint16"]}),this.toStreamerMessages.set("MouseDouble",{id:76,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.set("TouchStart",{id:80,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.set("TouchEnd",{id:81,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.set("TouchMove",{id:82,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.set("GamepadConnected",{id:93,structure:[]}),this.toStreamerMessages.set("GamepadButtonPressed",{id:90,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.set("GamepadButtonReleased",{id:91,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.set("GamepadAnalog",{id:92,structure:["uint8","uint8","double"]}),this.toStreamerMessages.set("GamepadDisconnected",{id:94,structure:["uint8"]}),this.fromStreamerMessages.set(0,"QualityControlOwnership"),this.fromStreamerMessages.set(1,"Response"),this.fromStreamerMessages.set(2,"Command"),this.fromStreamerMessages.set(3,"FreezeFrame"),this.fromStreamerMessages.set(4,"UnfreezeFrame"),this.fromStreamerMessages.set(5,"VideoEncoderAvgQP"),this.fromStreamerMessages.set(6,"LatencyTest"),this.fromStreamerMessages.set(7,"InitialSettings"),this.fromStreamerMessages.set(8,"FileExtension"),this.fromStreamerMessages.set(9,"FileMimeType"),this.fromStreamerMessages.set(10,"FileContents"),this.fromStreamerMessages.set(11,"TestEcho"),this.fromStreamerMessages.set(12,"InputControlOwnership"),this.fromStreamerMessages.set(13,"GamepadResponse"),this.fromStreamerMessages.set(14,"DataChannelLatencyTest"),this.fromStreamerMessages.set(255,"Protocol")}registerMessageHandler(e,t,n){switch(e){case i.ToStreamer:this.toStreamerHandlers.set(t,n);break;case i.FromStreamer:this.fromStreamerHandlers.set(t,n);break;default:s.Vy.Info(`Unknown message direction ${e}`)}}}!function(e){e[e.ToStreamer=0]="ToStreamer",e[e.FromStreamer=1]="FromStreamer"}(i||(i={}))},6403(e,t,n){n.d(t,{v:()=>i});class i{constructor(e){this.sendMessageController=e}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer("RequestQualityControl")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer("FpsRequest")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer("StartStreaming")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer("StopStreaming")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")}}},114(e,t,n){n.d(t,{C:()=>s});var i=n(948);class s{static getSupportedVideoCodecs(){const e=[];if(!RTCRtpReceiver.getCapabilities)return i.Vy.Warning("RTCRtpReceiver.getCapabilities API is not available in your browser, defaulting to guess that we support H.264."),e.push("H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f"),e;const t=/(VP\d|H26\d|AV1).*/,n=RTCRtpReceiver.getCapabilities("video");return n?(n.codecs.forEach(n=>{const i=n.mimeType.split("/")[1]+" "+(n.sdpFmtpLine||"");null!==t.exec(i)&&e.push(i)}),e):(e.push("H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f"),e)}}},6077(e,t,n){n.d(t,{Bg:()=>w,CE:()=>v,Cc:()=>O,EG:()=>V,EQ:()=>y,FJ:()=>I,Fh:()=>N,Gi:()=>F,KB:()=>W,Kr:()=>o,L0:()=>A,L7:()=>_,Lz:()=>x,Nu:()=>g,PC:()=>c,Qy:()=>b,R5:()=>z,RW:()=>k,S_:()=>s,Si:()=>B,Ys:()=>u,_h:()=>D,d2:()=>H,d4:()=>m,d_:()=>L,ie:()=>P,iu:()=>C,jG:()=>R,jr:()=>r,mC:()=>i,nV:()=>h,oK:()=>E,qM:()=>U,tv:()=>p,vL:()=>T,vx:()=>M,x1:()=>a,xV:()=>l,y6:()=>S,ys:()=>f,zx:()=>d});class i extends Event{constructor(e){super("afkWarningActivate"),this.data=e}}class s extends Event{constructor(e){super("afkWarningUpdate"),this.data=e}}class r extends Event{constructor(){super("afkWarningDeactivate")}}class o extends Event{constructor(){super("afkTimedOut")}}class a extends Event{constructor(e){super("videoEncoderAvgQP"),this.data=e}}class l extends Event{constructor(){super("webRtcSdp")}}class d extends Event{constructor(e){super("webRtcSdpAnswer"),this.data=e}}class c extends Event{constructor(e){super("webRtcSdpOffer"),this.data=e}}class h extends Event{constructor(){super("webRtcAutoConnect")}}class u extends Event{constructor(){super("webRtcConnecting")}}class m extends Event{constructor(){super("webRtcConnected")}}class p extends Event{constructor(){super("webRtcFailed")}}class g extends Event{constructor(e){super("webRtcDisconnected"),this.data=e}}class f extends Event{constructor(e){super("dataChannelOpen"),this.data=e}}class v extends Event{constructor(e){super("dataChannelClose"),this.data=e}}class y extends Event{constructor(e){super("dataChannelError"),this.data=e}}class b extends Event{constructor(){super("videoInitialized")}}class w extends Event{constructor(){super("streamLoading")}}class S extends Event{constructor(){super("streamConnect")}}class C extends Event{constructor(){super("streamDisconnect")}}class E extends Event{constructor(){super("streamReconnect")}}class T extends Event{constructor(e){super("playStreamError"),this.data=e}}class x extends Event{constructor(){super("playStream")}}class I extends Event{constructor(e){super("playStreamRejected"),this.data=e}}class M extends Event{constructor(e){super("loadFreezeFrame"),this.data=e}}class k extends Event{constructor(){super("hideFreezeFrame")}}class L extends Event{constructor(e){super("statsReceived"),this.data=e}}class R extends Event{constructor(e){super("streamerListMessage"),this.data=e}}class P extends Event{constructor(e){super("StreamerIDChangedMessage"),this.data=e}}class O extends Event{constructor(e){super("latencyTestResult"),this.data=e}}class A extends Event{constructor(e){super("latencyCalculated"),this.data=e}}class F extends Event{constructor(e){super("showOnScreenKeyboard"),this.data=e}}class N extends Event{constructor(e){super("dataChannelLatencyTestResponse"),this.data=e}}class _ extends Event{constructor(e){super("dataChannelLatencyTestResult"),this.data=e}}class D extends Event{constructor(e){super("subscribeFailed"),this.data=e}}class V extends Event{constructor(e){super("initialSettings"),this.data=e}}class B extends Event{constructor(e){super("settingsChanged"),this.data=e}}Event,Event;class U extends Event{constructor(e){super("xrFrame"),this.data=e}}class H extends Event{constructor(e){super("playerCount"),this.data=e}}class W extends Event{constructor(){super("webRtcTCPRelayDetected")}}class z extends EventTarget{dispatchEvent(e){return super.dispatchEvent(e)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}}},3281(e,t,n){n.d(t,{X:()=>r,f:()=>s});var i=n(948);class s{static setExtensionFromBytes(e,t){t.receiving||(t.mimetype="",t.extension="",t.receiving=!0,t.valid=!1,t.chunks=0,t.data=[],t.timestampStart=(new Date).getTime(),i.Vy.Info("Received first chunk of file"));const n=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info(n),t.extension=n}static setMimeTypeFromBytes(e,t){t.receiving||(t.mimetype="",t.extension="",t.receiving=!0,t.valid=!1,t.chunks=0,t.data=[],t.timestampStart=(new Date).getTime(),i.Vy.Info("Received first chunk of file"));const n=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info(n),t.mimetype=n}static setContentsFromBytes(e,t){if(!t.receiving)return;t.chunks=Math.ceil(new DataView(e.slice(1,5).buffer).getInt32(0,!0)/16379);const n=e.slice(5);if(t.data.push(n),i.Vy.Info(`Received file chunk: ${t.data.length}/${t.chunks}`),t.data.length===t.chunks){t.receiving=!1,t.valid=!0,i.Vy.Info("Received complete file");const e=(new Date).getTime()-t.timestampStart,n=Math.round(16384*t.chunks/e);i.Vy.Info(`Average transfer bitrate: ${n}kb/s over ${e/1e3} seconds`)}else t.data.length>t.chunks&&(t.receiving=!1,i.Vy.Error(`Received bigger file than advertised: ${t.data.length}/${t.chunks}`))}}class r{constructor(){this.mimetype="",this.extension="",this.receiving=!1,this.chunks=0,this.data=[],this.valid=!1}}},9629(e,t,n){n.d(t,{Z:()=>i});class i{constructor(e){this._urlParams={};const t=new URLSearchParams(e);for(const[e,n]of t)this._urlParams[e.toLowerCase()]=n}has(e){return e.toLowerCase()in this._urlParams}get(e){return this.has(e)?this._urlParams[e.toLowerCase()]:null}}},2139(e,t,n){n.d(t,{g:()=>i});class i{reconfigure(e,t){const n=e.height/e.width,i=t.height/t.width;this.playerIsLarger=n>i,this.playerSize=e,this.ratio=this.playerIsLarger?n/i:i/n}translateUnsigned(e,t){const n=this.playerIsLarger?e/this.playerSize.width:this.ratio*(e/this.playerSize.width-.5)+.5,i=this.playerIsLarger?this.ratio*(t/this.playerSize.height-.5)+.5:t/this.playerSize.height;return n<0||n>1||i<0||i>1?{inRange:!1,x:65535,y:65535}:{inRange:!0,x:65536*n,y:65536*i}}translateSigned(e,t){return{x:32767*(this.playerIsLarger?e/(.5*this.playerSize.width):this.ratio*e/(.5*this.playerSize.width)),y:32767*(this.playerIsLarger?this.ratio*t/(.5*this.playerSize.height):t/(.5*this.playerSize.height))}}untranslateUnsigned(e,t){const n=this.playerIsLarger?e/65536:(e/65536-.5)/this.ratio+.5,i=this.playerIsLarger?(t/65536-.5)/this.ratio+.5:t/65536;return{x:n*this.playerSize.width,y:i*this.playerSize.height}}}},3507(e,t,n){n.d(t,{V:()=>i});class i{static isVideoTransceiver(e){return this.canTransceiverReceiveVideo(e)||this.canTransceiverSendVideo(e)}static canTransceiverReceiveVideo(e){return!!e&&("sendrecv"===e.direction||"recvonly"===e.direction)&&e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind}static canTransceiverSendVideo(e){return!!e&&("sendrecv"===e.direction||"sendonly"===e.direction)&&e.sender&&e.sender.track&&"video"===e.sender.track.kind}static isAudioTransceiver(e){return this.canTransceiverReceiveAudio(e)||this.canTransceiverSendAudio(e)}static canTransceiverReceiveAudio(e){return!!e&&("sendrecv"===e.direction||"recvonly"===e.direction)&&e.receiver&&e.receiver.track&&"audio"===e.receiver.track.kind}static canTransceiverSendAudio(e){return!!e&&("sendrecv"===e.direction||"sendonly"===e.direction)&&e.sender&&e.sender.track&&"audio"===e.sender.track.kind}}},9059(e,t,n){n.d(t,{l:()=>s});var i=n(948);class s{constructor(e){this.videoElementProvider=e,this.audioElement=document.createElement("Audio"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(e){if(i.Vy.Info("handleOnTrack "+JSON.stringify(e.streams)),e.streams.length<1||"probator"==e.streams[0].id)return;const t=this.videoElementProvider.getVideoElement();if(e.track&&i.Vy.Info("Got track - "+e.track.kind+" id="+e.track.id+" readyState="+e.track.readyState),"audio"!=e.track.kind)return"video"==e.track.kind&&t.srcObject!==e.streams[0]?(t.srcObject=e.streams[0],void i.Vy.Info("Set video source from video track ontrack.")):void 0;this.CreateAudioTrack(e.streams[0])}CreateAudioTrack(e){const t=this.videoElementProvider.getVideoElement();t.srcObject!=e&&t.srcObject&&t.srcObject!==e&&(this.audioElement.srcObject=e,i.Vy.Info("Created new audio element to play separate audio stream."))}}},6865(e,t,n){n.d(t,{L:()=>r});var i=n(223),s=n(948);class r{constructor(e,t){this.lastTimeResized=(new Date).getTime(),this.videoElement=document.createElement("video"),this.config=t,this.videoElement.id="streamingVideo",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width="100%",this.videoElement.style.height="100%",this.videoElement.style.position="absolute",this.videoElement.style.pointerEvents="all",e.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log("Resolution changed, restyling player, did you forget to override this function?")},this.onMatchViewportResolutionCallback=()=>{console.log("Resolution changed and match viewport resolution is turned on, did you forget to override this function?")},this.videoElement.onclick=()=>{null!=this.audioElement&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener("resize",()=>this.resizePlayerStyle(),!0),window.addEventListener("orientationchange",()=>this.onOrientationChange())}destroy(){this.videoElement.src="",this.videoElement.srcObject=null,this.videoElement.remove(),this.audioElement&&(this.audioElement.src="",this.audioElement.srcObject=null,this.audioElement.remove())}setAudioElement(e){this.audioElement=e}play(){return this.videoElement.muted=this.config.isFlagEnabled(i.iI.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(i.iI.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return void 0!==this.videoElement.readyState&&this.videoElement.readyState>0}hasVideoSource(){return void 0!==this.videoElement.srcObject&&null!==this.videoElement.srcObject}getVideoElement(){return this.videoElement}getVideoParentElement(){var e;return null!==(e=this.videoElement.parentElement)&&void 0!==e?e:void 0}setVideoEnabled(e){this.videoElement.srcObject.getTracks().forEach(t=>t.enabled=e)}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout(()=>{this.resizePlayerStyle()},500)}resizePlayerStyle(){const e=this.getVideoParentElement();e&&(this.updateVideoStreamSize(),e.classList.contains("fixed-size")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute("style","top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;")}updateVideoStreamSize(){if(this.config.isFlagEnabled(i.iI.MatchViewportResolution))if((new Date).getTime()-this.lastTimeResized>300){const e=this.getVideoParentElement();if(!e)return;this.onMatchViewportResolutionCallback(e.clientWidth,e.clientHeight),this.lastTimeResized=(new Date).getTime()}else s.Vy.Info("Resizing too often - skipping"),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout(()=>this.updateVideoStreamSize(),100)}}},9139(e,t,n){n.d(t,{n:()=>L});var i=n(948),s=n(7447),r=n(3532),o=n(9027),a=n(9899),l=n(8496),d=n(9059),c=n(2865),h=n(5785),u=n(4045),m=n(1615),p=n(223),g=n(235),f=n(724),v=n(3281),y=n(1104),b=n(6865),w=n(474),S=n(1054),C=n(3447),E=n(6403),T=n(8236),x=n(2139),I=n(6077),M=n(9629),k=n(114);class L{constructor(e,t){this.shouldShowPlayOverlay=!0,this.autoJoinTimer=void 0,this.config=e,this.pixelStreaming=t,this.responseController=new S.G,this.file=new v.X,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new h.R(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.closeSignalingServer("You have been disconnected due to inactivity.",!1)},this.freezeFrameController=new c.f(this.pixelStreaming.videoElementParent),this.videoPlayer=new b.L(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(e,t)=>{const n={"Resolution.Width":e,"Resolution.Height":t};this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify(n)])},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new d.l(this.videoPlayer),this.coordinateConverter=new x.g,this.sendrecvDataChannelController=new u.a,this.recvDataChannelController=new u.a,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new T.p(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new w.QR,this.transport=new s.T(e.webSocketProtocols),this.protocol=new r.t(this.transport),this.protocol.addListener(o.$W.typeName,e=>this.handleOnConfigMessage(e)),this.protocol.addListener(o.hU.typeName,e=>this.handlePingMessage(e)),this.protocol.addListener(o.q5.typeName,e=>this.handleStreamerListMessage(e)),this.protocol.addListener(o.yB.typeName,e=>this.handleSubscribeFailedMessage(e)),this.protocol.addListener(o.l8.typeName,e=>this.handleStreamerIDChangedMessage(e)),this.protocol.addListener(o.Rd.typeName,e=>{const t=e;this.pixelStreaming._onPlayerCount(t.count)}),this.protocol.addListener(o.ZF.typeName,e=>this.handleWebRtcAnswer(e)),this.protocol.addListener(o.x.typeName,e=>this.handleWebRtcOffer(e)),this.protocol.addListener(o.Rq.typeName,e=>this.handleWebRtcSFUPeerDatachannels(e)),this.protocol.addListener(o.BI.typeName,e=>{const t=e;this.handleIceCandidate(t.candidate)}),this.protocol.transport.addListener("open",()=>{const e=a.o(o.zW);this.protocol.sendMessage(e),this.reconnectAttempt=0,this.isReconnecting=!1}),this.protocol.transport.addListener("error",()=>{i.Vy.Error("Got a transport error.")}),this.protocol.transport.addListener("close",e=>{const t=this.config.getNumericSettingValue(p.k$.MaxReconnectAttempts),n=this.reconnectAttempt<t,i=(this.forceReconnect||this.enableAutoReconnect&&t>0&&n)&&1001!=e.code,s=!i,r=this.disconnectMessage?this.disconnectMessage:e.reason;this.forceReconnect=!1,this.config.getSettingOption(p.mY.PreferredCodec).options=k.C.getSupportedVideoCodecs(),this.pixelStreaming._onDisconnect(r,s),this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&void 0!==this.statsTimerHandle&&window.clearInterval(this.statsTimerHandle),this.setVideoEncoderAvgQP(0),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),i&&setTimeout(()=>{this.reconnectAttempt++,this.doReconnect(e.reason)},2e3)}),this.sendMessageController=new C.g(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new E.v(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new y.a(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isUsingSVC=!1,this.isQualityController=!1,this.preferredCodec="",this.enableAutoReconnect=!0,this.forceReconnect=!1,this.reconnectAttempt=0,this.isReconnecting=!1,this.config._addOnOptionSettingChangedListener(p.mY.StreamerId,e=>{if(void 0===e||""===e)return;this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=e;const t=a.o(o.B1,{streamerId:e});this.protocol.sendMessage(t)}),this.config._addOnOptionSettingChangedListener(p.mY.PreferredQuality,e=>{if(void 0===e||""===e)return;let t;if(this.isUsingSVC)t=a.o(o.vq,{spatialLayer:+e[1]-1,temporalLayer:+e[3]-1});else{const n=this.config.getSettingOption(p.mY.PreferredQuality).options.indexOf(e);t=a.o(o.vq,{spatialLayer:n,temporalLayer:0})}this.protocol.sendMessage(t)}),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>this.config.getTextSettingValue(p.gw.SignallingServerUrl)}destroyVideoPlayer(){this.videoPlayer.destroy()}handleOnMessage(e){const t=new Uint8Array(e.data);i.Vy.Info("Message incoming:"+t);const n=this.streamMessageController.fromStreamerMessages.get(t[0]);this.streamMessageController.fromStreamerHandlers.get(n)(e.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"QualityControlOwnership",e=>this.onQualityControlOwnership(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Response",e=>this.responseController.onResponse(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Command",e=>{this.onCommand(e)}),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FreezeFrame",e=>this.onFreezeFrameMessage(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"UnfreezeFrame",()=>this.invalidateFreezeFrameAndEnableVideo()),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"VideoEncoderAvgQP",e=>this.handleVideoEncoderAvgQP(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"LatencyTest",e=>this.handleLatencyTestResult(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"DataChannelLatencyTest",e=>this.handleDataChannelLatencyTestResponse(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"InitialSettings",e=>this.handleInitialSettings(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FileExtension",e=>this.onFileExtension(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FileMimeType",e=>this.onFileMimeType(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FileContents",e=>this.onFileContents(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"InputControlOwnership",e=>this.onInputControlOwnership(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"GamepadResponse",e=>this.onGamepadResponse(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Multiplexed",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Protocol",e=>this.onProtocolMessage(e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"IFrameRequest",()=>this.sendMessageController.sendMessageToStreamer("IFrameRequest")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"RequestQualityControl",()=>this.sendMessageController.sendMessageToStreamer("RequestQualityControl")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"FpsRequest",()=>this.sendMessageController.sendMessageToStreamer("FpsRequest")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"AverageBitrateRequest",()=>this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"StartStreaming",()=>this.sendMessageController.sendMessageToStreamer("StartStreaming")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"StopStreaming",()=>this.sendMessageController.sendMessageToStreamer("StopStreaming")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"LatencyTest",e=>this.sendMessageController.sendMessageToStreamer("LatencyTest",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"RequestInitialSettings",()=>this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"UIInteraction",e=>this.sendMessageController.sendMessageToStreamer("UIInteraction",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"Command",e=>this.sendMessageController.sendMessageToStreamer("Command",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TextboxEntry",e=>this.sendMessageController.sendMessageToStreamer("TextboxEntry",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"KeyDown",e=>this.sendMessageController.sendMessageToStreamer("KeyDown",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"KeyUp",e=>this.sendMessageController.sendMessageToStreamer("KeyUp",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"KeyPress",e=>this.sendMessageController.sendMessageToStreamer("KeyPress",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseEnter",e=>this.sendMessageController.sendMessageToStreamer("MouseEnter",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseLeave",e=>this.sendMessageController.sendMessageToStreamer("MouseLeave",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseDown",e=>this.sendMessageController.sendMessageToStreamer("MouseDown",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseUp",e=>this.sendMessageController.sendMessageToStreamer("MouseUp",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseMove",e=>this.sendMessageController.sendMessageToStreamer("MouseMove",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseWheel",e=>this.sendMessageController.sendMessageToStreamer("MouseWheel",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseDouble",e=>this.sendMessageController.sendMessageToStreamer("MouseDouble",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TouchStart",e=>this.sendMessageController.sendMessageToStreamer("TouchStart",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TouchEnd",e=>this.sendMessageController.sendMessageToStreamer("TouchEnd",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TouchMove",e=>this.sendMessageController.sendMessageToStreamer("TouchMove",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadConnected",()=>this.sendMessageController.sendMessageToStreamer("GamepadConnected")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadButtonPressed",e=>this.sendMessageController.sendMessageToStreamer("GamepadButtonPressed",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadButtonReleased",e=>this.sendMessageController.sendMessageToStreamer("GamepadButtonReleased",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadAnalog",e=>this.sendMessageController.sendMessageToStreamer("GamepadAnalog",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadDisconnected",e=>this.sendMessageController.sendMessageToStreamer("GamepadDisconnected",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XREyeViews",e=>this.sendMessageController.sendMessageToStreamer("XREyeViews",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRHMDTransform",e=>this.sendMessageController.sendMessageToStreamer("XRHMDTransform",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRControllerTransform",e=>this.sendMessageController.sendMessageToStreamer("XRControllerTransform",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRSystem",e=>this.sendMessageController.sendMessageToStreamer("XRSystem",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonTouched",e=>this.sendMessageController.sendMessageToStreamer("XRButtonTouched",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonTouchReleased",e=>this.sendMessageController.sendMessageToStreamer("XRButtonTouchReleased",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonPressed",e=>this.sendMessageController.sendMessageToStreamer("XRButtonPressed",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonReleased",e=>this.sendMessageController.sendMessageToStreamer("XRButtonReleased",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRAnalog",e=>this.sendMessageController.sendMessageToStreamer("XRAnalog",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"ChannelRelayStatus",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"Multiplexed",()=>{})}onCommand(e){i.Vy.Info("DataChannelReceiveMessageType.Command");const t=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info("Data Channel Command: "+t);const n=JSON.parse(t);"onScreenKeyboard"===n.command&&this.handleOnScreenKeyboardCommand(n)}handleOnScreenKeyboardCommand(e){var t,n,i,s;const r={showOnScreenKeyboard:null===(t=e.showOnScreenKeyboard)||void 0===t||t,x:null!==(n=e.x)&&void 0!==n?n:0,y:null!==(i=e.y)&&void 0!==i?i:0,contents:null!==(s=e.contents)&&void 0!==s?s:""};this.pixelStreaming.dispatchEvent(new I.Gi(r))}onProtocolMessage(e){try{const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t);Object.prototype.hasOwnProperty.call(n,"Direction")||i.Vy.Error("Malformed protocol received. Ensure the protocol message contains a direction");const s=n.Direction;delete n.Direction,i.Vy.Info(`Received new ${s==w.Tt.FromStreamer?"FromStreamer":"ToStreamer"} protocol. Updating existing protocol...`),Object.keys(n).forEach(e=>{const t=n[e];switch(s){case w.Tt.ToStreamer:if(!Object.prototype.hasOwnProperty.call(t,"id"))return void i.Vy.Error(`ToStreamer->${e} protocol definition was malformed as it didn't contain at least an id\n\n Definition was: ${JSON.stringify(t,null,2)}`);if("UIInteraction"===e||"Command"===e||"LatencyTest"===e)return;this.streamMessageController.toStreamerHandlers.get(e)?this.streamMessageController.toStreamerMessages.set(e,t):i.Vy.Error(`There was no registered handler for "${e}" - try adding one using registerMessageHandler(MessageDirection.ToStreamer, "${e}", myHandler)`);break;case w.Tt.FromStreamer:if(!Object.prototype.hasOwnProperty.call(t,"id"))return void i.Vy.Error(`FromStreamer->${e} protocol definition was malformed as it didn't contain at least an id\n\n Definition was: ${JSON.stringify(t,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(e)?this.streamMessageController.fromStreamerMessages.set(t.id,e):i.Vy.Error(`There was no registered handler for "${t}" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, "${e}", myHandler)`);break;default:i.Vy.Error(`Unknown direction: ${s}`)}}),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){i.Vy.Info(e)}}onInputControlOwnership(e){const t=new Uint8Array(e);i.Vy.Info("DataChannelReceiveMessageType.InputControlOwnership");const n=new Boolean(t[1]).valueOf();i.Vy.Info(`Received input controller message - will your input control the stream: ${n}`),this.pixelStreaming._onInputControlOwnership(n)}onGamepadResponse(e){const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t);this.gamePadController.onGamepadResponseReceived(n.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(e){e?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}tryReconnect(e){this.forceReconnect=!0,this.doReconnect(e)}doReconnect(e){this.protocol?(this.isReconnecting=!0,this.protocol.isConnected()?(this.forceReconnect||(this.disconnectMessage=`${e} Reconnecting.`),this.closeSignalingServer(e,!0)):(this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer())):i.Vy.Info("This player has no protocol connection.")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new I.vx({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),!0===this.shouldShowPlayOverlay?(i.Vy.Info("showing play overlay"),this.resizePlayerStyle()):(i.Vy.Info("showing freeze frame"),this.freezeFrameController.showFreezeFrame()),setTimeout(()=>{this.videoPlayer.setVideoEnabled(!1)},this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(e){i.Vy.Info("DataChannelReceiveMessageType.FreezeFrame");const t=new Uint8Array(e);this.freezeFrameController.processFreezeFrameMessage(t,()=>this.loadFreezeFrameOrShowPlayOverlay())}invalidateFreezeFrameAndEnableVideo(){i.Vy.Info("DataChannelReceiveMessageType.FreezeFrame"),setTimeout(()=>{this.pixelStreaming.dispatchEvent(new I.RW),this.freezeFrameController.hideFreezeFrame()},this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(e){const t=new Uint8Array(e);v.f.setExtensionFromBytes(t,this.file)}onFileMimeType(e){const t=new Uint8Array(e);v.f.setMimeTypeFromBytes(t,this.file)}onFileContents(e){const t=new Uint8Array(e);v.f.setContentsFromBytes(t,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const e="Could not play video stream because the video player was not initialized correctly.";return this.pixelStreaming.dispatchEvent(new I.vL({message:e})),i.Vy.Error(e),void this.closeSignalingServer("Stream not initialized correctly",!1)}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(p.iI.TouchInput)),this.pixelStreaming.dispatchEvent(new I.Lz),this.streamController.audioElement.srcObject){const e=this.config.isFlagEnabled(p.iI.StartVideoMuted);this.streamController.audioElement.muted=e,e?this.playVideo():this.streamController.audioElement.play().then(()=>{this.playVideo()}).catch(e=>{i.Vy.Info(e),i.Vy.Info("Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new I.FJ({reason:e}))})}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else i.Vy.Warning("Cannot play stream, the video element has no srcObject to play.")}playVideo(){this.videoPlayer.play().catch(e=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),i.Vy.Info(e),i.Vy.Info("Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new I.FJ({reason:e}))})}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(p.iI.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){this.locallyClosed=!1,this.enableAutoReconnect=!0,this.disconnectMessage=null;const e=this.signallingUrlBuilder();this.protocol.connect(e);const t=this.config.getNumericSettingValue(p.k$.KeepaliveDelay);t>0&&(this.keepalive=new l.P(this.protocol,t),this.keepalive.onTimeout=()=>{i.Vy.Error("Protocol timeout"),this.protocol.disconnect()})}startSession(e){if(this.peerConfig=e,this.config.isFlagEnabled(p.iI.ForceTURN)&&!this.checkTurnServerAvailability(e))return i.Vy.Info("No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead"),void this.closeSignalingServer("TURN cannot be forced, closing connection. Please use STUN instead.",!1);this.peerConnectionController=new m.J(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=e=>{this.handleVideoStats(e)},this.peerConnectionController.onLatencyCalculated=e=>{this.pixelStreaming._onLatencyCalculated(e)},this.peerConnectionController.onSendWebRTCOffer=e=>{this.handleSendWebRTCOffer(e)},this.peerConnectionController.onSetLocalDescription=e=>{this.handleSendWebRTCAnswer(e)},this.peerConnectionController.onSetRemoteDescription=e=>{this.pixelStreaming._onWebRtcSdpOffer(e)},this.peerConnectionController.onPeerIceCandidate=e=>this.handleSendIceCandidate(e),this.peerConnectionController.onDataChannel=e=>this.handleDataChannel(e),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let t=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!t&&["connected","completed"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),t=!0)},this.peerConnectionController.onTrack=e=>this.streamController.handleOnTrack(e)}checkTurnServerAvailability(e){if(!e.iceServers)return i.Vy.Info("A turn sever was not found"),!1;for(const t of e.iceServers)for(const e of t.urls)if(e.includes("turn"))return i.Vy.Info(`A turn sever was found at ${e}`),!0;return i.Vy.Info("A turn sever was not found"),!1}handleOnConfigMessage(e){this.resizePlayerStyle(),this.startSession(e.peerConnectionOptions)}handlePingMessage(e){this.protocol.sendMessage(a.o(o.H2,{time:e.time}))}handleStreamerListMessage(e){i.Vy.Info(`Got streamer list ${e.ids}`);let t="";const n=this.config.getSettingOption(p.mY.StreamerId);n.selected.toString().trim()&&(t=n.selected);const s=[...e.ids];s.unshift(""),this.config.setOptionSettingOptions(p.mY.StreamerId,s);let r="";const l=this.config.isFlagEnabled(p.iI.WaitForStreamer),d=this.config.getNumericSettingValue(p.k$.MaxReconnectAttempts),c=this.config.getNumericSettingValue(p.k$.StreamerAutoJoinInterval),h=this.config.useUrlParams,u=new M.Z(window.location.search);h&&u.has(p.mY.StreamerId)?t=u.get(p.mY.StreamerId):this.subscribedStream&&(t=this.subscribedStream),t&&e.ids.includes(t)?r=t:t&&l||1!=e.ids.length||(r=e.ids[0]),r?(this.reconnectAttempt=0,this.isReconnecting=!1,this.config.setOptionSettingValue(p.mY.StreamerId,r)):l&&(this.reconnectAttempt<d?(this.reconnectAttempt++,this.isReconnecting=!0,setTimeout(()=>{this.protocol.sendMessage(a.o(o.zW))},c)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.enableAutoReconnect=!1)),this.pixelStreaming.dispatchEvent(new I.jG({messageStreamerList:e,autoSelectedStreamerId:r,wantedStreamerId:t}))}handleSubscribeFailedMessage(e){this.reconnectAttempt=0,this.isReconnecting=!1,this.enableAutoReconnect=!1,this.pixelStreaming._onSubscribeFailed(e.message)}handleStreamerIDChangedMessage(e){const t=e.newID,n=this.config.getSettingOption(p.mY.StreamerId),i=n.onChange;n.onChange=()=>{};const s=n.options;for(let e=0;e<s.length;++e)if(s[e]==this.subscribedStream){s[e]=t;break}n.options=s,n.selected=t,n.onChange=i,this.subscribedStream=e.newID,this.pixelStreaming.dispatchEvent(new I.ie({newID:t}))}handleWebRtcAnswer(e){i.Vy.Info(`Got answer sdp ${e.sdp}`);const t={sdp:e.sdp,type:"answer"};this.peerConnectionController.receiveAnswer(t),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(e){i.Vy.Info(`Got offer sdp ${e.sdp}`),this.isUsingSFU=!!e.sfu&&e.sfu,this.isUsingSVC=!!e.scalabilityMode&&"L1T1"!=e.scalabilityMode,(this.isUsingSFU||this.isUsingSVC)&&(this.peerConnectionController.preferredCodec="");const t=e.scalabilityMode?e.scalabilityMode:"L1T1";let n=["Default"];if(this.isUsingSFU)if(this.isUsingSVC){n=[];const e=+t[1],i=+t[3];for(let t=1;t<=e;t++)for(let e=1;e<=i;e++)n.push(`S${t}T${e}`)}else n=["Low","Medium","High"];this.config.setOptionSettingOptions(p.mY.PreferredQuality,n),this.config.setOptionSettingValue(p.mY.PreferredQuality,n.slice(-1)[0]);const s={sdp:e.sdp,type:"offer"};this.peerConnectionController.receiveOffer(s,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(e){const t={ordered:!0,negotiated:!0,id:e.sendStreamId},n=e.sendStreamId!=e.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,n?"send-datachannel":"datachannel",t),n){const t={ordered:!0,negotiated:!0,id:e.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"recv-datachannel",t),this.recvDataChannelController.handleOnOpen=()=>this.protocol.sendMessage(a.o(o.C_)),this.recvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}else this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&void 0!==this.statsTimerHandle&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval(()=>this.getStats(),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(p.iI.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(p.iI.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(p.iI.GamepadInput))}handleIceCandidate(e){i.Vy.Info("Web RTC Controller: onWebRtcIce");const t=new RTCIceCandidate(e);this.peerConnectionController.handleOnIce(t)}handleSendIceCandidate(e){i.Vy.Info("OnIceCandidate"),e.candidate&&e.candidate.candidate&&this.protocol.sendMessage(a.o(o.BI,{candidate:e.candidate}))}handleDataChannel(e){i.Vy.Info("Data channel created for us by browser as we are a receiving peer."),this.sendrecvDataChannelController.dataChannel=e.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(e){i.Vy.Info("Sending the offer to the Server");const t={sdp:e.sdp,minBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMinBitrate),maxBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMaxBitrate)};this.protocol.sendMessage(a.o(o.x,t))}handleSendWebRTCAnswer(e){i.Vy.Info("Sending the answer to the Server");const t={sdp:e.sdp,minBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMinBitrate),maxBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMaxBitrate)};this.protocol.sendMessage(a.o(o.ZF,t)),this.isUsingSFU&&this.protocol.sendMessage(a.o(o.tg)),this.pixelStreaming._onWebRtcSdpAnswer(e)}setUpMouseAndFreezeFrame(){const e=this.videoPlayer.getVideoParentElement(),t=this.videoPlayer.getVideoElement();this.coordinateConverter.reconfigure({width:e.clientWidth,height:e.clientHeight},{width:t.videoWidth,height:t.videoHeight}),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(e,t){var n;this.locallyClosed=!0,this.enableAutoReconnect=t,this.disconnectMessage=e,null===(n=this.protocol)||void 0===n||n.disconnect(1e3,e)}closePeerConnection(){var e;null===(e=this.peerConnectionController)||void 0===e||e.close()}close(){this.closeSignalingServer("",!1),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.streamMessageController.toStreamerHandlers.get("LatencyTest")([JSON.stringify({StartTime:this.latencyStartTime})])}sendDataChannelLatencyTest(e){this.streamMessageController.toStreamerHandlers.get("DataChannelLatencyTest")([JSON.stringify(e)])}sendEncoderMinQP(e){i.Vy.Info(`MinQP=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MinQP":e})])}sendEncoderMaxQP(e){i.Vy.Info(`MaxQP=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MaxQP":e})])}sendEncoderMinQuality(e){i.Vy.Info(`MinQuality=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MinQuality":e})])}sendEncoderMaxQuality(e){i.Vy.Info(`MaxQuality=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MaxQuality":e})])}sendWebRTCMinBitrate(e){i.Vy.Info(`WebRTC Min Bitrate=${e}`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.MinBitrate":e})])}sendWebRTCMaxBitrate(e){i.Vy.Info(`WebRTC Max Bitrate=${e}`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.MaxBitrate":e})])}sendWebRTCFps(e){i.Vy.Info(`WebRTC FPS=${e}`),null!=e&&(this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.Fps":e})]),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.MaxFps":e})]))}sendShowFps(){i.Vy.Info("---- Sending show stat to UE ----"),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"stat.fps":""})])}sendIframeRequest(){i.Vy.Info("---- Sending Request for an IFrame ----"),this.streamMessageController.toStreamerHandlers.get("IFrameRequest")()}emitUIInteraction(e){i.Vy.Info("---- Sending custom UIInteraction message ----"),this.streamMessageController.toStreamerHandlers.get("UIInteraction")([JSON.stringify(e)])}emitCommand(e){i.Vy.Info("---- Sending custom Command message ----"),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify(e)])}emitConsoleCommand(e){i.Vy.Info("---- Sending custom Command:ConsoleCommand message ----"),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({ConsoleCommand:e})])}sendRequestQualityControlOwnership(){i.Vy.Info("---- Sending Request to Control Quality ----"),this.toStreamerMessagesController.SendRequestQualityControl()}sendTextboxEntry(e){var t;i.Vy.Info("---- Sending TextboxEntry message ----"),null===(t=this.streamMessageController.toStreamerHandlers.get("TextboxEntry"))||void 0===t||t([e])}handleLatencyTestResult(e){i.Vy.Info("DataChannelReceiveMessageType.latencyTest");const t=new TextDecoder("utf-16").decode(e.slice(1)),n=new f.Z;Object.assign(n,JSON.parse(t)),n.processFields(),n.testStartTimeMs=this.latencyStartTime,n.browserReceiptTimeMs=Date.now(),n.latencyExcludingDecode=~~(n.browserReceiptTimeMs-n.testStartTimeMs),n.testDuration=~~(n.TransmissionTimeMs-n.ReceiptTimeMs),n.networkLatency=~~(n.latencyExcludingDecode-n.testDuration),n.frameDisplayDeltaTimeMs&&n.browserReceiptTimeMs&&(n.endToEndLatency=(n.frameDisplayDeltaTimeMs,n.networkLatency,~~+n.CaptureToSendMs)),this.pixelStreaming._onLatencyTestResult(n)}handleDataChannelLatencyTestResponse(e){i.Vy.Info("DataChannelReceiveMessageType.dataChannelLatencyResponse");const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t);this.pixelStreaming._onDataChannelLatencyTestResponse(n)}handleInitialSettings(e){i.Vy.Info("DataChannelReceiveMessageType.InitialSettings");const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t),s=new g.C9;n.Encoder&&(s.EncoderSettings=n.Encoder),n.WebRTC&&(s.WebRTCSettings=n.WebRTC),n.PixelStreaming&&(s.PixelStreamingSettings=n.PixelStreaming),n.ConfigOptions&&void 0!==n.ConfigOptions.DefaultToHover&&this.config.setFlagEnabled(p.iI.HoveringMouseMode,!!n.ConfigOptions.DefaultToHover),s.ueCompatible(),i.Vy.Info(t),this.pixelStreaming._onInitialSettings(s)}handleVideoEncoderAvgQP(e){i.Vy.Info("DataChannelReceiveMessageType.VideoEncoderAvgQP");const t=Number(new TextDecoder("utf-16").decode(e.slice(1)));this.setVideoEncoderAvgQP(t)}handleVideoInitialized(){this.pixelStreaming._onVideoInitialized(),this.autoPlayVideoOrSetUpPlayOverlay(),this.resizePlayerStyle(),this.videoPlayer.updateVideoStreamSize()}onQualityControlOwnership(e){const t=new Uint8Array(e);i.Vy.Info("DataChannelReceiveMessageType.QualityControlOwnership"),this.isQualityController=new Boolean(t[1]).valueOf(),i.Vy.Info(`Received quality controller message, will control quality: ${this.isQualityController}`),this.pixelStreaming._onQualityControlOwnership(this.isQualityController)}handleVideoStats(e){this.pixelStreaming._onVideoStats(e)}resizePlayerStyle(){this.videoPlayer.resizePlayerStyle()}setPreferredCodec(e){this.preferredCodec=e,this.peerConnectionController&&(this.peerConnectionController.preferredCodec=e,this.peerConnectionController.updateCodecSelection=!1)}setVideoEncoderAvgQP(e){this.videoAvgQp=e,this.pixelStreaming._onVideoEncoderAvgQP(this.videoAvgQp)}setKeyboardInputEnabled(e){var t;null===(t=this.keyboardController)||void 0===t||t.unregister(),e&&(this.keyboardController=this.inputClassesFactory.registerKeyBoard(this.config))}setMouseInputEnabled(e){var t;if(null===(t=this.mouseController)||void 0===t||t.unregister(),e){const e=this.config.isFlagEnabled(p.iI.HoveringMouseMode)?p.Bs.HoveringMouse:p.Bs.LockedMouse;this.mouseController=this.inputClassesFactory.registerMouse(e)}}setTouchInputEnabled(e){var t;null===(t=this.touchController)||void 0===t||t.unregister(),e&&(this.touchController=this.inputClassesFactory.registerTouch(this.config.isFlagEnabled(p.iI.FakeMouseWithTouches)))}setGamePadInputEnabled(e){var t;null===(t=this.gamePadController)||void 0===t||t.unregister(),e&&(this.gamePadController=this.inputClassesFactory.registerGamePad())}registerDataChannelEventEmitters(e){e.onOpen=(e,t)=>this.pixelStreaming.dispatchEvent(new I.ys({label:e,event:t})),e.onClose=(e,t)=>this.pixelStreaming.dispatchEvent(new I.CE({label:e,event:t})),e.onError=(e,t)=>this.pixelStreaming.dispatchEvent(new I.EQ({label:e,event:t}))}registerMessageHandler(e,t,n){t===w.Tt.FromStreamer&&void 0===n&&i.Vy.Warning(`Unable to register handler for ${e} as no handler was passed`),this.streamMessageController.registerMessageHandler(t,e,i=>void 0===n&&t===w.Tt.ToStreamer?this.sendMessageController.sendMessageToStreamer(e,i):n(i))}}},9689(e,t,n){n.d(t,{R:()=>a});var i=n(948),s=n(2807),r=n(6077),o=n(223);class a{constructor(e){this.xrViewerPose=null,this.EPSILON=1e-7,this.videoTexture=null,this.prevVideoWidth=0,this.prevVideoHeight=0,this.leftView=null,this.rightView=null,this.lastSentLeftEyeProj=null,this.lastSentRightEyeProj=null,this.lastSentRelativeLeftEyePos=null,this.lastSentRelativeRightEyePos=null,this.xrSession=null,this.webRtcController=e,this.xrGamepadController=new s.E(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){if(this.xrSession)this.xrSession.end();else{if(!navigator.xr)return void i.Vy.Error("This browser does not support XR.");navigator.xr.requestSession("immersive-vr",{optionalFeatures:[]}).then(e=>{this.onXrSessionStarted(e)})}}onXrSessionEnded(){i.Vy.Info("XR Session ended"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event("xrSessionEnded"))}initGL(){if(this.gl)return;const e=document.createElement("canvas");this.gl=e.getContext("webgl2",{xrCompatible:!0}),this.gl.clearColor(0,0,0,1)}initShaders(){const e=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(e,"\n attribute vec2 a_position;\n attribute vec2 a_texCoord;\n\n // varyings\n varying vec2 v_texCoord;\n\n void main() {\n gl_Position = vec4(a_position.x, a_position.y, 0, 1);\n // pass the texCoord to the fragment shader\n // The GPU will interpolate this value between points.\n v_texCoord = a_texCoord;\n }\n "),this.gl.compileShader(e);const t=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(t,"\n precision mediump float;\n\n // our texture\n uniform sampler2D u_image;\n\n // the texCoords passed in from the vertex shader.\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord);\n }\n "),this.gl.compileShader(t);const n=this.gl.createProgram();this.gl.attachShader(n,e),this.gl.attachShader(n,t),this.gl.linkProgram(n),this.gl.useProgram(n),this.positionLocation=this.gl.getAttribLocation(n,"a_position"),this.texcoordLocation=this.gl.getAttribLocation(n,"a_texCoord")}updateVideoTexture(){this.videoTexture||(this.videoTexture=this.gl.createTexture(),this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR));const e=this.webRtcController.videoPlayer.getVideoElement().videoHeight,t=this.webRtcController.videoPlayer.getVideoElement().videoWidth;this.prevVideoHeight!=e||this.prevVideoWidth!=t?this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,t,e,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()):this.gl.texSubImage2D(this.gl.TEXTURE_2D,0,0,0,t,e,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.prevVideoHeight=e,this.prevVideoWidth=t}initBuffers(){this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([-1,1,1,1,-1,-1,-1,-1,1,1,1,-1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.texcoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.texcoordLocation,2,this.gl.FLOAT,!1,0,0)}onXrSessionStarted(e){i.Vy.Info("XR Session started"),this.xrSession=e,this.xrSession.addEventListener("end",()=>{this.onXrSessionEnded()}),this.initGL(),this.initShaders(),this.initBuffers(),e.requestReferenceSpace("local").then(t=>{if(this.xrRefSpace=t,this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)}),this.xrSession.supportedFrameRates)for(const t of this.xrSession.supportedFrameRates)90==t&&e.updateTargetFrameRate(90);this.xrSession.requestAnimationFrame(this.onXrFrame.bind(this))}),this.onSessionStarted.dispatchEvent(new Event("xrSessionStarted"))}areArraysEqual(e,t){return e.length===t.length&&e.every((e,n)=>Math.abs(e-t[n])<=this.EPSILON)}arePointsEqual(e,t){return Math.abs(e.x-t.x)>=this.EPSILON&&Math.abs(e.y-t.y)>=this.EPSILON&&Math.abs(e.z-t.z)>=this.EPSILON}sendXRDataToUE(){if(null==this.leftView||null==this.rightView)return;let e=null==this.lastSentLeftEyeProj||null==this.lastSentRightEyeProj||null==this.lastSentRelativeLeftEyePos||null==this.lastSentRelativeRightEyePos;const t=this.leftView.transform.matrix,n=this.leftView.projectionMatrix,i=this.rightView.transform.matrix,s=this.rightView.projectionMatrix,r=this.xrViewerPose.transform.matrix;if(!e&&null!=this.lastSentLeftEyeProj&&null!=this.lastSentRightEyeProj){const t=this.areArraysEqual(n,this.lastSentLeftEyeProj),i=this.areArraysEqual(s,this.lastSentRightEyeProj);e=0==t||0==i}const o=new DOMPointReadOnly(this.leftView.transform.position.x-this.xrViewerPose.transform.position.x,this.leftView.transform.position.y-this.xrViewerPose.transform.position.y,this.leftView.transform.position.z-this.xrViewerPose.transform.position.z,1),a=new DOMPointReadOnly(this.leftView.transform.position.x-this.xrViewerPose.transform.position.x,this.leftView.transform.position.y-this.xrViewerPose.transform.position.y,this.leftView.transform.position.z-this.xrViewerPose.transform.position.z,1);if(!e&&null!=this.lastSentRelativeLeftEyePos&&null!=this.lastSentRelativeRightEyePos){const t=this.arePointsEqual(o,this.lastSentRelativeLeftEyePos),n=this.arePointsEqual(a,this.lastSentRelativeRightEyePos);e=0==t||0==n}e?(this.webRtcController.streamMessageController.toStreamerHandlers.get("XREyeViews")([t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15],n[0],n[4],n[8],n[12],n[1],n[5],n[9],n[13],n[2],n[6],n[10],n[14],n[3],n[7],n[11],n[15],i[0],i[4],i[8],i[12],i[1],i[5],i[9],i[13],i[2],i[6],i[10],i[14],i[3],i[7],i[11],i[15],s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15],r[0],r[4],r[8],r[12],r[1],r[5],r[9],r[13],r[2],r[6],r[10],r[14],r[3],r[7],r[11],r[15]]),this.lastSentLeftEyeProj=n,this.lastSentRightEyeProj=s,this.lastSentRelativeLeftEyePos=o,this.lastSentRelativeRightEyePos=a):this.webRtcController.streamMessageController.toStreamerHandlers.get("XRHMDTransform")([r[0],r[4],r[8],r[12],r[1],r[5],r[9],r[13],r[2],r[6],r[10],r[14],r[3],r[7],r[11],r[15]])}onXrFrame(e,t){if(this.xrViewerPose=t.getViewerPose(this.xrRefSpace),this.xrViewerPose){if(this.updateViews(),null==this.leftView||null==this.rightView)return;this.sendXRDataToUE(),this.updateVideoTexture(),this.render()}this.webRtcController.config.isFlagEnabled(o.iI.XRControllerInput)&&this.xrSession.inputSources.forEach((e,n,i)=>{this.xrGamepadController.updateStatus(e,t,this.xrRefSpace)},this),this.xrSession.requestAnimationFrame((e,t)=>this.onXrFrame(e,t)),this.onFrame.dispatchEvent(new r.qM({time:e,frame:t}))}updateViews(){if(this.xrViewerPose)for(const e of this.xrViewerPose.views)"left"===e.eye?this.leftView=e:"right"===e.eye&&(this.rightView=e)}render(){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,e.framebuffer),this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.drawArrays(this.gl.TRIANGLES,0,6)}static isSessionSupported(e){"https:"!==location.protocol&&i.Vy.Info("WebXR requires https, if you want WebXR use https.");try{if(navigator.xr)return navigator.xr.isSessionSupported(e)}catch(e){return Promise.resolve(!1)}return Promise.resolve(!1)}}},1810(e,t,n){n.d(t,{l:()=>w});var i=n(948),s=n(223),r=n(8486),o=n(7716),a=n(2860),l=n(1630),d=n(1954),c=n(9068),h=n(9924),u=n(4285),m=n(2113),p=n(5117),g=n(3345),f=n(1366),v=n(1664),y=n(5143),b=n(4498);class w{constructor(e){this.editTextModal=null,this._options=e,this.stream=e.stream,this._uiFeatureElement=this.createUIFeaturesElement(),this._rootElement=this.createRootElement(this.stream,this._uiFeatureElement),this.onColorModeChanged=e.onColorModeChanged,this.configUI=new f.j(this.stream.config),this.createOverlays(),(0,y.wM)(e.statsPanelConfig)&&(this.statsPanel=new p.i(e.statsPanelConfig),this.uiFeaturesElement.appendChild(this.statsPanel.rootElement)),(0,y.wM)(e.settingsPanelConfig)&&(this.settingsPanel=new m.O,this.uiFeaturesElement.appendChild(this.settingsPanel.rootElement),this.configureSettings()),e.videoQpIndicatorConfig&&e.videoQpIndicatorConfig.disableIndicator||(this.videoQpIndicator=new g.W(e.videoQpIndicatorConfig),this.uiFeaturesElement.appendChild(this.videoQpIndicator.rootElement)),this.createButtons(),this.registerCallbacks(),this.showConnectOrAutoConnectOverlays(),this.setColorMode(this.configUI.isCustomFlagEnabled(y.ai.LightMode)),this.stream.config._addOnSettingChangedListener(s.iI.HideUI,e=>{this._uiFeatureElement.style.visibility=e?"hidden":"visible"}),this.stream.config.isFlagEnabled(s.iI.HideUI)&&(this._uiFeatureElement.style.visibility="hidden")}createOverlays(){this.disconnectOverlay=new o.T(this.stream.videoElementParent),this.connectOverlay=new r.X(this.stream.videoElementParent),this.playOverlay=new a.z(this.stream.videoElementParent),this.infoOverlay=new l.v(this.stream.videoElementParent),this.errorOverlay=new d.h(this.stream.videoElementParent),this.afkOverlay=new c.n(this.stream.videoElementParent),this.disconnectOverlay.onAction(()=>this.stream.reconnect()),this.connectOverlay.onAction(()=>this.stream.connect()),this.playOverlay.onAction(()=>this.stream.play())}createButtons(){const e=/iPhone/.test(navigator.userAgent),t=/iPad/.test(navigator.userAgent)||/Macintosh/.test(navigator.userAgent)&&"ontouchend"in document,n=navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS"),i=e||!n&&t;void 0===this._options.fullScreenControlsConfig&&i&&(this._options.fullScreenControlsConfig={creationMode:y.ny.Disable});const s={statsButtonType:this._options.statsPanelConfig?this._options.statsPanelConfig.visibilityButtonConfig:void 0,settingsButtonType:this._options.settingsPanelConfig?this._options.settingsPanelConfig.visibilityButtonConfig:void 0,fullscreenButtonType:this._options.fullScreenControlsConfig,xrIconType:this._options.xrControlsConfig,hideControlsInFullscreen:this._options.hideControlsInFullscreen},r=new h.H(s);this.uiFeaturesElement.appendChild(r.rootElement);const o=this._options.fullScreenControlsConfig&&this._options.fullScreenControlsConfig.creationMode===y.ny.UseCustomElement?new b.cW(this._options.fullScreenControlsConfig.customElement):r.fullscreenIcon;o&&(o.fullscreenElement=/iPad|iPhone|iPod/.test(navigator.userAgent)?this.stream.videoElementParent.getElementsByTagName("video")[0]:this.rootElement);const a=r.settingsIcon?r.settingsIcon.rootElement:this._options.settingsPanelConfig.visibilityButtonConfig.customElement;a&&(a.onclick=()=>this.settingsClicked()),this.settingsPanel&&(this.settingsPanel.settingsCloseButton.onclick=()=>this.settingsClicked());const l=r.xrIcon?r.xrIcon.rootElement:this._options.xrControlsConfig.creationMode===y.ny.UseCustomElement?this._options.xrControlsConfig.customElement:void 0;l&&(l.onclick=()=>this.stream.toggleXR());const d=r.statsIcon?r.statsIcon.rootElement:this._options.statsPanelConfig.visibilityButtonConfig.customElement;if(d&&(d.onclick=()=>this.statsClicked()),this.statsPanel&&(this.statsPanel.statsCloseButton.onclick=()=>this.statsClicked()),this.settingsPanel){const e=new u.U("Show FPS","Toggle");e.addOnClickListener(()=>{this.stream.requestShowFps()});const t=new u.U("Restart Stream","Restart");t.addOnClickListener(()=>{this.stream.reconnect()});const n=new u.U("Request keyframe","Request");n.addOnClickListener(()=>{this.stream.requestIframe()});const i=this.configUI.buildSectionWithHeading(this.settingsPanel.settingsContentElement,"Commands");i.appendChild(e.rootElement),i.appendChild(n.rootElement),i.appendChild(t.rootElement)}}configureSettings(){this.configUI.populateSettingsElement(this.settingsPanel.settingsContentElement,this._options.settingsPanelConfig),this.configUI.addCustomFlagOnSettingChangedListener(y.ai.LightMode,e=>{this.configUI.setCustomFlagLabel(y.ai.LightMode,`Color Scheme: ${e?"Light":"Dark"} Mode`),this.setColorMode(e)})}registerCallbacks(){this.stream.addEventListener("afkWarningActivate",({data:{countDown:e,dismissAfk:t}})=>this.showAfkOverlay(e,t)),this.stream.addEventListener("afkWarningUpdate",({data:{countDown:e}})=>this.afkOverlay.updateCountdown(e)),this.stream.addEventListener("afkWarningDeactivate",()=>this.afkOverlay.hide()),this.stream.addEventListener("afkTimedOut",()=>this.afkOverlay.hide()),this.stream.addEventListener("videoEncoderAvgQP",({data:{avgQP:e}})=>this.onVideoEncoderAvgQP(e)),this.stream.addEventListener("webRtcSdp",()=>this.onWebRtcSdp()),this.stream.addEventListener("webRtcAutoConnect",()=>this.onWebRtcAutoConnect()),this.stream.addEventListener("webRtcConnecting",()=>this.onWebRtcConnecting()),this.stream.addEventListener("webRtcConnected",()=>this.onWebRtcConnected()),this.stream.addEventListener("webRtcFailed",()=>this.onWebRtcFailed()),this.stream.addEventListener("webRtcDisconnected",({data:{eventString:e,allowClickToReconnect:t}})=>this.onDisconnect(e,t)),this.stream.addEventListener("videoInitialized",()=>this.onVideoInitialized()),this.stream.addEventListener("streamLoading",()=>this.onStreamLoading()),this.stream.addEventListener("playStreamError",({data:{message:e}})=>this.onPlayStreamError(e)),this.stream.addEventListener("playStream",()=>this.onPlayStream()),this.stream.addEventListener("playStreamRejected",({data:{reason:e}})=>this.onPlayStreamRejected(e)),this.stream.addEventListener("loadFreezeFrame",({data:{shouldShowPlayOverlay:e}})=>this.onLoadFreezeFrame(e)),this.stream.addEventListener("statsReceived",({data:{aggregatedStats:e}})=>this.onStatsReceived(e)),this.stream.addEventListener("latencyCalculated",({data:{latencyInfo:e}})=>this.onLatencyUpdate(e)),this.stream.addEventListener("latencyTestResult",({data:{latencyTimings:e}})=>this.onLatencyTestResults(e)),this.stream.addEventListener("dataChannelLatencyTestResult",({data:{result:e}})=>this.onDataChannelLatencyTestResults(e)),this.stream.addEventListener("streamerListMessage",({data:{messageStreamerList:e,autoSelectedStreamerId:t,wantedStreamerId:n}})=>this.handleStreamerListMessage(e,t,n)),this.stream.addEventListener("subscribeFailed",({data:{message:e}})=>this.handleSubscribeFailedMessage(e)),this.stream.addEventListener("settingsChanged",e=>this.onSettingsChanged(e)),this.stream.addEventListener("playerCount",({data:{count:e}})=>this.onPlayerCount(e)),this.stream.addEventListener("webRtcTCPRelayDetected",()=>i.Vy.Warning("Stream quailty degraded due to network enviroment, stream is relayed over TCP.")),this.stream.addEventListener("showOnScreenKeyboard",e=>{if(!this.stream.config.isFlagEnabled(s.iI.UseModalForTextInput))return;const t=e.data;t.showOnScreenKeyboard&&this.showEditTextModal(t.contents)})}get rootElement(){return this._rootElement||(this._rootElement=this.createRootElement(this.stream,this.uiFeaturesElement)),this._rootElement}createRootElement(e,t){const n=document.createElement("div");if(n.id="playerUI",n.classList.add("noselect"),void 0===e)throw new Error("Could not create root element properly - pixelstreaming object was undefined. Are you calling this too early?");if(void 0===e.videoElementParent)throw new Error("Could not create root element properly - videoElementParent object was undefined. Are you calling this too early?");if(void 0===t)throw new Error("Could not create root element properly - uiFeaturesElement object was undefined. Are you calling this too early?");return n.appendChild(e.videoElementParent),n.appendChild(t),n}get uiFeaturesElement(){return this._uiFeatureElement||(this._uiFeatureElement=this.createUIFeaturesElement()),this._uiFeatureElement}createUIFeaturesElement(){const e=document.createElement("div");return e.id="uiFeatures",e}showDisconnectOverlay(e){this.hideCurrentOverlay(),this.updateDisconnectOverlay(e),this.disconnectOverlay.show(),this.currentOverlay=this.disconnectOverlay}updateDisconnectOverlay(e){this.disconnectOverlay.update(e)}onDisconnectionAction(){this.disconnectOverlay.activate()}hideCurrentOverlay(){null!=this.currentOverlay&&(this.currentOverlay.hide(),this.currentOverlay=null)}showConnectOverlay(){this.hideCurrentOverlay(),this.connectOverlay.show(),this.currentOverlay=this.connectOverlay}showPlayOverlay(){this.hideCurrentOverlay(),this.playOverlay.show(),this.currentOverlay=this.playOverlay}showTextOverlay(e){this.hideCurrentOverlay(),this.infoOverlay.update(e),this.infoOverlay.show(),this.currentOverlay=this.infoOverlay}showErrorOverlay(e){this.hideCurrentOverlay(),this.errorOverlay.update(e),this.errorOverlay.show(),this.currentOverlay=this.errorOverlay}settingsClicked(){var e;null===(e=this.statsPanel)||void 0===e||e.hide(),this.settingsPanel.toggleVisibility()}statsClicked(){var e;null===(e=this.settingsPanel)||void 0===e||e.hide(),this.statsPanel.toggleVisibility()}onConnectAction(){this.connectOverlay.activate()}onPlayAction(){this.playOverlay.activate()}showAfkOverlay(e,t){this.hideCurrentOverlay(),this.afkOverlay.updateCountdown(e),this.afkOverlay.onAction(()=>t()),this.afkOverlay.show(),this.currentOverlay=this.afkOverlay}showConnectOrAutoConnectOverlays(){this.stream.config.isFlagEnabled(s.iI.AutoConnect)||this.showConnectOverlay()}onWebRtcAutoConnect(){this.showTextOverlay("Auto Connecting Now")}onWebRtcSdp(){this.showTextOverlay("WebRTC Connection Negotiated")}onStreamLoading(){const e=document.createElement("span");e.className="visually-hidden",e.innerHTML="Loading...";const t=document.createElement("div");t.id="loading-spinner",t.className="spinner-border ms-2",t.setAttribute("role","status"),t.appendChild(e),this.showTextOverlay("Loading Stream "+t.outerHTML)}onDisconnect(e,t){var n;const i="Disconnected"+(e?`: ${e}`:".");t?this.showDisconnectOverlay(`${i} Click To Restart.`):this.showErrorOverlay(i),null===(n=this.statsPanel)||void 0===n||n.onDisconnect()}onWebRtcConnecting(){this.showTextOverlay("Starting connection to server, please wait")}onWebRtcConnected(){this.showTextOverlay("WebRTC connected, waiting for video")}onWebRtcFailed(){this.showErrorOverlay("Unable to setup video")}onLoadFreezeFrame(e){!0===e&&(i.Vy.Info("showing play overlay"),this.showPlayOverlay())}onPlayStream(){this.hideCurrentOverlay()}onPlayStreamError(e){this.showErrorOverlay(e)}onPlayStreamRejected(e){this.showPlayOverlay()}onVideoInitialized(){var e;this.stream.config.isFlagEnabled(s.iI.AutoPlayVideo)||this.showPlayOverlay(),null===(e=this.statsPanel)||void 0===e||e.onVideoInitialized(this.stream)}onVideoEncoderAvgQP(e){this.videoQpIndicator&&this.videoQpIndicator.updateQpTooltip(e)}onInitialSettings(e){var t;e.PixelStreamingSettings&&(null===(t=this.statsPanel)||void 0===t||t.configure(e.PixelStreamingSettings))}onStatsReceived(e){var t;null===(t=this.statsPanel)||void 0===t||t.handleStats(e)}onLatencyUpdate(e){var t;null===(t=this.statsPanel)||void 0===t||t.handleLatencyInfo(e)}onLatencyTestResults(e){var t;null===(t=this.statsPanel)||void 0===t||t.latencyTest.handleTestResult(e)}onDataChannelLatencyTestResults(e){var t;null===(t=this.statsPanel)||void 0===t||t.dataChannelLatencyTest.handleTestResult(e)}onPlayerCount(e){var t;null===(t=this.statsPanel)||void 0===t||t.handlePlayerCount(e)}handleStreamerListMessage(e,t,n){const i=this.stream.config.isFlagEnabled(s.iI.WaitForStreamer),r=this.stream.isReconnecting();let o=null,a=!0;t||(i&&n?r?(o=`Waiting for ${n} to become available.`,a=!1):(o=`Gave up waiting for ${n} to become available. Click to try again`,e.ids.length>0&&(o+=" or select a streamer from the settings menu."),a=!0):0==e.ids.length?r?(o="Waiting for a streamer to become available.",a=!1):(o="No streamers available. Click to try again.",a=!0):(o="Multiple streamers available. Select one from the settings menu.",a=!1),a?this.showDisconnectOverlay(o):this.showTextOverlay(o))}handleSubscribeFailedMessage(e){this.showDisconnectOverlay(`Subscribe failed: "${e}" Click to try again`)}setColorMode(e){this.onColorModeChanged&&this.onColorModeChanged(e)}showEditTextModal(e){var t;null===(t=this.editTextModal)||void 0===t||t.rootElement.remove(),this.editTextModal=new v.R,this.rootElement.append(this.editTextModal.rootElement),this.editTextModal.showModal(e),this.editTextModal.events.addEventListener("editConfirmed",e=>{const t=e;this.stream.sendTextboxEntry(t.confirmedText)})}onSettingsChanged(e){this.configUI.onSettingsChanged(e);const{data:{id:t,target:n,type:i}}=e;t==s.mY.PreferredQuality&&([...this.stream.config.getSettingOption(s.mY.PreferredQuality).options].includes("Default")?this.configUI.disableSetting(s.mY.PreferredQuality):this.configUI.enableSetting(s.mY.PreferredQuality))}}},1366(e,t,n){n.d(t,{j:()=>h});var i=n(948),s=n(223),r=n(5131),o=n(4520),a=n(883),l=n(7261),d=n(575),c=n(5143);class h{constructor(e){this.customFlags=new Map,this.flagsUi=new Map,this.numericParametersUi=new Map,this.textParametersUi=new Map,this.optionParametersUi=new Map,this.createCustomUISettings(e.useUrlParams),this.registerSettingsUIComponents(e)}createCustomUISettings(e){this.customFlags.set(c.ai.LightMode,new r.T(c.ai.LightMode,"Color Scheme: Dark Mode","Page styling will be either light or dark",!1,e,(e,t)=>{t.label=`Color Scheme: ${e?"Light":"Dark"} Mode`}))}registerSettingsUIComponents(e){for(const t of e.getFlags())this.flagsUi.set(t.id,new o.J(t));for(const e of Array.from(this.customFlags.values()))this.flagsUi.set(e.id,new o.J(e));for(const t of e.getTextSettings())this.textParametersUi.set(t.id,new l.I(t));for(const t of e.getNumericSettings())this.numericParametersUi.set(t.id,new a.C(t));for(const t of e.getOptionSettings())this.optionParametersUi.set(t.id,new d.U(t))}buildSectionWithHeading(e,t){const n=document.createElement("section");n.classList.add("settingsContainer");const i=document.createElement("div");return i.classList.add("settingsHeader"),i.classList.add("settings-text"),i.textContent=t,n.appendChild(i),e.appendChild(n),n}populateSettingsElement(e,t){if((0,c.DF)(t,c.Uv.PixelStreaming)){const n=this.buildSectionWithHeading(e,c.Uv.PixelStreaming);(0,c.wx)(t,s.gw.SignallingServerUrl)&&this.addSettingText(n,this.textParametersUi.get(s.gw.SignallingServerUrl)),(0,c.wx)(t,s.mY.StreamerId)&&this.addSettingOption(n,this.optionParametersUi.get(s.mY.StreamerId)),(0,c.wx)(t,s.iI.AutoConnect)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.AutoConnect)),(0,c.wx)(t,s.iI.AutoPlayVideo)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.AutoPlayVideo)),(0,c.wx)(t,s.iI.UseMic)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.UseMic)),(0,c.wx)(t,s.iI.UseCamera)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.UseCamera)),(0,c.wx)(t,s.iI.StartVideoMuted)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.StartVideoMuted)),(0,c.wx)(t,s.iI.IsQualityController)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.IsQualityController)),(0,c.wx)(t,s.iI.ForceMonoAudio)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.ForceMonoAudio)),(0,c.wx)(t,s.iI.ForceTURN)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.ForceTURN)),(0,c.wx)(t,s.iI.SuppressBrowserKeys)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.SuppressBrowserKeys)),(0,c.wx)(t,s.iI.AFKDetection)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.AFKDetection)),(0,c.wx)(t,s.iI.WaitForStreamer)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.WaitForStreamer)),(0,c.wx)(t,s.k$.AFKTimeoutSecs)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.AFKTimeoutSecs)),(0,c.wx)(t,s.k$.AFKCountdownSecs)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.AFKCountdownSecs)),(0,c.wx)(t,s.k$.MaxReconnectAttempts)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.MaxReconnectAttempts)),(0,c.wx)(t,s.k$.StreamerAutoJoinInterval)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.StreamerAutoJoinInterval)),(0,c.wx)(t,s.k$.KeepaliveDelay)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.KeepaliveDelay))}if((0,c.DF)(t,c.Uv.UI)){const n=this.buildSectionWithHeading(e,c.Uv.UI);(0,c.wx)(t,s.iI.MatchViewportResolution)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.MatchViewportResolution)),(0,c.wx)(t,s.iI.HoveringMouseMode)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.HoveringMouseMode)),(0,c.wx)(t,c.ai.LightMode)&&this.addSettingFlag(n,this.flagsUi.get(c.ai.LightMode))}if((0,c.DF)(t,c.Uv.Input)){const n=this.buildSectionWithHeading(e,c.Uv.Input);(0,c.wx)(t,s.iI.KeyboardInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.KeyboardInput)),(0,c.wx)(t,s.iI.MouseInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.MouseInput)),(0,c.wx)(t,s.iI.FakeMouseWithTouches)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.FakeMouseWithTouches)),(0,c.wx)(t,s.iI.TouchInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.TouchInput)),(0,c.wx)(t,s.iI.GamepadInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.GamepadInput)),(0,c.wx)(t,s.iI.XRControllerInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.XRControllerInput))}if((0,c.DF)(t,c.Uv.Encoder)){const n=this.buildSectionWithHeading(e,c.Uv.Encoder);(0,c.wx)(t,s.k$.CompatQualityMin)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.CompatQualityMin)),(0,c.wx)(t,s.k$.CompatQualityMax)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.CompatQualityMax));const i=this.optionParametersUi.get(s.mY.PreferredCodec);(0,c.wx)(t,s.mY.PreferredCodec)&&this.addSettingOption(n,this.optionParametersUi.get(s.mY.PreferredCodec)),i&&[...i.selector.options].map(e=>e.value).includes("Only available on Chrome")&&i.disable(),(0,c.wx)(t,s.mY.PreferredQuality)&&this.addSettingOption(n,this.optionParametersUi.get(s.mY.PreferredQuality))}if((0,c.DF)(t,c.Uv.WebRTC)){const n=this.buildSectionWithHeading(e,c.Uv.WebRTC);(0,c.wx)(t,s.k$.WebRTCFPS)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.WebRTCFPS)),(0,c.wx)(t,s.k$.WebRTCMinBitrate)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.WebRTCMinBitrate)),(0,c.wx)(t,s.k$.WebRTCMaxBitrate)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.WebRTCMaxBitrate))}}addSettingText(e,t){t&&(e.appendChild(t.rootElement),this.textParametersUi.set(t.setting.id,t))}addSettingFlag(e,t){t&&(e.appendChild(t.rootElement),this.flagsUi.set(t.setting.id,t))}addSettingNumeric(e,t){t&&(e.appendChild(t.rootElement),this.numericParametersUi.set(t.setting.id,t))}addSettingOption(e,t){t&&(e.appendChild(t.rootElement),this.optionParametersUi.set(t.setting.id,t))}onSettingsChanged({data:{id:e,target:t,type:n}}){if("flag"===n){const n=e,i=t,s=this.flagsUi.get(n);s&&(s.flag!==i.flag&&(s.flag=i.flag),s.label!==i.label&&(s.label=i.label))}else if("number"===n){const n=e,i=t,s=this.numericParametersUi.get(n);s&&(s.number!==i.number&&(s.number=i.number),s.label!==i.label&&(s.label=i.label))}else if("text"===n){const n=e,i=t,s=this.textParametersUi.get(n);s&&(s.text!==i.text&&(s.text=i.text),s.label!==i.label&&(s.label=i.label))}else if("option"===n){const n=e,i=t,s=this.optionParametersUi.get(n);if(s){const e=s.options,t=i.options;e.length===t.length&&e.every(e=>t.includes(e))||(s.options=i.options),s.selected!==i.selected&&(s.selected=i.selected),s.label!==i.label&&(s.label=i.label)}}}addCustomFlagOnSettingChangedListener(e,t){this.customFlags.has(e)&&(this.customFlags.get(e).onChange=t)}setCustomFlagLabel(e,t){this.customFlags.has(e)?(this.customFlags.get(e).label=t,this.flagsUi.get(e).label=t):i.Vy.Warning(`Cannot set label for flag called ${e} - it does not exist in the Config.flags map.`)}isCustomFlagEnabled(e){return this.customFlags.get(e).flag}disableSetting(e){var t,n,i,r;(0,s.CR)(e)?null===(t=this.flagsUi.get(e))||void 0===t||t.disable():(0,s.tQ)(e)?null===(n=this.numericParametersUi.get(e))||void 0===n||n.disable():(0,s.B9)(e)?null===(i=this.textParametersUi.get(e))||void 0===i||i.disable():(0,s.Ri)(e)&&(null===(r=this.optionParametersUi.get(e))||void 0===r||r.disable())}enableSetting(e){var t,n,i,r;(0,s.CR)(e)?null===(t=this.flagsUi.get(e))||void 0===t||t.enable():(0,s.tQ)(e)?null===(n=this.numericParametersUi.get(e))||void 0===n||n.enable():(0,s.B9)(e)?null===(i=this.textParametersUi.get(e))||void 0===i||i.enable():(0,s.Ri)(e)&&(null===(r=this.optionParametersUi.get(e))||void 0===r||r.enable())}}},4251(e,t,n){n.d(t,{Y:()=>i});class i{constructor(e){this._setting=e}get setting(){return this._setting}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div")),this._rootElement}}},4520(e,t,n){n.d(t,{J:()=>s});var i=n(4251);class s extends i.Y{constructor(e){super(e),this.label=e.label,this.flag=e.flag}get setting(){return this._setting}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("div"),this._settingsTextElem.innerText=this.setting._label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}get checkbox(){return this._checkbox||(this._checkbox=document.createElement("input"),this._checkbox.type="checkbox",this._checkbox.addEventListener("keypress",e=>{e.stopPropagation()}),this._checkbox.addEventListener("keyup",e=>{e.stopPropagation()}),this._checkbox.addEventListener("keydown",e=>{e.stopPropagation()})),this._checkbox}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id=this.setting.id,this._rootElement.classList.add("setting"),this._rootElement.appendChild(this.settingsTextElem);const e=document.createElement("label");e.classList.add("tgl-switch"),this._rootElement.appendChild(e),this.checkbox.title=this.setting.description,this.checkbox.classList.add("tgl"),this.checkbox.classList.add("tgl-flat");const t=document.createElement("div");t.classList.add("tgl-slider"),e.appendChild(this.checkbox),e.appendChild(t),this.checkbox.addEventListener("change",()=>{this.setting.flag!==this.checkbox.checked&&(this.setting.flag=this.checkbox.checked,this.setting.updateURLParams())})}return this._rootElement}set flag(e){this.checkbox.checked=e}get flag(){return this.checkbox.checked}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}disable(){this.checkbox.disabled=!0}enable(){this.checkbox.disabled=!1}}},883(e,t,n){n.d(t,{C:()=>r});var i=n(948),s=n(4251);class r extends s.Y{constructor(e){super(e),this.label=this.setting.label,this.number=this.setting.number}get setting(){return this._setting}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("label"),this._settingsTextElem.innerText=this.setting.label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}get spinner(){return this._spinner||(this._spinner=document.createElement("input"),this._spinner.type="number",null!=this.setting.min&&(this._spinner.min=this.setting.min.toString()),null!=this.setting.max&&(this._spinner.max=this.setting.max.toString()),this._spinner.value=this.setting.number.toString(),this._spinner.title=this.setting.description,this._spinner.classList.add("form-control"),this.spinner.addEventListener("keypress",e=>{e.stopPropagation()}),this.spinner.addEventListener("keyup",e=>{e.stopPropagation()}),this.spinner.addEventListener("keydown",e=>{e.stopPropagation()})),this._spinner}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.classList.add("setting"),this._rootElement.classList.add("form-group"),this._rootElement.appendChild(this.settingsTextElem),this._rootElement.appendChild(this.spinner),this.spinner.onchange=e=>{const t=e.target,n=Number.parseFloat(t.value);Number.isNaN(n)?(i.Vy.Warning(`Could not parse value change into a valid number - value was ${t.value}, resetting value to ${this.setting.min}`),this.setting.number!==this.setting.min&&(this.setting.number=this.setting.min)):this.setting.number!==n&&(this.setting.number=n,this.setting.updateURLParams())}),this._rootElement}set number(e){this.spinner.value=this.setting.clamp(e).toString()}get number(){return+this.spinner.value}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}disable(){this.spinner.disabled=!0}enable(){this.spinner.disabled=!1}}},575(e,t,n){n.d(t,{U:()=>s});var i=n(4251);class s extends i.Y{constructor(e){super(e),this.label=this.setting.label,this.options=this.setting.options,this.selected=this.setting.selected}get setting(){return this._setting}get selector(){return this._selector||(this._selector=document.createElement("select"),this._selector.classList.add("form-control"),this._selector.classList.add("settings-option")),this._selector}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("div"),this._settingsTextElem.innerText=this.setting.label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id=this.setting.id,this._rootElement.classList.add("setting"),this._rootElement.classList.add("form-group"),this._rootElement.appendChild(this.settingsTextElem);const e=document.createElement("label");this._rootElement.appendChild(e),this.selector.title=this.setting.description,e.appendChild(this.selector),this.selector.onchange=()=>{this.setting.selected!==this.selector.value&&(this.setting.selected=this.selector.value,this.setting.updateURLParams())},this.selector.addEventListener("keypress",e=>{e.stopPropagation()}),this.selector.addEventListener("keyup",e=>{e.stopPropagation()}),this.selector.addEventListener("keydown",e=>{e.stopPropagation()})}return this._rootElement}set options(e){for(let e=this.selector.options.length-1;e>=0;e--)this.selector.remove(e);e.forEach(e=>{const t=document.createElement("option");t.value=e,t.innerHTML=e,this.selector.appendChild(t)})}get options(){return[...this.selector.options].map(e=>e.value)}set selected(e){const t=this.options.filter(t=>-1!==t.indexOf(e));t.length&&(this.selector.value=t[0])}get selected(){return this.selector.value}disable(){this.selector.disabled=!0}enable(){this.selector.disabled=!1}}},7261(e,t,n){n.d(t,{I:()=>s});var i=n(4251);class s extends i.Y{constructor(e){super(e),this.label=this.setting.label,this.text=this.setting.text}get setting(){return this._setting}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("div"),this._settingsTextElem.innerText=this.setting.label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}get textbox(){return this._textbox||(this._textbox=document.createElement("input"),this._textbox.classList.add("form-control"),this._textbox.type="textbox"),this._textbox}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id=this.setting.id,this._rootElement.classList.add("setting"),this._rootElement.appendChild(this.settingsTextElem);const e=document.createElement("label");this._rootElement.appendChild(e),this.textbox.title=this.setting.description,e.appendChild(this.textbox),this.textbox.addEventListener("input",e=>{this.setting.text!==this.textbox.value&&(this.setting.text=this.textbox.value,this.setting.updateURLParams()),e.stopPropagation()}),this.textbox.addEventListener("keypress",e=>{e.stopPropagation()}),this.textbox.addEventListener("keyup",e=>{e.stopPropagation()}),this.textbox.addEventListener("keydown",e=>{e.stopPropagation()})}return this._rootElement}set text(e){this.textbox.value=e}get text(){return this.textbox.value}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}disable(){this.textbox.disabled=!0}enable(){this.textbox.disabled=!1}}},9068(e,t,n){n.d(t,{n:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="afkOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("div");return e.id="afkOverlayInner",e.innerHTML='<center>No activity detected<br>Disconnecting in <span id="afkCountDownNumber"></span> seconds<br>Click to continue<br></center>',e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}updateCountdown(e){this.textElement.innerHTML=`<center>No activity detected<br>Disconnecting in <span id="afkCountDownNumber">${e}</span> seconds<br>Click to continue<br></center>`}}},2372(e,t,n){n.d(t,{J:()=>r});var i=n(948),s=n(5345);class r extends s.M{constructor(e,t,n){super(e,t,n),this.onActionCallback=()=>{i.Vy.Info("Did you forget to set the onAction callback in your overlay?")}}update(e){null==e&&null==e||(this.textElement.innerHTML=e)}onAction(e){this.onActionCallback=e}activate(){this.onActionCallback()}}},5345(e,t,n){n.d(t,{M:()=>i});class i{constructor(e,t,n){this.rootDiv=e,this.rootElement=t,this.textElement=n,this.rootElement.appendChild(this.textElement),this.hide(),this.rootDiv.appendChild(this.rootElement)}show(){this.rootElement.classList.remove("hiddenState")}hide(){this.rootElement.classList.add("hiddenState")}}},8486(e,t,n){n.d(t,{X:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="connectOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("div");return e.id="connectButton",e.innerHTML="Click to start",e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}}},7716(e,t,n){n.d(t,{T:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="disconnectOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("div");return e.id="disconnectButton",e.innerHTML="Click To Restart",e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}}},1954(e,t,n){n.d(t,{h:()=>s});var i=n(3267);class s extends i.Y{static createRootElement(){const e=document.createElement("div");return e.id="errorOverlay",e.className="textDisplayState",e}static createContentElement(){const e=document.createElement("div");return e.id="errorOverlayInner",e}constructor(e){super(e,s.createRootElement(),s.createContentElement())}}},1630(e,t,n){n.d(t,{v:()=>s});var i=n(3267);class s extends i.Y{static createRootElement(){const e=document.createElement("div");return e.id="infoOverlay",e.className="textDisplayState",e}static createContentElement(){const e=document.createElement("div");return e.id="messageOverlayInner",e}constructor(e){super(e,s.createRootElement(),s.createContentElement())}}},2860(e,t,n){n.d(t,{z:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="playOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("img");return e.id="playButton",e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPEAAAD5CAYAAAD2mNNkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAASgklEQVR4Xu2dC7BdVX2HqUCCIRASCPjAFIQREBRBBSRYbFOt8lIrFUWRFqXWsT5wbItUqFWs0KqIMPKoYEWpRS06KDjS1BeVFkVQbCw+wCfiAwGhCKWP9PuZtU24uTe59zz22Y/vm/nGkXtz7jlrr9+sdfZea/03Wb169QtxGW62iYi0D8L7NbwYj8EdcdPyIxFpA4T2P/F/8Ua8CI/GhPnXyq+ISJMhrAlxxX9hRuYL8Sh8SPk1EWkqBHXdEFfcg6vw3fhs3Kb8uog0DQI6XYgr8rOvYsJ8OM4v/0xEmkIJ6ob4P8zIfANegCvQMIs0BQK5sRBXJMy/wIzM5+ByXFBeRkQmBUGcbYjX5S5MmM/AA3CL8nIiUjcEcJAQV9yBX8a/wSeiz5hF6obgDRPikGfMCfOX8DTcu7y0iNQBoRs2xBX/g3diwvwm3Kn8CREZJ4RtVCGuqMKcu9kn4xJ09ZfIuCBgow5xyJ3sTLNzAywrwF6J26NhFhk1BGscIV6XhPluvA6Pxx3KnxaRUUCoxh3iioQ5z5n/BY/FJeUtiMgwEKa6QlyRMN+Hn8Hn4ZblrYjIIBCiukMc8p25Ws6ZMD+zvB0RmSsEaBIhnkrew5V4EHrCiMhcKAFqCv+Nl+J+uBC9my2yMQhKk0Jcke/M78Gsy06YH1TerohMhYA0McQVP8Nz8UDcCl2bLTIVgtHkEFd8D8/E/XFrdGQWqSAQbQhxyKOpm/B03Ac9MkgkEIa2hLgiN78S5lPx0bgIvQEm/YUAtC3EFQnzzfgnuDc6zZZ+Qsdva4jX5Sv4atwXHZmlX9DhuxDikC2Qn8dXYUbmReUjinQbOntXQlyRTRafwldgwrxV+agi3YRO3rUQV/wcV+LL8DHoyZzSTejcXQ1xRc7/uhyzl3kv3Lx8dJFuQKfueohDnjFnZP4o/j7m0ZQH4Es3oDP3IcQV2f6YMF+COZjgUeiZ2dJu6MR9CvG63ILvx4zMCfO80iQi7YLO29cQV3wb34spsr4rumBE2gWdtu8hDln99S1MXeYX4M6leUSaDx3WEK8lRdYT5lR/zPlfnswpzYeOaojXJ4cSfB3Pw+fgtug0W5oJndMQT0/uZGeaXZVyfTZuV5pNpDnQMQ3xxsk0O9Ufz8ZDcdvSfCKThw5piGdP2ioF496JT0c3WcjkKR1T5kYWjCTM78DfQheMyOSgAxriwch35lR/vAbPwOXozS+pHzqeIR6Oal12wvx2fBy6yULqgw5niEdDwpyR+VpMkfXsmHIpp4wfOpohHj234RfwFNwDnWbL+KCDGeLxkJH5p3g1vg53K00uMlroXIZ4vGTBSMJ8FeZkzmWl6UVGA53KENfD/ZiyNCmynvO/FpdLIDIcdCZDXC8ZmfOd+d/wJejZXzIcdCJDXD95xpwjdnP+V74zH4Wu/pLBoPMY4smSMN+FKbJ+BBpmmRt0GkPcDBLmu/FjeAi6lFNmB53FEDeHTLPzaCoj80dwBfqMWTYMncQQN5esAPsw7lcul8j60EEMcfPJDbD3YU7l3KxcOpE10CkMcTvIVDvfmc/E3XELtPqjGOKWkhVgp+GemDD7vbnP0AEMcXtJkfU34GNxAToy9xEuvCFuP6vwJMyOqYXl0kpf4KIb4m5QncyZTRapZGGY+wIX2xB3i3vxOswmi13QaXbX4QIb4m6SY3a/iMdh7mYb5q7ChTXE3aXaaLESq7rMW5ZLL12Bi2qI+8E9eDkmzLuhYe4KXExD3B8yMt+Ol+KL0CLrXYCLaIj7R8J8K16CR6PLOdsMF88Q95fsmPoRXozPxdzNdvVX2+CiGWLJza+EOXWZj8Sd0APw2wIXyxBLqPYy34LnY8K8DA1z0+EiGWKZSgJ9I74LU2R9R3Sa3VS4OIZYZqJaynkWpsj6w0u3kSbBhTHEsjHuwxswpVwPw6Wl+0gT4IIYYpkNmWKnr1yPqf54KG5VupFMknJhRGZLwpzVX6n++DZ8GrpjapJwAQyxDELCnB1TqWTx1/gUdGSeBDS8IZZBSZBjzv76PP4VHoSGuU5ocEMsoyBhTsG4VH98Ix6A80s3k3FCQxtiGSVZMPIT/CwmzPuhz5jHCQ1siGUcZClnwvxpPAX3LF1ORg2Na4hlXGSKnQUjCfNn8PX4CNy0dD8ZBTSoIZZxkzBXI/Pn8ATMumzDPApoSEMsdZEw5zvzDzHT7JdjwuzZX8NAAxpimQSZZifMn8Tj8aGlS8pcofEMsUyKjMw5lTOnjHwcc2TQktI1ZbbQaIZYJk3CnE0WGZmvwOeh+5hnC41liKUpVCNzwvwJPBy9+bUxaCRDLE0jYb4fU/0x0+yD8cGly8pUaBxDLE0kQa7CfCfmML8D0SN2p0KjGGJpOglztWgkh/k9CT1it4LGMMTSFhLmLBrJ3exzcJ/SjfsNDWGIpY0k0D/AM/GRpTv3ExrAEEubqVaAnY5LsX93s/nQhli6QLUF8nWYI3bnYT+Wc/JBDbF0heqO9jfwlfhInI/dDjMf0BBLF0mYr8NsskiNqS2wm2Hmgxli6TJ5zpwjg/4Qd8buLRrhQxli6QM5ZjdHBh2H+c7cnUUjfBhDLH0hU+y7cCU+H7OXeV6JQnvhQxhi6RsJc0bmy/BZ+MsbYCUS7YM3b4ilryTM2QL5QUzBuHxnbt80mzdtiEVWr74NL8KUck2R9faMzLxZQyyyhozMWcp5If4uJszNP5yAN2mIRR5IVn/djOfhEdjsw/x4c4ZYZHryjPkmPBsPwYeV2DQL3pghFpmZTLFzZFDCnLrMz8DtsTkbLXgzhlhk4yTM2cu8CrNjKiNzwjz5OlO8CUMsMjcS5qzLfgumyPr2JU6TgTdgiEUGoyqynrrMv42TOTObP2yIRQYn0+ws5bwaU8r1N3HrEq964A8aYpHhSZjvwBSMS5gPwnrWZfOHDLHI6Mgz5hyxm4Jxf4kH4HjDzB8wxCKjJ2HONPuf8c9xHxzPXmZe2BCLjIdMsWMqWfwTnoiPwdGOzLygIRYZPwlzVWPqtbgXjmbBCC9kiEXqI8+Ys8nicnwN7laiODi8iCEWqZeMylmXnTCnYFxO5tyxRHLu8I8NschkSJizLvv7mJH5pbgY57Zjin9giEUmSzUyfw9TZP1Y3LZEdOPwy4ZYpBkkzKn++B38KB6F25Wozgy/ZIhFmkXCnLO/vosfwpwysqhEdn34oSEWaSYJ8y8w0+wP4GG4/oIR/qMhFmk2VZgzzU6Ys2Nq7T5m/o8hFmkHCXO2PybMF+O++CBDLNIuEuSsy8535lvxZEMs0j6qWszZJbXUEIu0i1vwrZhqFZv5nVikPWTqfA5mF9QDD+fjPxhikeaR777xdrwAn1Aiuz780BCLNIvsdMqBAqkNtRw3XBeKXzDEIpMno27Cezdeik/GBSWmG4ZfNMQikyPhzXrpVGXM6R8rcG7lVfkHhlikfhLe7FzKo6KV+Hu45m7zXOEfGmKReske4oT3k3gMblniOBi8gCEWqYeMvD/GK/F43KHEcDh4IUMsMl5yw+pHmLOoX4aDH8UzHbygIRYZD/nem5H3KjwBd8LRV1HkRQ2xyGjJ3eacNZ1iayfhr+P46hnz4oZYZDRk2pzwph7TX+CuOP76xfwRQywyHNlVVIX3VHx8iVc98AcNscjgZJFGypq+GffHwZ71DgN/1BCLzJ2f47/iWzBlTId71jsM/HFDLDI7crf5HrwG34YHY70FxaeDN2GIRTZMwpvjcK7Fd+BTcfLhreDNGGKRmcnIez2+Ew/FhTi3MivjhjdkiEXWJ0fEfhXPwmfi4hKZ5sGbM8Qia8n65lX4LkzlhYeVqDQX3qQhFlnzrPc/8FzMtsBl2Kxp80zwRg2x9J0cxn4epoBZlkjW/6x3GHjDhlj6SJZI5gTJ9+DzMeHdvMSiXfDGDbH0iWpbYMqgJLy7YLtG3qnwAQyx9IVsC7wEX4C74/h2FtUJH8QQS9fJUTg5QfI43APnle7fDfhAhli6So5//Ri+GBPeya1vHid8MEMsXSMH0X0CX4J74cLS3bsJH9AQS1fITavs6f1VeLEdz3qHgQ9piKXtZHNC1jfnELpfTpux++Gt4MMaYmkrmTZ/GV+LCW+3p80zwQc3xNI2skTyBswhdHtic7YFTgIawBBLm7gRT8HH4dbYn2nzTNAIhljaQCrkvwkT3tywGv8pkm2BxjDE0lRyokbOsjoDUyE/N6wM71RoFEMsTSPhvRPfjY/GBei0eSZoHEMsTeJ2/ADug+3cVVQ3NJQhliaQkfcf8SnoqDsXaDBDLJMij4ruxcvwaejIOwg0nCGWusnyyIT3CjwM+7lIY1TQgIZY6iA3qzLyZmdRSn0eic09QbJN0JCGWMZJwpuR9w78Er4Qu7klcFLQoIZYxkXq9OZuc2oWZXNCv5dHjgsa1hDLqKnCm2qB2Zzw0NLdZBzQwIZYRkWmzT/DhPdE3KV0MxknNLQhlmHJ996ENwXHsjkhq6xcHlkXNLYhlkFJeHPDKhvyszkh4W338a9thEY3xDJX8qgoGxMS3tTpfSzOL11K6obGN8QyWxLeLI/MtDmlPvdHp82ThotgiGU2ZOStwrsCXSLZFLgYhlg2xF2Yc6zOxqejCzWaBhfFEMt0pMj2VzB1eg/BJaXLSNPg4hhiqcjd5izUSIX8lPp8Fi4tXUWaChfJEEtIhfwU2b4QU2R7O3RfbxvgQhnifpOD17+JCW9KfS5F7zi3CS6YIe4nOXj9W/h3eAw+vHQJaRtcPEPcL/Ks92a8CI/FXdFpc5vhAhri/vB9/Hv8A3wUukSyC3AhDXH3+Sn+Ax6PqZDvEskuwQU1xN2kOgonJ0im1Gc2J2xRLrt0CS6sIe4W1c6ij2NG3lROmFcut3QRLrAh7g4J75X4R7g3Gt4+wIU2xO0n0+ZP4aswBcdc39wnuOCGuL3kWe/n8DW4Ly4ql1X6BBfeELeTL+AJ+ATcBn3W21e4+Ia4PeSO89fwT/GJuAhdItl36ASGuPlkZ9G38fWYo3Ay8hpeWQOdwRA3lxwBexO+GVPq07Insj50DEPcTLK++e2Yc6wWo995ZXroHIa4WdyKOQpnOWbavGm5VCLTQycxxM0gp0iej0/G3LAyvDI76CyGeHJUx+G8Hw9Ewytzh05jiCdDDqK7HA/Aheh3XhkMOo8hrpe096fxd9D9vDI8pVPJ+LkXP4vPQafMMjroUIZ4fOQ7b9Y3X4U5x8oi2zJ66FiGePRkeWROkfwiHoee3Szjgw5miEdDRt14D+bw9ZfjDqWZRcYHHc0QD091FE6OgP0z9OB1qQ86myEenKxtTngz8r4BHXmlfuh4hnjuJLwp9Zlqgafh7qU5ReqHDmiIZ0+mzVkeeQO+FR9fmlFkctARDfHsSJ3ef8dqZ5GH0EkzoDMa4pnJ3ea0T07TOAezvnlBaTqRZlA6qTyQhDdrm1fhBXgwGl5pJnROQ7yW6jlvwvtefAZuXppKpJmUTitrp80p9Zn1zQ8uTSTSbOisfQ9xps2pkJ/wPhe3K00j0g7otH0N8f34dXwfHo0W2ZZ2QuftY4izPDKnabwIH4Ee/yrthQ7clxBnldUP8BJ8MSa87uuV9kNH7nqIc4ZVwvshfCkuQ8Mr3YEO3dUQZ4nkD/HDmFKfe5SPLNIt6NxdDHHC+xF8BabsiSOvdBc6eJdCfBtehglvimz7rFe6Dx29CyHOQo0r8NWYOr0W2Zb+QIdva4izRDLPeldi6vSm1OfC8rFE+gMdv40hznu+GlMhfz/cEj0OR/oJnb9NIc57vQZPxCehI69ICUbTydnN1+LJmPAuKW9fRAhEk0OcZ73XYw6hOwg9v1lkKgSjqSHO5oRT8TdwKbq+WWQ6CEeTQpw7zlmocTqmTm/Ob7bomMiGICRNCHGmzT/BszClPjPyuspKZDYQlkmH+Mf4t7gct0enzSJzgdBMKsQJ70X4VHTkFRkUwlN3iFM54YN4KG6LHkQnMgyEqK4Q51nvpZjwZuQ1vCKjgDDVEeIr8XBMeL3bLDJKCNW4QpyR9zo8ArdBb1iJjAPCNeoQJ7ypFngszkc3JoiME0I2qhDnWW8Kjv0xujFBpC4I3DAhzgqrHESXUp/Z0/uQ8rIiUhcEb5AQJ7z34TfwJNy5vJyI1A0BnG2IE9yYsiffwTfizuh3XpFJQghnE+J83014v4upkL8r+qhIpAkQxg2FOOHNzzNtPhf3REdekSZRQjqVTJtzguSNeD4eWH5dRJoGAZ0a4rvxm3ghrkCnzSJNhpBWIc7/plpgwpudRZ7dLNIGCOvtJbwX42G4uPxIRNoAoU2d3iNxUflPItIaNtnk/wEGBoMdpECGHAAAAABJRU5ErkJggg==",e.alt="Start Streaming",e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}}},3267(e,t,n){n.d(t,{Y:()=>s});var i=n(5345);class s extends i.M{constructor(e,t,n){super(e,t,n)}update(e){null==e&&null==e||(this.textElement.innerHTML=e)}}},920(e,t,n){n.d(t,{e:()=>o});var i=n(3317),s=n(2885),r=n(8161);class o{constructor(e){this.defaultLightModePalette={"--color0":"#e2e0dd80","--color1":"#FFFFFF","--color2":"#000000","--color3":"#0585fe","--color4":"#35b350","--color5":"#ffab00","--color6":"#e1e2dd","--color7":"#c3c4bf"},this.defaultDarkModePalette={"--color0":"#1d1f22e0","--color1":"#000000","--color2":"#FFFFFF","--color3":"#0585fe","--color4":"#35b350","--color5":"#ffab00","--color6":"#1e1d22","--color7":"#3c3b40"},this.defaultStyles={":root":{"--color0":"#1d1f22e0","--color1":"#000000","--color2":"#FFFFFF","--color3":"#0585fe","--color4":"#35b350","--color5":"#ffab00","--color6":"#1e1d22","--color7":"#3c3b40","--color8":"#41008c","--color9":"#3e0070","--color10":"#2e0052","--color11":"rgba(65,0,139,1)"},".noselect":{userSelect:"none"},"#playerUI":{width:"100%",height:"100%",position:"relative"},"#videoElementParent":{width:"100%",height:"100%",position:"absolute",backgroundColor:"var(--color1)"},"#uiFeatures":{width:"100%",height:"100%",zIndex:"30",position:"relative",color:"var(--color2)",pointerEvents:"none",overflow:"hidden"},".UiTool .tooltiptext":{visibility:"hidden",width:"auto",color:"var(--color2)",textAlign:"center",borderRadius:"15px",padding:"0px 10px",fontFamily:"'Montserrat', sans-serif",fontSize:"0.75rem",letterSpacing:"0.75px",position:"absolute",top:"0",transform:"translateY(25%)",left:"125%",zIndex:"20"},".UiTool:hover .tooltiptext":{visibility:"visible",backgroundColor:"var(--color7)"},"#connection .tooltiptext":{top:"125%",transform:"translateX(-25%)",left:"0",zIndex:"20",padding:"5px 10px"},"#connection":{position:"absolute",bottom:"8%",left:"5%",fontFamily:"'Michroma', sans-serif",height:"3rem",width:"3rem",pointerEvents:"all"},"#settings-panel .tooltiptext":{display:"block",top:"125%",transform:"translateX(-50%)",left:"0",zIndex:"20",padding:"5px 10px",border:"3px solid var(--color3)",width:"max-content",fallbacks:[{width:"max-content"},{border:"3px solid var(--color3)"},{padding:"5px 10px"},{zIndex:"20"},{left:"0"},{transform:"translateX(-50%)"},{top:"125%"},{display:"block"}]},"#controls":{position:"absolute",top:"3%",left:"2%",fontFamily:"'Michroma', sans-serif",pointerEvents:"all",display:"block"},"#controls>*":{marginBottom:"0.5rem",borderRadius:"50%",display:"block",height:"2rem",lineHeight:"1.75rem",padding:"0.5rem"},"#controls #additionalinfo":{textAlign:"center",fontFamily:"'Montserrat', sans-serif"},"#fullscreen-btn":{padding:"0.6rem !important"},"#minimizeIcon":{display:"none"},"#settingsBtn, #statsBtn":{cursor:"pointer"},"#uiFeatures button":{backgroundColor:"var(--color7)",border:"1px solid var(--color7)",color:"var(--color2)",position:"relative",width:"3rem",height:"3rem",padding:"0.5rem",textAlign:"center"},"#uiFeatures button:hover":{backgroundColor:"var(--color3)",border:"3px solid var(--color3)",transition:"0.25s ease",paddingLeft:"0.55rem",paddingTop:"0.55rem"},"#uiFeatures button:active":{border:"3px solid var(--color3)",backgroundColor:"var(--color7)",paddingLeft:"0.55rem",paddingTop:"0.55rem"},".btn-flat":{backgroundColor:"transparent",color:"var(--color2)",fontFamily:"'Montserrat'",fontWeight:"bold",border:"3px solid var(--color3)",borderRadius:"1rem",fontSize:"0.75rem",paddingLeft:"0.5rem",paddingRight:"0.5rem",cursor:"pointer",textAlign:"center"},".btn-flat:hover":{backgroundColor:"var(--color3)",transition:"ease 0.3s"},".btn-flat:disabled":{background:"var(--color7)",borderColor:"var(--color3)",color:"var(--color3)",cursor:"default"},".btn-flat:active":{backgroundColor:"transparent"},".btn-flat:focus":{outline:"none"},"#uiFeatures img":{width:"100%",height:"100%"},".panel-wrap":{position:"absolute",top:"0",bottom:"0",right:"0",height:"100%",minWidth:"20vw",maxWidth:"90vw",transform:"translateX(100%)",transition:".3s ease-out",pointerEvents:"all",overflowY:"auto",overflowX:"hidden",backgroundColor:"var(--color0)"},".panel-wrap-visible":{transform:"translateX(0%)"},".panel":{overflowY:"auto",padding:"1em"},"#settingsHeading, #statsHeading":{display:"inline-block",fontSize:"2em",marginBlockStart:"0.67em",marginBlockEnd:"0.67em",marginInlineStart:"0px",marginInlineEnd:"0px",position:"relative",padding:"0 0 0 2rem"},"#settingsClose, #statsClose":{margin:"0.5rem",paddingTop:"0.5rem",paddingBottom:"0.5rem",paddingRight:"0.5rem",fontSize:"2em",float:"right"},"#settingsClose:after, #statsClose:after":{paddingLeft:"0.5rem",display:"inline-block",content:'"\\00d7"'},"#settingsClose:hover, #statsClose:hover":{color:"var(--color3)",transition:"ease 0.3s"},"#settingsContent, #statsContent":{marginLeft:"2rem",marginRight:"2rem"},".setting":{display:"flex",flexDirection:"row",justifyContent:"space-between",padding:"0.15rem 10px 0.15rem 10px"},".settings-text":{color:"var(--color2)",verticalAlign:"middle",fontWeight:"normal"},".settings-option":{width:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap"},"#connectOverlay, #playOverlay, #infoOverlay, #errorOverlay, #afkOverlay, #disconnectOverlay":{zIndex:"30",position:"absolute",color:"var(--color2)",fontSize:"1.8em",width:"100%",height:"100%",backgroundColor:"var(--color1)",alignItems:"center",justifyContent:"center",textTransform:"uppercase"},".clickableState":{alignItems:"center",justifyContent:"center",display:"flex",cursor:"pointer"},".textDisplayState":{display:"flex"},".hiddenState":{display:"none"},"#playButton, #connectButton":{display:"inline-block",height:"auto",zIndex:"30"},"img#playButton":{maxWidth:"241px",width:"10%"},"#uiInteraction":{position:"fixed"},"#UIInteractionButtonBoundary":{padding:"2px"},"#UIInteractionButton":{cursor:"pointer"},".btn-overlay":{verticalAlign:"middle",display:"inline-block"},".tgl-switch":{verticalAlign:"middle",display:"inline-block"},".tgl-switch .tgl":{display:"none"},".tgl, .tgl:after, .tgl:before, .tgl *, .tgl *:after, .tgl *:before, .tgl+.tgl-slider":{"-webkit-box-sizing":"border-box",boxSizing:"border-box"},".tgl::-moz-selection, .tgl:after::-moz-selection, .tgl:before::-moz-selection, .tgl *::-moz-selection, .tgl *:after::-moz-selection, .tgl *:before::-moz-selection, .tgl+.tgl-slider::-moz-selection":{background:"none"},".tgl::selection, .tgl:after::selection, .tgl:before::selection, .tgl *::selection, .tgl *:after::selection, .tgl *:before::selection, .tgl+.tgl-slider::selection":{background:"none"},".tgl-slider":{},".tgl+.tgl-slider":{outline:"0",display:"block",width:"40px",height:"18px",position:"relative",cursor:"pointer",userSelect:"none"},".tgl+.tgl-slider:after, .tgl+.tgl-slider:before":{position:"relative",display:"block",content:'""',width:"50%",height:"100%"},".tgl+.tgl-slider:after":{left:"0"},".tgl+.tgl-slider:before":{display:"none"},".tgl-flat+.tgl-slider":{padding:"2px","-webkit-transition":"all .2s ease",transition:"all .2s ease",background:"var(--color6)",border:"3px solid var(--color7)",borderRadius:"2em"},".tgl-flat+.tgl-slider:after":{"-webkit-transition":"all .2s ease",transition:"all .2s ease",background:"var(--color7)",content:'""',borderRadius:"1em"},".tgl-flat:checked+.tgl-slider":{border:"3px solid var(--color3)"},".tgl-flat:checked+.tgl-slider:after":{left:"50%",background:"var(--color3)"},".btn-apply":{display:"block !important",marginLeft:"auto",marginRight:"auto",width:"40%"},".form-control":{backgroundColor:"var(--color7)",border:"2px solid var(--color7)",borderRadius:"4px",color:"var(--color2)",textAlign:"right",fontFamily:"inherit"},".form-control:hover":{borderColor:"var(--color7)"},".form-group":{paddingTop:"4px",display:"grid",gridTemplateColumns:"80% 20%",rowGap:"4px",paddingRight:"10px",paddingLeft:"10px"},".form-group label":{verticalAlign:"middle",fontWeight:"normal"},".settingsContainer":{display:"flex",flexDirection:"column",borderBottom:"1px solid var(--color7)",paddingTop:"10px",paddingBottom:"10px"},".settingsContainer> :first-child":{marginTop:"4px",marginBottom:"4px",fontWeight:"bold",justifyContent:"space-between",display:"flex",flexDirection:"row",alignItems:"baseline"},".collapse":{paddingLeft:"5%"},"#streamTools":{borderBottomRightRadius:"5px",borderBottomLeftRadius:"5px",userSelect:"none",position:"absolute",top:"0",right:"2%",zIndex:"100",border:"4px solid var(--colour8)",borderTopWidth:"0px"},".settingsHeader":{fontStyle:"italic"},"#streamToolsHeader":{display:"flex",flexDirection:"row",justifyContent:"space-between",borderBottom:"1px solid var(--colour8)",backgroundColor:"var(--color7)"},".streamTools":{backgroundColor:"var(--color2)",fontFamily:"var(--buttonFont)",fontWeight:"lighter",color:"var(--color7)"},".streamTools-shown>#streamToolsSettings, .streamTools-shown>#streamToolsStats":{display:"block"},"#streamToolsToggle":{width:"100%"},"#qualityStatus":{fontSize:"37px",paddingRight:"4px"},".svgIcon":{fill:"var(--color2)"},".modal":{minWidth:"100vw",minHeight:"100vh",left:"0",top:"0",position:"fixed",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",color:"var(--color2)"},".innerModal":{position:"relative",width:"500px",height:"300px",backgroundColor:"var(--color0)",display:"flex",flexDirection:"column",justifyContent:"space-between",alignItems:"center",borderRadius:"0.75em"},".modalBtnContainer":{display:"flex",flexDirection:"row",justifyContent:"space-around",width:"100%",paddingTop:"1em",paddingBottom:"1em"},".modalTextArea":{textAlign:"left",width:"95%",height:"100%",resize:"none",fontSize:"1rem",border:"1px solid var(--color2)"},".modalTextArea:focus-visible":{outline:"none !important",border:"1px solid var(--color3)"},".modal .btn-flat":{fontSize:"1.0rem"}};const{customStyles:t,lightModePalette:n,darkModePalette:o,jssInsertionPoint:a}=null!=e?e:{},l={plugins:[(0,s.A)(),(0,r.A)()],insertionPoint:a};i.Ay.setup(l),this.customStyles=t,this.lightModePalette=null!=n?n:this.defaultLightModePalette,this.darkModePalette=null!=o?o:this.defaultDarkModePalette}applyStyleSheet(){i.Ay.createStyleSheet({"@global":Object.assign(Object.assign({},this.defaultStyles),this.customStyles)}).attach()}applyPalette(e){const t=document.querySelector(":root");t.style.setProperty("--color0",e["--color0"]),t.style.setProperty("--color1",e["--color1"]),t.style.setProperty("--color2",e["--color2"]),t.style.setProperty("--color3",e["--color3"]),t.style.setProperty("--color4",e["--color4"]),t.style.setProperty("--color5",e["--color5"]),t.style.setProperty("--color6",e["--color6"]),t.style.setProperty("--color7",e["--color7"])}setColorMode(e){e?this.applyPalette(this.lightModePalette):this.applyPalette(this.darkModePalette)}}},9924(e,t,n){n.d(t,{H:()=>c});var i=n(4498),s=n(1266),r=n(6702),o=n(8369),a=n(9689),l=n(5143);function d(e){return null==e||e.creationMode===l.ny.CreateDefaultElement}class c{constructor(e){this.config=e,e&&!d(e.statsButtonType)||(this.statsIcon=new r.r),e&&!d(e.settingsButtonType)||(this.settingsIcon=new s.Z),e&&!d(e.fullscreenButtonType)||(this.fullscreenIcon=new i.x2),e&&!d(e.xrIconType)||(this.xrIcon=new o.A)}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.id="controls",this.fullscreenIcon&&this._rootElement.appendChild(this.fullscreenIcon.rootElement),this.settingsIcon&&this._rootElement.appendChild(this.settingsIcon.rootElement),this.statsIcon&&this._rootElement.appendChild(this.statsIcon.rootElement),this.xrIcon&&a.R.isSessionSupported("immersive-vr").then(e=>{e&&this._rootElement.appendChild(this.xrIcon.rootElement)}),document.addEventListener("fullscreenchange",this.handleFullscreenChange.bind(this))),this._rootElement}handleFullscreenChange(){var e;document.fullscreenElement&&(null===(e=this.config)||void 0===e?void 0:e.hideControlsInFullscreen)?this._rootElement.style.visibility="hidden":this._rootElement.style.visibility="visible"}}},5073(e,t,n){n.d(t,{y:()=>r});var i=n(948),s=n(5143);class r{get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("section"),this._rootElement.classList.add("settingsContainer");const e=document.createElement("div");e.id="dataChannelLatencyTestHeader",e.classList.add("settings-text"),e.classList.add("settingsHeader"),this._rootElement.appendChild(e);const t=document.createElement("div");t.innerHTML=s.Yb.DataChannelLatencyTest,e.appendChild(t),e.appendChild(this.latencyTestButton);const n=document.createElement("div");n.id="dataChannelLatencyTestContainer",n.classList.add("d-none"),this._rootElement.appendChild(n),n.appendChild(this.latencyTestResultsElement)}return this._rootElement}get latencyTestResultsElement(){return this._latencyTestResultsElement||(this._latencyTestResultsElement=document.createElement("div"),this._latencyTestResultsElement.id="dataChannelLatencyStatsResults",this._latencyTestResultsElement.classList.add("StatsResult")),this._latencyTestResultsElement}get latencyTestButton(){return this._latencyTestButton||(this._latencyTestButton=document.createElement("input"),this._latencyTestButton.type="button",this._latencyTestButton.value="Run Test",this._latencyTestButton.id="btn-start-data-channel-latency-test",this._latencyTestButton.classList.add("streamTools-button"),this._latencyTestButton.classList.add("btn-flat")),this._latencyTestButton}handleTestResult(e){if(i.Vy.Info(JSON.stringify(e)),isNaN(e.dataChannelRtt))return void(this.latencyTestResultsElement.innerHTML="<div>Not supported</div>");let t="";t+="<div>Data channel RTT (ms): "+e.dataChannelRtt+"</div>",e.playerToStreamerTime>=0&&e.streamerToPlayerTime>=0&&(t+="<div>Player to Streamer path (ms): "+e.playerToStreamerTime+"</div>",t+="<div>Streamer to Player path (ms): "+e.streamerToPlayerTime+"</div>"),this.latencyTestResultsElement.innerHTML=t;const n=document.createElement("input");n.type="button",n.value="Download",n.classList.add("streamTools-button"),n.classList.add("btn-flat"),n.onclick=()=>{const t=new Blob([e.exportLatencyAsCSV()],{type:"text/plain"}),n=document.createElement("a"),i=URL.createObjectURL(t);n.href=i,n.download="data_channel_latency_test_results.csv",document.body.appendChild(n),n.click(),setTimeout(function(){document.body.removeChild(n),window.URL.revokeObjectURL(i)},0)},this.latencyTestResultsElement.appendChild(n)}handleTestStart(){this.latencyTestResultsElement.innerHTML="<div>Test in progress</div>"}}},1664(e,t,n){n.d(t,{R:()=>s});class i extends CustomEvent{constructor(e){super("editConfirmed",{detail:e,bubbles:!0,cancelable:!0}),this.confirmedText=e}}class s{constructor(){this._rootElement=this.rootElement,this._events=new EventTarget}get events(){return this._events}showModal(e){e&&(e=e.replace(/\0/g,""),this.textArea.value=e),this.textArea.focus(),this.textArea.selectionStart=this.textArea.value.length}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.classList.add("modal"),this._rootElement.appendChild(this.innerModal)),this._rootElement}get innerModal(){return this._innerModal||(this._innerModal=document.createElement("div"),this._innerModal.classList.add("innerModal"),this._innerModal.appendChild(this.editTextHeading),this._innerModal.appendChild(this.textArea),this._innerModal.appendChild(this.modalBtnContainer)),this._innerModal}get editTextHeading(){return this._editTextHeading||(this._editTextHeading=document.createElement("h2"),this._editTextHeading.innerText="Edit Text"),this._editTextHeading}get textArea(){return this._textArea||(this._textArea=document.createElement("textarea"),this._textArea.classList.add("form-control"),this._textArea.classList.add("modalTextArea"),this._textArea.title="Edit Text Area",this._textArea.placeholder="UE text widget value here...",this.textArea.addEventListener("keypress",e=>{e.stopPropagation()}),this.textArea.addEventListener("keyup",e=>{e.stopPropagation()}),this.textArea.addEventListener("keydown",e=>{e.stopPropagation()}),this.textArea.addEventListener("compositionend",e=>{e.stopPropagation()})),this._textArea}get modalBtnContainer(){return this._modalBtnContainer||(this._modalBtnContainer=document.createElement("div"),this._modalBtnContainer.classList.add("modalBtnContainer"),this._modalBtnContainer.appendChild(this.cancelBtn),this._modalBtnContainer.appendChild(this.confirmBtn)),this._modalBtnContainer}get cancelBtn(){return this._cancelBtn||(this._cancelBtn=document.createElement("button"),this._cancelBtn.classList.add("btn-flat"),this._cancelBtn.innerText="Cancel",this._cancelBtn.addEventListener("click",e=>{this.rootElement.remove(),e.stopPropagation()})),this._cancelBtn}get confirmBtn(){return this._confirmBtn||(this._confirmBtn=document.createElement("button"),this._confirmBtn.classList.add("btn-flat"),this._confirmBtn.innerText="Confirm",this._confirmBtn.addEventListener("click",e=>{this.events.dispatchEvent(new i(this.textArea.value)),this.rootElement.remove(),e.stopPropagation()})),this._confirmBtn}}},4498(e,t,n){n.d(t,{cW:()=>s,x2:()=>r});class i{get rootElement(){return this._rootElement}set rootElement(e){e.onclick=()=>this.toggleFullscreen(),this._rootElement=e}constructor(){this.isFullscreen=!1,document.addEventListener("webkitfullscreenchange",()=>this.onFullscreenChange(),!1),document.addEventListener("mozfullscreenchange",()=>this.onFullscreenChange(),!1),document.addEventListener("fullscreenchange",()=>this.onFullscreenChange(),!1),document.addEventListener("MSFullscreenChange",()=>this.onFullscreenChange(),!1)}toggleFullscreen(){if(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen();else{const e=this.fullscreenElement;if(!e)return;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullscreen?e.mozRequestFullscreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():e.webkitEnterFullscreen&&e.webkitEnterFullscreen()}this.onFullscreenChange()}onFullscreenChange(){this.isFullscreen=document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement&&null!==document.msFullscreenElement||document.fullscreenElement&&null!==document.fullscreenElement}}class s extends i{constructor(e){super(),this.rootElement=e}}class r extends i{constructor(){super();const e=document.createElement("button");e.type="button",e.classList.add("UiTool"),e.id="fullscreen-btn",e.appendChild(this.maximizeIcon),e.appendChild(this.minimizeIcon),e.appendChild(this.tooltipText),this.rootElement=e}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="Fullscreen"),this._tooltipText}get maximizeIcon(){if(!this._maximizeIcon){this._maximizeIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._maximizeIcon.setAttributeNS(null,"id","maximizeIcon"),this._maximizeIcon.setAttributeNS(null,"x","0px"),this._maximizeIcon.setAttributeNS(null,"y","0px"),this._maximizeIcon.setAttributeNS(null,"viewBox","0 0 384.97 384.97");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._maximizeIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M384.97,12.03c0-6.713-5.317-12.03-12.03-12.03H264.847c-6.833,0-11.922,5.39-11.934,12.223c0,6.821,5.101,11.838,11.934,11.838h96.062l-0.193,96.519c0,6.833,5.197,12.03,12.03,12.03c6.833-0.012,12.03-5.197,12.03-12.03l0.193-108.369c0-0.036-0.012-0.06-0.012-0.084C384.958,12.09,384.97,12.066,384.97,12.03z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M120.496,0H12.403c-0.036,0-0.06,0.012-0.096,0.012C12.283,0.012,12.247,0,12.223,0C5.51,0,0.192,5.317,0.192,12.03L0,120.399c0,6.833,5.39,11.934,12.223,11.934c6.821,0,11.838-5.101,11.838-11.934l0.192-96.339h96.242c6.833,0,12.03-5.197,12.03-12.03C132.514,5.197,127.317,0,120.496,0z");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M120.123,360.909H24.061v-96.242c0-6.833-5.197-12.03-12.03-12.03S0,257.833,0,264.667v108.092c0,0.036,0.012,0.06,0.012,0.084c0,0.036-0.012,0.06-0.012,0.096c0,6.713,5.317,12.03,12.03,12.03h108.092c6.833,0,11.922-5.39,11.934-12.223C132.057,365.926,126.956,360.909,120.123,360.909z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttributeNS(null,"d","M372.747,252.913c-6.833,0-11.85,5.101-11.838,11.934v96.062h-96.242c-6.833,0-12.03,5.197-12.03,12.03s5.197,12.03,12.03,12.03h108.092c0.036,0,0.06-0.012,0.084-0.012c0.036-0.012,0.06,0.012,0.096,0.012c6.713,0,12.03-5.317,12.03-12.03V264.847C384.97,258.014,379.58,252.913,372.747,252.913z"),e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(s)}return this._maximizeIcon}get minimizeIcon(){if(!this._minimizeIcon){this._minimizeIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._minimizeIcon.setAttributeNS(null,"id","minimizeIcon"),this._minimizeIcon.setAttributeNS(null,"x","0px"),this._minimizeIcon.setAttributeNS(null,"y","0px"),this._minimizeIcon.setAttributeNS(null,"viewBox","0 0 385.331 385.331");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._minimizeIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M264.943,156.665h108.273c6.833,0,11.934-5.39,11.934-12.211c0-6.833-5.101-11.85-11.934-11.838h-96.242V36.181c0-6.833-5.197-12.03-12.03-12.03s-12.03,5.197-12.03,12.03v108.273c0,0.036,0.012,0.06,0.012,0.084c0,0.036-0.012,0.06-0.012,0.096C252.913,151.347,258.23,156.677,264.943,156.665z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M120.291,24.247c-6.821,0-11.838,5.113-11.838,11.934v96.242H12.03c-6.833,0-12.03,5.197-12.03,12.03c0,6.833,5.197,12.03,12.03,12.03h108.273c0.036,0,0.06-0.012,0.084-0.012c0.036,0,0.06,0.012,0.096,0.012c6.713,0,12.03-5.317,12.03-12.03V36.181C132.514,29.36,127.124,24.259,120.291,24.247z");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M120.387,228.666H12.115c-6.833,0.012-11.934,5.39-11.934,12.223c0,6.833,5.101,11.85,11.934,11.838h96.242v96.423c0,6.833,5.197,12.03,12.03,12.03c6.833,0,12.03-5.197,12.03-12.03V240.877c0-0.036-0.012-0.06-0.012-0.084c0-0.036,0.012-0.06,0.012-0.096C132.418,233.983,127.1,228.666,120.387,228.666z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttributeNS(null,"d","M373.3,228.666H265.028c-0.036,0-0.06,0.012-0.084,0.012c-0.036,0-0.06-0.012-0.096-0.012c-6.713,0-12.03,5.317-12.03,12.03v108.273c0,6.833,5.39,11.922,12.223,11.934c6.821,0.012,11.838-5.101,11.838-11.922v-96.242H373.3c6.833,0,12.03-5.197,12.03-12.03S380.134,228.678,373.3,228.666z"),e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(s)}return this._minimizeIcon}onFullscreenChange(){super.onFullscreenChange();const e=this.minimizeIcon,t=this.maximizeIcon;this.isFullscreen?(e.style.display="inline",e.style.transform="translate(0, 0)",t.style.display="none"):(e.style.display="none",t.style.display="inline",t.style.transform="translate(0, 0)")}}},4285(e,t,n){n.d(t,{U:()=>i});class i{constructor(e,t){this._label=e,this._buttonText=t}addOnClickListener(e){this.button.addEventListener("click",e)}get button(){return this._button||(this._button=document.createElement("input"),this._button.type="button",this._button.value=this._buttonText,this._button.classList.add("overlay-button"),this._button.classList.add("btn-flat")),this._button}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.classList.add("setting");const e=document.createElement("div");e.innerText=this._label,this._rootElement.appendChild(e);const t=document.createElement("label");t.classList.add("btn-overlay"),this._rootElement.appendChild(t),t.appendChild(this.button)}return this._rootElement}}},3378(e,t,n){n.d(t,{B:()=>r});var i=n(948),s=n(5143);class r{get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("section"),this._rootElement.classList.add("settingsContainer");const e=document.createElement("div");e.id="latencyTestHeader",e.classList.add("settings-text"),e.classList.add("settingsHeader"),this._rootElement.appendChild(e);const t=document.createElement("div");t.innerHTML=s.Yb.LatencyTest,e.appendChild(t),e.appendChild(this.latencyTestButton);const n=document.createElement("div");n.id="latencyTestContainer",n.classList.add("d-none"),this._rootElement.appendChild(n),n.appendChild(this.latencyTestResultsElement)}return this._rootElement}get latencyTestResultsElement(){return this._latencyTestResultsElement||(this._latencyTestResultsElement=document.createElement("div"),this._latencyTestResultsElement.id="latencyStatsResults",this._latencyTestResultsElement.classList.add("StatsResult")),this._latencyTestResultsElement}get latencyTestButton(){return this._latencyTestButton||(this._latencyTestButton=document.createElement("input"),this._latencyTestButton.type="button",this._latencyTestButton.value="Run Test",this._latencyTestButton.id="btn-start-latency-test",this._latencyTestButton.classList.add("streamTools-button"),this._latencyTestButton.classList.add("btn-flat")),this._latencyTestButton}handleTestResult(e){i.Vy.Info(JSON.stringify(e));let t="";void 0!==e.networkLatency&&e.networkLatency>0&&(t+="<div>Net latency RTT (ms): "+e.networkLatency+"</div>"),void 0!==e.EncodeMs&&e.EncodeMs>0&&(t+="<div>UE Encode (ms): "+e.EncodeMs+"</div>"),void 0!==e.CaptureToSendMs&&e.CaptureToSendMs>0&&(t+="<div>UE Capture (ms): "+e.CaptureToSendMs+"</div>"),void 0!==e.browserSendLatency&&e.browserSendLatency>0&&(t+="<div>Browser send latency (ms): "+e.browserSendLatency+"</div>"),void 0!==e.frameDisplayDeltaTimeMs&&void 0!==e.browserReceiptTimeMs&&(t+=e.frameDisplayDeltaTimeMs&&e.browserReceiptTimeMs?"<div>Browser receive latency (ms): "+e.frameDisplayDeltaTimeMs+"</div>":""),void 0!==e.latencyExcludingDecode&&(t+="<div>Total latency (excluding browser) (ms): "+e.latencyExcludingDecode+"</div>"),void 0!==e.endToEndLatency&&(t+=e.endToEndLatency?"<div>Total latency (ms): "+e.endToEndLatency+"</div>":""),this.latencyTestResultsElement.innerHTML=t}}},1266(e,t,n){n.d(t,{Z:()=>i});class i{get rootElement(){return this._rootElement||(this._rootElement=document.createElement("button"),this._rootElement.type="button",this._rootElement.classList.add("UiTool"),this._rootElement.id="settingsBtn",this._rootElement.appendChild(this.settingsIcon),this._rootElement.appendChild(this.tooltipText)),this._rootElement}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="Settings"),this._tooltipText}get settingsIcon(){if(!this._settingsIcon){this._settingsIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._settingsIcon.setAttributeNS(null,"id","settingsIcon"),this._settingsIcon.setAttributeNS(null,"x","0px"),this._settingsIcon.setAttributeNS(null,"y","0px"),this._settingsIcon.setAttributeNS(null,"viewBox","0 0 478.703 478.703");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._settingsIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M454.2,189.101l-33.6-5.7c-3.5-11.3-8-22.2-13.5-32.6l19.8-27.7c8.4-11.8,7.1-27.9-3.2-38.1l-29.8-29.8\t\t\tc-5.6-5.6-13-8.7-20.9-8.7c-6.2,0-12.1,1.9-17.1,5.5l-27.8,19.8c-10.8-5.7-22.1-10.4-33.8-13.9l-5.6-33.2\t\t\tc-2.4-14.3-14.7-24.7-29.2-24.7h-42.1c-14.5,0-26.8,10.4-29.2,24.7l-5.8,34c-11.2,3.5-22.1,8.1-32.5,13.7l-27.5-19.8\t\t\tc-5-3.6-11-5.5-17.2-5.5c-7.9,0-15.4,3.1-20.9,8.7l-29.9,29.8c-10.2,10.2-11.6,26.3-3.2,38.1l20,28.1\t\t\tc-5.5,10.5-9.9,21.4-13.3,32.7l-33.2,5.6c-14.3,2.4-24.7,14.7-24.7,29.2v42.1c0,14.5,10.4,26.8,24.7,29.2l34,5.8\t\t\tc3.5,11.2,8.1,22.1,13.7,32.5l-19.7,27.4c-8.4,11.8-7.1,27.9,3.2,38.1l29.8,29.8c5.6,5.6,13,8.7,20.9,8.7c6.2,0,12.1-1.9,17.1-5.5\t\t\tl28.1-20c10.1,5.3,20.7,9.6,31.6,13l5.6,33.6c2.4,14.3,14.7,24.7,29.2,24.7h42.2c14.5,0,26.8-10.4,29.2-24.7l5.7-33.6\t\t\tc11.3-3.5,22.2-8,32.6-13.5l27.7,19.8c5,3.6,11,5.5,17.2,5.5l0,0c7.9,0,15.3-3.1,20.9-8.7l29.8-29.8c10.2-10.2,11.6-26.3,3.2-38.1\t\t\tl-19.8-27.8c5.5-10.5,10.1-21.4,13.5-32.6l33.6-5.6c14.3-2.4,24.7-14.7,24.7-29.2v-42.1\t\t\tC478.9,203.801,468.5,191.501,454.2,189.101z M451.9,260.401c0,1.3-0.9,2.4-2.2,2.6l-42,7c-5.3,0.9-9.5,4.8-10.8,9.9\t\t\tc-3.8,14.7-9.6,28.8-17.4,41.9c-2.7,4.6-2.5,10.3,0.6,14.7l24.7,34.8c0.7,1,0.6,2.5-0.3,3.4l-29.8,29.8c-0.7,0.7-1.4,0.8-1.9,0.8\t\t\tc-0.6,0-1.1-0.2-1.5-0.5l-34.7-24.7c-4.3-3.1-10.1-3.3-14.7-0.6c-13.1,7.8-27.2,13.6-41.9,17.4c-5.2,1.3-9.1,5.6-9.9,10.8l-7.1,42\t\t\tc-0.2,1.3-1.3,2.2-2.6,2.2h-42.1c-1.3,0-2.4-0.9-2.6-2.2l-7-42c-0.9-5.3-4.8-9.5-9.9-10.8c-14.3-3.7-28.1-9.4-41-16.8\t\t\tc-2.1-1.2-4.5-1.8-6.8-1.8c-2.7,0-5.5,0.8-7.8,2.5l-35,24.9c-0.5,0.3-1,0.5-1.5,0.5c-0.4,0-1.2-0.1-1.9-0.8l-29.8-29.8\t\t\tc-0.9-0.9-1-2.3-0.3-3.4l24.6-34.5c3.1-4.4,3.3-10.2,0.6-14.8c-7.8-13-13.8-27.1-17.6-41.8c-1.4-5.1-5.6-9-10.8-9.9l-42.3-7.2\t\t\tc-1.3-0.2-2.2-1.3-2.2-2.6v-42.1c0-1.3,0.9-2.4,2.2-2.6l41.7-7c5.3-0.9,9.6-4.8,10.9-10c3.7-14.7,9.4-28.9,17.1-42\t\t\tc2.7-4.6,2.4-10.3-0.7-14.6l-24.9-35c-0.7-1-0.6-2.5,0.3-3.4l29.8-29.8c0.7-0.7,1.4-0.8,1.9-0.8c0.6,0,1.1,0.2,1.5,0.5l34.5,24.6\t\t\tc4.4,3.1,10.2,3.3,14.8,0.6c13-7.8,27.1-13.8,41.8-17.6c5.1-1.4,9-5.6,9.9-10.8l7.2-42.3c0.2-1.3,1.3-2.2,2.6-2.2h42.1\t\t\tc1.3,0,2.4,0.9,2.6,2.2l7,41.7c0.9,5.3,4.8,9.6,10,10.9c15.1,3.8,29.5,9.7,42.9,17.6c4.6,2.7,10.3,2.5,14.7-0.6l34.5-24.8\t\t\tc0.5-0.3,1-0.5,1.5-0.5c0.4,0,1.2,0.1,1.9,0.8l29.8,29.8c0.9,0.9,1,2.3,0.3,3.4l-24.7,34.7c-3.1,4.3-3.3,10.1-0.6,14.7\t\t\tc7.8,13.1,13.6,27.2,17.4,41.9c1.3,5.2,5.6,9.1,10.8,9.9l42,7.1c1.3,0.2,2.2,1.3,2.2,2.6v42.1H451.9z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M239.4,136.001c-57,0-103.3,46.3-103.3,103.3s46.3,103.3,103.3,103.3s103.3-46.3,103.3-103.3S296.4,136.001,239.4,136.001z M239.4,315.601c-42.1,0-76.3-34.2-76.3-76.3s34.2-76.3,76.3-76.3s76.3,34.2,76.3,76.3S281.5,315.601,239.4,315.601z"),e.appendChild(t),e.appendChild(n)}return this._settingsIcon}}},2113(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this._rootElement=null}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id="settings-panel",this._rootElement.classList.add("panel-wrap");const e=document.createElement("div");e.classList.add("panel"),this._rootElement.appendChild(e);const t=document.createElement("div");t.id="settingsHeading",t.textContent="Settings",e.appendChild(t),e.appendChild(this.settingsCloseButton),e.appendChild(this.settingsContentElement)}return this._rootElement}get settingsContentElement(){return this._settingsContentElement||(this._settingsContentElement=document.createElement("div"),this._settingsContentElement.id="settingsContent"),this._settingsContentElement}get settingsCloseButton(){return this._settingsCloseButton||(this._settingsCloseButton=document.createElement("div"),this._settingsCloseButton.id="settingsClose"),this._settingsCloseButton}show(){this.rootElement.classList.contains("panel-wrap-visible")||this.rootElement.classList.add("panel-wrap-visible")}toggleVisibility(){this.rootElement.classList.toggle("panel-wrap-visible")}hide(){this.rootElement.classList.contains("panel-wrap-visible")&&this.rootElement.classList.remove("panel-wrap-visible")}}},6702(e,t,n){n.d(t,{r:()=>i});class i{get rootElement(){return this._rootElement||(this._rootElement=document.createElement("button"),this._rootElement.type="button",this._rootElement.classList.add("UiTool"),this._rootElement.id="statsBtn",this._rootElement.appendChild(this.statsIcon),this._rootElement.appendChild(this.tooltipText)),this._rootElement}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="Information"),this._tooltipText}get statsIcon(){if(!this._statsIcon){this._statsIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._statsIcon.setAttributeNS(null,"id","statsIcon"),this._statsIcon.setAttributeNS(null,"x","0px"),this._statsIcon.setAttributeNS(null,"y","0px"),this._statsIcon.setAttributeNS(null,"viewBox","0 0 330 330");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._statsIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M165,0.008C74.019,0.008,0,74.024,0,164.999c0,90.977,74.019,164.992,165,164.992s165-74.015,165-164.992C330,74.024,255.981,0.008,165,0.008z M165,299.992c-74.439,0-135-60.557-135-134.992S90.561,30.008,165,30.008s135,60.557,135,134.991C300,239.436,239.439,299.992,165,299.992z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M165,130.008c-8.284,0-15,6.716-15,15v99.983c0,8.284,6.716,15,15,15s15-6.716,15-15v-99.983C180,136.725,173.284,130.008,165,130.008z");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M165,70.011c-3.95,0-7.811,1.6-10.61,4.39c-2.79,2.79-4.39,6.66-4.39,10.61s1.6,7.81,4.39,10.61c2.79,2.79,6.66,4.39,10.61,4.39s7.81-1.6,10.609-4.39c2.79-2.8,4.391-6.66,4.391-10.61s-1.601-7.82-4.391-10.61C172.81,71.61,168.95,70.011,165,70.011z"),e.appendChild(t),e.appendChild(n),e.appendChild(i)}return this._statsIcon}}},5117(e,t,n){n.d(t,{i:()=>d});var i=n(3378),s=n(948),r=n(117),o=n(5073),a=n(5143);class l{}class d{constructor(e){this.statsMap=new Map,this._config=e,this.latencyTest=new i.B,this.dataChannelLatencyTest=new o.y}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id="stats-panel",this._rootElement.classList.add("panel-wrap");const e=document.createElement("div");e.classList.add("panel"),this._rootElement.appendChild(e);const t=document.createElement("div");t.id="statsHeading",t.textContent="Information",e.appendChild(t),e.appendChild(this.statsCloseButton),e.appendChild(this.statsContentElement)}return this._rootElement}get statsContentElement(){if(!this._statsContentElement){this._statsContentElement=document.createElement("div"),this._statsContentElement.id="statsContent";const e=document.createElement("div");e.id="streamToolsStats",e.classList.add("container");const t=document.createElement("div");t.id="ControlStats",t.classList.add("row");const n=document.createElement("section");n.id="statistics",n.classList.add("settingsContainer");const i=document.createElement("section");i.id="latencyStats",i.classList.add("settingsContainer");const s=document.createElement("div");s.id="statisticsHeader",s.classList.add("settings-text"),s.classList.add("settingsHeader");const r=document.createElement("div");if(r.id="latencyStatsHeader",r.classList.add("settings-text"),r.classList.add("settingsHeader"),this._statsContentElement.appendChild(e),e.appendChild(t),t.appendChild(n),t.appendChild(i),n.appendChild(s),i.appendChild(r),(0,a.DF)(this._config,a.Yb.SessionStats)){const e=document.createElement("div");e.innerHTML=a.Yb.SessionStats,s.appendChild(e)}if(n.appendChild(this.statisticsContainer),(0,a.DF)(this._config,a.Yb.LatencyStats)){const e=document.createElement("div");e.innerHTML=a.Yb.LatencyStats,r.appendChild(e)}i.appendChild(this.latencyStatsContainer),(0,a.DF)(this._config,a.Yb.LatencyTest)&&t.appendChild(this.latencyTest.rootElement),(0,a.DF)(this._config,a.Yb.DataChannelLatencyTest)&&t.appendChild(this.dataChannelLatencyTest.rootElement)}return this._statsContentElement}get statisticsContainer(){return this._statisticsContainer||(this._statisticsContainer=document.createElement("div"),this._statisticsContainer.id="statisticsContainer",this._statisticsContainer.classList.add("d-none"),this._statisticsContainer.appendChild(this.statsResult)),this._statisticsContainer}get latencyStatsContainer(){return this._latencyStatsContainer||(this._latencyStatsContainer=document.createElement("div"),this._latencyStatsContainer.id="latencyStatsContainer",this._latencyStatsContainer.classList.add("d-none"),this._latencyStatsContainer.appendChild(this.latencyResult)),this._latencyStatsContainer}get statsResult(){return this._statsResult||(this._statsResult=document.createElement("div"),this._statsResult.id="statisticsResult",this._statsResult.classList.add("StatsResult")),this._statsResult}get latencyResult(){return this._latencyResult||(this._latencyResult=document.createElement("div"),this._latencyResult.id="latencyResult",this._latencyResult.classList.add("StatsResult")),this._latencyResult}get statsCloseButton(){return this._statsCloseButton||(this._statsCloseButton=document.createElement("div"),this._statsCloseButton.id="statsClose"),this._statsCloseButton}onDisconnect(){this.latencyTest.latencyTestButton.onclick=()=>{},this.dataChannelLatencyTest.latencyTestButton.onclick=()=>{}}onVideoInitialized(e){this.latencyTest.latencyTestButton.onclick=()=>{e.requestLatencyTest()},this.dataChannelLatencyTest.latencyTestButton.onclick=()=>{e.requestDataChannelLatencyTest({duration:1e3,rps:10,requestSize:200,responseSize:200})&&this.dataChannelLatencyTest.handleTestStart()}}configure(e){e.DisableLatencyTest&&(this.latencyTest.latencyTestButton.disabled=!0,this.latencyTest.latencyTestButton.title="Disabled by -PixelStreamingDisableLatencyTester=true",this.dataChannelLatencyTest.latencyTestButton.disabled=!0,this.dataChannelLatencyTest.latencyTestButton.title="Disabled by -PixelStreamingDisableLatencyTester=true",s.Vy.Info("-PixelStreamingDisableLatencyTester=true, requesting latency report from the the browser to UE is disabled."))}show(){this.rootElement.classList.contains("panel-wrap-visible")||this.rootElement.classList.add("panel-wrap-visible")}toggleVisibility(){this.rootElement.classList.toggle("panel-wrap-visible")}hide(){this.rootElement.classList.contains("panel-wrap-visible")&&this.rootElement.classList.remove("panel-wrap-visible")}handlePlayerCount(e){this.addOrUpdateSessionStat("PlayerCountStat","Players",e.toString())}handleStats(e){var t,n,i,o;const a=new Intl.NumberFormat(window.navigator.language,{maximumFractionDigits:0}),l=r.c.formatBytes(e.inboundVideoStats.bytesReceived,2);this.addOrUpdateSessionStat("InboundDataStat","Received",l);const d=Object.prototype.hasOwnProperty.call(e.inboundVideoStats,"packetsLost")?a.format(e.inboundVideoStats.packetsLost):"Chrome only";this.addOrUpdateSessionStat("PacketsLostStat","Packets Lost",d),e.inboundVideoStats.bitrate&&this.addOrUpdateSessionStat("VideoBitrateStat","Video Bitrate (kbps)",e.inboundVideoStats.bitrate.toString()),e.inboundAudioStats.bitrate&&this.addOrUpdateSessionStat("AudioBitrateStat","Audio Bitrate (kbps)",e.inboundAudioStats.bitrate.toString());const c=void 0!==e.inboundVideoStats.frameWidth&&e.inboundVideoStats.frameWidth>0&&void 0!==e.inboundVideoStats.frameHeight&&e.inboundVideoStats.frameHeight>0?e.inboundVideoStats.frameWidth+"x"+e.inboundVideoStats.frameHeight:"Chrome only";if(this.addOrUpdateSessionStat("VideoResStat","Video resolution",c),void 0!==e.inboundVideoStats.framesDecoded){const t=a.format(e.inboundVideoStats.framesDecoded);this.addOrUpdateSessionStat("FramesDecodedStat","Frames Decoded",t)}e.inboundVideoStats.framesPerSecond&&this.addOrUpdateSessionStat("FramerateStat","Framerate",e.inboundVideoStats.framesPerSecond.toString()),void 0!==e.inboundVideoStats.framesDropped&&this.addOrUpdateSessionStat("FramesDroppedStat","Frames dropped",e.inboundVideoStats.framesDropped.toString()),e.inboundVideoStats.codecId&&this.addOrUpdateSessionStat("VideoCodecStat","Video codec",null!==(n=null===(t=e.codecs.get(e.inboundVideoStats.codecId))||void 0===t?void 0:t.mimeType.replace("video/",""))&&void 0!==n?n:""),e.inboundAudioStats.codecId&&this.addOrUpdateSessionStat("AudioCodecStat","Audio codec",null!==(o=null===(i=e.codecs.get(e.inboundAudioStats.codecId))||void 0===i?void 0:i.mimeType.replace("audio/",""))&&void 0!==o?o:"");const h=e.getActiveCandidatePair();if(h){const t=Object.prototype.hasOwnProperty.call(h,"currentRoundTripTime")&&e.isNumber(h.currentRoundTripTime)?Math.ceil(1e3*h.currentRoundTripTime).toString():"Can't calculate";this.addOrUpdateSessionStat("RTTStat","Net RTT (ms)",t)}this.addOrUpdateSessionStat("DurationStat","Duration",e.sessionStats.runTime),this.addOrUpdateSessionStat("ControlsInputStat","Controls stream input",e.sessionStats.controlsStreamInput),void 0===e.sessionStats.videoEncoderAvgQP||Number.isNaN(e.sessionStats.videoEncoderAvgQP)||this.addOrUpdateSessionStat("QPStat","Video quantization parameter",e.sessionStats.videoEncoderAvgQP.toString()),s.Vy.Info(`--------- Stats ---------\n ${JSON.stringify(e)}\n------------------------`)}handleLatencyInfo(e){void 0!==e.frameTiming&&(void 0!==e.frameTiming.encoderLatencyMs&&this.addOrUpdateLatencyStat("EncodeLatency","Encode latency (ms)",Math.ceil(e.frameTiming.encoderLatencyMs).toString()),void 0!==e.frameTiming.packetizeLatencyMs&&this.addOrUpdateLatencyStat("PacketizerLatency","Packetizer latency (ms)",Math.ceil(e.frameTiming.packetizeLatencyMs).toString()),void 0!==e.frameTiming.pacerLatencyMs&&this.addOrUpdateLatencyStat("PacerLatency","Pacer latency (ms)",Math.ceil(e.frameTiming.pacerLatencyMs).toString()),void 0!==e.frameTiming.captureToSendLatencyMs&&this.addOrUpdateLatencyStat("VideoTimingCaptureToSend","Post-capture to send latency (ms)",Math.ceil(e.frameTiming.captureToSendLatencyMs).toString())),void 0!==e.senderLatencyMs&&this.addOrUpdateLatencyStat("AbsCaptureTimeToSendLatency","Post-capture (abs-ct) to send latency (ms)",Math.ceil(e.senderLatencyMs).toString()),void 0!==e.averageAssemblyDelayMs&&this.addOrUpdateLatencyStat("AvgAssemblyDelay","Assembly delay (ms)",Math.ceil(e.averageAssemblyDelayMs).toString()),void 0!==e.averageDecodeLatencyMs&&this.addOrUpdateLatencyStat("AvgDecodeDelay","Decode time (ms)",Math.ceil(e.averageDecodeLatencyMs).toString()),void 0!==e.averageJitterBufferDelayMs&&this.addOrUpdateLatencyStat("AvgJitterBufferDelay","Jitter buffer (ms)",Math.ceil(e.averageJitterBufferDelayMs).toString()),void 0!==e.averageProcessingDelayMs&&this.addOrUpdateLatencyStat("AvgProcessingDelay","Processing delay (ms)",Math.ceil(e.averageProcessingDelayMs).toString()),void 0!==e.averageE2ELatency&&this.addOrUpdateLatencyStat("AvgE2ELatency","Total latency (ms)",Math.ceil(e.averageE2ELatency).toString())}addOrUpdateSessionStat(e,t,n){this.addOrUpdateStat(a.Yb.SessionStats,e,t,n)}addOrUpdateLatencyStat(e,t,n){this.addOrUpdateStat(a.Yb.LatencyStats,e,t,n)}addOrUpdateStat(e,t,n,i){if(e===a.Yb.SessionStats&&!(0,a.DF)(this._config,a.Yb.SessionStats))return;if(e===a.Yb.LatencyStats&&!(0,a.DF)(this._config,a.Yb.LatencyStats))return;if(e!==a.Yb.SessionStats&&e!==a.Yb.LatencyStats)return;const s=e===a.Yb.SessionStats?this.statsResult:this.latencyResult,r=`${n}: ${i}`;if(this.statsMap.has(t)){const e=this.statsMap.get(t);void 0!==e&&(e.element.innerHTML=r)}else{const e=new l;e.id=t,e.stat=i,e.title=n,e.element=document.createElement("div"),e.element.innerHTML=r,s.appendChild(e.element),this.statsMap.set(t,e)}}}},5143(e,t,n){n.d(t,{DF:()=>l,Uv:()=>s,Yb:()=>r,ai:()=>i,ny:()=>o,wM:()=>a,wx:()=>d});class i{}i.LightMode="LightMode";class s{}s.PixelStreaming="Pixel Streaming",s.UI="UI",s.Input="Input",s.Encoder="Encoder",s.WebRTC="WebRTC",s.Commands="Commands";class r{}var o;function a(e){return!e||!!e&&e.isEnabled}function l(e,t){return!e||!!e&&(!Object.prototype.hasOwnProperty.call(e.sectionVisibility,t)||Object.prototype.hasOwnProperty.call(e.sectionVisibility,t)&&e.sectionVisibility[t])}function d(e,t){return!e||!!e&&(!Object.prototype.hasOwnProperty.call(e.settingVisibility,t)||Object.prototype.hasOwnProperty.call(e.settingVisibility,t)&&e.settingVisibility[t])}r.SessionStats="Session Stats",r.LatencyStats="Latency Stats",r.LatencyTest="Latency Test",r.DataChannelLatencyTest="Data Channel Latency Test",function(e){e[e.CreateDefaultElement=0]="CreateDefaultElement",e[e.UseCustomElement=1]="UseCustomElement",e[e.Disable=2]="Disable"}(o||(o={}))},3345(e,t,n){n.d(t,{W:()=>i});class i{constructor(e){this.videoEncoderAvgQP=-1,this.statsText="",this.color="",this.orangeQP=26,this.redQP=35,this.config=e}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.id="connection",this._rootElement.classList.add("UiTool"),this._rootElement.appendChild(this.qualityStatus),this._rootElement.appendChild(this.qualityText),this.updateQpTooltip(-1)),this._rootElement}get qualityText(){return this._qualityText||(this._qualityText=document.createElement("span"),this._qualityText.id="qualityText",this._qualityText.classList.add("tooltiptext")),this._qualityText}get qualityStatus(){return this._qualityStatus||(this._qualityStatus=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._qualityStatus.setAttributeNS(null,"id","connectionStrength"),this._qualityStatus.setAttributeNS(null,"x","0px"),this._qualityStatus.setAttributeNS(null,"y","0px"),this._qualityStatus.setAttributeNS(null,"viewBox","0 0 494.45 494.45"),this.qualityStatus.appendChild(this.dot),this.qualityStatus.appendChild(this.middle),this.qualityStatus.appendChild(this.outer),this.qualityStatus.appendChild(this.inner)),this._qualityStatus}get dot(){return this._dot||(this._dot=document.createElementNS("http://www.w3.org/2000/svg","circle"),this._dot.setAttributeNS(null,"id","dot"),this._dot.setAttributeNS(null,"cx","247.125"),this._dot.setAttributeNS(null,"cy","398.925"),this._dot.setAttributeNS(null,"r","35.3")),this._dot}get outer(){return this._outer||(this._outer=document.createElementNS("http://www.w3.org/2000/svg","path"),this._outer.setAttributeNS(null,"id","outer"),this._outer.setAttributeNS(null,"d","M467.925,204.625c-6.8,0-13.5-2.6-18.7-7.8c-111.5-111.4-292.7-111.4-404.1,0c-10.3,10.3-27.1,10.3-37.4,0s-10.3-27.1,0-37.4c64-64,149-99.2,239.5-99.2s175.5,35.2,239.5,99.2c10.3,10.3,10.3,27.1,0,37.4C481.425,202.025,474.625,204.625,467.925,204.625z")),this._outer}get middle(){return this._middle||(this._middle=document.createElementNS("http://www.w3.org/2000/svg","path"),this._middle.setAttributeNS(null,"id","middle"),this._middle.setAttributeNS(null,"d","M395.225,277.325c-6.8,0-13.5-2.6-18.7-7.8c-71.4-71.3-187.4-71.3-258.8,0c-10.3,10.3-27.1,10.3-37.4,0s-10.3-27.1,0-37.4c92-92,241.6-92,333.6,0c10.3,10.3,10.3,27.1,0,37.4C408.725,274.725,401.925,277.325,395.225,277.325z")),this._middle}get inner(){return this._inner||(this._inner=document.createElementNS("http://www.w3.org/2000/svg","path"),this._inner.setAttributeNS(null,"id","inner"),this._inner.setAttributeNS(null,"d","M323.625,348.825c-6.8,0-13.5-2.6-18.7-7.8c-15.4-15.4-36-23.9-57.8-23.9s-42.4,8.5-57.8,23.9c-10.3,10.3-27.1,10.3-37.4,0c-10.3-10.3-10.3-27.1,0-37.4c25.4-25.4,59.2-39.4,95.2-39.4s69.8,14,95.2,39.5c10.3,10.3,10.3,27.1,0,37.4C337.225,346.225,330.425,348.825,323.625,348.825z")),this._inner}blinkVideoQualityStatus(e){let t=e,n=1;const i=setInterval(()=>{n-=.1,this.qualityText.style.opacity=String(Math.abs(2*(n-.5))),n<=.1&&(0==--t?clearInterval(i):n=1)},100/e)}updateQpTooltip(e){var t;this.videoEncoderAvgQP=e,e>this.redQP?(this.color="red",this.blinkVideoQualityStatus(2),this.statsText=`<div style="color: ${this.color}">Poor encoding quality</div>`,this.outer.setAttributeNS(null,"fill","#3c3b40"),this.middle.setAttributeNS(null,"fill","#3c3b40"),this.inner.setAttributeNS(null,"fill",this.color),this.dot.setAttributeNS(null,"fill",this.color)):e>this.orangeQP?(this.color="orange",this.blinkVideoQualityStatus(1),this.statsText=`<div style="color: ${this.color}">Blocky encoding quality</div>`,this.outer.setAttributeNS(null,"fill","#3c3b40"),this.middle.setAttributeNS(null,"fill",this.color),this.inner.setAttributeNS(null,"fill",this.color),this.dot.setAttributeNS(null,"fill",this.color)):e<=0?(this.color="#b0b0b0",this.outer.setAttributeNS(null,"fill","#3c3b40"),this.middle.setAttributeNS(null,"fill","#3c3b40"),this.inner.setAttributeNS(null,"fill","#3c3b40"),this.dot.setAttributeNS(null,"fill","#3c3b40"),this.statsText=`<div style="color: ${this.color}">Not connected</div>`):(this.color="lime",this.qualityStatus.style.opacity=1==(null===(t=this.config)||void 0===t?void 0:t.hideWhenGood)?"0":"1",this.statsText=`<div style="color: ${this.color}">Clear encoding quality</div>`,this.outer.setAttributeNS(null,"fill",this.color),this.middle.setAttributeNS(null,"fill",this.color),this.inner.setAttributeNS(null,"fill",this.color),this.dot.setAttributeNS(null,"fill",this.color)),this.qualityText.innerHTML=this.statsText}}},8369(e,t,n){n.d(t,{A:()=>i});class i{get rootElement(){return this._rootElement||(this._rootElement=document.createElement("button"),this._rootElement.type="button",this._rootElement.classList.add("UiTool"),this._rootElement.id="xrBtn",this._rootElement.appendChild(this.xrIcon),this._rootElement.appendChild(this.tooltipText)),this._rootElement}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="XR"),this._tooltipText}get xrIcon(){if(!this._xrIcon){this._xrIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._xrIcon.setAttributeNS(null,"id","xrIcon"),this._xrIcon.setAttributeNS(null,"x","0px"),this._xrIcon.setAttributeNS(null,"y","0px"),this._xrIcon.setAttributeNS(null,"viewBox","0 0 100 100");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._xrIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M29 41c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 14c-2.8 0-5-2.2-5-5s2.2-5 5-5 5 2.2 5 5-2.2 5-5 5zm42-14c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 14c-2.8 0-5-2.2-5-5s2.2-5 5-5 5 2.2 5 5-2.2 5-5 5zm12-31H17c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h14.5c3.5 0 6.8-1.5 9-4.1l3.5-4c1.5-1.7 3.7-2.7 6-2.7s4.5 1 6 2.7l3.5 4c2.3 2.6 5.6 4.1 9 4.1H83c6.6 0 12-5.4 12-12V36c0-6.6-5.4-12-12-12zm8 40c0 4.4-3.6 8-8 8H68.5c-2.3 0-4.5-1-6-2.7l-3.5-4c-2.3-2.6-5.6-4.1-9-4.1-3.5 0-6.8 1.5-9 4.1l-3.5 4C36 71 33.8 72 31.5 72H17c-4.4 0-8-3.6-8-8V36c0-4.4 3.6-8 8-8h66c4.4 0 8 3.6 8 8v28z"),e.appendChild(t)}return this._xrIcon}}},117(e,t,n){n.d(t,{c:()=>i});class i{static formatBytes(e,t){if(0===e)return"0";const n=t<0?0:t,i=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,i)).toFixed(n))+" "+["Bytes","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"][i]}}},4441(e,t,n){function i(e,t){if(!e)throw new Error(t)}function s(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int 32: "+e)}function r(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint 32: "+e)}function o(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw new Error("invalid float 32: "+e)}n.d(t,{bn:()=>s,e1:()=>r,vA:()=>i,wO:()=>o})},2616(e,t,n){n.d(t,{A:()=>r,C:()=>o});let i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),s=[];for(let e=0;e<i.length;e++)s[i[e].charCodeAt(0)]=e;function r(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let n,i=new Uint8Array(t),r=0,o=0,a=0;for(let t=0;t<e.length;t++){if(n=s[e.charCodeAt(t)],void 0===n)switch(e[t]){case"=":o=0;case"\n":case"\r":case"\t":case" ":continue;default:throw Error("invalid base64 string.")}switch(o){case 0:a=n,o=1;break;case 1:i[r++]=a<<2|(48&n)>>4,a=n,o=2;break;case 2:i[r++]=(15&a)<<4|(60&n)>>2,a=n,o=3;break;case 3:i[r++]=(3&a)<<6|n,o=0}}if(1==o)throw Error("invalid base64 string.");return i.subarray(0,r)}function o(e){let t,n="",s=0,r=0;for(let o=0;o<e.length;o++)switch(t=e[o],s){case 0:n+=i[t>>2],r=(3&t)<<4,s=1;break;case 1:n+=i[r|t>>4],r=(15&t)<<2,s=2;break;case 2:n+=i[r|t>>6],n+=i[63&t],s=0}return s&&(n+=i[r],n+="=",1==s&&(n+="=")),n}s["-".charCodeAt(0)]=i.indexOf("+"),s["_".charCodeAt(0)]=i.indexOf("/")},8899(e,t,n){var i,s;n.d(t,{O0:()=>s,f$:()=>i}),function(e){e.symbol=Symbol.for("protobuf-ts/unknown"),e.onRead=(n,i,s,r,o)=>{(t(i)?i[e.symbol]:i[e.symbol]=[]).push({no:s,wireType:r,data:o})},e.onWrite=(t,n,i)=>{for(let{no:t,wireType:s,data:r}of e.list(n))i.tag(t,s).raw(r)},e.list=(n,i)=>{if(t(n)){let t=n[e.symbol];return i?t.filter(e=>e.no==i):t}return[]},e.last=(t,n)=>e.list(t,n).slice(-1)[0];const t=t=>t&&Array.isArray(t[e.symbol])}(i||(i={})),function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(s||(s={}))},7844(e,t,n){n.d(t,{e:()=>a});var i=n(8899),s=n(6544),r=n(7718);const o={readUnknownField:!0,readerFactory:e=>new l(e)};function a(e){return e?Object.assign(Object.assign({},o),e):o}class l{constructor(e,t){this.varint64=r.ls,this.uint32=r.Gn,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){let e=this.uint32(),t=e>>>3,n=7&e;if(t<=0||n<0||n>5)throw new Error("illegal tag: field no "+t+" wire type "+n);return[t,n]}skip(e){let t=this.pos;switch(e){case i.O0.Varint:for(;128&this.buf[this.pos++];);break;case i.O0.Bit64:this.pos+=4;case i.O0.Bit32:this.pos+=4;break;case i.O0.LengthDelimited:let t=this.uint32();this.pos+=t;break;case i.O0.StartGroup:let n;for(;(n=this.tag()[1])!==i.O0.EndGroup;)this.skip(n);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return new s.hY(...this.varint64())}uint64(){return new s.eA(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(1&e);return e=(e>>>1|(1&t)<<31)^n,t=t>>>1^n,new s.hY(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new s.eA(this.sfixed32(),this.sfixed32())}sfixed64(){return new s.hY(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}},8592(e,t,n){n.d(t,{d:()=>a});var i=n(6544),s=n(7718),r=n(4441);const o={writeUnknownFields:!0,writerFactory:()=>new l};function a(e){return e?Object.assign(Object.assign({},o),e):o}class l{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),n=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],n),n+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for((0,r.e1)(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return(0,r.bn)(e),(0,s.f7)(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){(0,r.wO)(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){(0,r.e1)(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){(0,r.bn)(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return(0,r.bn)(e),e=(e<<1^e>>31)>>>0,(0,s.f7)(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),s=i.hY.from(e);return n.setInt32(0,s.lo,!0),n.setInt32(4,s.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),s=i.eA.from(e);return n.setInt32(0,s.lo,!0),n.setInt32(4,s.hi,!0),this.raw(t)}int64(e){let t=i.hY.from(e);return(0,s.cV)(t.lo,t.hi,this.buf),this}sint64(e){let t=i.hY.from(e),n=t.hi>>31,r=t.lo<<1^n,o=(t.hi<<1|t.lo>>>31)^n;return(0,s.cV)(r,o,this.buf),this}uint64(e){let t=i.eA.from(e);return(0,s.cV)(t.lo,t.hi,this.buf),this}}},7718(e,t,n){function i(){let e=0,t=0;for(let n=0;n<28;n+=7){let i=this.buf[this.pos++];if(e|=(127&i)<<n,!(128&i))return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(15&n)<<28,t=(112&n)>>4,!(128&n))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let i=this.buf[this.pos++];if(t|=(127&i)<<n,!(128&i))return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function s(e,t,n){for(let i=0;i<28;i+=7){const s=e>>>i,r=!(s>>>7==0&&0==t),o=255&(r?128|s:s);if(n.push(o),!r)return}const i=e>>>28&15|(7&t)<<4,s=!!(t>>3);if(n.push(255&(s?128|i:i)),s){for(let e=3;e<31;e+=7){const i=t>>>e,s=!(i>>>7==0),r=255&(s?128|i:i);if(n.push(r),!s)return}n.push(t>>>31&1)}}n.d(t,{Gn:()=>d,Jg:()=>o,cV:()=>s,f7:()=>l,ls:()=>i,oJ:()=>a});const r=4294967296;function o(e){let t="-"==e[0];t&&(e=e.slice(1));const n=1e6;let i=0,s=0;function o(t,o){const a=Number(e.slice(t,o));s*=n,i=i*n+a,i>=r&&(s+=i/r|0,i%=r)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),[t,i,s]}function a(e,t){if(t>>>0<=2097151)return""+(r*t+(e>>>0));let n=(e>>>24|t<<8)>>>0&16777215,i=t>>16&65535,s=(16777215&e)+6777216*n+6710656*i,o=n+8147497*i,a=2*i,l=1e7;function d(e,t){let n=e?String(e):"";return t?"0000000".slice(n.length)+n:n}return s>=l&&(o+=Math.floor(s/l),s%=l),o>=l&&(a+=Math.floor(o/l),o%=l),d(a,0)+d(o,a)+d(s,1)}function l(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(127&e|128),e>>=7;t.push(1)}}function d(){let e=this.buf[this.pos++],t=127&e;if(!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,!(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;128&e&&t<10;t++)e=this.buf[this.pos++];if(128&e)throw new Error("invalid varint");return this.assertBounds(),t>>>0}},9196(e,t,n){n.d(t,{bm:()=>r,yG:()=>o});const i={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},s={ignoreUnknownFields:!1};function r(e){return e?Object.assign(Object.assign({},s),e):s}function o(e){return e?Object.assign(Object.assign({},i),e):i}},2280(e,t,n){function i(e){let t=typeof e;if("object"==t){if(Array.isArray(e))return"array";if(null===e)return"null"}return t}function s(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}n.d(t,{O:()=>s,V:()=>i})},9378(e,t,n){function i(e){let t=!1;const n=[];for(let i=0;i<e.length;i++){let s=e.charAt(i);"_"==s?t=!0:/\d/.test(s)?(n.push(s),t=!0):t?(n.push(s.toUpperCase()),t=!1):0==i?n.push(s.toLowerCase()):n.push(s)}return n.join("")}n.d(t,{W:()=>i})},5336(e,t,n){n.d(t,{$:()=>i});const i=Symbol.for("protobuf-ts/message-type")},2285(e,t,n){n.d(t,{G:()=>b});var i=n(5336),s=n(743),r=n(350),o=n(9581),a=n(2985),l=n(8228),d=n(1312),c=n(6895),h=n(3923),u=n(2280),m=n(9196),p=n(9230),g=n(8592),f=n(7844);const v=Object.getOwnPropertyDescriptors(Object.getPrototypeOf({})),y=v[i.$]={};class b{constructor(e,t,n){this.defaultCheckDepth=16,this.typeName=e,this.fields=t.map(s.mS),this.options=null!=n?n:{},y.value=this,this.messagePrototype=Object.create(null,v),this.refTypeCheck=new r.u(this),this.refJsonReader=new o.L(this),this.refJsonWriter=new a.X(this),this.refBinReader=new l.W(this),this.refBinWriter=new d.c(this)}create(e){let t=(0,c.C)(this);return void 0!==e&&(0,h.x)(this,t,e),t}clone(e){let t=this.create();return(0,h.x)(this,t,e),t}equals(e,t){return(0,p.F)(this,e,t)}is(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!1)}isAssignable(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!0)}mergePartial(e,t){(0,h.x)(this,e,t)}fromBinary(e,t){let n=(0,f.e)(t);return this.internalBinaryRead(n.readerFactory(e),e.byteLength,n)}fromJson(e,t){return this.internalJsonRead(e,(0,m.bm)(t))}fromJsonString(e,t){let n=JSON.parse(e);return this.fromJson(n,t)}toJson(e,t){return this.internalJsonWrite(e,(0,m.yG)(t))}toJsonString(e,t){var n;let i=this.toJson(e,t);return JSON.stringify(i,null,null!==(n=null==t?void 0:t.prettySpaces)&&void 0!==n?n:0)}toBinary(e,t){let n=(0,g.d)(t);return this.internalBinaryWrite(e,n.writerFactory(),n).finish()}internalJsonRead(e,t,n){if(null!==e&&"object"==typeof e&&!Array.isArray(e)){let i=null!=n?n:this.create();return this.refJsonReader.read(e,i,t),i}throw new Error(`Unable to parse message ${this.typeName} from JSON ${(0,u.V)(e)}.`)}internalJsonWrite(e,t){return this.refJsonWriter.write(e,t)}internalBinaryWrite(e,t,n){return this.refBinWriter.write(e,t,n),t}internalBinaryRead(e,t,n,i){let s=null!=i?i:this.create();return this.refBinReader.read(e,s,n,t),s}}},314(e,t,n){function i(e){if("object"!=typeof e||null===e||!e.hasOwnProperty("oneofKind"))return!1;switch(typeof e.oneofKind){case"string":return void 0!==e[e.oneofKind]&&2==Object.keys(e).length;case"undefined":return 1==Object.keys(e).length;default:return!1}}n.d(t,{Zs:()=>i})},6544(e,t,n){n.d(t,{eA:()=>c,hY:()=>h});var i=n(7718);let s;function r(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}!function(){const e=new DataView(new ArrayBuffer(8)),t=void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64;s=t?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}();const o=/^-?[0-9]+$/,a=4294967296,l=2147483648;class d{constructor(e,t){this.lo=0|e,this.hi=0|t}isZero(){return 0==this.lo&&0==this.hi}toNumber(){let e=this.hi*a+(this.lo>>>0);if(!Number.isSafeInteger(e))throw new Error("cannot convert to safe number");return e}}class c extends d{static from(e){if(s)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=s.C(e);case"number":if(0===e)return this.ZERO;e=s.C(e);case"bigint":if(!e)return this.ZERO;if(e<s.UMIN)throw new Error("signed value for ulong");if(e>s.UMAX)throw new Error("ulong too large");return s.V.setBigUint64(0,e,!0),new c(s.V.getInt32(0,!0),s.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!o.test(e))throw new Error("string is no integer");let[t,n,s]=(0,i.Jg)(e);if(t)throw new Error("signed value for ulong");return new c(n,s);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new c(e,e/a)}throw new Error("unknown value "+typeof e)}toString(){return s?this.toBigInt().toString():(0,i.oJ)(this.lo,this.hi)}toBigInt(){return r(s),s.V.setInt32(0,this.lo,!0),s.V.setInt32(4,this.hi,!0),s.V.getBigUint64(0,!0)}}c.ZERO=new c(0,0);class h extends d{static from(e){if(s)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=s.C(e);case"number":if(0===e)return this.ZERO;e=s.C(e);case"bigint":if(!e)return this.ZERO;if(e<s.MIN)throw new Error("signed long too small");if(e>s.MAX)throw new Error("signed long too large");return s.V.setBigInt64(0,e,!0),new h(s.V.getInt32(0,!0),s.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!o.test(e))throw new Error("string is no integer");let[t,n,s]=(0,i.Jg)(e);if(t){if(s>l||s==l&&0!=n)throw new Error("signed long too small")}else if(s>=l)throw new Error("signed long too large");let r=new h(n,s);return t?r.negate():r;case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");return e>0?new h(e,e/a):new h(-e,-e/a).negate()}throw new Error("unknown value "+typeof e)}isNegative(){return 0!==(this.hi&l)}negate(){let e=~this.hi,t=this.lo;return t?t=1+~t:e+=1,new h(t,e)}toString(){if(s)return this.toBigInt().toString();if(this.isNegative()){let e=this.negate();return"-"+(0,i.oJ)(e.lo,e.hi)}return(0,i.oJ)(this.lo,this.hi)}toBigInt(){return r(s),s.V.setInt32(0,this.lo,!0),s.V.setInt32(4,this.hi,!0),s.V.getBigInt64(0,!0)}}h.ZERO=new h(0,0)},8228(e,t,n){n.d(t,{W:()=>a});var i=n(8899),s=n(743),r=n(9511),o=n(2799);class a{constructor(e){this.info=e}prepare(){var e;if(!this.fieldNoToField){const t=null!==(e=this.info.fields)&&void 0!==e?e:[];this.fieldNoToField=new Map(t.map(e=>[e.no,e]))}}read(e,t,n,r){this.prepare();const o=void 0===r?e.len:e.pos+r;for(;e.pos<o;){const[r,o]=e.tag(),a=this.fieldNoToField.get(r);if(!a){let s=n.readUnknownField;if("throw"==s)throw new Error(`Unknown field ${r} (wire type ${o}) for ${this.info.typeName}`);let a=e.skip(o);!1!==s&&(!0===s?i.f$.onRead:s)(this.info.typeName,t,r,o,a);continue}let l=t,d=a.repeat,c=a.localName;switch(a.oneof&&(l=l[a.oneof],l.oneofKind!==c&&(l=t[a.oneof]={oneofKind:c})),a.kind){case"scalar":case"enum":let t="enum"==a.kind?s.LN.INT32:a.T,r="scalar"==a.kind?a.L:void 0;if(d){let n=l[c];if(o==i.O0.LengthDelimited&&t!=s.LN.STRING&&t!=s.LN.BYTES){let i=e.uint32()+e.pos;for(;e.pos<i;)n.push(this.scalar(e,t,r))}else n.push(this.scalar(e,t,r))}else l[c]=this.scalar(e,t,r);break;case"message":if(d){let t=l[c],i=a.T().internalBinaryRead(e,e.uint32(),n);t.push(i)}else l[c]=a.T().internalBinaryRead(e,e.uint32(),n,l[c]);break;case"map":let[h,u]=this.mapEntry(a,e,n);l[c][h]=u}}}mapEntry(e,t,n){let i,r,a=t.uint32(),l=t.pos+a;for(;t.pos<l;){let[o,a]=t.tag();switch(o){case 1:i=e.K==s.LN.BOOL?t.bool().toString():this.scalar(t,e.K,s.rO.STRING);break;case 2:switch(e.V.kind){case"scalar":r=this.scalar(t,e.V.T,e.V.L);break;case"enum":r=t.int32();break;case"message":r=e.V.T().internalBinaryRead(t,t.uint32(),n)}break;default:throw new Error(`Unknown field ${o} (wire type ${a}) in map entry for ${this.info.typeName}#${e.name}`)}}if(void 0===i){let t=(0,o.V)(e.K);i=e.K==s.LN.BOOL?t.toString():t}if(void 0===r)switch(e.V.kind){case"scalar":r=(0,o.V)(e.V.T,e.V.L);break;case"enum":r=0;break;case"message":r=e.V.T().create()}return[i,r]}scalar(e,t,n){switch(t){case s.LN.INT32:return e.int32();case s.LN.STRING:return e.string();case s.LN.BOOL:return e.bool();case s.LN.DOUBLE:return e.double();case s.LN.FLOAT:return e.float();case s.LN.INT64:return(0,r.l)(e.int64(),n);case s.LN.UINT64:return(0,r.l)(e.uint64(),n);case s.LN.FIXED64:return(0,r.l)(e.fixed64(),n);case s.LN.FIXED32:return e.fixed32();case s.LN.BYTES:return e.bytes();case s.LN.UINT32:return e.uint32();case s.LN.SFIXED32:return e.sfixed32();case s.LN.SFIXED64:return(0,r.l)(e.sfixed64(),n);case s.LN.SINT32:return e.sint32();case s.LN.SINT64:return(0,r.l)(e.sint64(),n)}}}},1312(e,t,n){n.d(t,{c:()=>a});var i=n(8899),s=n(743),r=n(4441),o=n(6544);class a{constructor(e){this.info=e}prepare(){if(!this.fields){const e=this.info.fields?this.info.fields.concat():[];this.fields=e.sort((e,t)=>e.no-t.no)}}write(e,t,n){this.prepare();for(const i of this.fields){let o,a,l=i.repeat,d=i.localName;if(i.oneof){const t=e[i.oneof];if(t.oneofKind!==d)continue;o=t[d],a=!0}else o=e[d],a=!1;switch(i.kind){case"scalar":case"enum":let e="enum"==i.kind?s.LN.INT32:i.T;if(l)if((0,r.vA)(Array.isArray(o)),l==s.sA.PACKED)this.packed(t,e,i.no,o);else for(const n of o)this.scalar(t,e,i.no,n,!0);else void 0===o?(0,r.vA)(i.opt):this.scalar(t,e,i.no,o,a||i.opt);break;case"message":if(l){(0,r.vA)(Array.isArray(o));for(const e of o)this.message(t,n,i.T(),i.no,e)}else this.message(t,n,i.T(),i.no,o);break;case"map":(0,r.vA)("object"==typeof o&&null!==o);for(const[e,s]of Object.entries(o))this.mapEntry(t,n,i,e,s)}}let o=n.writeUnknownFields;!1!==o&&(!0===o?i.f$.onWrite:o)(this.info.typeName,e,t)}mapEntry(e,t,n,o,a){e.tag(n.no,i.O0.LengthDelimited),e.fork();let l=o;switch(n.K){case s.LN.INT32:case s.LN.FIXED32:case s.LN.UINT32:case s.LN.SFIXED32:case s.LN.SINT32:l=Number.parseInt(o);break;case s.LN.BOOL:(0,r.vA)("true"==o||"false"==o),l="true"==o}switch(this.scalar(e,n.K,1,l,!0),n.V.kind){case"scalar":this.scalar(e,n.V.T,2,a,!0);break;case"enum":this.scalar(e,s.LN.INT32,2,a,!0);break;case"message":this.message(e,t,n.V.T(),2,a)}e.join()}message(e,t,n,s,r){void 0!==r&&(n.internalBinaryWrite(r,e.tag(s,i.O0.LengthDelimited).fork(),t),e.join())}scalar(e,t,n,i,s){let[r,o,a]=this.scalarInfo(t,i);a&&!s||(e.tag(n,r),e[o](i))}packed(e,t,n,o){if(!o.length)return;(0,r.vA)(t!==s.LN.BYTES&&t!==s.LN.STRING),e.tag(n,i.O0.LengthDelimited),e.fork();let[,a]=this.scalarInfo(t);for(let t=0;t<o.length;t++)e[a](o[t]);e.join()}scalarInfo(e,t){let n,r=i.O0.Varint,a=void 0===t,l=0===t;switch(e){case s.LN.INT32:n="int32";break;case s.LN.STRING:l=a||!t.length,r=i.O0.LengthDelimited,n="string";break;case s.LN.BOOL:l=!1===t,n="bool";break;case s.LN.UINT32:n="uint32";break;case s.LN.DOUBLE:r=i.O0.Bit64,n="double";break;case s.LN.FLOAT:r=i.O0.Bit32,n="float";break;case s.LN.INT64:l=a||o.hY.from(t).isZero(),n="int64";break;case s.LN.UINT64:l=a||o.eA.from(t).isZero(),n="uint64";break;case s.LN.FIXED64:l=a||o.eA.from(t).isZero(),r=i.O0.Bit64,n="fixed64";break;case s.LN.BYTES:l=a||!t.byteLength,r=i.O0.LengthDelimited,n="bytes";break;case s.LN.FIXED32:r=i.O0.Bit32,n="fixed32";break;case s.LN.SFIXED32:r=i.O0.Bit32,n="sfixed32";break;case s.LN.SFIXED64:l=a||o.hY.from(t).isZero(),r=i.O0.Bit64,n="sfixed64";break;case s.LN.SINT32:n="sint32";break;case s.LN.SINT64:l=a||o.hY.from(t).isZero(),n="sint64"}return[r,n,a||l]}}},6895(e,t,n){n.d(t,{C:()=>r});var i=n(2799),s=n(5336);function r(e){const t=e.messagePrototype?Object.create(e.messagePrototype):Object.defineProperty({},s.$,{value:e});for(let n of e.fields){let e=n.localName;if(!n.opt)if(n.oneof)t[n.oneof]={oneofKind:void 0};else if(n.repeat)t[e]=[];else switch(n.kind){case"scalar":t[e]=(0,i.V)(n.T,n.L);break;case"enum":t[e]=0;break;case"map":t[e]={}}}return t}},9230(e,t,n){n.d(t,{F:()=>s});var i=n(743);function s(e,t,n){if(t===n)return!0;if(!t||!n)return!1;for(let s of e.fields){let e=s.localName,d=s.oneof?t[s.oneof][e]:t[e],c=s.oneof?n[s.oneof][e]:n[e];switch(s.kind){case"enum":case"scalar":let e="enum"==s.kind?i.LN.INT32:s.T;if(!(s.repeat?a(e,d,c):o(e,d,c)))return!1;break;case"map":if(!("message"==s.V.kind?l(s.V.T(),r(d),r(c)):a("enum"==s.V.kind?i.LN.INT32:s.V.T,r(d),r(c))))return!1;break;case"message":let t=s.T();if(!(s.repeat?l(t,d,c):t.equals(d,c)))return!1}}return!0}const r=Object.values;function o(e,t,n){if(t===n)return!0;if(e!==i.LN.BYTES)return!1;let s=t,r=n;if(s.length!==r.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!=r[e])return!1;return!0}function a(e,t,n){if(t.length!==n.length)return!1;for(let i=0;i<t.length;i++)if(!o(e,t[i],n[i]))return!1;return!0}function l(e,t,n){if(t.length!==n.length)return!1;for(let i=0;i<t.length;i++)if(!e.equals(t[i],n[i]))return!1;return!0}},743(e,t,n){n.d(t,{LN:()=>i,mS:()=>a,rO:()=>s,sA:()=>r});var i,s,r,o=n(9378);function a(e){var t,n,i,s;return e.localName=null!==(t=e.localName)&&void 0!==t?t:(0,o.W)(e.name),e.jsonName=null!==(n=e.jsonName)&&void 0!==n?n:(0,o.W)(e.name),e.repeat=null!==(i=e.repeat)&&void 0!==i?i:r.NO,e.opt=null!==(s=e.opt)&&void 0!==s?s:!e.repeat&&!e.oneof&&"message"==e.kind,e}!function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"}(i||(i={})),function(e){e[e.BIGINT=0]="BIGINT",e[e.STRING=1]="STRING",e[e.NUMBER=2]="NUMBER"}(s||(s={})),function(e){e[e.NO=0]="NO",e[e.PACKED=1]="PACKED",e[e.UNPACKED=2]="UNPACKED"}(r||(r={}))},9581(e,t,n){n.d(t,{L:()=>d});var i=n(2280),s=n(2616),r=n(743),o=n(6544),a=n(4441),l=n(9511);class d{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};const t=null!==(e=this.info.fields)&&void 0!==e?e:[];for(const e of t)this.fMap[e.name]=e,this.fMap[e.jsonName]=e,this.fMap[e.localName]=e}}assert(e,t,n){if(!e){let e=(0,i.V)(n);throw"number"!=e&&"boolean"!=e||(e=n.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#${t}`)}}read(e,t,n){this.prepare();const s=[];for(const[o,a]of Object.entries(e)){const e=this.fMap[o];if(!e){if(!n.ignoreUnknownFields)throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${o}`);continue}const l=e.localName;let d;if(e.oneof){if(null===a&&("enum"!==e.kind||"google.protobuf.NullValue"!==e.T()[0]))continue;if(s.includes(e.oneof))throw new Error(`Multiple members of the oneof group "${e.oneof}" of ${this.info.typeName} are present in JSON.`);s.push(e.oneof),d=t[e.oneof]={oneofKind:l}}else d=t;if("map"==e.kind){if(null===a)continue;this.assert((0,i.O)(a),e.name,a);const t=d[l];for(const[i,s]of Object.entries(a)){let o;switch(this.assert(null!==s,e.name+" map value",null),e.V.kind){case"message":o=e.V.T().internalJsonRead(s,n);break;case"enum":if(o=this.enum(e.V.T(),s,e.name,n.ignoreUnknownFields),!1===o)continue;break;case"scalar":o=this.scalar(s,e.V.T,e.V.L,e.name)}this.assert(void 0!==o,e.name+" map value",s);let a=i;e.K==r.LN.BOOL&&(a="true"==a||"false"!=a&&a),a=this.scalar(a,e.K,r.rO.STRING,e.name).toString(),t[a]=o}}else if(e.repeat){if(null===a)continue;this.assert(Array.isArray(a),e.name,a);const t=d[l];for(const i of a){let s;switch(this.assert(null!==i,e.name,null),e.kind){case"message":s=e.T().internalJsonRead(i,n);break;case"enum":if(s=this.enum(e.T(),i,e.name,n.ignoreUnknownFields),!1===s)continue;break;case"scalar":s=this.scalar(i,e.T,e.L,e.name)}this.assert(void 0!==s,e.name,a),t.push(s)}}else switch(e.kind){case"message":if(null===a&&"google.protobuf.Value"!=e.T().typeName){this.assert(void 0===e.oneof,e.name+" (oneof member)",null);continue}d[l]=e.T().internalJsonRead(a,n,d[l]);break;case"enum":if(null===a)continue;let t=this.enum(e.T(),a,e.name,n.ignoreUnknownFields);if(!1===t)continue;d[l]=t;break;case"scalar":if(null===a)continue;d[l]=this.scalar(a,e.T,e.L,e.name)}}}enum(e,t,n,i){if("google.protobuf.NullValue"==e[0]&&(0,a.vA)(null===t||"NULL_VALUE"===t,`Unable to parse field ${this.info.typeName}#${n}, enum ${e[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return(0,a.vA)(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${n}, enum can only be integral number, got ${t}.`),t;case"string":let s=t;e[2]&&t.substring(0,e[2].length)===e[2]&&(s=t.substring(e[2].length));let r=e[1][s];return(void 0!==r||!i)&&((0,a.vA)("number"==typeof r,`Unable to parse field ${this.info.typeName}#${n}, enum ${e[0]} has no value for "${t}".`),r)}(0,a.vA)(!1,`Unable to parse field ${this.info.typeName}#${n}, cannot parse enum value from ${typeof t}".`)}scalar(e,t,n,i){let d;try{switch(t){case r.LN.DOUBLE:case r.LN.FLOAT:if(null===e)return 0;if("NaN"===e)return Number.NaN;if("Infinity"===e)return Number.POSITIVE_INFINITY;if("-Infinity"===e)return Number.NEGATIVE_INFINITY;if(""===e){d="empty string";break}if("string"==typeof e&&e.trim().length!==e.length){d="extra whitespace";break}if("string"!=typeof e&&"number"!=typeof e)break;let i=Number(e);if(Number.isNaN(i)){d="not a number";break}if(!Number.isFinite(i)){d="too large or small";break}return t==r.LN.FLOAT&&(0,a.wO)(i),i;case r.LN.INT32:case r.LN.FIXED32:case r.LN.SFIXED32:case r.LN.SINT32:case r.LN.UINT32:if(null===e)return 0;let c;if("number"==typeof e?c=e:""===e?d="empty string":"string"==typeof e&&(e.trim().length!==e.length?d="extra whitespace":c=Number(e)),void 0===c)break;return t==r.LN.UINT32?(0,a.e1)(c):(0,a.bn)(c),c;case r.LN.INT64:case r.LN.SFIXED64:case r.LN.SINT64:if(null===e)return(0,l.l)(o.hY.ZERO,n);if("number"!=typeof e&&"string"!=typeof e)break;return(0,l.l)(o.hY.from(e),n);case r.LN.FIXED64:case r.LN.UINT64:if(null===e)return(0,l.l)(o.eA.ZERO,n);if("number"!=typeof e&&"string"!=typeof e)break;return(0,l.l)(o.eA.from(e),n);case r.LN.BOOL:if(null===e)return!1;if("boolean"!=typeof e)break;return e;case r.LN.STRING:if(null===e)return"";if("string"!=typeof e){d="extra whitespace";break}try{encodeURIComponent(e)}catch(d){d="invalid UTF8";break}return e;case r.LN.BYTES:if(null===e||""===e)return new Uint8Array(0);if("string"!=typeof e)break;return(0,s.A)(e)}}catch(e){d=e.message}this.assert(!1,i+(d?" - "+d:""),e)}}},2985(e,t,n){n.d(t,{X:()=>a});var i=n(2616),s=n(6544),r=n(743),o=n(4441);class a{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}write(e,t){const n={},i=e;for(const e of this.fields){if(!e.oneof){let s=this.field(e,i[e.localName],t);void 0!==s&&(n[t.useProtoFieldName?e.name:e.jsonName]=s);continue}const s=i[e.oneof];if(s.oneofKind!==e.localName)continue;const r="scalar"==e.kind||"enum"==e.kind?Object.assign(Object.assign({},t),{emitDefaultValues:!0}):t;let a=this.field(e,s[e.localName],r);(0,o.vA)(void 0!==a),n[t.useProtoFieldName?e.name:e.jsonName]=a}return n}field(e,t,n){let i;if("map"==e.kind){(0,o.vA)("object"==typeof t&&null!==t);const s={};switch(e.V.kind){case"scalar":for(const[n,i]of Object.entries(t)){const t=this.scalar(e.V.T,i,e.name,!1,!0);(0,o.vA)(void 0!==t),s[n.toString()]=t}break;case"message":const i=e.V.T();for(const[r,a]of Object.entries(t)){const t=this.message(i,a,e.name,n);(0,o.vA)(void 0!==t),s[r.toString()]=t}break;case"enum":const r=e.V.T();for(const[i,a]of Object.entries(t)){(0,o.vA)(void 0===a||"number"==typeof a);const t=this.enum(r,a,e.name,!1,!0,n.enumAsInteger);(0,o.vA)(void 0!==t),s[i.toString()]=t}}(n.emitDefaultValues||Object.keys(s).length>0)&&(i=s)}else if(e.repeat){(0,o.vA)(Array.isArray(t));const s=[];switch(e.kind){case"scalar":for(let n=0;n<t.length;n++){const i=this.scalar(e.T,t[n],e.name,e.opt,!0);(0,o.vA)(void 0!==i),s.push(i)}break;case"enum":const i=e.T();for(let r=0;r<t.length;r++){(0,o.vA)(void 0===t[r]||"number"==typeof t[r]);const a=this.enum(i,t[r],e.name,e.opt,!0,n.enumAsInteger);(0,o.vA)(void 0!==a),s.push(a)}break;case"message":const r=e.T();for(let i=0;i<t.length;i++){const a=this.message(r,t[i],e.name,n);(0,o.vA)(void 0!==a),s.push(a)}}(n.emitDefaultValues||s.length>0||n.emitDefaultValues)&&(i=s)}else switch(e.kind){case"scalar":i=this.scalar(e.T,t,e.name,e.opt,n.emitDefaultValues);break;case"enum":i=this.enum(e.T(),t,e.name,e.opt,n.emitDefaultValues,n.enumAsInteger);break;case"message":i=this.message(e.T(),t,e.name,n)}return i}enum(e,t,n,i,s,r){if("google.protobuf.NullValue"==e[0])return s||i?null:void 0;if(void 0!==t){if(0!==t||s||i)return(0,o.vA)("number"==typeof t),(0,o.vA)(Number.isInteger(t)),r||!e[1].hasOwnProperty(t)?t:e[2]?e[2]+e[1][t]:e[1][t]}else(0,o.vA)(i)}message(e,t,n,i){return void 0===t?i.emitDefaultValues?null:void 0:e.internalJsonWrite(t,i)}scalar(e,t,n,a,l){if(void 0===t)return void(0,o.vA)(a);const d=l||a;switch(e){case r.LN.INT32:case r.LN.SFIXED32:case r.LN.SINT32:return 0===t?d?0:void 0:((0,o.bn)(t),t);case r.LN.FIXED32:case r.LN.UINT32:return 0===t?d?0:void 0:((0,o.e1)(t),t);case r.LN.FLOAT:(0,o.wO)(t);case r.LN.DOUBLE:return 0===t?d?0:void 0:((0,o.vA)("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t);case r.LN.STRING:return""===t?d?"":void 0:((0,o.vA)("string"==typeof t),t);case r.LN.BOOL:return!1===t?!d&&void 0:((0,o.vA)("boolean"==typeof t),t);case r.LN.UINT64:case r.LN.FIXED64:(0,o.vA)("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let e=s.eA.from(t);if(e.isZero()&&!d)return;return e.toString();case r.LN.INT64:case r.LN.SFIXED64:case r.LN.SINT64:(0,o.vA)("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let n=s.hY.from(t);if(n.isZero()&&!d)return;return n.toString();case r.LN.BYTES:return(0,o.vA)(t instanceof Uint8Array),t.byteLength?(0,i.C)(t):d?"":void 0}}}},9511(e,t,n){n.d(t,{l:()=>s});var i=n(743);function s(e,t){switch(t){case i.rO.BIGINT:return e.toBigInt();case i.rO.NUMBER:return e.toNumber();default:return e.toString()}}},3923(e,t,n){function i(e,t,n){let i,s,r=n;for(let n of e.fields){let e=n.localName;if(n.oneof){const o=r[n.oneof];if(null==(null==o?void 0:o.oneofKind))continue;if(i=o[e],s=t[n.oneof],s.oneofKind=o.oneofKind,null==i){delete s[e];continue}}else if(i=r[e],s=t,null==i)continue;switch(n.repeat&&(s[e].length=i.length),n.kind){case"scalar":case"enum":if(n.repeat)for(let t=0;t<i.length;t++)s[e][t]=i[t];else s[e]=i;break;case"message":let t=n.T();if(n.repeat)for(let n=0;n<i.length;n++)s[e][n]=t.create(i[n]);else void 0===s[e]?s[e]=t.create(i):t.mergePartial(s[e],i);break;case"map":switch(n.V.kind){case"scalar":case"enum":Object.assign(s[e],i);break;case"message":let t=n.V.T();for(let n of Object.keys(i))s[e][n]=t.create(i[n])}}}}n.d(t,{x:()=>i})},2799(e,t,n){n.d(t,{V:()=>o});var i=n(743),s=n(9511),r=n(6544);function o(e,t=i.rO.STRING){switch(e){case i.LN.BOOL:return!1;case i.LN.UINT64:case i.LN.FIXED64:return(0,s.l)(r.eA.ZERO,t);case i.LN.INT64:case i.LN.SFIXED64:case i.LN.SINT64:return(0,s.l)(r.hY.ZERO,t);case i.LN.DOUBLE:case i.LN.FLOAT:return 0;case i.LN.BYTES:return new Uint8Array(0);case i.LN.STRING:return"";default:return 0}}},350(e,t,n){n.d(t,{u:()=>r});var i=n(743),s=n(314);class r{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}prepare(){if(this.data)return;const e=[],t=[],n=[];for(let i of this.fields)if(i.oneof)n.includes(i.oneof)||(n.push(i.oneof),e.push(i.oneof),t.push(i.oneof));else switch(t.push(i.localName),i.kind){case"scalar":case"enum":i.opt&&!i.repeat||e.push(i.localName);break;case"message":i.repeat&&e.push(i.localName);break;case"map":e.push(i.localName)}this.data={req:e,known:t,oneofs:Object.values(n)}}is(e,t,n=!1){if(t<0)return!0;if(null==e||"object"!=typeof e)return!1;this.prepare();let i=Object.keys(e),r=this.data;if(i.length<r.req.length||r.req.some(e=>!i.includes(e)))return!1;if(!n&&i.some(e=>!r.known.includes(e)))return!1;if(t<1)return!0;for(const i of r.oneofs){const r=e[i];if(!(0,s.Zs)(r))return!1;if(void 0===r.oneofKind)continue;const o=this.fields.find(e=>e.localName===r.oneofKind);if(!o)return!1;if(!this.field(r[r.oneofKind],o,n,t))return!1}for(const i of this.fields)if(void 0===i.oneof&&!this.field(e[i.localName],i,n,t))return!1;return!0}field(e,t,n,s){let r=t.repeat;switch(t.kind){case"scalar":return void 0===e?t.opt:r?this.scalars(e,t.T,s,t.L):this.scalar(e,t.T,t.L);case"enum":return void 0===e?t.opt:r?this.scalars(e,i.LN.INT32,s):this.scalar(e,i.LN.INT32);case"message":return void 0===e||(r?this.messages(e,t.T(),n,s):this.message(e,t.T(),n,s));case"map":if("object"!=typeof e||null===e)return!1;if(s<2)return!0;if(!this.mapKeys(e,t.K,s))return!1;switch(t.V.kind){case"scalar":return this.scalars(Object.values(e),t.V.T,s,t.V.L);case"enum":return this.scalars(Object.values(e),i.LN.INT32,s);case"message":return this.messages(Object.values(e),t.V.T(),n,s)}}return!0}message(e,t,n,i){return n?t.isAssignable(e,i):t.is(e,i)}messages(e,t,n,i){if(!Array.isArray(e))return!1;if(i<2)return!0;if(n){for(let n=0;n<e.length&&n<i;n++)if(!t.isAssignable(e[n],i-1))return!1}else for(let n=0;n<e.length&&n<i;n++)if(!t.is(e[n],i-1))return!1;return!0}scalar(e,t,n){let s=typeof e;switch(t){case i.LN.UINT64:case i.LN.FIXED64:case i.LN.INT64:case i.LN.SFIXED64:case i.LN.SINT64:switch(n){case i.rO.BIGINT:return"bigint"==s;case i.rO.NUMBER:return"number"==s&&!isNaN(e);default:return"string"==s}case i.LN.BOOL:return"boolean"==s;case i.LN.STRING:return"string"==s;case i.LN.BYTES:return e instanceof Uint8Array;case i.LN.DOUBLE:case i.LN.FLOAT:return"number"==s&&!isNaN(e);default:return"number"==s&&Number.isInteger(e)}}scalars(e,t,n,i){if(!Array.isArray(e))return!1;if(n<2)return!0;if(Array.isArray(e))for(let s=0;s<e.length&&s<n;s++)if(!this.scalar(e[s],t,i))return!1;return!0}mapKeys(e,t,n){let s=Object.keys(e);switch(t){case i.LN.INT32:case i.LN.FIXED32:case i.LN.SFIXED32:case i.LN.SINT32:case i.LN.UINT32:return this.scalars(s.slice(0,n).map(e=>parseInt(e)),t,n);case i.LN.BOOL:return this.scalars(s.slice(0,n).map(e=>"true"==e||"false"!=e&&e),t,n);default:return this.scalars(s,t,n,i.rO.STRING)}}}},551(e,t,n){function i(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}n.d(t,{A:()=>i})},4188(e,t,n){function i(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}n.d(t,{A:()=>i})},7767(e,t,n){n.d(t,{A:()=>o});var i=n(4188),s=n(123),r=n(551);function o(e,t){(0,r.A)(2,arguments);var n=(0,s.A)(e).getTime(),o=(0,i.A)(t);return new Date(n+o)}},7894(e,t,n){n.d(t,{A:()=>o});var i=n(4188),s=n(7767),r=n(551);function o(e,t){(0,r.A)(2,arguments);var n=(0,i.A)(t);return(0,s.A)(e,1e3*n)}},7813(e,t,n){n.d(t,{A:()=>r});var i=n(123),s=n(551);function r(e,t){(0,s.A)(2,arguments);var n=(0,i.A)(e),r=(0,i.A)(t);return n.getTime()<r.getTime()}},123(e,t,n){n.d(t,{A:()=>r});var i=n(2284),s=n(551);function r(e){(0,s.A)(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===(0,i.A)(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}},5685(e,t,n){n.d(t,{A:()=>a});var i=/[A-Z]/g,s=/^ms-/,r={};function o(e){return"-"+e.toLowerCase()}const a=function(e){if(r.hasOwnProperty(e))return r[e];var t=e.replace(i,o);return r[e]=s.test(t)?"-"+t:t}},4175(e,t,n){n.d(t,{A:()=>s});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};const s="object"===("undefined"==typeof window?"undefined":i(window))&&"object"===("undefined"==typeof document?"undefined":i(document))&&9===document.nodeType},8161(e,t,n){n.d(t,{A:()=>r});var i=n(5685);function s(e){var t={};for(var n in e)t[0===n.indexOf("--")?n:(0,i.A)(n)]=e[n];return e.fallbacks&&(Array.isArray(e.fallbacks)?t.fallbacks=e.fallbacks.map(s):t.fallbacks=s(e.fallbacks)),t}const r=function(){return{onProcessStyle:function(e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)e[t]=s(e[t]);return e}return s(e)},onChangeValue:function(e,t,n){if(0===t.indexOf("--"))return e;var s=(0,i.A)(t);return t===s?e:(n.prop(s,e),null)}}}},2885(e,t,n){n.d(t,{A:()=>c});var i=n(8168),s=n(3317),r="@global",o=function(){function e(e,t,n){for(var o in this.type="global",this.at=r,this.isProcessed=!1,this.key=e,this.options=n,this.rules=new s.VZ((0,i.A)({},n,{parent:this})),t)this.rules.add(o,t[o]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.addRule=function(e,t,n){var i=this.rules.add(e,t,n);return i&&this.options.jss.plugins.onProcessRule(i),i},t.replaceRule=function(e,t,n){var i=this.rules.replace(e,t,n);return i&&this.options.jss.plugins.onProcessRule(i),i},t.indexOf=function(e){return this.rules.indexOf(e)},t.toString=function(e){return this.rules.toString(e)},e}(),a=function(){function e(e,t,n){this.type="global",this.at=r,this.isProcessed=!1,this.key=e,this.options=n;var s=e.substr(8);this.rule=n.jss.createRule(s,t,(0,i.A)({},n,{parent:this}))}return e.prototype.toString=function(e){return this.rule?this.rule.toString(e):""},e}(),l=/\s*,\s*/g;function d(e,t){for(var n=e.split(l),i="",s=0;s<n.length;s++)i+=t+" "+n[s].trim(),n[s+1]&&(i+=", ");return i}const c=function(){return{onCreateRule:function(e,t,n){if(!e)return null;if(e===r)return new o(e,t,n);if("@"===e[0]&&"@global "===e.substr(0,8))return new a(e,t,n);var i=n.parent;return i&&("global"===i.type||i.options.parent&&"global"===i.options.parent.type)&&(n.scoped=!1),n.selector||!1!==n.scoped||(n.selector=e),null},onProcessRule:function(e,t){"style"===e.type&&t&&(function(e,t){var n=e.options,s=e.style,o=s?s[r]:null;if(o){for(var a in o)t.addRule(a,o[a],(0,i.A)({},n,{selector:d(a,e.selector)}));delete s[r]}}(e,t),function(e,t){var n=e.options,s=e.style;for(var o in s)if("@"===o[0]&&o.substr(0,7)===r){var a=d(o.substr(7),e.selector);t.addRule(a,s[o],(0,i.A)({},n,{selector:a})),delete s[o]}}(e,t))}}}},3317(e,t,n){n.d(t,{Ay:()=>fe,VZ:()=>K});var i=n(8168),s=n(4175),r=n(2901),o=n(7387),a=n(9417),l=n(8587),d={}.constructor;function c(e){if(null==e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(c);if(e.constructor!==d)return e;var t={};for(var n in e)t[n]=c(e[n]);return t}function h(e,t,n){void 0===e&&(e="unnamed");var i=n.jss,s=c(t);return i.plugins.onCreateRule(e,s,n)||(e[0],null)}var u=function(e,t){for(var n="",i=0;i<e.length&&"!important"!==e[i];i++)n&&(n+=t),n+=e[i];return n},m=function(e){if(!Array.isArray(e))return e;var t="";if(Array.isArray(e[0]))for(var n=0;n<e.length&&"!important"!==e[n];n++)t&&(t+=", "),t+=u(e[n]," ");else t=u(e,", ");return"!important"===e[e.length-1]&&(t+=" !important"),t};function p(e){return e&&!1===e.format?{linebreak:"",space:""}:{linebreak:"\n",space:" "}}function g(e,t){for(var n="",i=0;i<t;i++)n+=" ";return n+e}function f(e,t,n){void 0===n&&(n={});var i="";if(!t)return i;var s=n.indent,r=void 0===s?0:s,o=t.fallbacks;!1===n.format&&(r=-1/0);var a=p(n),l=a.linebreak,d=a.space;if(e&&r++,o)if(Array.isArray(o))for(var c=0;c<o.length;c++){var h=o[c];for(var u in h){var f=h[u];null!=f&&(i&&(i+=l),i+=g(u+":"+d+m(f)+";",r))}}else for(var v in o){var y=o[v];null!=y&&(i&&(i+=l),i+=g(v+":"+d+m(y)+";",r))}for(var b in t){var w=t[b];null!=w&&"fallbacks"!==b&&(i&&(i+=l),i+=g(b+":"+d+m(w)+";",r))}return(i||n.allowEmpty)&&e?(i&&(i=""+l+i+l),g(""+e+d+"{"+i,--r)+g("}",r)):i}var v=/([[\].#*$><+~=|^:(),"'`\s])/g,y="undefined"!=typeof CSS&&CSS.escape,b=function(e){return y?y(e):e.replace(v,"\\$1")},w=function(){function e(e,t,n){this.type="style",this.isProcessed=!1;var i=n.sheet,s=n.Renderer;this.key=e,this.options=n,this.style=t,i?this.renderer=i.renderer:s&&(this.renderer=new s)}return e.prototype.prop=function(e,t,n){if(void 0===t)return this.style[e];var i=!!n&&n.force;if(!i&&this.style[e]===t)return this;var s=t;n&&!1===n.process||(s=this.options.jss.plugins.onChangeValue(t,e,this));var r=null==s||!1===s,o=e in this.style;if(r&&!o&&!i)return this;var a=r&&o;if(a?delete this.style[e]:this.style[e]=s,this.renderable&&this.renderer)return a?this.renderer.removeProperty(this.renderable,e):this.renderer.setProperty(this.renderable,e,s),this;var l=this.options.sheet;return l&&l.attached,this},e}(),S=function(e){function t(t,n,i){var s;s=e.call(this,t,n,i)||this;var r=i.selector,o=i.scoped,l=i.sheet,d=i.generateId;return r?s.selectorText=r:!1!==o&&(s.id=d((0,a.A)((0,a.A)(s)),l),s.selectorText="."+b(s.id)),s}(0,o.A)(t,e);var n=t.prototype;return n.applyTo=function(e){var t=this.renderer;if(t){var n=this.toJSON();for(var i in n)t.setProperty(e,i,n[i])}return this},n.toJSON=function(){var e={};for(var t in this.style){var n=this.style[t];"object"!=typeof n?e[t]=n:Array.isArray(n)&&(e[t]=m(n))}return e},n.toString=function(e){var t=this.options.sheet,n=t&&t.options.link?(0,i.A)({},e,{allowEmpty:!0}):e;return f(this.selectorText,this.style,n)},(0,r.A)(t,[{key:"selector",set:function(e){if(e!==this.selectorText){this.selectorText=e;var t=this.renderer,n=this.renderable;n&&t&&(t.setSelector(n,e)||t.replaceRule(n,this))}},get:function(){return this.selectorText}}]),t}(w),C={onCreateRule:function(e,t,n){return"@"===e[0]||n.parent&&"keyframes"===n.parent.type?null:new S(e,t,n)}},E={indent:1,children:!0},T=/@([\w-]+)/,x=function(){function e(e,t,n){this.type="conditional",this.isProcessed=!1,this.key=e;var s=e.match(T);for(var r in this.at=s?s[1]:"unknown",this.query=n.name||"@"+this.at,this.options=n,this.rules=new K((0,i.A)({},n,{parent:this})),t)this.rules.add(r,t[r]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.indexOf=function(e){return this.rules.indexOf(e)},t.addRule=function(e,t,n){var i=this.rules.add(e,t,n);return i?(this.options.jss.plugins.onProcessRule(i),i):null},t.replaceRule=function(e,t,n){var i=this.rules.replace(e,t,n);return i&&this.options.jss.plugins.onProcessRule(i),i},t.toString=function(e){void 0===e&&(e=E);var t=p(e).linebreak;if(null==e.indent&&(e.indent=E.indent),null==e.children&&(e.children=E.children),!1===e.children)return this.query+" {}";var n=this.rules.toString(e);return n?this.query+" {"+t+n+t+"}":""},e}(),I=/@container|@media|@supports\s+/,M={onCreateRule:function(e,t,n){return I.test(e)?new x(e,t,n):null}},k={indent:1,children:!0},L=/@keyframes\s+([\w-]+)/,R=function(){function e(e,t,n){this.type="keyframes",this.at="@keyframes",this.isProcessed=!1;var s=e.match(L);s&&s[1]?this.name=s[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=n;var r=n.scoped,o=n.sheet,a=n.generateId;for(var l in this.id=!1===r?this.name:b(a(this,o)),this.rules=new K((0,i.A)({},n,{parent:this})),t)this.rules.add(l,t[l],(0,i.A)({},n,{parent:this}));this.rules.process()}return e.prototype.toString=function(e){void 0===e&&(e=k);var t=p(e).linebreak;if(null==e.indent&&(e.indent=k.indent),null==e.children&&(e.children=k.children),!1===e.children)return this.at+" "+this.id+" {}";var n=this.rules.toString(e);return n&&(n=""+t+n+t),this.at+" "+this.id+" {"+n+"}"},e}(),P=/@keyframes\s+/,O=/\$([\w-]+)/g,A=function(e,t){return"string"==typeof e?e.replace(O,function(e,n){return n in t?t[n]:e}):e},F=function(e,t,n){var i=e[t],s=A(i,n);s!==i&&(e[t]=s)},N={onCreateRule:function(e,t,n){return"string"==typeof e&&P.test(e)?new R(e,t,n):null},onProcessStyle:function(e,t,n){return"style"===t.type&&n?("animation-name"in e&&F(e,"animation-name",n.keyframes),"animation"in e&&F(e,"animation",n.keyframes),e):e},onChangeValue:function(e,t,n){var i=n.options.sheet;if(!i)return e;switch(t){case"animation":case"animation-name":return A(e,i.keyframes);default:return e}}},_=function(e){function t(){return e.apply(this,arguments)||this}return(0,o.A)(t,e),t.prototype.toString=function(e){var t=this.options.sheet,n=t&&t.options.link?(0,i.A)({},e,{allowEmpty:!0}):e;return f(this.key,this.style,n)},t}(w),D={onCreateRule:function(e,t,n){return n.parent&&"keyframes"===n.parent.type?new _(e,t,n):null}},V=function(){function e(e,t,n){this.type="font-face",this.at="@font-face",this.isProcessed=!1,this.key=e,this.style=t,this.options=n}return e.prototype.toString=function(e){var t=p(e).linebreak;if(Array.isArray(this.style)){for(var n="",i=0;i<this.style.length;i++)n+=f(this.at,this.style[i]),this.style[i+1]&&(n+=t);return n}return f(this.at,this.style,e)},e}(),B=/@font-face/,U={onCreateRule:function(e,t,n){return B.test(e)?new V(e,t,n):null}},H=function(){function e(e,t,n){this.type="viewport",this.at="@viewport",this.isProcessed=!1,this.key=e,this.style=t,this.options=n}return e.prototype.toString=function(e){return f(this.key,this.style,e)},e}(),W={onCreateRule:function(e,t,n){return"@viewport"===e||"@-ms-viewport"===e?new H(e,t,n):null}},z=function(){function e(e,t,n){this.type="simple",this.isProcessed=!1,this.key=e,this.value=t,this.options=n}return e.prototype.toString=function(e){if(Array.isArray(this.value)){for(var t="",n=0;n<this.value.length;n++)t+=this.key+" "+this.value[n]+";",this.value[n+1]&&(t+="\n");return t}return this.key+" "+this.value+";"},e}(),j={"@charset":!0,"@import":!0,"@namespace":!0},$={onCreateRule:function(e,t,n){return e in j?new z(e,t,n):null}},Q=[C,M,N,D,U,W,$],q={process:!0},G={force:!0,process:!0},K=function(){function e(e){this.map={},this.raw={},this.index=[],this.counter=0,this.options=e,this.classes=e.classes,this.keyframes=e.keyframes}var t=e.prototype;return t.add=function(e,t,n){var s=this.options,r=s.parent,o=s.sheet,a=s.jss,l=s.Renderer,d=s.generateId,c=s.scoped,u=(0,i.A)({classes:this.classes,parent:r,sheet:o,jss:a,Renderer:l,generateId:d,scoped:c,name:e,keyframes:this.keyframes,selector:void 0},n),m=e;e in this.raw&&(m=e+"-d"+this.counter++),this.raw[m]=t,m in this.classes&&(u.selector="."+b(this.classes[m]));var p=h(m,t,u);if(!p)return null;this.register(p);var g=void 0===u.index?this.index.length:u.index;return this.index.splice(g,0,p),p},t.replace=function(e,t,n){var s=this.get(e),r=this.index.indexOf(s);s&&this.remove(s);var o=n;return-1!==r&&(o=(0,i.A)({},n,{index:r})),this.add(e,t,o)},t.get=function(e){return this.map[e]},t.remove=function(e){this.unregister(e),delete this.raw[e.key],this.index.splice(this.index.indexOf(e),1)},t.indexOf=function(e){return this.index.indexOf(e)},t.process=function(){var e=this.options.jss.plugins;this.index.slice(0).forEach(e.onProcessRule,e)},t.register=function(e){this.map[e.key]=e,e instanceof S?(this.map[e.selector]=e,e.id&&(this.classes[e.key]=e.id)):e instanceof R&&this.keyframes&&(this.keyframes[e.name]=e.id)},t.unregister=function(e){delete this.map[e.key],e instanceof S?(delete this.map[e.selector],delete this.classes[e.key]):e instanceof R&&delete this.keyframes[e.name]},t.update=function(){var e,t,n;if("string"==typeof(arguments.length<=0?void 0:arguments[0])?(e=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1],n=arguments.length<=2?void 0:arguments[2]):(t=arguments.length<=0?void 0:arguments[0],n=arguments.length<=1?void 0:arguments[1],e=null),e)this.updateOne(this.get(e),t,n);else for(var i=0;i<this.index.length;i++)this.updateOne(this.index[i],t,n)},t.updateOne=function(t,n,i){void 0===i&&(i=q);var s=this.options,r=s.jss.plugins,o=s.sheet;if(t.rules instanceof e)t.rules.update(n,i);else{var a=t.style;if(r.onUpdate(n,t,o,i),i.process&&a&&a!==t.style){for(var l in r.onProcessStyle(t.style,t,o),t.style){var d=t.style[l];d!==a[l]&&t.prop(l,d,G)}for(var c in a){var h=t.style[c],u=a[c];null==h&&h!==u&&t.prop(c,null,G)}}}},t.toString=function(e){for(var t="",n=this.options.sheet,i=!!n&&n.options.link,s=p(e).linebreak,r=0;r<this.index.length;r++){var o=this.index[r].toString(e);(o||i)&&(t&&(t+=s),t+=o)}return t},e}(),J=function(){function e(e,t){for(var n in this.attached=!1,this.deployed=!1,this.classes={},this.keyframes={},this.options=(0,i.A)({},t,{sheet:this,parent:this,classes:this.classes,keyframes:this.keyframes}),t.Renderer&&(this.renderer=new t.Renderer(this)),this.rules=new K(this.options),e)this.rules.add(n,e[n]);this.rules.process()}var t=e.prototype;return t.attach=function(){return this.attached||(this.renderer&&this.renderer.attach(),this.attached=!0,this.deployed||this.deploy()),this},t.detach=function(){return this.attached?(this.renderer&&this.renderer.detach(),this.attached=!1,this):this},t.addRule=function(e,t,n){var i=this.queue;this.attached&&!i&&(this.queue=[]);var s=this.rules.add(e,t,n);return s?(this.options.jss.plugins.onProcessRule(s),this.attached?this.deployed?(i?i.push(s):(this.insertRule(s),this.queue&&(this.queue.forEach(this.insertRule,this),this.queue=void 0)),s):s:(this.deployed=!1,s)):null},t.replaceRule=function(e,t,n){var i=this.rules.get(e);if(!i)return this.addRule(e,t,n);var s=this.rules.replace(e,t,n);return s&&this.options.jss.plugins.onProcessRule(s),this.attached?this.deployed?(this.renderer&&(s?i.renderable&&this.renderer.replaceRule(i.renderable,s):this.renderer.deleteRule(i)),s):s:(this.deployed=!1,s)},t.insertRule=function(e){this.renderer&&this.renderer.insertRule(e)},t.addRules=function(e,t){var n=[];for(var i in e){var s=this.addRule(i,e[i],t);s&&n.push(s)}return n},t.getRule=function(e){return this.rules.get(e)},t.deleteRule=function(e){var t="object"==typeof e?e:this.rules.get(e);return!(!t||this.attached&&!t.renderable)&&(this.rules.remove(t),!(this.attached&&t.renderable&&this.renderer)||this.renderer.deleteRule(t.renderable))},t.indexOf=function(e){return this.rules.indexOf(e)},t.deploy=function(){return this.renderer&&this.renderer.deploy(),this.deployed=!0,this},t.update=function(){var e;return(e=this.rules).update.apply(e,arguments),this},t.updateOne=function(e,t,n){return this.rules.updateOne(e,t,n),this},t.toString=function(e){return this.rules.toString(e)},e}(),X=function(){function e(){this.plugins={internal:[],external:[]},this.registry={}}var t=e.prototype;return t.onCreateRule=function(e,t,n){for(var i=0;i<this.registry.onCreateRule.length;i++){var s=this.registry.onCreateRule[i](e,t,n);if(s)return s}return null},t.onProcessRule=function(e){if(!e.isProcessed){for(var t=e.options.sheet,n=0;n<this.registry.onProcessRule.length;n++)this.registry.onProcessRule[n](e,t);e.style&&this.onProcessStyle(e.style,e,t),e.isProcessed=!0}},t.onProcessStyle=function(e,t,n){for(var i=0;i<this.registry.onProcessStyle.length;i++)t.style=this.registry.onProcessStyle[i](t.style,t,n)},t.onProcessSheet=function(e){for(var t=0;t<this.registry.onProcessSheet.length;t++)this.registry.onProcessSheet[t](e)},t.onUpdate=function(e,t,n,i){for(var s=0;s<this.registry.onUpdate.length;s++)this.registry.onUpdate[s](e,t,n,i)},t.onChangeValue=function(e,t,n){for(var i=e,s=0;s<this.registry.onChangeValue.length;s++)i=this.registry.onChangeValue[s](i,t,n);return i},t.use=function(e,t){void 0===t&&(t={queue:"external"});var n=this.plugins[t.queue];-1===n.indexOf(e)&&(n.push(e),this.registry=[].concat(this.plugins.external,this.plugins.internal).reduce(function(e,t){for(var n in t)n in e&&e[n].push(t[n]);return e},{onCreateRule:[],onProcessRule:[],onProcessStyle:[],onProcessSheet:[],onChangeValue:[],onUpdate:[]}))},e}(),Y=function(){function e(){this.registry=[]}var t=e.prototype;return t.add=function(e){var t=this.registry,n=e.options.index;if(-1===t.indexOf(e))if(0===t.length||n>=this.index)t.push(e);else for(var i=0;i<t.length;i++)if(t[i].options.index>n)return void t.splice(i,0,e)},t.reset=function(){this.registry=[]},t.remove=function(e){var t=this.registry.indexOf(e);this.registry.splice(t,1)},t.toString=function(e){for(var t=void 0===e?{}:e,n=t.attached,i=(0,l.A)(t,["attached"]),s=p(i).linebreak,r="",o=0;o<this.registry.length;o++){var a=this.registry[o];null!=n&&a.attached!==n||(r&&(r+=s),r+=a.toString(i))}return r},(0,r.A)(e,[{key:"index",get:function(){return 0===this.registry.length?0:this.registry[this.registry.length-1].options.index}}]),e}(),Z=new Y,ee="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window&&window.Math===Math?window:"undefined"!=typeof self&&self.Math===Math?self:Function("return this")(),te="2f1acc6c3a606b082e5eef5e54414ffb";null==ee[te]&&(ee[te]=0);var ne=ee[te]++,ie=function(e){void 0===e&&(e={});var t=0;return function(n,i){t+=1;var s="",r="";return i&&(i.options.classNamePrefix&&(r=i.options.classNamePrefix),null!=i.options.jss.id&&(s=String(i.options.jss.id))),e.minify?""+(r||"c")+ne+s+t:r+n.key+"-"+ne+(s?"-"+s:"")+"-"+t}},se=function(e){var t;return function(){return t||(t=e()),t}},re=function(e,t){try{return e.attributeStyleMap?e.attributeStyleMap.get(t):e.style.getPropertyValue(t)}catch(e){return""}},oe=function(e,t,n){try{var i=n;if(Array.isArray(n)&&(i=m(n)),e.attributeStyleMap)e.attributeStyleMap.set(t,i);else{var s=i?i.indexOf("!important"):-1,r=s>-1?i.substr(0,s-1):i;e.style.setProperty(t,r,s>-1?"important":"")}}catch(e){return!1}return!0},ae=function(e,t){try{e.attributeStyleMap?e.attributeStyleMap.delete(t):e.style.removeProperty(t)}catch(e){}},le=function(e,t){return e.selectorText=t,e.selectorText===t},de=se(function(){return document.querySelector("head")});var ce=se(function(){var e=document.querySelector('meta[property="csp-nonce"]');return e?e.getAttribute("content"):null}),he=function(e,t,n){try{"insertRule"in e?e.insertRule(t,n):"appendRule"in e&&e.appendRule(t)}catch(e){return!1}return e.cssRules[n]},ue=function(e,t){var n=e.cssRules.length;return void 0===t||t>n?n:t},me=function(){function e(e){this.getPropertyValue=re,this.setProperty=oe,this.removeProperty=ae,this.setSelector=le,this.hasInsertedRules=!1,this.cssRules=[],e&&Z.add(e),this.sheet=e;var t,n=this.sheet?this.sheet.options:{},i=n.media,s=n.meta,r=n.element;this.element=r||((t=document.createElement("style")).textContent="\n",t),this.element.setAttribute("data-jss",""),i&&this.element.setAttribute("media",i),s&&this.element.setAttribute("data-meta",s);var o=ce();o&&this.element.setAttribute("nonce",o)}var t=e.prototype;return t.attach=function(){if(!this.element.parentNode&&this.sheet){!function(e,t){var n=t.insertionPoint,i=function(e){var t=Z.registry;if(t.length>0){var n=function(e,t){for(var n=0;n<e.length;n++){var i=e[n];if(i.attached&&i.options.index>t.index&&i.options.insertionPoint===t.insertionPoint)return i}return null}(t,e);if(n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element};if(n=function(e,t){for(var n=e.length-1;n>=0;n--){var i=e[n];if(i.attached&&i.options.insertionPoint===t.insertionPoint)return i}return null}(t,e),n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element.nextSibling}}var i=e.insertionPoint;if(i&&"string"==typeof i){var s=function(e){for(var t=de(),n=0;n<t.childNodes.length;n++){var i=t.childNodes[n];if(8===i.nodeType&&i.nodeValue.trim()===e)return i}return null}(i);if(s)return{parent:s.parentNode,node:s.nextSibling}}return!1}(t);if(!1!==i&&i.parent)i.parent.insertBefore(e,i.node);else if(n&&"number"==typeof n.nodeType){var s=n,r=s.parentNode;r&&r.insertBefore(e,s.nextSibling)}else de().appendChild(e)}(this.element,this.sheet.options);var e=Boolean(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&e&&(this.hasInsertedRules=!1,this.deploy())}},t.detach=function(){if(this.sheet){var e=this.element.parentNode;e&&e.removeChild(this.element),this.sheet.options.link&&(this.cssRules=[],this.element.textContent="\n")}},t.deploy=function(){var e=this.sheet;e&&(e.options.link?this.insertRules(e.rules):this.element.textContent="\n"+e.toString()+"\n")},t.insertRules=function(e,t){for(var n=0;n<e.index.length;n++)this.insertRule(e.index[n],n,t)},t.insertRule=function(e,t,n){if(void 0===n&&(n=this.element.sheet),e.rules){var i=e,s=n;if("conditional"===e.type||"keyframes"===e.type){var r=ue(n,t);if(!1===(s=he(n,i.toString({children:!1}),r)))return!1;this.refCssRule(e,r,s)}return this.insertRules(i.rules,s),s}var o=e.toString();if(!o)return!1;var a=ue(n,t),l=he(n,o,a);return!1!==l&&(this.hasInsertedRules=!0,this.refCssRule(e,a,l),l)},t.refCssRule=function(e,t,n){e.renderable=n,e.options.parent instanceof J&&this.cssRules.splice(t,0,n)},t.deleteRule=function(e){var t=this.element.sheet,n=this.indexOf(e);return-1!==n&&(t.deleteRule(n),this.cssRules.splice(n,1),!0)},t.indexOf=function(e){return this.cssRules.indexOf(e)},t.replaceRule=function(e,t){var n=this.indexOf(e);return-1!==n&&(this.element.sheet.deleteRule(n),this.cssRules.splice(n,1),this.insertRule(t,n))},t.getRules=function(){return this.element.sheet.cssRules},e}(),pe=0,ge=function(){function e(e){this.id=pe++,this.version="10.10.0",this.plugins=new X,this.options={id:{minify:!1},createGenerateId:ie,Renderer:s.A?me:null,plugins:[]},this.generateId=ie({minify:!1});for(var t=0;t<Q.length;t++)this.plugins.use(Q[t],{queue:"internal"});this.setup(e)}var t=e.prototype;return t.setup=function(e){return void 0===e&&(e={}),e.createGenerateId&&(this.options.createGenerateId=e.createGenerateId),e.id&&(this.options.id=(0,i.A)({},this.options.id,e.id)),(e.createGenerateId||e.id)&&(this.generateId=this.options.createGenerateId(this.options.id)),null!=e.insertionPoint&&(this.options.insertionPoint=e.insertionPoint),"Renderer"in e&&(this.options.Renderer=e.Renderer),e.plugins&&this.use.apply(this,e.plugins),this},t.createStyleSheet=function(e,t){void 0===t&&(t={});var n=t.index;"number"!=typeof n&&(n=0===Z.index?0:Z.index+1);var s=new J(e,(0,i.A)({},t,{jss:this,generateId:t.generateId||this.generateId,insertionPoint:this.options.insertionPoint,Renderer:this.options.Renderer,index:n}));return this.plugins.onProcessSheet(s),s},t.removeStyleSheet=function(e){return e.detach(),Z.remove(e),this},t.createRule=function(e,t,n){if(void 0===t&&(t={}),void 0===n&&(n={}),"object"==typeof e)return this.createRule(void 0,e,t);var s=(0,i.A)({},n,{name:e,jss:this,Renderer:this.options.Renderer});s.generateId||(s.generateId=this.generateId),s.classes||(s.classes={}),s.keyframes||(s.keyframes={});var r=h(e,t,s);return r&&this.plugins.onProcessRule(r),r},t.use=function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.forEach(function(t){e.plugins.use(t)}),this},e}();"object"==typeof CSS&&null!=CSS&&CSS;const fe=new ge(undefined)},7963(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map(e=>e.trim())},t.splitSections=function(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n")},t.getDescription=function(e){const n=t.splitSections(e);return n&&n[0]},t.getMediaSections=function(e){const n=t.splitSections(e);return n.shift(),n},t.matchPrefix=function(e,n){return t.splitLines(e).filter(e=>0===e.indexOf(n))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const n={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":n.relatedAddress=t[e+1];break;case"rport":n.relatedPort=parseInt(t[e+1],10);break;case"tcptype":n.tcpType=t[e+1];break;case"ufrag":n.ufrag=t[e+1],n.usernameFragment=t[e+1];break;default:void 0===n[t[e]]&&(n[t[e]]=t[e+1])}return n},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const n=e.component;"rtp"===n?t.push(1):"rtcp"===n?t.push(2):t.push(n),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=3===t.length?parseInt(t[2],10):1,n.numChannels=n.channels,n},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==n?"/"+n:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let n;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)n=i[e].trim().split("="),t[n[0].trim()]=n[1];return t},t.writeFmtp=function(e){let t="",n=e.payloadType;if(void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach(t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)}),t+="a=fmtp:"+n+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",n=e.payloadType;return void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach(e=>{t+="a=rtcp-fb:"+n+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"}),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),n={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(n.attribute=e.substring(t+1,i),n.value=e.substring(i+1)):n.attribute=e.substring(t+1),n},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(e=>parseInt(e,10))}},t.getMid=function(e){const n=t.matchPrefix(e,"a=mid:")[0];if(n)return n.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,n){return{role:"auto",fingerprints:t.matchPrefix(e+n,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let n="a=setup:"+t+"\r\n";return e.fingerprints.forEach(e=>{n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),n},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,n){return t.matchPrefix(e+n,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,n){const i=t.matchPrefix(e+n,"a=ice-ufrag:")[0],s=t.matchPrefix(e+n,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substring(12),password:s.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const n={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");n.profile=i[2];for(let s=3;s<i.length;s++){const r=i[s],o=t.matchPrefix(e,"a=rtpmap:"+r+" ")[0];if(o){const i=t.parseRtpMap(o),s=t.matchPrefix(e,"a=fmtp:"+r+" ");switch(i.parameters=s.length?t.parseFmtp(s[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+r+" ").map(t.parseRtcpFb),n.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":n.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach(e=>{n.headerExtensions.push(t.parseExtmap(e))});const s=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return n.codecs.forEach(e=>{s.forEach(t=>{e.rtcpFeedback.find(e=>e.type===t.type&&e.parameter===t.parameter)||e.rtcpFeedback.push(t)})}),n},t.writeRtpDescription=function(e,n){let i="";i+="m="+e+" ",i+=n.codecs.length>0?"9":"0",i+=" "+(n.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=n.codecs.map(e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",n.codecs.forEach(e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)});let s=0;return n.codecs.forEach(e=>{e.maxptime>s&&(s=e.maxptime)}),s>0&&(i+="a=maxptime:"+s+"\r\n"),n.headerExtensions&&n.headerExtensions.forEach(e=>{i+=t.writeExtmap(e)}),i},t.parseRtpEncodingParameters=function(e){const n=[],i=t.parseRtpParameters(e),s=-1!==i.fecMechanisms.indexOf("RED"),r=-1!==i.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute),a=o.length>0&&o[0].ssrc;let l;const d=t.matchPrefix(e,"a=ssrc-group:FID").map(e=>e.substring(17).split(" ").map(e=>parseInt(e,10)));d.length>0&&d[0].length>1&&d[0][0]===a&&(l=d[0][1]),i.codecs.forEach(e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&l&&(t.rtx={ssrc:l}),n.push(t),s&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:r?"red+ulpfec":"red"},n.push(t))}}),0===n.length&&a&&n.push({ssrc:a});let c=t.matchPrefix(e,"b=");return c.length&&(c=0===c[0].indexOf("b=TIAS:")?parseInt(c[0].substring(7),10):0===c[0].indexOf("b=AS:")?1e3*parseInt(c[0].substring(5),10)*.95-16e3:void 0,n.forEach(e=>{e.maxBitrate=c})),n},t.parseRtcpParameters=function(e){const n={},i=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute)[0];i&&(n.cname=i.value,n.ssrc=i.ssrc);const s=t.matchPrefix(e,"a=rtcp-rsize");n.reducedSize=s.length>0,n.compound=0===s.length;const r=t.matchPrefix(e,"a=rtcp-mux");return n.mux=r.length>0,n},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let n;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return n=i[0].substring(7).split(" "),{stream:n[0],track:n[1]};const s=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"msid"===e.attribute);return s.length>0?(n=s[0].value.split(" "),{stream:n[0],track:n[1]}):void 0},t.parseSctpDescription=function(e){const n=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let s;i.length>0&&(s=parseInt(i[0].substring(19),10)),isNaN(s)&&(s=65536);const r=t.matchPrefix(e,"a=sctp-port:");if(r.length>0)return{port:parseInt(r[0].substring(12),10),protocol:n.fmt,maxMessageSize:s};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:s}}},t.writeSctpDescription=function(e,t){let n=[];return n="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&n.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),n.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,n,i){let s;const r=void 0!==n?n:2;return s=e||t.generateSessionId(),"v=0\r\no="+(i||"thisisadapterortc")+" "+s+" "+r+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,n){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return n?t.getDirection(n):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const n=t.splitLines(e)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},t.parseOLine=function(e){const n=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const n=t.splitLines(e);for(let e=0;e<n.length;e++)if(n[e].length<2||"="!==n[e].charAt(1))return!1;return!0},e.exports=t},8097(e,t,n){n.d(t,{H:()=>s});var i=n(9307);function s(){const e=i.z.prototype.setWebRtcPlayerController;i.z.prototype.setWebRtcPlayerController=function(t){const n=t.signallingUrlBuilder;t.signallingUrlBuilder=()=>function(e,t){const n=new URL(decodeURIComponent(e())),i=n.searchParams;let s=t;return s&&(s.startsWith("?")&&(s=s.substring(1)),s.split("&").forEach(e=>{if(!e)return;const t=e.indexOf("=");if(-1===t)return void i.set(e,"");const n=e.slice(0,t);if(!n)return;const s=e.slice(t+1);i.set(n,s)})),n.toString()}(n,this.config.urlFlags),e.call(this,t)}}},2886(e,t,n){n.d(t,{g:()=>h});var i=n(1635),s=n(948),r=n(223),o=n(946),a=n(9644),l=n(419),d=n(6460);function c(e,t){try{return JSON.stringify(e)===JSON.stringify(t)}catch(e){return!1}}s.Vy.InitLogging(2,!1);class h extends r.TS{static PickIdsOfUrl(){const{pathname:e}=new URL(window.location.href),t=e.split("/");return{projectId:t.find(e=>{return"string"==typeof(t=e)&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t);var t}),shareId:t.find(e=>{return"string"==typeof(t=e)&&t.startsWith("share-");var t})}}constructor(e){var t,n,i,s,l,c,u;if(!new URL(window.location.href).search.slice(1).split("&").find(e=>e.startsWith("df-"))&&!(null===(t=e.settings)||void 0===t?void 0:t.shareId)&&!(null===(n=e.settings)||void 0===n?void 0:n.projectId))throw new Error("ShareId or ProjectId must be specified.");const m=Object.assign(Object.assign({},h.DEFAULT_INITIAL_SETTINGS),null!==(i=e.initialSettings)&&void 0!==i?i:{}),p=Object.assign(Object.assign({},h.DEFAULT_SETTINGS),null!==(s=e.settings)&&void 0!==s?s:{}),g=Object.assign(Object.assign({},h.DEFAULT_CUSTOMIZATION),null!==(l=e.customization)&&void 0!==l?l:{});super(Object.assign(Object.assign({},e),{initialSettings:m,settings:p,customization:g})),this.VERSION="1.4.9",this.whiteLabellingChanged=new d.J,this.signallingWlURL="https://signalling-client.arcware.cloud/whiteLabel/";const f=null!==(c=e.envName)&&void 0!==c?c:"ragnarok";if(this.signallingWlURL=`https://signalling-client.${f}.arcware.cloud/whiteLabel/`,this.settings=p,this.customization=g,this.session=new o.N,this._initialSettings=m,this.setFlagEnabled(r.iI.AFKDetection,!0),this.useUrlParams){const e=new URLSearchParams(window.location.search);if(e.has("wl"))if(""!==e.get("wl")){const t=this.useUrlParams?(0,a.a)(e):void 0;t&&(this.settings.whiteLabelling=Object.assign(Object.assign({},null!==(u=this.settings.whiteLabelling)&&void 0!==u?u:{}),t))}else this.settings.fetchRemoteWhiteLabelling=!0;this.settings.infoButton=e.has("i")||e.has("info")}}getWhiteLabelling(e){return(0,i.sH)(this,void 0,void 0,function*(){var t;const n=new URLSearchParams(window.location.search).get("wl");if(n&&""!==n)return void d.J.Emit(this.whiteLabellingChanged,{next:null!==(t=this.settings.whiteLabelling)&&void 0!==t?t:{},changed:!1});const i=`${this.signallingWlURL.replace(/\/+$/,"")}/${encodeURIComponent(e)}`,s=new AbortController,r=setTimeout(()=>s.abort(),1e3);try{const e=yield fetch(i,{method:"GET",signal:s.signal,headers:{Accept:"application/json, text/plain"},credentials:"omit"});if(!e.ok)return;const t=yield e.text();if(!t||""===t.trim())return;let n;try{n=JSON.parse(t)}catch(e){return}const r=(0,l.d)(n);if(!r)return;const o=this.settings.whiteLabelling;return this.settings.whiteLabelling=r,d.J.Emit(this.whiteLabellingChanged,{next:r,changed:!c(o,r)}),r}catch(e){return}finally{clearTimeout(r)}})}get urlFlags(){var e;let t="";if(this.settings.shareId&&(t+=`&sh=${this.settings.shareId}`),this.settings.projectId&&(t+=`&p=${this.settings.projectId}`),"string"==typeof this.settings.session)t+=`&s=${this.settings.session}`;else{const e=this.session.id;e&&(t+=`&s=${e}`,t+="&r=true")}this.settings.bypass&&(t+="&b=true"),this.settings.token&&(t+=`&t=${this.settings.token}`);const n=null!==(e=new URLSearchParams(window.location.search).get("rId"))&&void 0!==e?e:void 0;n&&(t+=`&rId=${n}`);const i=new URL(window.location.href).search.slice(1).split("&").find(e=>e.startsWith("df-"));return i&&(t+=`&${i}`),this.settings.startHeight&&this.settings.startHeight>200&&(t+=`&h=${this.settings.startHeight}`),this.settings.startWidth&&this.settings.startWidth>200&&(t+=`&w=${this.settings.startWidth}`),t}get initialSettings(){return this._initialSettings}modifyInitialSettings(e){this.setFlagEnabled(r.iI.HoveringMouseMode,e)}}h.DEFAULT_INITIAL_SETTINGS={ss:"wss://signalling-client.ragnarok.arcware.cloud",AutoConnect:!1,AutoPlayVideo:!0,HoveringMouse:!0,ForceMonoAudio:!1,FakeMouseWithTouches:!1,StartVideoMuted:!0,SuppressBrowserKeys:!0,UseMic:!0,KeyboardInput:!0,MouseInput:!0,TouchInput:!0,GamepadInput:!0,XRControllerInput:!0,AFKTimeout:600},h.DEFAULT_SETTINGS={fullscreenButton:!0,audioButton:!0,stopButton:!1,infoButton:!1,micButton:!1,settingsButton:!1,connectionStrengthIcon:!1,orientationZoom:{landscape:0,portrait:0},whiteLabelling:{},fetchRemoteWhiteLabelling:void 0},h.DEFAULT_CUSTOMIZATION={buttons_position:"Bottom-Right",buttons_orientation:"Vertical",buttons_reverse:!1}},272(e,t,n){n.d(t,{j:()=>i,o:()=>E});var i,s=n(1635),r=n(948),o=n(223),a=n(9307),l=n(8097),d=n(5149),c=n(5428),h=n(6319),u=n(9568),m=n(6151),p=n(2309),g=n(9866),f=n(8536),v=n(6460),y=n(633),b=n(3263),w=n(7506),S=n(7050),C=n(6155);!function(e){e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSING=2]="CLOSING",e[e.CLOSED=3]="CLOSED"}(i||(i={}));class E extends a.z{get session(){return this.config.session}get isWsOpen(){var e,t;const n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.transport)||void 0===t?void 0:t.webSocket;return!!n&&n.readyState===WebSocket.OPEN}get websocketState(){var e,t,n;let i=null===(n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.transport)||void 0===t?void 0:t.webSocket)||void 0===n?void 0:n.readyState;return void 0!==i?i:WebSocket.CLOSED}constructor(e,t){var n,i;(0,l.H)(),super(e,t),this.outbox=[],this.videoInitializedSent=!1,this._postInitSideEffectsDone=!1,this.queueHandler=new v.J,this.errorHandler=new v.J,this.loveLetterHandler=new v.J,this.sessionIdHandler=new v.J,this.videoInitializedHandler=new v.J,this.websocketOnCloseHandler=new v.J,this.whiteLabellingChangedHandler=new v.J,this.postInitSideEffectsHandler=new v.J,this.micToggleHandler=new v.J,this.analyticsEventHandler=new v.J,this.fileTransferHandler=new v.J,this.applicationResponseHandler=new v.J,this._rVFCsupported="requestVideoFrameCallback"in HTMLVideoElement.prototype;const r=null===(n=this.webRtcController)||void 0===n?void 0:n.transport;null===(i=null==r?void 0:r.addEventListener)||void 0===i||i.call(r,"open",()=>{this.flushOutbox()}),this.config=e,this.config.whiteLabellingChanged.add(e=>{try{v.J.Emit(this.whiteLabellingChangedHandler,e),this.config.settings.fetchRemoteWhiteLabelling=!1}catch(e){}}),this.config.settings.fetchRemoteWhiteLabelling&&(()=>{(0,s.sH)(this,void 0,void 0,function*(){var e;try{const e=this.config.settings.shareId;e&&(yield this.config.getWhiteLabelling(e))}catch(e){}finally{v.J.Emit(this.whiteLabellingChangedHandler,{next:null!==(e=this.config.settings.whiteLabelling)&&void 0!==e?e:{},changed:!0})}})})(),this.diagnosticsCollector=new S._Z({enableBandwidthProbe:!1}),this.bindTransportEvents(),this.startTransportWatcher(),this.attachFirstRenderedFrameOnce(),this.watchVideoElementReplacement(),this.handleResolutionChange=this.handleResolutionChange.bind(this),this.addMessageHandler("letter",c.Q,this.onLoveLetter),this.addMessageHandler("streamInfo",u.U,this.onStreamInfo),this.addMessageHandler("sessionId",h.B,this.onSessionId),this.addMessageHandler("error",d.x,this.onError),this.addMessageHandler("ping",m.M,this.onPing),this.addMessageHandler("queue",p.D,this.onQueue),this.addMessageHandler("version",g.o,this.onVersion),this.addMessageHandler("render",f.w,this.onRender),this.addResponseEventListener("ue-response",e=>this.handleUEResponse(e));const o=(0,b.A)(()=>{this.handleResolutionChange()},0);this.addEventListener("videoInitialized",this.onVideoInitialized.bind(this)),this.addEventListener("statsReceived",e=>{this.sendStats(e.data.aggregatedStats)}),window.addEventListener("resize",o),this.webRtcController.streamMessageController.registerMessageHandler(0,"TextboxEntry",e=>{try{this.webRtcController.sendMessageController.sendMessageToStreamer("TextboxEntry",e)}catch(e){console.error("Error: ToStreamer.TextboxEntry",e)}}),this.config.settings.errorHandler&&this.errorHandler.add(this.config.settings.errorHandler),this.config.settings.queueHandler&&this.queueHandler.add(this.config.settings.queueHandler),this.config.settings.sessionIdHandler&&this.sessionIdHandler.add(this.config.settings.sessionIdHandler),this.config.settings.loveLetterHandler&&this.loveLetterHandler.add(this.config.settings.loveLetterHandler),this.handleMouseLock()}bindTransportEvents(){var e,t,n,i;const s=null===(e=this.webRtcController)||void 0===e?void 0:e.transport;if(!s||s===this._boundTransport)return;this._boundTransport&&this._onWsOpen&&(null===(n=(t=this._boundTransport).removeEventListener)||void 0===n||n.call(t,"open",this._onWsOpen)),this._onWsOpen||(this._onWsOpen=()=>{this.flushOutbox(),this.attachFirstRenderedFrameOnce(),setTimeout(()=>{var e,t,n;if(!this.videoInitializedSent){const i=null===(n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoElement)||void 0===n?void 0:n.call(t);i&&i.videoWidth>0&&i.videoHeight>0&&i.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&(this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce())}},1200)}),null===(i=s.addEventListener)||void 0===i||i.call(s,"open",this._onWsOpen);const r=s.webSocket;r&&!this._onWsClose&&(this._onWsClose=e=>{v.J.Emit(this.websocketOnCloseHandler,e)},r.addEventListener("close",this._onWsClose)),this._boundTransport=s}startTransportWatcher(){this._transportWatchTimer||(this._transportWatchTimer=setInterval(()=>{var e;const t=null===(e=this.webRtcController)||void 0===e?void 0:e.transport;t&&t!==this._boundTransport&&this.bindTransportEvents()},3e3))}stopTransportWatcher(){this._transportWatchTimer&&(clearInterval(this._transportWatchTimer),this._transportWatchTimer=void 0)}isRetryableClose(e){var t,n;return!((null!==(n=null!==(t=e.code)&&void 0!==t?t:e.status)&&void 0!==n?n:e.errorCode)>=4e3)}reconnect(){super.reconnect(),this.resetInitGuardsAndHooks()}removePlayer(){var e,t,n,i,s;this.stopTransportWatcher(),this._boundTransport&&(this._onWsOpen&&(null===(t=(e=this._boundTransport).removeEventListener)||void 0===t||t.call(e,"open",this._onWsOpen)),this._onWsClose&&(null===(i=(n=this._boundTransport).removeEventListener)||void 0===i||i.call(n,"close",this._onWsClose))),this.cancelFirstRenderedFrameHook();try{null===(s=this._mo)||void 0===s||s.disconnect()}catch(e){}this.disconnect()}onVersion(e){return(0,s.sH)(this,void 0,void 0,function*(){var e,t;let n;try{n=yield this.diagnosticsCollector.collect()}catch(n){null===(e=r.Vy.Warning)||void 0===e||e.call(r.Vy,`Diagnostics collection failed: ${null!==(t=null==n?void 0:n.message)&&void 0!==t?t:n}`)}finally{const e={type:"version",version:this.config.VERSION};void 0!==n&&(e.diagnostics=n),this.send(e)}})}addMessageHandler(e,t,n){this.signallingProtocol.addListener(e,i=>{var s,o;let a;try{a=t(i)}catch(t){return void(null===(s=r.Vy.Error)||void 0===s||s.call(r.Vy,`Unexpected message content. Event:'${e}', Error: ${null!==(o=null==t?void 0:t.message)&&void 0!==o?o:t}`))}n.call(this,a)})}_dispatchOrBuffer(e){if(this.isWsOpen)try{return void this.signallingProtocol.sendMessage(e)}catch(e){}this.outbox.push(e)}flushOutbox(){if(!this.isWsOpen||0===this.outbox.length)return;const e=this.outbox.splice(0,this.outbox.length);for(const t of e)try{this.signallingProtocol.sendMessage(t)}catch(n){this.outbox.unshift(t,...e.slice(e.indexOf(t)+1));break}}sendStats(e){const t={type:"stats",stats:(0,y.U)(e)};this.send(t)}onPing(e){var t,n;this.config.isFlagEnabled("HoveringMouse")!==!(null===(n=null===(t=null==this?void 0:this.streamInfo)||void 0===t?void 0:t.streamInfo.meta)||void 0===n?void 0:n.mouseLock)&&this.handleMouseLock(),this.session.current&&this.session.set(this.session.current)}onStreamInfo(e){var t,n,i,s;if(r.Vy.Info("StreamInfo received."),this.streamInfo=e,!(null===(n=null===(t=this.config)||void 0===t?void 0:t.settings)||void 0===n?void 0:n["do-not-eval-streamInfo"])){const{afk:t}=e.streamInfo;t&&(this.config.setFlagEnabled(o.iI.AFKDetection,t.enabled),this.config.setNumericSetting(o.k$.AFKTimeoutSecs,t.warn),this.config.setNumericSetting(o.k$.AFKCountdownSecs,t.action)),(null===(i=e.streamInfo.webSdkSettings)||void 0===i?void 0:i.init)&&this.config.setSettings(e.streamInfo.webSdkSettings.init),(null===(s=e.streamInfo.webSdkSettings)||void 0===s?void 0:s.conf)&&Object.entries(e.streamInfo.webSdkSettings.conf).forEach(([e,t])=>{const n=e;this.config.settings[n]=t})}this.handleMouseLock()}onRender(e){return(0,s.sH)(this,void 0,void 0,function*(){const e={type:"render",isRendering:yield this.waitForFirstFrameWithTimeout()};this.send(e)})}onQueue(e){r.Vy.Info("QueueInfo received."),v.J.Emit(this.queueHandler,e)}onError(e){var t,n;if(r.Vy.Error(e.type),console.log(e),this.isRetryableClose(e))this.startTransportWatcher();else{try{null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.closeSignalingServer)||void 0===n||n.call(t,e.reason,!1)}catch(e){}this.stopTransportWatcher()}v.J.Emit(this.errorHandler,e)}onSessionId(e){r.Vy.Info(e.sessionId),this.session.set(e.sessionId),v.J.Emit(this.sessionIdHandler,e.sessionId)}onLoveLetter(e){this.config.settings.loveLetterLogging&&console.info(e.reason),v.J.Emit(this.loveLetterHandler,e)}send(e,t){const n="string"==typeof e?Object.assign({type:e},null!=t?t:{}):e;this._dispatchOrBuffer(n)}handleUEResponse(e){let t;try{t=(0,C.Yr)(e,{allowJsonish:!0})}catch(t){return void v.J.Emit(this.applicationResponseHandler,e)}const n=(0,C.AZ)(t.type);"event"!==n?"filetransfer"!==n&&"createscreenshot"!==n?v.J.Emit(this.applicationResponseHandler,e):v.J.Emit(this.fileTransferHandler,{filename:t.filename}):this.handleAnalyticsFromUnreal(t)}sendAnalyticsEvent(e){const t=(0,w.Q)(e,{maxPayloadBytes:512,allowJsonish:!0});t.ok?this._dispatchAnalytics(t.value):console.warn("Invalid AnalyticsEvent:",e)}handleAnalyticsFromUnreal(e){const t=(0,w.Q)(e,{maxPayloadBytes:512,allowJsonish:!0});t.ok?this._dispatchAnalytics(t.value):console.warn("Invalid AnalyticsEvent from Unreal:",e)}_dispatchAnalytics(e){this.send(e),v.J.Emit(this.analyticsEventHandler,e)}getIncomingFile(){const e=this.webRtcController;return null==e?void 0:e.file}fileDownload(e){if("undefined"==typeof window||"undefined"==typeof document)return;const t=this.getIncomingFile();if(t&&t.data&&t.mimetype)try{const n=(0,C.gX)(t.mimetype),i=(e&&e.trim()?(0,C.Nz)(e):(0,C.i$)())+n,s=t.data.map(e=>e.slice()),r=new Blob(s,{type:t.mimetype});if("undefined"==typeof URL||!URL.createObjectURL)return;const o=URL.createObjectURL(r),a=document.createElement("a");a.href=o,a.download=i,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>{try{URL.revokeObjectURL(o)}catch(e){}},0)}catch(e){console.error("Download failed:",e)}}attachFirstRenderedFrameOnce(){var e,t,n,i;const s=null===(n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoElement)||void 0===n?void 0:n.call(t);if(!s)return;if(this._rVFCArmedForElement===s)return;if(this.cancelFirstRenderedFrameHook(),this._rVFCArmedForElement=s,this._rVFCsupported){const e=s;this._rvfcHandle=null===(i=e.requestVideoFrameCallback)||void 0===i?void 0:i.call(e,(e,t)=>{this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce(),this._rvfcHandle=void 0})}const r=()=>{s.removeEventListener("resize",r),this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce()};s.addEventListener("resize",r,{once:!0})}cancelFirstRenderedFrameHook(){var e;const t=this._rVFCArmedForElement;if(t){if(this._rvfcHandle&&"cancelVideoFrameCallback"in HTMLVideoElement.prototype){const n=t;try{null===(e=n.cancelVideoFrameCallback)||void 0===e||e.call(n,this._rvfcHandle)}catch(e){}}this._rvfcHandle=void 0,this._rVFCArmedForElement=void 0}}watchVideoElementReplacement(){var e,t,n,i;try{const s=null===(n=null===(t=null===(e=null==this?void 0:this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoParentElement)||void 0===n?void 0:n.call(t);if(!s)return;null===(i=this._mo)||void 0===i||i.disconnect(),this._mo=new MutationObserver(()=>{this.attachFirstRenderedFrameOnce()}),this._mo.observe(s,{childList:!0,subtree:!0})}catch(e){}}waitForFirstFrameWithTimeout(){return(0,s.sH)(this,arguments,void 0,function*(e=2e3){var t,n,i;const s=null===(i=null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoElement)||void 0===i?void 0:i.call(n);if(this.isVideoRenderingNow(s))return!0;let r;const o=yield Promise.race([new Promise(e=>{var t,n;const i=()=>{r(),e(!0)},r=()=>{var e,t;s.removeEventListener("playing",o),s.removeEventListener("resize",a),"cancelVideoFrameCallback"in HTMLVideoElement.prototype&&null!=l&&(null===(t=(e=s).cancelVideoFrameCallback)||void 0===t||t.call(e,l))},o=()=>this.isVideoRenderingNow(s)&&i(),a=()=>this.isVideoRenderingNow(s)&&i();s.addEventListener("playing",o,{once:!0}),s.addEventListener("resize",a,{once:!0});const l="requestVideoFrameCallback"in HTMLVideoElement.prototype?null===(n=(t=s).requestVideoFrameCallback)||void 0===n?void 0:n.call(t,()=>i()):null}),new Promise(t=>{r=setTimeout(()=>t(!1),e)})]);return r&&clearTimeout(r),o})}isVideoRenderingNow(e){if(!e)return!1;const t=e.videoWidth>0&&e.videoHeight>0,n=e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA,i=!e.paused&&!e.ended;return t&&n||t&&i||n&&i}sendVideoInitializedOnce(){this.videoInitializedSent||(this.videoInitializedSent=!0,this.cancelFirstRenderedFrameHook(),this.send({type:"onVideoInitialized"}),this.videoInitializedHandler&&v.J.Emit(this.videoInitializedHandler,void 0))}onVideoInitialized(){this.videoInitializedSent||this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce()}handleResolutionChange(){var e,t,n,i,s,r,o,a;if(!(null==this?void 0:this.streamInfo)||!(null==this?void 0:this.webRtcController)||!(null===(t=null===(e=null==this?void 0:this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoElement()))return;const l=null===(i=null===(n=null==this?void 0:this.streamInfo)||void 0===n?void 0:n.streamInfo)||void 0===i?void 0:i.resolution,d=null===(o=null===(r=null===(s=null==this?void 0:this.streamInfo)||void 0===s?void 0:s.streamInfo)||void 0===r?void 0:r.meta)||void 0===o?void 0:o.version,c=null===(a=this.config.settings)||void 0===a?void 0:a.orientationZoom;l&&(null==l?void 0:l.dynamic)&&setTimeout(()=>{const{videoPlayer:e}=null==this?void 0:this.webRtcController,t=null==e?void 0:e.getVideoParentElement();if(!t)return;const n=t.getBoundingClientRect(),i=n.width,s=n.height,r=null==l?void 0:l.width,o=null==l?void 0:l.height;if(!i||!s)return;const a=i/s;let h,u;if(a>r/o?(h=r,u=r/a):(u=o,h=o*a),c&&(i<s?c.hasOwnProperty("portrait")&&(null==this||this.emitUIInteraction({zoom:c.portrait})):c.hasOwnProperty("landscape")&&(null==this||this.emitUIInteraction({zoom:c.landscape}))),e)if(!d||(null==d?void 0:d.startsWith("4.27"))){const e={Console:`r.setres ${Math.round(h)}x${Math.round(u)}w`};null==this||this.emitUIInteraction(e)}else e.onMatchViewportResolutionCallback(Math.round(h),Math.round(u))},0)}handleMouseLock(){var e,t,n;null===(e=null==this?void 0:this.config)||void 0===e||e.modifyInitialSettings(!(null===(n=null===(t=null==this?void 0:this.streamInfo)||void 0===t?void 0:t.streamInfo.meta)||void 0===n?void 0:n.mouseLock))}setAudioEnabled(e){var t,n,i,s;const r=null===(i=null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoElement)||void 0===i?void 0:i.call(n),o=null===(s=this.webRtcController)||void 0===s?void 0:s.streamController;if(!r)return;const a=!e;r.muted=a,(null==o?void 0:o.audioElement)&&(o.audioElement.muted=a,e&&r.currentTime>0&&!r.paused&&o.audioElement.paused&&o.audioElement.play().catch(()=>{}))}resetInitGuardsAndHooks(){this.videoInitializedSent=!1,this._postInitSideEffectsDone=!1,this.cancelFirstRenderedFrameHook(),this.attachFirstRenderedFrameOnce(),this.bindTransportEvents()}static clearSessionId(){"undefined"!=typeof localStorage&&localStorage.removeItem("pxss")}runPostInitSideEffectsOnce(){var e,t;if(!this._postInitSideEffectsDone){this._postInitSideEffectsDone=!0;try{null===(e=this.handleMouseLock)||void 0===e||e.call(this)}catch(e){}try{null===(t=this.handleResolutionChange)||void 0===t||t.call(this)}catch(e){}v.J.Emit(this.postInitSideEffectsHandler,void 0)}}toggleAudio(e,t){var n,i;const{streamController:s}=this.webRtcController;e&&(e.muted=t,s&&(s.audioElement.muted=t,(null==e?void 0:e.currentTime)>0&&!(null==e?void 0:e.paused)&&(null===(n=null==s?void 0:s.audioElement)||void 0===n?void 0:n.paused)&&(null===(i=null==s?void 0:s.audioElement)||void 0===i||i.play())))}toggleMic(e,t){var n;null===(n=null==this?void 0:this.config)||void 0===n||n.setFlagEnabled(o.iI.UseMic,e),t||(v.J.Emit(this.micToggleHandler,{enabled:e}),setTimeout(()=>{this.videoInitializedSent=!1,this.attachFirstRenderedFrameOnce(),this.bindTransportEvents(),this.reconnect()},1e3))}onStreamingStateChange(e){var t,n,i,s;const r=null===(n=null===(t=null==this?void 0:this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoElement();null==r||r.addEventListener("play",()=>e(!0)),null==r||r.addEventListener("pause",()=>e(!1)),null==r||r.addEventListener("ended",()=>e(!1)),null===(i=this.webRtcController)||void 0===i||i.transport.addEventListener("open",()=>{e(!0)}),null===(s=this.webRtcController)||void 0===s||s.transport.addEventListener("close",()=>{e(!1)})}}},6689(e,t,n){n.d(t,{J:()=>a});var i=n(272);let s=null,r=null,o=null;function a(e,t,n){var a,l,d,c;const h=!0===(null==n?void 0:n.forceRefresh),u=!0===(null==n?void 0:n.allowMultipleInstances),m=`${null!==(l=null===(a=e.settings)||void 0===a?void 0:a.shareId)&&void 0!==l?l:""}|${null!==(c=null===(d=e.settings)||void 0===d?void 0:d.projectId)&&void 0!==c?c:""}`;if(u)return{PixelStreaming:new i.o(e,t),Config:e};if(o&&o!==m&&s&&(s.disconnect(),s=null,r=null),s&&!h)return console.warn("CoreSetup: Reusing existing stream instance."),{PixelStreaming:s,Config:r};h&&s&&(s.disconnect(),s=null,r=null);const p=new i.o(e,t);return s=p,r=e,o=m,{PixelStreaming:p,Config:e}}},5149(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("ErrorMessage must be an object");const t=e;if("error"!==t.type)throw new Error(`Invalid ErrorMessage type: ${t.type}`);const n=t.code;if("number"!=typeof n||!Number.isInteger(n))throw new Error("ErrorMessage.code must be an integer");const i=t.reason;if("string"!=typeof i)throw new Error("ErrorMessage.reason must be a string");const s=t.verbosity;if("number"!=typeof s)throw new Error("ErrorMessage.verbosity must be a number");return{type:"error",code:n,reason:i,verbosity:s}}n.d(t,{x:()=>i})},5428(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("LoveLetter must be an object");const t=e;if("letter"!==t.type)throw new Error(`Invalid LoveLetter type: ${t.type}`);const n=t.reason;if("string"!=typeof n||!n.startsWith("LL: "))throw new Error("LoveLetter.reason must be a string starting with 'LL: '");const i=t.code;if("number"!=typeof i)throw new Error("LoveLetter.code must be a number");const s=t.verbosity;if("number"!=typeof s)throw new Error("LoveLetter.verbosity must be a number");return{type:"letter",reason:n,code:i,verbosity:s}}n.d(t,{Q:()=>i})},6151(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Ping message must be an object");const t=e;if("ping"!==t.type)throw new Error(`Invalid Ping.type: ${t.type}`);const n=t.time;if("number"!=typeof n)throw new Error("Ping.time must be a number");const i=t.message;if(void 0!==i&&"string"!=typeof i)throw new Error("Ping.message must be a string if present");return Object.assign({type:"ping",time:n},"string"==typeof i?{message:i}:{})}n.d(t,{M:()=>i})},2309(e,t,n){function i(e){return"object"==typeof e&&null!==e}function s(e){return"number"==typeof e&&Number.isInteger(e)}function r(e){return"number"==typeof e}function o(e){if(!i(e))throw new Error("Queue message must be an object");if("queue"!==e.type)throw new Error(`Invalid Queue.type: ${e.type}`);const t=e.queue;if(!i(t))throw new Error("Queue.queue must be an object");const n=t.valueType;if("milliseconds"!==(o=n)&&"seconds"!==o&&"minutes"!==o&&"hours"!==o&&"days"!==o)throw new Error("Queue.queue.valueType must be one of milliseconds|seconds|minutes|hours|days");var o;const a={valueType:n},l=t.index;if(void 0!==l){if(!s(l))throw new Error("Queue.queue.index must be an integer if present");a.index=l}const d=t.queueLength;if(void 0!==d){if(!s(d))throw new Error("Queue.queue.queueLength must be an integer if present");a.queueLength=d}const c=t.waited;if(void 0!==c){if(!r(c))throw new Error("Queue.queue.waited must be a number if present");a.waited=c}const h=t.estimatedWaitTime;if(void 0!==h){if(null!==h&&!r(h))throw new Error("Queue.queue.estimatedWaitTime must be a number or null if present");a.estimatedWaitTime=h}const u=t.averageWaitTime;if(void 0!==u){if(null!==u&&!r(u))throw new Error("Queue.queue.averageWaitTime must be a number or null if present");a.averageWaitTime=u}return{type:"queue",queue:a}}n.d(t,{D:()=>o})},8536(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Render message must be an object");const t=e;if("render"!==t.type)throw new Error(`Invalid Render.type: ${t.type}`);return{type:"render"}}n.d(t,{w:()=>i})},6319(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("SessionId message must be an object");const t=e;if("sessionId"!==t.type)throw new Error(`Invalid SessionId.type: ${t.type}`);const n=t.sessionId;if("string"!=typeof n)throw new Error("SessionId.sessionId must be a string");return{type:"sessionId",sessionId:n}}n.d(t,{B:()=>i})},393(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Stats message must be an object");const t=e;if("stats"!==t.type)throw new Error(`Invalid Stats.type: ${t.type}`);const n=t.stats;if(void 0!==n&&("object"!=typeof n||null===n))throw new Error("Stats.stats must be an object if present");const i=null==n?void 0:n.controlsStreamInput;if(void 0!==i&&"true"!==i&&"false"!==i)throw new Error("Stats.stats.controlsStreamInput must be 'true' or 'false'");return{type:"stats",stats:n}}n.d(t,{B:()=>i})},9568(e,t,n){n.d(t,{U:()=>l});var i=n(7335);function s(e){return"object"==typeof e&&null!==e}function r(e){return"boolean"==typeof e}function o(e){return"string"==typeof e}function a(e){return"number"==typeof e&&Number.isInteger(e)&&e>=0}function l(e){const t="string"==typeof e?(()=>{try{return JSON.parse(e)}catch(e){throw new Error("StreamInfo payload is not valid JSON")}})():e;if(!s(t))throw new Error("StreamInfo must be an object");if("streamInfo"!==t.type)throw new Error(`Invalid StreamInfo.type: ${t.type}`);const n=t.streamInfo;if(!s(n))throw new Error("StreamInfo.streamInfo must be an object");const l=n.guid;if(!o(l)||0===l.length)throw new Error("StreamInfo.streamInfo.guid must be a non-empty string");const d={type:"streamInfo",streamInfo:{guid:l}};r(n.autoPlay)&&(d.streamInfo.autoPlay=n.autoPlay),r(n.touchCapable)&&(d.streamInfo.touchCapable=n.touchCapable);const c=n.resolution;if(void 0!==c){if(!s(c))throw new Error("StreamInfo.streamInfo.resolution must be an object if present");if(!a(c.width))throw new Error("StreamInfo.streamInfo.resolution.width must be a non-negative int");if(!a(c.height))throw new Error("StreamInfo.streamInfo.resolution.height must be a non-negative int");d.streamInfo.resolution={width:c.width,height:c.height},r(c.dynamic)&&(d.streamInfo.resolution.dynamic=c.dynamic),r(c.fixed)&&(d.streamInfo.resolution.fixed=c.fixed)}const h=n.meta;if(void 0!==h){if(!s(h))throw new Error("StreamInfo.streamInfo.meta must be an object if present");const e={};o(h.friendlyName)&&(e.friendlyName=h.friendlyName),r(h.isTrial)&&(e.isTrial=h.isTrial),r(h.mouseLock)&&(e.mouseLock=h.mouseLock),r(h.poweredBy)&&(e.poweredBy=h.poweredBy),o(h.version)&&(e.version=h.version),d.streamInfo.meta=e}const u=n.webSdkSettings;void 0!==u&&(d.streamInfo.webSdkSettings=(0,i.Z)(u));const m=n.afk;if(void 0!==m){if(!s(m))throw new Error("StreamInfo.streamInfo.afk must be an object if present");if(!r(m.enabled))throw new Error("StreamInfo.streamInfo.afk.enabled must be boolean");if(!a(m.warn))throw new Error("StreamInfo.streamInfo.afk.warn must be a non-negative int");if(!a(m.error))throw new Error("StreamInfo.streamInfo.afk.error must be a non-negative int");if(!a(m.action))throw new Error("StreamInfo.streamInfo.afk.action must be a non-negative int");d.streamInfo.afk={enabled:m.enabled,warn:m.warn,error:m.error,action:m.action}}return d}},9866(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Version message must be an object");const t=e;if("version"!==t.type)throw new Error(`Invalid Version.type: ${t.type}`);const n=t.version;if(void 0!==n&&"string"!=typeof n)throw new Error("Version.version must be a string if present");return Object.assign({type:"version"},"string"==typeof n?{version:n}:{})}n.d(t,{o:()=>i})},7335(e,t,n){function i(e){return"object"==typeof e&&null!==e}function s(e){return"boolean"==typeof e}function r(e){return"string"==typeof e}function o(e){if(!i(e))throw new Error("WebSdkSettings must be an object");const t={},n=e.conf;if(void 0!==n){if(!i(n))throw new Error("WebSdkSettings.conf must be an object if present");const e={};s(n.fullscreenButton)&&(e.fullscreenButton=n.fullscreenButton),s(n.stopButton)&&(e.stopButton=n.stopButton),s(n.audioButton)&&(e.audioButton=n.audioButton),s(n.infoButton)&&(e.infoButton=n.infoButton),s(n.micButton)&&(e.micButton=n.micButton),s(n.settingsButton)&&(e.settingsButton=n.settingsButton),s(n.connectionStrengthIcon)&&(e.connectionStrengthIcon=n.connectionStrengthIcon),t.conf=e}const o=e.init;if(void 0!==o){if(!i(o))throw new Error("WebSdkSettings.init must be an object if present");const e={};s(o.KeyboardInput)&&(e.KeyboardInput=o.KeyboardInput),s(o.MouseInput)&&(e.MouseInput=o.MouseInput),s(o.GamepadInput)&&(e.GamepadInput=o.GamepadInput),s(o.TouchInput)&&(e.TouchInput=o.TouchInput),s(o.XRControllerInput)&&(e.XRControllerInput=o.XRControllerInput),s(o.FakeMouseWithTouches)&&(e.FakeMouseWithTouches=o.FakeMouseWithTouches),s(o.ForceMonoAudio)&&(e.ForceMonoAudio=o.ForceMonoAudio),s(o.HoveringMouse)&&(e.HoveringMouse=o.HoveringMouse),t.init=e}const a=e.customization;if(void 0!==a){if(!i(a))throw new Error("WebSdkSettings.customization must be an object if present");const e={},n=a.buttons_position;if(void 0!==n){if(!r(n)||!["Top-Left","Top-Right","Bottom-Left","Bottom-Right"].includes(n))throw new Error("customization.buttons_position must be one of: Top-Left, Top-Right, Bottom-Left, Bottom-Right");e.buttons_position=n}const o=a.buttons_orientation;if(void 0!==o){if(!r(o)||!["Horizontal","Vertical"].includes(o))throw new Error("customization.buttons_orientation must be one of: Horizontal, Vertical");e.buttons_orientation=o}const l=a.buttons_reverse;if(void 0!==l){if(!s(l))throw new Error("customization.buttons_reverse must be a boolean");e.buttons_reverse=l}t.customization=e}return t}n.d(t,{Z:()=>o})},6246(e,t,n){n.d(t,{B2:()=>r.B,BN:()=>a.B,DY:()=>d.D,Mr:()=>l.M,Ql:()=>s.Q,U3:()=>o.U,Vn:()=>m,ZB:()=>h.Z,ot:()=>c.o,wL:()=>u.w,xI:()=>i.x});var i=n(5149),s=n(5428),r=n(6319),o=n(9568),a=n(393),l=n(6151),d=n(2309),c=n(9866),h=n(7335),u=n(8536);const m={stats:{parse:a.B}}},6460(e,t,n){n.d(t,{J:()=>i});class i{add(e){return this.callbacks.find(t=>t===e)?null:(this.callbacks.push(e),e)}remove(e){const t=this.callbacks.find(t=>t===e);return t&&this.callbacks.splice(this.callbacks.indexOf(t),1),!!t}constructor(){this.callbacks=new Array}static Emit(e,t){e.callbacks.forEach(e=>e(t))}}},946(e,t,n){n.d(t,{N:()=>o});var i=n(7894),s=n(7813);function r(e){return"string"==typeof e&&e.length>0}class o{get current(){return this._current}get noSession(){return new URLSearchParams(window.location.search).has("noSession")}get id(){if(this.noSession)return null;const e=this.readSessionString();if(null===e)return null;let t;try{t=JSON.parse(e)}catch(e){return this.unset(),null}const n=function(e){if("object"!=typeof e||null===e)return;const t=e;for(const e of Object.keys(t))if("id"!==e&&"created"!==e&&"expire"!==e)return;if(!r(t.id))return;const n=function(e){if(e instanceof Date&&!isNaN(e.getTime()))return e;if("string"==typeof e){const t=new Date(e);if(!isNaN(t.getTime()))return t}}(t.created);if(!n)return;const i=void 0===t.expire?void 0:"boolean"==typeof t.expire?t.expire:void 0;return{id:t.id,created:n,expire:i}}(t);if(!n)return this.unset(),null;const o=(0,i.A)(new Date(n.created),this.options.keepSession);return(0,s.A)(o,new Date)?(this.unset(),null):n.id}get localStorageKey(){return this.options.localStorageKey}constructor(e){this.options=function(e){return{localStorageKey:"string"==typeof(null==e?void 0:e.localStorageKey)&&e.localStorageKey.length>=3?e.localStorageKey:"pxss",keepSession:"number"==typeof(null==e?void 0:e.keepSession)&&Number.isInteger(e.keepSession)&&e.keepSession>=3?e.keepSession:10}}(e)}set(e){if(!r(e))throw new Error("Session id must be a non-empty string");this._current=e;const t={id:e,created:new Date,expire:!1};this.writeSessionString(JSON.stringify(t))}unset(){try{window.localStorage.removeItem(this.localStorageKey)}catch(e){}try{window.sessionStorage.removeItem(this.localStorageKey)}catch(e){}}readSessionString(){try{const e=window.localStorage.getItem(this.localStorageKey);if(null!==e)return e}catch(e){}try{return window.sessionStorage.getItem(this.localStorageKey)}catch(e){}return null}writeSessionString(e){let t=!1;try{window.localStorage.setItem(this.localStorageKey,e),t=!0}catch(e){}if(!t)try{window.sessionStorage.setItem(this.localStorageKey,e),t=!0}catch(e){}}}},633(e,t,n){function i(e){return{codecs:e.codecs,candidatePair:e.candidatePairs,localCandidates:e.localCandidates,remoteCandidates:e.remoteCandidates,DataChannelStats:e.datachannelStats,bytesReceived:r(e.inboundVideoStats.bytesReceived),packetsLost:r(e.inboundVideoStats.packetsLost),frameWidth:r(e.inboundVideoStats.frameWidth),frameHeight:r(e.inboundVideoStats.frameHeight),framesDecoded:r(e.inboundVideoStats.framesDecoded),framesPerSecond:r(e.inboundVideoStats.framesPerSecond),framesDropped:r(e.inboundVideoStats.framesDropped),videoCodec:e.inboundVideoStats.codecId,audioCodec:e.inboundAudioStats.codecId,browserInfo:{userAgent:navigator.userAgent,platform:navigator.oscpu||navigator.platform||null,language:navigator.language},currentRTT:s(e.candidatePairs),sessionRunTime:e.sessionStats.runTime,controlsStreamInput:"true"===e.sessionStats.controlsStreamInput||"false"===e.sessionStats.controlsStreamInput?e.sessionStats.controlsStreamInput:void 0,videoEncoderAvgQP:r(e.sessionStats.videoEncoderAvgQP),videoBitrate:r(e.inboundVideoStats.bitrate),audioBitrate:r(e.inboundAudioStats.bitrate)}}function s(e){let t=0;for(const n of e)n.selected&&n.currentRoundTripTime>t&&(t=n.currentRoundTripTime);return t}function r(e){return"number"==typeof e&&Number.isFinite(e)?e:0}n.d(t,{U:()=>i})},3263(e,t,n){function i(e,t){let n;return function(...i){clearTimeout(n),n=window.setTimeout(()=>e(...i),t)}}n.d(t,{A:()=>i})},7506(e,t,n){n.d(t,{Q:()=>s});var i=n(6155);function s(e,t={}){var n,s,o;const a=null!==(n=t.maxPayloadBytes)&&void 0!==n?n:512;let l;try{l=(0,i.Yr)(e,{allowJsonish:null===(s=t.allowJsonish)||void 0===s||s})}catch(e){return{ok:!1,error:null!==(o=null==e?void 0:e.message)&&void 0!==o?o:"Invalid input"}}const d=r(l.type),c=r(l.customName);if(!d)return{ok:!1,error:"`type` must be a non-empty string."};if(!c)return{ok:!1,error:"`customName` must be a non-empty string."};let h;return"payload"in l&&"string"==typeof l.payload&&(h=(0,i.HJ)(l.payload,a)),{ok:!0,value:void 0!==h?{type:d,customName:c,payload:h}:{type:d,customName:c}}}function r(e){if("string"!=typeof e)return;const t=e.trim();return t.length?t:void 0}},7050(e,t,n){n.d(t,{_Z:()=>o});var i,s,r=n(1635);!function(e){e.Landscape="landscape",e.Portrait="portrait"}(i||(i={})),function(e){e.Desktop="desktop",e.Mobile="mobile",e.Tablet="tablet"}(s||(s={}));class o{constructor(e={}){var t,n,i,s;this.uaInfoCache=null,this.opts={enableBandwidthProbe:null===(t=e.enableBandwidthProbe)||void 0===t||t,probeUrl:null!==(n=e.probeUrl)&&void 0!==n?n:"/diag/probe.bin",respectSaveData:null===(i=e.respectSaveData)||void 0===i||i,sampleRate:Math.max(0,Math.min(1,null!==(s=e.sampleRate)&&void 0!==s?s:1))}}collect(){return(0,r.sH)(this,void 0,void 0,function*(){var e,t;if(!this.shouldSample())return{device:{type:s.Desktop,touchSupport:!1},runtime:{browser:{family:"Unknown",version:null},os:{family:"Unknown",version:null}},powerHints:{saveData:null,prefersReducedData:null,prefersReducedMotion:null},network:{type:null,effectiveType:null,downlinkMbps:null,rttMs:null,measuredDownlinkMbps:null},timestamps:{collectedAt:Date.now()}};const n=Date.now(),[i,r,o]=yield Promise.all([this.getUAInfo(),this.getCodecSupport(),this.maybeMeasureBandwidth()]);return{device:{type:this.inferDeviceType(),vendor:null,model:i.model,architecture:i.architecture,bitness:i.bitness,touchSupport:this.hasTouch(),hardwareConcurrency:null!==(e=navigator.hardwareConcurrency)&&void 0!==e?e:null,deviceMemory:null!==(t=navigator.deviceMemory)&&void 0!==t?t:null,orientation:this.getOrientation(),webgl:this.hasWebGL(),codecs:r},runtime:{browser:{family:i.browserFamily,version:i.browserVersion},os:{family:i.osFamily,version:i.osVersion}},powerHints:this.getPowerHints(),network:this.getNetworkInfo(o),timestamps:{collectedAt:n}}})}collectWebRTC(e){return(0,r.sH)(this,void 0,void 0,function*(){var t,n,i,s,r,o;try{const a=yield e.getStats();let l,d,c,h;return a.forEach(e=>{"transport"===e.type&&e.selectedCandidatePairId&&(d=e),"candidate-pair"===e.type&&(e.selected||e.nominated)&&(l=e)}),l&&(c=a.get(l.localCandidateId),h=a.get(l.remoteCandidateId)),{candidatePairId:null!==(t=null==l?void 0:l.id)&&void 0!==t?t:null,localCandidateType:null!==(n=null==c?void 0:c.candidateType)&&void 0!==n?n:null,remoteCandidateType:null!==(i=null==h?void 0:h.candidateType)&&void 0!==i?i:null,protocol:null!==(s=null==c?void 0:c.protocol)&&void 0!==s?s:null,networkType:null!==(r=null==c?void 0:c.networkType)&&void 0!==r?r:null,dtlsCipher:null!==(o=null==d?void 0:d.dtlsCipher)&&void 0!==o?o:null}}catch(e){return{}}})}buildHelloEnvelope(e,t){return(0,r.sH)(this,void 0,void 0,function*(){const n=yield this.collect(),i=t?yield this.collectWebRTC(t):void 0,s=i?{diag:Object.assign(Object.assign({},n),{webrtc:i})}:{diag:n};return Object.assign(Object.assign({},e),{ext:s})})}shouldSample(){return this.opts.sampleRate>=1||Math.random()<this.opts.sampleRate}hasTouch(){var e;const t=navigator;return"ontouchstart"in window||(null!==(e=t.maxTouchPoints)&&void 0!==e?e:0)>0}getOrientation(){var e;try{if(null===(e=screen.orientation)||void 0===e?void 0:e.type)return screen.orientation.type.startsWith("portrait")?i.Portrait:i.Landscape;if(window.matchMedia)return window.matchMedia("(orientation: portrait)").matches?i.Portrait:i.Landscape}catch(e){}return null}hasWebGL(){try{const e=document.createElement("canvas");return!(!e.getContext("webgl")&&!e.getContext("experimental-webgl"))}catch(e){return!1}}inferDeviceType(){const e=navigator.userAgentData,t=navigator.userAgent||"",n=!0===(null==e?void 0:e.mobile),i=Math.min(screen.width,screen.height);return/\b(iPad|Tablet)\b/i.test(t)?s.Tablet:n?i>=600?s.Tablet:s.Mobile:/\b(iPhone|Android.*Mobile|Windows Phone)\b/i.test(t)?s.Mobile:("ontouchstart"in window||navigator.maxTouchPoints>0)&&i>=600&&i<=1100?s.Tablet:s.Desktop}getPowerHints(){const e=navigator.connection,t="boolean"==typeof(null==e?void 0:e.saveData)?e.saveData:null;let n=null,i=null;if("function"==typeof window.matchMedia){try{const e=window.matchMedia("(prefers-reduced-data: reduce)");"boolean"==typeof e.matches&&(n=e.matches)}catch(e){}try{const e=window.matchMedia("(prefers-reduced-motion: reduce)");"boolean"==typeof e.matches&&(i=e.matches)}catch(e){}}return{saveData:t,prefersReducedData:n,prefersReducedMotion:i}}getNetworkInfo(e){const t=navigator.connection;return{type:"string"==typeof(null==t?void 0:t.type)?t.type:null,effectiveType:"string"==typeof(null==t?void 0:t.effectiveType)?t.effectiveType:null,downlinkMbps:"number"==typeof(null==t?void 0:t.downlink)?t.downlink:null,rttMs:"number"==typeof(null==t?void 0:t.rtt)?t.rtt:null,measuredDownlinkMbps:e}}maybeMeasureBandwidth(){return(0,r.sH)(this,void 0,void 0,function*(){const e=navigator.connection,t=!0===(null==e?void 0:e.saveData);if(!this.opts.enableBandwidthProbe)return null;if(this.opts.respectSaveData&&t)return null;try{const e=performance.now(),t=yield fetch(this.withCacheBuster(this.opts.probeUrl),{cache:"no-store",credentials:"omit"}),n=yield t.arrayBuffer(),i=performance.now(),s=8*n.byteLength,r=(i-e)/1e3;return r<=.05?null:+(s/r/1e6).toFixed(2)}catch(e){return null}})}withCacheBuster(e){var t,n;const i=new URL(e,location.origin),s=null!==(n=null===(t=null===crypto||void 0===crypto?void 0:crypto.randomUUID)||void 0===t?void 0:t.call(crypto))&&void 0!==n?n:String(Date.now());return i.searchParams.set("cb",s),i.toString()}getCodecSupport(){return(0,r.sH)(this,void 0,void 0,function*(){const[e,t]=yield Promise.all([this.supportsCodec('video/mp4; codecs="avc1.42E01E"'),this.supportsCodec('video/mp4; codecs="hvc1.1.6.L93.B0"')]);return{h264:e,hevc:t}})}supportsCodec(e){return(0,r.sH)(this,void 0,void 0,function*(){try{if("mediaCapabilities"in navigator){const t=yield navigator.mediaCapabilities.decodingInfo({type:"file",video:{contentType:e,width:1920,height:1080,bitrate:5e6,framerate:30}});return!!(null==t?void 0:t.supported)}}catch(e){}try{return""!==document.createElement("video").canPlayType(e)}catch(e){return!1}})}getUAInfo(){return(0,r.sH)(this,void 0,void 0,function*(){if(this.uaInfoCache)return this.uaInfoCache;const e=navigator.userAgentData,t=navigator.userAgent;let n="Unknown",i=null,s="Unknown",r=null,o=null,a=null,l=null;if(null==e?void 0:e.getHighEntropyValues)try{const t=yield e.getHighEntropyValues(["platform","platformVersion","model","architecture","bitness","fullVersionList"]);s=t.platform||"Unknown",r=t.platformVersion||null,o=t.model||null,a=t.architecture||null,l=t.bitness||null;const d=(t.fullVersionList||e.brands||[]).find(e=>{if(!e.brand)return!1;const t=e.brand.replace(/[^a-zA-Z]/g,"").toLowerCase();return!t.includes("chromium")&&!t.includes("notabrand")});d&&(n=d.brand,i=d.version)}catch(e){}if(!n||"Unknown"===n){const e=[[/Edg\/(\S+)/,"Edge"],[/OPR\/(\S+)/,"Opera"],[/SamsungBrowser\/(\S+)/,"Samsung Internet"],[/Firefox\/(\S+)/,"Firefox"],[/Chrome\/(\S+)/,"Chrome"],[/Version\/(\S+).*Safari/,"Safari"]];for(const[s,r]of e){const e=t.match(s);if(e){n=r,i=e[1];break}}}if(/iPhone|iPad|iPod/.test(t)){s="iOS";const e=t.match(/OS (\d+[_\d]*)/);e&&(r=e[1].replace(/_/g,"."))}else if(null==e?void 0:e.platform)s=e.platform;else if(/Windows/.test(t)){s="Windows";const e=t.match(/Windows NT (\d+\.\d+)/);e&&(r=e[1])}else if(/Mac OS X/.test(t)){s="macOS";const e=t.match(/Mac OS X (\d+[_\d]*)/);e&&(r=e[1].replace(/_/g,"."))}else if(/Android/.test(t)){s="Android";const e=t.match(/Android (\d+(\.\d+)?)/);e&&(r=e[1])}else/Linux/.test(t)&&(s="Linux");const d={browserFamily:n,browserVersion:i,osFamily:s,osVersion:r,model:o,architecture:a,bitness:l};return this.uaInfoCache=d,d})}}},419(e,t,n){function i(e){return function(e){return"string"==typeof e&&e.startsWith("https://")&&(()=>{try{return new URL(e),!0}catch(e){return!1}})()}(e)||function(e){return"string"==typeof e&&e.length>0&&!/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e)}(e)}function s(e){if("object"!=typeof e||null===e)return;const t=e,n={},s=["loadingIconUrl","loadingIconFadeMs","splashScreenUrl","splashScreenMode","splashScreenPosition","splashScreenBgColor","hideLoveLetters","hideAfkOverlay"];for(const e of Object.keys(t))if(!s.includes(e))return;const r=t.loadingIconUrl;i(r)&&(n.loadingIconUrl=r);const o=t.loadingIconFadeMs;"number"==typeof o&&Number.isInteger(o)&&o>0&&(n.loadingIconFadeMs=o);const a=t.splashScreenUrl;i(a)&&(n.splashScreenUrl=a);const l=t.splashScreenMode;"contain"!==l&&"cover"!==l&&"stretch"!==l&&"repeat"!==l||(n.splashScreenMode=l);const d=t.splashScreenPosition;"string"==typeof d&&(n.splashScreenPosition=d);const c=t.splashScreenBgColor;"string"==typeof c&&(n.splashScreenBgColor=c);const h=t.hideLoveLetters;"boolean"==typeof h&&(n.hideLoveLetters=h);const u=t.hideAfkOverlay;return"boolean"==typeof u&&(n.hideAfkOverlay=u),Object.keys(n).length>0?n:void 0}n.d(t,{d:()=>s})},6155(e,t,n){function i(e,t={allowJsonish:!0}){if(e&&"object"==typeof e)return e;if("string"==typeof e){try{const t=JSON.parse(e);if(t&&"object"==typeof t)return t}catch(e){}if(t.allowJsonish){const t=e.trim().replace(/'/g,'"').replace(/([{,]\s*)([A-Za-z_][$\w-]*)(\s*:)/g,'$1"$2"$3');try{const e=JSON.parse(t);if(e&&"object"==typeof e)return e}catch(e){}}}throw new Error("Input must be an object or a JSON string of an object.")}function s(e,t){const n=new TextEncoder,i=new TextDecoder,s=n.encode(e);if(s.byteLength<=t)return e;for(let e=t;e>0;e--)try{return i.decode(s.subarray(0,e),{stream:!1})}catch(e){}return""}function r(e){let t=e.replace(/\s+/g," ").trim();return t=t.replace(/[\\\/:\*\?"<>\|\u0000-\u001F]+/g,""),t=t.replace(/^\.+/,""),!/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(t)&&t||(t=a()),t.length>100&&(t=t.slice(0,100)),t}function o(e){const t={"image/png":".png","image/jpeg":".jpg","image/jpg":".jpg","image/webp":".webp","image/gif":".gif","image/bmp":".bmp","image/tiff":".tiff","video/mp4":".mp4","video/webm":".webm","video/ogg":".ogv","audio/mpeg":".mp3","audio/ogg":".ogg","audio/wav":".wav","audio/webm":".weba","application/pdf":".pdf","application/zip":".zip","application/x-zip-compressed":".zip","application/json":".json","text/plain":".txt","text/csv":".csv"};return t[e]?t[e]:e.startsWith("image/")||e.startsWith("video/")||e.startsWith("audio/")?"."+e.split("/")[1]:""}function a(){return Math.random().toString(36).slice(2,8)}function l(e){return"string"==typeof e?e.trim().toLowerCase():""}n.d(t,{AZ:()=>l,HJ:()=>s,Nz:()=>r,Yr:()=>i,gX:()=>o,i$:()=>a})},9644(e,t,n){n.d(t,{a:()=>s});var i=n(419);function s(e){var t;try{const n=null!==(t=e.get("wl"))&&void 0!==t?t:e.get("whitelabel");if(!n)return;const s=function(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"===".slice((t.length+3)%4);return"function"==typeof atob?atob(n):Buffer.from(n,"base64").toString("utf-8")}(n),r=JSON.parse(s);return(0,i.d)(r)}catch(e){return}}},2451(e,t,n){n.d(t,{I:()=>T});var i,s=n(1635),r=n(223),o=n(5131),a=n(4746),l=n(1810),d=n(920),c=n(4520),h=n(7261),u=n(5007),m=n(2352),p=n(8403),g=n(3389),f=n(3910),v=n(8882),y=n(8816);const b=/^(\['([a-zA-Z 0-9-_]+)'\] )/;function w(e,t){const n=b.exec(t);if(!n)return null;const i=t.replace(n[1],""),s=n[2].trim(),r=(e||document).querySelectorAll(i);let o=null;return r.forEach(e=>{var t;null==e||e.innerHTML.trim(),!o&&(null===(t=null==e?void 0:e.innerHTML)||void 0===t?void 0:t.includes(`>${s}<`))&&(o=e)}),o}function S(e){if(!e)return e;try{return decodeURIComponent(e)}catch(t){return e}}const C={};function E(e,t){!0===C[e]&&t&&(t.style.display="none")}class T extends l.l{get rootElement(){return super.rootElement}constructor(e){var t,n,i,s,r,o,a,l,d,c;super(e),this.loveLettersList=[],this.loveLettersQueue=[],this.isProcessingQueue=!1,this.ArcwareSection=this.configUI.buildSectionWithHeading(this.settingsPanel.settingsContentElement,"Arcware Cloud"),this.stream=null==e?void 0:e.stream,this.baseShowAfkOverlay=this.showAfkOverlay.bind(this),this.stream.whiteLabellingChangedHandler.add(e=>{try{this.syncAfkOverlayFromWhiteLabelling(),this.applyBrandingFromSettings(e.next)}catch(e){}}),this.emitUIInteraction=this.emitUIInteraction.bind(this),this.adjustSettingsPanel(),this.createAudioToggleButton(),this.createMicToggleButton(),this.createStopButton(),this.applyArcwareStyles(),this.videoElementParent=null===(t=null==this?void 0:this.stream)||void 0===t?void 0:t.videoElementParent,this.parentElement=null===(n=null==this?void 0:this.videoElementParent)||void 0===n?void 0:n.parentElement,this.webRtcController=null===(i=null==this?void 0:this.stream)||void 0===i?void 0:i._webRtcController,this.loveLettersList=[],this.microphoneOverlay=new f.j(this.stream),this.initLoveLettersContainer(),this.createMicrophoneOverlay(),this.tryAttachLoveLettersContainer(),this.stream.postInitSideEffectsHandler.add(()=>{var e,t;try{this.handleRemoveLoveLetters()}catch(e){}try{null===(t=null===(e=this.microphoneOverlay)||void 0===e?void 0:e.toggleVisibility)||void 0===t||t.call(e,!1)}catch(e){}try{this.removeXRIconIfDisabled()}catch(e){}try{this.hideSplashVideo()}catch(e){}try{this._loveLettersAttachTimer&&(window.clearInterval(this._loveLettersAttachTimer),this._loveLettersAttachTimer=void 0)}catch(e){}}),this.stream.micToggleHandler.add(({enabled:e})=>{var t;try{null===(t=this.microphoneOverlay)||void 0===t||t.toggleMessage(e),setTimeout(()=>{var e;return null===(e=this.microphoneOverlay)||void 0===e?void 0:e.toggleVisibility(!0)},200)}catch(e){}}),this.addLoveLetterhandler(),null===(r=null===(s=null==this?void 0:this.stream)||void 0===s?void 0:s.sessionIdHandler)||void 0===r||r.add(e=>{var t;null===(t=null==this?void 0:this.statsPanel)||void 0===t||t.addOrUpdateSessionStat("sessionId","SessionId",e)}),null===(a=null===(o=null==this?void 0:this.stream)||void 0===o?void 0:o.videoInitializedHandler)||void 0===a||a.add(()=>{var e,t,n;null===(e=null==this?void 0:this.currentOverlay)||void 0===e||e.hide(),(null===(t=null==this?void 0:this.stream)||void 0===t?void 0:t.streamInfo)&&(null==this||this.autoPlayHandler(null===(n=null==this?void 0:this.stream)||void 0===n?void 0:n.streamInfo),this.applyCustomStyling())}),null===(d=null===(l=null==this?void 0:this.stream)||void 0===l?void 0:l.videoInitializedHandler)||void 0===d||d.add((()=>{null==this||this.uiDefaultButtonVisibilty("fullscreenButton","#fullscreen-btn"),null==this||this.uiDefaultButtonVisibilty("settingsButton","#settingsBtn"),null==this||this.uiDefaultButtonVisibilty("infoButton","#statsBtn"),null==this||this.uiDefaultButtonVisibilty("audioButton","#audioBtn"),null==this||this.uiDefaultButtonVisibilty("stopButton","#stopBtn"),null==this||this.uiDefaultButtonVisibilty("connectionStrengthIcon","#connection"),null==this||this.uiDefaultButtonVisibilty("micButton","#micBtn"),this.uiElementsVisibility(!0)}).bind(this)),this.uiElementsVisibility(!1),this.addTextToConnectOverlay(),this.preventDefaultKeyboardEvents(),null===(c=this.stream)||void 0===c||c.fileTransferHandler.add(e=>{var t;return null===(t=this.stream)||void 0===t?void 0:t.fileDownload(e.filename)}),this.syncAfkOverlayFromWhiteLabelling()}addLoveLetterhandler(){var e,t;null===(t=null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.loveLetterHandler)||void 0===t||t.add(e=>{var t,n,i;if((null==this?void 0:this.playOverlay)&&e&&(null==this?void 0:this.parentElement)){const s=null===(t=null==this?void 0:this.parentElement)||void 0===t?void 0:t.querySelector("#infoOverlay");if(s){null===(n=null==s?void 0:s.classList)||void 0===n||n.remove("hiddenState");const t=null==s?void 0:s.querySelector("#messageOverlayInner");t&&(t.innerHTML=null===(i=null==e?void 0:e.reason)||void 0===i?void 0:i.replace("LL: ",""))}}try{(null==e?void 0:e.reason)&&this.pushLetter(e.reason)}catch(e){}})}initLoveLettersContainer(){var e;if(this.loveLettersContainer)return;const t=new u.O;this.logoLoader=t;const n=document.createElement("div");this.loveLettersContainer=n,n.classList.add("love-letters-box-root");const i=document.createElement("div");i.id="letters-block";const s=document.createElement("div");s.id="letters-wrapper";const r=t.arcwareLogoLoader;i.appendChild(r),null===(e=t.setHostElement)||void 0===e||e.call(t,r),n.appendChild(i),i.appendChild(s),this.tryAttachLoveLettersContainer()}tryAttachLoveLettersContainer(){var e,t,n,i,s,r;const o=this.loveLettersContainer;if(!o)return;if(o.parentElement)return;const a=null!==(r=null!==(t=null===(e=this.stream)||void 0===e?void 0:e.videoElementParent)&&void 0!==t?t:null===(s=null===(i=null===(n=this.webRtcController)||void 0===n?void 0:n.videoPlayer)||void 0===i?void 0:i.getVideoParentElement)||void 0===s?void 0:s.call(i))&&void 0!==r?r:null;a?a.appendChild(o):this._loveLettersAttachTimer||(this._loveLettersAttachTimer=window.setInterval(()=>{var e,t,n,i,s,r;const o=null!==(r=null!==(t=null===(e=this.stream)||void 0===e?void 0:e.videoElementParent)&&void 0!==t?t:null===(s=null===(i=null===(n=this.webRtcController)||void 0===n?void 0:n.videoPlayer)||void 0===i?void 0:i.getVideoParentElement)||void 0===s?void 0:s.call(i))&&void 0!==r?r:null;o&&this.loveLettersContainer&&!this.loveLettersContainer.parentElement&&(o.appendChild(this.loveLettersContainer),window.clearInterval(this._loveLettersAttachTimer),this._loveLettersAttachTimer=void 0)},50))}pushLetter(e){var t;this.loveLettersQueue.push(e),(null===(t=this.stream.config.settings.whiteLabelling)||void 0===t?void 0:t.hideLoveLetters)||this.stream.config.settings.fetchRemoteWhiteLabelling||this.isProcessingQueue||this.processLoveLetterQueue()}processLoveLetterQueue(){this.isProcessingQueue=!0;const e=this.loveLettersQueue.shift();if(void 0!==e){const t=e.replace(/LL: |\.$/g,"");this.loveLettersList.push(t),(new p.O).addLetter(t,this.loveLettersList.length),setTimeout(()=>{this.processLoveLetterQueue()},1e3)}else this.isProcessingQueue=!1}handleRemoveLoveLetters(){const e=document.querySelector(".love-letters-box-root");setTimeout(()=>{e&&e.classList.add("fade-out")},1e3),setTimeout(()=>{e&&e.parentNode&&e.parentNode.removeChild(e)},1600)}createMicrophoneOverlay(){var e;null===(e=this.microphoneOverlay)||void 0===e||e.createOverlay()}removeXRIconIfDisabled(){var e,t,n,i,s,o;if(!(null===(n=null===(t=null===(e=this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.initialSettings)||void 0===n?void 0:n.XRControllerInput)){null===(s=null===(i=this.stream)||void 0===i?void 0:i.config)||void 0===s||s.setFlagEnabled(r.iI.XRControllerInput,!1);const e=null===(o=this.stream)||void 0===o?void 0:o.videoElementParent;if(null==e?void 0:e.parentElement){const t=e.parentElement.querySelector("#xrBtn");null==t||t.remove()}}}applyBrandingFromSettings(e){var t,n,i,s,r,o,a,l,d,c,h,u,m,p,g;const f=null!==(i=null!=e?e:null===(n=null===(t=this.stream)||void 0===t?void 0:t.config)||void 0===n?void 0:n.settings.whiteLabelling)&&void 0!==i?i:{};try{this.logoLoader&&(null===(r=(s=this.logoLoader).setImage)||void 0===r||r.call(s,S(f.loadingIconUrl)),null===(a=(o=this.logoLoader).setFade)||void 0===a||a.call(o,f.loadingIconFadeMs))}catch(e){}const v=null!==(m=null!==(l=this.loveLettersContainer)&&void 0!==l?l:null===(u=null===(h=null===(c=null===(d=this.webRtcController)||void 0===d?void 0:d.videoPlayer)||void 0===c?void 0:c.getVideoParentElement)||void 0===h?void 0:h.call(c))||void 0===u?void 0:u.parentElement)&&void 0!==m?m:null;if(!v)return;const y=v.style;y.removeProperty("background-image"),y.removeProperty("background-size"),y.removeProperty("background-repeat"),y.removeProperty("background-position"),y.removeProperty("background-color"),y.setProperty("background","initial"),v.classList.remove("aw-splash"),this.destroySplashVideo();const b=!!f.splashScreenUrl,w=!!f.splashScreenBgColor;if(!b&&!w)return;v.classList.add("aw-splash");const C=null!==(p=f.splashScreenBgColor)&&void 0!==p?p:"var(--color0)";y.setProperty("background-color",C,"important");const E=this.isVideoUrl(f.splashScreenUrl);if(b&&E){const e="cover"===f.splashScreenMode?"cover":"stretch"===f.splashScreenMode?"fill":"contain",t=f.splashScreenPosition||"center center";this.upsertSplashVideo(S(f.splashScreenUrl),{fit:e,position:t,bgColor:C}),y.backgroundImage="none",y.backgroundRepeat="no-repeat",y.backgroundPosition="center center",y.backgroundSize="auto"}else if(b){switch(null!==(g=f.splashScreenMode)&&void 0!==g?g:"contain"){case"contain":y.backgroundSize="contain",y.backgroundRepeat="no-repeat";break;case"cover":y.backgroundSize="cover",y.backgroundRepeat="no-repeat";break;case"stretch":y.backgroundSize="100% 100%",y.backgroundRepeat="no-repeat";break;case"repeat":y.backgroundSize="auto",y.backgroundRepeat="repeat"}y.backgroundPosition=f.splashScreenPosition||"center center",y.backgroundImage=`url(${JSON.stringify(S(f.splashScreenUrl))})`}else y.backgroundImage="none",y.backgroundRepeat="no-repeat",y.backgroundPosition="center center",y.backgroundSize="auto"}ensureSplashHost(){var e,t,n,i,s,r;const o=null!==(r=null!==(e=this.loveLettersContainer)&&void 0!==e?e:null===(s=null===(i=null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoParentElement)||void 0===i?void 0:i.call(n))||void 0===s?void 0:s.parentElement)&&void 0!==r?r:null;return o?(this._splashHost=o,"static"===getComputedStyle(this._splashHost).position&&(this._splashHost.style.position="relative"),this._splashHost):null}destroySplashVideo(){if(this._splashVideo){try{this._splashVideo.pause()}catch(e){}try{this._splashVideo.remove()}catch(e){}this._splashVideo=void 0}}upsertSplashVideo(e,t){var n,i;const s=this.ensureSplashHost();if(!s)return;let r=this._splashVideo;r||(r=document.createElement("video"),r.playsInline=!0,r.setAttribute("webkit-playsinline","true"),r.muted=!0,r.autoplay=!0,r.loop=!0,r.style.position="absolute",r.style.inset="0",r.style.width="100%",r.style.height="100%",r.style.objectFit="contain",r.style.objectPosition="center center",r.style.pointerEvents="none",r.style.zIndex="0",s.appendChild(r),this._splashVideo=r),r.src=e,r.style.objectFit=null!==(n=t.fit)&&void 0!==n?n:"contain",r.style.objectPosition=null!==(i=t.position)&&void 0!==i?i:"center center",t.bgColor&&s.style.setProperty("background-color",t.bgColor,"important"),r.style.display="",r.play().catch(()=>{})}hideSplashVideo(){if(this._splashVideo){try{this._splashVideo.pause()}catch(e){}this._splashVideo.style.display="none"}}isVideoUrl(e){if(!e)return!1;const t=e.split("?")[0].toLowerCase();return t.startsWith("blob:")||t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".ogg")||t.endsWith(".ogv")||t.endsWith(".m3u8")}uiElementsVisibility(e){var t,n,i,s,r,o,a,l,d,c;const h=null===(t=null==this?void 0:this.parentElement)||void 0===t?void 0:t.querySelector("#controls");h&&(e?(null===(n=null==h?void 0:h.classList)||void 0===n||n.remove("hidden"),null===(i=null==h?void 0:h.classList)||void 0===i||i.add("visible")):(null===(s=null==h?void 0:h.classList)||void 0===s||s.remove("visible"),null===(r=null==h?void 0:h.classList)||void 0===r||r.add("hidden")));const u=null===(o=null==this?void 0:this.parentElement)||void 0===o?void 0:o.querySelector("#connection");u&&(e?(null===(a=null==u?void 0:u.classList)||void 0===a||a.remove("hidden"),null===(l=null==u?void 0:u.classList)||void 0===l||l.add("visible")):(null===(d=null==u?void 0:u.classList)||void 0===d||d.remove("visible"),null===(c=null==u?void 0:u.classList)||void 0===c||c.add("hidden")))}adjustSettingsPanel(){var e,t,n,i,s,r,l,d,u,m,p,g,f,v;const y=null===(e=null==this?void 0:this.ArcwareSection)||void 0===e?void 0:e.parentElement;y&&(null==y||y.removeChild(null==this?void 0:this.ArcwareSection),null==y||y.insertBefore(null==this?void 0:this.ArcwareSection,null==y?void 0:y.firstChild));const S=null===(t=null==this?void 0:this.settingsPanel)||void 0===t?void 0:t.settingsContentElement;if(S){S.style.minWidth="400px";for(const e in C)b.test(e)?E(e,w(S,e)):E(e,S.querySelector(e));const e=w(S,"['Restart Stream'] section > div.setting");if(e){const t=null==e?void 0:e.querySelector("div");t&&(t.textContent="Reconnect to Stream");const n=null==e?void 0:e.querySelector("label > input");n&&(n.value="reconnect")}}{const e=document.createElement("div");null===(n=null==e?void 0:e.classList)||void 0===n||n.add("setting"),e.textContent="Keep in mind, these settings will be applied in your current session only.",e.style.paddingBottom="15px",null===(i=null==this?void 0:this.ArcwareSection)||void 0===i||i.appendChild(e)}null===(s=null==this?void 0:this.ArcwareSection)||void 0===s||s.appendChild(new c.J(new o.T(null===(r=null==T?void 0:T.Flags)||void 0===r?void 0:r.noSession,"Disable SessionId","Disable sessionId based reconnection.",null===(d=null===(l=null==this?void 0:this.stream)||void 0===l?void 0:l.session)||void 0===d?void 0:d.noSession,!0)).rootElement),null===(u=null==this?void 0:this.ArcwareSection)||void 0===u||u.appendChild(new h.I(new a.c("signalling-url","Signalling URL","Signalling URL",`${null===(p=null===(m=null==this?void 0:this.stream)||void 0===m?void 0:m.config)||void 0===p?void 0:p.getTextSettingValue("ss")}?${null===(v=null===(f=null===(g=null==this?void 0:this.stream)||void 0===g?void 0:g.config)||void 0===f?void 0:f.urlFlags)||void 0===v?void 0:v.slice(1)}`,!1)).rootElement)}createAudioToggleButton(){var e;const t=new m.T(null==this?void 0:this.stream),n=(null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.videoElementParent).parentElement;if(n){const e=null==n?void 0:n.querySelector("#uiFeatures");if(e){const n=null==e?void 0:e.querySelector("#controls");n&&(null==n||n.appendChild(null==t?void 0:t.element))}}}createMicToggleButton(){var e;const t=new g.K(null==this?void 0:this.stream),n=(null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.videoElementParent).parentElement;if(n){const e=null==n?void 0:n.querySelector("#uiFeatures");if(e){const n=null==e?void 0:e.querySelector("#controls");n&&(null==n||n.appendChild(null==t?void 0:t.element))}}}createStopButton(){var e,t,n,i;if(!0===(null===(n=null===(t=null===(e=this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.settings)||void 0===n?void 0:n.stopButton)){const e=new v.Z(null==this?void 0:this.stream),t=(null===(i=null==this?void 0:this.stream)||void 0===i?void 0:i.videoElementParent).parentElement;if(t){const n=null==t?void 0:t.querySelector("#uiFeatures");if(n){const t=null==n?void 0:n.querySelector("#controls");t&&(null==t||t.appendChild(null==e?void 0:e.element))}}}}applyCustomStyling(e){var t,n,i,s,r,o,a;const{buttons_position:l,buttons_orientation:d,buttons_reverse:c}=this.stream.config.customization,{buttons_position:h,buttons_orientation:u,buttons_reverse:m}=null!==(r=null===(s=null===(i=null===(n=null===(t=null==this?void 0:this.stream)||void 0===t?void 0:t.streamInfo)||void 0===n?void 0:n.streamInfo)||void 0===i?void 0:i.webSdkSettings)||void 0===s?void 0:s.customization)&&void 0!==r?r:{},p=null!=e?e:{position:h||l||"Bottom-Right",orientation:u||d||"Vertical",order_reverse:null!==(o=null!=m?m:c)&&void 0!==o&&o},g=null===(a=null==this?void 0:this.stream)||void 0===a?void 0:a.videoElementParent,f=null==g?void 0:g.parentElement;if(!f)return;const v=f.querySelector("#uiFeatures");if(v&&(Object.values(y.a.uiFeatures.buttons_position).forEach(e=>v.classList.remove(e)),Object.values(y.a.uiFeatures.buttons_orientation).forEach(e=>v.classList.remove(e)),v.classList.remove(y.a.uiFeatures.buttons_reverse),v.classList.add(y.a.uiFeatures.buttons_position[p.position]),v.classList.add(y.a.uiFeatures.buttons_orientation[p.orientation]),p.order_reverse&&v.classList.add(y.a.uiFeatures.buttons_reverse),"Bottom-Left"===p.position)){const e=document.getElementById("connection");e&&(e.style.right="10px",e.style.left="auto")}}uiDefaultButtonVisibilty(e,t){var n,i,s;if(null==this?void 0:this.parentElement){const r=null===(n=null==this?void 0:this.parentElement)||void 0===n?void 0:n.querySelector(t);if(!1===(null===(s=null===(i=null==this?void 0:this.stream)||void 0===i?void 0:i.config)||void 0===s?void 0:s.settings[e])&&r){null==r||r.remove();const t=this.uiFeaturesElement,n=t.querySelector("#stats-panel"),i=t.querySelector("#settings-panel");t&&("infoButton"===e&&(null==n||n.remove()),"settingsButton"===e&&(null==i||i.remove()))}const o=/iPad|iPhone|iPod/.test(null===navigator||void 0===navigator?void 0:navigator.userAgent);"fullscreenButton"===e&&o&&r&&(null==r||r.remove())}}preventDefaultKeyboardEvents(){this.videoElementParent&&(this.videoElementParent.addEventListener("keydown",function(e){"Tab"!==e.key&&" "!==e.key&&"Spacebar"!==e.key||(e.preventDefault(),e.stopPropagation())},!0),this.uiFeaturesElement.querySelectorAll("button").forEach(e=>{e.addEventListener("keydown",function(t){" "!==t.key&&"Spacebar"!==t.key||(t.preventDefault(),e.blur())})}))}autoPlayHandler(e){var t;const{videoPlayer:n}=null==this?void 0:this.webRtcController,i=null===(t=null==e?void 0:e.streamInfo)||void 0===t?void 0:t.autoPlay,s=null==n?void 0:n.isPaused();if(i&&s&&n){const e=null==n?void 0:n.getVideoElement();if(e){const t=null==e?void 0:e.parentElement;if(t){const e=null==t?void 0:t.querySelector("#playOverlay");e&&(null==e||e.remove())}null==e||e.play()}}}getApplicationResponse(e){var t;null===(t=null==this?void 0:this.stream)||void 0===t||t.applicationResponseHandler.add(e)}onApplicationResponse(e){return this.stream.applicationResponseHandler.add(e),()=>this.stream.applicationResponseHandler.remove(e)}applyArcwareStyles(){const e=new d.e(y.y);null==e||e.applyStyleSheet()}emitUIInteraction(e){var t;e&&(null===(t=null==this?void 0:this.stream)||void 0===t||t.emitUIInteraction(e))}addTextToConnectOverlay(){var e,t,n,i;if(!(null===(n=null===(t=null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.initialSettings)||void 0===n?void 0:n.AutoConnect)&&this.videoElementParent){const e=null===(i=null==this?void 0:this.parentElement)||void 0===i?void 0:i.querySelector("#connectOverlay");if(e){const t=document.createElement("div");t.className="connection-text",e.appendChild(t);const n=document.createElement("p");n.className="title",n.textContent="Click on the button below to start the connection to the streaming.",t.appendChild(n);const i=document.createElement("p");i.className="subtitle",i.textContent="After clicking the button, it may take a few seconds for the connection to start. Don't worry if you don't see an immediate reaction.",t.appendChild(i)}}}syncAfkOverlayFromWhiteLabelling(){var e;const t=null===(e=this.stream.config.settings.whiteLabelling)||void 0===e?void 0:e.hideAfkOverlay;this.showAfkOverlay=t?(e,t)=>{}:this.baseShowAfkOverlay}}T.Flags=(i=class{},(0,s.yV)(i,"Flags"),i.noSession="noSession",i)},6063(e,t,n){n.d(t,{a:()=>l});var i=n(2886),s=n(2451),r=n(6689);let o=null,a=null;function l(e,t,n=!1,l=!1){const{shareId:d,projectId:c}=e,{PixelStreaming:h,Config:u}=(0,r.J)(new i.g({useUrlParams:!0===(null==t?void 0:t.useUrlParams),initialSettings:null==t?void 0:t.initialSettings,settings:Object.assign({shareId:d,projectId:c},null==t?void 0:t.settings),customization:null==t?void 0:t.customization,envName:null==t?void 0:t.envName}),void 0,{forceRefresh:n,allowMultipleInstances:l});if(l)return{Config:u,PixelStreaming:h,Application:new s.I({stream:h})};if(o&&a===h&&!n)return{Config:u,PixelStreaming:h,Application:o};if(o)try{o.stream.disconnect()}catch(e){}const m=new s.I({stream:h});return o=m,a=h,{Config:u,PixelStreaming:h,Application:m}}},5007(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this.arcwareLogoLoader=this.createArcwareLogoLoader()}createArcwareLogoLoader(){const e=document.createElement("div");return e.classList.add("arcware-logo-loader"),e.innerHTML=this.getSvg(),e}setHostElement(e){this._hostEl=e}setImage(e){var t,n;if(this._hostEl){if(!this._imgEl){const e=document.createElement("img");e.alt="Loading",e.style.display="none",this._hostEl.appendChild(e),this._imgEl=e}if(e&&e.trim()){null===(t=this._hostEl)||void 0===t||t.classList.add("aw-custom-loader"),this._imgEl.src!==e&&(this._imgEl.src=e),this._imgEl.style.display="";const n=this._hostEl.querySelector("svg");n&&(n.style.display="none")}else{null===(n=this._hostEl)||void 0===n||n.classList.remove("aw-custom-loader"),this._imgEl.style.display="none";const e=this._hostEl.querySelector("svg");e&&(e.style.display="")}}}setFade(e){if(!this._hostEl)return;const t=Number(e)||0;t>0?(this._hostEl.style.setProperty("--aw-fade",`${t}ms`),this._hostEl.classList.add("pulse")):(this._hostEl.classList.remove("pulse"),this._hostEl.style.removeProperty("--aw-fade"))}getSvg(){return'\n <svg width="42" height="80" viewBox="0 0 42 80" xmlns="http://www.w3.org/2000/svg">\n <style>\n @keyframes ripple-1-down {\n 0%, 50% { translate: 0 0; }\n 60%, 100% { translate: 0 5px; }\n }\n @keyframes ripple-1-up {\n 0%, 50% { translate: 0 0; }\n 60%, 100% { translate: 0 -5px; }\n }\n @keyframes ripple-2-down {\n 0%, 55% { translate: 0 0; }\n 65%, 100% { translate: 0 5px; }\n }\n @keyframes ripple-3-down {\n 0%, 60% { translate: 0 0; }\n 70%, 100% { translate: 0 5px; }\n }\n @keyframes ripple-3-up {\n 0%, 60% { translate: 0 0; }\n 70%, 100% { translate: 0 -5px; }\n }\n @keyframes ripple-4-up {\n 0%, 65% { translate: 0 0; }\n 75%, 100% { translate: 0 -5px; }\n }\n\n .ripple-1-down { animation: ripple-1-down 0.6s infinite alternate; }\n .ripple-1-up { animation: ripple-1-up 0.6s infinite alternate; }\n .ripple-2-down { animation: ripple-2-down 0.6s infinite alternate; }\n .ripple-3-down { animation: ripple-3-down 0.6s infinite alternate; }\n .ripple-3-up { animation: ripple-3-up 0.6s infinite alternate; }\n .ripple-4-up { animation: ripple-4-up 0.6s infinite alternate; }\n </style>\n\n <g class="ripple-1-down" fill="#f1f1f1">\n <rect y="38" width="6" height="22" />\n </g>\n <g class="ripple-1-up" fill="#f1f1f1">\n <rect y="10" width="6" height="22" />\n </g>\n <g class="ripple-2-down" fill="#f1f1f1">\n <rect x="12" width="6" height="32" />\n <rect x="12" y="38" width="6" height="22" />\n </g>\n <g class="ripple-3-down" fill="#f1f1f1">\n <rect x="24" y="38" width="6" height="22" />\n </g>\n <g class="ripple-3-up" fill="#f1f1f1">\n <rect x="24" y="10" width="6" height="22" />\n </g>\n <g class="ripple-4-up" fill="#f1f1f1">\n <rect x="36" y="10" width="6" height="22" />\n <rect x="36" y="38" width="6" height="32" />\n </g>\n </svg>\n '}}},9399(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this.audioIconUnmuted=this.createAudioIconUnmuted(),this.audioIconMuted=this.createAudioIconMuted()}createAudioIconUnmuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","audioIconUnmuted"),t.setAttributeNS(null,"x","31px"),t.setAttributeNS(null,"y","28px"),t.setAttributeNS(null,"viewBox","0 0 31 28");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M21.0008,0.0720318C20.556,-0.117811,20.0379,0.0805569,19.8435,0.514827C19.6492,0.949098,19.8522,1.45512,20.297,1.6449C25.1233,3.70434,28.242,8.35761,28.2422,13.4998C28.2422,18.6423,25.1234,23.2957,20.2966,25.3551C19.8518,25.5448,19.6488,26.0508,19.8431,26.4852C19.9874,26.8077,20.3102,27,20.649,27C20.7664,27,20.8859,26.9769,21.0004,26.928C26.4674,24.5954,30,19.3246,30,13.4997C29.9998,7.67531,26.4674,2.40462,21.0008,0.0720318Z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttributeNS(null,"d","M21.2351,6.69434C20.8735,6.37822,20.3179,6.4082,19.9941,6.76134C19.6703,7.11454,19.701,7.65706,20.0627,7.97324C21.6712,9.37932,22.5937,11.3937,22.5937,13.5C22.5937,15.6062,21.6711,17.6206,20.0627,19.0267C19.701,19.3428,19.6703,19.8854,19.9941,20.2386C20.1677,20.4279,20.4079,20.5244,20.6492,20.5244C20.8579,20.5244,21.0674,20.4522,21.2351,20.3056C23.2157,18.5744,24.3515,16.0937,24.3515,13.4999C24.3515,10.9061,23.2156,8.42553,21.2351,6.69434Z");const r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttributeNS(null,"d","M15.3973,2.16277C15.1018,2.01658,14.7473,2.04502,14.4803,2.23623L7.65176,7.12598H0.878906C0.393516,7.12598,0,7.51024,0,7.98422V19.0155C0,19.4895,0.393516,19.8738,0.878906,19.8738H7.6517L14.4802,24.7637C14.6339,24.8737,14.8164,24.9298,15.0001,24.9298C15.1356,24.9298,15.2718,24.8992,15.3973,24.8371C15.6927,24.6909,15.8789,24.395,15.8789,24.0716V2.9282C15.8789,2.60482,15.6927,2.30884,15.3973,2.16277ZM14.121,22.3778L8.45918,18.3234C8.30842,18.2154,8.12637,18.1572,7.93939,18.1572H1.75781V8.84246H7.93939C8.12631,8.84246,8.30842,8.78422,8.45912,8.67636L14.121,4.62197V22.3778Z"),n.appendChild(i),n.appendChild(s),n.appendChild(r),t}createAudioIconMuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","audioIconMuted"),t.setAttributeNS(null,"x","31px"),t.setAttributeNS(null,"y","28px"),t.setAttributeNS(null,"viewBox","0 -1 31 28");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M16.3501,0.829286C16.046,0.678799,15.6811,0.708072,15.4062,0.904912L8.37681,5.93848H1.40476C0.90509,5.93848,0.5,6.33404,0.5,6.82196V18.1777C0.5,18.6657,0.90509,19.0612,1.40476,19.0612H8.37675L15.4061,24.0949C15.5643,24.2082,15.7522,24.2659,15.9412,24.2659C16.0808,24.2659,16.221,24.2344,16.3501,24.1705C16.6542,24.02,16.8459,23.7154,16.8459,23.3825V1.61724C16.8459,1.28434,16.6542,0.979655,16.3501,0.829286ZM15.0364,21.6389L9.20798,17.4652C9.05278,17.3541,8.86538,17.2942,8.6729,17.2942H2.30951V7.70544H8.6729C8.86532,7.70544,9.05278,7.64548,9.20792,7.53446L15.0364,3.36082V21.6389Z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");return s.setAttributeNS(null,"d","M25.2799,11.7634L21.8442,8.32748C21.6206,8.10399,21.6206,7.74264,21.8442,7.51915C22.0676,7.29566,22.429,7.29566,22.6525,7.51915L26.0883,10.955L29.524,7.51915C29.7476,7.29566,30.1088,7.29566,30.3323,7.51915C30.5559,7.74264,30.5559,8.10399,30.3323,8.32748L26.8966,11.7634L30.3323,15.1992C30.5559,15.4227,30.5559,15.7841,30.3323,16.0076C30.2209,16.1191,30.0745,16.1751,29.9281,16.1751C29.7818,16.1751,29.6355,16.1191,29.524,16.0076L26.0883,12.5717L22.6525,16.0076C22.541,16.1191,22.3947,16.1751,22.2483,16.1751C22.102,16.1751,21.9556,16.1191,21.8442,16.0076C21.6206,15.7841,21.6206,15.4227,21.8442,15.1992L25.2799,11.7634Z"),n.appendChild(i),n.appendChild(s),t}}},2352(e,t,n){n.d(t,{T:()=>s});var i=n(9399);class s{constructor(e){this.stream=e,this.setAudioMutedByDefault(),this.button=this.createButton(),this.audioIcon=new i.O,this.tooltipText=this.createTooltipText(),this.button.appendChild(this.tooltipText),this.button.appendChild(this.audioIcon.audioIconMuted),this.button.appendChild(this.audioIcon.audioIconUnmuted),this.audioIcon.audioIconUnmuted.style.display="none",this.button.addEventListener("click",this.toggleAudio.bind(this)),this.onVolumeChange=this.onVolumeChange.bind(this),this.stream.webRtcController.videoPlayer.videoElement.addEventListener("volumechange",this.onVolumeChange.bind(this))}setAudioMutedByDefault(){const e=this.stream.videoElementParent;if(e){const t=e.querySelector("video");t&&this.stream.toggleAudio(t,!0)}}createButton(){var e;const t=document.createElement("button");return null==t||t.setAttribute("id","audioBtn"),null==t||t.setAttribute("type","button"),null===(e=null==t?void 0:t.classList)||void 0===e||e.add("UiTool"),t}createTooltipText(){var e;const t=document.createElement("span");return null===(e=null==t?void 0:t.classList)||void 0===e||e.add("tooltiptext"),t.innerHTML="Mute/Unmute",t}toggleAudio(){const e=this.stream.videoElementParent;if(e){const t=e.querySelector("video");if(t){const e=!t.muted;this.stream.toggleAudio(t,e),this.updateAudioIcon(e)}}}updateAudioIcon(e){e?(this.audioIcon.audioIconUnmuted.style.display="none",this.audioIcon.audioIconMuted.style.display="block"):(this.audioIcon.audioIconMuted.style.display="none",this.audioIcon.audioIconUnmuted.style.display="block")}get element(){return this.button}onVolumeChange(e){const t=e.target;this.updateAudioIcon(t.muted)}}},8403(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this.loveLettersRoot=null}addLetter(e,t){var n;const i=document.querySelector("#letters-wrapper"),s=document.createElement("p");s.textContent=e,null===(n=null==s?void 0:s.classList)||void 0===n||n.add("letter-animation","letter-animation-enter"),i&&(i.appendChild(s),this.updateOpacity(t)),setTimeout(()=>{var e;null===(e=null==s?void 0:s.classList)||void 0===e||e.remove("letter-animation-enter"),null==s||s.addEventListener("transitioned",()=>{this.updateOpacity(t)})},1e3)}updateOpacity(e){const t=document.querySelectorAll("#letters-block p"),n=1.2/t.length;t.forEach((i,s)=>{var r;const o=i,a=.6-(t.length-1-s)*n*.6;e!==s+1?(o.style.opacity=Math.max(0,a).toString(),null===(r=null==o?void 0:o.classList)||void 0===r||r.add("letter-animation-exit")):o.style.opacity="1"})}}},3389(e,t,n){n.d(t,{K:()=>r});var i=n(223),s=n(9744);class r{constructor(e){this.stream=e,this.setMicMutedByDefault(),this.button=this.createButton(),this.micIcon=new s.L,this.tooltipText=this.createTooltipText(),this.button.appendChild(this.tooltipText),this.button.appendChild(this.micIcon.micIconMuted),this.button.appendChild(this.micIcon.micIconUnmuted),this.micIcon.micIconUnmuted.style.display="none",this.button.addEventListener("click",this.toggleMic.bind(this))}setMicMutedByDefault(){const e=this.stream.videoElementParent;e&&e.querySelector("video")&&this.stream.toggleMic(!1,!0)}createButton(){var e;const t=document.createElement("button");return t.setAttribute("id","micBtn"),t.setAttribute("type","button"),null===(e=null==t?void 0:t.classList)||void 0===e||e.add("UiTool"),t}createTooltipText(){var e;const t=document.createElement("span");return null===(e=null==t?void 0:t.classList)||void 0===e||e.add("tooltiptext"),t.innerHTML="Mic on/off",t}toggleMic(){var e,t;const n=null===(t=null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.isFlagEnabled(i.iI.UseMic);this.stream.toggleMic(!n,!1),this.updateMicIcon(!n)}updateMicIcon(e){e?(this.micIcon.micIconMuted.style.display="none",this.micIcon.micIconUnmuted.style.display="block"):(this.micIcon.micIconUnmuted.style.display="none",this.micIcon.micIconMuted.style.display="block")}get element(){return this.button}}},9744(e,t,n){n.d(t,{L:()=>i});class i{constructor(){this.micIconUnmuted=this.createMicIconUnmuted(),this.micIconMuted=this.createMicIconMuted()}createMicIconUnmuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","micIconUnmuted"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 -1 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M12 14c1.66,0,2.99-1.34,2.99-3L15,5c0-1.66-1.34-3-3-3S9,3.34,9,5v6c0,1.66,1.34,3,3,3zm5.3-3c0,3-2.54,5.1-5.3,5.1S6.7,14,6.7,11H5c0,3.41,2.72,6.23,6,6.72V21h2v-3.28c3.28-.48,6-3.3,6-6.72h-1.7z"),n.appendChild(i),t}createMicIconMuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","micIconMuted"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 -1 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M19,11h-1.7c0,.74-.16,1.43-.43,2.05l1.23,1.23c.56-.98.9-2.09.9-3.28zm-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9,3.34,9,5v.18l5.98,5.99zM4.27,3,3,4.27l6.01,6.01V11c0,1.66,1.33,3,2.99,3,.22,0,.44-.03.65-.08l1.66,1.66c-.71.33-1.5.52-2.31.52-2.76,0-5.3-2.1-5.3-5.1H5c0,3.41,2.72,6.23,6,6.72V21h2v-3.28c.91-.13,1.77-.45,2.54-.9L19.73,21,21,19.73,4.27,3z"),n.appendChild(i),t}}},3910(e,t,n){n.d(t,{j:()=>s});var i=n(9744);class s{constructor(e){this.overlay=null,this.stream=e,this.micIcon=new i.L,this.parentElement=null==e?void 0:e.videoElementParent}createOverlay(){var e,t;if(this.parentElement){this.overlay&&(this.parentElement.removeChild(this.overlay),this.overlay=null),this.overlay=document.createElement("div"),this.overlay.id="microphoneOverlay",null===(t=null===(e=this.overlay)||void 0===e?void 0:e.classList)||void 0===t||t.add("hiddenState"),this.overlay.appendChild(this.micIcon.micIconUnmuted),this.overlay.appendChild(this.micIcon.micIconMuted),this.micIcon.micIconMuted.style.display="none";const n=document.createElement("div");n.className="title",n.textContent="Enabling microphone...";const i=document.createElement("p");i.textContent="Please check your browser's prompt to allow microphone access. You may also need to re-enable the sound.",this.overlay.appendChild(n),this.overlay.appendChild(i),this.parentElement.appendChild(this.overlay)}}toggleMessage(e){if(this.parentElement&&this.overlay){const t=this.overlay.querySelector(".title"),n=this.overlay.querySelector("p");this.micIcon.micIconMuted.style.display=e?"none":"block",this.micIcon.micIconUnmuted.style.display=e?"block":"none",t&&(t.textContent=e?"Enabling microphone":"Disabling microphone"),n&&(n.textContent=e?"Please check your browser's prompt to allow microphone access. You may also need to re-enable the sound.":"Please wait. You may need to re-enable the sound.")}}toggleVisibility(e){var t,n,i,s,r,o,a,l,d,c,h,u,m;if(this.parentElement){const p=null===(t=null==this?void 0:this.parentElement)||void 0===t?void 0:t.querySelector("#infoOverlay"),g=null===(n=null==this?void 0:this.parentElement)||void 0===n?void 0:n.querySelector("#disconnectOverlay"),f=null===(i=null==this?void 0:this.parentElement)||void 0===i?void 0:i.querySelector("#errorOverlay"),v="mic-overlay-is-visible";this.overlay&&p&&g&&f&&(e?(null===(s=null==p?void 0:p.classList)||void 0===s||s.add(v),null===(r=null==g?void 0:g.classList)||void 0===r||r.add(v),null===(o=null==f?void 0:f.classList)||void 0===o||o.add(v),null===(l=null===(a=null==this?void 0:this.overlay)||void 0===a?void 0:a.classList)||void 0===l||l.remove("hiddenState")):(null===(c=null===(d=null==this?void 0:this.overlay)||void 0===d?void 0:d.classList)||void 0===c||c.add("hiddenState"),null===(h=null==p?void 0:p.classList)||void 0===h||h.remove(v),null===(u=null==g?void 0:g.classList)||void 0===u||u.remove(v),null===(m=null==f?void 0:f.classList)||void 0===m||m.remove(v)))}}}},761(e,t,n){n.d(t,{u:()=>i});class i{constructor(){this.playIcon=this.createPlayIcon()}createPlayIcon(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","playIcon"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 0 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M8 5v14l11-7z"),n.appendChild(i),t}}},8882(e,t,n){n.d(t,{Z:()=>r});var i=n(99),s=n(761);class r{constructor(e){this.isStreaming=!0,this.stream=e,this.button=this.createButton(),this.stopIcon=new i.w,this.playIcon=new s.u,this.tooltipText=this.createTooltipText(),this.button.appendChild(this.tooltipText),this.button.appendChild(this.stopIcon.stopIcon),this.button.addEventListener("click",this.toggleStreaming.bind(this)),e.onStreamingStateChange(this.updateButtonState.bind(this))}createButton(){var e;const t=document.createElement("button");return null==t||t.setAttribute("id","stopBtn"),null==t||t.setAttribute("type","button"),null===(e=null==t?void 0:t.classList)||void 0===e||e.add("UiTool"),t}createTooltipText(){var e;const t=document.createElement("span");return null===(e=null==t?void 0:t.classList)||void 0===e||e.add("tooltiptext"),t.innerHTML="Disconnect",t}toggleStreaming(){this.isStreaming=!this.isStreaming,this.updateButtonIcon(),this.isStreaming?this.stream.reconnect():this.stream.disconnect()}updateButtonIcon(){const e=this.isStreaming?this.stopIcon.stopIcon:this.playIcon.playIcon,t=this.isStreaming?"Disconnect":"Reconnect";this.tooltipText.innerHTML=t,this.button.firstChild&&this.button.removeChild(this.button.children[1]),this.button.appendChild(e)}get element(){return this.button}updateButtonState(e){this.isStreaming=e,this.updateButtonIcon()}}},99(e,t,n){n.d(t,{w:()=>i});class i{constructor(){this.stopIcon=this.createStopIcon()}createStopIcon(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","stopIcon"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 -1 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),null==t||t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M6 6h12v12H6z"),n.appendChild(i),t}}},8816(e,t,n){n.d(t,{a:()=>i,y:()=>s});const i={uiFeatures:{buttons_position:{"Top-Left":"controls__position_tl","Top-Right":"controls__position_tr","Bottom-Left":"controls__position_bl","Bottom-Right":"controls__position_br"},buttons_orientation:{Horizontal:"controls__orientation_h",Vertical:"controls__orientation_v"},buttons_reverse:"controls__order_reverse"}},s={customStyles:{":root":{"--color0":"#18181A !important","--color1":"#000000","--color2":"#FFFFFF","--color3":"#DAF693 !important","--color4":"#35b350","--color5":"#ffab00","--color6":"#858588 !important","--color7":"#B5B5B7 !important","--color8":"#41008c","--color9":"#3e0070","--color10":"#2e0052","--color11":"rgba(65,0,139,1) !important","--color12":"#222224 !important","--color13":"#f0f0f2 !important","--colorBoxShadow":"rgba(0, 0, 0, 0.20) !important"},".aw-splash":{backgroundRepeat:"no-repeat",backgroundPosition:"center center",backgroundSize:"contain",backgroundColor:"var(--color0)"},"@keyframes aw-loader-fade":{from:{opacity:.25},to:{opacity:1}},"#uiFeatures #controls":{display:"flex",flexDirection:"column-reverse",position:"absolute",pointerEvents:"auto",zIndex:99999,gap:"0.5rem"},"#uiFeatures #controls > *":{marginBottom:"0 !important"},"#playerUI *":{fontFamily:"system-ui"},"#shared-stream-container":{boxSizing:"border-box"},"#shared-stream-container::-webkit-scrollbar":{width:"10px"},"#shared-stream-container::-webkit-scrollbar-track":{background:"var(--color13)",opacity:"0.5",borderRadius:"30px",borderTop:"20px solid var(--color0)",borderRight:"5px solid var(--color0)",borderBottom:"20px solid var(--color0)",borderLeft:"5px solid var(--color0)"},"#shared-stream-container::-webkit-scrollbar-track-piece":{background:"transparent"},"#shared-stream-container::-webkit-scrollbar-thumb":{background:"var(--color13)",width:"8px",borderRight:"2px solid var(--color0)",borderLeft:"2px solid var(--color0)",transition:"all ease-in-out 0.3s",borderRadius:"7px"},"#shared-stream-container::-webkit-scrollbar-thumb:hover":{transition:"all ease-in-out 0.3s",background:"var(--color3)"},"#playerUI, #videoElementParent":{position:"absolute",width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",top:0,right:0,bottom:0,left:0,margin:"auto",boxSizing:"border-box",pointerEvents:"all"},"#streamingVideo":{maxWidth:"100%",maxHeight:"100%",boxSizing:"border-box",background:"#18181A"},"#uiFeatures.controls__position_tl #controls":{top:"10px",left:"20px",bottom:"auto",right:"auto"},"#uiFeatures.controls__position_tr #controls":{top:"10px",right:"20px",bottom:"auto",left:"auto"},"#uiFeatures.controls__position_bl #controls":{bottom:"10px",left:"20px",top:"auto",right:"auto"},"#uiFeatures.controls__position_br #controls":{bottom:"10px",right:"20px",top:"auto",left:"auto"},"#uiFeatures.controls__orientation_h #controls":{flexDirection:"row-reverse"},"#uiFeatures.controls__orientation_h.controls__order_reverse #controls":{flexDirection:"row"},"#uiFeatures.controls__orientation_v #controls":{flexDirection:"column-reverse"},"#uiFeatures.controls__orientation_v.controls__order_reverse #controls":{flexDirection:"column"},"#uiFeatures #connection":{bottom:"5px",left:"10px",width:"2.5rem",height:"2.5rem"},"#uiFeatures button":{backgroundColor:"var(--color12)",border:"none",position:"relative",width:"45px",height:"45px",padding:"0.5rem",textAlign:"center",cursor:"pointer",display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",boxShadow:"0px 0px 24px 0px var(--colorBoxShadow)",borderRadius:"3px",outline:"none"},"#uiFeatures button:hover, #uiFeatures button:active":{padding:"0 !important",border:"none"},"#uiFeatures button #audioIconMuted, #uiFeatures button #audioIconUnmuted, #uiFeatures button #micIconMuted, #uiFeatures button #micIconUnmuted":{width:"31px",height:"28px"},"#uiFeatures button #maximizeIcon, #uiFeatures button #minimizeIcon":{width:"25px",height:"25px"},"#stopIcon, #playIcon":{width:"30px",height:"30px"},"#uiFeatures button .tooltiptext":{right:"125%",left:"auto",boxShadow:"0px 0px 24px 0px var(--colorBoxShadow)",borderRadius:"3px",backgroundColor:"var(--color12)",width:"95px",visibility:"hidden!important"},"@media (hover: hover) and (pointer: fine)":{"#uiFeatures button:hover .tooltiptext":{visibility:"visible!important"}},"#controls>*":{marginBottom:"0.5rem",display:"block",lineHeight:"1.75rem",padding:"0.5rem",backgroundColor:"var(--color12)"},"#uiFeatures #settingsIcon, #uiFeatures #statsIcon":{width:"27px",height:"27px"},".svgIcon":{fill:"var(--color13)"},"#uiFeatures button:hover .svgIcon, #uiFeatures button:active .svgIcon":{fill:"var(--color12)"},".tgl-switch .tgl-slider, .tgl-flat:checked+.tgl-slider":{border:"3px solid transparent"},".tgl-switch .tgl-slider":{background:"none"},".tgl-switch .tgl-slider::before":{content:"''",display:"block",background:"var(--color6)",position:"absolute",height:"50%",width:"90%",borderRadius:"5px",margin:"auto",top:"0",bottom:"0",left:"0",right:"0"},".tgl-switch .tgl-slider::after":{height:"13px",width:"13px",borderRadius:"50%",top:"-2px",left:"-1%"},".tgl-flat:checked+.tgl-slider:after":{left:"62%",background:"var(--color3)"},".form-control":{backgroundColor:"transparent",border:"1px solid var(--color13)",borderRadius:"2px",color:"var(--color13)",textAlign:"left",fontFamily:"inherit",padding:"5px 15px "},".btn-flat":{background:"var(--color3)",color:"var(--color12)",border:"none",padding:"7px 50px",cursor:"pointer",borderRadius:"4px",textTransform:"uppercase",minWidth:"175px"},".btn-flat:disabled":{background:"var(--color7)",borderColor:"var(--color3)",color:"var(--color3)",cursor:"default"},".btn-flat:focus":{outline:"none"},".arcware-logo-loader":{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",width:"12.5%",height:"12.5%",margin:"0 auto",boxSizing:"border-box"},".arcware-logo-loader img":{maxWidth:"40%",maxHeight:"40%",objectFit:"contain",objectPosition:"center center",display:"block",margin:0,verticalAlign:"middle"},".arcware-logo-loader.pulse img":{animation:"aw-loader-fade var(--aw-fade,1200ms) ease-in-out infinite alternate"},".arcware-logo-loader.aw-custom-loader":{width:"auto !important",height:"auto !important"},".arcware-logo-loader.aw-custom-loader img":{display:"block",width:"auto",height:"auto",maxWidth:"80%",maxHeight:"80%",objectFit:"contain",margin:"0 auto"},"#playOverlay img#playButton":{width:"5%"},"#disconnectOverlay, #errorOverlay":{textTransform:"initial",textAlign:"center",fontSize:"20px",lineHeight:2.5},"#disconnectOverlay .clickableState":{textTransform:"initial",textAlign:"center",color:"#DAF693",padding:"5px",fontSize:"18px",border:"1px solid #DAF693",margin:"25px auto 0",width:"180px"},"#afkOverlay":{background:"none",transition:"all ease-in-out 0.5s",opacity:1,pointerEvents:"initial"},"#afkOverlayInner":{textTransform:"initial",background:"#18181A",padding:"20px 10px 30px",fontSize:"18px",width:"360px",textAlign:"center",lineHeight:2.5},"#afkOverlayInner center::first-line":{textTransform:"uppercase",color:"#FF8461",fontWeight:"bold",fontSize:"24px"},"#afkOverlayInner #afkCountDownNumber":{color:"#DAF693",fontSize:"26px",lineHeight:"22px"},"#afkOverlayInner center .retry-button":{textTransform:"initial",textAlign:"center",color:"#DAF693",padding:"5px",fontSize:"18px",border:"1px solid #DAF693",margin:"25px auto 0",width:"180px"},"#connectOverlay #connectButton":{textTransform:"initial",textAlign:"center",color:"#DAF693",padding:"5px 5px 8px",fontSize:"18px",border:"1px solid #DAF693",margin:"25px auto 0",width:"180px"},"#connectOverlay .connection-text":{textTransform:"initial",textAlign:"center",margin:"25px auto 0"},"#connectOverlay .connection-text .title":{color:"#ffffff",fontSize:"18px",margin:"5px 0"},"#connectOverlay .connection-text .subtitle":{color:"#ffffff",opacity:.5,fontSize:"12px",margin:"10px 0"},"#infoOverlay.hiddenState":{display:"none"},"#disconnectOverlay, #playOverlay, #errorOverlay, #microphoneOverlay, #connectOverlay":{background:"#18181A",display:"flex",transition:"all ease-in-out 0.5s",opacity:1,pointerEvents:"initial"},"#microphoneOverlay":{textTransform:"initial",padding:"20px 30px",fontSize:"14px",height:"230px",width:"360px",textAlign:"center",lineHeight:1.25,position:"absolute",margin:"auto",top:"0",bottom:"0",left:"0",right:"0",justifyContent:"center",alignItems:"center",flexDirection:"column",zIndex:99999},"#microphoneOverlay .title":{fontSize:"24px",position:"relative",marginBottom:"20px",color:"#F0F0F2"},"#microphoneOverlay .title:after":{content:"''",display:"inline-block",animation:"dotty steps(1,end) 1s infinite",position:"absolute"},"#microphoneOverlay p":{margin:0,color:"#858588"},"#microphoneOverlay svg":{height:"65px",marginBottom:"15px",marginTop:"-5px"},"#microphoneOverlay .svgIcon":{fill:"#DAF693"},"#disconnectOverlay.hiddenState, #playOverlay.hiddenState, #errorOverlay.hiddenState, #afkOverlay.hiddenState, #microphoneOverlay.hiddenState":{opacity:0,pointerEvents:"none"},"#disconnectOverlay.mic-overlay-is-visible, #errorOverlay.mic-overlay-is-visible, #infoOverlay.mic-overlay-is-visible":{opacity:0,pointerEvents:"none"},"#infoOverlay.hiddenState, #connectOverlay.hiddenState":{display:"none"},"#connectOverlay":{display:"flex",flexDirection:"column-reverse",alignItems:"center",justifyContent:"center"},"#infoOverlay":{display:"none"},".love-letters-box-root":{display:"flex",position:"absolute",width:"100%",height:"100%",color:"#ffffff",justifyContent:"center",alignItems:"center",flexDirection:"column",background:"#18181A",zIndex:1},".love-letters-box-root.fade-out":{opacity:0,transition:"opacity 0.5s"},"#letters-block":{position:"absolute",top:0,left:0,right:0,bottom:0,margin:"auto",color:"#ffffff",zIndex:4,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",fontSize:"16px",textTransform:"initial",textAlign:"center"},"#letters-wrapper":{height:"77px",overflow:"hidden",position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-end",marginTop:"10px",paddingBottom:"2px"},"#letters-wrapper p":{textAlign:"center",lineHeight:1.25,fontSize:"16px"},".letter-animation:nth-last-of-type(1)::after":{display:"inline-block",animation:"dotty steps(1,end) 1s infinite",content:"''",position:"absolute"},".letter-animation":{transition:"all 0.5s ease-in-out",transformOrigin:"bottom",margin:"0 auto"},".letter-animation-enter":{animation:"fadeInUp 0.75s ease-out"},".letter-animation-exit":{opacity:0,scale:.9,transition:"all ease-in-out 1s",margin:0},"@keyframes dotty":{"0%":{content:"''"},"25%":{content:"'.'"},"50%":{content:"'..'"},"75%":{content:"'...'"},"100%":{content:"''"}},"@keyframes fadeInUp":{from:{opacity:0,transform:" translateY(5px)",scale:.9},to:{opacity:1,transform:"translateY(0)",scale:1}},".hidden":{display:"none",opacity:0},".visible":{display:"block",opacity:1,transition:"opacity 1s ease-out"},".love-letters-box-root .arcware-logo-loader":{display:"flex",alignItems:"center",justifyContent:"center"},".love-letters-box-root .arcware-logo-loader.aw-custom-loader":{width:"auto !important",height:"auto !important"},".love-letters-box-root .arcware-logo-loader.aw-custom-loader img":{display:"block",margin:"0 auto",width:"min(40vmin, 40vw)",height:"auto",objectFit:"contain",objectPosition:"center center"},".love-letters-box-root .arcware-logo-loader.aw-custom-loader img.alt-40pct":{width:"40%",maxWidth:"100%",height:"auto"}}}},9417(e,t,n){function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{A:()=>i})},2901(e,t,n){n.d(t,{A:()=>r});var i=n(9922);function s(e,t){for(var n=0;n<t.length;n++){var s=t[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,(0,i.A)(s.key),s)}}function r(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}},8168(e,t,n){function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},i.apply(null,arguments)}n.d(t,{A:()=>i})},7387(e,t,n){n.d(t,{A:()=>s});var i=n(3662);function s(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,i.A)(e,t)}},8587(e,t,n){function i(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}n.d(t,{A:()=>i})},3662(e,t,n){function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}n.d(t,{A:()=>i})},2327(e,t,n){n.d(t,{A:()=>s});var i=n(2284);function s(e,t){if("object"!=(0,i.A)(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=(0,i.A)(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}},9922(e,t,n){n.d(t,{A:()=>r});var i=n(2284),s=n(2327);function r(e){var t=(0,s.A)(e,"string");return"symbol"==(0,i.A)(t)?t:t+""}},2284(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}n.d(t,{A:()=>i})},1635(e,t,n){function i(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function s(e,t,n,i){return new(n||(n=Promise))(function(s,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}l((i=i.apply(e,t||[])).next())})}n.d(t,{sH:()=>s,yV:()=>i}),Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var i={};n.d(i,{B2:()=>d.B2,BN:()=>d.BN,DY:()=>d.DY,IR:()=>r.I,J1:()=>l.J,Mr:()=>d.Mr,Ql:()=>d.Ql,U3:()=>d.U3,Vn:()=>d.Vn,ZB:()=>d.ZB,aU:()=>s.a,gh:()=>a.g,jj:()=>o.j,oU:()=>o.o,ot:()=>d.ot,wL:()=>d.wL,xI:()=>d.xI});var s=n(6063),r=n(2451),o=n(272),a=n(2886),l=n(6689),d=n(6246);const c=i.IR,h=i.gh,u=i.aU,m=i.oU,p=i.J1,g=i.Vn,f=i.jj,v=i.xI,y=i.Ql,b=i.Mr,w=i.DY,S=i.wL,C=i.B2,E=i.BN,T=i.U3,x=i.ot,I=i.ZB;export{c as ArcwareApplication,h as ArcwareConfig,u as ArcwareInit,m as ArcwarePixelStreaming,p as CoreSetup,g as Send,f as WebsocketState,v as parseErrorMessage,y as parseLoveLetter,b as parsePing,w as parseQueue,S as parseRender,C as parseSessionId,E as parseStats,T as parseStreamInfo,x as parseVersion,I as parseWebSdkSettings};
|
|
1
|
+
var e={6758(e,t,n){n.d(t,{b:()=>s});class i{constructor(e){this._args=[],this._callback=e}handleEvent(e){this._callback(...this._args),this._args=[]}setArgs(...e){this._args=e}}class s extends EventTarget{constructor(){super(),this._eventListeners=new Map}removeListenerInternal(e,t){if(this._eventListeners.has(e)){const n=this._eventListeners.get(e);if(void 0===n)return this;for(let i=0;i<n.length;++i){const s=n[i];if(s.callback===t){super.removeEventListener(e,s.eventListenerWrapper),n.splice(i,1);break}}}return this}addListener(e,t){return this.on(e,t)}on(e,t){var n;const s=new i(t);return super.addEventListener(e,s),this._eventListeners.has(e)||this._eventListeners.set(e,new Array),null===(n=this._eventListeners.get(e))||void 0===n||n.push({callback:t,eventListenerWrapper:s}),this}once(e,t){var n;const s=new i((...n)=>{t(n),this.removeListenerInternal(e,t)});return super.addEventListener(e,s,{once:!0}),this._eventListeners.has(e)||this._eventListeners.set(e,new Array),null===(n=this._eventListeners.get(e))||void 0===n||n.push({callback:t,eventListenerWrapper:s}),this}removeListener(e,t){return this.removeListenerInternal(e,t),this}off(e,t){return this.removeListener(e,t)}removeAllListeners(e){if(this._eventListeners.has(e)){const t=this._eventListeners.get(e);if(void 0===t)return this;for(const n of t)this.removeEventListener(e,n.eventListenerWrapper);this._eventListeners.delete(e)}return this}emit(e,...t){if(this._eventListeners.has(e)){const n=this._eventListeners.get(e);if(void 0===n)return!1;for(const e of n)e.eventListenerWrapper.setArgs(...t);return super.dispatchEvent(new Event(e)),!0}return!1}}},948(e,t,n){var i;n.d(t,{Vy:()=>r}),function(e){e[e.Disabled=0]="Disabled",e[e.Error=1]="Error",e[e.Warning=2]="Warning",e[e.Info=3]="Info",e[e.Debug=4]="Debug"}(i||(i={}));class s{constructor(){this.logLevel=i.Debug,this.includeStack=!0}}let r=new class{InitLogging(e,t){this.ValidateContext(),this.context.logLevel=e,this.context.includeStack=t}Debug(e){this.ValidateContext(),this.context.logLevel>=i.Debug&&this.CommonLog("Debug",e)}Info(e){this.ValidateContext(),this.context.logLevel>=i.Info&&this.CommonLog("Info",e)}Warning(e){this.ValidateContext(),this.context.logLevel>=i.Warning&&this.CommonLog("Warning",e)}Error(e){this.ValidateContext(),this.context.logLevel>=i.Error&&this.CommonLog("Error",e)}CommonLog(e,t){let n=`[${e}] - ${t}`;this.context.includeStack&&(n+=`\nStack: ${this.GetStackTrace()}`),"Error"===e?console.error(n):"Warning"===e?console.warn(n):console.log(n)}GetStackTrace(){const e=new Error;let t="No Stack Available for this browser";return e.stack&&(t=e.stack.toString().replace(/Error/g,"")),t}ValidateContext(){this.context||("undefined"!=typeof window&&window?window.loggerContext?this.context=window.loggerContext:(this.context=new s,window.loggerContext=this.context):this.context=new s)}}},9899(e,t,n){function i(e,t){const n=e.create();return n.type=e.typeName,t&&e.mergePartial(n,t),n}n.d(t,{o:()=>i})},9027(e,t,n){n.d(t,{$W:()=>c,B1:()=>S,BI:()=>F,C_:()=>G,H2:()=>B,Rd:()=>Z,Rq:()=>Q,ZF:()=>R,hU:()=>D,l8:()=>g,q5:()=>b,tg:()=>j,vq:()=>W,x:()=>k,yB:()=>T,zW:()=>v});var i=n(8899),s=n(3923),r=n(2285);class o extends r.G{constructor(){super("base_message",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new o;class a extends r.G{constructor(){super("peerConnectionOptions",[])}create(e){const t=globalThis.Object.create(this.messagePrototype);return void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const l=new a;class d extends r.G{constructor(){super("config",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"peerConnectionOptions",kind:"message",T:()=>l},{no:3,name:"protocolVersion",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.peerConnectionOptions=l.internalBinaryRead(e,e.uint32(),n,r.peerConnectionOptions);break;case 3:r.protocolVersion=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),e.peerConnectionOptions&&l.internalBinaryWrite(e.peerConnectionOptions,t.tag(2,i.O0.LengthDelimited).fork(),n).join(),void 0!==e.protocolVersion&&t.tag(3,i.O0.LengthDelimited).string(e.protocolVersion);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const c=new d;class h extends r.G{constructor(){super("identify",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new h;class u extends r.G{constructor(){super("endpointId",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"id",kind:"scalar",T:9},{no:3,name:"protocolVersion",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.id="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.id=e.string();break;case 3:r.protocolVersion=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.id&&t.tag(2,i.O0.LengthDelimited).string(e.id),void 0!==e.protocolVersion&&t.tag(3,i.O0.LengthDelimited).string(e.protocolVersion);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new u;class m extends r.G{constructor(){super("endpointIdConfirm",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"committedId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.committedId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.committedId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.committedId&&t.tag(2,i.O0.LengthDelimited).string(e.committedId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new m;class p extends r.G{constructor(){super("streamerIdChanged",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"newID",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.newID="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.newID=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.newID&&t.tag(2,i.O0.LengthDelimited).string(e.newID);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const g=new p;class f extends r.G{constructor(){super("listStreamers",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const v=new f;class y extends r.G{constructor(){super("streamerList",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"ids",kind:"scalar",repeat:2,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.ids=[],void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.ids.push(e.string());break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);for(let n=0;n<e.ids.length;n++)t.tag(2,i.O0.LengthDelimited).string(e.ids[n]);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const b=new y;class w extends r.G{constructor(){super("subscribe",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"streamerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.streamerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.streamerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.streamerId&&t.tag(2,i.O0.LengthDelimited).string(e.streamerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const S=new w;class C extends r.G{constructor(){super("unsubscribe",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new C;class E extends r.G{constructor(){super("subscribeFailed",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"message",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.message="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.message=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.message&&t.tag(2,i.O0.LengthDelimited).string(e.message);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const T=new E;class x extends r.G{constructor(){super("playerConnected",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"dataChannel",kind:"scalar",T:8},{no:3,name:"sfu",kind:"scalar",T:8},{no:5,name:"playerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.dataChannel=!1,t.sfu=!1,t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.dataChannel=e.bool();break;case 3:r.sfu=e.bool();break;case 5:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),!1!==e.dataChannel&&t.tag(2,i.O0.Varint).bool(e.dataChannel),!1!==e.sfu&&t.tag(3,i.O0.Varint).bool(e.sfu),""!==e.playerId&&t.tag(5,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new x;class I extends r.G{constructor(){super("playerDisconnected",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"playerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.playerId&&t.tag(2,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new I;class M extends r.G{constructor(){super("offer",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"playerId",kind:"scalar",opt:!0,T:9},{no:4,name:"sfu",kind:"scalar",opt:!0,T:8},{no:5,name:"multiplex",kind:"scalar",opt:!0,T:8},{no:6,name:"scalabilityMode",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.sdp="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.sdp=e.string();break;case 3:r.playerId=e.string();break;case 4:r.sfu=e.bool();break;case 5:r.multiplex=e.bool();break;case 6:r.scalabilityMode=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.sdp&&t.tag(2,i.O0.LengthDelimited).string(e.sdp),void 0!==e.playerId&&t.tag(3,i.O0.LengthDelimited).string(e.playerId),void 0!==e.sfu&&t.tag(4,i.O0.Varint).bool(e.sfu),void 0!==e.multiplex&&t.tag(5,i.O0.Varint).bool(e.multiplex),void 0!==e.scalabilityMode&&t.tag(6,i.O0.LengthDelimited).string(e.scalabilityMode);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const k=new M;class L extends r.G{constructor(){super("answer",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sdp",kind:"scalar",T:9},{no:3,name:"playerId",kind:"scalar",opt:!0,T:9},{no:4,name:"minBitrateBps",kind:"scalar",opt:!0,T:5},{no:5,name:"maxBitrateBps",kind:"scalar",opt:!0,T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.sdp="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.sdp=e.string();break;case 3:r.playerId=e.string();break;case 4:r.minBitrateBps=e.int32();break;case 5:r.maxBitrateBps=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.sdp&&t.tag(2,i.O0.LengthDelimited).string(e.sdp),void 0!==e.playerId&&t.tag(3,i.O0.LengthDelimited).string(e.playerId),void 0!==e.minBitrateBps&&t.tag(4,i.O0.Varint).int32(e.minBitrateBps),void 0!==e.maxBitrateBps&&t.tag(5,i.O0.Varint).int32(e.maxBitrateBps);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const R=new L;class P extends r.G{constructor(){super("iceCandidateData",[{no:1,name:"candidate",kind:"scalar",T:9},{no:2,name:"sdpMid",kind:"scalar",T:9},{no:3,name:"sdpMLineIndex",kind:"scalar",T:5},{no:4,name:"usernameFragment",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.candidate="",t.sdpMid="",t.sdpMLineIndex=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.candidate=e.string();break;case 2:r.sdpMid=e.string();break;case 3:r.sdpMLineIndex=e.int32();break;case 4:r.usernameFragment=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.candidate&&t.tag(1,i.O0.LengthDelimited).string(e.candidate),""!==e.sdpMid&&t.tag(2,i.O0.LengthDelimited).string(e.sdpMid),0!==e.sdpMLineIndex&&t.tag(3,i.O0.Varint).int32(e.sdpMLineIndex),void 0!==e.usernameFragment&&t.tag(4,i.O0.LengthDelimited).string(e.usernameFragment);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const O=new P;class A extends r.G{constructor(){super("iceCandidate",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"candidate",kind:"message",T:()=>O},{no:3,name:"playerId",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.candidate=O.internalBinaryRead(e,e.uint32(),n,r.candidate);break;case 3:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),e.candidate&&O.internalBinaryWrite(e.candidate,t.tag(2,i.O0.LengthDelimited).fork(),n).join(),void 0!==e.playerId&&t.tag(3,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const F=new A;class N extends r.G{constructor(){super("disconnectPlayer",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"playerId",kind:"scalar",T:9},{no:3,name:"reason",kind:"scalar",opt:!0,T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.playerId=e.string();break;case 3:r.reason=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.playerId&&t.tag(2,i.O0.LengthDelimited).string(e.playerId),void 0!==e.reason&&t.tag(3,i.O0.LengthDelimited).string(e.reason);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new N;class _ extends r.G{constructor(){super("ping",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"time",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.time=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.time=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.time&&t.tag(2,i.O0.Varint).int32(e.time);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const D=new _;class V extends r.G{constructor(){super("pong",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"time",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.time=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.time=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.time&&t.tag(2,i.O0.Varint).int32(e.time);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const B=new V;class U extends r.G{constructor(){super("streamerDisconnected",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new U;class H extends r.G{constructor(){super("layerPreference",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"spatialLayer",kind:"scalar",T:5},{no:3,name:"temporalLayer",kind:"scalar",T:5},{no:4,name:"playerId",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.spatialLayer=0,t.temporalLayer=0,t.playerId="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.spatialLayer=e.int32();break;case 3:r.temporalLayer=e.int32();break;case 4:r.playerId=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.spatialLayer&&t.tag(2,i.O0.Varint).int32(e.spatialLayer),0!==e.temporalLayer&&t.tag(3,i.O0.Varint).int32(e.temporalLayer),""!==e.playerId&&t.tag(4,i.O0.LengthDelimited).string(e.playerId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const W=new H;class z extends r.G{constructor(){super("dataChannelRequest",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const j=new z;class $ extends r.G{constructor(){super("peerDataChannels",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"playerId",kind:"scalar",T:9},{no:3,name:"sendStreamId",kind:"scalar",T:5},{no:4,name:"recvStreamId",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.playerId="",t.sendStreamId=0,t.recvStreamId=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.playerId=e.string();break;case 3:r.sendStreamId=e.int32();break;case 4:r.recvStreamId=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.playerId&&t.tag(2,i.O0.LengthDelimited).string(e.playerId),0!==e.sendStreamId&&t.tag(3,i.O0.Varint).int32(e.sendStreamId),0!==e.recvStreamId&&t.tag(4,i.O0.Varint).int32(e.recvStreamId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const Q=new $;class q extends r.G{constructor(){super("peerDataChannelsReady",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const G=new q;class K extends r.G{constructor(){super("streamerDataChannels",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"sfuId",kind:"scalar",T:9},{no:3,name:"sendStreamId",kind:"scalar",T:5},{no:4,name:"recvStreamId",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.sfuId="",t.sendStreamId=0,t.recvStreamId=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.sfuId=e.string();break;case 3:r.sendStreamId=e.int32();break;case 4:r.recvStreamId=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.sfuId&&t.tag(2,i.O0.LengthDelimited).string(e.sfuId),0!==e.sendStreamId&&t.tag(3,i.O0.Varint).int32(e.sendStreamId),0!==e.recvStreamId&&t.tag(4,i.O0.Varint).int32(e.recvStreamId);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new K;class J extends r.G{constructor(){super("startStreaming",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new J;class X extends r.G{constructor(){super("stopStreaming",[{no:1,name:"type",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();if(1===t)r.type=e.string();else{let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new X;class Y extends r.G{constructor(){super("playerCount",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"count",kind:"scalar",T:5}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.count=0,void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.count=e.int32();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),0!==e.count&&t.tag(2,i.O0.Varint).int32(e.count);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}const Z=new Y;class ee extends r.G{constructor(){super("stats",[{no:1,name:"type",kind:"scalar",T:9},{no:2,name:"data",kind:"scalar",T:9}])}create(e){const t=globalThis.Object.create(this.messagePrototype);return t.type="",t.data="",void 0!==e&&(0,s.x)(this,t,e),t}internalBinaryRead(e,t,n,s){let r=null!=s?s:this.create(),o=e.pos+t;for(;e.pos<o;){let[t,s]=e.tag();switch(t){case 1:r.type=e.string();break;case 2:r.data=e.string();break;default:let o=n.readUnknownField;if("throw"===o)throw new globalThis.Error(`Unknown field ${t} (wire type ${s}) for ${this.typeName}`);let a=e.skip(s);!1!==o&&(!0===o?i.f$.onRead:o)(this.typeName,r,t,s,a)}}return r}internalBinaryWrite(e,t,n){""!==e.type&&t.tag(1,i.O0.LengthDelimited).string(e.type),""!==e.data&&t.tag(2,i.O0.LengthDelimited).string(e.data);let s=n.writeUnknownFields;return!1!==s&&(1==s?i.f$.onWrite:s)(this.typeName,e,t),t}}new ee},8496(e,t,n){n.d(t,{P:()=>r});var i=n(9027),s=n(9899);class r{get RTT(){return this.rtt}constructor(e,t){this.alive=!1,this.rtt=0,this.protocol=e,this.timeout=t,this.onResponse=this.onHeartbeatResponse.bind(this),this.protocol.transport.on("close",this.stop.bind(this)),this.start()}start(){this.alive=!0,this.protocol.on("pong",this.onResponse),this.keepalive=setInterval(this.sendHeartbeat.bind(this),this.timeout)}stop(){clearInterval(this.keepalive),this.protocol.off("pong",this.onResponse)}sendHeartbeat(){var e;!1!==this.alive?(this.alive=!1,this.protocol.sendMessage(s.o(i.hU,{time:(new Date).getTime()}))):null===(e=this.onTimeout)||void 0===e||e.call(this)}onHeartbeatResponse(e){this.rtt=(new Date).getTime()-e.time,this.alive=!0}}},3532(e,t,n){n.d(t,{t:()=>r});var i=n(6758),s=n(948);class r extends i.b{static get SIGNALLING_VERSION(){return"1.3.0"}constructor(e){super(),this.transport=e,e.onMessage=t=>{let n;try{const e=JSON.parse(t);s.Vy.Debug("Protocol received => \n"+JSON.stringify(e,void 0,4)),n=e}catch(e){return void(e instanceof Error?s.Vy.Error(`Error parsing message string ${t}.\n${e.message}`):s.Vy.Error("Unknown error while parsing message data in handleOnMessage"))}e.emit("message",n),this.emit(n.type,n)||this.emit("unhandled",n)}}connect(e){return this.transport.connect(e)}disconnect(e,t){this.transport.disconnect(e,t)}isConnected(){return this.transport.isConnected()}sendMessage(e){this.transport.sendMessage(JSON.stringify(e)),this.transport.emit("out",e),s.Vy.Debug("Protocol sent => \n"+JSON.stringify(e,void 0,4))}}},7447(e,t,n){n.d(t,{T:()=>r});var i=n(948),s=n(6758);class r extends s.b{constructor(e){super(),this.WS_OPEN_STATE=1,this.protocols=e}sendMessage(e){this.webSocket&&this.webSocket.send(e)}connect(e){i.Vy.Info(e);try{return this.webSocket=new WebSocket(e,this.protocols),this.webSocket.onopen=e=>this.handleOnOpen(),this.webSocket.onerror=e=>this.handleOnError(),this.webSocket.onclose=e=>this.handleOnClose(e),this.webSocket.onmessage=e=>this.handleOnMessage(e),this.webSocket.onmessagebinary=e=>this.handleOnMessageBinary(e),!0}catch(e){return i.Vy.Error(e),!1}}disconnect(e,t){this.webSocket&&this.webSocket.close(e,t)}isConnected(){return!!this.webSocket&&this.webSocket.readyState!=WebSocket.CLOSED}handleOnMessageBinary(e){e&&e.data&&e.data.text().then(e=>{const t=new MessageEvent("messageFromBinary",{data:e});this.handleOnMessage(t)}).catch(e=>{i.Vy.Error(`Failed to parse binary blob from websocket, reason: ${e.message}`)})}handleOnMessage(e){e.data&&e.data instanceof Blob?this.handleOnMessageBinary(e):this.onMessage&&this.onMessage(e.data)}handleOnOpen(){i.Vy.Info("Connected to the signalling server via WebSocket"),this.emit("open")}handleOnError(){this.emit("error")}handleOnClose(e){i.Vy.Info("Disconnected to the signalling server via WebSocket: "+JSON.stringify(e.code)+" - "+e.reason),this.emit("close",e)}}},9046(e,t,n){n.d(t,{p:()=>i});class i{static addVideoHeaderExtensionToSdp(e,t){const n=e.split("\n").filter(e=>e.startsWith("a=extmap:")).map(e=>parseInt(e.split(" ")[0].substring(9),10)).sort((e,t)=>e-t).filter((e,t,n)=>n.indexOf(e)===t),i="a=extmap:"+(n[n.length-1]+1)+" "+t+"\r\n",s=e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n");return s.shift()+s.map(e=>e.startsWith("m=video")?e+i:e).join("")}}},5785(e,t,n){n.d(t,{R:()=>o});var i=n(223),s=n(948),r=n(6077);class o{constructor(e,t,n){this.active=!1,this.countdownActive=!1,this.warnTimer=void 0,this.countDown=0,this.countDownTimer=void 0,this.config=e,this.pixelStreaming=t,this.onDismissAfk=n,this.onAFKTimedOutCallback=()=>{console.log("AFK timed out, did you want to override this callback?")}}onAfkClick(){clearInterval(this.countDownTimer),(this.active||this.countdownActive)&&(this.startAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new r.jr))}startAfkWarningTimer(){this.config.getNumericSettingValue(i.k$.AFKTimeoutSecs)>0&&this.config.isFlagEnabled(i.iI.AFKDetection)?this.active=!0:this.active=!1,this.resetAfkWarningTimer()}stopAfkWarningTimer(){this.active=!1,this.countdownActive=!1,clearTimeout(this.warnTimer),clearInterval(this.countDownTimer)}pauseAfkWarningTimer(){this.active=!1}resetAfkWarningTimer(){this.active&&this.config.isFlagEnabled(i.iI.AFKDetection)&&(clearTimeout(this.warnTimer),this.warnTimer=setTimeout(()=>this.activateAfkEvent(),1e3*this.config.getNumericSettingValue(i.k$.AFKTimeoutSecs)))}activateAfkEvent(){this.pauseAfkWarningTimer(),this.pixelStreaming.dispatchEvent(new r.mC({countDown:this.countDown,dismissAfk:this.onDismissAfk})),this.countDown=this.config.getNumericSettingValue(i.k$.AFKCountdownSecs),this.countdownActive=!0,this.pixelStreaming.dispatchEvent(new r.S_({countDown:this.countDown})),this.config.isFlagEnabled(i.iI.HoveringMouseMode)||document.exitPointerLock&&document.exitPointerLock(),this.countDownTimer=setInterval(()=>{this.countDown--,0==this.countDown?(this.pixelStreaming.dispatchEvent(new r.Kr),this.onAFKTimedOutCallback(),s.Vy.Info("You have been disconnected due to inactivity"),this.stopAfkWarningTimer()):this.pixelStreaming.dispatchEvent(new r.S_({countDown:this.countDown}))},1e3)}}},223(e,t,n){n.d(t,{B9:()=>g,Bs:()=>b,CR:()=>h,Ri:()=>v,TS:()=>y,gw:()=>p,iI:()=>c,k$:()=>u,mY:()=>f,tQ:()=>m});var i=n(948),s=n(5131),r=n(9468),o=n(4746),a=n(5828),l=n(6077),d=n(114);class c{}c.AutoConnect="AutoConnect",c.AutoPlayVideo="AutoPlayVideo",c.AFKDetection="TimeoutIfIdle",c.HoveringMouseMode="HoveringMouse",c.ForceMonoAudio="ForceMonoAudio",c.ForceTURN="ForceTURN",c.FakeMouseWithTouches="FakeMouseWithTouches",c.IsQualityController="ControlsQuality",c.MatchViewportResolution="MatchViewportRes",c.StartVideoMuted="StartVideoMuted",c.SuppressBrowserKeys="SuppressBrowserKeys",c.UseMic="UseMic",c.UseModalForTextInput="UseModalForTextInput",c.UseCamera="UseCamera",c.KeyboardInput="KeyboardInput",c.MouseInput="MouseInput",c.TouchInput="TouchInput",c.GamepadInput="GamepadInput",c.XRControllerInput="XRControllerInput",c.WaitForStreamer="WaitForStreamer",c.HideUI="HideUI",c.EnableCaptureTimeExt="EnableCaptureTimeExt";const h=e=>Object.getOwnPropertyNames(c).some(t=>c[t]===e);class u{}u.AFKTimeoutSecs="AFKTimeout",u.AFKCountdownSecs="AFKCountdown",u.MinQP="MinQP",u.MaxQP="MaxQP",u.MinQuality="MinQuality",u.MaxQuality="MaxQuality",u.CompatQualityMin="CompatQualityMin",u.CompatQualityMax="CompatQualityMax",u.WebRTCFPS="WebRTCFPS",u.WebRTCMinBitrate="WebRTCMinBitrate",u.WebRTCMaxBitrate="WebRTCMaxBitrate",u.MaxReconnectAttempts="MaxReconnectAttempts",u.StreamerAutoJoinInterval="StreamerAutoJoinInterval",u.KeepaliveDelay="KeepaliveDelay";const m=e=>Object.getOwnPropertyNames(u).some(t=>u[t]===e);class p{}p.SignallingServerUrl="ss";const g=e=>Object.getOwnPropertyNames(p).some(t=>p[t]===e);class f{}f.PreferredCodec="PreferredCodec",f.StreamerId="StreamerId",f.PreferredQuality="PreferredQuality";const v=e=>Object.getOwnPropertyNames(f).some(t=>f[t]===e);class y{constructor(e={}){this.flags=new Map,this.numericParameters=new Map,this.textParameters=new Map,this.optionParameters=new Map;const{initialSettings:t,useUrlParams:n,webSocketProtocols:i}=e;this._useUrlParams=!!n,this._webSocketProtocols=i,this.populateDefaultSettings(this._useUrlParams,t)}get useUrlParams(){return this._useUrlParams}get webSocketProtocols(){return this._webSocketProtocols}populateDefaultSettings(e,t){this.textParameters.set(p.SignallingServerUrl,new o.c(p.SignallingServerUrl,"Signalling url","Url of the signalling server",t&&Object.prototype.hasOwnProperty.call(t,p.SignallingServerUrl)?t[p.SignallingServerUrl]:("https:"===location.protocol?"wss://":"ws://")+window.location.hostname+("80"===window.location.port||""===window.location.port?"":`:${window.location.port}`),e)),this.optionParameters.set(f.StreamerId,new a.G(f.StreamerId,"Streamer ID","The ID of the streamer to stream.",t&&Object.prototype.hasOwnProperty.call(t,f.StreamerId)?t[f.StreamerId]:"",t&&Object.prototype.hasOwnProperty.call(t,f.StreamerId)?[t[f.StreamerId]]:void 0,e));const n=function(e){const t=d.C.getSupportedVideoCodecs();if(t.includes(e))return e;for(const n of t)if(n.startsWith(e))return n;return e};this.optionParameters.set(f.PreferredCodec,new a.G(f.PreferredCodec,"Preferred Codec","The preferred codec to be used during codec negotiation",t&&Object.prototype.hasOwnProperty.call(t,f.PreferredCodec)?n(t[f.PreferredCodec]):function(){const e=d.C.getSupportedVideoCodecs();if(1==e.length)return e[0];if(e.length>0){const t=e[0];for(const t of e)if(t.startsWith("H264"))return t;return t}return i.Vy.Error("Could not find any reasonable video codec to assign as a default."),""}(),d.C.getSupportedVideoCodecs(),e,n)),this.optionParameters.set(f.PreferredQuality,new a.G(f.PreferredQuality,"Preferred Quality","The preferred quality of the stream (only applicable when using the SFU)",t&&Object.prototype.hasOwnProperty.call(t,f.PreferredQuality)?t[f.PreferredQuality]:"Default",["Default"],e)),this.flags.set(c.AutoConnect,new s.T(c.AutoConnect,"Auto connect to stream","Whether we should attempt to auto connect to the signalling server or show a click to start prompt.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.AutoConnect))&&t[c.AutoConnect],e)),this.flags.set(c.AutoPlayVideo,new s.T(c.AutoPlayVideo,"Auto play video","When video is ready automatically start playing it as opposed to showing a play button.",!t||!Object.prototype.hasOwnProperty.call(t,c.AutoPlayVideo)||t[c.AutoPlayVideo],e)),this.flags.set(c.UseMic,new s.T(c.UseMic,"Use microphone","Make browser request microphone access and open an input audio track.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.UseMic))&&t[c.UseMic],e)),this.flags.set(c.UseModalForTextInput,new s.T(c.UseModalForTextInput,"Use modal for text input","When entering input into a streamed UE text widget, use an input modal.",!t||!Object.prototype.hasOwnProperty.call(t,c.UseModalForTextInput)||t[c.UseModalForTextInput],e)),this.flags.set(c.UseCamera,new s.T(c.UseCamera,"Use webcam","Make browser request webcam access and open a input video track.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.UseCamera))&&t[c.UseCamera],e)),this.flags.set(c.StartVideoMuted,new s.T(c.StartVideoMuted,"Start video muted","Video will start muted if true.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.StartVideoMuted))&&t[c.StartVideoMuted],e)),this.flags.set(c.SuppressBrowserKeys,new s.T(c.SuppressBrowserKeys,"Suppress browser keys","Suppress certain browser keys that we use in UE, for example F5 to show shader complexity instead of refresh the page.",!t||!Object.prototype.hasOwnProperty.call(t,c.SuppressBrowserKeys)||t[c.SuppressBrowserKeys],e)),this.flags.set(c.IsQualityController,new s.T(c.IsQualityController,"Is quality controller?","True if this peer controls stream quality",!t||!Object.prototype.hasOwnProperty.call(t,c.IsQualityController)||t[c.IsQualityController],e)),this.flags.set(c.ForceMonoAudio,new s.T(c.ForceMonoAudio,"Force mono audio","Force browser to request mono audio in the SDP",!(!t||!Object.prototype.hasOwnProperty.call(t,c.ForceMonoAudio))&&t[c.ForceMonoAudio],e)),this.flags.set(c.ForceTURN,new s.T(c.ForceTURN,"Force TURN","Only generate TURN/Relayed ICE candidates.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.ForceTURN))&&t[c.ForceTURN],e)),this.flags.set(c.AFKDetection,new s.T(c.AFKDetection,"AFK if idle","Timeout the experience if user is AFK for a period.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.AFKDetection))&&t[c.AFKDetection],e)),this.flags.set(c.MatchViewportResolution,new s.T(c.MatchViewportResolution,"Match viewport resolution","Pixel Streaming will be instructed to dynamically resize the video stream to match the size of the video element.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.MatchViewportResolution))&&t[c.MatchViewportResolution],e)),this.flags.set(c.HoveringMouseMode,new s.T(c.HoveringMouseMode,"Control Scheme: Locked Mouse","Either locked mouse, where the pointer is consumed by the video and locked to it, or hovering mouse, where the mouse is not consumed.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.HoveringMouseMode))&&t[c.HoveringMouseMode],e,(e,t)=>{t.label=`Control Scheme: ${e?"Hovering":"Locked"} Mouse`})),this.flags.set(c.FakeMouseWithTouches,new s.T(c.FakeMouseWithTouches,"Fake mouse with touches","A single finger touch is converted into a mouse event. This allows a non-touch application to be controlled partially via a touch device.",!(!t||!Object.prototype.hasOwnProperty.call(t,c.FakeMouseWithTouches))&&t[c.FakeMouseWithTouches],e)),this.flags.set(c.KeyboardInput,new s.T(c.KeyboardInput,"Keyboard input","If enabled, send keyboard events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.KeyboardInput)||t[c.KeyboardInput],e)),this.flags.set(c.MouseInput,new s.T(c.MouseInput,"Mouse input","If enabled, send mouse events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.MouseInput)||t[c.MouseInput],e)),this.flags.set(c.TouchInput,new s.T(c.TouchInput,"Touch input","If enabled, send touch events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.TouchInput)||t[c.TouchInput],e)),this.flags.set(c.GamepadInput,new s.T(c.GamepadInput,"Gamepad input","If enabled, send gamepad events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.GamepadInput)||t[c.GamepadInput],e)),this.flags.set(c.XRControllerInput,new s.T(c.XRControllerInput,"XR controller input","If enabled, send XR controller events to streamer",!t||!Object.prototype.hasOwnProperty.call(t,c.XRControllerInput)||t[c.XRControllerInput],e)),this.flags.set(c.WaitForStreamer,new s.T(c.WaitForStreamer,"Wait for streamer","Will continue trying to connect to the first streamer available.",!t||!Object.prototype.hasOwnProperty.call(t,c.WaitForStreamer)||t[c.WaitForStreamer],e)),this.flags.set(c.HideUI,new s.T(c.HideUI,"Hide the UI overlay","Will hide all UI overlay details",!(!t||!Object.prototype.hasOwnProperty.call(t,c.HideUI))&&t[c.HideUI],e)),this.flags.set(c.EnableCaptureTimeExt,new s.T(c.EnableCaptureTimeExt,"Enable abs-capture-time","Enables the abs-capture-time RTP header extension",!(!t||!Object.prototype.hasOwnProperty.call(t,c.EnableCaptureTimeExt))&&t[c.EnableCaptureTimeExt],e)),this.numericParameters.set(u.AFKTimeoutSecs,new r.U(u.AFKTimeoutSecs,"AFK timeout","The time (in seconds) it takes for the application to time out if AFK timeout is enabled.",0,null,t&&Object.prototype.hasOwnProperty.call(t,u.AFKTimeoutSecs)?t[u.AFKTimeoutSecs]:120,e)),this.numericParameters.set(u.AFKCountdownSecs,new r.U(u.AFKCountdownSecs,"AFK countdown","The time (in seconds) for a user to respond before the stream is ended after an AFK timeout.",10,null,10,e)),this.numericParameters.set(u.MaxReconnectAttempts,new r.U(u.MaxReconnectAttempts,"Max Reconnects","Maximum number of reconnects the application will attempt when a streamer disconnects.",0,999,t&&Object.prototype.hasOwnProperty.call(t,u.MaxReconnectAttempts)?t[u.MaxReconnectAttempts]:3,e)),this.numericParameters.set(u.MinQP,new r.U(u.MinQP,"Min QP","The lower bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,t&&Object.prototype.hasOwnProperty.call(t,u.MinQP)?t[u.MinQP]:0,e)),this.numericParameters.set(u.MaxQP,new r.U(u.MaxQP,"Max QP","The upper bound for the quantization parameter (QP) of the encoder. 0 = Best quality, 51 = worst quality.",0,51,t&&Object.prototype.hasOwnProperty.call(t,u.MaxQP)?t[u.MaxQP]:51,e)),this.numericParameters.set(u.MinQuality,new r.U(u.MinQuality,"Min Quality","The lower bound for the quality factor of the encoder. 0 = Worst quality, 100 = Best quality.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.MinQuality)?t[u.MinQuality]:0,e)),this.numericParameters.set(u.MaxQuality,new r.U(u.MaxQuality,"Max Quality","The upper bound for the quality factor of the encoder. 0 = Worst quality, 100 = Best quality.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.MaxQuality)?t[u.MaxQuality]:100,e)),this.numericParameters.set(u.CompatQualityMin,new r.U(u.CompatQualityMin,"Min Quality","The lower bound for encoding quality. 0 = Worst, 100 = Best.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.CompatQualityMin)?t[u.CompatQualityMin]:0,e)),this.numericParameters.set(u.CompatQualityMax,new r.U(u.CompatQualityMax,"Max Quality","The upper bound for encoding quality. 0 = Worst, 100 = Best.",0,100,t&&Object.prototype.hasOwnProperty.call(t,u.CompatQualityMax)?t[u.CompatQualityMax]:100,e)),this.numericParameters.set(u.WebRTCFPS,new r.U(u.WebRTCFPS,"Max FPS","The maximum FPS that WebRTC will try to transmit frames at.",1,999,t&&Object.prototype.hasOwnProperty.call(t,u.WebRTCFPS)?t[u.WebRTCFPS]:60,e)),this.numericParameters.set(u.WebRTCMinBitrate,new r.U(u.WebRTCMinBitrate,"Min Bitrate (kbps)","The minimum bitrate that WebRTC should use.",0,5e5,t&&Object.prototype.hasOwnProperty.call(t,u.WebRTCMinBitrate)?t[u.WebRTCMinBitrate]:0,e)),this.numericParameters.set(u.WebRTCMaxBitrate,new r.U(u.WebRTCMaxBitrate,"Max Bitrate (kbps)","The maximum bitrate that WebRTC should use.",0,5e5,t&&Object.prototype.hasOwnProperty.call(t,u.WebRTCMaxBitrate)?t[u.WebRTCMaxBitrate]:0,e)),this.numericParameters.set(u.StreamerAutoJoinInterval,new r.U(u.StreamerAutoJoinInterval,"Streamer Auto Join Interval (ms)","Delay between retries when waiting for an available streamer.",500,9e5,t&&Object.prototype.hasOwnProperty.call(t,u.StreamerAutoJoinInterval)?t[u.StreamerAutoJoinInterval]:3e3,e)),this.numericParameters.set(u.KeepaliveDelay,new r.U(u.KeepaliveDelay,"Connection Keepalive delay","Delay between keepalive pings to the signalling server.",0,9e5,t&&Object.prototype.hasOwnProperty.call(t,u.KeepaliveDelay)?t[u.KeepaliveDelay]:3e4,e))}_addOnNumericSettingChangedListener(e,t){this.numericParameters.has(e)&&this.numericParameters.get(e).addOnChangedListener(t)}_addOnOptionSettingChangedListener(e,t){this.optionParameters.has(e)&&this.optionParameters.get(e).addOnChangedListener(t)}getNumericSettingValue(e){if(this.numericParameters.has(e))return this.numericParameters.get(e).number;throw new Error(`There is no numeric setting with the id of ${e}`)}getTextSettingValue(e){if(this.textParameters.has(e))return this.textParameters.get(e).value;throw new Error(`There is no numeric setting with the id of ${e}`)}setNumericSetting(e,t){if(!this.numericParameters.has(e))throw new Error(`There is no numeric setting with the id of ${e}`);this.numericParameters.get(e).number=t}_addOnSettingChangedListener(e,t){this.flags.has(e)&&(this.flags.get(e).onChange=t)}_addOnTextSettingChangedListener(e,t){this.textParameters.has(e)&&(this.textParameters.get(e).onChange=t)}getSettingOption(e){return this.optionParameters.get(e)}isFlagEnabled(e){return this.flags.get(e).flag}setFlagEnabled(e,t){this.flags.has(e)?this.flags.get(e).flag=t:i.Vy.Warning(`Cannot toggle flag called ${e} - it does not exist in the Config.flags map.`)}setTextSetting(e,t){this.textParameters.has(e)?this.textParameters.get(e).text=t:i.Vy.Warning(`Cannot set text setting called ${e} - it does not exist in the Config.textParameters map.`)}setOptionSettingOptions(e,t){this.optionParameters.has(e)?this.optionParameters.get(e).options=t:i.Vy.Warning(`Cannot set text setting called ${e} - it does not exist in the Config.optionParameters map.`)}setOptionSettingValue(e,t){if(this.optionParameters.has(e)){const n=this.optionParameters.get(e),i=n.options;i.includes(t)||(i.push(t),n.options=i),n.selected=t}else i.Vy.Warning(`Cannot set text setting called ${e} - it does not exist in the Config.enumParameters map.`)}setFlagLabel(e,t){this.flags.has(e)?this.flags.get(e).label=t:i.Vy.Warning(`Cannot set label for flag called ${e} - it does not exist in the Config.flags map.`)}setSettings(e){for(const t of Object.keys(e))h(t)?this.setFlagEnabled(t,e[t]):m(t)?this.setNumericSetting(t,e[t]):g(t)?this.setTextSetting(t,e[t]):v(t)&&this.setOptionSettingValue(t,e[t])}getSettings(){const e={};for(const[t,n]of this.flags.entries())e[t]=n.flag;for(const[t,n]of this.numericParameters.entries())e[t]=n.number;for(const[t,n]of this.textParameters.entries())e[t]=n.text;for(const[t,n]of this.optionParameters.entries())e[t]=n.selected;return e}getFlags(){return Array.from(this.flags.values())}getTextSettings(){return Array.from(this.textParameters.values())}getNumericSettings(){return Array.from(this.numericParameters.values())}getOptionSettings(){return Array.from(this.optionParameters.values())}_registerOnChangeEvents(e){for(const t of this.flags.keys()){const n=this.flags.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"flag",value:t,target:n})))}for(const t of this.numericParameters.keys()){const n=this.numericParameters.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"number",value:t,target:n})))}for(const t of this.textParameters.keys()){const n=this.textParameters.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"text",value:t,target:n})))}for(const t of this.optionParameters.keys()){const n=this.optionParameters.get(t);n&&(n.onChangeEmit=t=>e.dispatchEvent(new l.Si({id:n.id,type:"option",value:t,target:n})))}}}var b;!function(e){e[e.LockedMouse=0]="LockedMouse",e[e.HoveringMouse=1]="HoveringMouse"}(b||(b={}))},8532(e,t,n){n.d(t,{E:()=>i});class i{constructor(e,t,n,i,s=()=>{}){this.parseURLParams(),this.onChange=s,this.onChangeEmit=()=>{},this.id=e,this.description=n,this.label=t,this.value=i}set label(e){this._label=e,this.onChangeEmit(this._value)}get label(){return this._label}get value(){return this._value}set value(e){this._value=e,this.onChange(this._value,this),this.onChangeEmit(this._value)}updateURLParams(){if(this.useUrlParams){const e=new URLSearchParams(window.location.search),t=this.getValueAsString();let n=!1;for(const[i,s]of e)if(i.toLowerCase()==this.id.toLowerCase()){e.set(i,t),n=!0;break}n||e.set(this.id,t),window.history.replaceState({},"",""!==e.toString()?`${location.pathname}?${e}`:`${location.pathname}`)}}getValueAsString(){return""}parseURLParams(){this._urlParams={};const e=new URLSearchParams(window.location.search);for(const[t,n]of e)this._urlParams[t.toLowerCase()]=n}hasURLParam(e){return e.toLowerCase()in this._urlParams}getURLParam(e){return this.hasURLParam(e)?this._urlParams[e.toLowerCase()]:""}}},5131(e,t,n){n.d(t,{T:()=>s});var i=n(8532);class s extends i.E{constructor(e,t,n,i,s,r=()=>{}){if(super(e,t,n,i,r),s&&this.hasURLParam(this.id)){const e=this.getURLParam(this.id);this.flag="false"!=e.toLowerCase()}else this.flag=i;this.useUrlParams=s}getValueAsString(){return this.flag?"true":"false"}enable(){this.flag=!0}get flag(){return!!this.value}set flag(e){this.value=e}}},9468(e,t,n){n.d(t,{U:()=>s});var i=n(8532);class s extends i.E{constructor(e,t,n,i,s,r,o,a=()=>{}){if(super(e,t,n,r,a),this._min=i,this._max=s,o&&this.hasURLParam(this.id)){const e=Number.parseFloat(this.getURLParam(this.id));this.number=Number.isNaN(e)?r:e}else this.number=r;this.useUrlParams=o}getValueAsString(){return this.number.toString()}set number(e){this.value=this.clamp(e)}get number(){return this.value}clamp(e){return null==this._min&&null==this._max?e:null==this._min?Math.min(this._max,e):null==this._max?Math.max(this._min,e):Math.max(Math.min(this._max,e),this._min)}get min(){return this._min}get max(){return this._max}addOnChangedListener(e){this.onChange=e}}},5828(e,t,n){n.d(t,{G:()=>r});var i=n(948),s=n(8532);class r extends s.E{constructor(e,t,n,i,s,r,o=function(e){return e},a=()=>{}){super(e,t,n,i,a),this._urlParamResolver=o;const l=this.hasURLParam(this.id)?this._urlParamResolver(this.getURLParam(this.id)):i;this.options=null!=s?s:[l],this.selected=l,this.useUrlParams=r}getValueAsString(){return this.selected}addOnChangedListener(e){this.onChange=e}get options(){return this._options}set options(e){this._options=e,this.onChangeEmit(this.selected)}get selected(){return this.value}set selected(e){void 0!==e&&(this.options.includes(e)?this.value=e:i.Vy.Error(`Could not set "${e}" as the selected option for ${this.id} because it wasn't one of the options.`))}set urlParamResolver(e){this._urlParamResolver=e}}},4746(e,t,n){n.d(t,{c:()=>s});var i=n(8532);class s extends i.E{constructor(e,t,n,i,s,r=()=>{}){super(e,t,n,i,r),s&&this.hasURLParam(this.id)?this.text=this.getURLParam(this.id):this.text=i,this.useUrlParams=s}getValueAsString(){return this.text}get text(){return this.value}set text(e){this.value=e}}},4045(e,t,n){n.d(t,{a:()=>s});var i=n(948);class s{constructor(){this.isReceivingFreezeFrame=!1}getDataChannelInstance(){return this}createDataChannel(e,t,n){this.peerConnection=e,this.label=t,this.datachannelOptions=n,null==n&&(this.datachannelOptions={},this.datachannelOptions.ordered=!0),this.dataChannel=this.peerConnection.createDataChannel(this.label,this.datachannelOptions),this.setupDataChannel()}setupDataChannel(){this.dataChannel.binaryType="arraybuffer",this.dataChannel.onopen=e=>this.handleOnOpen(e),this.dataChannel.onclose=e=>this.handleOnClose(e),this.dataChannel.onmessage=e=>this.handleOnMessage(e),this.dataChannel.onerror=e=>this.handleOnError(e)}handleOnOpen(e){var t;i.Vy.Info(`Data Channel (${this.label}) opened.`),this.onOpen(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}handleOnClose(e){var t;i.Vy.Info(`Data Channel (${this.label}) closed.`),this.onClose(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}handleOnMessage(e){i.Vy.Info(`Data Channel (${this.label}) message: ${e}`)}handleOnError(e){var t;i.Vy.Info(`Data Channel (${this.label}) error: ${e}`),this.onError(null===(t=this.dataChannel)||void 0===t?void 0:t.label,e)}onOpen(e,t){}onClose(e,t){}onError(e,t){}}},9355(e,t,n){n.d(t,{I:()=>r});var i=n(948),s=n(8733);class r{constructor(e,t){this.intervalHandle=void 0,this.sink=e,this.callback=t,this.records=new Map,this.seq=0}start(e){return!this.isRunning()&&(this.startTime=Date.now(),this.records.clear(),this.intervalHandle=window.setInterval((()=>{Date.now()-this.startTime>=e.duration?this.stop():this.sendRequest(e.requestSize,e.responseSize)}).bind(this),Math.floor(1e3/e.rps)),!0)}stop(){this.intervalHandle&&(window.clearInterval(this.intervalHandle),this.intervalHandle=void 0,this.callback(this.produceResult()))}produceResult(){const e=new Map(this.records);return{records:e,dataChannelRtt:Math.ceil(Array.from(this.records.values()).reduce((e,t)=>e+(t.playerReceivedTimestamp-t.playerSentTimestamp),0)/this.records.size),playerToStreamerTime:Math.ceil(Array.from(this.records.values()).reduce((e,t)=>e+(t.streamerReceivedTimestamp-t.playerSentTimestamp),0)/this.records.size),streamerToPlayerTime:Math.ceil(Array.from(this.records.values()).reduce((e,t)=>e+(t.playerReceivedTimestamp-t.streamerSentTimestamp),0)/this.records.size),exportLatencyAsCSV:()=>{let t="Timestamp;RTT;PlayerToStreamer;StreamerToPlayer;\n";return e.forEach(e=>{t+=e.playerSentTimestamp+";",t+=e.playerReceivedTimestamp-e.playerSentTimestamp+";",t+=e.streamerReceivedTimestamp-e.playerSentTimestamp+";",t+=e.playerReceivedTimestamp-e.streamerSentTimestamp+";",t+="\n"}),t}}}isRunning(){return!!this.intervalHandle}receive(e){if(!this.isRunning())return;if(!e)return void i.Vy.Error("Undefined response from server");const t=this.records.get(e.Seq);t&&t.update(e)}sendRequest(e,t){const n=this.createRequest(e,t),i=new s.T(n);this.records.set(i.seq,i),this.sink(n)}createRequest(e,t){return{Seq:this.seq++,FillResponseSize:t,Filler:e?"A".repeat(e):""}}}},8733(e,t,n){n.d(t,{T:()=>i});class i{constructor(e){this.seq=e.Seq,this.playerSentTimestamp=Date.now(),this.requestFillerSize=e.Filler?e.Filler.length:0}update(e){this.playerReceivedTimestamp=Date.now(),this.streamerReceivedTimestamp=e.ReceivedTimestamp,this.streamerSentTimestamp=e.SentTimestamp,this.responseFillerSize=e.Filler?e.Filler.length:0}}},8236(e,t,n){n.d(t,{p:()=>s});var i=n(948);class s{constructor(e){this.dataChannelProvider=e}canSend(){return void 0!==this.dataChannelProvider.getDataChannelInstance().dataChannel&&"open"==this.dataChannelProvider.getDataChannelInstance().dataChannel.readyState}sendData(e){const t=this.dataChannelProvider.getDataChannelInstance();"open"==t.dataChannel.readyState?(t.dataChannel.send(e),i.Vy.Info(`Message Sent: ${new Uint8Array(e)}`),this.resetAfkWarningTimerOnDataSend()):i.Vy.Error(`Message Failed: ${new Uint8Array(e)}`)}resetAfkWarningTimerOnDataSend(){}}},235(e,t,n){n.d(t,{C9:()=>i});class i{constructor(){this.PixelStreamingSettings=new s,this.EncoderSettings=new r,this.WebRTCSettings=new o}ueCompatible(){null!=this.WebRTCSettings.MaxFPS&&(this.WebRTCSettings.FPS=this.WebRTCSettings.MaxFPS)}}class s{}class r{}class o{}},724(e,t,n){n.d(t,{Z:()=>s});var i=n(948);class s{constructor(){this.ReceiptTimeMs=null,this.TransmissionTimeMs=null,this.PreCaptureTimeMs=null,this.PostCaptureTimeMs=null,this.PreEncodeTimeMs=null,this.PostEncodeTimeMs=null,this.EncodeMs=null,this.CaptureToSendMs=null,this.testStartTimeMs=0,this.browserReceiptTimeMs=0,this.latencyExcludingDecode=0,this.testDuration=0,this.networkLatency=0,this.browserSendLatency=0,this.frameDisplayDeltaTimeMs=0,this.endToEndLatency=0,this.encodeLatency=0}setFrameDisplayDeltaTime(e){0==this.frameDisplayDeltaTimeMs&&(this.frameDisplayDeltaTimeMs=Math.round(e))}processFields(){null!=this.EncodeMs||null==this.PreEncodeTimeMs&&null==this.PostEncodeTimeMs||(i.Vy.Info(`Setting Encode Ms \n ${this.PostEncodeTimeMs} \n ${this.PreEncodeTimeMs}`),this.EncodeMs=this.PostEncodeTimeMs-this.PreEncodeTimeMs),null!=this.CaptureToSendMs||null==this.PreCaptureTimeMs&&null==this.PostCaptureTimeMs||(i.Vy.Info(`Setting CaptureToSendMs Ms \n ${this.PostCaptureTimeMs} \n ${this.PreCaptureTimeMs}`),this.CaptureToSendMs=this.PostCaptureTimeMs-this.PreCaptureTimeMs)}}},1065(e,t,n){n.d(t,{f:()=>i});class i{constructor(e){this.freezeFrameHeight=0,this.freezeFrameWidth=0,this.rootDiv=e,this.rootElement=document.createElement("div"),this.rootElement.id="freezeFrame",this.rootElement.style.display="none",this.rootElement.style.pointerEvents="none",this.rootElement.style.position="absolute",this.rootElement.style.zIndex="20",this.imageElement=document.createElement("img"),this.imageElement.style.position="absolute",this.rootElement.appendChild(this.imageElement),this.rootDiv.appendChild(this.rootElement)}setElementForShow(){this.rootElement.style.display="block"}setElementForHide(){this.rootElement.style.display="none"}updateImageElementSource(e){const t=btoa(e.reduce((e,t)=>e+String.fromCharCode(t),""));this.imageElement.src="data:image/jpeg;base64,"+t}setDimensionsFromElementAndResize(){this.freezeFrameHeight=this.imageElement.naturalHeight,this.freezeFrameWidth=this.imageElement.naturalWidth,this.resize()}resize(){if(0!==this.freezeFrameWidth&&0!==this.freezeFrameHeight){let e=0,t=0,n=0,i=0;const s=this.rootDiv.clientWidth/this.rootDiv.clientHeight,r=this.freezeFrameWidth/this.freezeFrameHeight;s<r?(e=this.rootDiv.clientWidth,t=Math.floor(this.rootDiv.clientWidth/r),n=Math.floor(.5*(this.rootDiv.clientHeight-t)),i=0):(e=Math.floor(this.rootDiv.clientHeight*r),t=this.rootDiv.clientHeight,n=0,i=Math.floor(.5*(this.rootDiv.clientWidth-e))),this.rootElement.style.width=this.rootDiv.offsetWidth+"px",this.rootElement.style.height=this.rootDiv.offsetHeight+"px",this.rootElement.style.left="0px",this.rootElement.style.top="0px",this.imageElement.style.width=e+"px",this.imageElement.style.height=t+"px",this.imageElement.style.left=i+"px",this.imageElement.style.top=n+"px"}}}},2865(e,t,n){n.d(t,{f:()=>r});var i=n(948),s=n(1065);class r{constructor(e){this.receiving=!1,this.size=0,this.jpeg=void 0,this.valid=!1,this.freezeFrameDelay=50,this.freezeFrame=new s.f(e)}showFreezeFrame(){this.valid&&this.freezeFrame.setElementForShow()}hideFreezeFrame(){this.valid=!1,this.freezeFrame.setElementForHide()}updateFreezeFrameAndShow(e,t){this.freezeFrame.updateImageElementSource(e),this.freezeFrame.imageElement.onload=()=>{this.freezeFrame.setDimensionsFromElementAndResize(),t()}}processFreezeFrameMessage(e,t){this.receiving||(this.receiving=!0,this.valid=!1,this.size=0,this.jpeg=void 0),this.size=new DataView(e.slice(1,5).buffer).getInt32(0,!0);const n=e.slice(5);if(this.jpeg){const e=new Uint8Array(this.jpeg.length+n.length);e.set(this.jpeg,0),e.set(n,this.jpeg.length),this.jpeg=e}else this.jpeg=n,this.receiving=!0,i.Vy.Info(`received first chunk of freeze frame: ${this.jpeg.length}/${this.size}`);this.jpeg.length===this.size?(this.receiving=!1,this.valid=!0,i.Vy.Info(`received complete freeze frame ${this.size}`),this.updateFreezeFrameAndShow(this.jpeg,t)):this.jpeg.length>this.size&&(i.Vy.Error(`received bigger freeze frame than advertised: ${this.jpeg.length}/${this.size}`),this.jpeg=void 0,this.receiving=!1)}}},3501(e,t,n){n.d(t,{g:()=>r});var i,s=n(4568);!function(e){e[e.RightClusterBottomButton=0]="RightClusterBottomButton",e[e.RightClusterRightButton=1]="RightClusterRightButton",e[e.RightClusterLeftButton=2]="RightClusterLeftButton",e[e.RightClusterTopButton=3]="RightClusterTopButton",e[e.LeftShoulder=4]="LeftShoulder",e[e.RightShoulder=5]="RightShoulder",e[e.LeftTrigger=6]="LeftTrigger",e[e.RightTrigger=7]="RightTrigger",e[e.SelectOrBack=8]="SelectOrBack",e[e.StartOrForward=9]="StartOrForward",e[e.LeftAnalogPress=10]="LeftAnalogPress",e[e.RightAnalogPress=11]="RightAnalogPress",e[e.LeftClusterTopButton=12]="LeftClusterTopButton",e[e.LeftClusterBottomButton=13]="LeftClusterBottomButton",e[e.LeftClusterLeftButton=14]="LeftClusterLeftButton",e[e.LeftClusterRightButton=15]="LeftClusterRightButton",e[e.CentreButton=16]="CentreButton",e[e.LeftStickHorizontal=0]="LeftStickHorizontal",e[e.LeftStickVertical=1]="LeftStickVertical",e[e.RightStickHorizontal=2]="RightStickHorizontal",e[e.RightStickVertical=3]="RightStickVertical"}(i||(i={}));class r{constructor(e){this.streamMessageController=e,this.onGamepadConnectedListener=this.onGamepadConnected.bind(this),this.onGamepadDisconnectedListener=this.onGamepadDisconnected.bind(this),this.beforeUnloadListener=this.onBeforeUnload.bind(this),this.requestAnimationFrame=(window.mozRequestAnimationFrame||window.webkitRequestAnimationFrame||window.requestAnimationFrame).bind(window)}register(){window.addEventListener("beforeunload",this.beforeUnloadListener);const e=window;if("GamepadEvent"in e?(window.addEventListener("gamepadconnected",this.onGamepadConnectedListener),window.addEventListener("gamepaddisconnected",this.onGamepadDisconnectedListener)):"WebKitGamepadEvent"in e&&(window.addEventListener("webkitgamepadconnected",this.onGamepadConnectedListener),window.addEventListener("webkitgamepaddisconnected",this.onGamepadDisconnectedListener)),this.controllers=[],navigator.getGamepads)for(const e of navigator.getGamepads())e&&this.onGamepadConnected(new GamepadEvent("gamepadconnected",{gamepad:e}))}unregister(){window.removeEventListener("gamepadconnected",this.onGamepadConnectedListener),window.removeEventListener("gamepaddisconnected",this.onGamepadDisconnectedListener),window.removeEventListener("webkitgamepadconnected",this.onGamepadConnectedListener),window.removeEventListener("webkitgamepaddisconnected",this.onGamepadDisconnectedListener);for(const e of this.controllers)e&&void 0!==e.id&&this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([e.id]);this.controllers=[]}onGamepadResponseReceived(e){for(const t of this.controllers)if(t&&void 0===t.id){t.id=e;break}}onGamepadConnected(e){const t=e.gamepad,n={currentState:(0,s.L)(t),prevState:(0,s.L)(t),id:void 0};this.controllers[t.index]=n,window.requestAnimationFrame(()=>this.updateStatus()),this.streamMessageController.toStreamerHandlers.get("GamepadConnected")()}onGamepadDisconnected(e){const t=e.gamepad,n=this.controllers[t.index];delete this.controllers[t.index],this.controllers=this.controllers.filter(e=>void 0!==e),void 0!==n.id&&this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([n.id])}scanGamepads(){const e=navigator.getGamepads?navigator.getGamepads():navigator.webkitGetGamepads?navigator.webkitGetGamepads():[];for(let t=0;t<e.length;t++)e[t]&&void 0!==this.controllers[e[t].index]&&(this.controllers[e[t].index].currentState=e[t])}updateStatus(){this.scanGamepads();const e=this.streamMessageController.toStreamerHandlers;for(const t of this.controllers){if(!t)continue;const n=void 0===t.id?this.controllers.indexOf(t):t.id,r=t.currentState;for(let s=0;s<t.currentState.buttons.length;s++){const r=t.currentState.buttons[s],o=t.prevState.buttons[s];r.pressed?s==i.LeftTrigger?e.get("GamepadAnalog")([n,5,r.value]):s==i.RightTrigger?e.get("GamepadAnalog")([n,6,r.value]):e.get("GamepadButtonPressed")([n,s,o.pressed?1:0]):!r.pressed&&o.pressed&&(s==i.LeftTrigger?e.get("GamepadAnalog")([n,5,0]):s==i.RightTrigger?e.get("GamepadAnalog")([n,6,0]):e.get("GamepadButtonReleased")([n,s,0]))}for(let t=0;t<r.axes.length;t+=2){const i=parseFloat(r.axes[t].toFixed(4)),s=-parseFloat(r.axes[t+1].toFixed(4));e.get("GamepadAnalog")([n,t+1,i]),e.get("GamepadAnalog")([n,t+2,s])}const o=this.controllers.indexOf(t);this.controllers[o].prevState=(0,s.L)(r)}this.controllers.length>0&&this.requestAnimationFrame(()=>this.updateStatus())}onBeforeUnload(e){for(const e of this.controllers)e&&void 0!==e.id&&this.streamMessageController.toStreamerHandlers.get("GamepadDisconnected")([e.id])}}},4568(e,t,n){function i(e){return JSON.parse(JSON.stringify({buttons:e.buttons.map(e=>JSON.parse(JSON.stringify({pressed:e.pressed,touched:e.touched,value:e.value}))),axes:e.axes}))}n.d(t,{L:()=>i})},1104(e,t,n){n.d(t,{a:()=>h});var i=n(7281),s=n(6003),r=n(7883),o=n(7633),a=n(7764),l=n(3501),d=n(223),c=n(948);class h{constructor(e,t,n){this.activeKeys=new u,this.toStreamerMessagesProvider=e,this.videoElementProvider=t,this.coordinateConverter=n}registerKeyBoard(e){c.Vy.Info("Register Keyboard Events");const t=new i.Y(this.toStreamerMessagesProvider,e,this.activeKeys);return t.register(),t}registerMouse(e){let t;return c.Vy.Info("Register Mouse Events"),t=e==d.Bs.HoveringMouse?new r.g(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys):new s.u(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter,this.activeKeys),t.register(),t}registerTouch(e){let t;return c.Vy.Info("Registering Touch"),t=e?new a.P(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter):new o.s(this.toStreamerMessagesProvider,this.videoElementProvider,this.coordinateConverter),t.register(),t}registerGamePad(){c.Vy.Info("Register Game Pad");const e=new l.g(this.toStreamerMessagesProvider);return e.register(),e}}class u{constructor(){this.activeKeys=[],this.activeKeys=[]}getActiveKeys(){return this.activeKeys}}},3199(e,t,n){n.d(t,{v:()=>i});const i=Object.freeze({Escape:27,Digit0:48,Digit1:49,Digit2:50,Digit3:51,Digit4:52,Digit5:53,Digit6:54,Digit7:55,Digit8:56,Digit9:57,Minus:173,Equal:187,Backspace:8,Tab:9,KeyQ:81,KeyW:87,KeyE:69,KeyR:82,KeyT:84,KeyY:89,KeyU:85,KeyI:73,KeyO:79,KeyP:80,BracketLeft:219,BracketRight:221,Enter:13,ControlLeft:17,KeyA:65,KeyS:83,KeyD:68,KeyF:70,KeyG:71,KeyH:72,KeyJ:74,KeyK:75,KeyL:76,Semicolon:186,Quote:222,Backquote:192,ShiftLeft:16,Backslash:220,KeyZ:90,KeyX:88,KeyC:67,KeyV:86,KeyB:66,KeyN:78,KeyM:77,Comma:188,Period:190,Slash:191,ShiftRight:253,AltLeft:18,Space:32,CapsLock:20,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,Pause:19,ScrollLock:145,NumpadDivide:111,NumpadMultiply:106,NumpadSubtract:109,NumpadAdd:107,NumpadDecimal:110,Numpad9:105,Numpad8:104,Numpad7:103,Numpad6:102,Numpad5:101,Numpad4:100,Numpad3:99,Numpad2:98,Numpad1:97,Numpad0:96,NumLock:144,ControlRight:254,AltRight:255,Home:36,End:35,ArrowUp:38,ArrowLeft:37,ArrowRight:39,ArrowDown:40,PageUp:33,PageDown:34,Insert:45,Delete:46,ContextMenu:93})},7281(e,t,n){n.d(t,{Y:()=>a});var i=n(4438),s=n(948),r=n(223),o=n(3199);class a{constructor(e,t,n){this.streamMessageController=e,this.config=t,this.activeKeys=n,this.onKeyDownListener=this.handleOnKeyDown.bind(this),this.onKeyUpListener=this.handleOnKeyUp.bind(this),this.onKeyPressListener=this.handleOnKeyPress.bind(this)}register(){document.addEventListener("keydown",this.onKeyDownListener),document.addEventListener("keyup",this.onKeyUpListener),document.addEventListener("keypress",this.onKeyPressListener)}unregister(){document.removeEventListener("keydown",this.onKeyDownListener),document.removeEventListener("keyup",this.onKeyUpListener),document.removeEventListener("keypress",this.onKeyPressListener)}handleOnKeyDown(e){var t;const n=this.getKeycode(e);n&&229!==n&&(null===(t=this.streamMessageController.toStreamerHandlers.get("KeyDown"))||void 0===t||t([this.getKeycode(e),e.repeat?1:0]),this.activeKeys.getActiveKeys().push(n),n===i.h.backSpace&&this.handleOnKeyPress(new KeyboardEvent("keypress",{charCode:i.h.backSpace,keyCode:i.h.backSpace})),this.config.isFlagEnabled(r.iI.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(n)&&e.preventDefault())}handleOnKeyUp(e){var t;const n=this.getKeycode(e);n&&(null===(t=this.streamMessageController.toStreamerHandlers.get("KeyUp"))||void 0===t||t([n]),this.config.isFlagEnabled(r.iI.SuppressBrowserKeys)&&this.isKeyCodeBrowserKey(n)&&e.preventDefault())}handleOnKeyPress(e){var t;const n=this.getKeycode(e);n&&(null===(t=this.streamMessageController.toStreamerHandlers.get("KeyPress"))||void 0===t||t([n]))}getKeycode(e){if(!("keyCode"in e)){const t=e;return t.code in o.v?o.v[t.code]:(s.Vy.Warning(`Keyboard code of ${t.code} is not supported in our mapping, ignoring this key.`),null)}return e.keyCode===i.h.shift&&"ShiftRight"===e.code?i.h.rightShift:e.keyCode===i.h.control&&"ControlRight"===e.code?i.h.rightControl:e.keyCode===i.h.alt&&"AltRight"===e.code?i.h.rightAlt:e.keyCode}isKeyCodeBrowserKey(e){return e>=112&&e<=123||9===e}}},8888(e,t,n){n.d(t,{J:()=>s,w:()=>i});class i{}i.mainButton=0,i.auxiliaryButton=1,i.secondaryButton=2,i.fourthButton=3,i.fifthButton=4;class s{}s.primaryButton=1,s.secondaryButton=2,s.auxiliaryButton=4,s.fourthButton=8,s.fifthButton=16},6141(e,t,n){n.d(t,{M:()=>s});var i=n(8888);class s{constructor(e,t,n,i){this.streamMessageController=e,this.coordinateConverter=n,this.videoPlayer=t,this.activeKeys=i,this.onEnterListener=this.onMouseEnter.bind(this),this.onLeaveListener=this.onMouseLeave.bind(this)}register(){this.registerMouseEnterAndLeaveEvents()}unregister(){this.unregisterMouseEnterAndLeaveEvents()}registerMouseEnterAndLeaveEvents(){const e=this.videoPlayer.getVideoParentElement();null==e||e.addEventListener("mouseenter",this.onEnterListener),null==e||e.addEventListener("mouseleave",this.onLeaveListener)}unregisterMouseEnterAndLeaveEvents(){const e=this.videoPlayer.getVideoParentElement();null==e||e.removeEventListener("mouseenter",this.onEnterListener),null==e||e.removeEventListener("mouseleave",this.onLeaveListener)}onMouseEnter(e){var t;this.videoPlayer.isVideoReady()&&(null===(t=this.streamMessageController.toStreamerHandlers.get("MouseEnter"))||void 0===t||t(),this.pressMouseButtons(e.buttons,e.x,e.y))}onMouseLeave(e){var t;this.videoPlayer.isVideoReady()&&(null===(t=this.streamMessageController.toStreamerHandlers.get("MouseLeave"))||void 0===t||t(),this.releaseMouseButtons(e.buttons,e.x,e.y))}releaseMouseButtons(e,t,n){const s=this.coordinateConverter.translateUnsigned(t,n);e&i.J.primaryButton&&this.sendMouseUp(i.w.mainButton,s.x,s.y),e&i.J.secondaryButton&&this.sendMouseUp(i.w.secondaryButton,s.x,s.y),e&i.J.auxiliaryButton&&this.sendMouseUp(i.w.auxiliaryButton,s.x,s.y),e&i.J.fourthButton&&this.sendMouseUp(i.w.fourthButton,s.x,s.y),e&i.J.fifthButton&&this.sendMouseUp(i.w.fifthButton,s.x,s.y)}pressMouseButtons(e,t,n){if(!this.videoPlayer.isVideoReady())return;const s=this.coordinateConverter.translateUnsigned(t,n);e&i.J.primaryButton&&this.sendMouseDown(i.w.mainButton,s.x,s.y),e&i.J.secondaryButton&&this.sendMouseDown(i.w.secondaryButton,s.x,s.y),e&i.J.auxiliaryButton&&this.sendMouseDown(i.w.auxiliaryButton,s.x,s.y),e&i.J.fourthButton&&this.sendMouseDown(i.w.fourthButton,s.x,s.y),e&i.J.fifthButton&&this.sendMouseDown(i.w.fifthButton,s.x,s.y)}sendMouseDown(e,t,n){var i;null===(i=this.streamMessageController.toStreamerHandlers.get("MouseDown"))||void 0===i||i([e,t,n])}sendMouseUp(e,t,n){var i;const s=this.coordinateConverter.translateUnsigned(t,n);null===(i=this.streamMessageController.toStreamerHandlers.get("MouseUp"))||void 0===i||i([e,s.x,s.y])}}},7883(e,t,n){n.d(t,{g:()=>s});var i=n(6141);class s extends i.M{constructor(e,t,n,i){super(e,t,n,i),this.videoElementParent=t.getVideoParentElement(),this.onMouseUpListener=this.onMouseUp.bind(this),this.onMouseDownListener=this.onMouseDown.bind(this),this.onMouseDblClickListener=this.onMouseDblClick.bind(this),this.onMouseWheelListener=this.onMouseWheel.bind(this),this.onMouseMoveListener=this.onMouseMove.bind(this),this.onContextMenuListener=this.onContextMenu.bind(this)}register(){super.register(),this.videoElementParent.addEventListener("mousemove",this.onMouseMoveListener),this.videoElementParent.addEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.addEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.addEventListener("contextmenu",this.onContextMenuListener),this.videoElementParent.addEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.addEventListener("dblclick",this.onMouseDblClickListener)}unregister(){this.videoElementParent.removeEventListener("mousemove",this.onMouseMoveListener),this.videoElementParent.removeEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.removeEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.removeEventListener("contextmenu",this.onContextMenuListener),this.videoElementParent.removeEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.removeEventListener("dblclick",this.onMouseDblClickListener),super.unregister()}onMouseDown(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseDown")([e.button,t.x,t.y]),e.preventDefault()}onMouseUp(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseUp")([e.button,t.x,t.y]),e.preventDefault()}onContextMenu(e){this.videoPlayer.isVideoReady()&&e.preventDefault()}onMouseMove(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY),n=this.coordinateConverter.translateSigned(e.movementX,e.movementY);this.streamMessageController.toStreamerHandlers.get("MouseMove")([t.x,t.y,n.x,n.y]),e.preventDefault()}onMouseWheel(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseWheel")([e.wheelDelta,t.x,t.y]),e.preventDefault()}onMouseDblClick(e){if(!this.videoPlayer.isVideoReady())return;const t=this.coordinateConverter.translateUnsigned(e.offsetX,e.offsetY);this.streamMessageController.toStreamerHandlers.get("MouseDouble")([e.button,t.x,t.y])}}},6003(e,t,n){n.d(t,{u:()=>r});var i=n(948),s=n(6141);class r extends s.M{constructor(e,t,n,i){super(e,t,n,i),this.videoElementParent=t.getVideoParentElement(),this.x=this.videoElementParent.getBoundingClientRect().width/2,this.y=this.videoElementParent.getBoundingClientRect().height/2,this.normalizedCoord=this.coordinateConverter.translateUnsigned(this.x,this.y),this.onRequestLockListener=this.onRequestLock.bind(this),this.onLockStateChangeListener=this.onLockStateChange.bind(this),this.onMouseUpListener=this.onMouseUp.bind(this),this.onMouseDownListener=this.onMouseDown.bind(this),this.onMouseDblClickListener=this.onMouseDblClick.bind(this),this.onMouseWheelListener=this.onMouseWheel.bind(this),this.onMouseMoveListener=this.onMouseMove.bind(this)}register(){super.register(),this.videoElementParent.requestPointerLock=this.videoElementParent.requestPointerLock||this.videoElementParent.mozRequestPointerLock,document.exitPointerLock=document.exitPointerLock||document.mozExitPointerLock,this.videoElementParent.requestPointerLock&&this.videoElementParent.addEventListener("click",this.onRequestLockListener),document.addEventListener("pointerlockchange",this.onLockStateChangeListener),document.addEventListener("mozpointerlockchange",this.onLockStateChangeListener),this.videoElementParent.addEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.addEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.addEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.addEventListener("dblclick",this.onMouseDblClickListener)}unregister(){const e=document.pointerLockElement||document.mozPointerLockElement;document.exitPointerLock&&e===this.videoElementParent&&document.exitPointerLock(),this.videoElementParent.removeEventListener("click",this.onRequestLockListener),document.removeEventListener("pointerlockchange",this.onLockStateChangeListener),document.removeEventListener("mozpointerlockchange",this.onLockStateChangeListener),document.removeEventListener("mousemove",this.onMouseMoveListener),this.videoElementParent.removeEventListener("mousedown",this.onMouseDownListener),this.videoElementParent.removeEventListener("mouseup",this.onMouseUpListener),this.videoElementParent.removeEventListener("wheel",this.onMouseWheelListener),this.videoElementParent.removeEventListener("dblclick",this.onMouseDblClickListener),super.unregister()}onRequestLock(){this.videoElementParent.requestPointerLock()}onLockStateChange(){(document.pointerLockElement||document.mozPointerLockElement)===this.videoElementParent?(i.Vy.Info("Pointer locked"),document.addEventListener("mousemove",this.onMouseMoveListener)):(i.Vy.Info("The pointer lock status is now unlocked"),document.removeEventListener("mousemove",this.onMouseMoveListener),this.activeKeys.getActiveKeys().forEach(e=>{this.streamMessageController.toStreamerHandlers.get("KeyUp")([e])}))}onMouseDown(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseDown")([e.button,this.normalizedCoord.x,this.normalizedCoord.y])}onMouseUp(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseUp")([e.button,this.normalizedCoord.x,this.normalizedCoord.y])}onMouseMove(e){if(!this.videoPlayer.isVideoReady())return;const t=this.videoPlayer.getVideoParentElement().clientWidth,n=this.videoPlayer.getVideoParentElement().clientHeight;for(this.x+=e.movementX,this.y+=e.movementY;this.x>t;)this.x-=t;for(;this.y>n;)this.y-=n;for(;this.x<0;)this.x+=t;for(;this.y<0;)this.y+=n;this.normalizedCoord=this.coordinateConverter.translateUnsigned(this.x,this.y);const i=this.coordinateConverter.translateSigned(e.movementX,e.movementY);this.streamMessageController.toStreamerHandlers.get("MouseMove")([this.normalizedCoord.x,this.normalizedCoord.y,i.x,i.y])}onMouseWheel(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseWheel")([e.wheelDelta,this.normalizedCoord.x,this.normalizedCoord.y])}onMouseDblClick(e){this.videoPlayer.isVideoReady()&&this.streamMessageController.toStreamerHandlers.get("MouseDouble")([e.button,this.normalizedCoord.x,this.normalizedCoord.y])}}},4438(e,t,n){n.d(t,{h:()=>i});class i{}i.backSpace=8,i.shift=16,i.control=17,i.alt=18,i.rightShift=253,i.rightControl=254,i.rightAlt=255},7633(e,t,n){n.d(t,{s:()=>s});var i=n(948);class s{constructor(e,t,n){this.fingers=[9,8,7,6,5,4,3,2,1,0],this.fingerIds=new Map,this.maxByteValue=255,this.streamMessageController=e,this.videoPlayer=t,this.coordinateConverter=n,this.videoElementParent=t.getVideoElement(),this.onTouchStartListener=this.onTouchStart.bind(this),this.onTouchEndListener=this.onTouchEnd.bind(this),this.onTouchMoveListener=this.onTouchMove.bind(this)}register(){this.videoElementParent.addEventListener("touchstart",this.onTouchStartListener),this.videoElementParent.addEventListener("touchend",this.onTouchEndListener),this.videoElementParent.addEventListener("touchmove",this.onTouchMoveListener)}unregister(){this.videoElementParent.removeEventListener("touchstart",this.onTouchStartListener),this.videoElementParent.removeEventListener("touchend",this.onTouchEndListener),this.videoElementParent.removeEventListener("touchmove",this.onTouchMoveListener)}rememberTouch(e){const t=this.fingers.pop();void 0===t&&i.Vy.Info("exhausted touch identifiers"),this.fingerIds.set(e.identifier,t)}forgetTouch(e){this.fingers.push(this.fingerIds.get(e.identifier)),this.fingers.sort(function(e,t){return t-e}),this.fingerIds.delete(e.identifier)}onTouchStart(e){if(this.videoPlayer.isVideoReady()){for(let t=0;t<e.changedTouches.length;t++)this.rememberTouch(e.changedTouches[t]);this.emitTouchData("TouchStart",e.changedTouches),e.preventDefault()}}onTouchEnd(e){if(this.videoPlayer.isVideoReady()){this.emitTouchData("TouchEnd",e.changedTouches);for(let t=0;t<e.changedTouches.length;t++)this.forgetTouch(e.changedTouches[t]);e.preventDefault()}}onTouchMove(e){this.videoPlayer.isVideoReady()&&(this.emitTouchData("TouchMove",e.touches),e.preventDefault())}emitTouchData(e,t){if(!this.videoPlayer.isVideoReady())return;const n=this.videoPlayer.getVideoParentElement().getBoundingClientRect(),s=this.streamMessageController.toStreamerHandlers;for(let r=0;r<t.length;r++){const o=1,a=t[r],l=a.clientX-n.left,d=a.clientY-n.top;i.Vy.Info(`F${this.fingerIds.get(a.identifier)}=(${l}, ${d})`);const c=this.coordinateConverter.translateUnsigned(l,d);switch(e){case"TouchStart":s.get("TouchStart")([o,c.x,c.y,this.fingerIds.get(a.identifier),this.maxByteValue*(a.force>0?a.force:1),c.inRange?1:0]);break;case"TouchEnd":s.get("TouchEnd")([o,c.x,c.y,this.fingerIds.get(a.identifier),this.maxByteValue*a.force,c.inRange?1:0]);break;case"TouchMove":s.get("TouchMove")([o,c.x,c.y,this.fingerIds.get(a.identifier),this.maxByteValue*(a.force>0?a.force:1),c.inRange?1:0])}}}}},7764(e,t,n){n.d(t,{P:()=>s});var i=n(8888);class s{constructor(e,t,n){this.streamMessageController=e,this.videoPlayer=t,this.coordinateConverter=n,this.onTouchStartListener=this.onTouchStart.bind(this),this.onTouchEndListener=this.onTouchEnd.bind(this),this.onTouchMoveListener=this.onTouchMove.bind(this),this.videoElementParentClientRect=this.videoPlayer.getVideoParentElement().getBoundingClientRect()}register(){document.addEventListener("touchstart",this.onTouchStartListener),document.addEventListener("touchend",this.onTouchEndListener),document.addEventListener("touchmove",this.onTouchMoveListener)}unregister(){document.removeEventListener("touchstart",this.onTouchStartListener),document.removeEventListener("touchend",this.onTouchEndListener),document.removeEventListener("touchmove",this.onTouchMoveListener)}onTouchStart(e){if(this.videoPlayer.isVideoReady()&&e.target===this.videoPlayer.getVideoElement()){if(null==this.fakeTouchFinger){const t=e.changedTouches[0];this.fakeTouchFinger={id:t.identifier,x:t.clientX-this.videoElementParentClientRect.left,y:t.clientY-this.videoElementParentClientRect.top};const n=this.videoPlayer.getVideoParentElement(),s=new MouseEvent("mouseenter",t);n.dispatchEvent(s);const r=this.coordinateConverter.translateUnsigned(this.fakeTouchFinger.x,this.fakeTouchFinger.y);this.streamMessageController.toStreamerHandlers.get("MouseDown")([i.w.mainButton,r.x,r.y])}e.preventDefault()}}onTouchEnd(e){if(!this.videoPlayer.isVideoReady()||null==this.fakeTouchFinger)return;const t=this.videoPlayer.getVideoParentElement(),n=this.streamMessageController.toStreamerHandlers;for(let s=0;s<e.changedTouches.length;s++){const r=e.changedTouches[s];if(r.identifier===this.fakeTouchFinger.id){const e=r.clientX-this.videoElementParentClientRect.left,s=r.clientY-this.videoElementParentClientRect.top,o=this.coordinateConverter.translateUnsigned(e,s);n.get("MouseUp")([i.w.mainButton,o.x,o.y]);const a=new MouseEvent("mouseleave",r);t.dispatchEvent(a),this.fakeTouchFinger=null;break}}e.preventDefault()}onTouchMove(e){if(!this.videoPlayer.isVideoReady()||null==this.fakeTouchFinger)return;const t=this.streamMessageController.toStreamerHandlers;for(let n=0;n<e.touches.length;n++){const i=e.touches[n];if(i.identifier===this.fakeTouchFinger.id){const e=i.clientX-this.videoElementParentClientRect.left,n=i.clientY-this.videoElementParentClientRect.top,s=this.coordinateConverter.translateUnsigned(e,n),r=this.coordinateConverter.translateSigned(e-this.fakeTouchFinger.x,n-this.fakeTouchFinger.y);t.get("MouseMove")([s.x,s.y,r.x,r.y]),this.fakeTouchFinger.x=e,this.fakeTouchFinger.y=n;break}}e.preventDefault()}}},2807(e,t,n){n.d(t,{E:()=>s});var i=n(4568);class s{constructor(e){this.toStreamerMessagesProvider=e,this.controllers=[]}updateStatus(e,t,n){if(e.gamepad){const s=t.getPose(e.gripSpace,n);if(!s)return;let r=0;e.profiles.includes("htc-vive")?r=1:e.profiles.includes("oculus-touch")&&(r=2),this.toStreamerMessagesProvider.toStreamerHandlers.get("XRSystem")([r]);let o=2;switch(e.handedness){case"left":o=0;break;case"right":o=1}const a=s.transform.matrix,l=[];for(let e=0;e<16;e++)l[e]=new Float32Array([a[e]])[0];this.toStreamerMessagesProvider.toStreamerHandlers.get("XRControllerTransform")([l[0],l[4],l[8],l[12],l[1],l[5],l[9],l[13],l[2],l[6],l[10],l[14],l[3],l[7],l[11],l[15],o]),void 0===this.controllers[o]&&(this.controllers[o]={prevState:void 0,currentState:void 0,id:void 0},this.controllers[o].prevState=(0,i.L)(e.gamepad)),this.controllers[o].currentState=(0,i.L)(e.gamepad);const d=this.controllers[o],c=d.currentState,h=d.prevState;for(let e=0;e<c.buttons.length;e++){const t=c.buttons[e],n=h.buttons[e];if(t.pressed){const i=n.pressed?1:0;this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonPressed")([o,e,i,t.value])}else n.pressed&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonReleased")([o,e,0]);if(t.touched){const t=n.touched?1:0;this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonTouched")([o,e,t])}else n.touched&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRButtonTouchReleased")([o,e,0])}for(let e=0;e<c.axes.length;e++){const t=c.axes[e];t!=h.axes[e]&&this.toStreamerMessagesProvider.toStreamerHandlers.get("XRAnalog")([o,e,t])}this.controllers[o].prevState=c}}}},6679(e,t,n){n.d(t,{F:()=>c});var i=n(5683),s=n(8749),r=n(9904),o=n(434),a=n(5016),l=n(156),d=n(948);class c{constructor(){this.inboundVideoStats=new i.IR,this.inboundAudioStats=new i.$o,this.datachannelStats=new s.L,this.outboundVideoStats=new o.k,this.outboundAudioStats=new o.k,this.remoteOutboundAudioStats=new o.G,this.remoteOutboundVideoStats=new o.G,this.sessionStats=new a.Y,this.streamStats=new l.I,this.codecs=new Map}processStats(e){this.localCandidates=new Array,this.remoteCandidates=new Array,this.candidatePairs=new Array,e.forEach(e=>{switch(e.type){case"candidate-pair":this.handleCandidatePair(e);break;case"certificate":case"media-source":case"media-playout":case"peer-connection":case"remote-inbound-rtp":break;case"codec":this.handleCodec(e);break;case"data-channel":this.handleDataChannel(e);break;case"inbound-rtp":this.handleInboundRTP(e);break;case"local-candidate":this.handleLocalCandidate(e);break;case"outbound-rtp":this.handleLocalOutbound(e);break;case"remote-candidate":this.handleRemoteCandidate(e);break;case"remote-outbound-rtp":this.handleRemoteOutbound(e);break;case"track":this.handleTrack(e);break;case"transport":this.handleTransport(e);break;case"stream":this.handleStream(e);break;default:d.Vy.Error("unhandled Stat Type"),d.Vy.Info(e)}})}handleStream(e){this.streamStats=e}handleCandidatePair(e){this.candidatePairs.push(e)}handleDataChannel(e){this.datachannelStats.bytesReceived=e.bytesReceived,this.datachannelStats.bytesSent=e.bytesSent,this.datachannelStats.dataChannelIdentifier=e.dataChannelIdentifier,this.datachannelStats.id=e.id,this.datachannelStats.label=e.label,this.datachannelStats.messagesReceived=e.messagesReceived,this.datachannelStats.messagesSent=e.messagesSent,this.datachannelStats.protocol=e.protocol,this.datachannelStats.state=e.state,this.datachannelStats.timestamp=e.timestamp}handleLocalCandidate(e){const t=new r.y;t.label="local-candidate",t.address=e.address,t.port=e.port,t.protocol=e.protocol,t.candidateType=e.candidateType,t.id=e.id,t.relayProtocol=e.relayProtocol,t.transportId=e.transportId,this.localCandidates.push(t)}handleRemoteCandidate(e){const t=new r.y;t.label="remote-candidate",t.address=e.address,t.port=e.port,t.protocol=e.protocol,t.id=e.id,t.candidateType=e.candidateType,t.relayProtocol=e.relayProtocol,t.transportId=e.transportId,this.remoteCandidates.push(t)}handleInboundRTP(e){switch(e.kind){case"video":e.bytesReceived>this.inboundVideoStats.bytesReceived&&e.timestamp>this.inboundVideoStats.timestamp&&(this.inboundVideoStats.bitrate=8*(e.bytesReceived-this.inboundVideoStats.bytesReceived)/(e.timestamp-this.inboundVideoStats.timestamp),this.inboundVideoStats.bitrate=Math.floor(this.inboundVideoStats.bitrate));for(const t in e)this.inboundVideoStats[t]=e[t];break;case"audio":e.bytesReceived>this.inboundAudioStats.bytesReceived&&e.timestamp>this.inboundAudioStats.timestamp&&(this.inboundAudioStats.bitrate=8*(e.bytesReceived-this.inboundAudioStats.bytesReceived)/(e.timestamp-this.inboundAudioStats.timestamp),this.inboundAudioStats.bitrate=Math.floor(this.inboundAudioStats.bitrate));for(const t in e)this.inboundAudioStats[t]=e[t];break;default:d.Vy.Error(`Kind should be audio or video, we got ${e.kind} - that's unsupported.`)}}handleLocalOutbound(e){const t="audio"===e.kind?this.outboundAudioStats:this.outboundVideoStats;t.active=e.active,t.codecId=e.codecId,t.bytesSent=e.bytesSent,t.frameHeight=e.frameHeight,t.frameWidth=e.frameWidth,t.framesEncoded=e.framesEncoded,t.framesPerSecond=e.framesPerSecond,t.headerBytesSent=e.headerBytesSent,t.id=e.id,t.keyFramesEncoded=e.keyFramesEncoded,t.kind=e.kind,t.mediaSourceId=e.mediaSourceId,t.mid=e.mid,t.nackCount=e.nackCount,t.packetsSent=e.packetsSent,t.qpSum=e.qpSum,t.qualityLimitationDurations=e.qualityLimitationDurations,t.qualityLimitationReason=e.qualityLimitationReason,t.remoteId=e.remoteId,t.retransmittedBytesSent=e.retransmittedBytesSent,t.rid=e.rid,t.scalabilityMode=e.scalabilityMode,t.ssrc=e.ssrc,t.targetBitrate=e.targetBitrate,t.timestamp=e.timestamp,t.totalEncodeTime=e.totalEncodeTime,t.totalEncodeBytesTarget=e.totalEncodeBytesTarget,t.totalPacketSendDelay=e.totalPacketSendDelay,t.transportId=e.transportId}handleRemoteOutbound(e){const t="audio"===e.kind?this.remoteOutboundAudioStats:this.remoteOutboundVideoStats;t.bytesSent=e.bytesSent,t.codecId=e.codecId,t.id=e.id,t.kind=e.kind,t.localId=e.localId,t.packetsSent=e.packetsSent,t.remoteTimestamp=e.remoteTimestamp,t.reportsSent=e.reportsSent,t.roundTripTimeMeasurements=e.roundTripTimeMeasurements,t.ssrc=e.ssrc,t.timestamp=e.timestamp,t.totalRoundTripTime=e.totalRoundTripTime,t.transportId=e.transportId}handleTrack(e){"track"!==e.type||"video_label"!==e.trackIdentifier&&"video"!==e.kind||(this.inboundVideoStats.framesDropped=e.framesDropped,this.inboundVideoStats.framesReceived=e.framesReceived,this.inboundVideoStats.frameHeight=e.frameHeight,this.inboundVideoStats.frameWidth=e.frameWidth)}handleTransport(e){this.transportStats=e}handleCodec(e){const t=e.id;this.codecs.set(t,e)}handleSessionStatistics(e,t,n){const i=Date.now()-e;this.sessionStats.runTime=new Date(i).toISOString().substr(11,8).toString();const s=null===t?"Not sent yet":t?"true":"false";this.sessionStats.controlsStreamInput=s,this.sessionStats.videoEncoderAvgQP=n}isNumber(e){return"number"==typeof e&&isFinite(e)}getActiveCandidatePair(){if(void 0===this.candidatePairs)return null;if(this.transportStats){const e=this.candidatePairs.find(e=>e.id===this.transportStats.selectedCandidatePairId);return void 0===e?null:e}const e=this.candidatePairs.find(e=>e.selected);return void 0===e?null:e}}},9904(e,t,n){n.d(t,{y:()=>i});class i{}},8749(e,t,n){n.d(t,{L:()=>i});class i{}},5683(e,t,n){n.d(t,{$o:()=>i,IR:()=>s});class i{}class s{}},7937(e,t,n){n.d(t,{b3:()=>r});class i{}class s{}class r{constructor(){this.latestSenderRecvClockOffset=null}calculate(e,t){const n=new o,i=this.getRTTMs(e);if(null!=i){n.rttMs=i;const s=this.getCaptureSource(t);if(null!=s){const t=this.calculateSenderLatency(e,s);null!==t&&(n.senderLatencyMs=t)}}return void 0!==e.inboundVideoStats.totalProcessingDelay&&void 0!==e.inboundVideoStats.framesDecoded&&(n.averageProcessingDelayMs=e.inboundVideoStats.totalProcessingDelay/e.inboundVideoStats.framesDecoded*1e3),void 0!==e.inboundVideoStats.jitterBufferDelay&&void 0!==e.inboundVideoStats.jitterBufferEmittedCount&&(n.averageJitterBufferDelayMs=e.inboundVideoStats.jitterBufferDelay/e.inboundVideoStats.jitterBufferEmittedCount*1e3),void 0!==e.inboundVideoStats.framesDecoded&&void 0!==e.inboundVideoStats.totalDecodeTime&&(n.averageDecodeLatencyMs=e.inboundVideoStats.totalDecodeTime/e.inboundVideoStats.framesDecoded*1e3),void 0!==e.inboundVideoStats.totalAssemblyTime&&void 0!==e.inboundVideoStats.framesAssembledFromMultiplePackets&&(n.averageAssemblyDelayMs=e.inboundVideoStats.totalAssemblyTime/e.inboundVideoStats.framesAssembledFromMultiplePackets*1e3),void 0!==e.inboundVideoStats.googTimingFrameInfo&&e.inboundVideoStats.googTimingFrameInfo.length>0&&(n.frameTiming=this.extractFrameTimingInfo(e.inboundVideoStats.googTimingFrameInfo)),void 0!==n.frameTiming&&void 0!==n.frameTiming.captureToSendLatencyMs&&void 0!==n.averageProcessingDelayMs&&void 0!==n.rttMs&&(n.averageE2ELatency=n.frameTiming.captureToSendLatencyMs+.5*n.rttMs+n.averageProcessingDelayMs),null!=n.senderLatencyMs&&void 0!==n.averageProcessingDelayMs&&void 0!==n.rttMs&&(n.averageE2ELatency=n.senderLatencyMs+.5*n.rttMs+n.averageProcessingDelayMs),n}extractFrameTimingInfo(e){const t=new s,n=e.split(",");return 15===n.length&&(t.rtpTimestamp=Number.parseInt(n[0]),t.captureTimestamp=Number.parseInt(n[1]),t.encodeStartTimestamp=Number.parseInt(n[2]),t.encodeFinishTimestamp=Number.parseInt(n[3]),t.packetizerFinishTimestamp=Number.parseInt(n[4]),t.pacerExitTimestamp=Number.parseInt(n[5]),t.networkTimestamp1=Number.parseInt(n[6]),t.networkTimestamp2=Number.parseInt(n[7]),t.receiveStart=Number.parseInt(n[8]),t.receiveFinish=Number.parseInt(n[9]),t.decodeStart=Number.parseInt(n[10]),t.decodeFinish=Number.parseInt(n[11]),t.renderTime=Number.parseInt(n[12]),t.isOutlier=Number.parseInt(n[13])>0,t.isTriggeredByTimer=Number.parseInt(n[14])>0,t.encoderLatencyMs=t.encodeFinishTimestamp-t.encodeStartTimestamp,t.packetizeLatencyMs=t.packetizerFinishTimestamp-t.encodeFinishTimestamp,t.pacerLatencyMs=t.pacerExitTimestamp-t.packetizerFinishTimestamp,t.captureToSendLatencyMs=t.pacerExitTimestamp-t.captureTimestamp),t}calculateSenderLatency(e,t){const n=t.captureTimestamp+t.senderCaptureTimeOffset;let i=this.calculateSenderReceiverClockOffset(e);if(null==i){if(null==this.latestSenderRecvClockOffset)return null;i=this.latestSenderRecvClockOffset}else this.latestSenderRecvClockOffset=i;const s=n+i-22089888e5;return t.timestamp-s}getCaptureSource(e){e=e.filter(e=>"video"===e.track.kind);for(const t of e){const e=t.getSynchronizationSources().concat(t.getContributingSources());for(const t of e)if(void 0!==t.captureTimestamp&&void 0!==t.senderCaptureTimeOffset&&void 0!==t.timestamp){const e=new i;return e.timestamp=t.timestamp,e.captureTimestamp=t.captureTimestamp,e.senderCaptureTimeOffset=t.senderCaptureTimeOffset,e}}return null}calculateSenderReceiverClockOffset(e){if(void 0===e.remoteOutboundVideoStats||void 0===e.remoteOutboundVideoStats.timestamp||void 0===e.remoteOutboundVideoStats.remoteTimestamp)return null;const t=e.remoteOutboundVideoStats.timestamp,n=e.remoteOutboundVideoStats.remoteTimestamp,i=this.getRTTMs(e);return void 0!==t&&void 0!==n&&null!==i?t-(n+.5*i):null}getRTTMs(e){const t=e.getActiveCandidatePair();return t&&void 0!==t.currentRoundTripTime?1e3*t.currentRoundTripTime:e.remoteOutboundVideoStats&&void 0!==e.remoteOutboundVideoStats.totalRoundTripTime&&void 0!==e.remoteOutboundVideoStats.roundTripTimeMeasurements&&e.remoteOutboundVideoStats.roundTripTimeMeasurements>0?e.remoteOutboundVideoStats.totalRoundTripTime/e.remoteOutboundVideoStats.roundTripTimeMeasurements*1e3:e.remoteOutboundAudioStats&&void 0!==e.remoteOutboundAudioStats.totalRoundTripTime&&void 0!==e.remoteOutboundAudioStats.roundTripTimeMeasurements&&e.remoteOutboundAudioStats.roundTripTimeMeasurements>0?e.remoteOutboundAudioStats.totalRoundTripTime/e.remoteOutboundAudioStats.roundTripTimeMeasurements*1e3:null}}class o{constructor(){this.senderLatencyMs=void 0,this.senderLatencyAbsCaptureTimeMs=void 0,this.rttMs=void 0,this.averageProcessingDelayMs=void 0,this.averageJitterBufferDelayMs=void 0,this.averageDecodeLatencyMs=void 0,this.averageAssemblyDelayMs=void 0,this.averageE2ELatency=void 0,this.frameTiming=void 0}}},434(e,t,n){n.d(t,{G:()=>s,k:()=>i});class i{}class s{}},1615(e,t,n){n.d(t,{J:()=>h});var i=n(948),s=n(223),r=n(6679),o=n(7963),a=n(3507),l=n(9046),d=n(7937),c=function(e,t,n,i){return new(n||(n=Promise))(function(s,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}l((i=i.apply(e,t||[])).next())})};class h{constructor(e,t,n){this.config=t,this.createPeerConnection(e,n),this.latencyCalculator=new d.b3}createPeerConnection(e,t){this.config.isFlagEnabled(s.iI.ForceTURN)&&(e.iceTransportPolicy="relay",i.Vy.Info("Forcing TURN usage by setting ICE Transport Policy in peer connection config.")),this.peerConnection=new RTCPeerConnection(e),this.peerConnection.onsignalingstatechange=e=>this.handleSignalStateChange(e),this.peerConnection.oniceconnectionstatechange=e=>this.handleIceConnectionStateChange(e),this.peerConnection.onicegatheringstatechange=e=>this.handleIceGatheringStateChange(e),this.peerConnection.ontrack=e=>this.handleOnTrack(e),this.peerConnection.onicecandidate=e=>this.handleIceCandidate(e),this.peerConnection.ondatachannel=e=>this.handleDataChannel(e),this.aggregatedStats=new r.F,this.preferredCodec=t,this.updateCodecSelection=!0}createOffer(e,t){return c(this,void 0,void 0,function*(){i.Vy.Info("Create Offer");const n="localhost"===location.hostname||"127.0.0.1"===location.hostname,r="https:"===location.protocol;let o=t.isFlagEnabled(s.iI.UseMic),a=t.isFlagEnabled(s.iI.UseCamera);!o&&!a||n||r||(o=!1,a=!1,i.Vy.Error("Microphone and Webcam access in the browser will not work if you are not on HTTPS or localhost. Disabling mic and webcam access."),i.Vy.Error("For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.setupTransceiversAsync(o,a).finally(()=>{var t;null===(t=this.peerConnection)||void 0===t||t.createOffer(e).then(e=>{var t;this.showTextOverlayConnecting(),e.sdp=this.mungeSDP(e.sdp,o),null===(t=this.peerConnection)||void 0===t||t.setLocalDescription(e),this.onSendWebRTCOffer(e)}).catch(()=>{this.showTextOverlaySetupFailure()})})})}receiveOffer(e,t){return c(this,void 0,void 0,function*(){var n;i.Vy.Info("Receive Offer"),this.isFirefox()&&(e.sdp=e.sdp.replace(/^a=extmap:\d+ http:\/\/www\.webrtc\.org\/experiments\/rtp-hdrext\/abs-capture-time\r\n/gm,"")),null===(n=this.peerConnection)||void 0===n||n.setRemoteDescription(e).then(()=>{this.onSetRemoteDescription(e);const n="localhost"===location.hostname||"127.0.0.1"===location.hostname,r="https:"===location.protocol;let o=t.isFlagEnabled(s.iI.UseMic),a=t.isFlagEnabled(s.iI.UseCamera);!o&&!a||n||r||(o=!1,a=!1,i.Vy.Error("Microphone and Webcam access in the browser will not work if you are not on HTTPS or localhost. Disabling mic and webcam access."),i.Vy.Error("For testing you can enable HTTP microphone access Chrome by visiting chrome://flags/ and enabling 'unsafely-treat-insecure-origin-as-secure'")),this.config.setOptionSettingOptions(s.mY.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(e)),this.setupTransceiversAsync(o,a).finally(()=>{var e;null===(e=this.peerConnection)||void 0===e||e.createAnswer().then(e=>{var t;return e.sdp=this.mungeSDP(e.sdp,o),null===(t=this.peerConnection)||void 0===t?void 0:t.setLocalDescription(e)}).then(()=>{var e;this.onSetLocalDescription(null===(e=this.peerConnection)||void 0===e?void 0:e.currentLocalDescription)}).catch(e=>{i.Vy.Error(`createAnswer() failed - ${e}`)})})})})}receiveAnswer(e){var t;null===(t=this.peerConnection)||void 0===t||t.setRemoteDescription(e),this.config.setOptionSettingOptions(s.mY.PreferredCodec,this.fuzzyIntersectUEAndBrowserCodecs(e))}generateStats(){this.peerConnection.getStats().then(e=>{this.aggregatedStats.processStats(e),this.onVideoStats(this.aggregatedStats);const t=this.latencyCalculator.calculate(this.aggregatedStats,this.peerConnection.getReceivers());if(this.onLatencyCalculated(t),this.updateCodecSelection&&this.aggregatedStats.inboundVideoStats.codecId){const e=this.aggregatedStats.codecs.get(this.aggregatedStats.inboundVideoStats.codecId);if(void 0===e)return;const t=e.mimeType.replace("video/","");let n=t;e.sdpFmtpLine&&""!==e.sdpFmtpLine.trim()&&(n=`${t} ${e.sdpFmtpLine.trim()}`);const i=this.config.getSettingOption(s.mY.PreferredCodec).options;if(i.includes(n))return void this.config.setOptionSettingValue(s.mY.PreferredCodec,n);const r=i.filter(e=>-1!==e.indexOf(t));if(r.length>0)return void this.config.setOptionSettingValue(s.mY.PreferredCodec,r[0])}})}close(){this.peerConnection&&(this.peerConnection.close(),this.peerConnection=null)}mungeSDP(e,t){let n=e.replace(/(a=fmtp:\d+ .*level-asymmetry-allowed=.*)\r\n/gm,"$1;x-google-start-bitrate=10000;x-google-max-bitrate=100000\r\n"),i="maxaveragebitrate=510000;";return t&&(i+="sprop-maxcapturerate=48000;"),i+=this.config.isFlagEnabled(s.iI.ForceMonoAudio)?"stereo=0;":"stereo=1;",i+="useinbandfec=1",n=n.replace("useinbandfec=1",i),this.config.isFlagEnabled(s.iI.EnableCaptureTimeExt)&&!this.isFirefox()&&(n=l.p.addVideoHeaderExtensionToSdp(n,"http://www.webrtc.org/experiments/rtp-hdrext/abs-capture-time")),n}isFirefox(){return navigator.userAgent.indexOf("Firefox")>0}handleOnIce(e){var t;i.Vy.Info("peerconnection handleOnIce"),this.config.isFlagEnabled(s.iI.ForceTURN)&&e.candidate.indexOf("relay")<0?i.Vy.Info(`Dropping candidate because it was not TURN relay. | Type= ${e.type} | Protocol= ${e.protocol} | Address=${e.address} | Port=${e.port} |`):null===(t=this.peerConnection)||void 0===t||t.addIceCandidate(e)}handleSignalStateChange(e){i.Vy.Info("signaling state change: "+e)}handleIceConnectionStateChange(e){i.Vy.Info("ice connection state change: "+e),this.onIceConnectionStateChange(e)}handleIceGatheringStateChange(e){i.Vy.Info("ice gathering state change: "+JSON.stringify(e))}handleOnTrack(e){e.streams.length<1||"probator"==e.streams[0].id||("video"==e.track.kind&&(this.videoTrack=e.track),"audio"==e.track.kind&&(this.audioTrack=e.track),this.onTrack(e))}handleIceCandidate(e){this.onPeerIceCandidate(e)}handleDataChannel(e){this.onDataChannel(e)}onTrack(e){}onIceConnectionStateChange(e){}onPeerIceCandidate(e){}onDataChannel(e){}fuzzyIntersectUEAndBrowserCodecs(e){const t=new Array,n=this.parseAvailableCodecs(e),i=this.config.getSettingOption(s.mY.PreferredCodec).options;for(const e of n)if(i.includes(e))t.push(e);else{const n=e.split(" ")[0];for(const e of i)if(e.includes(n)){t.push(e);break}}return t}setupTransceiversAsync(e,t){return c(this,void 0,void 0,function*(){var n,i,s,r,o,a,l,d;let c=!1;for(const e of null!==(i=null===(n=this.peerConnection)||void 0===n?void 0:n.getTransceivers())&&void 0!==i?i:[])if(e&&e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind){c=!0;break}if(t?yield this.setupVideoSender(c):c||null===(s=this.peerConnection)||void 0===s||s.addTransceiver("video",{direction:"recvonly"}),RTCRtpReceiver.getCapabilities&&""!=this.preferredCodec)for(const e of null!==(o=null===(r=this.peerConnection)||void 0===r?void 0:r.getTransceivers())&&void 0!==o?o:[])if(e&&e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind&&e.setCodecPreferences){const t=this.preferredCodec.split(" "),n={mimeType:"video/"+t[0],clockRate:9e4,sdpFmtpLine:t[1]?t[1]:""},i=[n];RTCRtpReceiver.getCapabilities("video").codecs.forEach(e=>{(e.mimeType!=n.mimeType||(null==e?void 0:e.sdpFmtpLine)!=(null==n?void 0:n.sdpFmtpLine))&&i.push(e)});for(const e of i)void 0!==(null==e?void 0:e.sdpFmtpLine)&&""!==e.sdpFmtpLine||delete e.sdpFmtpLine;e.setCodecPreferences(i)}let h=!1;for(const e of null!==(l=null===(a=this.peerConnection)||void 0===a?void 0:a.getTransceivers())&&void 0!==l?l:[])if(e&&e.receiver&&e.receiver.track&&"audio"===e.receiver.track.kind){h=!0;break}e?yield this.setupAudioSender(h):h||null===(d=this.peerConnection)||void 0===d||d.addTransceiver("audio",{direction:"recvonly"})})}setupVideoSender(e){return c(this,void 0,void 0,function*(){var t,n,i,s;const r=yield navigator.mediaDevices.getUserMedia({video:!0});if(r)if(e){for(const e of null!==(n=null===(t=this.peerConnection)||void 0===t?void 0:t.getTransceivers())&&void 0!==n?n:[])if(a.V.canTransceiverReceiveVideo(e))for(const t of r.getTracks())t.kind&&"video"==t.kind&&(e.sender.replaceTrack(t),e.direction="sendrecv")}else for(const e of r.getTracks())e.kind&&"video"==e.kind&&(null===(i=this.peerConnection)||void 0===i||i.addTransceiver(e,{direction:"sendrecv"}));else e||null===(s=this.peerConnection)||void 0===s||s.addTransceiver("video",{direction:"recvonly"})})}setupAudioSender(e){return c(this,void 0,void 0,function*(){var t,n,i,s;const r=yield navigator.mediaDevices.getUserMedia({video:!1,audio:{autoGainControl:!1,channelCount:1,echoCancellation:!1,latency:0,noiseSuppression:!1,sampleRate:48e3,sampleSize:16,volume:1}});if(r)if(e){for(const e of null!==(n=null===(t=this.peerConnection)||void 0===t?void 0:t.getTransceivers())&&void 0!==n?n:[])if(a.V.canTransceiverReceiveAudio(e))for(const t of r.getTracks())t.kind&&"audio"==t.kind&&(e.sender.replaceTrack(t),e.direction="sendrecv")}else for(const e of r.getTracks())e.kind&&"audio"==e.kind&&(null===(i=this.peerConnection)||void 0===i||i.addTransceiver(e,{direction:"sendrecv"}));else e||null===(s=this.peerConnection)||void 0===s||s.addTransceiver("audio",{direction:"recvonly"})})}onVideoStats(e){}onLatencyCalculated(e){}onSendWebRTCOffer(e){}onSetRemoteDescription(e){}onSetLocalDescription(e){}showTextOverlayConnecting(){}showTextOverlaySetupFailure(){}parseAvailableCodecs(e){if(!RTCRtpReceiver.getCapabilities)return["Only available on Chrome"];const t=[],n=(0,o.splitSections)(e.sdp);return n.shift(),n.forEach(e=>{const{codecs:n}=(0,o.parseRtpParameters)(e),i=/(VP\d|H26\d|AV1).*/;n.forEach(e=>{const n=e.name+" "+Object.keys(e.parameters||{}).map(t=>t+"="+e.parameters[t]).join(";");if(null!==i.exec(n)){"VP9"==e.name&&(e.parameters={"profile-id":"0"});const n=e.name+" "+Object.keys(e.parameters||{}).map(t=>t+"="+e.parameters[t]).join(";");t.push(n)}})}),t}}},5016(e,t,n){n.d(t,{Y:()=>i});class i{}},156(e,t,n){n.d(t,{I:()=>i});class i{}},9307(e,t,n){n.d(t,{z:()=>u});var i=n(223),s=n(9139),r=n(948),o=n(6077),a=n(9689),l=n(474),d=n(9355),c=n(3507),h=n(9629);class u{constructor(e,t){this.allowConsoleCommands=!1,this.config=e,(null==t?void 0:t.videoElementParent)&&(this._videoElementParent=t.videoElementParent),this._eventEmitter=new o.R5,this.configureSettings(),this.setWebRtcPlayerController(new s.n(this.config,this)),this._webXrController=new a.R(this._webRtcController),this._setupWebRtcTCPRelayDetection=this._setupWebRtcTCPRelayDetection.bind(this),this._eventEmitter.addEventListener("webRtcConnected",e=>{this._eventEmitter.addEventListener("statsReceived",this._setupWebRtcTCPRelayDetection)})}get videoElementParent(){return this._videoElementParent||(this._videoElementParent=document.createElement("div"),this._videoElementParent.id="videoElementParent"),this._videoElementParent}configureSettings(){this.config._addOnSettingChangedListener(i.iI.IsQualityController,e=>{!0!==e||this._webRtcController.isQualityController||this._webRtcController.sendRequestQualityControlOwnership()}),this.config._addOnSettingChangedListener(i.iI.AFKDetection,e=>{this._webRtcController.setAfkEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.MatchViewportResolution,()=>{this._webRtcController.videoPlayer.updateVideoStreamSize()}),this.config._addOnSettingChangedListener(i.iI.HoveringMouseMode,e=>{this.config.setFlagLabel(i.iI.HoveringMouseMode,`Control Scheme: ${e?"Hovering":"Locked"} Mouse`),this._webRtcController.setMouseInputEnabled(this.config.isFlagEnabled(i.iI.MouseInput))}),this.config._addOnSettingChangedListener(i.iI.KeyboardInput,e=>{this._webRtcController.setKeyboardInputEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.MouseInput,e=>{this._webRtcController.setMouseInputEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.FakeMouseWithTouches,e=>{this._webRtcController.setTouchInputEnabled(this.config.isFlagEnabled(i.iI.TouchInput))}),this.config._addOnSettingChangedListener(i.iI.TouchInput,e=>{this._webRtcController.setTouchInputEnabled(e)}),this.config._addOnSettingChangedListener(i.iI.GamepadInput,e=>{this._webRtcController.setGamePadInputEnabled(e)}),this.config._addOnNumericSettingChangedListener(i.k$.MinQP,e=>{r.Vy.Info("-------- Sending MinQP --------"),this._webRtcController.sendEncoderMinQP(e),r.Vy.Info("-------------------------------------------");const t=Math.trunc(100*(1-e/51));this.config.setNumericSetting(i.k$.CompatQualityMax,t)}),this.config._addOnNumericSettingChangedListener(i.k$.MaxQP,e=>{r.Vy.Info("-------- Sending MaxQP --------"),this._webRtcController.sendEncoderMaxQP(e),r.Vy.Info("-------------------------------------------");const t=Math.trunc(100*(1-e/51));this.config.setNumericSetting(i.k$.CompatQualityMin,t)}),this.config._addOnNumericSettingChangedListener(i.k$.MinQuality,e=>{r.Vy.Info("-------- Sending MinQuality --------"),this._webRtcController.sendEncoderMinQuality(e),r.Vy.Info("-------------------------------------------"),this.config.setNumericSetting(i.k$.CompatQualityMin,e)}),this.config._addOnNumericSettingChangedListener(i.k$.MaxQuality,e=>{r.Vy.Info("-------- Sending MaxQuality --------"),this._webRtcController.sendEncoderMaxQuality(e),r.Vy.Info("-------------------------------------------"),this.config.setNumericSetting(i.k$.CompatQualityMax,e)}),this.config._addOnNumericSettingChangedListener(i.k$.CompatQualityMin,e=>{e=51-e/100*51,r.Vy.Info("-------- Sending MinQP from quality value --------"),this._webRtcController.sendEncoderMaxQP(e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.CompatQualityMax,e=>{e=51-e/100*51,r.Vy.Info("-------- Sending MaxQP from quality value --------"),this._webRtcController.sendEncoderMinQP(e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.WebRTCMinBitrate,e=>{r.Vy.Info("-------- Sending web rtc settings --------"),this._webRtcController.sendWebRTCMinBitrate(1e3*e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.WebRTCMaxBitrate,e=>{r.Vy.Info("-------- Sending web rtc settings --------"),this._webRtcController.sendWebRTCMaxBitrate(1e3*e),r.Vy.Info("-------------------------------------------")}),this.config._addOnNumericSettingChangedListener(i.k$.WebRTCFPS,e=>{r.Vy.Info("-------- Sending web rtc settings --------"),this._webRtcController.sendWebRTCFps(e),r.Vy.Info("-------------------------------------------")}),this.config._addOnOptionSettingChangedListener(i.mY.PreferredCodec,e=>{this._webRtcController&&this._webRtcController.setPreferredCodec(e)}),this.config._registerOnChangeEvents(this._eventEmitter)}_onInputControlOwnership(e){this._inputController=e}setWebRtcPlayerController(e){this._webRtcController=e,this._webRtcController.setPreferredCodec(this.config.getSettingOption(i.mY.PreferredCodec).selected),this._webRtcController.resizePlayerStyle(),this.checkForAutoConnect()}connect(){this._eventEmitter.dispatchEvent(new o.y6),this._webRtcController.connectToSignallingServer()}reconnect(){this._eventEmitter.dispatchEvent(new o.oK),this._webRtcController.tryReconnect("Reconnecting...")}disconnect(){this._eventEmitter.dispatchEvent(new o.iu),this._webRtcController.close()}play(){this._onStreamLoading(),this._webRtcController.playStream()}checkForAutoConnect(){this.config.isFlagEnabled(i.iI.AutoConnect)&&(this._onWebRtcAutoConnect(),this._webRtcController.connectToSignallingServer())}unmuteMicrophone(e=!1){if(!this.config.isFlagEnabled("UseMic"))return e?(this.config.setFlagEnabled("UseMic",!0),void this.reconnect()):void r.Vy.Warning("Trying to unmute mic, but PixelStreaming was initialized with no microphone track. Call with forceEnable == true to re-connect with a mic track.");this.setMicrophoneMuted(!1)}muteMicrophone(){this.config.isFlagEnabled("UseMic")?this.setMicrophoneMuted(!0):r.Vy.Info("Trying to mute mic, but PixelStreaming has no microphone track, so sending sound is already disabled.")}setMicrophoneMuted(e){var t,n,i,s;for(const r of null!==(s=null===(i=null===(n=null===(t=this._webRtcController)||void 0===t?void 0:t.peerConnectionController)||void 0===n?void 0:n.peerConnection)||void 0===i?void 0:i.getTransceivers())&&void 0!==s?s:[])c.V.canTransceiverSendAudio(r)&&(r.sender.track.enabled=!e)}unmuteCamera(e=!1){if(!this.config.isFlagEnabled("UseCamera"))return e?(this.config.setFlagEnabled("UseCamera",!0),void this.reconnect()):void r.Vy.Warning("Trying to unmute video, but PixelStreaming was initialized with no video track. Call with forceEnable == true to re-connect with a video track.");this.setCameraMuted(!1)}muteCamera(){this.config.isFlagEnabled("UseCamera")?this.setCameraMuted(!0):r.Vy.Info("Trying to mute camera, but PixelStreaming has no video track, so sending video is already disabled.")}setCameraMuted(e){var t,n,i,s;for(const r of null!==(s=null===(i=null===(n=null===(t=this._webRtcController)||void 0===t?void 0:t.peerConnectionController)||void 0===n?void 0:n.peerConnection)||void 0===i?void 0:i.getTransceivers())&&void 0!==s?s:[])c.V.canTransceiverSendVideo(r)&&(r.sender.track.enabled=!e)}_onWebRtcAutoConnect(){this._eventEmitter.dispatchEvent(new o.nV)}_onWebRtcSdp(){this._eventEmitter.dispatchEvent(new o.xV)}_onWebRtcSdpOffer(e){this._eventEmitter.dispatchEvent(new o.PC({sdp:e}))}_onWebRtcSdpAnswer(e){this._eventEmitter.dispatchEvent(new o.zx({sdp:e}))}_onLatencyCalculated(e){this._eventEmitter.dispatchEvent(new o.L0({latencyInfo:e}))}_onStreamLoading(){this._eventEmitter.dispatchEvent(new o.Bg)}_onDisconnect(e,t){this._eventEmitter.dispatchEvent(new o.Nu({eventString:e,allowClickToReconnect:t}))}_onWebRtcConnecting(){this._eventEmitter.dispatchEvent(new o.Ys)}_onWebRtcConnected(){this._eventEmitter.dispatchEvent(new o.d4)}_onWebRtcFailed(){this._eventEmitter.dispatchEvent(new o.tv)}_onVideoInitialized(){this._eventEmitter.dispatchEvent(new o.Qy),this._videoStartTime=Date.now()}_onLatencyTestResult(e){this._eventEmitter.dispatchEvent(new o.Cc({latencyTimings:e}))}_onDataChannelLatencyTestResponse(e){this._eventEmitter.dispatchEvent(new o.Fh({response:e}))}_onVideoStats(e){this._videoStartTime&&void 0!==this._videoStartTime||(this._videoStartTime=Date.now()),e.handleSessionStatistics(this._videoStartTime,this._inputController,this._webRtcController.videoAvgQp),this._eventEmitter.dispatchEvent(new o.d_({aggregatedStats:e}))}_onVideoEncoderAvgQP(e){this._eventEmitter.dispatchEvent(new o.x1({avgQP:e}))}_onInitialSettings(e){var t;this._eventEmitter.dispatchEvent(new o.EG({settings:e})),e.PixelStreamingSettings&&(this.allowConsoleCommands=null!==(t=e.PixelStreamingSettings.AllowPixelStreamingCommands)&&void 0!==t&&t,!1===this.allowConsoleCommands&&r.Vy.Info("-AllowPixelStreamingCommands=false, sending arbitrary console commands from browser to UE is disabled."));const n=this.config.useUrlParams,s=new h.Z(window.location.search);r.Vy.Info(`using URL parameters ${n}`),e.EncoderSettings&&(e.EncoderSettings.MinQP&&(this.config.setNumericSetting(i.k$.MinQP,n&&s.has(i.k$.MinQP)?Number.parseFloat(s.get(i.k$.MinQP)):e.EncoderSettings.MinQP||0),this.config.setNumericSetting(i.k$.MaxQP,n&&s.has(i.k$.MaxQP)?Number.parseFloat(s.get(i.k$.MaxQP)):e.EncoderSettings.MaxQP||51)),e.EncoderSettings.MinQuality&&(this.config.setNumericSetting(i.k$.MinQuality,n&&s.has(i.k$.MinQuality)?Number.parseFloat(s.get(i.k$.MinQuality)):e.EncoderSettings.MinQuality||0),this.config.setNumericSetting(i.k$.MaxQuality,n&&s.has(i.k$.MaxQuality)?Number.parseFloat(s.get(i.k$.MaxQuality)):e.EncoderSettings.MaxQuality||100)),n&&(s.has(i.k$.CompatQualityMin)&&this.config.setNumericSetting(i.k$.CompatQualityMin,Number.parseFloat(s.get(i.k$.CompatQualityMin))),s.has(i.k$.CompatQualityMax)&&this.config.setNumericSetting(i.k$.CompatQualityMax,Number.parseFloat(s.get(i.k$.CompatQualityMax))))),e.WebRTCSettings&&(this.config.setNumericSetting(i.k$.WebRTCMinBitrate,n&&s.has(i.k$.WebRTCMinBitrate)?Number.parseFloat(s.get(i.k$.WebRTCMinBitrate)):e.WebRTCSettings.MinBitrate/1e3),this.config.setNumericSetting(i.k$.WebRTCMaxBitrate,n&&s.has(i.k$.WebRTCMaxBitrate)?Number.parseFloat(s.get(i.k$.WebRTCMaxBitrate)):e.WebRTCSettings.MaxBitrate/1e3),this.config.setNumericSetting(i.k$.WebRTCFPS,n&&s.has(i.k$.WebRTCFPS)?Number.parseFloat(s.get(i.k$.WebRTCFPS)):e.WebRTCSettings.FPS))}_onQualityControlOwnership(e){this.config.setFlagEnabled(i.iI.IsQualityController,e)}_onPlayerCount(e){this._eventEmitter.dispatchEvent(new o.d2({count:e}))}_onSubscribeFailed(e){this._eventEmitter.dispatchEvent(new o._h({message:e}))}_setupWebRtcTCPRelayDetection(e){const t=e.data.aggregatedStats.getActiveCandidatePair();if(null!=t){const n=e.data.aggregatedStats.localCandidates.find(e=>e.id==t.localCandidateId,null);null!=n&&"relay"==n.candidateType&&"tcp"==n.relayProtocol&&this._eventEmitter.dispatchEvent(new o.KB),this._eventEmitter.removeEventListener("statsReceived",this._setupWebRtcTCPRelayDetection)}}requestLatencyTest(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendLatencyTest(),!0)}requestDataChannelLatencyTest(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._dataChannelLatencyTestController||(this._dataChannelLatencyTestController=new d.I(this._webRtcController.sendDataChannelLatencyTest.bind(this._webRtcController),e=>{this._eventEmitter.dispatchEvent(new o.L7({result:e}))}),this.addEventListener("dataChannelLatencyTestResponse",({data:{response:e}})=>{this._dataChannelLatencyTestController.receive(e)})),this._dataChannelLatencyTestController.start(e))}requestShowFps(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendShowFps(),!0)}requestIframe(){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendIframeRequest(),!0)}emitUIInteraction(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.emitUIInteraction(e),!0)}emitCommand(e){return!(!this._webRtcController.videoPlayer.isVideoReady()||!this.allowConsoleCommands&&"ConsoleCommand"in e||(this._webRtcController.emitCommand(e),0))}emitConsoleCommand(e){return!(!this.allowConsoleCommands||!this._webRtcController.videoPlayer.isVideoReady()||(this._webRtcController.emitConsoleCommand(e),0))}sendTextboxEntry(e){return!!this._webRtcController.videoPlayer.isVideoReady()&&(this._webRtcController.sendTextboxEntry(e),!0)}addResponseEventListener(e,t){this._webRtcController.responseController.addResponseEventListener(e,t)}removeResponseEventListener(e){this._webRtcController.responseController.removeResponseEventListener(e)}dispatchEvent(e){return this._eventEmitter.dispatchEvent(e)}addEventListener(e,t){this._eventEmitter.addEventListener(e,t)}removeEventListener(e,t){this._eventEmitter.removeEventListener(e,t)}toggleXR(){this.webXrController.xrClicked()}setSignallingUrlBuilder(e){this._webRtcController.signallingUrlBuilder=e}get webRtcController(){return this._webRtcController}get signallingProtocol(){return this._webRtcController.protocol}get webXrController(){return this._webXrController}registerMessageHandler(e,t,n){t!==l.Tt.FromStreamer||void 0!==n?t===l.Tt.ToStreamer&&void 0===n?this._webRtcController.streamMessageController.registerMessageHandler(t,e,t=>this._webRtcController.sendMessageController.sendMessageToStreamer(e,t)):this._webRtcController.streamMessageController.registerMessageHandler(t,e,e=>n(e)):r.Vy.Warning(`Unable to register an undefined handler for ${e}`)}get toStreamerHandlers(){return this._webRtcController.streamMessageController.toStreamerHandlers}isReconnecting(){return this._webRtcController.isReconnecting}}},1054(e,t,n){n.d(t,{G:()=>s});var i=n(948);class s{constructor(){this.responseEventListeners=new Map}addResponseEventListener(e,t){this.responseEventListeners.set(e,t)}removeResponseEventListener(e){this.responseEventListeners.delete(e)}onResponse(e){i.Vy.Info("DataChannelReceiveMessageType.Response");const t=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info(t),this.responseEventListeners.forEach(e=>{e(t)})}}},3447(e,t,n){n.d(t,{g:()=>s});var i=n(948);class s{constructor(e,t){this.dataChannelSender=e,this.toStreamerMessagesMapProvider=t}sendMessageToStreamer(e,t){void 0===t&&(t=[]);const n=this.toStreamerMessagesMapProvider.toStreamerMessages.get(e);if(void 0===n)return void i.Vy.Error(`Attempted to send a message to the streamer with message type: ${e}, but the frontend hasn't been configured to send such a message. Check you've added the message type in your cpp`);if(n.structure&&t&&n.structure.length!==t.length)return void i.Vy.Error(`Provided message data doesn't match expected layout. Expected [ ${n.structure.map(e=>{switch(e){case"uint8":case"uint16":case"int16":case"float":case"double":default:return"number";case"string":return"string"}}).toString()} ] but received [ ${t.map(e=>typeof e).toString()} ]`);let s=0;const r=new TextEncoder;t.forEach((e,t)=>{switch(n.structure[t]){case"uint8":s+=1;break;case"uint16":case"int16":s+=2;break;case"float":s+=4;break;case"double":s+=8;break;case"string":s+=2,s+=2*r.encode(e).length}});const o=new DataView(new ArrayBuffer(s+1));o.setUint8(0,n.id);let a=1;t.forEach((e,t)=>{switch(n.structure[t]){case"uint8":o.setUint8(a,e),a+=1;break;case"uint16":o.setUint16(a,e,!0),a+=2;break;case"int16":o.setInt16(a,e,!0),a+=2;break;case"float":o.setFloat32(a,e,!0),a+=4;break;case"double":o.setFloat64(a,e,!0),a+=8;break;case"string":o.setUint16(a,e.length,!0),a+=2;for(let t=0;t<e.length;t++)o.setUint16(a,e.charCodeAt(t),!0),a+=2}}),this.dataChannelSender.canSend()?this.dataChannelSender.sendData(o.buffer):i.Vy.Info(`Data channel cannot send yet, skipping sending message: ${e} - ${new Uint8Array(o.buffer)}`)}}},474(e,t,n){n.d(t,{QR:()=>r,Tt:()=>i});var i,s=n(948);class r{constructor(){this.toStreamerHandlers=new Map,this.fromStreamerHandlers=new Map,this.toStreamerMessages=new Map,this.fromStreamerMessages=new Map}populateDefaultProtocol(){this.toStreamerMessages.set("IFrameRequest",{id:0,structure:[]}),this.toStreamerMessages.set("RequestQualityControl",{id:1,structure:[]}),this.toStreamerMessages.set("FpsRequest",{id:2,structure:[]}),this.toStreamerMessages.set("AverageBitrateRequest",{id:3,structure:[]}),this.toStreamerMessages.set("StartStreaming",{id:4,structure:[]}),this.toStreamerMessages.set("StopStreaming",{id:5,structure:[]}),this.toStreamerMessages.set("LatencyTest",{id:6,structure:["string"]}),this.toStreamerMessages.set("RequestInitialSettings",{id:7,structure:[]}),this.toStreamerMessages.set("TestEcho",{id:8,structure:[]}),this.toStreamerMessages.set("DataChannelLatencyTest",{id:9,structure:[]}),this.toStreamerMessages.set("UIInteraction",{id:50,structure:["string"]}),this.toStreamerMessages.set("Command",{id:51,structure:["string"]}),this.toStreamerMessages.set("TextboxEntry",{id:52,structure:["string"]}),this.toStreamerMessages.set("KeyDown",{id:60,structure:["uint8","uint8"]}),this.toStreamerMessages.set("KeyUp",{id:61,structure:["uint8"]}),this.toStreamerMessages.set("KeyPress",{id:62,structure:["uint16"]}),this.toStreamerMessages.set("MouseEnter",{id:70,structure:[]}),this.toStreamerMessages.set("MouseLeave",{id:71,structure:[]}),this.toStreamerMessages.set("MouseDown",{id:72,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.set("MouseUp",{id:73,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.set("MouseMove",{id:74,structure:["uint16","uint16","int16","int16"]}),this.toStreamerMessages.set("MouseWheel",{id:75,structure:["int16","uint16","uint16"]}),this.toStreamerMessages.set("MouseDouble",{id:76,structure:["uint8","uint16","uint16"]}),this.toStreamerMessages.set("TouchStart",{id:80,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.set("TouchEnd",{id:81,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.set("TouchMove",{id:82,structure:["uint8","uint16","uint16","uint8","uint8","uint8"]}),this.toStreamerMessages.set("GamepadConnected",{id:93,structure:[]}),this.toStreamerMessages.set("GamepadButtonPressed",{id:90,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.set("GamepadButtonReleased",{id:91,structure:["uint8","uint8","uint8"]}),this.toStreamerMessages.set("GamepadAnalog",{id:92,structure:["uint8","uint8","double"]}),this.toStreamerMessages.set("GamepadDisconnected",{id:94,structure:["uint8"]}),this.fromStreamerMessages.set(0,"QualityControlOwnership"),this.fromStreamerMessages.set(1,"Response"),this.fromStreamerMessages.set(2,"Command"),this.fromStreamerMessages.set(3,"FreezeFrame"),this.fromStreamerMessages.set(4,"UnfreezeFrame"),this.fromStreamerMessages.set(5,"VideoEncoderAvgQP"),this.fromStreamerMessages.set(6,"LatencyTest"),this.fromStreamerMessages.set(7,"InitialSettings"),this.fromStreamerMessages.set(8,"FileExtension"),this.fromStreamerMessages.set(9,"FileMimeType"),this.fromStreamerMessages.set(10,"FileContents"),this.fromStreamerMessages.set(11,"TestEcho"),this.fromStreamerMessages.set(12,"InputControlOwnership"),this.fromStreamerMessages.set(13,"GamepadResponse"),this.fromStreamerMessages.set(14,"DataChannelLatencyTest"),this.fromStreamerMessages.set(255,"Protocol")}registerMessageHandler(e,t,n){switch(e){case i.ToStreamer:this.toStreamerHandlers.set(t,n);break;case i.FromStreamer:this.fromStreamerHandlers.set(t,n);break;default:s.Vy.Info(`Unknown message direction ${e}`)}}}!function(e){e[e.ToStreamer=0]="ToStreamer",e[e.FromStreamer=1]="FromStreamer"}(i||(i={}))},6403(e,t,n){n.d(t,{v:()=>i});class i{constructor(e){this.sendMessageController=e}SendRequestQualityControl(){this.sendMessageController.sendMessageToStreamer("RequestQualityControl")}SendMaxFpsRequest(){this.sendMessageController.sendMessageToStreamer("FpsRequest")}SendAverageBitrateRequest(){this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")}SendStartStreaming(){this.sendMessageController.sendMessageToStreamer("StartStreaming")}SendStopStreaming(){this.sendMessageController.sendMessageToStreamer("StopStreaming")}SendRequestInitialSettings(){this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")}}},114(e,t,n){n.d(t,{C:()=>s});var i=n(948);class s{static getSupportedVideoCodecs(){const e=[];if(!RTCRtpReceiver.getCapabilities)return i.Vy.Warning("RTCRtpReceiver.getCapabilities API is not available in your browser, defaulting to guess that we support H.264."),e.push("H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f"),e;const t=/(VP\d|H26\d|AV1).*/,n=RTCRtpReceiver.getCapabilities("video");return n?(n.codecs.forEach(n=>{const i=n.mimeType.split("/")[1]+" "+(n.sdpFmtpLine||"");null!==t.exec(i)&&e.push(i)}),e):(e.push("H264 level-asymmetry-allowed=1;packetization-mode=1;profile-level-id=42e01f"),e)}}},6077(e,t,n){n.d(t,{Bg:()=>w,CE:()=>v,Cc:()=>O,EG:()=>V,EQ:()=>y,FJ:()=>I,Fh:()=>N,Gi:()=>F,KB:()=>W,Kr:()=>o,L0:()=>A,L7:()=>_,Lz:()=>x,Nu:()=>g,PC:()=>c,Qy:()=>b,R5:()=>z,RW:()=>k,S_:()=>s,Si:()=>B,Ys:()=>u,_h:()=>D,d2:()=>H,d4:()=>m,d_:()=>L,ie:()=>P,iu:()=>C,jG:()=>R,jr:()=>r,mC:()=>i,nV:()=>h,oK:()=>E,qM:()=>U,tv:()=>p,vL:()=>T,vx:()=>M,x1:()=>a,xV:()=>l,y6:()=>S,ys:()=>f,zx:()=>d});class i extends Event{constructor(e){super("afkWarningActivate"),this.data=e}}class s extends Event{constructor(e){super("afkWarningUpdate"),this.data=e}}class r extends Event{constructor(){super("afkWarningDeactivate")}}class o extends Event{constructor(){super("afkTimedOut")}}class a extends Event{constructor(e){super("videoEncoderAvgQP"),this.data=e}}class l extends Event{constructor(){super("webRtcSdp")}}class d extends Event{constructor(e){super("webRtcSdpAnswer"),this.data=e}}class c extends Event{constructor(e){super("webRtcSdpOffer"),this.data=e}}class h extends Event{constructor(){super("webRtcAutoConnect")}}class u extends Event{constructor(){super("webRtcConnecting")}}class m extends Event{constructor(){super("webRtcConnected")}}class p extends Event{constructor(){super("webRtcFailed")}}class g extends Event{constructor(e){super("webRtcDisconnected"),this.data=e}}class f extends Event{constructor(e){super("dataChannelOpen"),this.data=e}}class v extends Event{constructor(e){super("dataChannelClose"),this.data=e}}class y extends Event{constructor(e){super("dataChannelError"),this.data=e}}class b extends Event{constructor(){super("videoInitialized")}}class w extends Event{constructor(){super("streamLoading")}}class S extends Event{constructor(){super("streamConnect")}}class C extends Event{constructor(){super("streamDisconnect")}}class E extends Event{constructor(){super("streamReconnect")}}class T extends Event{constructor(e){super("playStreamError"),this.data=e}}class x extends Event{constructor(){super("playStream")}}class I extends Event{constructor(e){super("playStreamRejected"),this.data=e}}class M extends Event{constructor(e){super("loadFreezeFrame"),this.data=e}}class k extends Event{constructor(){super("hideFreezeFrame")}}class L extends Event{constructor(e){super("statsReceived"),this.data=e}}class R extends Event{constructor(e){super("streamerListMessage"),this.data=e}}class P extends Event{constructor(e){super("StreamerIDChangedMessage"),this.data=e}}class O extends Event{constructor(e){super("latencyTestResult"),this.data=e}}class A extends Event{constructor(e){super("latencyCalculated"),this.data=e}}class F extends Event{constructor(e){super("showOnScreenKeyboard"),this.data=e}}class N extends Event{constructor(e){super("dataChannelLatencyTestResponse"),this.data=e}}class _ extends Event{constructor(e){super("dataChannelLatencyTestResult"),this.data=e}}class D extends Event{constructor(e){super("subscribeFailed"),this.data=e}}class V extends Event{constructor(e){super("initialSettings"),this.data=e}}class B extends Event{constructor(e){super("settingsChanged"),this.data=e}}Event,Event;class U extends Event{constructor(e){super("xrFrame"),this.data=e}}class H extends Event{constructor(e){super("playerCount"),this.data=e}}class W extends Event{constructor(){super("webRtcTCPRelayDetected")}}class z extends EventTarget{dispatchEvent(e){return super.dispatchEvent(e)}addEventListener(e,t){super.addEventListener(e,t)}removeEventListener(e,t){super.removeEventListener(e,t)}}},3281(e,t,n){n.d(t,{X:()=>r,f:()=>s});var i=n(948);class s{static setExtensionFromBytes(e,t){t.receiving||(t.mimetype="",t.extension="",t.receiving=!0,t.valid=!1,t.chunks=0,t.data=[],t.timestampStart=(new Date).getTime(),i.Vy.Info("Received first chunk of file"));const n=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info(n),t.extension=n}static setMimeTypeFromBytes(e,t){t.receiving||(t.mimetype="",t.extension="",t.receiving=!0,t.valid=!1,t.chunks=0,t.data=[],t.timestampStart=(new Date).getTime(),i.Vy.Info("Received first chunk of file"));const n=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info(n),t.mimetype=n}static setContentsFromBytes(e,t){if(!t.receiving)return;t.chunks=Math.ceil(new DataView(e.slice(1,5).buffer).getInt32(0,!0)/16379);const n=e.slice(5);if(t.data.push(n),i.Vy.Info(`Received file chunk: ${t.data.length}/${t.chunks}`),t.data.length===t.chunks){t.receiving=!1,t.valid=!0,i.Vy.Info("Received complete file");const e=(new Date).getTime()-t.timestampStart,n=Math.round(16384*t.chunks/e);i.Vy.Info(`Average transfer bitrate: ${n}kb/s over ${e/1e3} seconds`)}else t.data.length>t.chunks&&(t.receiving=!1,i.Vy.Error(`Received bigger file than advertised: ${t.data.length}/${t.chunks}`))}}class r{constructor(){this.mimetype="",this.extension="",this.receiving=!1,this.chunks=0,this.data=[],this.valid=!1}}},9629(e,t,n){n.d(t,{Z:()=>i});class i{constructor(e){this._urlParams={};const t=new URLSearchParams(e);for(const[e,n]of t)this._urlParams[e.toLowerCase()]=n}has(e){return e.toLowerCase()in this._urlParams}get(e){return this.has(e)?this._urlParams[e.toLowerCase()]:null}}},2139(e,t,n){n.d(t,{g:()=>i});class i{reconfigure(e,t){const n=e.height/e.width,i=t.height/t.width;this.playerIsLarger=n>i,this.playerSize=e,this.ratio=this.playerIsLarger?n/i:i/n}translateUnsigned(e,t){const n=this.playerIsLarger?e/this.playerSize.width:this.ratio*(e/this.playerSize.width-.5)+.5,i=this.playerIsLarger?this.ratio*(t/this.playerSize.height-.5)+.5:t/this.playerSize.height;return n<0||n>1||i<0||i>1?{inRange:!1,x:65535,y:65535}:{inRange:!0,x:65536*n,y:65536*i}}translateSigned(e,t){return{x:32767*(this.playerIsLarger?e/(.5*this.playerSize.width):this.ratio*e/(.5*this.playerSize.width)),y:32767*(this.playerIsLarger?this.ratio*t/(.5*this.playerSize.height):t/(.5*this.playerSize.height))}}untranslateUnsigned(e,t){const n=this.playerIsLarger?e/65536:(e/65536-.5)/this.ratio+.5,i=this.playerIsLarger?(t/65536-.5)/this.ratio+.5:t/65536;return{x:n*this.playerSize.width,y:i*this.playerSize.height}}}},3507(e,t,n){n.d(t,{V:()=>i});class i{static isVideoTransceiver(e){return this.canTransceiverReceiveVideo(e)||this.canTransceiverSendVideo(e)}static canTransceiverReceiveVideo(e){return!!e&&("sendrecv"===e.direction||"recvonly"===e.direction)&&e.receiver&&e.receiver.track&&"video"===e.receiver.track.kind}static canTransceiverSendVideo(e){return!!e&&("sendrecv"===e.direction||"sendonly"===e.direction)&&e.sender&&e.sender.track&&"video"===e.sender.track.kind}static isAudioTransceiver(e){return this.canTransceiverReceiveAudio(e)||this.canTransceiverSendAudio(e)}static canTransceiverReceiveAudio(e){return!!e&&("sendrecv"===e.direction||"recvonly"===e.direction)&&e.receiver&&e.receiver.track&&"audio"===e.receiver.track.kind}static canTransceiverSendAudio(e){return!!e&&("sendrecv"===e.direction||"sendonly"===e.direction)&&e.sender&&e.sender.track&&"audio"===e.sender.track.kind}}},9059(e,t,n){n.d(t,{l:()=>s});var i=n(948);class s{constructor(e){this.videoElementProvider=e,this.audioElement=document.createElement("Audio"),this.videoElementProvider.setAudioElement(this.audioElement)}handleOnTrack(e){if(i.Vy.Info("handleOnTrack "+JSON.stringify(e.streams)),e.streams.length<1||"probator"==e.streams[0].id)return;const t=this.videoElementProvider.getVideoElement();if(e.track&&i.Vy.Info("Got track - "+e.track.kind+" id="+e.track.id+" readyState="+e.track.readyState),"audio"!=e.track.kind)return"video"==e.track.kind&&t.srcObject!==e.streams[0]?(t.srcObject=e.streams[0],void i.Vy.Info("Set video source from video track ontrack.")):void 0;this.CreateAudioTrack(e.streams[0])}CreateAudioTrack(e){const t=this.videoElementProvider.getVideoElement();t.srcObject!=e&&t.srcObject&&t.srcObject!==e&&(this.audioElement.srcObject=e,i.Vy.Info("Created new audio element to play separate audio stream."))}}},6865(e,t,n){n.d(t,{L:()=>r});var i=n(223),s=n(948);class r{constructor(e,t){this.lastTimeResized=(new Date).getTime(),this.videoElement=document.createElement("video"),this.config=t,this.videoElement.id="streamingVideo",this.videoElement.disablePictureInPicture=!0,this.videoElement.playsInline=!0,this.videoElement.style.width="100%",this.videoElement.style.height="100%",this.videoElement.style.position="absolute",this.videoElement.style.pointerEvents="all",e.appendChild(this.videoElement),this.onResizePlayerCallback=()=>{console.log("Resolution changed, restyling player, did you forget to override this function?")},this.onMatchViewportResolutionCallback=()=>{console.log("Resolution changed and match viewport resolution is turned on, did you forget to override this function?")},this.videoElement.onclick=()=>{null!=this.audioElement&&this.audioElement.paused&&this.audioElement.play(),this.videoElement.paused&&this.videoElement.play()},this.videoElement.onloadedmetadata=()=>{this.onVideoInitialized()},window.addEventListener("resize",()=>this.resizePlayerStyle(),!0),window.addEventListener("orientationchange",()=>this.onOrientationChange())}destroy(){this.videoElement.src="",this.videoElement.srcObject=null,this.videoElement.remove(),this.audioElement&&(this.audioElement.src="",this.audioElement.srcObject=null,this.audioElement.remove())}setAudioElement(e){this.audioElement=e}play(){return this.videoElement.muted=this.config.isFlagEnabled(i.iI.StartVideoMuted),this.videoElement.autoplay=this.config.isFlagEnabled(i.iI.AutoPlayVideo),this.videoElement.play()}isPaused(){return this.videoElement.paused}isVideoReady(){return void 0!==this.videoElement.readyState&&this.videoElement.readyState>0}hasVideoSource(){return void 0!==this.videoElement.srcObject&&null!==this.videoElement.srcObject}getVideoElement(){return this.videoElement}getVideoParentElement(){var e;return null!==(e=this.videoElement.parentElement)&&void 0!==e?e:void 0}setVideoEnabled(e){this.videoElement.srcObject.getTracks().forEach(t=>t.enabled=e)}onVideoInitialized(){}onOrientationChange(){clearTimeout(this.orientationChangeTimeout),this.orientationChangeTimeout=window.setTimeout(()=>{this.resizePlayerStyle()},500)}resizePlayerStyle(){const e=this.getVideoParentElement();e&&(this.updateVideoStreamSize(),e.classList.contains("fixed-size")||this.resizePlayerStyleToFillParentElement(),this.onResizePlayerCallback())}resizePlayerStyleToFillParentElement(){this.getVideoParentElement().setAttribute("style","top: 0px; left: 0px; width: 100%; height: 100%; cursor: default;")}updateVideoStreamSize(){if(this.config.isFlagEnabled(i.iI.MatchViewportResolution))if((new Date).getTime()-this.lastTimeResized>300){const e=this.getVideoParentElement();if(!e)return;this.onMatchViewportResolutionCallback(e.clientWidth,e.clientHeight),this.lastTimeResized=(new Date).getTime()}else s.Vy.Info("Resizing too often - skipping"),clearTimeout(this.resizeTimeoutHandle),this.resizeTimeoutHandle=window.setTimeout(()=>this.updateVideoStreamSize(),100)}}},9139(e,t,n){n.d(t,{n:()=>L});var i=n(948),s=n(7447),r=n(3532),o=n(9027),a=n(9899),l=n(8496),d=n(9059),c=n(2865),h=n(5785),u=n(4045),m=n(1615),p=n(223),g=n(235),f=n(724),v=n(3281),y=n(1104),b=n(6865),w=n(474),S=n(1054),C=n(3447),E=n(6403),T=n(8236),x=n(2139),I=n(6077),M=n(9629),k=n(114);class L{constructor(e,t){this.shouldShowPlayOverlay=!0,this.autoJoinTimer=void 0,this.config=e,this.pixelStreaming=t,this.responseController=new S.G,this.file=new v.X,this.sdpConstraints={offerToReceiveAudio:!0,offerToReceiveVideo:!0},this.afkController=new h.R(this.config,this.pixelStreaming,this.onAfkTriggered.bind(this)),this.afkController.onAFKTimedOutCallback=()=>{this.closeSignalingServer("You have been disconnected due to inactivity.",!1)},this.freezeFrameController=new c.f(this.pixelStreaming.videoElementParent),this.videoPlayer=new b.L(this.pixelStreaming.videoElementParent,this.config),this.videoPlayer.onVideoInitialized=()=>this.handleVideoInitialized(),this.videoPlayer.onMatchViewportResolutionCallback=(e,t)=>{const n={"Resolution.Width":e,"Resolution.Height":t};this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify(n)])},this.videoPlayer.onResizePlayerCallback=()=>{this.setUpMouseAndFreezeFrame()},this.streamController=new d.l(this.videoPlayer),this.coordinateConverter=new x.g,this.sendrecvDataChannelController=new u.a,this.recvDataChannelController=new u.a,this.registerDataChannelEventEmitters(this.sendrecvDataChannelController),this.registerDataChannelEventEmitters(this.recvDataChannelController),this.dataChannelSender=new T.p(this.sendrecvDataChannelController),this.dataChannelSender.resetAfkWarningTimerOnDataSend=()=>this.afkController.resetAfkWarningTimer(),this.streamMessageController=new w.QR,this.transport=new s.T(e.webSocketProtocols),this.protocol=new r.t(this.transport),this.protocol.addListener(o.$W.typeName,e=>this.handleOnConfigMessage(e)),this.protocol.addListener(o.hU.typeName,e=>this.handlePingMessage(e)),this.protocol.addListener(o.q5.typeName,e=>this.handleStreamerListMessage(e)),this.protocol.addListener(o.yB.typeName,e=>this.handleSubscribeFailedMessage(e)),this.protocol.addListener(o.l8.typeName,e=>this.handleStreamerIDChangedMessage(e)),this.protocol.addListener(o.Rd.typeName,e=>{const t=e;this.pixelStreaming._onPlayerCount(t.count)}),this.protocol.addListener(o.ZF.typeName,e=>this.handleWebRtcAnswer(e)),this.protocol.addListener(o.x.typeName,e=>this.handleWebRtcOffer(e)),this.protocol.addListener(o.Rq.typeName,e=>this.handleWebRtcSFUPeerDatachannels(e)),this.protocol.addListener(o.BI.typeName,e=>{const t=e;this.handleIceCandidate(t.candidate)}),this.protocol.transport.addListener("open",()=>{const e=a.o(o.zW);this.protocol.sendMessage(e),this.reconnectAttempt=0,this.isReconnecting=!1}),this.protocol.transport.addListener("error",()=>{i.Vy.Error("Got a transport error.")}),this.protocol.transport.addListener("close",e=>{const t=this.config.getNumericSettingValue(p.k$.MaxReconnectAttempts),n=this.reconnectAttempt<t,i=(this.forceReconnect||this.enableAutoReconnect&&t>0&&n)&&1001!=e.code,s=!i,r=this.disconnectMessage?this.disconnectMessage:e.reason;this.forceReconnect=!1,this.config.getSettingOption(p.mY.PreferredCodec).options=k.C.getSupportedVideoCodecs(),this.pixelStreaming._onDisconnect(r,s),this.afkController.stopAfkWarningTimer(),this.statsTimerHandle&&void 0!==this.statsTimerHandle&&window.clearInterval(this.statsTimerHandle),this.setVideoEncoderAvgQP(0),this.setTouchInputEnabled(!1),this.setMouseInputEnabled(!1),this.setKeyboardInputEnabled(!1),this.setGamePadInputEnabled(!1),i&&setTimeout(()=>{this.reconnectAttempt++,this.doReconnect(e.reason)},2e3)}),this.sendMessageController=new C.g(this.dataChannelSender,this.streamMessageController),this.toStreamerMessagesController=new E.v(this.sendMessageController),this.registerMessageHandlers(),this.streamMessageController.populateDefaultProtocol(),this.inputClassesFactory=new y.a(this.streamMessageController,this.videoPlayer,this.coordinateConverter),this.isUsingSFU=!1,this.isUsingSVC=!1,this.isQualityController=!1,this.preferredCodec="",this.enableAutoReconnect=!0,this.forceReconnect=!1,this.reconnectAttempt=0,this.isReconnecting=!1,this.config._addOnOptionSettingChangedListener(p.mY.StreamerId,e=>{if(void 0===e||""===e)return;this.peerConnectionController.peerConnection.close(),this.peerConnectionController.createPeerConnection(this.peerConfig,this.preferredCodec),this.subscribedStream=e;const t=a.o(o.B1,{streamerId:e});this.protocol.sendMessage(t)}),this.config._addOnOptionSettingChangedListener(p.mY.PreferredQuality,e=>{if(void 0===e||""===e)return;let t;if(this.isUsingSVC)t=a.o(o.vq,{spatialLayer:+e[1]-1,temporalLayer:+e[3]-1});else{const n=this.config.getSettingOption(p.mY.PreferredQuality).options.indexOf(e);t=a.o(o.vq,{spatialLayer:n,temporalLayer:0})}this.protocol.sendMessage(t)}),this.setVideoEncoderAvgQP(-1),this.signallingUrlBuilder=()=>this.config.getTextSettingValue(p.gw.SignallingServerUrl)}destroyVideoPlayer(){this.videoPlayer.destroy()}handleOnMessage(e){const t=new Uint8Array(e.data);i.Vy.Info("Message incoming:"+t);const n=this.streamMessageController.fromStreamerMessages.get(t[0]);this.streamMessageController.fromStreamerHandlers.get(n)(e.data)}registerMessageHandlers(){this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"QualityControlOwnership",e=>this.onQualityControlOwnership(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Response",e=>this.responseController.onResponse(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Command",e=>{this.onCommand(e)}),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FreezeFrame",e=>this.onFreezeFrameMessage(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"UnfreezeFrame",()=>this.invalidateFreezeFrameAndEnableVideo()),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"VideoEncoderAvgQP",e=>this.handleVideoEncoderAvgQP(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"LatencyTest",e=>this.handleLatencyTestResult(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"DataChannelLatencyTest",e=>this.handleDataChannelLatencyTestResponse(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"InitialSettings",e=>this.handleInitialSettings(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FileExtension",e=>this.onFileExtension(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FileMimeType",e=>this.onFileMimeType(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"FileContents",e=>this.onFileContents(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"InputControlOwnership",e=>this.onInputControlOwnership(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"GamepadResponse",e=>this.onGamepadResponse(e)),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Multiplexed",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.FromStreamer,"Protocol",e=>this.onProtocolMessage(e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"IFrameRequest",()=>this.sendMessageController.sendMessageToStreamer("IFrameRequest")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"RequestQualityControl",()=>this.sendMessageController.sendMessageToStreamer("RequestQualityControl")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"FpsRequest",()=>this.sendMessageController.sendMessageToStreamer("FpsRequest")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"AverageBitrateRequest",()=>this.sendMessageController.sendMessageToStreamer("AverageBitrateRequest")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"StartStreaming",()=>this.sendMessageController.sendMessageToStreamer("StartStreaming")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"StopStreaming",()=>this.sendMessageController.sendMessageToStreamer("StopStreaming")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"LatencyTest",e=>this.sendMessageController.sendMessageToStreamer("LatencyTest",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"RequestInitialSettings",()=>this.sendMessageController.sendMessageToStreamer("RequestInitialSettings")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TestEcho",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"UIInteraction",e=>this.sendMessageController.sendMessageToStreamer("UIInteraction",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"Command",e=>this.sendMessageController.sendMessageToStreamer("Command",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TextboxEntry",e=>this.sendMessageController.sendMessageToStreamer("TextboxEntry",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"KeyDown",e=>this.sendMessageController.sendMessageToStreamer("KeyDown",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"KeyUp",e=>this.sendMessageController.sendMessageToStreamer("KeyUp",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"KeyPress",e=>this.sendMessageController.sendMessageToStreamer("KeyPress",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseEnter",e=>this.sendMessageController.sendMessageToStreamer("MouseEnter",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseLeave",e=>this.sendMessageController.sendMessageToStreamer("MouseLeave",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseDown",e=>this.sendMessageController.sendMessageToStreamer("MouseDown",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseUp",e=>this.sendMessageController.sendMessageToStreamer("MouseUp",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseMove",e=>this.sendMessageController.sendMessageToStreamer("MouseMove",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseWheel",e=>this.sendMessageController.sendMessageToStreamer("MouseWheel",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"MouseDouble",e=>this.sendMessageController.sendMessageToStreamer("MouseDouble",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TouchStart",e=>this.sendMessageController.sendMessageToStreamer("TouchStart",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TouchEnd",e=>this.sendMessageController.sendMessageToStreamer("TouchEnd",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"TouchMove",e=>this.sendMessageController.sendMessageToStreamer("TouchMove",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadConnected",()=>this.sendMessageController.sendMessageToStreamer("GamepadConnected")),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadButtonPressed",e=>this.sendMessageController.sendMessageToStreamer("GamepadButtonPressed",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadButtonReleased",e=>this.sendMessageController.sendMessageToStreamer("GamepadButtonReleased",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadAnalog",e=>this.sendMessageController.sendMessageToStreamer("GamepadAnalog",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"GamepadDisconnected",e=>this.sendMessageController.sendMessageToStreamer("GamepadDisconnected",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XREyeViews",e=>this.sendMessageController.sendMessageToStreamer("XREyeViews",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRHMDTransform",e=>this.sendMessageController.sendMessageToStreamer("XRHMDTransform",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRControllerTransform",e=>this.sendMessageController.sendMessageToStreamer("XRControllerTransform",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRSystem",e=>this.sendMessageController.sendMessageToStreamer("XRSystem",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonTouched",e=>this.sendMessageController.sendMessageToStreamer("XRButtonTouched",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonTouchReleased",e=>this.sendMessageController.sendMessageToStreamer("XRButtonTouchReleased",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonPressed",e=>this.sendMessageController.sendMessageToStreamer("XRButtonPressed",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRButtonReleased",e=>this.sendMessageController.sendMessageToStreamer("XRButtonReleased",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"XRAnalog",e=>this.sendMessageController.sendMessageToStreamer("XRAnalog",e)),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"ChannelRelayStatus",()=>{}),this.streamMessageController.registerMessageHandler(w.Tt.ToStreamer,"Multiplexed",()=>{})}onCommand(e){i.Vy.Info("DataChannelReceiveMessageType.Command");const t=new TextDecoder("utf-16").decode(e.slice(1));i.Vy.Info("Data Channel Command: "+t);const n=JSON.parse(t);"onScreenKeyboard"===n.command&&this.handleOnScreenKeyboardCommand(n)}handleOnScreenKeyboardCommand(e){var t,n,i,s;const r={showOnScreenKeyboard:null===(t=e.showOnScreenKeyboard)||void 0===t||t,x:null!==(n=e.x)&&void 0!==n?n:0,y:null!==(i=e.y)&&void 0!==i?i:0,contents:null!==(s=e.contents)&&void 0!==s?s:""};this.pixelStreaming.dispatchEvent(new I.Gi(r))}onProtocolMessage(e){try{const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t);Object.prototype.hasOwnProperty.call(n,"Direction")||i.Vy.Error("Malformed protocol received. Ensure the protocol message contains a direction");const s=n.Direction;delete n.Direction,i.Vy.Info(`Received new ${s==w.Tt.FromStreamer?"FromStreamer":"ToStreamer"} protocol. Updating existing protocol...`),Object.keys(n).forEach(e=>{const t=n[e];switch(s){case w.Tt.ToStreamer:if(!Object.prototype.hasOwnProperty.call(t,"id"))return void i.Vy.Error(`ToStreamer->${e} protocol definition was malformed as it didn't contain at least an id\n\n Definition was: ${JSON.stringify(t,null,2)}`);if("UIInteraction"===e||"Command"===e||"LatencyTest"===e)return;this.streamMessageController.toStreamerHandlers.get(e)?this.streamMessageController.toStreamerMessages.set(e,t):i.Vy.Error(`There was no registered handler for "${e}" - try adding one using registerMessageHandler(MessageDirection.ToStreamer, "${e}", myHandler)`);break;case w.Tt.FromStreamer:if(!Object.prototype.hasOwnProperty.call(t,"id"))return void i.Vy.Error(`FromStreamer->${e} protocol definition was malformed as it didn't contain at least an id\n\n Definition was: ${JSON.stringify(t,null,2)}`);this.streamMessageController.fromStreamerHandlers.get(e)?this.streamMessageController.fromStreamerMessages.set(t.id,e):i.Vy.Error(`There was no registered handler for "${t}" - try adding one using registerMessageHandler(MessageDirection.FromStreamer, "${e}", myHandler)`);break;default:i.Vy.Error(`Unknown direction: ${s}`)}}),this.toStreamerMessagesController.SendRequestInitialSettings(),this.toStreamerMessagesController.SendRequestQualityControl()}catch(e){i.Vy.Info(e)}}onInputControlOwnership(e){const t=new Uint8Array(e);i.Vy.Info("DataChannelReceiveMessageType.InputControlOwnership");const n=new Boolean(t[1]).valueOf();i.Vy.Info(`Received input controller message - will your input control the stream: ${n}`),this.pixelStreaming._onInputControlOwnership(n)}onGamepadResponse(e){const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t);this.gamePadController.onGamepadResponseReceived(n.controllerId)}onAfkTriggered(){this.afkController.onAfkClick(),this.videoPlayer.isPaused()&&this.videoPlayer.hasVideoSource()&&this.playStream()}setAfkEnabled(e){e?this.onAfkTriggered():this.afkController.stopAfkWarningTimer()}tryReconnect(e){this.forceReconnect=!0,this.doReconnect(e)}doReconnect(e){this.protocol?(this.isReconnecting=!0,this.protocol.isConnected()?(this.forceReconnect||(this.disconnectMessage=`${e} Reconnecting.`),this.closeSignalingServer(e,!0)):(this.pixelStreaming._onWebRtcAutoConnect(),this.connectToSignallingServer())):i.Vy.Info("This player has no protocol connection.")}loadFreezeFrameOrShowPlayOverlay(){this.pixelStreaming.dispatchEvent(new I.vx({shouldShowPlayOverlay:this.shouldShowPlayOverlay,isValid:this.freezeFrameController.valid,jpegData:this.freezeFrameController.jpeg})),!0===this.shouldShowPlayOverlay?(i.Vy.Info("showing play overlay"),this.resizePlayerStyle()):(i.Vy.Info("showing freeze frame"),this.freezeFrameController.showFreezeFrame()),setTimeout(()=>{this.videoPlayer.setVideoEnabled(!1)},this.freezeFrameController.freezeFrameDelay)}onFreezeFrameMessage(e){i.Vy.Info("DataChannelReceiveMessageType.FreezeFrame");const t=new Uint8Array(e);this.freezeFrameController.processFreezeFrameMessage(t,()=>this.loadFreezeFrameOrShowPlayOverlay())}invalidateFreezeFrameAndEnableVideo(){i.Vy.Info("DataChannelReceiveMessageType.FreezeFrame"),setTimeout(()=>{this.pixelStreaming.dispatchEvent(new I.RW),this.freezeFrameController.hideFreezeFrame()},this.freezeFrameController.freezeFrameDelay),this.videoPlayer.getVideoElement()&&this.videoPlayer.setVideoEnabled(!0)}onFileExtension(e){const t=new Uint8Array(e);v.f.setExtensionFromBytes(t,this.file)}onFileMimeType(e){const t=new Uint8Array(e);v.f.setMimeTypeFromBytes(t,this.file)}onFileContents(e){const t=new Uint8Array(e);v.f.setContentsFromBytes(t,this.file)}playStream(){if(!this.videoPlayer.getVideoElement()){const e="Could not play video stream because the video player was not initialized correctly.";return this.pixelStreaming.dispatchEvent(new I.vL({message:e})),i.Vy.Error(e),void this.closeSignalingServer("Stream not initialized correctly",!1)}if(this.videoPlayer.hasVideoSource()){if(this.setTouchInputEnabled(this.config.isFlagEnabled(p.iI.TouchInput)),this.pixelStreaming.dispatchEvent(new I.Lz),this.streamController.audioElement.srcObject){const e=this.config.isFlagEnabled(p.iI.StartVideoMuted);this.streamController.audioElement.muted=e,e?this.playVideo():this.streamController.audioElement.play().then(()=>{this.playVideo()}).catch(e=>{i.Vy.Info(e),i.Vy.Info("Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new I.FJ({reason:e}))})}else this.playVideo();this.shouldShowPlayOverlay=!1,this.freezeFrameController.showFreezeFrame()}else i.Vy.Warning("Cannot play stream, the video element has no srcObject to play.")}playVideo(){this.videoPlayer.play().catch(e=>{this.streamController.audioElement.srcObject&&this.streamController.audioElement.pause(),i.Vy.Info(e),i.Vy.Info("Browser does not support autoplaying video without interaction - to resolve this we are going to show the play button overlay."),this.pixelStreaming.dispatchEvent(new I.FJ({reason:e}))})}autoPlayVideoOrSetUpPlayOverlay(){this.config.isFlagEnabled(p.iI.AutoPlayVideo)&&this.playStream(),this.resizePlayerStyle()}connectToSignallingServer(){this.locallyClosed=!1,this.enableAutoReconnect=!0,this.disconnectMessage=null;const e=this.signallingUrlBuilder();this.protocol.connect(e);const t=this.config.getNumericSettingValue(p.k$.KeepaliveDelay);t>0&&(this.keepalive=new l.P(this.protocol,t),this.keepalive.onTimeout=()=>{i.Vy.Error("Protocol timeout"),this.protocol.disconnect()})}startSession(e){if(this.peerConfig=e,this.config.isFlagEnabled(p.iI.ForceTURN)&&!this.checkTurnServerAvailability(e))return i.Vy.Info("No turn server was found in the Peer Connection Options. TURN cannot be forced, closing connection. Please use STUN instead"),void this.closeSignalingServer("TURN cannot be forced, closing connection. Please use STUN instead.",!1);this.peerConnectionController=new m.J(this.peerConfig,this.config,this.preferredCodec),this.peerConnectionController.onVideoStats=e=>{this.handleVideoStats(e)},this.peerConnectionController.onLatencyCalculated=e=>{this.pixelStreaming._onLatencyCalculated(e)},this.peerConnectionController.onSendWebRTCOffer=e=>{this.handleSendWebRTCOffer(e)},this.peerConnectionController.onSetLocalDescription=e=>{this.handleSendWebRTCAnswer(e)},this.peerConnectionController.onSetRemoteDescription=e=>{this.pixelStreaming._onWebRtcSdpOffer(e)},this.peerConnectionController.onPeerIceCandidate=e=>this.handleSendIceCandidate(e),this.peerConnectionController.onDataChannel=e=>this.handleDataChannel(e),this.peerConnectionController.showTextOverlayConnecting=()=>this.pixelStreaming._onWebRtcConnecting(),this.peerConnectionController.showTextOverlaySetupFailure=()=>this.pixelStreaming._onWebRtcFailed();let t=!1;this.peerConnectionController.onIceConnectionStateChange=()=>{!t&&["connected","completed"].includes(this.peerConnectionController.peerConnection.iceConnectionState)&&(this.pixelStreaming._onWebRtcConnected(),t=!0)},this.peerConnectionController.onTrack=e=>this.streamController.handleOnTrack(e)}checkTurnServerAvailability(e){if(!e.iceServers)return i.Vy.Info("A turn sever was not found"),!1;for(const t of e.iceServers)for(const e of t.urls)if(e.includes("turn"))return i.Vy.Info(`A turn sever was found at ${e}`),!0;return i.Vy.Info("A turn sever was not found"),!1}handleOnConfigMessage(e){this.resizePlayerStyle(),this.startSession(e.peerConnectionOptions)}handlePingMessage(e){this.protocol.sendMessage(a.o(o.H2,{time:e.time}))}handleStreamerListMessage(e){i.Vy.Info(`Got streamer list ${e.ids}`);let t="";const n=this.config.getSettingOption(p.mY.StreamerId);n.selected.toString().trim()&&(t=n.selected);const s=[...e.ids];s.unshift(""),this.config.setOptionSettingOptions(p.mY.StreamerId,s);let r="";const l=this.config.isFlagEnabled(p.iI.WaitForStreamer),d=this.config.getNumericSettingValue(p.k$.MaxReconnectAttempts),c=this.config.getNumericSettingValue(p.k$.StreamerAutoJoinInterval),h=this.config.useUrlParams,u=new M.Z(window.location.search);h&&u.has(p.mY.StreamerId)?t=u.get(p.mY.StreamerId):this.subscribedStream&&(t=this.subscribedStream),t&&e.ids.includes(t)?r=t:t&&l||1!=e.ids.length||(r=e.ids[0]),r?(this.reconnectAttempt=0,this.isReconnecting=!1,this.config.setOptionSettingValue(p.mY.StreamerId,r)):l&&(this.reconnectAttempt<d?(this.reconnectAttempt++,this.isReconnecting=!0,setTimeout(()=>{this.protocol.sendMessage(a.o(o.zW))},c)):(this.reconnectAttempt=0,this.isReconnecting=!1,this.enableAutoReconnect=!1)),this.pixelStreaming.dispatchEvent(new I.jG({messageStreamerList:e,autoSelectedStreamerId:r,wantedStreamerId:t}))}handleSubscribeFailedMessage(e){this.reconnectAttempt=0,this.isReconnecting=!1,this.enableAutoReconnect=!1,this.pixelStreaming._onSubscribeFailed(e.message)}handleStreamerIDChangedMessage(e){const t=e.newID,n=this.config.getSettingOption(p.mY.StreamerId),i=n.onChange;n.onChange=()=>{};const s=n.options;for(let e=0;e<s.length;++e)if(s[e]==this.subscribedStream){s[e]=t;break}n.options=s,n.selected=t,n.onChange=i,this.subscribedStream=e.newID,this.pixelStreaming.dispatchEvent(new I.ie({newID:t}))}handleWebRtcAnswer(e){i.Vy.Info(`Got answer sdp ${e.sdp}`);const t={sdp:e.sdp,type:"answer"};this.peerConnectionController.receiveAnswer(t),this.handlePostWebrtcNegotiation()}handleWebRtcOffer(e){i.Vy.Info(`Got offer sdp ${e.sdp}`),this.isUsingSFU=!!e.sfu&&e.sfu,this.isUsingSVC=!!e.scalabilityMode&&"L1T1"!=e.scalabilityMode,(this.isUsingSFU||this.isUsingSVC)&&(this.peerConnectionController.preferredCodec="");const t=e.scalabilityMode?e.scalabilityMode:"L1T1";let n=["Default"];if(this.isUsingSFU)if(this.isUsingSVC){n=[];const e=+t[1],i=+t[3];for(let t=1;t<=e;t++)for(let e=1;e<=i;e++)n.push(`S${t}T${e}`)}else n=["Low","Medium","High"];this.config.setOptionSettingOptions(p.mY.PreferredQuality,n),this.config.setOptionSettingValue(p.mY.PreferredQuality,n.slice(-1)[0]);const s={sdp:e.sdp,type:"offer"};this.peerConnectionController.receiveOffer(s,this.config),this.handlePostWebrtcNegotiation()}handleWebRtcSFUPeerDatachannels(e){const t={ordered:!0,negotiated:!0,id:e.sendStreamId},n=e.sendStreamId!=e.recvStreamId;if(this.sendrecvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,n?"send-datachannel":"datachannel",t),n){const t={ordered:!0,negotiated:!0,id:e.recvStreamId};this.recvDataChannelController.createDataChannel(this.peerConnectionController.peerConnection,"recv-datachannel",t),this.recvDataChannelController.handleOnOpen=()=>this.protocol.sendMessage(a.o(o.C_)),this.recvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}else this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handlePostWebrtcNegotiation(){this.afkController.startAfkWarningTimer(),this.pixelStreaming._onWebRtcSdp(),this.statsTimerHandle&&void 0!==this.statsTimerHandle&&window.clearInterval(this.statsTimerHandle),this.statsTimerHandle=window.setInterval(()=>this.getStats(),1e3),this.setMouseInputEnabled(this.config.isFlagEnabled(p.iI.MouseInput)),this.setKeyboardInputEnabled(this.config.isFlagEnabled(p.iI.KeyboardInput)),this.setGamePadInputEnabled(this.config.isFlagEnabled(p.iI.GamepadInput))}handleIceCandidate(e){i.Vy.Info("Web RTC Controller: onWebRtcIce");const t=new RTCIceCandidate(e);this.peerConnectionController.handleOnIce(t)}handleSendIceCandidate(e){i.Vy.Info("OnIceCandidate"),e.candidate&&e.candidate.candidate&&this.protocol.sendMessage(a.o(o.BI,{candidate:e.candidate}))}handleDataChannel(e){i.Vy.Info("Data channel created for us by browser as we are a receiving peer."),this.sendrecvDataChannelController.dataChannel=e.channel,this.sendrecvDataChannelController.setupDataChannel(),this.sendrecvDataChannelController.handleOnMessage=e=>this.handleOnMessage(e)}handleSendWebRTCOffer(e){i.Vy.Info("Sending the offer to the Server");const t={sdp:e.sdp,minBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMinBitrate),maxBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMaxBitrate)};this.protocol.sendMessage(a.o(o.x,t))}handleSendWebRTCAnswer(e){i.Vy.Info("Sending the answer to the Server");const t={sdp:e.sdp,minBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMinBitrate),maxBitrateBps:1e3*this.config.getNumericSettingValue(p.k$.WebRTCMaxBitrate)};this.protocol.sendMessage(a.o(o.ZF,t)),this.isUsingSFU&&this.protocol.sendMessage(a.o(o.tg)),this.pixelStreaming._onWebRtcSdpAnswer(e)}setUpMouseAndFreezeFrame(){const e=this.videoPlayer.getVideoParentElement(),t=this.videoPlayer.getVideoElement();this.coordinateConverter.reconfigure({width:e.clientWidth,height:e.clientHeight},{width:t.videoWidth,height:t.videoHeight}),this.freezeFrameController.freezeFrame.resize()}closeSignalingServer(e,t){var n;this.locallyClosed=!0,this.enableAutoReconnect=t,this.disconnectMessage=e,null===(n=this.protocol)||void 0===n||n.disconnect(1e3,e)}closePeerConnection(){var e;null===(e=this.peerConnectionController)||void 0===e||e.close()}close(){this.closeSignalingServer("",!1),this.closePeerConnection()}getStats(){this.peerConnectionController.generateStats()}sendLatencyTest(){this.latencyStartTime=Date.now(),this.streamMessageController.toStreamerHandlers.get("LatencyTest")([JSON.stringify({StartTime:this.latencyStartTime})])}sendDataChannelLatencyTest(e){this.streamMessageController.toStreamerHandlers.get("DataChannelLatencyTest")([JSON.stringify(e)])}sendEncoderMinQP(e){i.Vy.Info(`MinQP=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MinQP":e})])}sendEncoderMaxQP(e){i.Vy.Info(`MaxQP=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MaxQP":e})])}sendEncoderMinQuality(e){i.Vy.Info(`MinQuality=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MinQuality":e})])}sendEncoderMaxQuality(e){i.Vy.Info(`MaxQuality=${e}\n`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"Encoder.MaxQuality":e})])}sendWebRTCMinBitrate(e){i.Vy.Info(`WebRTC Min Bitrate=${e}`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.MinBitrate":e})])}sendWebRTCMaxBitrate(e){i.Vy.Info(`WebRTC Max Bitrate=${e}`),null!=e&&this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.MaxBitrate":e})])}sendWebRTCFps(e){i.Vy.Info(`WebRTC FPS=${e}`),null!=e&&(this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.Fps":e})]),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"WebRTC.MaxFps":e})]))}sendShowFps(){i.Vy.Info("---- Sending show stat to UE ----"),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({"stat.fps":""})])}sendIframeRequest(){i.Vy.Info("---- Sending Request for an IFrame ----"),this.streamMessageController.toStreamerHandlers.get("IFrameRequest")()}emitUIInteraction(e){i.Vy.Info("---- Sending custom UIInteraction message ----"),this.streamMessageController.toStreamerHandlers.get("UIInteraction")([JSON.stringify(e)])}emitCommand(e){i.Vy.Info("---- Sending custom Command message ----"),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify(e)])}emitConsoleCommand(e){i.Vy.Info("---- Sending custom Command:ConsoleCommand message ----"),this.streamMessageController.toStreamerHandlers.get("Command")([JSON.stringify({ConsoleCommand:e})])}sendRequestQualityControlOwnership(){i.Vy.Info("---- Sending Request to Control Quality ----"),this.toStreamerMessagesController.SendRequestQualityControl()}sendTextboxEntry(e){var t;i.Vy.Info("---- Sending TextboxEntry message ----"),null===(t=this.streamMessageController.toStreamerHandlers.get("TextboxEntry"))||void 0===t||t([e])}handleLatencyTestResult(e){i.Vy.Info("DataChannelReceiveMessageType.latencyTest");const t=new TextDecoder("utf-16").decode(e.slice(1)),n=new f.Z;Object.assign(n,JSON.parse(t)),n.processFields(),n.testStartTimeMs=this.latencyStartTime,n.browserReceiptTimeMs=Date.now(),n.latencyExcludingDecode=~~(n.browserReceiptTimeMs-n.testStartTimeMs),n.testDuration=~~(n.TransmissionTimeMs-n.ReceiptTimeMs),n.networkLatency=~~(n.latencyExcludingDecode-n.testDuration),n.frameDisplayDeltaTimeMs&&n.browserReceiptTimeMs&&(n.endToEndLatency=(n.frameDisplayDeltaTimeMs,n.networkLatency,~~+n.CaptureToSendMs)),this.pixelStreaming._onLatencyTestResult(n)}handleDataChannelLatencyTestResponse(e){i.Vy.Info("DataChannelReceiveMessageType.dataChannelLatencyResponse");const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t);this.pixelStreaming._onDataChannelLatencyTestResponse(n)}handleInitialSettings(e){i.Vy.Info("DataChannelReceiveMessageType.InitialSettings");const t=new TextDecoder("utf-16").decode(e.slice(1)),n=JSON.parse(t),s=new g.C9;n.Encoder&&(s.EncoderSettings=n.Encoder),n.WebRTC&&(s.WebRTCSettings=n.WebRTC),n.PixelStreaming&&(s.PixelStreamingSettings=n.PixelStreaming),n.ConfigOptions&&void 0!==n.ConfigOptions.DefaultToHover&&this.config.setFlagEnabled(p.iI.HoveringMouseMode,!!n.ConfigOptions.DefaultToHover),s.ueCompatible(),i.Vy.Info(t),this.pixelStreaming._onInitialSettings(s)}handleVideoEncoderAvgQP(e){i.Vy.Info("DataChannelReceiveMessageType.VideoEncoderAvgQP");const t=Number(new TextDecoder("utf-16").decode(e.slice(1)));this.setVideoEncoderAvgQP(t)}handleVideoInitialized(){this.pixelStreaming._onVideoInitialized(),this.autoPlayVideoOrSetUpPlayOverlay(),this.resizePlayerStyle(),this.videoPlayer.updateVideoStreamSize()}onQualityControlOwnership(e){const t=new Uint8Array(e);i.Vy.Info("DataChannelReceiveMessageType.QualityControlOwnership"),this.isQualityController=new Boolean(t[1]).valueOf(),i.Vy.Info(`Received quality controller message, will control quality: ${this.isQualityController}`),this.pixelStreaming._onQualityControlOwnership(this.isQualityController)}handleVideoStats(e){this.pixelStreaming._onVideoStats(e)}resizePlayerStyle(){this.videoPlayer.resizePlayerStyle()}setPreferredCodec(e){this.preferredCodec=e,this.peerConnectionController&&(this.peerConnectionController.preferredCodec=e,this.peerConnectionController.updateCodecSelection=!1)}setVideoEncoderAvgQP(e){this.videoAvgQp=e,this.pixelStreaming._onVideoEncoderAvgQP(this.videoAvgQp)}setKeyboardInputEnabled(e){var t;null===(t=this.keyboardController)||void 0===t||t.unregister(),e&&(this.keyboardController=this.inputClassesFactory.registerKeyBoard(this.config))}setMouseInputEnabled(e){var t;if(null===(t=this.mouseController)||void 0===t||t.unregister(),e){const e=this.config.isFlagEnabled(p.iI.HoveringMouseMode)?p.Bs.HoveringMouse:p.Bs.LockedMouse;this.mouseController=this.inputClassesFactory.registerMouse(e)}}setTouchInputEnabled(e){var t;null===(t=this.touchController)||void 0===t||t.unregister(),e&&(this.touchController=this.inputClassesFactory.registerTouch(this.config.isFlagEnabled(p.iI.FakeMouseWithTouches)))}setGamePadInputEnabled(e){var t;null===(t=this.gamePadController)||void 0===t||t.unregister(),e&&(this.gamePadController=this.inputClassesFactory.registerGamePad())}registerDataChannelEventEmitters(e){e.onOpen=(e,t)=>this.pixelStreaming.dispatchEvent(new I.ys({label:e,event:t})),e.onClose=(e,t)=>this.pixelStreaming.dispatchEvent(new I.CE({label:e,event:t})),e.onError=(e,t)=>this.pixelStreaming.dispatchEvent(new I.EQ({label:e,event:t}))}registerMessageHandler(e,t,n){t===w.Tt.FromStreamer&&void 0===n&&i.Vy.Warning(`Unable to register handler for ${e} as no handler was passed`),this.streamMessageController.registerMessageHandler(t,e,i=>void 0===n&&t===w.Tt.ToStreamer?this.sendMessageController.sendMessageToStreamer(e,i):n(i))}}},9689(e,t,n){n.d(t,{R:()=>a});var i=n(948),s=n(2807),r=n(6077),o=n(223);class a{constructor(e){this.xrViewerPose=null,this.EPSILON=1e-7,this.videoTexture=null,this.prevVideoWidth=0,this.prevVideoHeight=0,this.leftView=null,this.rightView=null,this.lastSentLeftEyeProj=null,this.lastSentRightEyeProj=null,this.lastSentRelativeLeftEyePos=null,this.lastSentRelativeRightEyePos=null,this.xrSession=null,this.webRtcController=e,this.xrGamepadController=new s.E(this.webRtcController.streamMessageController),this.onSessionEnded=new EventTarget,this.onSessionStarted=new EventTarget,this.onFrame=new EventTarget}xrClicked(){if(this.xrSession)this.xrSession.end();else{if(!navigator.xr)return void i.Vy.Error("This browser does not support XR.");navigator.xr.requestSession("immersive-vr",{optionalFeatures:[]}).then(e=>{this.onXrSessionStarted(e)})}}onXrSessionEnded(){i.Vy.Info("XR Session ended"),this.xrSession=null,this.onSessionEnded.dispatchEvent(new Event("xrSessionEnded"))}initGL(){if(this.gl)return;const e=document.createElement("canvas");this.gl=e.getContext("webgl2",{xrCompatible:!0}),this.gl.clearColor(0,0,0,1)}initShaders(){const e=this.gl.createShader(this.gl.VERTEX_SHADER);this.gl.shaderSource(e,"\n attribute vec2 a_position;\n attribute vec2 a_texCoord;\n\n // varyings\n varying vec2 v_texCoord;\n\n void main() {\n gl_Position = vec4(a_position.x, a_position.y, 0, 1);\n // pass the texCoord to the fragment shader\n // The GPU will interpolate this value between points.\n v_texCoord = a_texCoord;\n }\n "),this.gl.compileShader(e);const t=this.gl.createShader(this.gl.FRAGMENT_SHADER);this.gl.shaderSource(t,"\n precision mediump float;\n\n // our texture\n uniform sampler2D u_image;\n\n // the texCoords passed in from the vertex shader.\n varying vec2 v_texCoord;\n\n void main() {\n gl_FragColor = texture2D(u_image, v_texCoord);\n }\n "),this.gl.compileShader(t);const n=this.gl.createProgram();this.gl.attachShader(n,e),this.gl.attachShader(n,t),this.gl.linkProgram(n),this.gl.useProgram(n),this.positionLocation=this.gl.getAttribLocation(n,"a_position"),this.texcoordLocation=this.gl.getAttribLocation(n,"a_texCoord")}updateVideoTexture(){this.videoTexture||(this.videoTexture=this.gl.createTexture(),this.gl.bindTexture(this.gl.TEXTURE_2D,this.videoTexture),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_S,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_WRAP_T,this.gl.CLAMP_TO_EDGE),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MIN_FILTER,this.gl.LINEAR),this.gl.texParameteri(this.gl.TEXTURE_2D,this.gl.TEXTURE_MAG_FILTER,this.gl.LINEAR));const e=this.webRtcController.videoPlayer.getVideoElement().videoHeight,t=this.webRtcController.videoPlayer.getVideoElement().videoWidth;this.prevVideoHeight!=e||this.prevVideoWidth!=t?this.gl.texImage2D(this.gl.TEXTURE_2D,0,this.gl.RGBA,t,e,0,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()):this.gl.texSubImage2D(this.gl.TEXTURE_2D,0,0,0,t,e,this.gl.RGBA,this.gl.UNSIGNED_BYTE,this.webRtcController.videoPlayer.getVideoElement()),this.prevVideoHeight=e,this.prevVideoWidth=t}initBuffers(){this.positionBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.positionBuffer),this.gl.enableVertexAttribArray(this.positionLocation),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([-1,1,1,1,-1,-1,-1,-1,1,1,1,-1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.positionLocation,2,this.gl.FLOAT,!1,0,0),this.texcoordBuffer=this.gl.createBuffer(),this.gl.bindBuffer(this.gl.ARRAY_BUFFER,this.texcoordBuffer),this.gl.enableVertexAttribArray(this.texcoordLocation),this.gl.bufferData(this.gl.ARRAY_BUFFER,new Float32Array([0,0,1,0,0,1,0,1,1,0,1,1]),this.gl.STATIC_DRAW),this.gl.vertexAttribPointer(this.texcoordLocation,2,this.gl.FLOAT,!1,0,0)}onXrSessionStarted(e){i.Vy.Info("XR Session started"),this.xrSession=e,this.xrSession.addEventListener("end",()=>{this.onXrSessionEnded()}),this.initGL(),this.initShaders(),this.initBuffers(),e.requestReferenceSpace("local").then(t=>{if(this.xrRefSpace=t,this.xrSession.updateRenderState({baseLayer:new XRWebGLLayer(this.xrSession,this.gl)}),this.xrSession.supportedFrameRates)for(const t of this.xrSession.supportedFrameRates)90==t&&e.updateTargetFrameRate(90);this.xrSession.requestAnimationFrame(this.onXrFrame.bind(this))}),this.onSessionStarted.dispatchEvent(new Event("xrSessionStarted"))}areArraysEqual(e,t){return e.length===t.length&&e.every((e,n)=>Math.abs(e-t[n])<=this.EPSILON)}arePointsEqual(e,t){return Math.abs(e.x-t.x)>=this.EPSILON&&Math.abs(e.y-t.y)>=this.EPSILON&&Math.abs(e.z-t.z)>=this.EPSILON}sendXRDataToUE(){if(null==this.leftView||null==this.rightView)return;let e=null==this.lastSentLeftEyeProj||null==this.lastSentRightEyeProj||null==this.lastSentRelativeLeftEyePos||null==this.lastSentRelativeRightEyePos;const t=this.leftView.transform.matrix,n=this.leftView.projectionMatrix,i=this.rightView.transform.matrix,s=this.rightView.projectionMatrix,r=this.xrViewerPose.transform.matrix;if(!e&&null!=this.lastSentLeftEyeProj&&null!=this.lastSentRightEyeProj){const t=this.areArraysEqual(n,this.lastSentLeftEyeProj),i=this.areArraysEqual(s,this.lastSentRightEyeProj);e=0==t||0==i}const o=new DOMPointReadOnly(this.leftView.transform.position.x-this.xrViewerPose.transform.position.x,this.leftView.transform.position.y-this.xrViewerPose.transform.position.y,this.leftView.transform.position.z-this.xrViewerPose.transform.position.z,1),a=new DOMPointReadOnly(this.leftView.transform.position.x-this.xrViewerPose.transform.position.x,this.leftView.transform.position.y-this.xrViewerPose.transform.position.y,this.leftView.transform.position.z-this.xrViewerPose.transform.position.z,1);if(!e&&null!=this.lastSentRelativeLeftEyePos&&null!=this.lastSentRelativeRightEyePos){const t=this.arePointsEqual(o,this.lastSentRelativeLeftEyePos),n=this.arePointsEqual(a,this.lastSentRelativeRightEyePos);e=0==t||0==n}e?(this.webRtcController.streamMessageController.toStreamerHandlers.get("XREyeViews")([t[0],t[4],t[8],t[12],t[1],t[5],t[9],t[13],t[2],t[6],t[10],t[14],t[3],t[7],t[11],t[15],n[0],n[4],n[8],n[12],n[1],n[5],n[9],n[13],n[2],n[6],n[10],n[14],n[3],n[7],n[11],n[15],i[0],i[4],i[8],i[12],i[1],i[5],i[9],i[13],i[2],i[6],i[10],i[14],i[3],i[7],i[11],i[15],s[0],s[4],s[8],s[12],s[1],s[5],s[9],s[13],s[2],s[6],s[10],s[14],s[3],s[7],s[11],s[15],r[0],r[4],r[8],r[12],r[1],r[5],r[9],r[13],r[2],r[6],r[10],r[14],r[3],r[7],r[11],r[15]]),this.lastSentLeftEyeProj=n,this.lastSentRightEyeProj=s,this.lastSentRelativeLeftEyePos=o,this.lastSentRelativeRightEyePos=a):this.webRtcController.streamMessageController.toStreamerHandlers.get("XRHMDTransform")([r[0],r[4],r[8],r[12],r[1],r[5],r[9],r[13],r[2],r[6],r[10],r[14],r[3],r[7],r[11],r[15]])}onXrFrame(e,t){if(this.xrViewerPose=t.getViewerPose(this.xrRefSpace),this.xrViewerPose){if(this.updateViews(),null==this.leftView||null==this.rightView)return;this.sendXRDataToUE(),this.updateVideoTexture(),this.render()}this.webRtcController.config.isFlagEnabled(o.iI.XRControllerInput)&&this.xrSession.inputSources.forEach((e,n,i)=>{this.xrGamepadController.updateStatus(e,t,this.xrRefSpace)},this),this.xrSession.requestAnimationFrame((e,t)=>this.onXrFrame(e,t)),this.onFrame.dispatchEvent(new r.qM({time:e,frame:t}))}updateViews(){if(this.xrViewerPose)for(const e of this.xrViewerPose.views)"left"===e.eye?this.leftView=e:"right"===e.eye&&(this.rightView=e)}render(){if(!this.gl)return;const e=this.xrSession.renderState.baseLayer;this.gl.bindFramebuffer(this.gl.FRAMEBUFFER,e.framebuffer),this.gl.viewport(0,0,e.framebufferWidth,e.framebufferHeight),this.gl.drawArrays(this.gl.TRIANGLES,0,6)}static isSessionSupported(e){"https:"!==location.protocol&&i.Vy.Info("WebXR requires https, if you want WebXR use https.");try{if(navigator.xr)return navigator.xr.isSessionSupported(e)}catch(e){return Promise.resolve(!1)}return Promise.resolve(!1)}}},1810(e,t,n){n.d(t,{l:()=>w});var i=n(948),s=n(223),r=n(8486),o=n(7716),a=n(2860),l=n(1630),d=n(1954),c=n(9068),h=n(9924),u=n(4285),m=n(2113),p=n(5117),g=n(3345),f=n(1366),v=n(1664),y=n(5143),b=n(4498);class w{constructor(e){this.editTextModal=null,this._options=e,this.stream=e.stream,this._uiFeatureElement=this.createUIFeaturesElement(),this._rootElement=this.createRootElement(this.stream,this._uiFeatureElement),this.onColorModeChanged=e.onColorModeChanged,this.configUI=new f.j(this.stream.config),this.createOverlays(),(0,y.wM)(e.statsPanelConfig)&&(this.statsPanel=new p.i(e.statsPanelConfig),this.uiFeaturesElement.appendChild(this.statsPanel.rootElement)),(0,y.wM)(e.settingsPanelConfig)&&(this.settingsPanel=new m.O,this.uiFeaturesElement.appendChild(this.settingsPanel.rootElement),this.configureSettings()),e.videoQpIndicatorConfig&&e.videoQpIndicatorConfig.disableIndicator||(this.videoQpIndicator=new g.W(e.videoQpIndicatorConfig),this.uiFeaturesElement.appendChild(this.videoQpIndicator.rootElement)),this.createButtons(),this.registerCallbacks(),this.showConnectOrAutoConnectOverlays(),this.setColorMode(this.configUI.isCustomFlagEnabled(y.ai.LightMode)),this.stream.config._addOnSettingChangedListener(s.iI.HideUI,e=>{this._uiFeatureElement.style.visibility=e?"hidden":"visible"}),this.stream.config.isFlagEnabled(s.iI.HideUI)&&(this._uiFeatureElement.style.visibility="hidden")}createOverlays(){this.disconnectOverlay=new o.T(this.stream.videoElementParent),this.connectOverlay=new r.X(this.stream.videoElementParent),this.playOverlay=new a.z(this.stream.videoElementParent),this.infoOverlay=new l.v(this.stream.videoElementParent),this.errorOverlay=new d.h(this.stream.videoElementParent),this.afkOverlay=new c.n(this.stream.videoElementParent),this.disconnectOverlay.onAction(()=>this.stream.reconnect()),this.connectOverlay.onAction(()=>this.stream.connect()),this.playOverlay.onAction(()=>this.stream.play())}createButtons(){const e=/iPhone/.test(navigator.userAgent),t=/iPad/.test(navigator.userAgent)||/Macintosh/.test(navigator.userAgent)&&"ontouchend"in document,n=navigator.vendor&&navigator.vendor.indexOf("Apple")>-1&&navigator.userAgent&&-1==navigator.userAgent.indexOf("CriOS")&&-1==navigator.userAgent.indexOf("FxiOS"),i=e||!n&&t;void 0===this._options.fullScreenControlsConfig&&i&&(this._options.fullScreenControlsConfig={creationMode:y.ny.Disable});const s={statsButtonType:this._options.statsPanelConfig?this._options.statsPanelConfig.visibilityButtonConfig:void 0,settingsButtonType:this._options.settingsPanelConfig?this._options.settingsPanelConfig.visibilityButtonConfig:void 0,fullscreenButtonType:this._options.fullScreenControlsConfig,xrIconType:this._options.xrControlsConfig,hideControlsInFullscreen:this._options.hideControlsInFullscreen},r=new h.H(s);this.uiFeaturesElement.appendChild(r.rootElement);const o=this._options.fullScreenControlsConfig&&this._options.fullScreenControlsConfig.creationMode===y.ny.UseCustomElement?new b.cW(this._options.fullScreenControlsConfig.customElement):r.fullscreenIcon;o&&(o.fullscreenElement=/iPad|iPhone|iPod/.test(navigator.userAgent)?this.stream.videoElementParent.getElementsByTagName("video")[0]:this.rootElement);const a=r.settingsIcon?r.settingsIcon.rootElement:this._options.settingsPanelConfig.visibilityButtonConfig.customElement;a&&(a.onclick=()=>this.settingsClicked()),this.settingsPanel&&(this.settingsPanel.settingsCloseButton.onclick=()=>this.settingsClicked());const l=r.xrIcon?r.xrIcon.rootElement:this._options.xrControlsConfig.creationMode===y.ny.UseCustomElement?this._options.xrControlsConfig.customElement:void 0;l&&(l.onclick=()=>this.stream.toggleXR());const d=r.statsIcon?r.statsIcon.rootElement:this._options.statsPanelConfig.visibilityButtonConfig.customElement;if(d&&(d.onclick=()=>this.statsClicked()),this.statsPanel&&(this.statsPanel.statsCloseButton.onclick=()=>this.statsClicked()),this.settingsPanel){const e=new u.U("Show FPS","Toggle");e.addOnClickListener(()=>{this.stream.requestShowFps()});const t=new u.U("Restart Stream","Restart");t.addOnClickListener(()=>{this.stream.reconnect()});const n=new u.U("Request keyframe","Request");n.addOnClickListener(()=>{this.stream.requestIframe()});const i=this.configUI.buildSectionWithHeading(this.settingsPanel.settingsContentElement,"Commands");i.appendChild(e.rootElement),i.appendChild(n.rootElement),i.appendChild(t.rootElement)}}configureSettings(){this.configUI.populateSettingsElement(this.settingsPanel.settingsContentElement,this._options.settingsPanelConfig),this.configUI.addCustomFlagOnSettingChangedListener(y.ai.LightMode,e=>{this.configUI.setCustomFlagLabel(y.ai.LightMode,`Color Scheme: ${e?"Light":"Dark"} Mode`),this.setColorMode(e)})}registerCallbacks(){this.stream.addEventListener("afkWarningActivate",({data:{countDown:e,dismissAfk:t}})=>this.showAfkOverlay(e,t)),this.stream.addEventListener("afkWarningUpdate",({data:{countDown:e}})=>this.afkOverlay.updateCountdown(e)),this.stream.addEventListener("afkWarningDeactivate",()=>this.afkOverlay.hide()),this.stream.addEventListener("afkTimedOut",()=>this.afkOverlay.hide()),this.stream.addEventListener("videoEncoderAvgQP",({data:{avgQP:e}})=>this.onVideoEncoderAvgQP(e)),this.stream.addEventListener("webRtcSdp",()=>this.onWebRtcSdp()),this.stream.addEventListener("webRtcAutoConnect",()=>this.onWebRtcAutoConnect()),this.stream.addEventListener("webRtcConnecting",()=>this.onWebRtcConnecting()),this.stream.addEventListener("webRtcConnected",()=>this.onWebRtcConnected()),this.stream.addEventListener("webRtcFailed",()=>this.onWebRtcFailed()),this.stream.addEventListener("webRtcDisconnected",({data:{eventString:e,allowClickToReconnect:t}})=>this.onDisconnect(e,t)),this.stream.addEventListener("videoInitialized",()=>this.onVideoInitialized()),this.stream.addEventListener("streamLoading",()=>this.onStreamLoading()),this.stream.addEventListener("playStreamError",({data:{message:e}})=>this.onPlayStreamError(e)),this.stream.addEventListener("playStream",()=>this.onPlayStream()),this.stream.addEventListener("playStreamRejected",({data:{reason:e}})=>this.onPlayStreamRejected(e)),this.stream.addEventListener("loadFreezeFrame",({data:{shouldShowPlayOverlay:e}})=>this.onLoadFreezeFrame(e)),this.stream.addEventListener("statsReceived",({data:{aggregatedStats:e}})=>this.onStatsReceived(e)),this.stream.addEventListener("latencyCalculated",({data:{latencyInfo:e}})=>this.onLatencyUpdate(e)),this.stream.addEventListener("latencyTestResult",({data:{latencyTimings:e}})=>this.onLatencyTestResults(e)),this.stream.addEventListener("dataChannelLatencyTestResult",({data:{result:e}})=>this.onDataChannelLatencyTestResults(e)),this.stream.addEventListener("streamerListMessage",({data:{messageStreamerList:e,autoSelectedStreamerId:t,wantedStreamerId:n}})=>this.handleStreamerListMessage(e,t,n)),this.stream.addEventListener("subscribeFailed",({data:{message:e}})=>this.handleSubscribeFailedMessage(e)),this.stream.addEventListener("settingsChanged",e=>this.onSettingsChanged(e)),this.stream.addEventListener("playerCount",({data:{count:e}})=>this.onPlayerCount(e)),this.stream.addEventListener("webRtcTCPRelayDetected",()=>i.Vy.Warning("Stream quailty degraded due to network enviroment, stream is relayed over TCP.")),this.stream.addEventListener("showOnScreenKeyboard",e=>{if(!this.stream.config.isFlagEnabled(s.iI.UseModalForTextInput))return;const t=e.data;t.showOnScreenKeyboard&&this.showEditTextModal(t.contents)})}get rootElement(){return this._rootElement||(this._rootElement=this.createRootElement(this.stream,this.uiFeaturesElement)),this._rootElement}createRootElement(e,t){const n=document.createElement("div");if(n.id="playerUI",n.classList.add("noselect"),void 0===e)throw new Error("Could not create root element properly - pixelstreaming object was undefined. Are you calling this too early?");if(void 0===e.videoElementParent)throw new Error("Could not create root element properly - videoElementParent object was undefined. Are you calling this too early?");if(void 0===t)throw new Error("Could not create root element properly - uiFeaturesElement object was undefined. Are you calling this too early?");return n.appendChild(e.videoElementParent),n.appendChild(t),n}get uiFeaturesElement(){return this._uiFeatureElement||(this._uiFeatureElement=this.createUIFeaturesElement()),this._uiFeatureElement}createUIFeaturesElement(){const e=document.createElement("div");return e.id="uiFeatures",e}showDisconnectOverlay(e){this.hideCurrentOverlay(),this.updateDisconnectOverlay(e),this.disconnectOverlay.show(),this.currentOverlay=this.disconnectOverlay}updateDisconnectOverlay(e){this.disconnectOverlay.update(e)}onDisconnectionAction(){this.disconnectOverlay.activate()}hideCurrentOverlay(){null!=this.currentOverlay&&(this.currentOverlay.hide(),this.currentOverlay=null)}showConnectOverlay(){this.hideCurrentOverlay(),this.connectOverlay.show(),this.currentOverlay=this.connectOverlay}showPlayOverlay(){this.hideCurrentOverlay(),this.playOverlay.show(),this.currentOverlay=this.playOverlay}showTextOverlay(e){this.hideCurrentOverlay(),this.infoOverlay.update(e),this.infoOverlay.show(),this.currentOverlay=this.infoOverlay}showErrorOverlay(e){this.hideCurrentOverlay(),this.errorOverlay.update(e),this.errorOverlay.show(),this.currentOverlay=this.errorOverlay}settingsClicked(){var e;null===(e=this.statsPanel)||void 0===e||e.hide(),this.settingsPanel.toggleVisibility()}statsClicked(){var e;null===(e=this.settingsPanel)||void 0===e||e.hide(),this.statsPanel.toggleVisibility()}onConnectAction(){this.connectOverlay.activate()}onPlayAction(){this.playOverlay.activate()}showAfkOverlay(e,t){this.hideCurrentOverlay(),this.afkOverlay.updateCountdown(e),this.afkOverlay.onAction(()=>t()),this.afkOverlay.show(),this.currentOverlay=this.afkOverlay}showConnectOrAutoConnectOverlays(){this.stream.config.isFlagEnabled(s.iI.AutoConnect)||this.showConnectOverlay()}onWebRtcAutoConnect(){this.showTextOverlay("Auto Connecting Now")}onWebRtcSdp(){this.showTextOverlay("WebRTC Connection Negotiated")}onStreamLoading(){const e=document.createElement("span");e.className="visually-hidden",e.innerHTML="Loading...";const t=document.createElement("div");t.id="loading-spinner",t.className="spinner-border ms-2",t.setAttribute("role","status"),t.appendChild(e),this.showTextOverlay("Loading Stream "+t.outerHTML)}onDisconnect(e,t){var n;const i="Disconnected"+(e?`: ${e}`:".");t?this.showDisconnectOverlay(`${i} Click To Restart.`):this.showErrorOverlay(i),null===(n=this.statsPanel)||void 0===n||n.onDisconnect()}onWebRtcConnecting(){this.showTextOverlay("Starting connection to server, please wait")}onWebRtcConnected(){this.showTextOverlay("WebRTC connected, waiting for video")}onWebRtcFailed(){this.showErrorOverlay("Unable to setup video")}onLoadFreezeFrame(e){!0===e&&(i.Vy.Info("showing play overlay"),this.showPlayOverlay())}onPlayStream(){this.hideCurrentOverlay()}onPlayStreamError(e){this.showErrorOverlay(e)}onPlayStreamRejected(e){this.showPlayOverlay()}onVideoInitialized(){var e;this.stream.config.isFlagEnabled(s.iI.AutoPlayVideo)||this.showPlayOverlay(),null===(e=this.statsPanel)||void 0===e||e.onVideoInitialized(this.stream)}onVideoEncoderAvgQP(e){this.videoQpIndicator&&this.videoQpIndicator.updateQpTooltip(e)}onInitialSettings(e){var t;e.PixelStreamingSettings&&(null===(t=this.statsPanel)||void 0===t||t.configure(e.PixelStreamingSettings))}onStatsReceived(e){var t;null===(t=this.statsPanel)||void 0===t||t.handleStats(e)}onLatencyUpdate(e){var t;null===(t=this.statsPanel)||void 0===t||t.handleLatencyInfo(e)}onLatencyTestResults(e){var t;null===(t=this.statsPanel)||void 0===t||t.latencyTest.handleTestResult(e)}onDataChannelLatencyTestResults(e){var t;null===(t=this.statsPanel)||void 0===t||t.dataChannelLatencyTest.handleTestResult(e)}onPlayerCount(e){var t;null===(t=this.statsPanel)||void 0===t||t.handlePlayerCount(e)}handleStreamerListMessage(e,t,n){const i=this.stream.config.isFlagEnabled(s.iI.WaitForStreamer),r=this.stream.isReconnecting();let o=null,a=!0;t||(i&&n?r?(o=`Waiting for ${n} to become available.`,a=!1):(o=`Gave up waiting for ${n} to become available. Click to try again`,e.ids.length>0&&(o+=" or select a streamer from the settings menu."),a=!0):0==e.ids.length?r?(o="Waiting for a streamer to become available.",a=!1):(o="No streamers available. Click to try again.",a=!0):(o="Multiple streamers available. Select one from the settings menu.",a=!1),a?this.showDisconnectOverlay(o):this.showTextOverlay(o))}handleSubscribeFailedMessage(e){this.showDisconnectOverlay(`Subscribe failed: "${e}" Click to try again`)}setColorMode(e){this.onColorModeChanged&&this.onColorModeChanged(e)}showEditTextModal(e){var t;null===(t=this.editTextModal)||void 0===t||t.rootElement.remove(),this.editTextModal=new v.R,this.rootElement.append(this.editTextModal.rootElement),this.editTextModal.showModal(e),this.editTextModal.events.addEventListener("editConfirmed",e=>{const t=e;this.stream.sendTextboxEntry(t.confirmedText)})}onSettingsChanged(e){this.configUI.onSettingsChanged(e);const{data:{id:t,target:n,type:i}}=e;t==s.mY.PreferredQuality&&([...this.stream.config.getSettingOption(s.mY.PreferredQuality).options].includes("Default")?this.configUI.disableSetting(s.mY.PreferredQuality):this.configUI.enableSetting(s.mY.PreferredQuality))}}},1366(e,t,n){n.d(t,{j:()=>h});var i=n(948),s=n(223),r=n(5131),o=n(4520),a=n(883),l=n(7261),d=n(575),c=n(5143);class h{constructor(e){this.customFlags=new Map,this.flagsUi=new Map,this.numericParametersUi=new Map,this.textParametersUi=new Map,this.optionParametersUi=new Map,this.createCustomUISettings(e.useUrlParams),this.registerSettingsUIComponents(e)}createCustomUISettings(e){this.customFlags.set(c.ai.LightMode,new r.T(c.ai.LightMode,"Color Scheme: Dark Mode","Page styling will be either light or dark",!1,e,(e,t)=>{t.label=`Color Scheme: ${e?"Light":"Dark"} Mode`}))}registerSettingsUIComponents(e){for(const t of e.getFlags())this.flagsUi.set(t.id,new o.J(t));for(const e of Array.from(this.customFlags.values()))this.flagsUi.set(e.id,new o.J(e));for(const t of e.getTextSettings())this.textParametersUi.set(t.id,new l.I(t));for(const t of e.getNumericSettings())this.numericParametersUi.set(t.id,new a.C(t));for(const t of e.getOptionSettings())this.optionParametersUi.set(t.id,new d.U(t))}buildSectionWithHeading(e,t){const n=document.createElement("section");n.classList.add("settingsContainer");const i=document.createElement("div");return i.classList.add("settingsHeader"),i.classList.add("settings-text"),i.textContent=t,n.appendChild(i),e.appendChild(n),n}populateSettingsElement(e,t){if((0,c.DF)(t,c.Uv.PixelStreaming)){const n=this.buildSectionWithHeading(e,c.Uv.PixelStreaming);(0,c.wx)(t,s.gw.SignallingServerUrl)&&this.addSettingText(n,this.textParametersUi.get(s.gw.SignallingServerUrl)),(0,c.wx)(t,s.mY.StreamerId)&&this.addSettingOption(n,this.optionParametersUi.get(s.mY.StreamerId)),(0,c.wx)(t,s.iI.AutoConnect)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.AutoConnect)),(0,c.wx)(t,s.iI.AutoPlayVideo)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.AutoPlayVideo)),(0,c.wx)(t,s.iI.UseMic)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.UseMic)),(0,c.wx)(t,s.iI.UseCamera)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.UseCamera)),(0,c.wx)(t,s.iI.StartVideoMuted)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.StartVideoMuted)),(0,c.wx)(t,s.iI.IsQualityController)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.IsQualityController)),(0,c.wx)(t,s.iI.ForceMonoAudio)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.ForceMonoAudio)),(0,c.wx)(t,s.iI.ForceTURN)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.ForceTURN)),(0,c.wx)(t,s.iI.SuppressBrowserKeys)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.SuppressBrowserKeys)),(0,c.wx)(t,s.iI.AFKDetection)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.AFKDetection)),(0,c.wx)(t,s.iI.WaitForStreamer)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.WaitForStreamer)),(0,c.wx)(t,s.k$.AFKTimeoutSecs)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.AFKTimeoutSecs)),(0,c.wx)(t,s.k$.AFKCountdownSecs)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.AFKCountdownSecs)),(0,c.wx)(t,s.k$.MaxReconnectAttempts)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.MaxReconnectAttempts)),(0,c.wx)(t,s.k$.StreamerAutoJoinInterval)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.StreamerAutoJoinInterval)),(0,c.wx)(t,s.k$.KeepaliveDelay)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.KeepaliveDelay))}if((0,c.DF)(t,c.Uv.UI)){const n=this.buildSectionWithHeading(e,c.Uv.UI);(0,c.wx)(t,s.iI.MatchViewportResolution)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.MatchViewportResolution)),(0,c.wx)(t,s.iI.HoveringMouseMode)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.HoveringMouseMode)),(0,c.wx)(t,c.ai.LightMode)&&this.addSettingFlag(n,this.flagsUi.get(c.ai.LightMode))}if((0,c.DF)(t,c.Uv.Input)){const n=this.buildSectionWithHeading(e,c.Uv.Input);(0,c.wx)(t,s.iI.KeyboardInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.KeyboardInput)),(0,c.wx)(t,s.iI.MouseInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.MouseInput)),(0,c.wx)(t,s.iI.FakeMouseWithTouches)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.FakeMouseWithTouches)),(0,c.wx)(t,s.iI.TouchInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.TouchInput)),(0,c.wx)(t,s.iI.GamepadInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.GamepadInput)),(0,c.wx)(t,s.iI.XRControllerInput)&&this.addSettingFlag(n,this.flagsUi.get(s.iI.XRControllerInput))}if((0,c.DF)(t,c.Uv.Encoder)){const n=this.buildSectionWithHeading(e,c.Uv.Encoder);(0,c.wx)(t,s.k$.CompatQualityMin)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.CompatQualityMin)),(0,c.wx)(t,s.k$.CompatQualityMax)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.CompatQualityMax));const i=this.optionParametersUi.get(s.mY.PreferredCodec);(0,c.wx)(t,s.mY.PreferredCodec)&&this.addSettingOption(n,this.optionParametersUi.get(s.mY.PreferredCodec)),i&&[...i.selector.options].map(e=>e.value).includes("Only available on Chrome")&&i.disable(),(0,c.wx)(t,s.mY.PreferredQuality)&&this.addSettingOption(n,this.optionParametersUi.get(s.mY.PreferredQuality))}if((0,c.DF)(t,c.Uv.WebRTC)){const n=this.buildSectionWithHeading(e,c.Uv.WebRTC);(0,c.wx)(t,s.k$.WebRTCFPS)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.WebRTCFPS)),(0,c.wx)(t,s.k$.WebRTCMinBitrate)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.WebRTCMinBitrate)),(0,c.wx)(t,s.k$.WebRTCMaxBitrate)&&this.addSettingNumeric(n,this.numericParametersUi.get(s.k$.WebRTCMaxBitrate))}}addSettingText(e,t){t&&(e.appendChild(t.rootElement),this.textParametersUi.set(t.setting.id,t))}addSettingFlag(e,t){t&&(e.appendChild(t.rootElement),this.flagsUi.set(t.setting.id,t))}addSettingNumeric(e,t){t&&(e.appendChild(t.rootElement),this.numericParametersUi.set(t.setting.id,t))}addSettingOption(e,t){t&&(e.appendChild(t.rootElement),this.optionParametersUi.set(t.setting.id,t))}onSettingsChanged({data:{id:e,target:t,type:n}}){if("flag"===n){const n=e,i=t,s=this.flagsUi.get(n);s&&(s.flag!==i.flag&&(s.flag=i.flag),s.label!==i.label&&(s.label=i.label))}else if("number"===n){const n=e,i=t,s=this.numericParametersUi.get(n);s&&(s.number!==i.number&&(s.number=i.number),s.label!==i.label&&(s.label=i.label))}else if("text"===n){const n=e,i=t,s=this.textParametersUi.get(n);s&&(s.text!==i.text&&(s.text=i.text),s.label!==i.label&&(s.label=i.label))}else if("option"===n){const n=e,i=t,s=this.optionParametersUi.get(n);if(s){const e=s.options,t=i.options;e.length===t.length&&e.every(e=>t.includes(e))||(s.options=i.options),s.selected!==i.selected&&(s.selected=i.selected),s.label!==i.label&&(s.label=i.label)}}}addCustomFlagOnSettingChangedListener(e,t){this.customFlags.has(e)&&(this.customFlags.get(e).onChange=t)}setCustomFlagLabel(e,t){this.customFlags.has(e)?(this.customFlags.get(e).label=t,this.flagsUi.get(e).label=t):i.Vy.Warning(`Cannot set label for flag called ${e} - it does not exist in the Config.flags map.`)}isCustomFlagEnabled(e){return this.customFlags.get(e).flag}disableSetting(e){var t,n,i,r;(0,s.CR)(e)?null===(t=this.flagsUi.get(e))||void 0===t||t.disable():(0,s.tQ)(e)?null===(n=this.numericParametersUi.get(e))||void 0===n||n.disable():(0,s.B9)(e)?null===(i=this.textParametersUi.get(e))||void 0===i||i.disable():(0,s.Ri)(e)&&(null===(r=this.optionParametersUi.get(e))||void 0===r||r.disable())}enableSetting(e){var t,n,i,r;(0,s.CR)(e)?null===(t=this.flagsUi.get(e))||void 0===t||t.enable():(0,s.tQ)(e)?null===(n=this.numericParametersUi.get(e))||void 0===n||n.enable():(0,s.B9)(e)?null===(i=this.textParametersUi.get(e))||void 0===i||i.enable():(0,s.Ri)(e)&&(null===(r=this.optionParametersUi.get(e))||void 0===r||r.enable())}}},4251(e,t,n){n.d(t,{Y:()=>i});class i{constructor(e){this._setting=e}get setting(){return this._setting}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div")),this._rootElement}}},4520(e,t,n){n.d(t,{J:()=>s});var i=n(4251);class s extends i.Y{constructor(e){super(e),this.label=e.label,this.flag=e.flag}get setting(){return this._setting}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("div"),this._settingsTextElem.innerText=this.setting._label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}get checkbox(){return this._checkbox||(this._checkbox=document.createElement("input"),this._checkbox.type="checkbox",this._checkbox.addEventListener("keypress",e=>{e.stopPropagation()}),this._checkbox.addEventListener("keyup",e=>{e.stopPropagation()}),this._checkbox.addEventListener("keydown",e=>{e.stopPropagation()})),this._checkbox}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id=this.setting.id,this._rootElement.classList.add("setting"),this._rootElement.appendChild(this.settingsTextElem);const e=document.createElement("label");e.classList.add("tgl-switch"),this._rootElement.appendChild(e),this.checkbox.title=this.setting.description,this.checkbox.classList.add("tgl"),this.checkbox.classList.add("tgl-flat");const t=document.createElement("div");t.classList.add("tgl-slider"),e.appendChild(this.checkbox),e.appendChild(t),this.checkbox.addEventListener("change",()=>{this.setting.flag!==this.checkbox.checked&&(this.setting.flag=this.checkbox.checked,this.setting.updateURLParams())})}return this._rootElement}set flag(e){this.checkbox.checked=e}get flag(){return this.checkbox.checked}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}disable(){this.checkbox.disabled=!0}enable(){this.checkbox.disabled=!1}}},883(e,t,n){n.d(t,{C:()=>r});var i=n(948),s=n(4251);class r extends s.Y{constructor(e){super(e),this.label=this.setting.label,this.number=this.setting.number}get setting(){return this._setting}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("label"),this._settingsTextElem.innerText=this.setting.label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}get spinner(){return this._spinner||(this._spinner=document.createElement("input"),this._spinner.type="number",null!=this.setting.min&&(this._spinner.min=this.setting.min.toString()),null!=this.setting.max&&(this._spinner.max=this.setting.max.toString()),this._spinner.value=this.setting.number.toString(),this._spinner.title=this.setting.description,this._spinner.classList.add("form-control"),this.spinner.addEventListener("keypress",e=>{e.stopPropagation()}),this.spinner.addEventListener("keyup",e=>{e.stopPropagation()}),this.spinner.addEventListener("keydown",e=>{e.stopPropagation()})),this._spinner}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.classList.add("setting"),this._rootElement.classList.add("form-group"),this._rootElement.appendChild(this.settingsTextElem),this._rootElement.appendChild(this.spinner),this.spinner.onchange=e=>{const t=e.target,n=Number.parseFloat(t.value);Number.isNaN(n)?(i.Vy.Warning(`Could not parse value change into a valid number - value was ${t.value}, resetting value to ${this.setting.min}`),this.setting.number!==this.setting.min&&(this.setting.number=this.setting.min)):this.setting.number!==n&&(this.setting.number=n,this.setting.updateURLParams())}),this._rootElement}set number(e){this.spinner.value=this.setting.clamp(e).toString()}get number(){return+this.spinner.value}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}disable(){this.spinner.disabled=!0}enable(){this.spinner.disabled=!1}}},575(e,t,n){n.d(t,{U:()=>s});var i=n(4251);class s extends i.Y{constructor(e){super(e),this.label=this.setting.label,this.options=this.setting.options,this.selected=this.setting.selected}get setting(){return this._setting}get selector(){return this._selector||(this._selector=document.createElement("select"),this._selector.classList.add("form-control"),this._selector.classList.add("settings-option")),this._selector}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("div"),this._settingsTextElem.innerText=this.setting.label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id=this.setting.id,this._rootElement.classList.add("setting"),this._rootElement.classList.add("form-group"),this._rootElement.appendChild(this.settingsTextElem);const e=document.createElement("label");this._rootElement.appendChild(e),this.selector.title=this.setting.description,e.appendChild(this.selector),this.selector.onchange=()=>{this.setting.selected!==this.selector.value&&(this.setting.selected=this.selector.value,this.setting.updateURLParams())},this.selector.addEventListener("keypress",e=>{e.stopPropagation()}),this.selector.addEventListener("keyup",e=>{e.stopPropagation()}),this.selector.addEventListener("keydown",e=>{e.stopPropagation()})}return this._rootElement}set options(e){for(let e=this.selector.options.length-1;e>=0;e--)this.selector.remove(e);e.forEach(e=>{const t=document.createElement("option");t.value=e,t.innerHTML=e,this.selector.appendChild(t)})}get options(){return[...this.selector.options].map(e=>e.value)}set selected(e){const t=this.options.filter(t=>-1!==t.indexOf(e));t.length&&(this.selector.value=t[0])}get selected(){return this.selector.value}disable(){this.selector.disabled=!0}enable(){this.selector.disabled=!1}}},7261(e,t,n){n.d(t,{I:()=>s});var i=n(4251);class s extends i.Y{constructor(e){super(e),this.label=this.setting.label,this.text=this.setting.text}get setting(){return this._setting}get settingsTextElem(){return this._settingsTextElem||(this._settingsTextElem=document.createElement("div"),this._settingsTextElem.innerText=this.setting.label,this._settingsTextElem.title=this.setting.description),this._settingsTextElem}get textbox(){return this._textbox||(this._textbox=document.createElement("input"),this._textbox.classList.add("form-control"),this._textbox.type="textbox"),this._textbox}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id=this.setting.id,this._rootElement.classList.add("setting"),this._rootElement.appendChild(this.settingsTextElem);const e=document.createElement("label");this._rootElement.appendChild(e),this.textbox.title=this.setting.description,e.appendChild(this.textbox),this.textbox.addEventListener("input",e=>{this.setting.text!==this.textbox.value&&(this.setting.text=this.textbox.value,this.setting.updateURLParams()),e.stopPropagation()}),this.textbox.addEventListener("keypress",e=>{e.stopPropagation()}),this.textbox.addEventListener("keyup",e=>{e.stopPropagation()}),this.textbox.addEventListener("keydown",e=>{e.stopPropagation()})}return this._rootElement}set text(e){this.textbox.value=e}get text(){return this.textbox.value}set label(e){this.settingsTextElem.innerText=e}get label(){return this.settingsTextElem.innerText}disable(){this.textbox.disabled=!0}enable(){this.textbox.disabled=!1}}},9068(e,t,n){n.d(t,{n:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="afkOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("div");return e.id="afkOverlayInner",e.innerHTML='<center>No activity detected<br>Disconnecting in <span id="afkCountDownNumber"></span> seconds<br>Click to continue<br></center>',e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}updateCountdown(e){this.textElement.innerHTML=`<center>No activity detected<br>Disconnecting in <span id="afkCountDownNumber">${e}</span> seconds<br>Click to continue<br></center>`}}},2372(e,t,n){n.d(t,{J:()=>r});var i=n(948),s=n(5345);class r extends s.M{constructor(e,t,n){super(e,t,n),this.onActionCallback=()=>{i.Vy.Info("Did you forget to set the onAction callback in your overlay?")}}update(e){null==e&&null==e||(this.textElement.innerHTML=e)}onAction(e){this.onActionCallback=e}activate(){this.onActionCallback()}}},5345(e,t,n){n.d(t,{M:()=>i});class i{constructor(e,t,n){this.rootDiv=e,this.rootElement=t,this.textElement=n,this.rootElement.appendChild(this.textElement),this.hide(),this.rootDiv.appendChild(this.rootElement)}show(){this.rootElement.classList.remove("hiddenState")}hide(){this.rootElement.classList.add("hiddenState")}}},8486(e,t,n){n.d(t,{X:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="connectOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("div");return e.id="connectButton",e.innerHTML="Click to start",e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}}},7716(e,t,n){n.d(t,{T:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="disconnectOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("div");return e.id="disconnectButton",e.innerHTML="Click To Restart",e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}}},1954(e,t,n){n.d(t,{h:()=>s});var i=n(3267);class s extends i.Y{static createRootElement(){const e=document.createElement("div");return e.id="errorOverlay",e.className="textDisplayState",e}static createContentElement(){const e=document.createElement("div");return e.id="errorOverlayInner",e}constructor(e){super(e,s.createRootElement(),s.createContentElement())}}},1630(e,t,n){n.d(t,{v:()=>s});var i=n(3267);class s extends i.Y{static createRootElement(){const e=document.createElement("div");return e.id="infoOverlay",e.className="textDisplayState",e}static createContentElement(){const e=document.createElement("div");return e.id="messageOverlayInner",e}constructor(e){super(e,s.createRootElement(),s.createContentElement())}}},2860(e,t,n){n.d(t,{z:()=>s});var i=n(2372);class s extends i.J{static createRootElement(){const e=document.createElement("div");return e.id="playOverlay",e.className="clickableState",e}static createContentElement(){const e=document.createElement("img");return e.id="playButton",e.src="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAPEAAAD5CAYAAAD2mNNkAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAAJcEhZcwAADsMAAA7DAcdvqGQAAAAZdEVYdFNvZnR3YXJlAHBhaW50Lm5ldCA0LjAuMjHxIGmVAAASgklEQVR4Xu2dC7BdVX2HqUCCIRASCPjAFIQREBRBBSRYbFOt8lIrFUWRFqXWsT5wbItUqFWs0KqIMPKoYEWpRS06KDjS1BeVFkVQbCw+wCfiAwGhCKWP9PuZtU24uTe59zz22Y/vm/nGkXtz7jlrr9+sdfZea/03Wb169QtxGW62iYi0D8L7NbwYj8EdcdPyIxFpA4T2P/F/8Ua8CI/GhPnXyq+ISJMhrAlxxX9hRuYL8Sh8SPk1EWkqBHXdEFfcg6vw3fhs3Kb8uog0DQI6XYgr8rOvYsJ8OM4v/0xEmkIJ6ob4P8zIfANegCvQMIs0BQK5sRBXJMy/wIzM5+ByXFBeRkQmBUGcbYjX5S5MmM/AA3CL8nIiUjcEcJAQV9yBX8a/wSeiz5hF6obgDRPikGfMCfOX8DTcu7y0iNQBoRs2xBX/g3diwvwm3Kn8CREZJ4RtVCGuqMKcu9kn4xJ09ZfIuCBgow5xyJ3sTLNzAywrwF6J26NhFhk1BGscIV6XhPluvA6Pxx3KnxaRUUCoxh3iioQ5z5n/BY/FJeUtiMgwEKa6QlyRMN+Hn8Hn4ZblrYjIIBCiukMc8p25Ws6ZMD+zvB0RmSsEaBIhnkrew5V4EHrCiMhcKAFqCv+Nl+J+uBC9my2yMQhKk0Jcke/M78Gsy06YH1TerohMhYA0McQVP8Nz8UDcCl2bLTIVgtHkEFd8D8/E/XFrdGQWqSAQbQhxyKOpm/B03Ac9MkgkEIa2hLgiN78S5lPx0bgIvQEm/YUAtC3EFQnzzfgnuDc6zZZ+Qsdva4jX5Sv4atwXHZmlX9DhuxDikC2Qn8dXYUbmReUjinQbOntXQlyRTRafwldgwrxV+agi3YRO3rUQV/wcV+LL8DHoyZzSTejcXQ1xRc7/uhyzl3kv3Lx8dJFuQKfueohDnjFnZP4o/j7m0ZQH4Es3oDP3IcQV2f6YMF+COZjgUeiZ2dJu6MR9CvG63ILvx4zMCfO80iQi7YLO29cQV3wb34spsr4rumBE2gWdtu8hDln99S1MXeYX4M6leUSaDx3WEK8lRdYT5lR/zPlfnswpzYeOaojXJ4cSfB3Pw+fgtug0W5oJndMQT0/uZGeaXZVyfTZuV5pNpDnQMQ3xxsk0O9Ufz8ZDcdvSfCKThw5piGdP2ioF496JT0c3WcjkKR1T5kYWjCTM78DfQheMyOSgAxriwch35lR/vAbPwOXozS+pHzqeIR6Oal12wvx2fBy6yULqgw5niEdDwpyR+VpMkfXsmHIpp4wfOpohHj234RfwFNwDnWbL+KCDGeLxkJH5p3g1vg53K00uMlroXIZ4vGTBSMJ8FeZkzmWl6UVGA53KENfD/ZiyNCmynvO/FpdLIDIcdCZDXC8ZmfOd+d/wJejZXzIcdCJDXD95xpwjdnP+V74zH4Wu/pLBoPMY4smSMN+FKbJ+BBpmmRt0GkPcDBLmu/FjeAi6lFNmB53FEDeHTLPzaCoj80dwBfqMWTYMncQQN5esAPsw7lcul8j60EEMcfPJDbD3YU7l3KxcOpE10CkMcTvIVDvfmc/E3XELtPqjGOKWkhVgp+GemDD7vbnP0AEMcXtJkfU34GNxAToy9xEuvCFuP6vwJMyOqYXl0kpf4KIb4m5QncyZTRapZGGY+wIX2xB3i3vxOswmi13QaXbX4QIb4m6SY3a/iMdh7mYb5q7ChTXE3aXaaLESq7rMW5ZLL12Bi2qI+8E9eDkmzLuhYe4KXExD3B8yMt+Ol+KL0CLrXYCLaIj7R8J8K16CR6PLOdsMF88Q95fsmPoRXozPxdzNdvVX2+CiGWLJza+EOXWZj8Sd0APw2wIXyxBLqPYy34LnY8K8DA1z0+EiGWKZSgJ9I74LU2R9R3Sa3VS4OIZYZqJaynkWpsj6w0u3kSbBhTHEsjHuwxswpVwPw6Wl+0gT4IIYYpkNmWKnr1yPqf54KG5VupFMknJhRGZLwpzVX6n++DZ8GrpjapJwAQyxDELCnB1TqWTx1/gUdGSeBDS8IZZBSZBjzv76PP4VHoSGuU5ocEMsoyBhTsG4VH98Ix6A80s3k3FCQxtiGSVZMPIT/CwmzPuhz5jHCQ1siGUcZClnwvxpPAX3LF1ORg2Na4hlXGSKnQUjCfNn8PX4CNy0dD8ZBTSoIZZxkzBXI/Pn8ATMumzDPApoSEMsdZEw5zvzDzHT7JdjwuzZX8NAAxpimQSZZifMn8Tj8aGlS8pcofEMsUyKjMw5lTOnjHwcc2TQktI1ZbbQaIZYJk3CnE0WGZmvwOeh+5hnC41liKUpVCNzwvwJPBy9+bUxaCRDLE0jYb4fU/0x0+yD8cGly8pUaBxDLE0kQa7CfCfmML8D0SN2p0KjGGJpOglztWgkh/k9CT1it4LGMMTSFhLmLBrJ3exzcJ/SjfsNDWGIpY0k0D/AM/GRpTv3ExrAEEubqVaAnY5LsX93s/nQhli6QLUF8nWYI3bnYT+Wc/JBDbF0heqO9jfwlfhInI/dDjMf0BBLF0mYr8NsskiNqS2wm2Hmgxli6TJ5zpwjg/4Qd8buLRrhQxli6QM5ZjdHBh2H+c7cnUUjfBhDLH0hU+y7cCU+H7OXeV6JQnvhQxhi6RsJc0bmy/BZ+MsbYCUS7YM3b4ilryTM2QL5QUzBuHxnbt80mzdtiEVWr74NL8KUck2R9faMzLxZQyyyhozMWcp5If4uJszNP5yAN2mIRR5IVn/djOfhEdjsw/x4c4ZYZHryjPkmPBsPwYeV2DQL3pghFpmZTLFzZFDCnLrMz8DtsTkbLXgzhlhk4yTM2cu8CrNjKiNzwjz5OlO8CUMsMjcS5qzLfgumyPr2JU6TgTdgiEUGoyqynrrMv42TOTObP2yIRQYn0+ws5bwaU8r1N3HrEq964A8aYpHhSZjvwBSMS5gPwnrWZfOHDLHI6Mgz5hyxm4Jxf4kH4HjDzB8wxCKjJ2HONPuf8c9xHxzPXmZe2BCLjIdMsWMqWfwTnoiPwdGOzLygIRYZPwlzVWPqtbgXjmbBCC9kiEXqI8+Ys8nicnwN7laiODi8iCEWqZeMylmXnTCnYFxO5tyxRHLu8I8NschkSJizLvv7mJH5pbgY57Zjin9giEUmSzUyfw9TZP1Y3LZEdOPwy4ZYpBkkzKn++B38KB6F25Wozgy/ZIhFmkXCnLO/vosfwpwysqhEdn34oSEWaSYJ8y8w0+wP4GG4/oIR/qMhFmk2VZgzzU6Ys2Nq7T5m/o8hFmkHCXO2PybMF+O++CBDLNIuEuSsy8535lvxZEMs0j6qWszZJbXUEIu0i1vwrZhqFZv5nVikPWTqfA5mF9QDD+fjPxhikeaR777xdrwAn1Aiuz780BCLNIvsdMqBAqkNtRw3XBeKXzDEIpMno27Cezdeik/GBSWmG4ZfNMQikyPhzXrpVGXM6R8rcG7lVfkHhlikfhLe7FzKo6KV+Hu45m7zXOEfGmKReske4oT3k3gMblniOBi8gCEWqYeMvD/GK/F43KHEcDh4IUMsMl5yw+pHmLOoX4aDH8UzHbygIRYZD/nem5H3KjwBd8LRV1HkRQ2xyGjJ3eacNZ1iayfhr+P46hnz4oZYZDRk2pzwph7TX+CuOP76xfwRQywyHNlVVIX3VHx8iVc98AcNscjgZJFGypq+GffHwZ71DgN/1BCLzJ2f47/iWzBlTId71jsM/HFDLDI7crf5HrwG34YHY70FxaeDN2GIRTZMwpvjcK7Fd+BTcfLhreDNGGKRmcnIez2+Ew/FhTi3MivjhjdkiEXWJ0fEfhXPwmfi4hKZ5sGbM8Qia8n65lX4LkzlhYeVqDQX3qQhFlnzrPc/8FzMtsBl2Kxp80zwRg2x9J0cxn4epoBZlkjW/6x3GHjDhlj6SJZI5gTJ9+DzMeHdvMSiXfDGDbH0iWpbYMqgJLy7YLtG3qnwAQyx9IVsC7wEX4C74/h2FtUJH8QQS9fJUTg5QfI43APnle7fDfhAhli6So5//Ri+GBPeya1vHid8MEMsXSMH0X0CX4J74cLS3bsJH9AQS1fITavs6f1VeLEdz3qHgQ9piKXtZHNC1jfnELpfTpux++Gt4MMaYmkrmTZ/GV+LCW+3p80zwQc3xNI2skTyBswhdHtic7YFTgIawBBLm7gRT8HH4dbYn2nzTNAIhljaQCrkvwkT3tywGv8pkm2BxjDE0lRyokbOsjoDUyE/N6wM71RoFEMsTSPhvRPfjY/GBei0eSZoHEMsTeJ2/ADug+3cVVQ3NJQhliaQkfcf8SnoqDsXaDBDLJMij4ruxcvwaejIOwg0nCGWusnyyIT3CjwM+7lIY1TQgIZY6iA3qzLyZmdRSn0eic09QbJN0JCGWMZJwpuR9w78Er4Qu7klcFLQoIZYxkXq9OZuc2oWZXNCv5dHjgsa1hDLqKnCm2qB2Zzw0NLdZBzQwIZYRkWmzT/DhPdE3KV0MxknNLQhlmHJ996ENwXHsjkhq6xcHlkXNLYhlkFJeHPDKhvyszkh4W338a9thEY3xDJX8qgoGxMS3tTpfSzOL11K6obGN8QyWxLeLI/MtDmlPvdHp82ThotgiGU2ZOStwrsCXSLZFLgYhlg2xF2Yc6zOxqejCzWaBhfFEMt0pMj2VzB1eg/BJaXLSNPg4hhiqcjd5izUSIX8lPp8Fi4tXUWaChfJEEtIhfwU2b4QU2R7O3RfbxvgQhnifpOD17+JCW9KfS5F7zi3CS6YIe4nOXj9W/h3eAw+vHQJaRtcPEPcL/Ks92a8CI/FXdFpc5vhAhri/vB9/Hv8A3wUukSyC3AhDXH3+Sn+Ax6PqZDvEskuwQU1xN2kOgonJ0im1Gc2J2xRLrt0CS6sIe4W1c6ij2NG3lROmFcut3QRLrAh7g4J75X4R7g3Gt4+wIU2xO0n0+ZP4aswBcdc39wnuOCGuL3kWe/n8DW4Ly4ql1X6BBfeELeTL+AJ+ATcBn3W21e4+Ia4PeSO89fwT/GJuAhdItl36ASGuPlkZ9G38fWYo3Ay8hpeWQOdwRA3lxwBexO+GVPq07Insj50DEPcTLK++e2Yc6wWo995ZXroHIa4WdyKOQpnOWbavGm5VCLTQycxxM0gp0iej0/G3LAyvDI76CyGeHJUx+G8Hw9Ewytzh05jiCdDDqK7HA/Aheh3XhkMOo8hrpe096fxd9D9vDI8pVPJ+LkXP4vPQafMMjroUIZ4fOQ7b9Y3X4U5x8oi2zJ66FiGePRkeWROkfwiHoee3Szjgw5miEdDRt14D+bw9ZfjDqWZRcYHHc0QD091FE6OgP0z9OB1qQ86myEenKxtTngz8r4BHXmlfuh4hnjuJLwp9Zlqgafh7qU5ReqHDmiIZ0+mzVkeeQO+FR9fmlFkctARDfHsSJ3ef8dqZ5GH0EkzoDMa4pnJ3ea0T07TOAezvnlBaTqRZlA6qTyQhDdrm1fhBXgwGl5pJnROQ7yW6jlvwvtefAZuXppKpJmUTitrp80p9Zn1zQ8uTSTSbOisfQ9xps2pkJ/wPhe3K00j0g7otH0N8f34dXwfHo0W2ZZ2QuftY4izPDKnabwIH4Ee/yrthQ7clxBnldUP8BJ8MSa87uuV9kNH7nqIc4ZVwvshfCkuQ8Mr3YEO3dUQZ4nkD/HDmFKfe5SPLNIt6NxdDHHC+xF8BabsiSOvdBc6eJdCfBtehglvimz7rFe6Dx29CyHOQo0r8NWYOr0W2Zb+QIdva4izRDLPeldi6vSm1OfC8rFE+gMdv40hznu+GlMhfz/cEj0OR/oJnb9NIc57vQZPxCehI69ICUbTydnN1+LJmPAuKW9fRAhEk0OcZ73XYw6hOwg9v1lkKgSjqSHO5oRT8TdwKbq+WWQ6CEeTQpw7zlmocTqmTm/Ob7bomMiGICRNCHGmzT/BszClPjPyuspKZDYQlkmH+Mf4t7gct0enzSJzgdBMKsQJ70X4VHTkFRkUwlN3iFM54YN4KG6LHkQnMgyEqK4Q51nvpZjwZuQ1vCKjgDDVEeIr8XBMeL3bLDJKCNW4QpyR9zo8ArdBb1iJjAPCNeoQJ7ypFngszkc3JoiME0I2qhDnWW8Kjv0xujFBpC4I3DAhzgqrHESXUp/Z0/uQ8rIiUhcEb5AQJ7z34TfwJNy5vJyI1A0BnG2IE9yYsiffwTfizuh3XpFJQghnE+J83014v4upkL8r+qhIpAkQxg2FOOHNzzNtPhf3REdekSZRQjqVTJtzguSNeD4eWH5dRJoGAZ0a4rvxm3ghrkCnzSJNhpBWIc7/plpgwpudRZ7dLNIGCOvtJbwX42G4uPxIRNoAoU2d3iNxUflPItIaNtnk/wEGBoMdpECGHAAAAABJRU5ErkJggg==",e.alt="Start Streaming",e}constructor(e){super(e,s.createRootElement(),s.createContentElement()),this.rootElement.addEventListener("click",()=>{this.activate()})}}},3267(e,t,n){n.d(t,{Y:()=>s});var i=n(5345);class s extends i.M{constructor(e,t,n){super(e,t,n)}update(e){null==e&&null==e||(this.textElement.innerHTML=e)}}},920(e,t,n){n.d(t,{e:()=>o});var i=n(3317),s=n(2885),r=n(8161);class o{constructor(e){this.defaultLightModePalette={"--color0":"#e2e0dd80","--color1":"#FFFFFF","--color2":"#000000","--color3":"#0585fe","--color4":"#35b350","--color5":"#ffab00","--color6":"#e1e2dd","--color7":"#c3c4bf"},this.defaultDarkModePalette={"--color0":"#1d1f22e0","--color1":"#000000","--color2":"#FFFFFF","--color3":"#0585fe","--color4":"#35b350","--color5":"#ffab00","--color6":"#1e1d22","--color7":"#3c3b40"},this.defaultStyles={":root":{"--color0":"#1d1f22e0","--color1":"#000000","--color2":"#FFFFFF","--color3":"#0585fe","--color4":"#35b350","--color5":"#ffab00","--color6":"#1e1d22","--color7":"#3c3b40","--color8":"#41008c","--color9":"#3e0070","--color10":"#2e0052","--color11":"rgba(65,0,139,1)"},".noselect":{userSelect:"none"},"#playerUI":{width:"100%",height:"100%",position:"relative"},"#videoElementParent":{width:"100%",height:"100%",position:"absolute",backgroundColor:"var(--color1)"},"#uiFeatures":{width:"100%",height:"100%",zIndex:"30",position:"relative",color:"var(--color2)",pointerEvents:"none",overflow:"hidden"},".UiTool .tooltiptext":{visibility:"hidden",width:"auto",color:"var(--color2)",textAlign:"center",borderRadius:"15px",padding:"0px 10px",fontFamily:"'Montserrat', sans-serif",fontSize:"0.75rem",letterSpacing:"0.75px",position:"absolute",top:"0",transform:"translateY(25%)",left:"125%",zIndex:"20"},".UiTool:hover .tooltiptext":{visibility:"visible",backgroundColor:"var(--color7)"},"#connection .tooltiptext":{top:"125%",transform:"translateX(-25%)",left:"0",zIndex:"20",padding:"5px 10px"},"#connection":{position:"absolute",bottom:"8%",left:"5%",fontFamily:"'Michroma', sans-serif",height:"3rem",width:"3rem",pointerEvents:"all"},"#settings-panel .tooltiptext":{display:"block",top:"125%",transform:"translateX(-50%)",left:"0",zIndex:"20",padding:"5px 10px",border:"3px solid var(--color3)",width:"max-content",fallbacks:[{width:"max-content"},{border:"3px solid var(--color3)"},{padding:"5px 10px"},{zIndex:"20"},{left:"0"},{transform:"translateX(-50%)"},{top:"125%"},{display:"block"}]},"#controls":{position:"absolute",top:"3%",left:"2%",fontFamily:"'Michroma', sans-serif",pointerEvents:"all",display:"block"},"#controls>*":{marginBottom:"0.5rem",borderRadius:"50%",display:"block",height:"2rem",lineHeight:"1.75rem",padding:"0.5rem"},"#controls #additionalinfo":{textAlign:"center",fontFamily:"'Montserrat', sans-serif"},"#fullscreen-btn":{padding:"0.6rem !important"},"#minimizeIcon":{display:"none"},"#settingsBtn, #statsBtn":{cursor:"pointer"},"#uiFeatures button":{backgroundColor:"var(--color7)",border:"1px solid var(--color7)",color:"var(--color2)",position:"relative",width:"3rem",height:"3rem",padding:"0.5rem",textAlign:"center"},"#uiFeatures button:hover":{backgroundColor:"var(--color3)",border:"3px solid var(--color3)",transition:"0.25s ease",paddingLeft:"0.55rem",paddingTop:"0.55rem"},"#uiFeatures button:active":{border:"3px solid var(--color3)",backgroundColor:"var(--color7)",paddingLeft:"0.55rem",paddingTop:"0.55rem"},".btn-flat":{backgroundColor:"transparent",color:"var(--color2)",fontFamily:"'Montserrat'",fontWeight:"bold",border:"3px solid var(--color3)",borderRadius:"1rem",fontSize:"0.75rem",paddingLeft:"0.5rem",paddingRight:"0.5rem",cursor:"pointer",textAlign:"center"},".btn-flat:hover":{backgroundColor:"var(--color3)",transition:"ease 0.3s"},".btn-flat:disabled":{background:"var(--color7)",borderColor:"var(--color3)",color:"var(--color3)",cursor:"default"},".btn-flat:active":{backgroundColor:"transparent"},".btn-flat:focus":{outline:"none"},"#uiFeatures img":{width:"100%",height:"100%"},".panel-wrap":{position:"absolute",top:"0",bottom:"0",right:"0",height:"100%",minWidth:"20vw",maxWidth:"90vw",transform:"translateX(100%)",transition:".3s ease-out",pointerEvents:"all",overflowY:"auto",overflowX:"hidden",backgroundColor:"var(--color0)"},".panel-wrap-visible":{transform:"translateX(0%)"},".panel":{overflowY:"auto",padding:"1em"},"#settingsHeading, #statsHeading":{display:"inline-block",fontSize:"2em",marginBlockStart:"0.67em",marginBlockEnd:"0.67em",marginInlineStart:"0px",marginInlineEnd:"0px",position:"relative",padding:"0 0 0 2rem"},"#settingsClose, #statsClose":{margin:"0.5rem",paddingTop:"0.5rem",paddingBottom:"0.5rem",paddingRight:"0.5rem",fontSize:"2em",float:"right"},"#settingsClose:after, #statsClose:after":{paddingLeft:"0.5rem",display:"inline-block",content:'"\\00d7"'},"#settingsClose:hover, #statsClose:hover":{color:"var(--color3)",transition:"ease 0.3s"},"#settingsContent, #statsContent":{marginLeft:"2rem",marginRight:"2rem"},".setting":{display:"flex",flexDirection:"row",justifyContent:"space-between",padding:"0.15rem 10px 0.15rem 10px"},".settings-text":{color:"var(--color2)",verticalAlign:"middle",fontWeight:"normal"},".settings-option":{width:"100%",textOverflow:"ellipsis",whiteSpace:"nowrap"},"#connectOverlay, #playOverlay, #infoOverlay, #errorOverlay, #afkOverlay, #disconnectOverlay":{zIndex:"30",position:"absolute",color:"var(--color2)",fontSize:"1.8em",width:"100%",height:"100%",backgroundColor:"var(--color1)",alignItems:"center",justifyContent:"center",textTransform:"uppercase"},".clickableState":{alignItems:"center",justifyContent:"center",display:"flex",cursor:"pointer"},".textDisplayState":{display:"flex"},".hiddenState":{display:"none"},"#playButton, #connectButton":{display:"inline-block",height:"auto",zIndex:"30"},"img#playButton":{maxWidth:"241px",width:"10%"},"#uiInteraction":{position:"fixed"},"#UIInteractionButtonBoundary":{padding:"2px"},"#UIInteractionButton":{cursor:"pointer"},".btn-overlay":{verticalAlign:"middle",display:"inline-block"},".tgl-switch":{verticalAlign:"middle",display:"inline-block"},".tgl-switch .tgl":{display:"none"},".tgl, .tgl:after, .tgl:before, .tgl *, .tgl *:after, .tgl *:before, .tgl+.tgl-slider":{"-webkit-box-sizing":"border-box",boxSizing:"border-box"},".tgl::-moz-selection, .tgl:after::-moz-selection, .tgl:before::-moz-selection, .tgl *::-moz-selection, .tgl *:after::-moz-selection, .tgl *:before::-moz-selection, .tgl+.tgl-slider::-moz-selection":{background:"none"},".tgl::selection, .tgl:after::selection, .tgl:before::selection, .tgl *::selection, .tgl *:after::selection, .tgl *:before::selection, .tgl+.tgl-slider::selection":{background:"none"},".tgl-slider":{},".tgl+.tgl-slider":{outline:"0",display:"block",width:"40px",height:"18px",position:"relative",cursor:"pointer",userSelect:"none"},".tgl+.tgl-slider:after, .tgl+.tgl-slider:before":{position:"relative",display:"block",content:'""',width:"50%",height:"100%"},".tgl+.tgl-slider:after":{left:"0"},".tgl+.tgl-slider:before":{display:"none"},".tgl-flat+.tgl-slider":{padding:"2px","-webkit-transition":"all .2s ease",transition:"all .2s ease",background:"var(--color6)",border:"3px solid var(--color7)",borderRadius:"2em"},".tgl-flat+.tgl-slider:after":{"-webkit-transition":"all .2s ease",transition:"all .2s ease",background:"var(--color7)",content:'""',borderRadius:"1em"},".tgl-flat:checked+.tgl-slider":{border:"3px solid var(--color3)"},".tgl-flat:checked+.tgl-slider:after":{left:"50%",background:"var(--color3)"},".btn-apply":{display:"block !important",marginLeft:"auto",marginRight:"auto",width:"40%"},".form-control":{backgroundColor:"var(--color7)",border:"2px solid var(--color7)",borderRadius:"4px",color:"var(--color2)",textAlign:"right",fontFamily:"inherit"},".form-control:hover":{borderColor:"var(--color7)"},".form-group":{paddingTop:"4px",display:"grid",gridTemplateColumns:"80% 20%",rowGap:"4px",paddingRight:"10px",paddingLeft:"10px"},".form-group label":{verticalAlign:"middle",fontWeight:"normal"},".settingsContainer":{display:"flex",flexDirection:"column",borderBottom:"1px solid var(--color7)",paddingTop:"10px",paddingBottom:"10px"},".settingsContainer> :first-child":{marginTop:"4px",marginBottom:"4px",fontWeight:"bold",justifyContent:"space-between",display:"flex",flexDirection:"row",alignItems:"baseline"},".collapse":{paddingLeft:"5%"},"#streamTools":{borderBottomRightRadius:"5px",borderBottomLeftRadius:"5px",userSelect:"none",position:"absolute",top:"0",right:"2%",zIndex:"100",border:"4px solid var(--colour8)",borderTopWidth:"0px"},".settingsHeader":{fontStyle:"italic"},"#streamToolsHeader":{display:"flex",flexDirection:"row",justifyContent:"space-between",borderBottom:"1px solid var(--colour8)",backgroundColor:"var(--color7)"},".streamTools":{backgroundColor:"var(--color2)",fontFamily:"var(--buttonFont)",fontWeight:"lighter",color:"var(--color7)"},".streamTools-shown>#streamToolsSettings, .streamTools-shown>#streamToolsStats":{display:"block"},"#streamToolsToggle":{width:"100%"},"#qualityStatus":{fontSize:"37px",paddingRight:"4px"},".svgIcon":{fill:"var(--color2)"},".modal":{minWidth:"100vw",minHeight:"100vh",left:"0",top:"0",position:"fixed",display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",color:"var(--color2)"},".innerModal":{position:"relative",width:"500px",height:"300px",backgroundColor:"var(--color0)",display:"flex",flexDirection:"column",justifyContent:"space-between",alignItems:"center",borderRadius:"0.75em"},".modalBtnContainer":{display:"flex",flexDirection:"row",justifyContent:"space-around",width:"100%",paddingTop:"1em",paddingBottom:"1em"},".modalTextArea":{textAlign:"left",width:"95%",height:"100%",resize:"none",fontSize:"1rem",border:"1px solid var(--color2)"},".modalTextArea:focus-visible":{outline:"none !important",border:"1px solid var(--color3)"},".modal .btn-flat":{fontSize:"1.0rem"}};const{customStyles:t,lightModePalette:n,darkModePalette:o,jssInsertionPoint:a}=null!=e?e:{},l={plugins:[(0,s.A)(),(0,r.A)()],insertionPoint:a};i.Ay.setup(l),this.customStyles=t,this.lightModePalette=null!=n?n:this.defaultLightModePalette,this.darkModePalette=null!=o?o:this.defaultDarkModePalette}applyStyleSheet(){i.Ay.createStyleSheet({"@global":Object.assign(Object.assign({},this.defaultStyles),this.customStyles)}).attach()}applyPalette(e){const t=document.querySelector(":root");t.style.setProperty("--color0",e["--color0"]),t.style.setProperty("--color1",e["--color1"]),t.style.setProperty("--color2",e["--color2"]),t.style.setProperty("--color3",e["--color3"]),t.style.setProperty("--color4",e["--color4"]),t.style.setProperty("--color5",e["--color5"]),t.style.setProperty("--color6",e["--color6"]),t.style.setProperty("--color7",e["--color7"])}setColorMode(e){e?this.applyPalette(this.lightModePalette):this.applyPalette(this.darkModePalette)}}},9924(e,t,n){n.d(t,{H:()=>c});var i=n(4498),s=n(1266),r=n(6702),o=n(8369),a=n(9689),l=n(5143);function d(e){return null==e||e.creationMode===l.ny.CreateDefaultElement}class c{constructor(e){this.config=e,e&&!d(e.statsButtonType)||(this.statsIcon=new r.r),e&&!d(e.settingsButtonType)||(this.settingsIcon=new s.Z),e&&!d(e.fullscreenButtonType)||(this.fullscreenIcon=new i.x2),e&&!d(e.xrIconType)||(this.xrIcon=new o.A)}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.id="controls",this.fullscreenIcon&&this._rootElement.appendChild(this.fullscreenIcon.rootElement),this.settingsIcon&&this._rootElement.appendChild(this.settingsIcon.rootElement),this.statsIcon&&this._rootElement.appendChild(this.statsIcon.rootElement),this.xrIcon&&a.R.isSessionSupported("immersive-vr").then(e=>{e&&this._rootElement.appendChild(this.xrIcon.rootElement)}),document.addEventListener("fullscreenchange",this.handleFullscreenChange.bind(this))),this._rootElement}handleFullscreenChange(){var e;document.fullscreenElement&&(null===(e=this.config)||void 0===e?void 0:e.hideControlsInFullscreen)?this._rootElement.style.visibility="hidden":this._rootElement.style.visibility="visible"}}},5073(e,t,n){n.d(t,{y:()=>r});var i=n(948),s=n(5143);class r{get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("section"),this._rootElement.classList.add("settingsContainer");const e=document.createElement("div");e.id="dataChannelLatencyTestHeader",e.classList.add("settings-text"),e.classList.add("settingsHeader"),this._rootElement.appendChild(e);const t=document.createElement("div");t.innerHTML=s.Yb.DataChannelLatencyTest,e.appendChild(t),e.appendChild(this.latencyTestButton);const n=document.createElement("div");n.id="dataChannelLatencyTestContainer",n.classList.add("d-none"),this._rootElement.appendChild(n),n.appendChild(this.latencyTestResultsElement)}return this._rootElement}get latencyTestResultsElement(){return this._latencyTestResultsElement||(this._latencyTestResultsElement=document.createElement("div"),this._latencyTestResultsElement.id="dataChannelLatencyStatsResults",this._latencyTestResultsElement.classList.add("StatsResult")),this._latencyTestResultsElement}get latencyTestButton(){return this._latencyTestButton||(this._latencyTestButton=document.createElement("input"),this._latencyTestButton.type="button",this._latencyTestButton.value="Run Test",this._latencyTestButton.id="btn-start-data-channel-latency-test",this._latencyTestButton.classList.add("streamTools-button"),this._latencyTestButton.classList.add("btn-flat")),this._latencyTestButton}handleTestResult(e){if(i.Vy.Info(JSON.stringify(e)),isNaN(e.dataChannelRtt))return void(this.latencyTestResultsElement.innerHTML="<div>Not supported</div>");let t="";t+="<div>Data channel RTT (ms): "+e.dataChannelRtt+"</div>",e.playerToStreamerTime>=0&&e.streamerToPlayerTime>=0&&(t+="<div>Player to Streamer path (ms): "+e.playerToStreamerTime+"</div>",t+="<div>Streamer to Player path (ms): "+e.streamerToPlayerTime+"</div>"),this.latencyTestResultsElement.innerHTML=t;const n=document.createElement("input");n.type="button",n.value="Download",n.classList.add("streamTools-button"),n.classList.add("btn-flat"),n.onclick=()=>{const t=new Blob([e.exportLatencyAsCSV()],{type:"text/plain"}),n=document.createElement("a"),i=URL.createObjectURL(t);n.href=i,n.download="data_channel_latency_test_results.csv",document.body.appendChild(n),n.click(),setTimeout(function(){document.body.removeChild(n),window.URL.revokeObjectURL(i)},0)},this.latencyTestResultsElement.appendChild(n)}handleTestStart(){this.latencyTestResultsElement.innerHTML="<div>Test in progress</div>"}}},1664(e,t,n){n.d(t,{R:()=>s});class i extends CustomEvent{constructor(e){super("editConfirmed",{detail:e,bubbles:!0,cancelable:!0}),this.confirmedText=e}}class s{constructor(){this._rootElement=this.rootElement,this._events=new EventTarget}get events(){return this._events}showModal(e){e&&(e=e.replace(/\0/g,""),this.textArea.value=e),this.textArea.focus(),this.textArea.selectionStart=this.textArea.value.length}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.classList.add("modal"),this._rootElement.appendChild(this.innerModal)),this._rootElement}get innerModal(){return this._innerModal||(this._innerModal=document.createElement("div"),this._innerModal.classList.add("innerModal"),this._innerModal.appendChild(this.editTextHeading),this._innerModal.appendChild(this.textArea),this._innerModal.appendChild(this.modalBtnContainer)),this._innerModal}get editTextHeading(){return this._editTextHeading||(this._editTextHeading=document.createElement("h2"),this._editTextHeading.innerText="Edit Text"),this._editTextHeading}get textArea(){return this._textArea||(this._textArea=document.createElement("textarea"),this._textArea.classList.add("form-control"),this._textArea.classList.add("modalTextArea"),this._textArea.title="Edit Text Area",this._textArea.placeholder="UE text widget value here...",this.textArea.addEventListener("keypress",e=>{e.stopPropagation()}),this.textArea.addEventListener("keyup",e=>{e.stopPropagation()}),this.textArea.addEventListener("keydown",e=>{e.stopPropagation()}),this.textArea.addEventListener("compositionend",e=>{e.stopPropagation()})),this._textArea}get modalBtnContainer(){return this._modalBtnContainer||(this._modalBtnContainer=document.createElement("div"),this._modalBtnContainer.classList.add("modalBtnContainer"),this._modalBtnContainer.appendChild(this.cancelBtn),this._modalBtnContainer.appendChild(this.confirmBtn)),this._modalBtnContainer}get cancelBtn(){return this._cancelBtn||(this._cancelBtn=document.createElement("button"),this._cancelBtn.classList.add("btn-flat"),this._cancelBtn.innerText="Cancel",this._cancelBtn.addEventListener("click",e=>{this.rootElement.remove(),e.stopPropagation()})),this._cancelBtn}get confirmBtn(){return this._confirmBtn||(this._confirmBtn=document.createElement("button"),this._confirmBtn.classList.add("btn-flat"),this._confirmBtn.innerText="Confirm",this._confirmBtn.addEventListener("click",e=>{this.events.dispatchEvent(new i(this.textArea.value)),this.rootElement.remove(),e.stopPropagation()})),this._confirmBtn}}},4498(e,t,n){n.d(t,{cW:()=>s,x2:()=>r});class i{get rootElement(){return this._rootElement}set rootElement(e){e.onclick=()=>this.toggleFullscreen(),this._rootElement=e}constructor(){this.isFullscreen=!1,document.addEventListener("webkitfullscreenchange",()=>this.onFullscreenChange(),!1),document.addEventListener("mozfullscreenchange",()=>this.onFullscreenChange(),!1),document.addEventListener("fullscreenchange",()=>this.onFullscreenChange(),!1),document.addEventListener("MSFullscreenChange",()=>this.onFullscreenChange(),!1)}toggleFullscreen(){if(document.fullscreenElement||document.webkitFullscreenElement||document.mozFullScreenElement||document.msFullscreenElement)document.exitFullscreen?document.exitFullscreen():document.mozCancelFullScreen?document.mozCancelFullScreen():document.webkitExitFullscreen?document.webkitExitFullscreen():document.msExitFullscreen&&document.msExitFullscreen();else{const e=this.fullscreenElement;if(!e)return;e.requestFullscreen?e.requestFullscreen():e.mozRequestFullscreen?e.mozRequestFullscreen():e.webkitRequestFullscreen?e.webkitRequestFullscreen():e.msRequestFullscreen?e.msRequestFullscreen():e.webkitEnterFullscreen&&e.webkitEnterFullscreen()}this.onFullscreenChange()}onFullscreenChange(){this.isFullscreen=document.webkitIsFullScreen||document.mozFullScreen||document.msFullscreenElement&&null!==document.msFullscreenElement||document.fullscreenElement&&null!==document.fullscreenElement}}class s extends i{constructor(e){super(),this.rootElement=e}}class r extends i{constructor(){super();const e=document.createElement("button");e.type="button",e.classList.add("UiTool"),e.id="fullscreen-btn",e.appendChild(this.maximizeIcon),e.appendChild(this.minimizeIcon),e.appendChild(this.tooltipText),this.rootElement=e}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="Fullscreen"),this._tooltipText}get maximizeIcon(){if(!this._maximizeIcon){this._maximizeIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._maximizeIcon.setAttributeNS(null,"id","maximizeIcon"),this._maximizeIcon.setAttributeNS(null,"x","0px"),this._maximizeIcon.setAttributeNS(null,"y","0px"),this._maximizeIcon.setAttributeNS(null,"viewBox","0 0 384.97 384.97");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._maximizeIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M384.97,12.03c0-6.713-5.317-12.03-12.03-12.03H264.847c-6.833,0-11.922,5.39-11.934,12.223c0,6.821,5.101,11.838,11.934,11.838h96.062l-0.193,96.519c0,6.833,5.197,12.03,12.03,12.03c6.833-0.012,12.03-5.197,12.03-12.03l0.193-108.369c0-0.036-0.012-0.06-0.012-0.084C384.958,12.09,384.97,12.066,384.97,12.03z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M120.496,0H12.403c-0.036,0-0.06,0.012-0.096,0.012C12.283,0.012,12.247,0,12.223,0C5.51,0,0.192,5.317,0.192,12.03L0,120.399c0,6.833,5.39,11.934,12.223,11.934c6.821,0,11.838-5.101,11.838-11.934l0.192-96.339h96.242c6.833,0,12.03-5.197,12.03-12.03C132.514,5.197,127.317,0,120.496,0z");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M120.123,360.909H24.061v-96.242c0-6.833-5.197-12.03-12.03-12.03S0,257.833,0,264.667v108.092c0,0.036,0.012,0.06,0.012,0.084c0,0.036-0.012,0.06-0.012,0.096c0,6.713,5.317,12.03,12.03,12.03h108.092c6.833,0,11.922-5.39,11.934-12.223C132.057,365.926,126.956,360.909,120.123,360.909z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttributeNS(null,"d","M372.747,252.913c-6.833,0-11.85,5.101-11.838,11.934v96.062h-96.242c-6.833,0-12.03,5.197-12.03,12.03s5.197,12.03,12.03,12.03h108.092c0.036,0,0.06-0.012,0.084-0.012c0.036-0.012,0.06,0.012,0.096,0.012c6.713,0,12.03-5.317,12.03-12.03V264.847C384.97,258.014,379.58,252.913,372.747,252.913z"),e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(s)}return this._maximizeIcon}get minimizeIcon(){if(!this._minimizeIcon){this._minimizeIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._minimizeIcon.setAttributeNS(null,"id","minimizeIcon"),this._minimizeIcon.setAttributeNS(null,"x","0px"),this._minimizeIcon.setAttributeNS(null,"y","0px"),this._minimizeIcon.setAttributeNS(null,"viewBox","0 0 385.331 385.331");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._minimizeIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M264.943,156.665h108.273c6.833,0,11.934-5.39,11.934-12.211c0-6.833-5.101-11.85-11.934-11.838h-96.242V36.181c0-6.833-5.197-12.03-12.03-12.03s-12.03,5.197-12.03,12.03v108.273c0,0.036,0.012,0.06,0.012,0.084c0,0.036-0.012,0.06-0.012,0.096C252.913,151.347,258.23,156.677,264.943,156.665z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M120.291,24.247c-6.821,0-11.838,5.113-11.838,11.934v96.242H12.03c-6.833,0-12.03,5.197-12.03,12.03c0,6.833,5.197,12.03,12.03,12.03h108.273c0.036,0,0.06-0.012,0.084-0.012c0.036,0,0.06,0.012,0.096,0.012c6.713,0,12.03-5.317,12.03-12.03V36.181C132.514,29.36,127.124,24.259,120.291,24.247z");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M120.387,228.666H12.115c-6.833,0.012-11.934,5.39-11.934,12.223c0,6.833,5.101,11.85,11.934,11.838h96.242v96.423c0,6.833,5.197,12.03,12.03,12.03c6.833,0,12.03-5.197,12.03-12.03V240.877c0-0.036-0.012-0.06-0.012-0.084c0-0.036,0.012-0.06,0.012-0.096C132.418,233.983,127.1,228.666,120.387,228.666z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttributeNS(null,"d","M373.3,228.666H265.028c-0.036,0-0.06,0.012-0.084,0.012c-0.036,0-0.06-0.012-0.096-0.012c-6.713,0-12.03,5.317-12.03,12.03v108.273c0,6.833,5.39,11.922,12.223,11.934c6.821,0.012,11.838-5.101,11.838-11.922v-96.242H373.3c6.833,0,12.03-5.197,12.03-12.03S380.134,228.678,373.3,228.666z"),e.appendChild(t),e.appendChild(n),e.appendChild(i),e.appendChild(s)}return this._minimizeIcon}onFullscreenChange(){super.onFullscreenChange();const e=this.minimizeIcon,t=this.maximizeIcon;this.isFullscreen?(e.style.display="inline",e.style.transform="translate(0, 0)",t.style.display="none"):(e.style.display="none",t.style.display="inline",t.style.transform="translate(0, 0)")}}},4285(e,t,n){n.d(t,{U:()=>i});class i{constructor(e,t){this._label=e,this._buttonText=t}addOnClickListener(e){this.button.addEventListener("click",e)}get button(){return this._button||(this._button=document.createElement("input"),this._button.type="button",this._button.value=this._buttonText,this._button.classList.add("overlay-button"),this._button.classList.add("btn-flat")),this._button}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.classList.add("setting");const e=document.createElement("div");e.innerText=this._label,this._rootElement.appendChild(e);const t=document.createElement("label");t.classList.add("btn-overlay"),this._rootElement.appendChild(t),t.appendChild(this.button)}return this._rootElement}}},3378(e,t,n){n.d(t,{B:()=>r});var i=n(948),s=n(5143);class r{get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("section"),this._rootElement.classList.add("settingsContainer");const e=document.createElement("div");e.id="latencyTestHeader",e.classList.add("settings-text"),e.classList.add("settingsHeader"),this._rootElement.appendChild(e);const t=document.createElement("div");t.innerHTML=s.Yb.LatencyTest,e.appendChild(t),e.appendChild(this.latencyTestButton);const n=document.createElement("div");n.id="latencyTestContainer",n.classList.add("d-none"),this._rootElement.appendChild(n),n.appendChild(this.latencyTestResultsElement)}return this._rootElement}get latencyTestResultsElement(){return this._latencyTestResultsElement||(this._latencyTestResultsElement=document.createElement("div"),this._latencyTestResultsElement.id="latencyStatsResults",this._latencyTestResultsElement.classList.add("StatsResult")),this._latencyTestResultsElement}get latencyTestButton(){return this._latencyTestButton||(this._latencyTestButton=document.createElement("input"),this._latencyTestButton.type="button",this._latencyTestButton.value="Run Test",this._latencyTestButton.id="btn-start-latency-test",this._latencyTestButton.classList.add("streamTools-button"),this._latencyTestButton.classList.add("btn-flat")),this._latencyTestButton}handleTestResult(e){i.Vy.Info(JSON.stringify(e));let t="";void 0!==e.networkLatency&&e.networkLatency>0&&(t+="<div>Net latency RTT (ms): "+e.networkLatency+"</div>"),void 0!==e.EncodeMs&&e.EncodeMs>0&&(t+="<div>UE Encode (ms): "+e.EncodeMs+"</div>"),void 0!==e.CaptureToSendMs&&e.CaptureToSendMs>0&&(t+="<div>UE Capture (ms): "+e.CaptureToSendMs+"</div>"),void 0!==e.browserSendLatency&&e.browserSendLatency>0&&(t+="<div>Browser send latency (ms): "+e.browserSendLatency+"</div>"),void 0!==e.frameDisplayDeltaTimeMs&&void 0!==e.browserReceiptTimeMs&&(t+=e.frameDisplayDeltaTimeMs&&e.browserReceiptTimeMs?"<div>Browser receive latency (ms): "+e.frameDisplayDeltaTimeMs+"</div>":""),void 0!==e.latencyExcludingDecode&&(t+="<div>Total latency (excluding browser) (ms): "+e.latencyExcludingDecode+"</div>"),void 0!==e.endToEndLatency&&(t+=e.endToEndLatency?"<div>Total latency (ms): "+e.endToEndLatency+"</div>":""),this.latencyTestResultsElement.innerHTML=t}}},1266(e,t,n){n.d(t,{Z:()=>i});class i{get rootElement(){return this._rootElement||(this._rootElement=document.createElement("button"),this._rootElement.type="button",this._rootElement.classList.add("UiTool"),this._rootElement.id="settingsBtn",this._rootElement.appendChild(this.settingsIcon),this._rootElement.appendChild(this.tooltipText)),this._rootElement}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="Settings"),this._tooltipText}get settingsIcon(){if(!this._settingsIcon){this._settingsIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._settingsIcon.setAttributeNS(null,"id","settingsIcon"),this._settingsIcon.setAttributeNS(null,"x","0px"),this._settingsIcon.setAttributeNS(null,"y","0px"),this._settingsIcon.setAttributeNS(null,"viewBox","0 0 478.703 478.703");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._settingsIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M454.2,189.101l-33.6-5.7c-3.5-11.3-8-22.2-13.5-32.6l19.8-27.7c8.4-11.8,7.1-27.9-3.2-38.1l-29.8-29.8\t\t\tc-5.6-5.6-13-8.7-20.9-8.7c-6.2,0-12.1,1.9-17.1,5.5l-27.8,19.8c-10.8-5.7-22.1-10.4-33.8-13.9l-5.6-33.2\t\t\tc-2.4-14.3-14.7-24.7-29.2-24.7h-42.1c-14.5,0-26.8,10.4-29.2,24.7l-5.8,34c-11.2,3.5-22.1,8.1-32.5,13.7l-27.5-19.8\t\t\tc-5-3.6-11-5.5-17.2-5.5c-7.9,0-15.4,3.1-20.9,8.7l-29.9,29.8c-10.2,10.2-11.6,26.3-3.2,38.1l20,28.1\t\t\tc-5.5,10.5-9.9,21.4-13.3,32.7l-33.2,5.6c-14.3,2.4-24.7,14.7-24.7,29.2v42.1c0,14.5,10.4,26.8,24.7,29.2l34,5.8\t\t\tc3.5,11.2,8.1,22.1,13.7,32.5l-19.7,27.4c-8.4,11.8-7.1,27.9,3.2,38.1l29.8,29.8c5.6,5.6,13,8.7,20.9,8.7c6.2,0,12.1-1.9,17.1-5.5\t\t\tl28.1-20c10.1,5.3,20.7,9.6,31.6,13l5.6,33.6c2.4,14.3,14.7,24.7,29.2,24.7h42.2c14.5,0,26.8-10.4,29.2-24.7l5.7-33.6\t\t\tc11.3-3.5,22.2-8,32.6-13.5l27.7,19.8c5,3.6,11,5.5,17.2,5.5l0,0c7.9,0,15.3-3.1,20.9-8.7l29.8-29.8c10.2-10.2,11.6-26.3,3.2-38.1\t\t\tl-19.8-27.8c5.5-10.5,10.1-21.4,13.5-32.6l33.6-5.6c14.3-2.4,24.7-14.7,24.7-29.2v-42.1\t\t\tC478.9,203.801,468.5,191.501,454.2,189.101z M451.9,260.401c0,1.3-0.9,2.4-2.2,2.6l-42,7c-5.3,0.9-9.5,4.8-10.8,9.9\t\t\tc-3.8,14.7-9.6,28.8-17.4,41.9c-2.7,4.6-2.5,10.3,0.6,14.7l24.7,34.8c0.7,1,0.6,2.5-0.3,3.4l-29.8,29.8c-0.7,0.7-1.4,0.8-1.9,0.8\t\t\tc-0.6,0-1.1-0.2-1.5-0.5l-34.7-24.7c-4.3-3.1-10.1-3.3-14.7-0.6c-13.1,7.8-27.2,13.6-41.9,17.4c-5.2,1.3-9.1,5.6-9.9,10.8l-7.1,42\t\t\tc-0.2,1.3-1.3,2.2-2.6,2.2h-42.1c-1.3,0-2.4-0.9-2.6-2.2l-7-42c-0.9-5.3-4.8-9.5-9.9-10.8c-14.3-3.7-28.1-9.4-41-16.8\t\t\tc-2.1-1.2-4.5-1.8-6.8-1.8c-2.7,0-5.5,0.8-7.8,2.5l-35,24.9c-0.5,0.3-1,0.5-1.5,0.5c-0.4,0-1.2-0.1-1.9-0.8l-29.8-29.8\t\t\tc-0.9-0.9-1-2.3-0.3-3.4l24.6-34.5c3.1-4.4,3.3-10.2,0.6-14.8c-7.8-13-13.8-27.1-17.6-41.8c-1.4-5.1-5.6-9-10.8-9.9l-42.3-7.2\t\t\tc-1.3-0.2-2.2-1.3-2.2-2.6v-42.1c0-1.3,0.9-2.4,2.2-2.6l41.7-7c5.3-0.9,9.6-4.8,10.9-10c3.7-14.7,9.4-28.9,17.1-42\t\t\tc2.7-4.6,2.4-10.3-0.7-14.6l-24.9-35c-0.7-1-0.6-2.5,0.3-3.4l29.8-29.8c0.7-0.7,1.4-0.8,1.9-0.8c0.6,0,1.1,0.2,1.5,0.5l34.5,24.6\t\t\tc4.4,3.1,10.2,3.3,14.8,0.6c13-7.8,27.1-13.8,41.8-17.6c5.1-1.4,9-5.6,9.9-10.8l7.2-42.3c0.2-1.3,1.3-2.2,2.6-2.2h42.1\t\t\tc1.3,0,2.4,0.9,2.6,2.2l7,41.7c0.9,5.3,4.8,9.6,10,10.9c15.1,3.8,29.5,9.7,42.9,17.6c4.6,2.7,10.3,2.5,14.7-0.6l34.5-24.8\t\t\tc0.5-0.3,1-0.5,1.5-0.5c0.4,0,1.2,0.1,1.9,0.8l29.8,29.8c0.9,0.9,1,2.3,0.3,3.4l-24.7,34.7c-3.1,4.3-3.3,10.1-0.6,14.7\t\t\tc7.8,13.1,13.6,27.2,17.4,41.9c1.3,5.2,5.6,9.1,10.8,9.9l42,7.1c1.3,0.2,2.2,1.3,2.2,2.6v42.1H451.9z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M239.4,136.001c-57,0-103.3,46.3-103.3,103.3s46.3,103.3,103.3,103.3s103.3-46.3,103.3-103.3S296.4,136.001,239.4,136.001z M239.4,315.601c-42.1,0-76.3-34.2-76.3-76.3s34.2-76.3,76.3-76.3s76.3,34.2,76.3,76.3S281.5,315.601,239.4,315.601z"),e.appendChild(t),e.appendChild(n)}return this._settingsIcon}}},2113(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this._rootElement=null}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id="settings-panel",this._rootElement.classList.add("panel-wrap");const e=document.createElement("div");e.classList.add("panel"),this._rootElement.appendChild(e);const t=document.createElement("div");t.id="settingsHeading",t.textContent="Settings",e.appendChild(t),e.appendChild(this.settingsCloseButton),e.appendChild(this.settingsContentElement)}return this._rootElement}get settingsContentElement(){return this._settingsContentElement||(this._settingsContentElement=document.createElement("div"),this._settingsContentElement.id="settingsContent"),this._settingsContentElement}get settingsCloseButton(){return this._settingsCloseButton||(this._settingsCloseButton=document.createElement("div"),this._settingsCloseButton.id="settingsClose"),this._settingsCloseButton}show(){this.rootElement.classList.contains("panel-wrap-visible")||this.rootElement.classList.add("panel-wrap-visible")}toggleVisibility(){this.rootElement.classList.toggle("panel-wrap-visible")}hide(){this.rootElement.classList.contains("panel-wrap-visible")&&this.rootElement.classList.remove("panel-wrap-visible")}}},6702(e,t,n){n.d(t,{r:()=>i});class i{get rootElement(){return this._rootElement||(this._rootElement=document.createElement("button"),this._rootElement.type="button",this._rootElement.classList.add("UiTool"),this._rootElement.id="statsBtn",this._rootElement.appendChild(this.statsIcon),this._rootElement.appendChild(this.tooltipText)),this._rootElement}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="Information"),this._tooltipText}get statsIcon(){if(!this._statsIcon){this._statsIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._statsIcon.setAttributeNS(null,"id","statsIcon"),this._statsIcon.setAttributeNS(null,"x","0px"),this._statsIcon.setAttributeNS(null,"y","0px"),this._statsIcon.setAttributeNS(null,"viewBox","0 0 330 330");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._statsIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M165,0.008C74.019,0.008,0,74.024,0,164.999c0,90.977,74.019,164.992,165,164.992s165-74.015,165-164.992C330,74.024,255.981,0.008,165,0.008z M165,299.992c-74.439,0-135-60.557-135-134.992S90.561,30.008,165,30.008s135,60.557,135,134.991C300,239.436,239.439,299.992,165,299.992z");const n=document.createElementNS("http://www.w3.org/2000/svg","path");n.setAttributeNS(null,"d","M165,130.008c-8.284,0-15,6.716-15,15v99.983c0,8.284,6.716,15,15,15s15-6.716,15-15v-99.983C180,136.725,173.284,130.008,165,130.008z");const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M165,70.011c-3.95,0-7.811,1.6-10.61,4.39c-2.79,2.79-4.39,6.66-4.39,10.61s1.6,7.81,4.39,10.61c2.79,2.79,6.66,4.39,10.61,4.39s7.81-1.6,10.609-4.39c2.79-2.8,4.391-6.66,4.391-10.61s-1.601-7.82-4.391-10.61C172.81,71.61,168.95,70.011,165,70.011z"),e.appendChild(t),e.appendChild(n),e.appendChild(i)}return this._statsIcon}}},5117(e,t,n){n.d(t,{i:()=>d});var i=n(3378),s=n(948),r=n(117),o=n(5073),a=n(5143);class l{}class d{constructor(e){this.statsMap=new Map,this._config=e,this.latencyTest=new i.B,this.dataChannelLatencyTest=new o.y}get rootElement(){if(!this._rootElement){this._rootElement=document.createElement("div"),this._rootElement.id="stats-panel",this._rootElement.classList.add("panel-wrap");const e=document.createElement("div");e.classList.add("panel"),this._rootElement.appendChild(e);const t=document.createElement("div");t.id="statsHeading",t.textContent="Information",e.appendChild(t),e.appendChild(this.statsCloseButton),e.appendChild(this.statsContentElement)}return this._rootElement}get statsContentElement(){if(!this._statsContentElement){this._statsContentElement=document.createElement("div"),this._statsContentElement.id="statsContent";const e=document.createElement("div");e.id="streamToolsStats",e.classList.add("container");const t=document.createElement("div");t.id="ControlStats",t.classList.add("row");const n=document.createElement("section");n.id="statistics",n.classList.add("settingsContainer");const i=document.createElement("section");i.id="latencyStats",i.classList.add("settingsContainer");const s=document.createElement("div");s.id="statisticsHeader",s.classList.add("settings-text"),s.classList.add("settingsHeader");const r=document.createElement("div");if(r.id="latencyStatsHeader",r.classList.add("settings-text"),r.classList.add("settingsHeader"),this._statsContentElement.appendChild(e),e.appendChild(t),t.appendChild(n),t.appendChild(i),n.appendChild(s),i.appendChild(r),(0,a.DF)(this._config,a.Yb.SessionStats)){const e=document.createElement("div");e.innerHTML=a.Yb.SessionStats,s.appendChild(e)}if(n.appendChild(this.statisticsContainer),(0,a.DF)(this._config,a.Yb.LatencyStats)){const e=document.createElement("div");e.innerHTML=a.Yb.LatencyStats,r.appendChild(e)}i.appendChild(this.latencyStatsContainer),(0,a.DF)(this._config,a.Yb.LatencyTest)&&t.appendChild(this.latencyTest.rootElement),(0,a.DF)(this._config,a.Yb.DataChannelLatencyTest)&&t.appendChild(this.dataChannelLatencyTest.rootElement)}return this._statsContentElement}get statisticsContainer(){return this._statisticsContainer||(this._statisticsContainer=document.createElement("div"),this._statisticsContainer.id="statisticsContainer",this._statisticsContainer.classList.add("d-none"),this._statisticsContainer.appendChild(this.statsResult)),this._statisticsContainer}get latencyStatsContainer(){return this._latencyStatsContainer||(this._latencyStatsContainer=document.createElement("div"),this._latencyStatsContainer.id="latencyStatsContainer",this._latencyStatsContainer.classList.add("d-none"),this._latencyStatsContainer.appendChild(this.latencyResult)),this._latencyStatsContainer}get statsResult(){return this._statsResult||(this._statsResult=document.createElement("div"),this._statsResult.id="statisticsResult",this._statsResult.classList.add("StatsResult")),this._statsResult}get latencyResult(){return this._latencyResult||(this._latencyResult=document.createElement("div"),this._latencyResult.id="latencyResult",this._latencyResult.classList.add("StatsResult")),this._latencyResult}get statsCloseButton(){return this._statsCloseButton||(this._statsCloseButton=document.createElement("div"),this._statsCloseButton.id="statsClose"),this._statsCloseButton}onDisconnect(){this.latencyTest.latencyTestButton.onclick=()=>{},this.dataChannelLatencyTest.latencyTestButton.onclick=()=>{}}onVideoInitialized(e){this.latencyTest.latencyTestButton.onclick=()=>{e.requestLatencyTest()},this.dataChannelLatencyTest.latencyTestButton.onclick=()=>{e.requestDataChannelLatencyTest({duration:1e3,rps:10,requestSize:200,responseSize:200})&&this.dataChannelLatencyTest.handleTestStart()}}configure(e){e.DisableLatencyTest&&(this.latencyTest.latencyTestButton.disabled=!0,this.latencyTest.latencyTestButton.title="Disabled by -PixelStreamingDisableLatencyTester=true",this.dataChannelLatencyTest.latencyTestButton.disabled=!0,this.dataChannelLatencyTest.latencyTestButton.title="Disabled by -PixelStreamingDisableLatencyTester=true",s.Vy.Info("-PixelStreamingDisableLatencyTester=true, requesting latency report from the the browser to UE is disabled."))}show(){this.rootElement.classList.contains("panel-wrap-visible")||this.rootElement.classList.add("panel-wrap-visible")}toggleVisibility(){this.rootElement.classList.toggle("panel-wrap-visible")}hide(){this.rootElement.classList.contains("panel-wrap-visible")&&this.rootElement.classList.remove("panel-wrap-visible")}handlePlayerCount(e){this.addOrUpdateSessionStat("PlayerCountStat","Players",e.toString())}handleStats(e){var t,n,i,o;const a=new Intl.NumberFormat(window.navigator.language,{maximumFractionDigits:0}),l=r.c.formatBytes(e.inboundVideoStats.bytesReceived,2);this.addOrUpdateSessionStat("InboundDataStat","Received",l);const d=Object.prototype.hasOwnProperty.call(e.inboundVideoStats,"packetsLost")?a.format(e.inboundVideoStats.packetsLost):"Chrome only";this.addOrUpdateSessionStat("PacketsLostStat","Packets Lost",d),e.inboundVideoStats.bitrate&&this.addOrUpdateSessionStat("VideoBitrateStat","Video Bitrate (kbps)",e.inboundVideoStats.bitrate.toString()),e.inboundAudioStats.bitrate&&this.addOrUpdateSessionStat("AudioBitrateStat","Audio Bitrate (kbps)",e.inboundAudioStats.bitrate.toString());const c=void 0!==e.inboundVideoStats.frameWidth&&e.inboundVideoStats.frameWidth>0&&void 0!==e.inboundVideoStats.frameHeight&&e.inboundVideoStats.frameHeight>0?e.inboundVideoStats.frameWidth+"x"+e.inboundVideoStats.frameHeight:"Chrome only";if(this.addOrUpdateSessionStat("VideoResStat","Video resolution",c),void 0!==e.inboundVideoStats.framesDecoded){const t=a.format(e.inboundVideoStats.framesDecoded);this.addOrUpdateSessionStat("FramesDecodedStat","Frames Decoded",t)}e.inboundVideoStats.framesPerSecond&&this.addOrUpdateSessionStat("FramerateStat","Framerate",e.inboundVideoStats.framesPerSecond.toString()),void 0!==e.inboundVideoStats.framesDropped&&this.addOrUpdateSessionStat("FramesDroppedStat","Frames dropped",e.inboundVideoStats.framesDropped.toString()),e.inboundVideoStats.codecId&&this.addOrUpdateSessionStat("VideoCodecStat","Video codec",null!==(n=null===(t=e.codecs.get(e.inboundVideoStats.codecId))||void 0===t?void 0:t.mimeType.replace("video/",""))&&void 0!==n?n:""),e.inboundAudioStats.codecId&&this.addOrUpdateSessionStat("AudioCodecStat","Audio codec",null!==(o=null===(i=e.codecs.get(e.inboundAudioStats.codecId))||void 0===i?void 0:i.mimeType.replace("audio/",""))&&void 0!==o?o:"");const h=e.getActiveCandidatePair();if(h){const t=Object.prototype.hasOwnProperty.call(h,"currentRoundTripTime")&&e.isNumber(h.currentRoundTripTime)?Math.ceil(1e3*h.currentRoundTripTime).toString():"Can't calculate";this.addOrUpdateSessionStat("RTTStat","Net RTT (ms)",t)}this.addOrUpdateSessionStat("DurationStat","Duration",e.sessionStats.runTime),this.addOrUpdateSessionStat("ControlsInputStat","Controls stream input",e.sessionStats.controlsStreamInput),void 0===e.sessionStats.videoEncoderAvgQP||Number.isNaN(e.sessionStats.videoEncoderAvgQP)||this.addOrUpdateSessionStat("QPStat","Video quantization parameter",e.sessionStats.videoEncoderAvgQP.toString()),s.Vy.Info(`--------- Stats ---------\n ${JSON.stringify(e)}\n------------------------`)}handleLatencyInfo(e){void 0!==e.frameTiming&&(void 0!==e.frameTiming.encoderLatencyMs&&this.addOrUpdateLatencyStat("EncodeLatency","Encode latency (ms)",Math.ceil(e.frameTiming.encoderLatencyMs).toString()),void 0!==e.frameTiming.packetizeLatencyMs&&this.addOrUpdateLatencyStat("PacketizerLatency","Packetizer latency (ms)",Math.ceil(e.frameTiming.packetizeLatencyMs).toString()),void 0!==e.frameTiming.pacerLatencyMs&&this.addOrUpdateLatencyStat("PacerLatency","Pacer latency (ms)",Math.ceil(e.frameTiming.pacerLatencyMs).toString()),void 0!==e.frameTiming.captureToSendLatencyMs&&this.addOrUpdateLatencyStat("VideoTimingCaptureToSend","Post-capture to send latency (ms)",Math.ceil(e.frameTiming.captureToSendLatencyMs).toString())),void 0!==e.senderLatencyMs&&this.addOrUpdateLatencyStat("AbsCaptureTimeToSendLatency","Post-capture (abs-ct) to send latency (ms)",Math.ceil(e.senderLatencyMs).toString()),void 0!==e.averageAssemblyDelayMs&&this.addOrUpdateLatencyStat("AvgAssemblyDelay","Assembly delay (ms)",Math.ceil(e.averageAssemblyDelayMs).toString()),void 0!==e.averageDecodeLatencyMs&&this.addOrUpdateLatencyStat("AvgDecodeDelay","Decode time (ms)",Math.ceil(e.averageDecodeLatencyMs).toString()),void 0!==e.averageJitterBufferDelayMs&&this.addOrUpdateLatencyStat("AvgJitterBufferDelay","Jitter buffer (ms)",Math.ceil(e.averageJitterBufferDelayMs).toString()),void 0!==e.averageProcessingDelayMs&&this.addOrUpdateLatencyStat("AvgProcessingDelay","Processing delay (ms)",Math.ceil(e.averageProcessingDelayMs).toString()),void 0!==e.averageE2ELatency&&this.addOrUpdateLatencyStat("AvgE2ELatency","Total latency (ms)",Math.ceil(e.averageE2ELatency).toString())}addOrUpdateSessionStat(e,t,n){this.addOrUpdateStat(a.Yb.SessionStats,e,t,n)}addOrUpdateLatencyStat(e,t,n){this.addOrUpdateStat(a.Yb.LatencyStats,e,t,n)}addOrUpdateStat(e,t,n,i){if(e===a.Yb.SessionStats&&!(0,a.DF)(this._config,a.Yb.SessionStats))return;if(e===a.Yb.LatencyStats&&!(0,a.DF)(this._config,a.Yb.LatencyStats))return;if(e!==a.Yb.SessionStats&&e!==a.Yb.LatencyStats)return;const s=e===a.Yb.SessionStats?this.statsResult:this.latencyResult,r=`${n}: ${i}`;if(this.statsMap.has(t)){const e=this.statsMap.get(t);void 0!==e&&(e.element.innerHTML=r)}else{const e=new l;e.id=t,e.stat=i,e.title=n,e.element=document.createElement("div"),e.element.innerHTML=r,s.appendChild(e.element),this.statsMap.set(t,e)}}}},5143(e,t,n){n.d(t,{DF:()=>l,Uv:()=>s,Yb:()=>r,ai:()=>i,ny:()=>o,wM:()=>a,wx:()=>d});class i{}i.LightMode="LightMode";class s{}s.PixelStreaming="Pixel Streaming",s.UI="UI",s.Input="Input",s.Encoder="Encoder",s.WebRTC="WebRTC",s.Commands="Commands";class r{}var o;function a(e){return!e||!!e&&e.isEnabled}function l(e,t){return!e||!!e&&(!Object.prototype.hasOwnProperty.call(e.sectionVisibility,t)||Object.prototype.hasOwnProperty.call(e.sectionVisibility,t)&&e.sectionVisibility[t])}function d(e,t){return!e||!!e&&(!Object.prototype.hasOwnProperty.call(e.settingVisibility,t)||Object.prototype.hasOwnProperty.call(e.settingVisibility,t)&&e.settingVisibility[t])}r.SessionStats="Session Stats",r.LatencyStats="Latency Stats",r.LatencyTest="Latency Test",r.DataChannelLatencyTest="Data Channel Latency Test",function(e){e[e.CreateDefaultElement=0]="CreateDefaultElement",e[e.UseCustomElement=1]="UseCustomElement",e[e.Disable=2]="Disable"}(o||(o={}))},3345(e,t,n){n.d(t,{W:()=>i});class i{constructor(e){this.videoEncoderAvgQP=-1,this.statsText="",this.color="",this.orangeQP=26,this.redQP=35,this.config=e}get rootElement(){return this._rootElement||(this._rootElement=document.createElement("div"),this._rootElement.id="connection",this._rootElement.classList.add("UiTool"),this._rootElement.appendChild(this.qualityStatus),this._rootElement.appendChild(this.qualityText),this.updateQpTooltip(-1)),this._rootElement}get qualityText(){return this._qualityText||(this._qualityText=document.createElement("span"),this._qualityText.id="qualityText",this._qualityText.classList.add("tooltiptext")),this._qualityText}get qualityStatus(){return this._qualityStatus||(this._qualityStatus=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._qualityStatus.setAttributeNS(null,"id","connectionStrength"),this._qualityStatus.setAttributeNS(null,"x","0px"),this._qualityStatus.setAttributeNS(null,"y","0px"),this._qualityStatus.setAttributeNS(null,"viewBox","0 0 494.45 494.45"),this.qualityStatus.appendChild(this.dot),this.qualityStatus.appendChild(this.middle),this.qualityStatus.appendChild(this.outer),this.qualityStatus.appendChild(this.inner)),this._qualityStatus}get dot(){return this._dot||(this._dot=document.createElementNS("http://www.w3.org/2000/svg","circle"),this._dot.setAttributeNS(null,"id","dot"),this._dot.setAttributeNS(null,"cx","247.125"),this._dot.setAttributeNS(null,"cy","398.925"),this._dot.setAttributeNS(null,"r","35.3")),this._dot}get outer(){return this._outer||(this._outer=document.createElementNS("http://www.w3.org/2000/svg","path"),this._outer.setAttributeNS(null,"id","outer"),this._outer.setAttributeNS(null,"d","M467.925,204.625c-6.8,0-13.5-2.6-18.7-7.8c-111.5-111.4-292.7-111.4-404.1,0c-10.3,10.3-27.1,10.3-37.4,0s-10.3-27.1,0-37.4c64-64,149-99.2,239.5-99.2s175.5,35.2,239.5,99.2c10.3,10.3,10.3,27.1,0,37.4C481.425,202.025,474.625,204.625,467.925,204.625z")),this._outer}get middle(){return this._middle||(this._middle=document.createElementNS("http://www.w3.org/2000/svg","path"),this._middle.setAttributeNS(null,"id","middle"),this._middle.setAttributeNS(null,"d","M395.225,277.325c-6.8,0-13.5-2.6-18.7-7.8c-71.4-71.3-187.4-71.3-258.8,0c-10.3,10.3-27.1,10.3-37.4,0s-10.3-27.1,0-37.4c92-92,241.6-92,333.6,0c10.3,10.3,10.3,27.1,0,37.4C408.725,274.725,401.925,277.325,395.225,277.325z")),this._middle}get inner(){return this._inner||(this._inner=document.createElementNS("http://www.w3.org/2000/svg","path"),this._inner.setAttributeNS(null,"id","inner"),this._inner.setAttributeNS(null,"d","M323.625,348.825c-6.8,0-13.5-2.6-18.7-7.8c-15.4-15.4-36-23.9-57.8-23.9s-42.4,8.5-57.8,23.9c-10.3,10.3-27.1,10.3-37.4,0c-10.3-10.3-10.3-27.1,0-37.4c25.4-25.4,59.2-39.4,95.2-39.4s69.8,14,95.2,39.5c10.3,10.3,10.3,27.1,0,37.4C337.225,346.225,330.425,348.825,323.625,348.825z")),this._inner}blinkVideoQualityStatus(e){let t=e,n=1;const i=setInterval(()=>{n-=.1,this.qualityText.style.opacity=String(Math.abs(2*(n-.5))),n<=.1&&(0==--t?clearInterval(i):n=1)},100/e)}updateQpTooltip(e){var t;this.videoEncoderAvgQP=e,e>this.redQP?(this.color="red",this.blinkVideoQualityStatus(2),this.statsText=`<div style="color: ${this.color}">Poor encoding quality</div>`,this.outer.setAttributeNS(null,"fill","#3c3b40"),this.middle.setAttributeNS(null,"fill","#3c3b40"),this.inner.setAttributeNS(null,"fill",this.color),this.dot.setAttributeNS(null,"fill",this.color)):e>this.orangeQP?(this.color="orange",this.blinkVideoQualityStatus(1),this.statsText=`<div style="color: ${this.color}">Blocky encoding quality</div>`,this.outer.setAttributeNS(null,"fill","#3c3b40"),this.middle.setAttributeNS(null,"fill",this.color),this.inner.setAttributeNS(null,"fill",this.color),this.dot.setAttributeNS(null,"fill",this.color)):e<=0?(this.color="#b0b0b0",this.outer.setAttributeNS(null,"fill","#3c3b40"),this.middle.setAttributeNS(null,"fill","#3c3b40"),this.inner.setAttributeNS(null,"fill","#3c3b40"),this.dot.setAttributeNS(null,"fill","#3c3b40"),this.statsText=`<div style="color: ${this.color}">Not connected</div>`):(this.color="lime",this.qualityStatus.style.opacity=1==(null===(t=this.config)||void 0===t?void 0:t.hideWhenGood)?"0":"1",this.statsText=`<div style="color: ${this.color}">Clear encoding quality</div>`,this.outer.setAttributeNS(null,"fill",this.color),this.middle.setAttributeNS(null,"fill",this.color),this.inner.setAttributeNS(null,"fill",this.color),this.dot.setAttributeNS(null,"fill",this.color)),this.qualityText.innerHTML=this.statsText}}},8369(e,t,n){n.d(t,{A:()=>i});class i{get rootElement(){return this._rootElement||(this._rootElement=document.createElement("button"),this._rootElement.type="button",this._rootElement.classList.add("UiTool"),this._rootElement.id="xrBtn",this._rootElement.appendChild(this.xrIcon),this._rootElement.appendChild(this.tooltipText)),this._rootElement}get tooltipText(){return this._tooltipText||(this._tooltipText=document.createElement("span"),this._tooltipText.classList.add("tooltiptext"),this._tooltipText.innerHTML="XR"),this._tooltipText}get xrIcon(){if(!this._xrIcon){this._xrIcon=document.createElementNS("http://www.w3.org/2000/svg","svg"),this._xrIcon.setAttributeNS(null,"id","xrIcon"),this._xrIcon.setAttributeNS(null,"x","0px"),this._xrIcon.setAttributeNS(null,"y","0px"),this._xrIcon.setAttributeNS(null,"viewBox","0 0 100 100");const e=document.createElementNS("http://www.w3.org/2000/svg","g");e.classList.add("svgIcon"),this._xrIcon.appendChild(e);const t=document.createElementNS("http://www.w3.org/2000/svg","path");t.setAttributeNS(null,"d","M29 41c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 14c-2.8 0-5-2.2-5-5s2.2-5 5-5 5 2.2 5 5-2.2 5-5 5zm42-14c-5 0-9 4-9 9s4 9 9 9 9-4 9-9-4-9-9-9zm0 14c-2.8 0-5-2.2-5-5s2.2-5 5-5 5 2.2 5 5-2.2 5-5 5zm12-31H17c-6.6 0-12 5.4-12 12v28c0 6.6 5.4 12 12 12h14.5c3.5 0 6.8-1.5 9-4.1l3.5-4c1.5-1.7 3.7-2.7 6-2.7s4.5 1 6 2.7l3.5 4c2.3 2.6 5.6 4.1 9 4.1H83c6.6 0 12-5.4 12-12V36c0-6.6-5.4-12-12-12zm8 40c0 4.4-3.6 8-8 8H68.5c-2.3 0-4.5-1-6-2.7l-3.5-4c-2.3-2.6-5.6-4.1-9-4.1-3.5 0-6.8 1.5-9 4.1l-3.5 4C36 71 33.8 72 31.5 72H17c-4.4 0-8-3.6-8-8V36c0-4.4 3.6-8 8-8h66c4.4 0 8 3.6 8 8v28z"),e.appendChild(t)}return this._xrIcon}}},117(e,t,n){n.d(t,{c:()=>i});class i{static formatBytes(e,t){if(0===e)return"0";const n=t<0?0:t,i=Math.floor(Math.log(e)/Math.log(1024));return parseFloat((e/Math.pow(1024,i)).toFixed(n))+" "+["Bytes","KiB","MiB","GiB","TiB","PiB","EiB","ZiB","YiB"][i]}}},4441(e,t,n){function i(e,t){if(!e)throw new Error(t)}function s(e){if("number"!=typeof e)throw new Error("invalid int 32: "+typeof e);if(!Number.isInteger(e)||e>2147483647||e<-2147483648)throw new Error("invalid int 32: "+e)}function r(e){if("number"!=typeof e)throw new Error("invalid uint 32: "+typeof e);if(!Number.isInteger(e)||e>4294967295||e<0)throw new Error("invalid uint 32: "+e)}function o(e){if("number"!=typeof e)throw new Error("invalid float 32: "+typeof e);if(Number.isFinite(e)&&(e>34028234663852886e22||e<-34028234663852886e22))throw new Error("invalid float 32: "+e)}n.d(t,{bn:()=>s,e1:()=>r,vA:()=>i,wO:()=>o})},2616(e,t,n){n.d(t,{A:()=>r,C:()=>o});let i="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/".split(""),s=[];for(let e=0;e<i.length;e++)s[i[e].charCodeAt(0)]=e;function r(e){let t=3*e.length/4;"="==e[e.length-2]?t-=2:"="==e[e.length-1]&&(t-=1);let n,i=new Uint8Array(t),r=0,o=0,a=0;for(let t=0;t<e.length;t++){if(n=s[e.charCodeAt(t)],void 0===n)switch(e[t]){case"=":o=0;case"\n":case"\r":case"\t":case" ":continue;default:throw Error("invalid base64 string.")}switch(o){case 0:a=n,o=1;break;case 1:i[r++]=a<<2|(48&n)>>4,a=n,o=2;break;case 2:i[r++]=(15&a)<<4|(60&n)>>2,a=n,o=3;break;case 3:i[r++]=(3&a)<<6|n,o=0}}if(1==o)throw Error("invalid base64 string.");return i.subarray(0,r)}function o(e){let t,n="",s=0,r=0;for(let o=0;o<e.length;o++)switch(t=e[o],s){case 0:n+=i[t>>2],r=(3&t)<<4,s=1;break;case 1:n+=i[r|t>>4],r=(15&t)<<2,s=2;break;case 2:n+=i[r|t>>6],n+=i[63&t],s=0}return s&&(n+=i[r],n+="=",1==s&&(n+="=")),n}s["-".charCodeAt(0)]=i.indexOf("+"),s["_".charCodeAt(0)]=i.indexOf("/")},8899(e,t,n){var i,s;n.d(t,{O0:()=>s,f$:()=>i}),function(e){e.symbol=Symbol.for("protobuf-ts/unknown"),e.onRead=(n,i,s,r,o)=>{(t(i)?i[e.symbol]:i[e.symbol]=[]).push({no:s,wireType:r,data:o})},e.onWrite=(t,n,i)=>{for(let{no:t,wireType:s,data:r}of e.list(n))i.tag(t,s).raw(r)},e.list=(n,i)=>{if(t(n)){let t=n[e.symbol];return i?t.filter(e=>e.no==i):t}return[]},e.last=(t,n)=>e.list(t,n).slice(-1)[0];const t=t=>t&&Array.isArray(t[e.symbol])}(i||(i={})),function(e){e[e.Varint=0]="Varint",e[e.Bit64=1]="Bit64",e[e.LengthDelimited=2]="LengthDelimited",e[e.StartGroup=3]="StartGroup",e[e.EndGroup=4]="EndGroup",e[e.Bit32=5]="Bit32"}(s||(s={}))},7844(e,t,n){n.d(t,{e:()=>a});var i=n(8899),s=n(6544),r=n(7718);const o={readUnknownField:!0,readerFactory:e=>new l(e)};function a(e){return e?Object.assign(Object.assign({},o),e):o}class l{constructor(e,t){this.varint64=r.ls,this.uint32=r.Gn,this.buf=e,this.len=e.length,this.pos=0,this.view=new DataView(e.buffer,e.byteOffset,e.byteLength),this.textDecoder=null!=t?t:new TextDecoder("utf-8",{fatal:!0,ignoreBOM:!0})}tag(){let e=this.uint32(),t=e>>>3,n=7&e;if(t<=0||n<0||n>5)throw new Error("illegal tag: field no "+t+" wire type "+n);return[t,n]}skip(e){let t=this.pos;switch(e){case i.O0.Varint:for(;128&this.buf[this.pos++];);break;case i.O0.Bit64:this.pos+=4;case i.O0.Bit32:this.pos+=4;break;case i.O0.LengthDelimited:let t=this.uint32();this.pos+=t;break;case i.O0.StartGroup:let n;for(;(n=this.tag()[1])!==i.O0.EndGroup;)this.skip(n);break;default:throw new Error("cant skip wire type "+e)}return this.assertBounds(),this.buf.subarray(t,this.pos)}assertBounds(){if(this.pos>this.len)throw new RangeError("premature EOF")}int32(){return 0|this.uint32()}sint32(){let e=this.uint32();return e>>>1^-(1&e)}int64(){return new s.hY(...this.varint64())}uint64(){return new s.eA(...this.varint64())}sint64(){let[e,t]=this.varint64(),n=-(1&e);return e=(e>>>1|(1&t)<<31)^n,t=t>>>1^n,new s.hY(e,t)}bool(){let[e,t]=this.varint64();return 0!==e||0!==t}fixed32(){return this.view.getUint32((this.pos+=4)-4,!0)}sfixed32(){return this.view.getInt32((this.pos+=4)-4,!0)}fixed64(){return new s.eA(this.sfixed32(),this.sfixed32())}sfixed64(){return new s.hY(this.sfixed32(),this.sfixed32())}float(){return this.view.getFloat32((this.pos+=4)-4,!0)}double(){return this.view.getFloat64((this.pos+=8)-8,!0)}bytes(){let e=this.uint32(),t=this.pos;return this.pos+=e,this.assertBounds(),this.buf.subarray(t,t+e)}string(){return this.textDecoder.decode(this.bytes())}}},8592(e,t,n){n.d(t,{d:()=>a});var i=n(6544),s=n(7718),r=n(4441);const o={writeUnknownFields:!0,writerFactory:()=>new l};function a(e){return e?Object.assign(Object.assign({},o),e):o}class l{constructor(e){this.stack=[],this.textEncoder=null!=e?e:new TextEncoder,this.chunks=[],this.buf=[]}finish(){this.chunks.push(new Uint8Array(this.buf));let e=0;for(let t=0;t<this.chunks.length;t++)e+=this.chunks[t].length;let t=new Uint8Array(e),n=0;for(let e=0;e<this.chunks.length;e++)t.set(this.chunks[e],n),n+=this.chunks[e].length;return this.chunks=[],t}fork(){return this.stack.push({chunks:this.chunks,buf:this.buf}),this.chunks=[],this.buf=[],this}join(){let e=this.finish(),t=this.stack.pop();if(!t)throw new Error("invalid state, fork stack empty");return this.chunks=t.chunks,this.buf=t.buf,this.uint32(e.byteLength),this.raw(e)}tag(e,t){return this.uint32((e<<3|t)>>>0)}raw(e){return this.buf.length&&(this.chunks.push(new Uint8Array(this.buf)),this.buf=[]),this.chunks.push(e),this}uint32(e){for((0,r.e1)(e);e>127;)this.buf.push(127&e|128),e>>>=7;return this.buf.push(e),this}int32(e){return(0,r.bn)(e),(0,s.f7)(e,this.buf),this}bool(e){return this.buf.push(e?1:0),this}bytes(e){return this.uint32(e.byteLength),this.raw(e)}string(e){let t=this.textEncoder.encode(e);return this.uint32(t.byteLength),this.raw(t)}float(e){(0,r.wO)(e);let t=new Uint8Array(4);return new DataView(t.buffer).setFloat32(0,e,!0),this.raw(t)}double(e){let t=new Uint8Array(8);return new DataView(t.buffer).setFloat64(0,e,!0),this.raw(t)}fixed32(e){(0,r.e1)(e);let t=new Uint8Array(4);return new DataView(t.buffer).setUint32(0,e,!0),this.raw(t)}sfixed32(e){(0,r.bn)(e);let t=new Uint8Array(4);return new DataView(t.buffer).setInt32(0,e,!0),this.raw(t)}sint32(e){return(0,r.bn)(e),e=(e<<1^e>>31)>>>0,(0,s.f7)(e,this.buf),this}sfixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),s=i.hY.from(e);return n.setInt32(0,s.lo,!0),n.setInt32(4,s.hi,!0),this.raw(t)}fixed64(e){let t=new Uint8Array(8),n=new DataView(t.buffer),s=i.eA.from(e);return n.setInt32(0,s.lo,!0),n.setInt32(4,s.hi,!0),this.raw(t)}int64(e){let t=i.hY.from(e);return(0,s.cV)(t.lo,t.hi,this.buf),this}sint64(e){let t=i.hY.from(e),n=t.hi>>31,r=t.lo<<1^n,o=(t.hi<<1|t.lo>>>31)^n;return(0,s.cV)(r,o,this.buf),this}uint64(e){let t=i.eA.from(e);return(0,s.cV)(t.lo,t.hi,this.buf),this}}},7718(e,t,n){function i(){let e=0,t=0;for(let n=0;n<28;n+=7){let i=this.buf[this.pos++];if(e|=(127&i)<<n,!(128&i))return this.assertBounds(),[e,t]}let n=this.buf[this.pos++];if(e|=(15&n)<<28,t=(112&n)>>4,!(128&n))return this.assertBounds(),[e,t];for(let n=3;n<=31;n+=7){let i=this.buf[this.pos++];if(t|=(127&i)<<n,!(128&i))return this.assertBounds(),[e,t]}throw new Error("invalid varint")}function s(e,t,n){for(let i=0;i<28;i+=7){const s=e>>>i,r=!(s>>>7==0&&0==t),o=255&(r?128|s:s);if(n.push(o),!r)return}const i=e>>>28&15|(7&t)<<4,s=!!(t>>3);if(n.push(255&(s?128|i:i)),s){for(let e=3;e<31;e+=7){const i=t>>>e,s=!(i>>>7==0),r=255&(s?128|i:i);if(n.push(r),!s)return}n.push(t>>>31&1)}}n.d(t,{Gn:()=>d,Jg:()=>o,cV:()=>s,f7:()=>l,ls:()=>i,oJ:()=>a});const r=4294967296;function o(e){let t="-"==e[0];t&&(e=e.slice(1));const n=1e6;let i=0,s=0;function o(t,o){const a=Number(e.slice(t,o));s*=n,i=i*n+a,i>=r&&(s+=i/r|0,i%=r)}return o(-24,-18),o(-18,-12),o(-12,-6),o(-6),[t,i,s]}function a(e,t){if(t>>>0<=2097151)return""+(r*t+(e>>>0));let n=(e>>>24|t<<8)>>>0&16777215,i=t>>16&65535,s=(16777215&e)+6777216*n+6710656*i,o=n+8147497*i,a=2*i,l=1e7;function d(e,t){let n=e?String(e):"";return t?"0000000".slice(n.length)+n:n}return s>=l&&(o+=Math.floor(s/l),s%=l),o>=l&&(a+=Math.floor(o/l),o%=l),d(a,0)+d(o,a)+d(s,1)}function l(e,t){if(e>=0){for(;e>127;)t.push(127&e|128),e>>>=7;t.push(e)}else{for(let n=0;n<9;n++)t.push(127&e|128),e>>=7;t.push(1)}}function d(){let e=this.buf[this.pos++],t=127&e;if(!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<7,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<14,!(128&e))return this.assertBounds(),t;if(e=this.buf[this.pos++],t|=(127&e)<<21,!(128&e))return this.assertBounds(),t;e=this.buf[this.pos++],t|=(15&e)<<28;for(let t=5;128&e&&t<10;t++)e=this.buf[this.pos++];if(128&e)throw new Error("invalid varint");return this.assertBounds(),t>>>0}},9196(e,t,n){n.d(t,{bm:()=>r,yG:()=>o});const i={emitDefaultValues:!1,enumAsInteger:!1,useProtoFieldName:!1,prettySpaces:0},s={ignoreUnknownFields:!1};function r(e){return e?Object.assign(Object.assign({},s),e):s}function o(e){return e?Object.assign(Object.assign({},i),e):i}},2280(e,t,n){function i(e){let t=typeof e;if("object"==t){if(Array.isArray(e))return"array";if(null===e)return"null"}return t}function s(e){return null!==e&&"object"==typeof e&&!Array.isArray(e)}n.d(t,{O:()=>s,V:()=>i})},9378(e,t,n){function i(e){let t=!1;const n=[];for(let i=0;i<e.length;i++){let s=e.charAt(i);"_"==s?t=!0:/\d/.test(s)?(n.push(s),t=!0):t?(n.push(s.toUpperCase()),t=!1):0==i?n.push(s.toLowerCase()):n.push(s)}return n.join("")}n.d(t,{W:()=>i})},5336(e,t,n){n.d(t,{$:()=>i});const i=Symbol.for("protobuf-ts/message-type")},2285(e,t,n){n.d(t,{G:()=>b});var i=n(5336),s=n(743),r=n(350),o=n(9581),a=n(2985),l=n(8228),d=n(1312),c=n(6895),h=n(3923),u=n(2280),m=n(9196),p=n(9230),g=n(8592),f=n(7844);const v=Object.getOwnPropertyDescriptors(Object.getPrototypeOf({})),y=v[i.$]={};class b{constructor(e,t,n){this.defaultCheckDepth=16,this.typeName=e,this.fields=t.map(s.mS),this.options=null!=n?n:{},y.value=this,this.messagePrototype=Object.create(null,v),this.refTypeCheck=new r.u(this),this.refJsonReader=new o.L(this),this.refJsonWriter=new a.X(this),this.refBinReader=new l.W(this),this.refBinWriter=new d.c(this)}create(e){let t=(0,c.C)(this);return void 0!==e&&(0,h.x)(this,t,e),t}clone(e){let t=this.create();return(0,h.x)(this,t,e),t}equals(e,t){return(0,p.F)(this,e,t)}is(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!1)}isAssignable(e,t=this.defaultCheckDepth){return this.refTypeCheck.is(e,t,!0)}mergePartial(e,t){(0,h.x)(this,e,t)}fromBinary(e,t){let n=(0,f.e)(t);return this.internalBinaryRead(n.readerFactory(e),e.byteLength,n)}fromJson(e,t){return this.internalJsonRead(e,(0,m.bm)(t))}fromJsonString(e,t){let n=JSON.parse(e);return this.fromJson(n,t)}toJson(e,t){return this.internalJsonWrite(e,(0,m.yG)(t))}toJsonString(e,t){var n;let i=this.toJson(e,t);return JSON.stringify(i,null,null!==(n=null==t?void 0:t.prettySpaces)&&void 0!==n?n:0)}toBinary(e,t){let n=(0,g.d)(t);return this.internalBinaryWrite(e,n.writerFactory(),n).finish()}internalJsonRead(e,t,n){if(null!==e&&"object"==typeof e&&!Array.isArray(e)){let i=null!=n?n:this.create();return this.refJsonReader.read(e,i,t),i}throw new Error(`Unable to parse message ${this.typeName} from JSON ${(0,u.V)(e)}.`)}internalJsonWrite(e,t){return this.refJsonWriter.write(e,t)}internalBinaryWrite(e,t,n){return this.refBinWriter.write(e,t,n),t}internalBinaryRead(e,t,n,i){let s=null!=i?i:this.create();return this.refBinReader.read(e,s,n,t),s}}},314(e,t,n){function i(e){if("object"!=typeof e||null===e||!e.hasOwnProperty("oneofKind"))return!1;switch(typeof e.oneofKind){case"string":return void 0!==e[e.oneofKind]&&2==Object.keys(e).length;case"undefined":return 1==Object.keys(e).length;default:return!1}}n.d(t,{Zs:()=>i})},6544(e,t,n){n.d(t,{eA:()=>c,hY:()=>h});var i=n(7718);let s;function r(e){if(!e)throw new Error("BigInt unavailable, see https://github.com/timostamm/protobuf-ts/blob/v1.0.8/MANUAL.md#bigint-support")}!function(){const e=new DataView(new ArrayBuffer(8)),t=void 0!==globalThis.BigInt&&"function"==typeof e.getBigInt64&&"function"==typeof e.getBigUint64&&"function"==typeof e.setBigInt64&&"function"==typeof e.setBigUint64;s=t?{MIN:BigInt("-9223372036854775808"),MAX:BigInt("9223372036854775807"),UMIN:BigInt("0"),UMAX:BigInt("18446744073709551615"),C:BigInt,V:e}:void 0}();const o=/^-?[0-9]+$/,a=4294967296,l=2147483648;class d{constructor(e,t){this.lo=0|e,this.hi=0|t}isZero(){return 0==this.lo&&0==this.hi}toNumber(){let e=this.hi*a+(this.lo>>>0);if(!Number.isSafeInteger(e))throw new Error("cannot convert to safe number");return e}}class c extends d{static from(e){if(s)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=s.C(e);case"number":if(0===e)return this.ZERO;e=s.C(e);case"bigint":if(!e)return this.ZERO;if(e<s.UMIN)throw new Error("signed value for ulong");if(e>s.UMAX)throw new Error("ulong too large");return s.V.setBigUint64(0,e,!0),new c(s.V.getInt32(0,!0),s.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!o.test(e))throw new Error("string is no integer");let[t,n,s]=(0,i.Jg)(e);if(t)throw new Error("signed value for ulong");return new c(n,s);case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");if(e<0)throw new Error("signed value for ulong");return new c(e,e/a)}throw new Error("unknown value "+typeof e)}toString(){return s?this.toBigInt().toString():(0,i.oJ)(this.lo,this.hi)}toBigInt(){return r(s),s.V.setInt32(0,this.lo,!0),s.V.setInt32(4,this.hi,!0),s.V.getBigUint64(0,!0)}}c.ZERO=new c(0,0);class h extends d{static from(e){if(s)switch(typeof e){case"string":if("0"==e)return this.ZERO;if(""==e)throw new Error("string is no integer");e=s.C(e);case"number":if(0===e)return this.ZERO;e=s.C(e);case"bigint":if(!e)return this.ZERO;if(e<s.MIN)throw new Error("signed long too small");if(e>s.MAX)throw new Error("signed long too large");return s.V.setBigInt64(0,e,!0),new h(s.V.getInt32(0,!0),s.V.getInt32(4,!0))}else switch(typeof e){case"string":if("0"==e)return this.ZERO;if(e=e.trim(),!o.test(e))throw new Error("string is no integer");let[t,n,s]=(0,i.Jg)(e);if(t){if(s>l||s==l&&0!=n)throw new Error("signed long too small")}else if(s>=l)throw new Error("signed long too large");let r=new h(n,s);return t?r.negate():r;case"number":if(0==e)return this.ZERO;if(!Number.isSafeInteger(e))throw new Error("number is no integer");return e>0?new h(e,e/a):new h(-e,-e/a).negate()}throw new Error("unknown value "+typeof e)}isNegative(){return 0!==(this.hi&l)}negate(){let e=~this.hi,t=this.lo;return t?t=1+~t:e+=1,new h(t,e)}toString(){if(s)return this.toBigInt().toString();if(this.isNegative()){let e=this.negate();return"-"+(0,i.oJ)(e.lo,e.hi)}return(0,i.oJ)(this.lo,this.hi)}toBigInt(){return r(s),s.V.setInt32(0,this.lo,!0),s.V.setInt32(4,this.hi,!0),s.V.getBigInt64(0,!0)}}h.ZERO=new h(0,0)},8228(e,t,n){n.d(t,{W:()=>a});var i=n(8899),s=n(743),r=n(9511),o=n(2799);class a{constructor(e){this.info=e}prepare(){var e;if(!this.fieldNoToField){const t=null!==(e=this.info.fields)&&void 0!==e?e:[];this.fieldNoToField=new Map(t.map(e=>[e.no,e]))}}read(e,t,n,r){this.prepare();const o=void 0===r?e.len:e.pos+r;for(;e.pos<o;){const[r,o]=e.tag(),a=this.fieldNoToField.get(r);if(!a){let s=n.readUnknownField;if("throw"==s)throw new Error(`Unknown field ${r} (wire type ${o}) for ${this.info.typeName}`);let a=e.skip(o);!1!==s&&(!0===s?i.f$.onRead:s)(this.info.typeName,t,r,o,a);continue}let l=t,d=a.repeat,c=a.localName;switch(a.oneof&&(l=l[a.oneof],l.oneofKind!==c&&(l=t[a.oneof]={oneofKind:c})),a.kind){case"scalar":case"enum":let t="enum"==a.kind?s.LN.INT32:a.T,r="scalar"==a.kind?a.L:void 0;if(d){let n=l[c];if(o==i.O0.LengthDelimited&&t!=s.LN.STRING&&t!=s.LN.BYTES){let i=e.uint32()+e.pos;for(;e.pos<i;)n.push(this.scalar(e,t,r))}else n.push(this.scalar(e,t,r))}else l[c]=this.scalar(e,t,r);break;case"message":if(d){let t=l[c],i=a.T().internalBinaryRead(e,e.uint32(),n);t.push(i)}else l[c]=a.T().internalBinaryRead(e,e.uint32(),n,l[c]);break;case"map":let[h,u]=this.mapEntry(a,e,n);l[c][h]=u}}}mapEntry(e,t,n){let i,r,a=t.uint32(),l=t.pos+a;for(;t.pos<l;){let[o,a]=t.tag();switch(o){case 1:i=e.K==s.LN.BOOL?t.bool().toString():this.scalar(t,e.K,s.rO.STRING);break;case 2:switch(e.V.kind){case"scalar":r=this.scalar(t,e.V.T,e.V.L);break;case"enum":r=t.int32();break;case"message":r=e.V.T().internalBinaryRead(t,t.uint32(),n)}break;default:throw new Error(`Unknown field ${o} (wire type ${a}) in map entry for ${this.info.typeName}#${e.name}`)}}if(void 0===i){let t=(0,o.V)(e.K);i=e.K==s.LN.BOOL?t.toString():t}if(void 0===r)switch(e.V.kind){case"scalar":r=(0,o.V)(e.V.T,e.V.L);break;case"enum":r=0;break;case"message":r=e.V.T().create()}return[i,r]}scalar(e,t,n){switch(t){case s.LN.INT32:return e.int32();case s.LN.STRING:return e.string();case s.LN.BOOL:return e.bool();case s.LN.DOUBLE:return e.double();case s.LN.FLOAT:return e.float();case s.LN.INT64:return(0,r.l)(e.int64(),n);case s.LN.UINT64:return(0,r.l)(e.uint64(),n);case s.LN.FIXED64:return(0,r.l)(e.fixed64(),n);case s.LN.FIXED32:return e.fixed32();case s.LN.BYTES:return e.bytes();case s.LN.UINT32:return e.uint32();case s.LN.SFIXED32:return e.sfixed32();case s.LN.SFIXED64:return(0,r.l)(e.sfixed64(),n);case s.LN.SINT32:return e.sint32();case s.LN.SINT64:return(0,r.l)(e.sint64(),n)}}}},1312(e,t,n){n.d(t,{c:()=>a});var i=n(8899),s=n(743),r=n(4441),o=n(6544);class a{constructor(e){this.info=e}prepare(){if(!this.fields){const e=this.info.fields?this.info.fields.concat():[];this.fields=e.sort((e,t)=>e.no-t.no)}}write(e,t,n){this.prepare();for(const i of this.fields){let o,a,l=i.repeat,d=i.localName;if(i.oneof){const t=e[i.oneof];if(t.oneofKind!==d)continue;o=t[d],a=!0}else o=e[d],a=!1;switch(i.kind){case"scalar":case"enum":let e="enum"==i.kind?s.LN.INT32:i.T;if(l)if((0,r.vA)(Array.isArray(o)),l==s.sA.PACKED)this.packed(t,e,i.no,o);else for(const n of o)this.scalar(t,e,i.no,n,!0);else void 0===o?(0,r.vA)(i.opt):this.scalar(t,e,i.no,o,a||i.opt);break;case"message":if(l){(0,r.vA)(Array.isArray(o));for(const e of o)this.message(t,n,i.T(),i.no,e)}else this.message(t,n,i.T(),i.no,o);break;case"map":(0,r.vA)("object"==typeof o&&null!==o);for(const[e,s]of Object.entries(o))this.mapEntry(t,n,i,e,s)}}let o=n.writeUnknownFields;!1!==o&&(!0===o?i.f$.onWrite:o)(this.info.typeName,e,t)}mapEntry(e,t,n,o,a){e.tag(n.no,i.O0.LengthDelimited),e.fork();let l=o;switch(n.K){case s.LN.INT32:case s.LN.FIXED32:case s.LN.UINT32:case s.LN.SFIXED32:case s.LN.SINT32:l=Number.parseInt(o);break;case s.LN.BOOL:(0,r.vA)("true"==o||"false"==o),l="true"==o}switch(this.scalar(e,n.K,1,l,!0),n.V.kind){case"scalar":this.scalar(e,n.V.T,2,a,!0);break;case"enum":this.scalar(e,s.LN.INT32,2,a,!0);break;case"message":this.message(e,t,n.V.T(),2,a)}e.join()}message(e,t,n,s,r){void 0!==r&&(n.internalBinaryWrite(r,e.tag(s,i.O0.LengthDelimited).fork(),t),e.join())}scalar(e,t,n,i,s){let[r,o,a]=this.scalarInfo(t,i);a&&!s||(e.tag(n,r),e[o](i))}packed(e,t,n,o){if(!o.length)return;(0,r.vA)(t!==s.LN.BYTES&&t!==s.LN.STRING),e.tag(n,i.O0.LengthDelimited),e.fork();let[,a]=this.scalarInfo(t);for(let t=0;t<o.length;t++)e[a](o[t]);e.join()}scalarInfo(e,t){let n,r=i.O0.Varint,a=void 0===t,l=0===t;switch(e){case s.LN.INT32:n="int32";break;case s.LN.STRING:l=a||!t.length,r=i.O0.LengthDelimited,n="string";break;case s.LN.BOOL:l=!1===t,n="bool";break;case s.LN.UINT32:n="uint32";break;case s.LN.DOUBLE:r=i.O0.Bit64,n="double";break;case s.LN.FLOAT:r=i.O0.Bit32,n="float";break;case s.LN.INT64:l=a||o.hY.from(t).isZero(),n="int64";break;case s.LN.UINT64:l=a||o.eA.from(t).isZero(),n="uint64";break;case s.LN.FIXED64:l=a||o.eA.from(t).isZero(),r=i.O0.Bit64,n="fixed64";break;case s.LN.BYTES:l=a||!t.byteLength,r=i.O0.LengthDelimited,n="bytes";break;case s.LN.FIXED32:r=i.O0.Bit32,n="fixed32";break;case s.LN.SFIXED32:r=i.O0.Bit32,n="sfixed32";break;case s.LN.SFIXED64:l=a||o.hY.from(t).isZero(),r=i.O0.Bit64,n="sfixed64";break;case s.LN.SINT32:n="sint32";break;case s.LN.SINT64:l=a||o.hY.from(t).isZero(),n="sint64"}return[r,n,a||l]}}},6895(e,t,n){n.d(t,{C:()=>r});var i=n(2799),s=n(5336);function r(e){const t=e.messagePrototype?Object.create(e.messagePrototype):Object.defineProperty({},s.$,{value:e});for(let n of e.fields){let e=n.localName;if(!n.opt)if(n.oneof)t[n.oneof]={oneofKind:void 0};else if(n.repeat)t[e]=[];else switch(n.kind){case"scalar":t[e]=(0,i.V)(n.T,n.L);break;case"enum":t[e]=0;break;case"map":t[e]={}}}return t}},9230(e,t,n){n.d(t,{F:()=>s});var i=n(743);function s(e,t,n){if(t===n)return!0;if(!t||!n)return!1;for(let s of e.fields){let e=s.localName,d=s.oneof?t[s.oneof][e]:t[e],c=s.oneof?n[s.oneof][e]:n[e];switch(s.kind){case"enum":case"scalar":let e="enum"==s.kind?i.LN.INT32:s.T;if(!(s.repeat?a(e,d,c):o(e,d,c)))return!1;break;case"map":if(!("message"==s.V.kind?l(s.V.T(),r(d),r(c)):a("enum"==s.V.kind?i.LN.INT32:s.V.T,r(d),r(c))))return!1;break;case"message":let t=s.T();if(!(s.repeat?l(t,d,c):t.equals(d,c)))return!1}}return!0}const r=Object.values;function o(e,t,n){if(t===n)return!0;if(e!==i.LN.BYTES)return!1;let s=t,r=n;if(s.length!==r.length)return!1;for(let e=0;e<s.length;e++)if(s[e]!=r[e])return!1;return!0}function a(e,t,n){if(t.length!==n.length)return!1;for(let i=0;i<t.length;i++)if(!o(e,t[i],n[i]))return!1;return!0}function l(e,t,n){if(t.length!==n.length)return!1;for(let i=0;i<t.length;i++)if(!e.equals(t[i],n[i]))return!1;return!0}},743(e,t,n){n.d(t,{LN:()=>i,mS:()=>a,rO:()=>s,sA:()=>r});var i,s,r,o=n(9378);function a(e){var t,n,i,s;return e.localName=null!==(t=e.localName)&&void 0!==t?t:(0,o.W)(e.name),e.jsonName=null!==(n=e.jsonName)&&void 0!==n?n:(0,o.W)(e.name),e.repeat=null!==(i=e.repeat)&&void 0!==i?i:r.NO,e.opt=null!==(s=e.opt)&&void 0!==s?s:!e.repeat&&!e.oneof&&"message"==e.kind,e}!function(e){e[e.DOUBLE=1]="DOUBLE",e[e.FLOAT=2]="FLOAT",e[e.INT64=3]="INT64",e[e.UINT64=4]="UINT64",e[e.INT32=5]="INT32",e[e.FIXED64=6]="FIXED64",e[e.FIXED32=7]="FIXED32",e[e.BOOL=8]="BOOL",e[e.STRING=9]="STRING",e[e.BYTES=12]="BYTES",e[e.UINT32=13]="UINT32",e[e.SFIXED32=15]="SFIXED32",e[e.SFIXED64=16]="SFIXED64",e[e.SINT32=17]="SINT32",e[e.SINT64=18]="SINT64"}(i||(i={})),function(e){e[e.BIGINT=0]="BIGINT",e[e.STRING=1]="STRING",e[e.NUMBER=2]="NUMBER"}(s||(s={})),function(e){e[e.NO=0]="NO",e[e.PACKED=1]="PACKED",e[e.UNPACKED=2]="UNPACKED"}(r||(r={}))},9581(e,t,n){n.d(t,{L:()=>d});var i=n(2280),s=n(2616),r=n(743),o=n(6544),a=n(4441),l=n(9511);class d{constructor(e){this.info=e}prepare(){var e;if(void 0===this.fMap){this.fMap={};const t=null!==(e=this.info.fields)&&void 0!==e?e:[];for(const e of t)this.fMap[e.name]=e,this.fMap[e.jsonName]=e,this.fMap[e.localName]=e}}assert(e,t,n){if(!e){let e=(0,i.V)(n);throw"number"!=e&&"boolean"!=e||(e=n.toString()),new Error(`Cannot parse JSON ${e} for ${this.info.typeName}#${t}`)}}read(e,t,n){this.prepare();const s=[];for(const[o,a]of Object.entries(e)){const e=this.fMap[o];if(!e){if(!n.ignoreUnknownFields)throw new Error(`Found unknown field while reading ${this.info.typeName} from JSON format. JSON key: ${o}`);continue}const l=e.localName;let d;if(e.oneof){if(null===a&&("enum"!==e.kind||"google.protobuf.NullValue"!==e.T()[0]))continue;if(s.includes(e.oneof))throw new Error(`Multiple members of the oneof group "${e.oneof}" of ${this.info.typeName} are present in JSON.`);s.push(e.oneof),d=t[e.oneof]={oneofKind:l}}else d=t;if("map"==e.kind){if(null===a)continue;this.assert((0,i.O)(a),e.name,a);const t=d[l];for(const[i,s]of Object.entries(a)){let o;switch(this.assert(null!==s,e.name+" map value",null),e.V.kind){case"message":o=e.V.T().internalJsonRead(s,n);break;case"enum":if(o=this.enum(e.V.T(),s,e.name,n.ignoreUnknownFields),!1===o)continue;break;case"scalar":o=this.scalar(s,e.V.T,e.V.L,e.name)}this.assert(void 0!==o,e.name+" map value",s);let a=i;e.K==r.LN.BOOL&&(a="true"==a||"false"!=a&&a),a=this.scalar(a,e.K,r.rO.STRING,e.name).toString(),t[a]=o}}else if(e.repeat){if(null===a)continue;this.assert(Array.isArray(a),e.name,a);const t=d[l];for(const i of a){let s;switch(this.assert(null!==i,e.name,null),e.kind){case"message":s=e.T().internalJsonRead(i,n);break;case"enum":if(s=this.enum(e.T(),i,e.name,n.ignoreUnknownFields),!1===s)continue;break;case"scalar":s=this.scalar(i,e.T,e.L,e.name)}this.assert(void 0!==s,e.name,a),t.push(s)}}else switch(e.kind){case"message":if(null===a&&"google.protobuf.Value"!=e.T().typeName){this.assert(void 0===e.oneof,e.name+" (oneof member)",null);continue}d[l]=e.T().internalJsonRead(a,n,d[l]);break;case"enum":if(null===a)continue;let t=this.enum(e.T(),a,e.name,n.ignoreUnknownFields);if(!1===t)continue;d[l]=t;break;case"scalar":if(null===a)continue;d[l]=this.scalar(a,e.T,e.L,e.name)}}}enum(e,t,n,i){if("google.protobuf.NullValue"==e[0]&&(0,a.vA)(null===t||"NULL_VALUE"===t,`Unable to parse field ${this.info.typeName}#${n}, enum ${e[0]} only accepts null.`),null===t)return 0;switch(typeof t){case"number":return(0,a.vA)(Number.isInteger(t),`Unable to parse field ${this.info.typeName}#${n}, enum can only be integral number, got ${t}.`),t;case"string":let s=t;e[2]&&t.substring(0,e[2].length)===e[2]&&(s=t.substring(e[2].length));let r=e[1][s];return(void 0!==r||!i)&&((0,a.vA)("number"==typeof r,`Unable to parse field ${this.info.typeName}#${n}, enum ${e[0]} has no value for "${t}".`),r)}(0,a.vA)(!1,`Unable to parse field ${this.info.typeName}#${n}, cannot parse enum value from ${typeof t}".`)}scalar(e,t,n,i){let d;try{switch(t){case r.LN.DOUBLE:case r.LN.FLOAT:if(null===e)return 0;if("NaN"===e)return Number.NaN;if("Infinity"===e)return Number.POSITIVE_INFINITY;if("-Infinity"===e)return Number.NEGATIVE_INFINITY;if(""===e){d="empty string";break}if("string"==typeof e&&e.trim().length!==e.length){d="extra whitespace";break}if("string"!=typeof e&&"number"!=typeof e)break;let i=Number(e);if(Number.isNaN(i)){d="not a number";break}if(!Number.isFinite(i)){d="too large or small";break}return t==r.LN.FLOAT&&(0,a.wO)(i),i;case r.LN.INT32:case r.LN.FIXED32:case r.LN.SFIXED32:case r.LN.SINT32:case r.LN.UINT32:if(null===e)return 0;let c;if("number"==typeof e?c=e:""===e?d="empty string":"string"==typeof e&&(e.trim().length!==e.length?d="extra whitespace":c=Number(e)),void 0===c)break;return t==r.LN.UINT32?(0,a.e1)(c):(0,a.bn)(c),c;case r.LN.INT64:case r.LN.SFIXED64:case r.LN.SINT64:if(null===e)return(0,l.l)(o.hY.ZERO,n);if("number"!=typeof e&&"string"!=typeof e)break;return(0,l.l)(o.hY.from(e),n);case r.LN.FIXED64:case r.LN.UINT64:if(null===e)return(0,l.l)(o.eA.ZERO,n);if("number"!=typeof e&&"string"!=typeof e)break;return(0,l.l)(o.eA.from(e),n);case r.LN.BOOL:if(null===e)return!1;if("boolean"!=typeof e)break;return e;case r.LN.STRING:if(null===e)return"";if("string"!=typeof e){d="extra whitespace";break}try{encodeURIComponent(e)}catch(d){d="invalid UTF8";break}return e;case r.LN.BYTES:if(null===e||""===e)return new Uint8Array(0);if("string"!=typeof e)break;return(0,s.A)(e)}}catch(e){d=e.message}this.assert(!1,i+(d?" - "+d:""),e)}}},2985(e,t,n){n.d(t,{X:()=>a});var i=n(2616),s=n(6544),r=n(743),o=n(4441);class a{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}write(e,t){const n={},i=e;for(const e of this.fields){if(!e.oneof){let s=this.field(e,i[e.localName],t);void 0!==s&&(n[t.useProtoFieldName?e.name:e.jsonName]=s);continue}const s=i[e.oneof];if(s.oneofKind!==e.localName)continue;const r="scalar"==e.kind||"enum"==e.kind?Object.assign(Object.assign({},t),{emitDefaultValues:!0}):t;let a=this.field(e,s[e.localName],r);(0,o.vA)(void 0!==a),n[t.useProtoFieldName?e.name:e.jsonName]=a}return n}field(e,t,n){let i;if("map"==e.kind){(0,o.vA)("object"==typeof t&&null!==t);const s={};switch(e.V.kind){case"scalar":for(const[n,i]of Object.entries(t)){const t=this.scalar(e.V.T,i,e.name,!1,!0);(0,o.vA)(void 0!==t),s[n.toString()]=t}break;case"message":const i=e.V.T();for(const[r,a]of Object.entries(t)){const t=this.message(i,a,e.name,n);(0,o.vA)(void 0!==t),s[r.toString()]=t}break;case"enum":const r=e.V.T();for(const[i,a]of Object.entries(t)){(0,o.vA)(void 0===a||"number"==typeof a);const t=this.enum(r,a,e.name,!1,!0,n.enumAsInteger);(0,o.vA)(void 0!==t),s[i.toString()]=t}}(n.emitDefaultValues||Object.keys(s).length>0)&&(i=s)}else if(e.repeat){(0,o.vA)(Array.isArray(t));const s=[];switch(e.kind){case"scalar":for(let n=0;n<t.length;n++){const i=this.scalar(e.T,t[n],e.name,e.opt,!0);(0,o.vA)(void 0!==i),s.push(i)}break;case"enum":const i=e.T();for(let r=0;r<t.length;r++){(0,o.vA)(void 0===t[r]||"number"==typeof t[r]);const a=this.enum(i,t[r],e.name,e.opt,!0,n.enumAsInteger);(0,o.vA)(void 0!==a),s.push(a)}break;case"message":const r=e.T();for(let i=0;i<t.length;i++){const a=this.message(r,t[i],e.name,n);(0,o.vA)(void 0!==a),s.push(a)}}(n.emitDefaultValues||s.length>0||n.emitDefaultValues)&&(i=s)}else switch(e.kind){case"scalar":i=this.scalar(e.T,t,e.name,e.opt,n.emitDefaultValues);break;case"enum":i=this.enum(e.T(),t,e.name,e.opt,n.emitDefaultValues,n.enumAsInteger);break;case"message":i=this.message(e.T(),t,e.name,n)}return i}enum(e,t,n,i,s,r){if("google.protobuf.NullValue"==e[0])return s||i?null:void 0;if(void 0!==t){if(0!==t||s||i)return(0,o.vA)("number"==typeof t),(0,o.vA)(Number.isInteger(t)),r||!e[1].hasOwnProperty(t)?t:e[2]?e[2]+e[1][t]:e[1][t]}else(0,o.vA)(i)}message(e,t,n,i){return void 0===t?i.emitDefaultValues?null:void 0:e.internalJsonWrite(t,i)}scalar(e,t,n,a,l){if(void 0===t)return void(0,o.vA)(a);const d=l||a;switch(e){case r.LN.INT32:case r.LN.SFIXED32:case r.LN.SINT32:return 0===t?d?0:void 0:((0,o.bn)(t),t);case r.LN.FIXED32:case r.LN.UINT32:return 0===t?d?0:void 0:((0,o.e1)(t),t);case r.LN.FLOAT:(0,o.wO)(t);case r.LN.DOUBLE:return 0===t?d?0:void 0:((0,o.vA)("number"==typeof t),Number.isNaN(t)?"NaN":t===Number.POSITIVE_INFINITY?"Infinity":t===Number.NEGATIVE_INFINITY?"-Infinity":t);case r.LN.STRING:return""===t?d?"":void 0:((0,o.vA)("string"==typeof t),t);case r.LN.BOOL:return!1===t?!d&&void 0:((0,o.vA)("boolean"==typeof t),t);case r.LN.UINT64:case r.LN.FIXED64:(0,o.vA)("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let e=s.eA.from(t);if(e.isZero()&&!d)return;return e.toString();case r.LN.INT64:case r.LN.SFIXED64:case r.LN.SINT64:(0,o.vA)("number"==typeof t||"string"==typeof t||"bigint"==typeof t);let n=s.hY.from(t);if(n.isZero()&&!d)return;return n.toString();case r.LN.BYTES:return(0,o.vA)(t instanceof Uint8Array),t.byteLength?(0,i.C)(t):d?"":void 0}}}},9511(e,t,n){n.d(t,{l:()=>s});var i=n(743);function s(e,t){switch(t){case i.rO.BIGINT:return e.toBigInt();case i.rO.NUMBER:return e.toNumber();default:return e.toString()}}},3923(e,t,n){function i(e,t,n){let i,s,r=n;for(let n of e.fields){let e=n.localName;if(n.oneof){const o=r[n.oneof];if(null==(null==o?void 0:o.oneofKind))continue;if(i=o[e],s=t[n.oneof],s.oneofKind=o.oneofKind,null==i){delete s[e];continue}}else if(i=r[e],s=t,null==i)continue;switch(n.repeat&&(s[e].length=i.length),n.kind){case"scalar":case"enum":if(n.repeat)for(let t=0;t<i.length;t++)s[e][t]=i[t];else s[e]=i;break;case"message":let t=n.T();if(n.repeat)for(let n=0;n<i.length;n++)s[e][n]=t.create(i[n]);else void 0===s[e]?s[e]=t.create(i):t.mergePartial(s[e],i);break;case"map":switch(n.V.kind){case"scalar":case"enum":Object.assign(s[e],i);break;case"message":let t=n.V.T();for(let n of Object.keys(i))s[e][n]=t.create(i[n])}}}}n.d(t,{x:()=>i})},2799(e,t,n){n.d(t,{V:()=>o});var i=n(743),s=n(9511),r=n(6544);function o(e,t=i.rO.STRING){switch(e){case i.LN.BOOL:return!1;case i.LN.UINT64:case i.LN.FIXED64:return(0,s.l)(r.eA.ZERO,t);case i.LN.INT64:case i.LN.SFIXED64:case i.LN.SINT64:return(0,s.l)(r.hY.ZERO,t);case i.LN.DOUBLE:case i.LN.FLOAT:return 0;case i.LN.BYTES:return new Uint8Array(0);case i.LN.STRING:return"";default:return 0}}},350(e,t,n){n.d(t,{u:()=>r});var i=n(743),s=n(314);class r{constructor(e){var t;this.fields=null!==(t=e.fields)&&void 0!==t?t:[]}prepare(){if(this.data)return;const e=[],t=[],n=[];for(let i of this.fields)if(i.oneof)n.includes(i.oneof)||(n.push(i.oneof),e.push(i.oneof),t.push(i.oneof));else switch(t.push(i.localName),i.kind){case"scalar":case"enum":i.opt&&!i.repeat||e.push(i.localName);break;case"message":i.repeat&&e.push(i.localName);break;case"map":e.push(i.localName)}this.data={req:e,known:t,oneofs:Object.values(n)}}is(e,t,n=!1){if(t<0)return!0;if(null==e||"object"!=typeof e)return!1;this.prepare();let i=Object.keys(e),r=this.data;if(i.length<r.req.length||r.req.some(e=>!i.includes(e)))return!1;if(!n&&i.some(e=>!r.known.includes(e)))return!1;if(t<1)return!0;for(const i of r.oneofs){const r=e[i];if(!(0,s.Zs)(r))return!1;if(void 0===r.oneofKind)continue;const o=this.fields.find(e=>e.localName===r.oneofKind);if(!o)return!1;if(!this.field(r[r.oneofKind],o,n,t))return!1}for(const i of this.fields)if(void 0===i.oneof&&!this.field(e[i.localName],i,n,t))return!1;return!0}field(e,t,n,s){let r=t.repeat;switch(t.kind){case"scalar":return void 0===e?t.opt:r?this.scalars(e,t.T,s,t.L):this.scalar(e,t.T,t.L);case"enum":return void 0===e?t.opt:r?this.scalars(e,i.LN.INT32,s):this.scalar(e,i.LN.INT32);case"message":return void 0===e||(r?this.messages(e,t.T(),n,s):this.message(e,t.T(),n,s));case"map":if("object"!=typeof e||null===e)return!1;if(s<2)return!0;if(!this.mapKeys(e,t.K,s))return!1;switch(t.V.kind){case"scalar":return this.scalars(Object.values(e),t.V.T,s,t.V.L);case"enum":return this.scalars(Object.values(e),i.LN.INT32,s);case"message":return this.messages(Object.values(e),t.V.T(),n,s)}}return!0}message(e,t,n,i){return n?t.isAssignable(e,i):t.is(e,i)}messages(e,t,n,i){if(!Array.isArray(e))return!1;if(i<2)return!0;if(n){for(let n=0;n<e.length&&n<i;n++)if(!t.isAssignable(e[n],i-1))return!1}else for(let n=0;n<e.length&&n<i;n++)if(!t.is(e[n],i-1))return!1;return!0}scalar(e,t,n){let s=typeof e;switch(t){case i.LN.UINT64:case i.LN.FIXED64:case i.LN.INT64:case i.LN.SFIXED64:case i.LN.SINT64:switch(n){case i.rO.BIGINT:return"bigint"==s;case i.rO.NUMBER:return"number"==s&&!isNaN(e);default:return"string"==s}case i.LN.BOOL:return"boolean"==s;case i.LN.STRING:return"string"==s;case i.LN.BYTES:return e instanceof Uint8Array;case i.LN.DOUBLE:case i.LN.FLOAT:return"number"==s&&!isNaN(e);default:return"number"==s&&Number.isInteger(e)}}scalars(e,t,n,i){if(!Array.isArray(e))return!1;if(n<2)return!0;if(Array.isArray(e))for(let s=0;s<e.length&&s<n;s++)if(!this.scalar(e[s],t,i))return!1;return!0}mapKeys(e,t,n){let s=Object.keys(e);switch(t){case i.LN.INT32:case i.LN.FIXED32:case i.LN.SFIXED32:case i.LN.SINT32:case i.LN.UINT32:return this.scalars(s.slice(0,n).map(e=>parseInt(e)),t,n);case i.LN.BOOL:return this.scalars(s.slice(0,n).map(e=>"true"==e||"false"!=e&&e),t,n);default:return this.scalars(s,t,n,i.rO.STRING)}}}},551(e,t,n){function i(e,t){if(t.length<e)throw new TypeError(e+" argument"+(e>1?"s":"")+" required, but only "+t.length+" present")}n.d(t,{A:()=>i})},4188(e,t,n){function i(e){if(null===e||!0===e||!1===e)return NaN;var t=Number(e);return isNaN(t)?t:t<0?Math.ceil(t):Math.floor(t)}n.d(t,{A:()=>i})},7767(e,t,n){n.d(t,{A:()=>o});var i=n(4188),s=n(123),r=n(551);function o(e,t){(0,r.A)(2,arguments);var n=(0,s.A)(e).getTime(),o=(0,i.A)(t);return new Date(n+o)}},7894(e,t,n){n.d(t,{A:()=>o});var i=n(4188),s=n(7767),r=n(551);function o(e,t){(0,r.A)(2,arguments);var n=(0,i.A)(t);return(0,s.A)(e,1e3*n)}},7813(e,t,n){n.d(t,{A:()=>r});var i=n(123),s=n(551);function r(e,t){(0,s.A)(2,arguments);var n=(0,i.A)(e),r=(0,i.A)(t);return n.getTime()<r.getTime()}},123(e,t,n){n.d(t,{A:()=>r});var i=n(2284),s=n(551);function r(e){(0,s.A)(1,arguments);var t=Object.prototype.toString.call(e);return e instanceof Date||"object"===(0,i.A)(e)&&"[object Date]"===t?new Date(e.getTime()):"number"==typeof e||"[object Number]"===t?new Date(e):("string"!=typeof e&&"[object String]"!==t||"undefined"==typeof console||(console.warn("Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments"),console.warn((new Error).stack)),new Date(NaN))}},5685(e,t,n){n.d(t,{A:()=>a});var i=/[A-Z]/g,s=/^ms-/,r={};function o(e){return"-"+e.toLowerCase()}const a=function(e){if(r.hasOwnProperty(e))return r[e];var t=e.replace(i,o);return r[e]=s.test(t)?"-"+t:t}},4175(e,t,n){n.d(t,{A:()=>s});var i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e};const s="object"===("undefined"==typeof window?"undefined":i(window))&&"object"===("undefined"==typeof document?"undefined":i(document))&&9===document.nodeType},8161(e,t,n){n.d(t,{A:()=>r});var i=n(5685);function s(e){var t={};for(var n in e)t[0===n.indexOf("--")?n:(0,i.A)(n)]=e[n];return e.fallbacks&&(Array.isArray(e.fallbacks)?t.fallbacks=e.fallbacks.map(s):t.fallbacks=s(e.fallbacks)),t}const r=function(){return{onProcessStyle:function(e){if(Array.isArray(e)){for(var t=0;t<e.length;t++)e[t]=s(e[t]);return e}return s(e)},onChangeValue:function(e,t,n){if(0===t.indexOf("--"))return e;var s=(0,i.A)(t);return t===s?e:(n.prop(s,e),null)}}}},2885(e,t,n){n.d(t,{A:()=>c});var i=n(8168),s=n(3317),r="@global",o=function(){function e(e,t,n){for(var o in this.type="global",this.at=r,this.isProcessed=!1,this.key=e,this.options=n,this.rules=new s.VZ((0,i.A)({},n,{parent:this})),t)this.rules.add(o,t[o]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.addRule=function(e,t,n){var i=this.rules.add(e,t,n);return i&&this.options.jss.plugins.onProcessRule(i),i},t.replaceRule=function(e,t,n){var i=this.rules.replace(e,t,n);return i&&this.options.jss.plugins.onProcessRule(i),i},t.indexOf=function(e){return this.rules.indexOf(e)},t.toString=function(e){return this.rules.toString(e)},e}(),a=function(){function e(e,t,n){this.type="global",this.at=r,this.isProcessed=!1,this.key=e,this.options=n;var s=e.substr(8);this.rule=n.jss.createRule(s,t,(0,i.A)({},n,{parent:this}))}return e.prototype.toString=function(e){return this.rule?this.rule.toString(e):""},e}(),l=/\s*,\s*/g;function d(e,t){for(var n=e.split(l),i="",s=0;s<n.length;s++)i+=t+" "+n[s].trim(),n[s+1]&&(i+=", ");return i}const c=function(){return{onCreateRule:function(e,t,n){if(!e)return null;if(e===r)return new o(e,t,n);if("@"===e[0]&&"@global "===e.substr(0,8))return new a(e,t,n);var i=n.parent;return i&&("global"===i.type||i.options.parent&&"global"===i.options.parent.type)&&(n.scoped=!1),n.selector||!1!==n.scoped||(n.selector=e),null},onProcessRule:function(e,t){"style"===e.type&&t&&(function(e,t){var n=e.options,s=e.style,o=s?s[r]:null;if(o){for(var a in o)t.addRule(a,o[a],(0,i.A)({},n,{selector:d(a,e.selector)}));delete s[r]}}(e,t),function(e,t){var n=e.options,s=e.style;for(var o in s)if("@"===o[0]&&o.substr(0,7)===r){var a=d(o.substr(7),e.selector);t.addRule(a,s[o],(0,i.A)({},n,{selector:a})),delete s[o]}}(e,t))}}}},3317(e,t,n){n.d(t,{Ay:()=>fe,VZ:()=>K});var i=n(8168),s=n(4175),r=n(2901),o=n(7387),a=n(9417),l=n(8587),d={}.constructor;function c(e){if(null==e||"object"!=typeof e)return e;if(Array.isArray(e))return e.map(c);if(e.constructor!==d)return e;var t={};for(var n in e)t[n]=c(e[n]);return t}function h(e,t,n){void 0===e&&(e="unnamed");var i=n.jss,s=c(t);return i.plugins.onCreateRule(e,s,n)||(e[0],null)}var u=function(e,t){for(var n="",i=0;i<e.length&&"!important"!==e[i];i++)n&&(n+=t),n+=e[i];return n},m=function(e){if(!Array.isArray(e))return e;var t="";if(Array.isArray(e[0]))for(var n=0;n<e.length&&"!important"!==e[n];n++)t&&(t+=", "),t+=u(e[n]," ");else t=u(e,", ");return"!important"===e[e.length-1]&&(t+=" !important"),t};function p(e){return e&&!1===e.format?{linebreak:"",space:""}:{linebreak:"\n",space:" "}}function g(e,t){for(var n="",i=0;i<t;i++)n+=" ";return n+e}function f(e,t,n){void 0===n&&(n={});var i="";if(!t)return i;var s=n.indent,r=void 0===s?0:s,o=t.fallbacks;!1===n.format&&(r=-1/0);var a=p(n),l=a.linebreak,d=a.space;if(e&&r++,o)if(Array.isArray(o))for(var c=0;c<o.length;c++){var h=o[c];for(var u in h){var f=h[u];null!=f&&(i&&(i+=l),i+=g(u+":"+d+m(f)+";",r))}}else for(var v in o){var y=o[v];null!=y&&(i&&(i+=l),i+=g(v+":"+d+m(y)+";",r))}for(var b in t){var w=t[b];null!=w&&"fallbacks"!==b&&(i&&(i+=l),i+=g(b+":"+d+m(w)+";",r))}return(i||n.allowEmpty)&&e?(i&&(i=""+l+i+l),g(""+e+d+"{"+i,--r)+g("}",r)):i}var v=/([[\].#*$><+~=|^:(),"'`\s])/g,y="undefined"!=typeof CSS&&CSS.escape,b=function(e){return y?y(e):e.replace(v,"\\$1")},w=function(){function e(e,t,n){this.type="style",this.isProcessed=!1;var i=n.sheet,s=n.Renderer;this.key=e,this.options=n,this.style=t,i?this.renderer=i.renderer:s&&(this.renderer=new s)}return e.prototype.prop=function(e,t,n){if(void 0===t)return this.style[e];var i=!!n&&n.force;if(!i&&this.style[e]===t)return this;var s=t;n&&!1===n.process||(s=this.options.jss.plugins.onChangeValue(t,e,this));var r=null==s||!1===s,o=e in this.style;if(r&&!o&&!i)return this;var a=r&&o;if(a?delete this.style[e]:this.style[e]=s,this.renderable&&this.renderer)return a?this.renderer.removeProperty(this.renderable,e):this.renderer.setProperty(this.renderable,e,s),this;var l=this.options.sheet;return l&&l.attached,this},e}(),S=function(e){function t(t,n,i){var s;s=e.call(this,t,n,i)||this;var r=i.selector,o=i.scoped,l=i.sheet,d=i.generateId;return r?s.selectorText=r:!1!==o&&(s.id=d((0,a.A)((0,a.A)(s)),l),s.selectorText="."+b(s.id)),s}(0,o.A)(t,e);var n=t.prototype;return n.applyTo=function(e){var t=this.renderer;if(t){var n=this.toJSON();for(var i in n)t.setProperty(e,i,n[i])}return this},n.toJSON=function(){var e={};for(var t in this.style){var n=this.style[t];"object"!=typeof n?e[t]=n:Array.isArray(n)&&(e[t]=m(n))}return e},n.toString=function(e){var t=this.options.sheet,n=t&&t.options.link?(0,i.A)({},e,{allowEmpty:!0}):e;return f(this.selectorText,this.style,n)},(0,r.A)(t,[{key:"selector",set:function(e){if(e!==this.selectorText){this.selectorText=e;var t=this.renderer,n=this.renderable;n&&t&&(t.setSelector(n,e)||t.replaceRule(n,this))}},get:function(){return this.selectorText}}]),t}(w),C={onCreateRule:function(e,t,n){return"@"===e[0]||n.parent&&"keyframes"===n.parent.type?null:new S(e,t,n)}},E={indent:1,children:!0},T=/@([\w-]+)/,x=function(){function e(e,t,n){this.type="conditional",this.isProcessed=!1,this.key=e;var s=e.match(T);for(var r in this.at=s?s[1]:"unknown",this.query=n.name||"@"+this.at,this.options=n,this.rules=new K((0,i.A)({},n,{parent:this})),t)this.rules.add(r,t[r]);this.rules.process()}var t=e.prototype;return t.getRule=function(e){return this.rules.get(e)},t.indexOf=function(e){return this.rules.indexOf(e)},t.addRule=function(e,t,n){var i=this.rules.add(e,t,n);return i?(this.options.jss.plugins.onProcessRule(i),i):null},t.replaceRule=function(e,t,n){var i=this.rules.replace(e,t,n);return i&&this.options.jss.plugins.onProcessRule(i),i},t.toString=function(e){void 0===e&&(e=E);var t=p(e).linebreak;if(null==e.indent&&(e.indent=E.indent),null==e.children&&(e.children=E.children),!1===e.children)return this.query+" {}";var n=this.rules.toString(e);return n?this.query+" {"+t+n+t+"}":""},e}(),I=/@container|@media|@supports\s+/,M={onCreateRule:function(e,t,n){return I.test(e)?new x(e,t,n):null}},k={indent:1,children:!0},L=/@keyframes\s+([\w-]+)/,R=function(){function e(e,t,n){this.type="keyframes",this.at="@keyframes",this.isProcessed=!1;var s=e.match(L);s&&s[1]?this.name=s[1]:this.name="noname",this.key=this.type+"-"+this.name,this.options=n;var r=n.scoped,o=n.sheet,a=n.generateId;for(var l in this.id=!1===r?this.name:b(a(this,o)),this.rules=new K((0,i.A)({},n,{parent:this})),t)this.rules.add(l,t[l],(0,i.A)({},n,{parent:this}));this.rules.process()}return e.prototype.toString=function(e){void 0===e&&(e=k);var t=p(e).linebreak;if(null==e.indent&&(e.indent=k.indent),null==e.children&&(e.children=k.children),!1===e.children)return this.at+" "+this.id+" {}";var n=this.rules.toString(e);return n&&(n=""+t+n+t),this.at+" "+this.id+" {"+n+"}"},e}(),P=/@keyframes\s+/,O=/\$([\w-]+)/g,A=function(e,t){return"string"==typeof e?e.replace(O,function(e,n){return n in t?t[n]:e}):e},F=function(e,t,n){var i=e[t],s=A(i,n);s!==i&&(e[t]=s)},N={onCreateRule:function(e,t,n){return"string"==typeof e&&P.test(e)?new R(e,t,n):null},onProcessStyle:function(e,t,n){return"style"===t.type&&n?("animation-name"in e&&F(e,"animation-name",n.keyframes),"animation"in e&&F(e,"animation",n.keyframes),e):e},onChangeValue:function(e,t,n){var i=n.options.sheet;if(!i)return e;switch(t){case"animation":case"animation-name":return A(e,i.keyframes);default:return e}}},_=function(e){function t(){return e.apply(this,arguments)||this}return(0,o.A)(t,e),t.prototype.toString=function(e){var t=this.options.sheet,n=t&&t.options.link?(0,i.A)({},e,{allowEmpty:!0}):e;return f(this.key,this.style,n)},t}(w),D={onCreateRule:function(e,t,n){return n.parent&&"keyframes"===n.parent.type?new _(e,t,n):null}},V=function(){function e(e,t,n){this.type="font-face",this.at="@font-face",this.isProcessed=!1,this.key=e,this.style=t,this.options=n}return e.prototype.toString=function(e){var t=p(e).linebreak;if(Array.isArray(this.style)){for(var n="",i=0;i<this.style.length;i++)n+=f(this.at,this.style[i]),this.style[i+1]&&(n+=t);return n}return f(this.at,this.style,e)},e}(),B=/@font-face/,U={onCreateRule:function(e,t,n){return B.test(e)?new V(e,t,n):null}},H=function(){function e(e,t,n){this.type="viewport",this.at="@viewport",this.isProcessed=!1,this.key=e,this.style=t,this.options=n}return e.prototype.toString=function(e){return f(this.key,this.style,e)},e}(),W={onCreateRule:function(e,t,n){return"@viewport"===e||"@-ms-viewport"===e?new H(e,t,n):null}},z=function(){function e(e,t,n){this.type="simple",this.isProcessed=!1,this.key=e,this.value=t,this.options=n}return e.prototype.toString=function(e){if(Array.isArray(this.value)){for(var t="",n=0;n<this.value.length;n++)t+=this.key+" "+this.value[n]+";",this.value[n+1]&&(t+="\n");return t}return this.key+" "+this.value+";"},e}(),j={"@charset":!0,"@import":!0,"@namespace":!0},$={onCreateRule:function(e,t,n){return e in j?new z(e,t,n):null}},Q=[C,M,N,D,U,W,$],q={process:!0},G={force:!0,process:!0},K=function(){function e(e){this.map={},this.raw={},this.index=[],this.counter=0,this.options=e,this.classes=e.classes,this.keyframes=e.keyframes}var t=e.prototype;return t.add=function(e,t,n){var s=this.options,r=s.parent,o=s.sheet,a=s.jss,l=s.Renderer,d=s.generateId,c=s.scoped,u=(0,i.A)({classes:this.classes,parent:r,sheet:o,jss:a,Renderer:l,generateId:d,scoped:c,name:e,keyframes:this.keyframes,selector:void 0},n),m=e;e in this.raw&&(m=e+"-d"+this.counter++),this.raw[m]=t,m in this.classes&&(u.selector="."+b(this.classes[m]));var p=h(m,t,u);if(!p)return null;this.register(p);var g=void 0===u.index?this.index.length:u.index;return this.index.splice(g,0,p),p},t.replace=function(e,t,n){var s=this.get(e),r=this.index.indexOf(s);s&&this.remove(s);var o=n;return-1!==r&&(o=(0,i.A)({},n,{index:r})),this.add(e,t,o)},t.get=function(e){return this.map[e]},t.remove=function(e){this.unregister(e),delete this.raw[e.key],this.index.splice(this.index.indexOf(e),1)},t.indexOf=function(e){return this.index.indexOf(e)},t.process=function(){var e=this.options.jss.plugins;this.index.slice(0).forEach(e.onProcessRule,e)},t.register=function(e){this.map[e.key]=e,e instanceof S?(this.map[e.selector]=e,e.id&&(this.classes[e.key]=e.id)):e instanceof R&&this.keyframes&&(this.keyframes[e.name]=e.id)},t.unregister=function(e){delete this.map[e.key],e instanceof S?(delete this.map[e.selector],delete this.classes[e.key]):e instanceof R&&delete this.keyframes[e.name]},t.update=function(){var e,t,n;if("string"==typeof(arguments.length<=0?void 0:arguments[0])?(e=arguments.length<=0?void 0:arguments[0],t=arguments.length<=1?void 0:arguments[1],n=arguments.length<=2?void 0:arguments[2]):(t=arguments.length<=0?void 0:arguments[0],n=arguments.length<=1?void 0:arguments[1],e=null),e)this.updateOne(this.get(e),t,n);else for(var i=0;i<this.index.length;i++)this.updateOne(this.index[i],t,n)},t.updateOne=function(t,n,i){void 0===i&&(i=q);var s=this.options,r=s.jss.plugins,o=s.sheet;if(t.rules instanceof e)t.rules.update(n,i);else{var a=t.style;if(r.onUpdate(n,t,o,i),i.process&&a&&a!==t.style){for(var l in r.onProcessStyle(t.style,t,o),t.style){var d=t.style[l];d!==a[l]&&t.prop(l,d,G)}for(var c in a){var h=t.style[c],u=a[c];null==h&&h!==u&&t.prop(c,null,G)}}}},t.toString=function(e){for(var t="",n=this.options.sheet,i=!!n&&n.options.link,s=p(e).linebreak,r=0;r<this.index.length;r++){var o=this.index[r].toString(e);(o||i)&&(t&&(t+=s),t+=o)}return t},e}(),J=function(){function e(e,t){for(var n in this.attached=!1,this.deployed=!1,this.classes={},this.keyframes={},this.options=(0,i.A)({},t,{sheet:this,parent:this,classes:this.classes,keyframes:this.keyframes}),t.Renderer&&(this.renderer=new t.Renderer(this)),this.rules=new K(this.options),e)this.rules.add(n,e[n]);this.rules.process()}var t=e.prototype;return t.attach=function(){return this.attached||(this.renderer&&this.renderer.attach(),this.attached=!0,this.deployed||this.deploy()),this},t.detach=function(){return this.attached?(this.renderer&&this.renderer.detach(),this.attached=!1,this):this},t.addRule=function(e,t,n){var i=this.queue;this.attached&&!i&&(this.queue=[]);var s=this.rules.add(e,t,n);return s?(this.options.jss.plugins.onProcessRule(s),this.attached?this.deployed?(i?i.push(s):(this.insertRule(s),this.queue&&(this.queue.forEach(this.insertRule,this),this.queue=void 0)),s):s:(this.deployed=!1,s)):null},t.replaceRule=function(e,t,n){var i=this.rules.get(e);if(!i)return this.addRule(e,t,n);var s=this.rules.replace(e,t,n);return s&&this.options.jss.plugins.onProcessRule(s),this.attached?this.deployed?(this.renderer&&(s?i.renderable&&this.renderer.replaceRule(i.renderable,s):this.renderer.deleteRule(i)),s):s:(this.deployed=!1,s)},t.insertRule=function(e){this.renderer&&this.renderer.insertRule(e)},t.addRules=function(e,t){var n=[];for(var i in e){var s=this.addRule(i,e[i],t);s&&n.push(s)}return n},t.getRule=function(e){return this.rules.get(e)},t.deleteRule=function(e){var t="object"==typeof e?e:this.rules.get(e);return!(!t||this.attached&&!t.renderable)&&(this.rules.remove(t),!(this.attached&&t.renderable&&this.renderer)||this.renderer.deleteRule(t.renderable))},t.indexOf=function(e){return this.rules.indexOf(e)},t.deploy=function(){return this.renderer&&this.renderer.deploy(),this.deployed=!0,this},t.update=function(){var e;return(e=this.rules).update.apply(e,arguments),this},t.updateOne=function(e,t,n){return this.rules.updateOne(e,t,n),this},t.toString=function(e){return this.rules.toString(e)},e}(),X=function(){function e(){this.plugins={internal:[],external:[]},this.registry={}}var t=e.prototype;return t.onCreateRule=function(e,t,n){for(var i=0;i<this.registry.onCreateRule.length;i++){var s=this.registry.onCreateRule[i](e,t,n);if(s)return s}return null},t.onProcessRule=function(e){if(!e.isProcessed){for(var t=e.options.sheet,n=0;n<this.registry.onProcessRule.length;n++)this.registry.onProcessRule[n](e,t);e.style&&this.onProcessStyle(e.style,e,t),e.isProcessed=!0}},t.onProcessStyle=function(e,t,n){for(var i=0;i<this.registry.onProcessStyle.length;i++)t.style=this.registry.onProcessStyle[i](t.style,t,n)},t.onProcessSheet=function(e){for(var t=0;t<this.registry.onProcessSheet.length;t++)this.registry.onProcessSheet[t](e)},t.onUpdate=function(e,t,n,i){for(var s=0;s<this.registry.onUpdate.length;s++)this.registry.onUpdate[s](e,t,n,i)},t.onChangeValue=function(e,t,n){for(var i=e,s=0;s<this.registry.onChangeValue.length;s++)i=this.registry.onChangeValue[s](i,t,n);return i},t.use=function(e,t){void 0===t&&(t={queue:"external"});var n=this.plugins[t.queue];-1===n.indexOf(e)&&(n.push(e),this.registry=[].concat(this.plugins.external,this.plugins.internal).reduce(function(e,t){for(var n in t)n in e&&e[n].push(t[n]);return e},{onCreateRule:[],onProcessRule:[],onProcessStyle:[],onProcessSheet:[],onChangeValue:[],onUpdate:[]}))},e}(),Y=function(){function e(){this.registry=[]}var t=e.prototype;return t.add=function(e){var t=this.registry,n=e.options.index;if(-1===t.indexOf(e))if(0===t.length||n>=this.index)t.push(e);else for(var i=0;i<t.length;i++)if(t[i].options.index>n)return void t.splice(i,0,e)},t.reset=function(){this.registry=[]},t.remove=function(e){var t=this.registry.indexOf(e);this.registry.splice(t,1)},t.toString=function(e){for(var t=void 0===e?{}:e,n=t.attached,i=(0,l.A)(t,["attached"]),s=p(i).linebreak,r="",o=0;o<this.registry.length;o++){var a=this.registry[o];null!=n&&a.attached!==n||(r&&(r+=s),r+=a.toString(i))}return r},(0,r.A)(e,[{key:"index",get:function(){return 0===this.registry.length?0:this.registry[this.registry.length-1].options.index}}]),e}(),Z=new Y,ee="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window&&window.Math===Math?window:"undefined"!=typeof self&&self.Math===Math?self:Function("return this")(),te="2f1acc6c3a606b082e5eef5e54414ffb";null==ee[te]&&(ee[te]=0);var ne=ee[te]++,ie=function(e){void 0===e&&(e={});var t=0;return function(n,i){t+=1;var s="",r="";return i&&(i.options.classNamePrefix&&(r=i.options.classNamePrefix),null!=i.options.jss.id&&(s=String(i.options.jss.id))),e.minify?""+(r||"c")+ne+s+t:r+n.key+"-"+ne+(s?"-"+s:"")+"-"+t}},se=function(e){var t;return function(){return t||(t=e()),t}},re=function(e,t){try{return e.attributeStyleMap?e.attributeStyleMap.get(t):e.style.getPropertyValue(t)}catch(e){return""}},oe=function(e,t,n){try{var i=n;if(Array.isArray(n)&&(i=m(n)),e.attributeStyleMap)e.attributeStyleMap.set(t,i);else{var s=i?i.indexOf("!important"):-1,r=s>-1?i.substr(0,s-1):i;e.style.setProperty(t,r,s>-1?"important":"")}}catch(e){return!1}return!0},ae=function(e,t){try{e.attributeStyleMap?e.attributeStyleMap.delete(t):e.style.removeProperty(t)}catch(e){}},le=function(e,t){return e.selectorText=t,e.selectorText===t},de=se(function(){return document.querySelector("head")});var ce=se(function(){var e=document.querySelector('meta[property="csp-nonce"]');return e?e.getAttribute("content"):null}),he=function(e,t,n){try{"insertRule"in e?e.insertRule(t,n):"appendRule"in e&&e.appendRule(t)}catch(e){return!1}return e.cssRules[n]},ue=function(e,t){var n=e.cssRules.length;return void 0===t||t>n?n:t},me=function(){function e(e){this.getPropertyValue=re,this.setProperty=oe,this.removeProperty=ae,this.setSelector=le,this.hasInsertedRules=!1,this.cssRules=[],e&&Z.add(e),this.sheet=e;var t,n=this.sheet?this.sheet.options:{},i=n.media,s=n.meta,r=n.element;this.element=r||((t=document.createElement("style")).textContent="\n",t),this.element.setAttribute("data-jss",""),i&&this.element.setAttribute("media",i),s&&this.element.setAttribute("data-meta",s);var o=ce();o&&this.element.setAttribute("nonce",o)}var t=e.prototype;return t.attach=function(){if(!this.element.parentNode&&this.sheet){!function(e,t){var n=t.insertionPoint,i=function(e){var t=Z.registry;if(t.length>0){var n=function(e,t){for(var n=0;n<e.length;n++){var i=e[n];if(i.attached&&i.options.index>t.index&&i.options.insertionPoint===t.insertionPoint)return i}return null}(t,e);if(n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element};if(n=function(e,t){for(var n=e.length-1;n>=0;n--){var i=e[n];if(i.attached&&i.options.insertionPoint===t.insertionPoint)return i}return null}(t,e),n&&n.renderer)return{parent:n.renderer.element.parentNode,node:n.renderer.element.nextSibling}}var i=e.insertionPoint;if(i&&"string"==typeof i){var s=function(e){for(var t=de(),n=0;n<t.childNodes.length;n++){var i=t.childNodes[n];if(8===i.nodeType&&i.nodeValue.trim()===e)return i}return null}(i);if(s)return{parent:s.parentNode,node:s.nextSibling}}return!1}(t);if(!1!==i&&i.parent)i.parent.insertBefore(e,i.node);else if(n&&"number"==typeof n.nodeType){var s=n,r=s.parentNode;r&&r.insertBefore(e,s.nextSibling)}else de().appendChild(e)}(this.element,this.sheet.options);var e=Boolean(this.sheet&&this.sheet.deployed);this.hasInsertedRules&&e&&(this.hasInsertedRules=!1,this.deploy())}},t.detach=function(){if(this.sheet){var e=this.element.parentNode;e&&e.removeChild(this.element),this.sheet.options.link&&(this.cssRules=[],this.element.textContent="\n")}},t.deploy=function(){var e=this.sheet;e&&(e.options.link?this.insertRules(e.rules):this.element.textContent="\n"+e.toString()+"\n")},t.insertRules=function(e,t){for(var n=0;n<e.index.length;n++)this.insertRule(e.index[n],n,t)},t.insertRule=function(e,t,n){if(void 0===n&&(n=this.element.sheet),e.rules){var i=e,s=n;if("conditional"===e.type||"keyframes"===e.type){var r=ue(n,t);if(!1===(s=he(n,i.toString({children:!1}),r)))return!1;this.refCssRule(e,r,s)}return this.insertRules(i.rules,s),s}var o=e.toString();if(!o)return!1;var a=ue(n,t),l=he(n,o,a);return!1!==l&&(this.hasInsertedRules=!0,this.refCssRule(e,a,l),l)},t.refCssRule=function(e,t,n){e.renderable=n,e.options.parent instanceof J&&this.cssRules.splice(t,0,n)},t.deleteRule=function(e){var t=this.element.sheet,n=this.indexOf(e);return-1!==n&&(t.deleteRule(n),this.cssRules.splice(n,1),!0)},t.indexOf=function(e){return this.cssRules.indexOf(e)},t.replaceRule=function(e,t){var n=this.indexOf(e);return-1!==n&&(this.element.sheet.deleteRule(n),this.cssRules.splice(n,1),this.insertRule(t,n))},t.getRules=function(){return this.element.sheet.cssRules},e}(),pe=0,ge=function(){function e(e){this.id=pe++,this.version="10.10.0",this.plugins=new X,this.options={id:{minify:!1},createGenerateId:ie,Renderer:s.A?me:null,plugins:[]},this.generateId=ie({minify:!1});for(var t=0;t<Q.length;t++)this.plugins.use(Q[t],{queue:"internal"});this.setup(e)}var t=e.prototype;return t.setup=function(e){return void 0===e&&(e={}),e.createGenerateId&&(this.options.createGenerateId=e.createGenerateId),e.id&&(this.options.id=(0,i.A)({},this.options.id,e.id)),(e.createGenerateId||e.id)&&(this.generateId=this.options.createGenerateId(this.options.id)),null!=e.insertionPoint&&(this.options.insertionPoint=e.insertionPoint),"Renderer"in e&&(this.options.Renderer=e.Renderer),e.plugins&&this.use.apply(this,e.plugins),this},t.createStyleSheet=function(e,t){void 0===t&&(t={});var n=t.index;"number"!=typeof n&&(n=0===Z.index?0:Z.index+1);var s=new J(e,(0,i.A)({},t,{jss:this,generateId:t.generateId||this.generateId,insertionPoint:this.options.insertionPoint,Renderer:this.options.Renderer,index:n}));return this.plugins.onProcessSheet(s),s},t.removeStyleSheet=function(e){return e.detach(),Z.remove(e),this},t.createRule=function(e,t,n){if(void 0===t&&(t={}),void 0===n&&(n={}),"object"==typeof e)return this.createRule(void 0,e,t);var s=(0,i.A)({},n,{name:e,jss:this,Renderer:this.options.Renderer});s.generateId||(s.generateId=this.generateId),s.classes||(s.classes={}),s.keyframes||(s.keyframes={});var r=h(e,t,s);return r&&this.plugins.onProcessRule(r),r},t.use=function(){for(var e=this,t=arguments.length,n=new Array(t),i=0;i<t;i++)n[i]=arguments[i];return n.forEach(function(t){e.plugins.use(t)}),this},e}();"object"==typeof CSS&&null!=CSS&&CSS;const fe=new ge(undefined)},7963(e){const t={generateIdentifier:function(){return Math.random().toString(36).substring(2,12)}};t.localCName=t.generateIdentifier(),t.splitLines=function(e){return e.trim().split("\n").map(e=>e.trim())},t.splitSections=function(e){return e.split("\nm=").map((e,t)=>(t>0?"m="+e:e).trim()+"\r\n")},t.getDescription=function(e){const n=t.splitSections(e);return n&&n[0]},t.getMediaSections=function(e){const n=t.splitSections(e);return n.shift(),n},t.matchPrefix=function(e,n){return t.splitLines(e).filter(e=>0===e.indexOf(n))},t.parseCandidate=function(e){let t;t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" ");const n={foundation:t[0],component:{1:"rtp",2:"rtcp"}[t[1]]||t[1],protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],address:t[4],port:parseInt(t[5],10),type:t[7]};for(let e=8;e<t.length;e+=2)switch(t[e]){case"raddr":n.relatedAddress=t[e+1];break;case"rport":n.relatedPort=parseInt(t[e+1],10);break;case"tcptype":n.tcpType=t[e+1];break;case"ufrag":n.ufrag=t[e+1],n.usernameFragment=t[e+1];break;default:void 0===n[t[e]]&&(n[t[e]]=t[e+1])}return n},t.writeCandidate=function(e){const t=[];t.push(e.foundation);const n=e.component;"rtp"===n?t.push(1):"rtcp"===n?t.push(2):t.push(n),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.address||e.ip),t.push(e.port);const i=e.type;return t.push("typ"),t.push(i),"host"!==i&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),(e.usernameFragment||e.ufrag)&&(t.push("ufrag"),t.push(e.usernameFragment||e.ufrag)),"candidate:"+t.join(" ")},t.parseIceOptions=function(e){return e.substring(14).split(" ")},t.parseRtpMap=function(e){let t=e.substring(9).split(" ");const n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.channels=3===t.length?parseInt(t[2],10):1,n.numChannels=n.channels,n},t.writeRtpMap=function(e){let t=e.payloadType;void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType);const n=e.channels||e.numChannels||1;return"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==n?"/"+n:"")+"\r\n"},t.parseExtmap=function(e){const t=e.substring(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1],attributes:t.slice(2).join(" ")}},t.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+(e.attributes?" "+e.attributes:"")+"\r\n"},t.parseFmtp=function(e){const t={};let n;const i=e.substring(e.indexOf(" ")+1).split(";");for(let e=0;e<i.length;e++)n=i[e].trim().split("="),t[n[0].trim()]=n[1];return t},t.writeFmtp=function(e){let t="",n=e.payloadType;if(void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){const i=[];Object.keys(e.parameters).forEach(t=>{void 0!==e.parameters[t]?i.push(t+"="+e.parameters[t]):i.push(t)}),t+="a=fmtp:"+n+" "+i.join(";")+"\r\n"}return t},t.parseRtcpFb=function(e){const t=e.substring(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},t.writeRtcpFb=function(e){let t="",n=e.payloadType;return void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach(e=>{t+="a=rtcp-fb:"+n+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"}),t},t.parseSsrcMedia=function(e){const t=e.indexOf(" "),n={ssrc:parseInt(e.substring(7,t),10)},i=e.indexOf(":",t);return i>-1?(n.attribute=e.substring(t+1,i),n.value=e.substring(i+1)):n.attribute=e.substring(t+1),n},t.parseSsrcGroup=function(e){const t=e.substring(13).split(" ");return{semantics:t.shift(),ssrcs:t.map(e=>parseInt(e,10))}},t.getMid=function(e){const n=t.matchPrefix(e,"a=mid:")[0];if(n)return n.substring(6)},t.parseFingerprint=function(e){const t=e.substring(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1].toUpperCase()}},t.getDtlsParameters=function(e,n){return{role:"auto",fingerprints:t.matchPrefix(e+n,"a=fingerprint:").map(t.parseFingerprint)}},t.writeDtlsParameters=function(e,t){let n="a=setup:"+t+"\r\n";return e.fingerprints.forEach(e=>{n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"}),n},t.parseCryptoLine=function(e){const t=e.substring(9).split(" ");return{tag:parseInt(t[0],10),cryptoSuite:t[1],keyParams:t[2],sessionParams:t.slice(3)}},t.writeCryptoLine=function(e){return"a=crypto:"+e.tag+" "+e.cryptoSuite+" "+("object"==typeof e.keyParams?t.writeCryptoKeyParams(e.keyParams):e.keyParams)+(e.sessionParams?" "+e.sessionParams.join(" "):"")+"\r\n"},t.parseCryptoKeyParams=function(e){if(0!==e.indexOf("inline:"))return null;const t=e.substring(7).split("|");return{keyMethod:"inline",keySalt:t[0],lifeTime:t[1],mkiValue:t[2]?t[2].split(":")[0]:void 0,mkiLength:t[2]?t[2].split(":")[1]:void 0}},t.writeCryptoKeyParams=function(e){return e.keyMethod+":"+e.keySalt+(e.lifeTime?"|"+e.lifeTime:"")+(e.mkiValue&&e.mkiLength?"|"+e.mkiValue+":"+e.mkiLength:"")},t.getCryptoParameters=function(e,n){return t.matchPrefix(e+n,"a=crypto:").map(t.parseCryptoLine)},t.getIceParameters=function(e,n){const i=t.matchPrefix(e+n,"a=ice-ufrag:")[0],s=t.matchPrefix(e+n,"a=ice-pwd:")[0];return i&&s?{usernameFragment:i.substring(12),password:s.substring(10)}:null},t.writeIceParameters=function(e){let t="a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n";return e.iceLite&&(t+="a=ice-lite\r\n"),t},t.parseRtpParameters=function(e){const n={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},i=t.splitLines(e)[0].split(" ");n.profile=i[2];for(let s=3;s<i.length;s++){const r=i[s],o=t.matchPrefix(e,"a=rtpmap:"+r+" ")[0];if(o){const i=t.parseRtpMap(o),s=t.matchPrefix(e,"a=fmtp:"+r+" ");switch(i.parameters=s.length?t.parseFmtp(s[0]):{},i.rtcpFeedback=t.matchPrefix(e,"a=rtcp-fb:"+r+" ").map(t.parseRtcpFb),n.codecs.push(i),i.name.toUpperCase()){case"RED":case"ULPFEC":n.fecMechanisms.push(i.name.toUpperCase())}}}t.matchPrefix(e,"a=extmap:").forEach(e=>{n.headerExtensions.push(t.parseExtmap(e))});const s=t.matchPrefix(e,"a=rtcp-fb:* ").map(t.parseRtcpFb);return n.codecs.forEach(e=>{s.forEach(t=>{e.rtcpFeedback.find(e=>e.type===t.type&&e.parameter===t.parameter)||e.rtcpFeedback.push(t)})}),n},t.writeRtpDescription=function(e,n){let i="";i+="m="+e+" ",i+=n.codecs.length>0?"9":"0",i+=" "+(n.profile||"UDP/TLS/RTP/SAVPF")+" ",i+=n.codecs.map(e=>void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType).join(" ")+"\r\n",i+="c=IN IP4 0.0.0.0\r\n",i+="a=rtcp:9 IN IP4 0.0.0.0\r\n",n.codecs.forEach(e=>{i+=t.writeRtpMap(e),i+=t.writeFmtp(e),i+=t.writeRtcpFb(e)});let s=0;return n.codecs.forEach(e=>{e.maxptime>s&&(s=e.maxptime)}),s>0&&(i+="a=maxptime:"+s+"\r\n"),n.headerExtensions&&n.headerExtensions.forEach(e=>{i+=t.writeExtmap(e)}),i},t.parseRtpEncodingParameters=function(e){const n=[],i=t.parseRtpParameters(e),s=-1!==i.fecMechanisms.indexOf("RED"),r=-1!==i.fecMechanisms.indexOf("ULPFEC"),o=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute),a=o.length>0&&o[0].ssrc;let l;const d=t.matchPrefix(e,"a=ssrc-group:FID").map(e=>e.substring(17).split(" ").map(e=>parseInt(e,10)));d.length>0&&d[0].length>1&&d[0][0]===a&&(l=d[0][1]),i.codecs.forEach(e=>{if("RTX"===e.name.toUpperCase()&&e.parameters.apt){let t={ssrc:a,codecPayloadType:parseInt(e.parameters.apt,10)};a&&l&&(t.rtx={ssrc:l}),n.push(t),s&&(t=JSON.parse(JSON.stringify(t)),t.fec={ssrc:a,mechanism:r?"red+ulpfec":"red"},n.push(t))}}),0===n.length&&a&&n.push({ssrc:a});let c=t.matchPrefix(e,"b=");return c.length&&(c=0===c[0].indexOf("b=TIAS:")?parseInt(c[0].substring(7),10):0===c[0].indexOf("b=AS:")?1e3*parseInt(c[0].substring(5),10)*.95-16e3:void 0,n.forEach(e=>{e.maxBitrate=c})),n},t.parseRtcpParameters=function(e){const n={},i=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"cname"===e.attribute)[0];i&&(n.cname=i.value,n.ssrc=i.ssrc);const s=t.matchPrefix(e,"a=rtcp-rsize");n.reducedSize=s.length>0,n.compound=0===s.length;const r=t.matchPrefix(e,"a=rtcp-mux");return n.mux=r.length>0,n},t.writeRtcpParameters=function(e){let t="";return e.reducedSize&&(t+="a=rtcp-rsize\r\n"),e.mux&&(t+="a=rtcp-mux\r\n"),void 0!==e.ssrc&&e.cname&&(t+="a=ssrc:"+e.ssrc+" cname:"+e.cname+"\r\n"),t},t.parseMsid=function(e){let n;const i=t.matchPrefix(e,"a=msid:");if(1===i.length)return n=i[0].substring(7).split(" "),{stream:n[0],track:n[1]};const s=t.matchPrefix(e,"a=ssrc:").map(e=>t.parseSsrcMedia(e)).filter(e=>"msid"===e.attribute);return s.length>0?(n=s[0].value.split(" "),{stream:n[0],track:n[1]}):void 0},t.parseSctpDescription=function(e){const n=t.parseMLine(e),i=t.matchPrefix(e,"a=max-message-size:");let s;i.length>0&&(s=parseInt(i[0].substring(19),10)),isNaN(s)&&(s=65536);const r=t.matchPrefix(e,"a=sctp-port:");if(r.length>0)return{port:parseInt(r[0].substring(12),10),protocol:n.fmt,maxMessageSize:s};const o=t.matchPrefix(e,"a=sctpmap:");if(o.length>0){const e=o[0].substring(10).split(" ");return{port:parseInt(e[0],10),protocol:e[1],maxMessageSize:s}}},t.writeSctpDescription=function(e,t){let n=[];return n="DTLS/SCTP"!==e.protocol?["m="+e.kind+" 9 "+e.protocol+" "+t.protocol+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctp-port:"+t.port+"\r\n"]:["m="+e.kind+" 9 "+e.protocol+" "+t.port+"\r\n","c=IN IP4 0.0.0.0\r\n","a=sctpmap:"+t.port+" "+t.protocol+" 65535\r\n"],void 0!==t.maxMessageSize&&n.push("a=max-message-size:"+t.maxMessageSize+"\r\n"),n.join("")},t.generateSessionId=function(){return Math.random().toString().substr(2,22)},t.writeSessionBoilerplate=function(e,n,i){let s;const r=void 0!==n?n:2;return s=e||t.generateSessionId(),"v=0\r\no="+(i||"thisisadapterortc")+" "+s+" "+r+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},t.getDirection=function(e,n){const i=t.splitLines(e);for(let e=0;e<i.length;e++)switch(i[e]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return i[e].substring(2)}return n?t.getDirection(n):"sendrecv"},t.getKind=function(e){return t.splitLines(e)[0].split(" ")[0].substring(2)},t.isRejected=function(e){return"0"===e.split(" ",2)[1]},t.parseMLine=function(e){const n=t.splitLines(e)[0].substring(2).split(" ");return{kind:n[0],port:parseInt(n[1],10),protocol:n[2],fmt:n.slice(3).join(" ")}},t.parseOLine=function(e){const n=t.matchPrefix(e,"o=")[0].substring(2).split(" ");return{username:n[0],sessionId:n[1],sessionVersion:parseInt(n[2],10),netType:n[3],addressType:n[4],address:n[5]}},t.isValidSDP=function(e){if("string"!=typeof e||0===e.length)return!1;const n=t.splitLines(e);for(let e=0;e<n.length;e++)if(n[e].length<2||"="!==n[e].charAt(1))return!1;return!0},e.exports=t},8097(e,t,n){n.d(t,{H:()=>s});var i=n(9307);function s(){const e=i.z.prototype.setWebRtcPlayerController;i.z.prototype.setWebRtcPlayerController=function(t){const n=t.signallingUrlBuilder;t.signallingUrlBuilder=()=>function(e,t){const n=new URL(decodeURIComponent(e())),i=n.searchParams;let s=t;return s&&(s.startsWith("?")&&(s=s.substring(1)),s.split("&").forEach(e=>{if(!e)return;const t=e.indexOf("=");if(-1===t)return void i.set(e,"");const n=e.slice(0,t);if(!n)return;const s=e.slice(t+1);i.set(n,s)})),n.toString()}(n,this.config.urlFlags),e.call(this,t)}}},2886(e,t,n){n.d(t,{g:()=>h});var i=n(1635),s=n(948),r=n(223),o=n(946),a=n(9644),l=n(419),d=n(6460);function c(e,t){try{return JSON.stringify(e)===JSON.stringify(t)}catch(e){return!1}}s.Vy.InitLogging(2,!1);class h extends r.TS{static PickIdsOfUrl(){const{pathname:e}=new URL(window.location.href),t=e.split("/");return{projectId:t.find(e=>{return"string"==typeof(t=e)&&/^[0-9a-f]{8}-[0-9a-f]{4}-4[0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(t);var t}),shareId:t.find(e=>{return"string"==typeof(t=e)&&t.startsWith("share-");var t})}}constructor(e){var t,n,i,s,l,c,u;if(!new URL(window.location.href).search.slice(1).split("&").find(e=>e.startsWith("df-"))&&!(null===(t=e.settings)||void 0===t?void 0:t.shareId)&&!(null===(n=e.settings)||void 0===n?void 0:n.projectId))throw new Error("ShareId or ProjectId must be specified.");const m=Object.assign(Object.assign({},h.DEFAULT_INITIAL_SETTINGS),null!==(i=e.initialSettings)&&void 0!==i?i:{}),p=Object.assign(Object.assign({},h.DEFAULT_SETTINGS),null!==(s=e.settings)&&void 0!==s?s:{}),g=Object.assign(Object.assign({},h.DEFAULT_CUSTOMIZATION),null!==(l=e.customization)&&void 0!==l?l:{});super(Object.assign(Object.assign({},e),{initialSettings:m,settings:p,customization:g})),this.VERSION="1.4.10",this.whiteLabellingChanged=new d.J,this.signallingWlURL="https://signalling-client.arcware.cloud/whiteLabel/";const f=null!==(c=e.envName)&&void 0!==c?c:"ragnarok";if(this.signallingWlURL=`https://signalling-client.${f}.arcware.cloud/whiteLabel/`,this.settings=p,this.customization=g,this.session=new o.N,this._initialSettings=m,this.setFlagEnabled(r.iI.AFKDetection,!0),this.useUrlParams){const e=new URLSearchParams(window.location.search);if(e.has("wl"))if(""!==e.get("wl")){const t=this.useUrlParams?(0,a.a)(e):void 0;t&&(this.settings.whiteLabelling=Object.assign(Object.assign({},null!==(u=this.settings.whiteLabelling)&&void 0!==u?u:{}),t))}else this.settings.fetchRemoteWhiteLabelling=!0;this.settings.infoButton=e.has("i")||e.has("info")}}getWhiteLabelling(e){return(0,i.sH)(this,void 0,void 0,function*(){var t;const n=new URLSearchParams(window.location.search).get("wl");if(n&&""!==n)return void d.J.Emit(this.whiteLabellingChanged,{next:null!==(t=this.settings.whiteLabelling)&&void 0!==t?t:{},changed:!1});const i=`${this.signallingWlURL.replace(/\/+$/,"")}/${encodeURIComponent(e)}`,s=new AbortController,r=setTimeout(()=>s.abort(),1e3);try{const e=yield fetch(i,{method:"GET",signal:s.signal,headers:{Accept:"application/json, text/plain"},credentials:"omit"});if(!e.ok)return;const t=yield e.text();if(!t||""===t.trim())return;let n;try{n=JSON.parse(t)}catch(e){return}const r=(0,l.d)(n);if(!r)return;const o=this.settings.whiteLabelling;return this.settings.whiteLabelling=r,d.J.Emit(this.whiteLabellingChanged,{next:r,changed:!c(o,r)}),r}catch(e){return}finally{clearTimeout(r)}})}get urlFlags(){var e;let t="";if(this.settings.shareId&&(t+=`&sh=${this.settings.shareId}`),this.settings.projectId&&(t+=`&p=${this.settings.projectId}`),"string"==typeof this.settings.session)t+=`&s=${this.settings.session}`;else{const e=this.session.id;e&&(t+=`&s=${e}`,t+="&r=true")}this.settings.bypass&&(t+="&b=true"),this.settings.token&&(t+=`&t=${this.settings.token}`);const n=null!==(e=new URLSearchParams(window.location.search).get("rId"))&&void 0!==e?e:void 0;n&&(t+=`&rId=${n}`);const i=new URL(window.location.href).search.slice(1).split("&").find(e=>e.startsWith("df-"));return i&&(t+=`&${i}`),this.settings.startHeight&&this.settings.startHeight>200&&(t+=`&h=${this.settings.startHeight}`),this.settings.startWidth&&this.settings.startWidth>200&&(t+=`&w=${this.settings.startWidth}`),t}get initialSettings(){return this._initialSettings}modifyInitialSettings(e){this.setFlagEnabled(r.iI.HoveringMouseMode,e)}}h.DEFAULT_INITIAL_SETTINGS={ss:"wss://signalling-client.ragnarok.arcware.cloud",AutoConnect:!1,AutoPlayVideo:!0,HoveringMouse:!0,ForceMonoAudio:!1,FakeMouseWithTouches:!1,StartVideoMuted:!0,SuppressBrowserKeys:!0,UseMic:!0,KeyboardInput:!0,MouseInput:!0,TouchInput:!0,GamepadInput:!0,XRControllerInput:!0,AFKTimeout:600},h.DEFAULT_SETTINGS={fullscreenButton:!0,audioButton:!0,stopButton:!1,infoButton:!1,micButton:!1,settingsButton:!1,connectionStrengthIcon:!1,orientationZoom:{landscape:0,portrait:0},whiteLabelling:{},fetchRemoteWhiteLabelling:void 0},h.DEFAULT_CUSTOMIZATION={buttons_position:"Bottom-Right",buttons_orientation:"Vertical",buttons_reverse:!1}},272(e,t,n){n.d(t,{j:()=>i,o:()=>E});var i,s=n(1635),r=n(948),o=n(223),a=n(9307),l=n(8097),d=n(5149),c=n(5428),h=n(6319),u=n(9568),m=n(6151),p=n(2309),g=n(9866),f=n(8536),v=n(6460),y=n(633),b=n(3263),w=n(7506),S=n(7050),C=n(6155);!function(e){e[e.CONNECTING=0]="CONNECTING",e[e.OPEN=1]="OPEN",e[e.CLOSING=2]="CLOSING",e[e.CLOSED=3]="CLOSED"}(i||(i={}));class E extends a.z{get session(){return this.config.session}get isWsOpen(){var e,t;const n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.transport)||void 0===t?void 0:t.webSocket;return!!n&&n.readyState===WebSocket.OPEN}get websocketState(){var e,t,n;let i=null===(n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.transport)||void 0===t?void 0:t.webSocket)||void 0===n?void 0:n.readyState;return void 0!==i?i:WebSocket.CLOSED}constructor(e,t){var n,i;(0,l.H)(),super(e,t),this.outbox=[],this.videoInitializedSent=!1,this._postInitSideEffectsDone=!1,this.queueHandler=new v.J,this.errorHandler=new v.J,this.loveLetterHandler=new v.J,this.sessionIdHandler=new v.J,this.videoInitializedHandler=new v.J,this.websocketOnCloseHandler=new v.J,this.whiteLabellingChangedHandler=new v.J,this.postInitSideEffectsHandler=new v.J,this.micToggleHandler=new v.J,this.analyticsEventHandler=new v.J,this.fileTransferHandler=new v.J,this.applicationResponseHandler=new v.J,this._rVFCsupported="requestVideoFrameCallback"in HTMLVideoElement.prototype;const r=null===(n=this.webRtcController)||void 0===n?void 0:n.transport;null===(i=null==r?void 0:r.addEventListener)||void 0===i||i.call(r,"open",()=>{this.flushOutbox()}),this.config=e,this.config.whiteLabellingChanged.add(e=>{try{v.J.Emit(this.whiteLabellingChangedHandler,e),this.config.settings.fetchRemoteWhiteLabelling=!1}catch(e){}}),this.config.settings.fetchRemoteWhiteLabelling&&(()=>{(0,s.sH)(this,void 0,void 0,function*(){var e;try{const e=this.config.settings.shareId;e&&(yield this.config.getWhiteLabelling(e))}catch(e){}finally{v.J.Emit(this.whiteLabellingChangedHandler,{next:null!==(e=this.config.settings.whiteLabelling)&&void 0!==e?e:{},changed:!0})}})})(),this.diagnosticsCollector=new S._Z({enableBandwidthProbe:!1}),this.bindTransportEvents(),this.startTransportWatcher(),this.attachFirstRenderedFrameOnce(),this.watchVideoElementReplacement(),this.handleResolutionChange=this.handleResolutionChange.bind(this),this.addMessageHandler("letter",c.Q,this.onLoveLetter),this.addMessageHandler("streamInfo",u.U,this.onStreamInfo),this.addMessageHandler("sessionId",h.B,this.onSessionId),this.addMessageHandler("error",d.x,this.onError),this.addMessageHandler("ping",m.M,this.onPing),this.addMessageHandler("queue",p.D,this.onQueue),this.addMessageHandler("version",g.o,this.onVersion),this.addMessageHandler("render",f.w,this.onRender),this.addResponseEventListener("ue-response",e=>this.handleUEResponse(e));const o=(0,b.A)(()=>{this.handleResolutionChange()},0);this.addEventListener("videoInitialized",this.onVideoInitialized.bind(this)),this.addEventListener("statsReceived",e=>{this.sendStats(e.data.aggregatedStats)}),window.addEventListener("resize",o),this.webRtcController.streamMessageController.registerMessageHandler(0,"TextboxEntry",e=>{try{this.webRtcController.sendMessageController.sendMessageToStreamer("TextboxEntry",e)}catch(e){console.error("Error: ToStreamer.TextboxEntry",e)}}),this.config.settings.errorHandler&&this.errorHandler.add(this.config.settings.errorHandler),this.config.settings.queueHandler&&this.queueHandler.add(this.config.settings.queueHandler),this.config.settings.sessionIdHandler&&this.sessionIdHandler.add(this.config.settings.sessionIdHandler),this.config.settings.loveLetterHandler&&this.loveLetterHandler.add(this.config.settings.loveLetterHandler),this.handleMouseLock()}bindTransportEvents(){var e,t,n,i;const s=null===(e=this.webRtcController)||void 0===e?void 0:e.transport;if(!s||s===this._boundTransport)return;this._boundTransport&&this._onWsOpen&&(null===(n=(t=this._boundTransport).removeEventListener)||void 0===n||n.call(t,"open",this._onWsOpen)),this._onWsOpen||(this._onWsOpen=()=>{this.flushOutbox(),this.attachFirstRenderedFrameOnce(),setTimeout(()=>{var e,t,n;if(!this.videoInitializedSent){const i=null===(n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoElement)||void 0===n?void 0:n.call(t);i&&i.videoWidth>0&&i.videoHeight>0&&i.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA&&(this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce())}},1200)}),null===(i=s.addEventListener)||void 0===i||i.call(s,"open",this._onWsOpen);const r=s.webSocket;r&&!this._onWsClose&&(this._onWsClose=e=>{v.J.Emit(this.websocketOnCloseHandler,e)},r.addEventListener("close",this._onWsClose)),this._boundTransport=s}startTransportWatcher(){this._transportWatchTimer||(this._transportWatchTimer=setInterval(()=>{var e;const t=null===(e=this.webRtcController)||void 0===e?void 0:e.transport;t&&t!==this._boundTransport&&this.bindTransportEvents()},3e3))}stopTransportWatcher(){this._transportWatchTimer&&(clearInterval(this._transportWatchTimer),this._transportWatchTimer=void 0)}isRetryableClose(e){var t,n;return!((null!==(n=null!==(t=e.code)&&void 0!==t?t:e.status)&&void 0!==n?n:e.errorCode)>=4e3)}reconnect(){super.reconnect(),this.resetInitGuardsAndHooks()}removePlayer(){var e,t,n,i,s;this.stopTransportWatcher(),this._boundTransport&&(this._onWsOpen&&(null===(t=(e=this._boundTransport).removeEventListener)||void 0===t||t.call(e,"open",this._onWsOpen)),this._onWsClose&&(null===(i=(n=this._boundTransport).removeEventListener)||void 0===i||i.call(n,"close",this._onWsClose))),this.cancelFirstRenderedFrameHook();try{null===(s=this._mo)||void 0===s||s.disconnect()}catch(e){}this.disconnect()}onVersion(e){return(0,s.sH)(this,void 0,void 0,function*(){var e,t;let n;try{n=yield this.diagnosticsCollector.collect()}catch(n){null===(e=r.Vy.Warning)||void 0===e||e.call(r.Vy,`Diagnostics collection failed: ${null!==(t=null==n?void 0:n.message)&&void 0!==t?t:n}`)}finally{const e={type:"version",version:this.config.VERSION};void 0!==n&&(e.diagnostics=n),this.send(e)}})}addMessageHandler(e,t,n){this.signallingProtocol.addListener(e,i=>{var s,o;let a;try{a=t(i)}catch(t){return void(null===(s=r.Vy.Error)||void 0===s||s.call(r.Vy,`Unexpected message content. Event:'${e}', Error: ${null!==(o=null==t?void 0:t.message)&&void 0!==o?o:t}`))}n.call(this,a)})}_dispatchOrBuffer(e){if(this.isWsOpen)try{return void this.signallingProtocol.sendMessage(e)}catch(e){}this.outbox.push(e)}flushOutbox(){if(!this.isWsOpen||0===this.outbox.length)return;const e=this.outbox.splice(0,this.outbox.length);for(const t of e)try{this.signallingProtocol.sendMessage(t)}catch(n){this.outbox.unshift(t,...e.slice(e.indexOf(t)+1));break}}sendStats(e){const t={type:"stats",stats:(0,y.U)(e)};this.send(t)}onPing(e){var t,n;this.config.isFlagEnabled("HoveringMouse")!==!(null===(n=null===(t=null==this?void 0:this.streamInfo)||void 0===t?void 0:t.streamInfo.meta)||void 0===n?void 0:n.mouseLock)&&this.handleMouseLock(),this.session.current&&this.session.set(this.session.current)}onStreamInfo(e){var t,n,i,s;if(r.Vy.Info("StreamInfo received."),this.streamInfo=e,!(null===(n=null===(t=this.config)||void 0===t?void 0:t.settings)||void 0===n?void 0:n["do-not-eval-streamInfo"])){const{afk:t}=e.streamInfo;t&&(this.config.setFlagEnabled(o.iI.AFKDetection,t.enabled),this.config.setNumericSetting(o.k$.AFKTimeoutSecs,t.warn),this.config.setNumericSetting(o.k$.AFKCountdownSecs,t.action)),(null===(i=e.streamInfo.webSdkSettings)||void 0===i?void 0:i.init)&&this.config.setSettings(e.streamInfo.webSdkSettings.init),(null===(s=e.streamInfo.webSdkSettings)||void 0===s?void 0:s.conf)&&Object.entries(e.streamInfo.webSdkSettings.conf).forEach(([e,t])=>{const n=e;this.config.settings[n]=t})}this.handleMouseLock()}onRender(e){return(0,s.sH)(this,void 0,void 0,function*(){const e={type:"render",isRendering:yield this.waitForFirstFrameWithTimeout()};this.send(e)})}onQueue(e){r.Vy.Info("QueueInfo received."),v.J.Emit(this.queueHandler,e)}onError(e){var t,n;if(r.Vy.Error(e.type),console.log(e),this.isRetryableClose(e))this.startTransportWatcher();else{try{null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.closeSignalingServer)||void 0===n||n.call(t,e.reason,!1)}catch(e){}this.stopTransportWatcher()}v.J.Emit(this.errorHandler,e)}onSessionId(e){r.Vy.Info(e.sessionId),this.session.set(e.sessionId),v.J.Emit(this.sessionIdHandler,e.sessionId)}onLoveLetter(e){this.config.settings.loveLetterLogging&&console.info(e.reason),v.J.Emit(this.loveLetterHandler,e)}send(e,t){const n="string"==typeof e?Object.assign({type:e},null!=t?t:{}):e;this._dispatchOrBuffer(n)}handleUEResponse(e){let t;try{t=(0,C.Yr)(e,{allowJsonish:!0})}catch(t){return void v.J.Emit(this.applicationResponseHandler,e)}const n=(0,C.AZ)(t.type);"event"!==n?"filetransfer"!==n&&"createscreenshot"!==n?v.J.Emit(this.applicationResponseHandler,e):v.J.Emit(this.fileTransferHandler,{filename:t.filename}):this.handleAnalyticsFromUnreal(t)}sendAnalyticsEvent(e){const t=(0,w.Q)(e,{maxPayloadBytes:512,allowJsonish:!0});t.ok?this._dispatchAnalytics(t.value):console.warn("Invalid AnalyticsEvent:",e)}handleAnalyticsFromUnreal(e){const t=(0,w.Q)(e,{maxPayloadBytes:512,allowJsonish:!0});t.ok?this._dispatchAnalytics(t.value):console.warn("Invalid AnalyticsEvent from Unreal:",e)}_dispatchAnalytics(e){this.send(e),v.J.Emit(this.analyticsEventHandler,e)}getIncomingFile(){const e=this.webRtcController;return null==e?void 0:e.file}fileDownload(e){if("undefined"==typeof window||"undefined"==typeof document)return;const t=this.getIncomingFile();if(t&&t.data&&t.mimetype)try{const n=(0,C.gX)(t.mimetype),i=(e&&e.trim()?(0,C.Nz)(e):(0,C.i$)())+n,s=t.data.map(e=>e.slice()),r=new Blob(s,{type:t.mimetype});if("undefined"==typeof URL||!URL.createObjectURL)return;const o=URL.createObjectURL(r),a=document.createElement("a");a.href=o,a.download=i,a.style.display="none",document.body.appendChild(a),a.click(),document.body.removeChild(a),setTimeout(()=>{try{URL.revokeObjectURL(o)}catch(e){}},0)}catch(e){console.error("Download failed:",e)}}attachFirstRenderedFrameOnce(){var e,t,n,i;const s=null===(n=null===(t=null===(e=this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoElement)||void 0===n?void 0:n.call(t);if(!s)return;if(this._rVFCArmedForElement===s)return;if(this.cancelFirstRenderedFrameHook(),this._rVFCArmedForElement=s,this._rVFCsupported){const e=s;this._rvfcHandle=null===(i=e.requestVideoFrameCallback)||void 0===i?void 0:i.call(e,(e,t)=>{this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce(),this._rvfcHandle=void 0})}const r=()=>{s.removeEventListener("resize",r),this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce()};s.addEventListener("resize",r,{once:!0})}cancelFirstRenderedFrameHook(){var e;const t=this._rVFCArmedForElement;if(t){if(this._rvfcHandle&&"cancelVideoFrameCallback"in HTMLVideoElement.prototype){const n=t;try{null===(e=n.cancelVideoFrameCallback)||void 0===e||e.call(n,this._rvfcHandle)}catch(e){}}this._rvfcHandle=void 0,this._rVFCArmedForElement=void 0}}watchVideoElementReplacement(){var e,t,n,i;try{const s=null===(n=null===(t=null===(e=null==this?void 0:this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoParentElement)||void 0===n?void 0:n.call(t);if(!s)return;null===(i=this._mo)||void 0===i||i.disconnect(),this._mo=new MutationObserver(()=>{this.attachFirstRenderedFrameOnce()}),this._mo.observe(s,{childList:!0,subtree:!0})}catch(e){}}waitForFirstFrameWithTimeout(){return(0,s.sH)(this,arguments,void 0,function*(e=2e3){var t,n,i;const s=null===(i=null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoElement)||void 0===i?void 0:i.call(n);if(this.isVideoRenderingNow(s))return!0;let r;const o=yield Promise.race([new Promise(e=>{var t,n;const i=()=>{r(),e(!0)},r=()=>{var e,t;s.removeEventListener("playing",o),s.removeEventListener("resize",a),"cancelVideoFrameCallback"in HTMLVideoElement.prototype&&null!=l&&(null===(t=(e=s).cancelVideoFrameCallback)||void 0===t||t.call(e,l))},o=()=>this.isVideoRenderingNow(s)&&i(),a=()=>this.isVideoRenderingNow(s)&&i();s.addEventListener("playing",o,{once:!0}),s.addEventListener("resize",a,{once:!0});const l="requestVideoFrameCallback"in HTMLVideoElement.prototype?null===(n=(t=s).requestVideoFrameCallback)||void 0===n?void 0:n.call(t,()=>i()):null}),new Promise(t=>{r=setTimeout(()=>t(!1),e)})]);return r&&clearTimeout(r),o})}isVideoRenderingNow(e){if(!e)return!1;const t=e.videoWidth>0&&e.videoHeight>0,n=e.readyState>=HTMLMediaElement.HAVE_CURRENT_DATA,i=!e.paused&&!e.ended;return t&&n||t&&i||n&&i}sendVideoInitializedOnce(){this.videoInitializedSent||(this.videoInitializedSent=!0,this.cancelFirstRenderedFrameHook(),this.send({type:"onVideoInitialized"}),this.videoInitializedHandler&&v.J.Emit(this.videoInitializedHandler,void 0))}onVideoInitialized(){this.videoInitializedSent||this.sendVideoInitializedOnce(),this.runPostInitSideEffectsOnce()}handleResolutionChange(){var e,t,n,i,s,r,o,a;if(!(null==this?void 0:this.streamInfo)||!(null==this?void 0:this.webRtcController)||!(null===(t=null===(e=null==this?void 0:this.webRtcController)||void 0===e?void 0:e.videoPlayer)||void 0===t?void 0:t.getVideoElement()))return;const l=null===(i=null===(n=null==this?void 0:this.streamInfo)||void 0===n?void 0:n.streamInfo)||void 0===i?void 0:i.resolution,d=null===(o=null===(r=null===(s=null==this?void 0:this.streamInfo)||void 0===s?void 0:s.streamInfo)||void 0===r?void 0:r.meta)||void 0===o?void 0:o.version,c=null===(a=this.config.settings)||void 0===a?void 0:a.orientationZoom;l&&(null==l?void 0:l.dynamic)&&setTimeout(()=>{const{videoPlayer:e}=null==this?void 0:this.webRtcController,t=null==e?void 0:e.getVideoParentElement();if(!t)return;const n=t.getBoundingClientRect(),i=n.width,s=n.height,r=null==l?void 0:l.width,o=null==l?void 0:l.height;if(!i||!s)return;const a=i/s;let h,u;if(a>r/o?(h=r,u=r/a):(u=o,h=o*a),c&&(i<s?c.hasOwnProperty("portrait")&&(null==this||this.emitUIInteraction({zoom:c.portrait})):c.hasOwnProperty("landscape")&&(null==this||this.emitUIInteraction({zoom:c.landscape}))),e)if(!d||(null==d?void 0:d.startsWith("4.27"))){const e={Console:`r.setres ${Math.round(h)}x${Math.round(u)}w`};null==this||this.emitUIInteraction(e)}else e.onMatchViewportResolutionCallback(Math.round(h),Math.round(u))},0)}handleMouseLock(){var e,t,n;null===(e=null==this?void 0:this.config)||void 0===e||e.modifyInitialSettings(!(null===(n=null===(t=null==this?void 0:this.streamInfo)||void 0===t?void 0:t.streamInfo.meta)||void 0===n?void 0:n.mouseLock))}setAudioEnabled(e){var t,n,i,s;const r=null===(i=null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoElement)||void 0===i?void 0:i.call(n),o=null===(s=this.webRtcController)||void 0===s?void 0:s.streamController;if(!r)return;const a=!e;r.muted=a,(null==o?void 0:o.audioElement)&&(o.audioElement.muted=a,e&&r.currentTime>0&&!r.paused&&o.audioElement.paused&&o.audioElement.play().catch(()=>{}))}resetInitGuardsAndHooks(){this.videoInitializedSent=!1,this._postInitSideEffectsDone=!1,this.cancelFirstRenderedFrameHook(),this.attachFirstRenderedFrameOnce(),this.bindTransportEvents()}static clearSessionId(){"undefined"!=typeof localStorage&&localStorage.removeItem("pxss")}runPostInitSideEffectsOnce(){var e,t;if(!this._postInitSideEffectsDone){this._postInitSideEffectsDone=!0;try{null===(e=this.handleMouseLock)||void 0===e||e.call(this)}catch(e){}try{null===(t=this.handleResolutionChange)||void 0===t||t.call(this)}catch(e){}v.J.Emit(this.postInitSideEffectsHandler,void 0)}}toggleAudio(e,t){var n,i;const{streamController:s}=this.webRtcController;e&&(e.muted=t,s&&(s.audioElement.muted=t,(null==e?void 0:e.currentTime)>0&&!(null==e?void 0:e.paused)&&(null===(n=null==s?void 0:s.audioElement)||void 0===n?void 0:n.paused)&&(null===(i=null==s?void 0:s.audioElement)||void 0===i||i.play())))}toggleMic(e,t){var n;null===(n=null==this?void 0:this.config)||void 0===n||n.setFlagEnabled(o.iI.UseMic,e),t||(v.J.Emit(this.micToggleHandler,{enabled:e}),setTimeout(()=>{this.videoInitializedSent=!1,this.attachFirstRenderedFrameOnce(),this.bindTransportEvents(),this.reconnect()},1e3))}onStreamingStateChange(e){var t,n,i,s;const r=null===(n=null===(t=null==this?void 0:this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoElement();null==r||r.addEventListener("play",()=>e(!0)),null==r||r.addEventListener("pause",()=>e(!1)),null==r||r.addEventListener("ended",()=>e(!1)),null===(i=this.webRtcController)||void 0===i||i.transport.addEventListener("open",()=>{e(!0)}),null===(s=this.webRtcController)||void 0===s||s.transport.addEventListener("close",()=>{e(!1)})}}},6689(e,t,n){n.d(t,{J:()=>a});var i=n(272);let s=null,r=null,o=null;function a(e,t,n){var a,l,d,c;const h=!0===(null==n?void 0:n.forceRefresh),u=!0===(null==n?void 0:n.allowMultipleInstances),m=`${null!==(l=null===(a=e.settings)||void 0===a?void 0:a.shareId)&&void 0!==l?l:""}|${null!==(c=null===(d=e.settings)||void 0===d?void 0:d.projectId)&&void 0!==c?c:""}`;if(u)return{PixelStreaming:new i.o(e,t),Config:e};if(o&&o!==m&&s&&(s.disconnect(),s=null,r=null),s&&!h)return console.warn("CoreSetup: Reusing existing stream instance."),{PixelStreaming:s,Config:r};h&&s&&(s.disconnect(),s=null,r=null);const p=new i.o(e,t);return s=p,r=e,o=m,{PixelStreaming:p,Config:e}}},5149(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("ErrorMessage must be an object");const t=e;if("error"!==t.type)throw new Error(`Invalid ErrorMessage type: ${t.type}`);const n=t.code;if("number"!=typeof n||!Number.isInteger(n))throw new Error("ErrorMessage.code must be an integer");const i=t.reason;if("string"!=typeof i)throw new Error("ErrorMessage.reason must be a string");const s=t.verbosity;if("number"!=typeof s)throw new Error("ErrorMessage.verbosity must be a number");return{type:"error",code:n,reason:i,verbosity:s}}n.d(t,{x:()=>i})},5428(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("LoveLetter must be an object");const t=e;if("letter"!==t.type)throw new Error(`Invalid LoveLetter type: ${t.type}`);const n=t.reason;if("string"!=typeof n||!n.startsWith("LL: "))throw new Error("LoveLetter.reason must be a string starting with 'LL: '");const i=t.code;if("number"!=typeof i)throw new Error("LoveLetter.code must be a number");const s=t.verbosity;if("number"!=typeof s)throw new Error("LoveLetter.verbosity must be a number");return{type:"letter",reason:n,code:i,verbosity:s}}n.d(t,{Q:()=>i})},6151(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Ping message must be an object");const t=e;if("ping"!==t.type)throw new Error(`Invalid Ping.type: ${t.type}`);const n=t.time;if("number"!=typeof n)throw new Error("Ping.time must be a number");const i=t.message;if(void 0!==i&&"string"!=typeof i)throw new Error("Ping.message must be a string if present");return Object.assign({type:"ping",time:n},"string"==typeof i?{message:i}:{})}n.d(t,{M:()=>i})},2309(e,t,n){function i(e){return"object"==typeof e&&null!==e}function s(e){return"number"==typeof e&&Number.isInteger(e)}function r(e){return"number"==typeof e}function o(e){if(!i(e))throw new Error("Queue message must be an object");if("queue"!==e.type)throw new Error(`Invalid Queue.type: ${e.type}`);const t=e.queue;if(!i(t))throw new Error("Queue.queue must be an object");const n=t.valueType;if("milliseconds"!==(o=n)&&"seconds"!==o&&"minutes"!==o&&"hours"!==o&&"days"!==o)throw new Error("Queue.queue.valueType must be one of milliseconds|seconds|minutes|hours|days");var o;const a={valueType:n},l=t.index;if(void 0!==l){if(!s(l))throw new Error("Queue.queue.index must be an integer if present");a.index=l}const d=t.queueLength;if(void 0!==d){if(!s(d))throw new Error("Queue.queue.queueLength must be an integer if present");a.queueLength=d}const c=t.waited;if(void 0!==c){if(!r(c))throw new Error("Queue.queue.waited must be a number if present");a.waited=c}const h=t.estimatedWaitTime;if(void 0!==h){if(null!==h&&!r(h))throw new Error("Queue.queue.estimatedWaitTime must be a number or null if present");a.estimatedWaitTime=h}const u=t.averageWaitTime;if(void 0!==u){if(null!==u&&!r(u))throw new Error("Queue.queue.averageWaitTime must be a number or null if present");a.averageWaitTime=u}return{type:"queue",queue:a}}n.d(t,{D:()=>o})},8536(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Render message must be an object");const t=e;if("render"!==t.type)throw new Error(`Invalid Render.type: ${t.type}`);return{type:"render"}}n.d(t,{w:()=>i})},6319(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("SessionId message must be an object");const t=e;if("sessionId"!==t.type)throw new Error(`Invalid SessionId.type: ${t.type}`);const n=t.sessionId;if("string"!=typeof n)throw new Error("SessionId.sessionId must be a string");return{type:"sessionId",sessionId:n}}n.d(t,{B:()=>i})},393(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Stats message must be an object");const t=e;if("stats"!==t.type)throw new Error(`Invalid Stats.type: ${t.type}`);const n=t.stats;if(void 0!==n&&("object"!=typeof n||null===n))throw new Error("Stats.stats must be an object if present");const i=null==n?void 0:n.controlsStreamInput;if(void 0!==i&&"true"!==i&&"false"!==i)throw new Error("Stats.stats.controlsStreamInput must be 'true' or 'false'");return{type:"stats",stats:n}}n.d(t,{B:()=>i})},9568(e,t,n){n.d(t,{U:()=>l});var i=n(7335);function s(e){return"object"==typeof e&&null!==e}function r(e){return"boolean"==typeof e}function o(e){return"string"==typeof e}function a(e){return"number"==typeof e&&Number.isInteger(e)&&e>=0}function l(e){const t="string"==typeof e?(()=>{try{return JSON.parse(e)}catch(e){throw new Error("StreamInfo payload is not valid JSON")}})():e;if(!s(t))throw new Error("StreamInfo must be an object");if("streamInfo"!==t.type)throw new Error(`Invalid StreamInfo.type: ${t.type}`);const n=t.streamInfo;if(!s(n))throw new Error("StreamInfo.streamInfo must be an object");const l=n.guid;if(!o(l)||0===l.length)throw new Error("StreamInfo.streamInfo.guid must be a non-empty string");const d={type:"streamInfo",streamInfo:{guid:l}};r(n.autoPlay)&&(d.streamInfo.autoPlay=n.autoPlay),r(n.touchCapable)&&(d.streamInfo.touchCapable=n.touchCapable);const c=n.resolution;if(void 0!==c){if(!s(c))throw new Error("StreamInfo.streamInfo.resolution must be an object if present");if(!a(c.width))throw new Error("StreamInfo.streamInfo.resolution.width must be a non-negative int");if(!a(c.height))throw new Error("StreamInfo.streamInfo.resolution.height must be a non-negative int");d.streamInfo.resolution={width:c.width,height:c.height},r(c.dynamic)&&(d.streamInfo.resolution.dynamic=c.dynamic),r(c.fixed)&&(d.streamInfo.resolution.fixed=c.fixed)}const h=n.meta;if(void 0!==h){if(!s(h))throw new Error("StreamInfo.streamInfo.meta must be an object if present");const e={};o(h.friendlyName)&&(e.friendlyName=h.friendlyName),r(h.isTrial)&&(e.isTrial=h.isTrial),r(h.mouseLock)&&(e.mouseLock=h.mouseLock),r(h.poweredBy)&&(e.poweredBy=h.poweredBy),o(h.version)&&(e.version=h.version),d.streamInfo.meta=e}const u=n.webSdkSettings;void 0!==u&&(d.streamInfo.webSdkSettings=(0,i.Z)(u));const m=n.afk;if(void 0!==m){if(!s(m))throw new Error("StreamInfo.streamInfo.afk must be an object if present");if(!r(m.enabled))throw new Error("StreamInfo.streamInfo.afk.enabled must be boolean");if(!a(m.warn))throw new Error("StreamInfo.streamInfo.afk.warn must be a non-negative int");if(!a(m.error))throw new Error("StreamInfo.streamInfo.afk.error must be a non-negative int");if(!a(m.action))throw new Error("StreamInfo.streamInfo.afk.action must be a non-negative int");d.streamInfo.afk={enabled:m.enabled,warn:m.warn,error:m.error,action:m.action}}return d}},9866(e,t,n){function i(e){if("object"!=typeof e||null===e)throw new Error("Version message must be an object");const t=e;if("version"!==t.type)throw new Error(`Invalid Version.type: ${t.type}`);const n=t.version;if(void 0!==n&&"string"!=typeof n)throw new Error("Version.version must be a string if present");return Object.assign({type:"version"},"string"==typeof n?{version:n}:{})}n.d(t,{o:()=>i})},7335(e,t,n){function i(e){return"object"==typeof e&&null!==e}function s(e){return"boolean"==typeof e}function r(e){return"string"==typeof e}function o(e){if(!i(e))throw new Error("WebSdkSettings must be an object");const t={},n=e.conf;if(void 0!==n){if(!i(n))throw new Error("WebSdkSettings.conf must be an object if present");const e={};s(n.fullscreenButton)&&(e.fullscreenButton=n.fullscreenButton),s(n.stopButton)&&(e.stopButton=n.stopButton),s(n.audioButton)&&(e.audioButton=n.audioButton),s(n.infoButton)&&(e.infoButton=n.infoButton),s(n.micButton)&&(e.micButton=n.micButton),s(n.settingsButton)&&(e.settingsButton=n.settingsButton),s(n.connectionStrengthIcon)&&(e.connectionStrengthIcon=n.connectionStrengthIcon),t.conf=e}const o=e.init;if(void 0!==o){if(!i(o))throw new Error("WebSdkSettings.init must be an object if present");const e={};s(o.KeyboardInput)&&(e.KeyboardInput=o.KeyboardInput),s(o.MouseInput)&&(e.MouseInput=o.MouseInput),s(o.GamepadInput)&&(e.GamepadInput=o.GamepadInput),s(o.TouchInput)&&(e.TouchInput=o.TouchInput),s(o.XRControllerInput)&&(e.XRControllerInput=o.XRControllerInput),s(o.FakeMouseWithTouches)&&(e.FakeMouseWithTouches=o.FakeMouseWithTouches),s(o.ForceMonoAudio)&&(e.ForceMonoAudio=o.ForceMonoAudio),s(o.HoveringMouse)&&(e.HoveringMouse=o.HoveringMouse),t.init=e}const a=e.customization;if(void 0!==a){if(!i(a))throw new Error("WebSdkSettings.customization must be an object if present");const e={},n=a.buttons_position;if(void 0!==n){if(!r(n)||!["Top-Left","Top-Right","Bottom-Left","Bottom-Right"].includes(n))throw new Error("customization.buttons_position must be one of: Top-Left, Top-Right, Bottom-Left, Bottom-Right");e.buttons_position=n}const o=a.buttons_orientation;if(void 0!==o){if(!r(o)||!["Horizontal","Vertical"].includes(o))throw new Error("customization.buttons_orientation must be one of: Horizontal, Vertical");e.buttons_orientation=o}const l=a.buttons_reverse;if(void 0!==l){if(!s(l))throw new Error("customization.buttons_reverse must be a boolean");e.buttons_reverse=l}t.customization=e}return t}n.d(t,{Z:()=>o})},6246(e,t,n){n.d(t,{B2:()=>r.B,BN:()=>a.B,DY:()=>d.D,Mr:()=>l.M,Ql:()=>s.Q,U3:()=>o.U,Vn:()=>m,ZB:()=>h.Z,ot:()=>c.o,wL:()=>u.w,xI:()=>i.x});var i=n(5149),s=n(5428),r=n(6319),o=n(9568),a=n(393),l=n(6151),d=n(2309),c=n(9866),h=n(7335),u=n(8536);const m={stats:{parse:a.B}}},6460(e,t,n){n.d(t,{J:()=>i});class i{add(e){return this.callbacks.find(t=>t===e)?null:(this.callbacks.push(e),e)}remove(e){const t=this.callbacks.find(t=>t===e);return t&&this.callbacks.splice(this.callbacks.indexOf(t),1),!!t}constructor(){this.callbacks=new Array}static Emit(e,t){e.callbacks.forEach(e=>e(t))}}},946(e,t,n){n.d(t,{N:()=>o});var i=n(7894),s=n(7813);function r(e){return"string"==typeof e&&e.length>0}class o{get current(){return this._current}get noSession(){return new URLSearchParams(window.location.search).has("noSession")}get id(){if(this.noSession)return null;const e=this.readSessionString();if(null===e)return null;let t;try{t=JSON.parse(e)}catch(e){return this.unset(),null}const n=function(e){if("object"!=typeof e||null===e)return;const t=e;for(const e of Object.keys(t))if("id"!==e&&"created"!==e&&"expire"!==e)return;if(!r(t.id))return;const n=function(e){if(e instanceof Date&&!isNaN(e.getTime()))return e;if("string"==typeof e){const t=new Date(e);if(!isNaN(t.getTime()))return t}}(t.created);if(!n)return;const i=void 0===t.expire?void 0:"boolean"==typeof t.expire?t.expire:void 0;return{id:t.id,created:n,expire:i}}(t);if(!n)return this.unset(),null;const o=(0,i.A)(new Date(n.created),this.options.keepSession);return(0,s.A)(o,new Date)?(this.unset(),null):n.id}get localStorageKey(){return this.options.localStorageKey}constructor(e){this.options=function(e){return{localStorageKey:"string"==typeof(null==e?void 0:e.localStorageKey)&&e.localStorageKey.length>=3?e.localStorageKey:"pxss",keepSession:"number"==typeof(null==e?void 0:e.keepSession)&&Number.isInteger(e.keepSession)&&e.keepSession>=3?e.keepSession:10}}(e)}set(e){if(!r(e))throw new Error("Session id must be a non-empty string");this._current=e;const t={id:e,created:new Date,expire:!1};this.writeSessionString(JSON.stringify(t))}unset(){try{window.localStorage.removeItem(this.localStorageKey)}catch(e){}try{window.sessionStorage.removeItem(this.localStorageKey)}catch(e){}}readSessionString(){try{const e=window.localStorage.getItem(this.localStorageKey);if(null!==e)return e}catch(e){}try{return window.sessionStorage.getItem(this.localStorageKey)}catch(e){}return null}writeSessionString(e){let t=!1;try{window.localStorage.setItem(this.localStorageKey,e),t=!0}catch(e){}if(!t)try{window.sessionStorage.setItem(this.localStorageKey,e),t=!0}catch(e){}}}},633(e,t,n){function i(e){return{codecs:e.codecs,candidatePair:e.candidatePairs,localCandidates:e.localCandidates,remoteCandidates:e.remoteCandidates,DataChannelStats:e.datachannelStats,bytesReceived:r(e.inboundVideoStats.bytesReceived),packetsLost:r(e.inboundVideoStats.packetsLost),frameWidth:r(e.inboundVideoStats.frameWidth),frameHeight:r(e.inboundVideoStats.frameHeight),framesDecoded:r(e.inboundVideoStats.framesDecoded),framesPerSecond:r(e.inboundVideoStats.framesPerSecond),framesDropped:r(e.inboundVideoStats.framesDropped),videoCodec:e.inboundVideoStats.codecId,audioCodec:e.inboundAudioStats.codecId,browserInfo:{userAgent:navigator.userAgent,platform:navigator.oscpu||navigator.platform||null,language:navigator.language},currentRTT:s(e.candidatePairs),sessionRunTime:e.sessionStats.runTime,controlsStreamInput:"true"===e.sessionStats.controlsStreamInput||"false"===e.sessionStats.controlsStreamInput?e.sessionStats.controlsStreamInput:void 0,videoEncoderAvgQP:r(e.sessionStats.videoEncoderAvgQP),videoBitrate:r(e.inboundVideoStats.bitrate),audioBitrate:r(e.inboundAudioStats.bitrate)}}function s(e){let t=0;for(const n of e)n.selected&&n.currentRoundTripTime>t&&(t=n.currentRoundTripTime);return t}function r(e){return"number"==typeof e&&Number.isFinite(e)?e:0}n.d(t,{U:()=>i})},3263(e,t,n){function i(e,t){let n;return function(...i){clearTimeout(n),n=window.setTimeout(()=>e(...i),t)}}n.d(t,{A:()=>i})},7506(e,t,n){n.d(t,{Q:()=>s});var i=n(6155);function s(e,t={}){var n,s,o;const a=null!==(n=t.maxPayloadBytes)&&void 0!==n?n:512;let l;try{l=(0,i.Yr)(e,{allowJsonish:null===(s=t.allowJsonish)||void 0===s||s})}catch(e){return{ok:!1,error:null!==(o=null==e?void 0:e.message)&&void 0!==o?o:"Invalid input"}}const d=r(l.type),c=r(l.customName);if(!d)return{ok:!1,error:"`type` must be a non-empty string."};if(!c)return{ok:!1,error:"`customName` must be a non-empty string."};let h;return"payload"in l&&"string"==typeof l.payload&&(h=(0,i.HJ)(l.payload,a)),{ok:!0,value:void 0!==h?{type:d,customName:c,payload:h}:{type:d,customName:c}}}function r(e){if("string"!=typeof e)return;const t=e.trim();return t.length?t:void 0}},7050(e,t,n){n.d(t,{_Z:()=>o});var i,s,r=n(1635);!function(e){e.Landscape="landscape",e.Portrait="portrait"}(i||(i={})),function(e){e.Desktop="desktop",e.Mobile="mobile",e.Tablet="tablet"}(s||(s={}));class o{constructor(e={}){var t,n,i,s;this.uaInfoCache=null,this.opts={enableBandwidthProbe:null===(t=e.enableBandwidthProbe)||void 0===t||t,probeUrl:null!==(n=e.probeUrl)&&void 0!==n?n:"/diag/probe.bin",respectSaveData:null===(i=e.respectSaveData)||void 0===i||i,sampleRate:Math.max(0,Math.min(1,null!==(s=e.sampleRate)&&void 0!==s?s:1))}}collect(){return(0,r.sH)(this,void 0,void 0,function*(){var e,t;if(!this.shouldSample())return{device:{type:s.Desktop,touchSupport:!1},runtime:{browser:{family:"Unknown",version:null},os:{family:"Unknown",version:null}},powerHints:{saveData:null,prefersReducedData:null,prefersReducedMotion:null},network:{type:null,effectiveType:null,downlinkMbps:null,rttMs:null,measuredDownlinkMbps:null},timestamps:{collectedAt:Date.now()}};const n=Date.now(),[i,r,o]=yield Promise.all([this.getUAInfo(),this.getCodecSupport(),this.maybeMeasureBandwidth()]);return{device:{type:this.inferDeviceType(),vendor:null,model:i.model,architecture:i.architecture,bitness:i.bitness,touchSupport:this.hasTouch(),hardwareConcurrency:null!==(e=navigator.hardwareConcurrency)&&void 0!==e?e:null,deviceMemory:null!==(t=navigator.deviceMemory)&&void 0!==t?t:null,orientation:this.getOrientation(),webgl:this.hasWebGL(),codecs:r},runtime:{browser:{family:i.browserFamily,version:i.browserVersion},os:{family:i.osFamily,version:i.osVersion}},powerHints:this.getPowerHints(),network:this.getNetworkInfo(o),timestamps:{collectedAt:n}}})}collectWebRTC(e){return(0,r.sH)(this,void 0,void 0,function*(){var t,n,i,s,r,o;try{const a=yield e.getStats();let l,d,c,h;return a.forEach(e=>{"transport"===e.type&&e.selectedCandidatePairId&&(d=e),"candidate-pair"===e.type&&(e.selected||e.nominated)&&(l=e)}),l&&(c=a.get(l.localCandidateId),h=a.get(l.remoteCandidateId)),{candidatePairId:null!==(t=null==l?void 0:l.id)&&void 0!==t?t:null,localCandidateType:null!==(n=null==c?void 0:c.candidateType)&&void 0!==n?n:null,remoteCandidateType:null!==(i=null==h?void 0:h.candidateType)&&void 0!==i?i:null,protocol:null!==(s=null==c?void 0:c.protocol)&&void 0!==s?s:null,networkType:null!==(r=null==c?void 0:c.networkType)&&void 0!==r?r:null,dtlsCipher:null!==(o=null==d?void 0:d.dtlsCipher)&&void 0!==o?o:null}}catch(e){return{}}})}buildHelloEnvelope(e,t){return(0,r.sH)(this,void 0,void 0,function*(){const n=yield this.collect(),i=t?yield this.collectWebRTC(t):void 0,s=i?{diag:Object.assign(Object.assign({},n),{webrtc:i})}:{diag:n};return Object.assign(Object.assign({},e),{ext:s})})}shouldSample(){return this.opts.sampleRate>=1||Math.random()<this.opts.sampleRate}hasTouch(){var e;const t=navigator;return"ontouchstart"in window||(null!==(e=t.maxTouchPoints)&&void 0!==e?e:0)>0}getOrientation(){var e;try{if(null===(e=screen.orientation)||void 0===e?void 0:e.type)return screen.orientation.type.startsWith("portrait")?i.Portrait:i.Landscape;if(window.matchMedia)return window.matchMedia("(orientation: portrait)").matches?i.Portrait:i.Landscape}catch(e){}return null}hasWebGL(){try{const e=document.createElement("canvas");return!(!e.getContext("webgl")&&!e.getContext("experimental-webgl"))}catch(e){return!1}}inferDeviceType(){const e=navigator.userAgentData,t=navigator.userAgent||"",n=!0===(null==e?void 0:e.mobile),i=Math.min(screen.width,screen.height);return/\b(iPad|Tablet)\b/i.test(t)?s.Tablet:n?i>=600?s.Tablet:s.Mobile:/\b(iPhone|Android.*Mobile|Windows Phone)\b/i.test(t)?s.Mobile:("ontouchstart"in window||navigator.maxTouchPoints>0)&&i>=600&&i<=1100?s.Tablet:s.Desktop}getPowerHints(){const e=navigator.connection,t="boolean"==typeof(null==e?void 0:e.saveData)?e.saveData:null;let n=null,i=null;if("function"==typeof window.matchMedia){try{const e=window.matchMedia("(prefers-reduced-data: reduce)");"boolean"==typeof e.matches&&(n=e.matches)}catch(e){}try{const e=window.matchMedia("(prefers-reduced-motion: reduce)");"boolean"==typeof e.matches&&(i=e.matches)}catch(e){}}return{saveData:t,prefersReducedData:n,prefersReducedMotion:i}}getNetworkInfo(e){const t=navigator.connection;return{type:"string"==typeof(null==t?void 0:t.type)?t.type:null,effectiveType:"string"==typeof(null==t?void 0:t.effectiveType)?t.effectiveType:null,downlinkMbps:"number"==typeof(null==t?void 0:t.downlink)?t.downlink:null,rttMs:"number"==typeof(null==t?void 0:t.rtt)?t.rtt:null,measuredDownlinkMbps:e}}maybeMeasureBandwidth(){return(0,r.sH)(this,void 0,void 0,function*(){const e=navigator.connection,t=!0===(null==e?void 0:e.saveData);if(!this.opts.enableBandwidthProbe)return null;if(this.opts.respectSaveData&&t)return null;try{const e=performance.now(),t=yield fetch(this.withCacheBuster(this.opts.probeUrl),{cache:"no-store",credentials:"omit"}),n=yield t.arrayBuffer(),i=performance.now(),s=8*n.byteLength,r=(i-e)/1e3;return r<=.05?null:+(s/r/1e6).toFixed(2)}catch(e){return null}})}withCacheBuster(e){var t,n;const i=new URL(e,location.origin),s=null!==(n=null===(t=null===crypto||void 0===crypto?void 0:crypto.randomUUID)||void 0===t?void 0:t.call(crypto))&&void 0!==n?n:String(Date.now());return i.searchParams.set("cb",s),i.toString()}getCodecSupport(){return(0,r.sH)(this,void 0,void 0,function*(){const[e,t]=yield Promise.all([this.supportsCodec('video/mp4; codecs="avc1.42E01E"'),this.supportsCodec('video/mp4; codecs="hvc1.1.6.L93.B0"')]);return{h264:e,hevc:t}})}supportsCodec(e){return(0,r.sH)(this,void 0,void 0,function*(){try{if("mediaCapabilities"in navigator){const t=yield navigator.mediaCapabilities.decodingInfo({type:"file",video:{contentType:e,width:1920,height:1080,bitrate:5e6,framerate:30}});return!!(null==t?void 0:t.supported)}}catch(e){}try{return""!==document.createElement("video").canPlayType(e)}catch(e){return!1}})}getUAInfo(){return(0,r.sH)(this,void 0,void 0,function*(){if(this.uaInfoCache)return this.uaInfoCache;const e=navigator.userAgentData,t=navigator.userAgent;let n="Unknown",i=null,s="Unknown",r=null,o=null,a=null,l=null;if(null==e?void 0:e.getHighEntropyValues)try{const t=yield e.getHighEntropyValues(["platform","platformVersion","model","architecture","bitness","fullVersionList"]);s=t.platform||"Unknown",r=t.platformVersion||null,o=t.model||null,a=t.architecture||null,l=t.bitness||null;const d=(t.fullVersionList||e.brands||[]).find(e=>{if(!e.brand)return!1;const t=e.brand.replace(/[^a-zA-Z]/g,"").toLowerCase();return!t.includes("chromium")&&!t.includes("notabrand")});d&&(n=d.brand,i=d.version)}catch(e){}if(!n||"Unknown"===n){const e=[[/Edg\/(\S+)/,"Edge"],[/OPR\/(\S+)/,"Opera"],[/SamsungBrowser\/(\S+)/,"Samsung Internet"],[/Firefox\/(\S+)/,"Firefox"],[/Chrome\/(\S+)/,"Chrome"],[/Version\/(\S+).*Safari/,"Safari"]];for(const[s,r]of e){const e=t.match(s);if(e){n=r,i=e[1];break}}}if(/iPhone|iPad|iPod/.test(t)){s="iOS";const e=t.match(/OS (\d+[_\d]*)/);e&&(r=e[1].replace(/_/g,"."))}else if(null==e?void 0:e.platform)s=e.platform;else if(/Windows/.test(t)){s="Windows";const e=t.match(/Windows NT (\d+\.\d+)/);e&&(r=e[1])}else if(/Mac OS X/.test(t)){s="macOS";const e=t.match(/Mac OS X (\d+[_\d]*)/);e&&(r=e[1].replace(/_/g,"."))}else if(/Android/.test(t)){s="Android";const e=t.match(/Android (\d+(\.\d+)?)/);e&&(r=e[1])}else/Linux/.test(t)&&(s="Linux");const d={browserFamily:n,browserVersion:i,osFamily:s,osVersion:r,model:o,architecture:a,bitness:l};return this.uaInfoCache=d,d})}}},419(e,t,n){function i(e){return function(e){return"string"==typeof e&&e.startsWith("https://")&&(()=>{try{return new URL(e),!0}catch(e){return!1}})()}(e)||function(e){return"string"==typeof e&&e.length>0&&!/^[a-zA-Z][a-zA-Z0-9+.-]*:/.test(e)}(e)}function s(e){if("object"!=typeof e||null===e)return;const t=e,n={},s=["loadingIconUrl","loadingIconFadeMs","splashScreenUrl","splashScreenMode","splashScreenPosition","splashScreenBgColor","hideLoveLetters","hideAfkOverlay"];for(const e of Object.keys(t))if(!s.includes(e))return;const r=t.loadingIconUrl;i(r)&&(n.loadingIconUrl=r);const o=t.loadingIconFadeMs;"number"==typeof o&&Number.isInteger(o)&&o>0&&(n.loadingIconFadeMs=o);const a=t.splashScreenUrl;i(a)&&(n.splashScreenUrl=a);const l=t.splashScreenMode;"contain"!==l&&"cover"!==l&&"stretch"!==l&&"repeat"!==l||(n.splashScreenMode=l);const d=t.splashScreenPosition;"string"==typeof d&&(n.splashScreenPosition=d);const c=t.splashScreenBgColor;"string"==typeof c&&(n.splashScreenBgColor=c);const h=t.hideLoveLetters;"boolean"==typeof h&&(n.hideLoveLetters=h);const u=t.hideAfkOverlay;return"boolean"==typeof u&&(n.hideAfkOverlay=u),Object.keys(n).length>0?n:void 0}n.d(t,{d:()=>s})},6155(e,t,n){function i(e,t={allowJsonish:!0}){if(e&&"object"==typeof e)return e;if("string"==typeof e){try{const t=JSON.parse(e);if(t&&"object"==typeof t)return t}catch(e){}if(t.allowJsonish){const t=e.trim().replace(/'/g,'"').replace(/([{,]\s*)([A-Za-z_][$\w-]*)(\s*:)/g,'$1"$2"$3');try{const e=JSON.parse(t);if(e&&"object"==typeof e)return e}catch(e){}}}throw new Error("Input must be an object or a JSON string of an object.")}function s(e,t){const n=new TextEncoder,i=new TextDecoder,s=n.encode(e);if(s.byteLength<=t)return e;for(let e=t;e>0;e--)try{return i.decode(s.subarray(0,e),{stream:!1})}catch(e){}return""}function r(e){let t=e.replace(/\s+/g," ").trim();return t=t.replace(/[\\\/:\*\?"<>\|\u0000-\u001F]+/g,""),t=t.replace(/^\.+/,""),!/^(con|prn|aux|nul|com[1-9]|lpt[1-9])(\..*)?$/i.test(t)&&t||(t=a()),t.length>100&&(t=t.slice(0,100)),t}function o(e){const t={"image/png":".png","image/jpeg":".jpg","image/jpg":".jpg","image/webp":".webp","image/gif":".gif","image/bmp":".bmp","image/tiff":".tiff","video/mp4":".mp4","video/webm":".webm","video/ogg":".ogv","audio/mpeg":".mp3","audio/ogg":".ogg","audio/wav":".wav","audio/webm":".weba","application/pdf":".pdf","application/zip":".zip","application/x-zip-compressed":".zip","application/json":".json","text/plain":".txt","text/csv":".csv"};return t[e]?t[e]:e.startsWith("image/")||e.startsWith("video/")||e.startsWith("audio/")?"."+e.split("/")[1]:""}function a(){return Math.random().toString(36).slice(2,8)}function l(e){return"string"==typeof e?e.trim().toLowerCase():""}n.d(t,{AZ:()=>l,HJ:()=>s,Nz:()=>r,Yr:()=>i,gX:()=>o,i$:()=>a})},9644(e,t,n){n.d(t,{a:()=>s});var i=n(419);function s(e){var t;try{const n=null!==(t=e.get("wl"))&&void 0!==t?t:e.get("whitelabel");if(!n)return;const s=function(e){const t=e.replace(/-/g,"+").replace(/_/g,"/"),n=t+"===".slice((t.length+3)%4);return"function"==typeof atob?atob(n):Buffer.from(n,"base64").toString("utf-8")}(n),r=JSON.parse(s);return(0,i.d)(r)}catch(e){return}}},2451(e,t,n){n.d(t,{I:()=>T});var i,s=n(1635),r=n(223),o=n(5131),a=n(4746),l=n(1810),d=n(920),c=n(4520),h=n(7261),u=n(5007),m=n(2352),p=n(8403),g=n(3389),f=n(3910),v=n(8882),y=n(8816);const b=/^(\['([a-zA-Z 0-9-_]+)'\] )/;function w(e,t){const n=b.exec(t);if(!n)return null;const i=t.replace(n[1],""),s=n[2].trim(),r=(e||document).querySelectorAll(i);let o=null;return r.forEach(e=>{var t;null==e||e.innerHTML.trim(),!o&&(null===(t=null==e?void 0:e.innerHTML)||void 0===t?void 0:t.includes(`>${s}<`))&&(o=e)}),o}function S(e){if(!e)return e;try{return decodeURIComponent(e)}catch(t){return e}}const C={};function E(e,t){!0===C[e]&&t&&(t.style.display="none")}class T extends l.l{get rootElement(){return super.rootElement}constructor(e){var t,n,i,s,r,o,a,l,d,c;super(e),this.loveLettersList=[],this.loveLettersQueue=[],this.isProcessingQueue=!1,this.ArcwareSection=this.configUI.buildSectionWithHeading(this.settingsPanel.settingsContentElement,"Arcware Cloud"),this.stream=null==e?void 0:e.stream,this.baseShowAfkOverlay=this.showAfkOverlay.bind(this),this.stream.whiteLabellingChangedHandler.add(e=>{try{this.syncAfkOverlayFromWhiteLabelling(),this.applyBrandingFromSettings(e.next)}catch(e){}}),this.emitUIInteraction=this.emitUIInteraction.bind(this),this.adjustSettingsPanel(),this.createAudioToggleButton(),this.createMicToggleButton(),this.createStopButton(),this.applyArcwareStyles(),this.videoElementParent=null===(t=null==this?void 0:this.stream)||void 0===t?void 0:t.videoElementParent,this.parentElement=null===(n=null==this?void 0:this.videoElementParent)||void 0===n?void 0:n.parentElement,this.webRtcController=null===(i=null==this?void 0:this.stream)||void 0===i?void 0:i._webRtcController,this.loveLettersList=[],this.microphoneOverlay=new f.j(this.stream),this.initLoveLettersContainer(),this.createMicrophoneOverlay(),this.tryAttachLoveLettersContainer(),this.stream.postInitSideEffectsHandler.add(()=>{var e,t;try{this.handleRemoveLoveLetters()}catch(e){}try{null===(t=null===(e=this.microphoneOverlay)||void 0===e?void 0:e.toggleVisibility)||void 0===t||t.call(e,!1)}catch(e){}try{this.removeXRIconIfDisabled()}catch(e){}try{this.hideSplashVideo()}catch(e){}try{this._loveLettersAttachTimer&&(window.clearInterval(this._loveLettersAttachTimer),this._loveLettersAttachTimer=void 0)}catch(e){}}),this.stream.micToggleHandler.add(({enabled:e})=>{var t;try{null===(t=this.microphoneOverlay)||void 0===t||t.toggleMessage(e),setTimeout(()=>{var e;return null===(e=this.microphoneOverlay)||void 0===e?void 0:e.toggleVisibility(!0)},200)}catch(e){}}),this.addLoveLetterhandler(),null===(r=null===(s=null==this?void 0:this.stream)||void 0===s?void 0:s.sessionIdHandler)||void 0===r||r.add(e=>{var t;null===(t=null==this?void 0:this.statsPanel)||void 0===t||t.addOrUpdateSessionStat("sessionId","SessionId",e)}),null===(a=null===(o=null==this?void 0:this.stream)||void 0===o?void 0:o.videoInitializedHandler)||void 0===a||a.add(()=>{var e,t,n;null===(e=null==this?void 0:this.currentOverlay)||void 0===e||e.hide(),(null===(t=null==this?void 0:this.stream)||void 0===t?void 0:t.streamInfo)&&(null==this||this.autoPlayHandler(null===(n=null==this?void 0:this.stream)||void 0===n?void 0:n.streamInfo),this.applyCustomStyling())}),null===(d=null===(l=null==this?void 0:this.stream)||void 0===l?void 0:l.videoInitializedHandler)||void 0===d||d.add((()=>{null==this||this.uiDefaultButtonVisibilty("fullscreenButton","#fullscreen-btn"),null==this||this.uiDefaultButtonVisibilty("settingsButton","#settingsBtn"),null==this||this.uiDefaultButtonVisibilty("infoButton","#statsBtn"),null==this||this.uiDefaultButtonVisibilty("audioButton","#audioBtn"),null==this||this.uiDefaultButtonVisibilty("stopButton","#stopBtn"),null==this||this.uiDefaultButtonVisibilty("connectionStrengthIcon","#connection"),null==this||this.uiDefaultButtonVisibilty("micButton","#micBtn"),this.uiElementsVisibility(!0)}).bind(this)),this.uiElementsVisibility(!1),this.addTextToConnectOverlay(),this.preventDefaultKeyboardEvents(),null===(c=this.stream)||void 0===c||c.fileTransferHandler.add(e=>{var t;return null===(t=this.stream)||void 0===t?void 0:t.fileDownload(e.filename)}),this.syncAfkOverlayFromWhiteLabelling()}addLoveLetterhandler(){var e,t;null===(t=null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.loveLetterHandler)||void 0===t||t.add(e=>{var t,n,i;if((null==this?void 0:this.playOverlay)&&e&&(null==this?void 0:this.parentElement)){const s=null===(t=null==this?void 0:this.parentElement)||void 0===t?void 0:t.querySelector("#infoOverlay");if(s){null===(n=null==s?void 0:s.classList)||void 0===n||n.remove("hiddenState");const t=null==s?void 0:s.querySelector("#messageOverlayInner");t&&(t.innerHTML=null===(i=null==e?void 0:e.reason)||void 0===i?void 0:i.replace("LL: ",""))}}try{(null==e?void 0:e.reason)&&this.pushLetter(e.reason)}catch(e){}})}initLoveLettersContainer(){var e;if(this.loveLettersContainer)return;const t=new u.O;this.logoLoader=t;const n=document.createElement("div");this.loveLettersContainer=n,n.classList.add("love-letters-box-root");const i=document.createElement("div");i.id="letters-block";const s=document.createElement("div");s.id="letters-wrapper";const r=t.arcwareLogoLoader;i.appendChild(r),null===(e=t.setHostElement)||void 0===e||e.call(t,r),n.appendChild(i),i.appendChild(s),this.tryAttachLoveLettersContainer()}tryAttachLoveLettersContainer(){var e,t,n,i,s,r;const o=this.loveLettersContainer;if(!o)return;if(o.parentElement)return;const a=null!==(r=null!==(t=null===(e=this.stream)||void 0===e?void 0:e.videoElementParent)&&void 0!==t?t:null===(s=null===(i=null===(n=this.webRtcController)||void 0===n?void 0:n.videoPlayer)||void 0===i?void 0:i.getVideoParentElement)||void 0===s?void 0:s.call(i))&&void 0!==r?r:null;a?a.appendChild(o):this._loveLettersAttachTimer||(this._loveLettersAttachTimer=window.setInterval(()=>{var e,t,n,i,s,r;const o=null!==(r=null!==(t=null===(e=this.stream)||void 0===e?void 0:e.videoElementParent)&&void 0!==t?t:null===(s=null===(i=null===(n=this.webRtcController)||void 0===n?void 0:n.videoPlayer)||void 0===i?void 0:i.getVideoParentElement)||void 0===s?void 0:s.call(i))&&void 0!==r?r:null;o&&this.loveLettersContainer&&!this.loveLettersContainer.parentElement&&(o.appendChild(this.loveLettersContainer),window.clearInterval(this._loveLettersAttachTimer),this._loveLettersAttachTimer=void 0)},50))}pushLetter(e){var t;this.loveLettersQueue.push(e),console.log(this.stream.config.settings.fetchRemoteWhiteLabelling),(null===(t=this.stream.config.settings.whiteLabelling)||void 0===t?void 0:t.hideLoveLetters)&&this.stream.config.settings.fetchRemoteWhiteLabelling||this.isProcessingQueue||this.processLoveLetterQueue()}processLoveLetterQueue(){this.isProcessingQueue=!0;const e=this.loveLettersQueue.shift();if(void 0!==e){const t=e.replace(/LL: |\.$/g,"");this.loveLettersList.push(t),(new p.O).addLetter(t,this.loveLettersList.length),setTimeout(()=>{this.processLoveLetterQueue()},1e3)}else this.isProcessingQueue=!1}handleRemoveLoveLetters(){const e=document.querySelector(".love-letters-box-root");setTimeout(()=>{e&&e.classList.add("fade-out")},1e3),setTimeout(()=>{e&&e.parentNode&&e.parentNode.removeChild(e)},1600)}createMicrophoneOverlay(){var e;null===(e=this.microphoneOverlay)||void 0===e||e.createOverlay()}removeXRIconIfDisabled(){var e,t,n,i,s,o;if(!(null===(n=null===(t=null===(e=this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.initialSettings)||void 0===n?void 0:n.XRControllerInput)){null===(s=null===(i=this.stream)||void 0===i?void 0:i.config)||void 0===s||s.setFlagEnabled(r.iI.XRControllerInput,!1);const e=null===(o=this.stream)||void 0===o?void 0:o.videoElementParent;if(null==e?void 0:e.parentElement){const t=e.parentElement.querySelector("#xrBtn");null==t||t.remove()}}}applyBrandingFromSettings(e){var t,n,i,s,r,o,a,l,d,c,h,u,m,p,g;const f=null!==(i=null!=e?e:null===(n=null===(t=this.stream)||void 0===t?void 0:t.config)||void 0===n?void 0:n.settings.whiteLabelling)&&void 0!==i?i:{};try{this.logoLoader&&(null===(r=(s=this.logoLoader).setImage)||void 0===r||r.call(s,S(f.loadingIconUrl)),null===(a=(o=this.logoLoader).setFade)||void 0===a||a.call(o,f.loadingIconFadeMs))}catch(e){}const v=null!==(m=null!==(l=this.loveLettersContainer)&&void 0!==l?l:null===(u=null===(h=null===(c=null===(d=this.webRtcController)||void 0===d?void 0:d.videoPlayer)||void 0===c?void 0:c.getVideoParentElement)||void 0===h?void 0:h.call(c))||void 0===u?void 0:u.parentElement)&&void 0!==m?m:null;if(!v)return;const y=v.style;y.removeProperty("background-image"),y.removeProperty("background-size"),y.removeProperty("background-repeat"),y.removeProperty("background-position"),y.removeProperty("background-color"),y.setProperty("background","initial"),v.classList.remove("aw-splash"),this.destroySplashVideo();const b=!!f.splashScreenUrl,w=!!f.splashScreenBgColor;if(!b&&!w)return;v.classList.add("aw-splash");const C=null!==(p=f.splashScreenBgColor)&&void 0!==p?p:"var(--color0)";y.setProperty("background-color",C,"important");const E=this.isVideoUrl(f.splashScreenUrl);if(b&&E){const e="cover"===f.splashScreenMode?"cover":"stretch"===f.splashScreenMode?"fill":"contain",t=f.splashScreenPosition||"center center";this.upsertSplashVideo(S(f.splashScreenUrl),{fit:e,position:t,bgColor:C}),y.backgroundImage="none",y.backgroundRepeat="no-repeat",y.backgroundPosition="center center",y.backgroundSize="auto"}else if(b){switch(null!==(g=f.splashScreenMode)&&void 0!==g?g:"contain"){case"contain":y.backgroundSize="contain",y.backgroundRepeat="no-repeat";break;case"cover":y.backgroundSize="cover",y.backgroundRepeat="no-repeat";break;case"stretch":y.backgroundSize="100% 100%",y.backgroundRepeat="no-repeat";break;case"repeat":y.backgroundSize="auto",y.backgroundRepeat="repeat"}y.backgroundPosition=f.splashScreenPosition||"center center",y.backgroundImage=`url(${JSON.stringify(S(f.splashScreenUrl))})`}else y.backgroundImage="none",y.backgroundRepeat="no-repeat",y.backgroundPosition="center center",y.backgroundSize="auto"}ensureSplashHost(){var e,t,n,i,s,r;const o=null!==(r=null!==(e=this.loveLettersContainer)&&void 0!==e?e:null===(s=null===(i=null===(n=null===(t=this.webRtcController)||void 0===t?void 0:t.videoPlayer)||void 0===n?void 0:n.getVideoParentElement)||void 0===i?void 0:i.call(n))||void 0===s?void 0:s.parentElement)&&void 0!==r?r:null;return o?(this._splashHost=o,"static"===getComputedStyle(this._splashHost).position&&(this._splashHost.style.position="relative"),this._splashHost):null}destroySplashVideo(){if(this._splashVideo){try{this._splashVideo.pause()}catch(e){}try{this._splashVideo.remove()}catch(e){}this._splashVideo=void 0}}upsertSplashVideo(e,t){var n,i;const s=this.ensureSplashHost();if(!s)return;let r=this._splashVideo;r||(r=document.createElement("video"),r.playsInline=!0,r.setAttribute("webkit-playsinline","true"),r.muted=!0,r.autoplay=!0,r.loop=!0,r.style.position="absolute",r.style.inset="0",r.style.width="100%",r.style.height="100%",r.style.objectFit="contain",r.style.objectPosition="center center",r.style.pointerEvents="none",r.style.zIndex="0",s.appendChild(r),this._splashVideo=r),r.src=e,r.style.objectFit=null!==(n=t.fit)&&void 0!==n?n:"contain",r.style.objectPosition=null!==(i=t.position)&&void 0!==i?i:"center center",t.bgColor&&s.style.setProperty("background-color",t.bgColor,"important"),r.style.display="",r.play().catch(()=>{})}hideSplashVideo(){if(this._splashVideo){try{this._splashVideo.pause()}catch(e){}this._splashVideo.style.display="none"}}isVideoUrl(e){if(!e)return!1;const t=e.split("?")[0].toLowerCase();return t.startsWith("blob:")||t.endsWith(".mp4")||t.endsWith(".webm")||t.endsWith(".ogg")||t.endsWith(".ogv")||t.endsWith(".m3u8")}uiElementsVisibility(e){var t,n,i,s,r,o,a,l,d,c;const h=null===(t=null==this?void 0:this.parentElement)||void 0===t?void 0:t.querySelector("#controls");h&&(e?(null===(n=null==h?void 0:h.classList)||void 0===n||n.remove("hidden"),null===(i=null==h?void 0:h.classList)||void 0===i||i.add("visible")):(null===(s=null==h?void 0:h.classList)||void 0===s||s.remove("visible"),null===(r=null==h?void 0:h.classList)||void 0===r||r.add("hidden")));const u=null===(o=null==this?void 0:this.parentElement)||void 0===o?void 0:o.querySelector("#connection");u&&(e?(null===(a=null==u?void 0:u.classList)||void 0===a||a.remove("hidden"),null===(l=null==u?void 0:u.classList)||void 0===l||l.add("visible")):(null===(d=null==u?void 0:u.classList)||void 0===d||d.remove("visible"),null===(c=null==u?void 0:u.classList)||void 0===c||c.add("hidden")))}adjustSettingsPanel(){var e,t,n,i,s,r,l,d,u,m,p,g,f,v;const y=null===(e=null==this?void 0:this.ArcwareSection)||void 0===e?void 0:e.parentElement;y&&(null==y||y.removeChild(null==this?void 0:this.ArcwareSection),null==y||y.insertBefore(null==this?void 0:this.ArcwareSection,null==y?void 0:y.firstChild));const S=null===(t=null==this?void 0:this.settingsPanel)||void 0===t?void 0:t.settingsContentElement;if(S){S.style.minWidth="400px";for(const e in C)b.test(e)?E(e,w(S,e)):E(e,S.querySelector(e));const e=w(S,"['Restart Stream'] section > div.setting");if(e){const t=null==e?void 0:e.querySelector("div");t&&(t.textContent="Reconnect to Stream");const n=null==e?void 0:e.querySelector("label > input");n&&(n.value="reconnect")}}{const e=document.createElement("div");null===(n=null==e?void 0:e.classList)||void 0===n||n.add("setting"),e.textContent="Keep in mind, these settings will be applied in your current session only.",e.style.paddingBottom="15px",null===(i=null==this?void 0:this.ArcwareSection)||void 0===i||i.appendChild(e)}null===(s=null==this?void 0:this.ArcwareSection)||void 0===s||s.appendChild(new c.J(new o.T(null===(r=null==T?void 0:T.Flags)||void 0===r?void 0:r.noSession,"Disable SessionId","Disable sessionId based reconnection.",null===(d=null===(l=null==this?void 0:this.stream)||void 0===l?void 0:l.session)||void 0===d?void 0:d.noSession,!0)).rootElement),null===(u=null==this?void 0:this.ArcwareSection)||void 0===u||u.appendChild(new h.I(new a.c("signalling-url","Signalling URL","Signalling URL",`${null===(p=null===(m=null==this?void 0:this.stream)||void 0===m?void 0:m.config)||void 0===p?void 0:p.getTextSettingValue("ss")}?${null===(v=null===(f=null===(g=null==this?void 0:this.stream)||void 0===g?void 0:g.config)||void 0===f?void 0:f.urlFlags)||void 0===v?void 0:v.slice(1)}`,!1)).rootElement)}createAudioToggleButton(){var e;const t=new m.T(null==this?void 0:this.stream),n=(null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.videoElementParent).parentElement;if(n){const e=null==n?void 0:n.querySelector("#uiFeatures");if(e){const n=null==e?void 0:e.querySelector("#controls");n&&(null==n||n.appendChild(null==t?void 0:t.element))}}}createMicToggleButton(){var e;const t=new g.K(null==this?void 0:this.stream),n=(null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.videoElementParent).parentElement;if(n){const e=null==n?void 0:n.querySelector("#uiFeatures");if(e){const n=null==e?void 0:e.querySelector("#controls");n&&(null==n||n.appendChild(null==t?void 0:t.element))}}}createStopButton(){var e,t,n,i;if(!0===(null===(n=null===(t=null===(e=this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.settings)||void 0===n?void 0:n.stopButton)){const e=new v.Z(null==this?void 0:this.stream),t=(null===(i=null==this?void 0:this.stream)||void 0===i?void 0:i.videoElementParent).parentElement;if(t){const n=null==t?void 0:t.querySelector("#uiFeatures");if(n){const t=null==n?void 0:n.querySelector("#controls");t&&(null==t||t.appendChild(null==e?void 0:e.element))}}}}applyCustomStyling(e){var t,n,i,s,r,o,a;const{buttons_position:l,buttons_orientation:d,buttons_reverse:c}=this.stream.config.customization,{buttons_position:h,buttons_orientation:u,buttons_reverse:m}=null!==(r=null===(s=null===(i=null===(n=null===(t=null==this?void 0:this.stream)||void 0===t?void 0:t.streamInfo)||void 0===n?void 0:n.streamInfo)||void 0===i?void 0:i.webSdkSettings)||void 0===s?void 0:s.customization)&&void 0!==r?r:{},p=null!=e?e:{position:h||l||"Bottom-Right",orientation:u||d||"Vertical",order_reverse:null!==(o=null!=m?m:c)&&void 0!==o&&o},g=null===(a=null==this?void 0:this.stream)||void 0===a?void 0:a.videoElementParent,f=null==g?void 0:g.parentElement;if(!f)return;const v=f.querySelector("#uiFeatures");if(v&&(Object.values(y.a.uiFeatures.buttons_position).forEach(e=>v.classList.remove(e)),Object.values(y.a.uiFeatures.buttons_orientation).forEach(e=>v.classList.remove(e)),v.classList.remove(y.a.uiFeatures.buttons_reverse),v.classList.add(y.a.uiFeatures.buttons_position[p.position]),v.classList.add(y.a.uiFeatures.buttons_orientation[p.orientation]),p.order_reverse&&v.classList.add(y.a.uiFeatures.buttons_reverse),"Bottom-Left"===p.position)){const e=document.getElementById("connection");e&&(e.style.right="10px",e.style.left="auto")}}uiDefaultButtonVisibilty(e,t){var n,i,s;if(null==this?void 0:this.parentElement){const r=null===(n=null==this?void 0:this.parentElement)||void 0===n?void 0:n.querySelector(t);if(!1===(null===(s=null===(i=null==this?void 0:this.stream)||void 0===i?void 0:i.config)||void 0===s?void 0:s.settings[e])&&r){null==r||r.remove();const t=this.uiFeaturesElement,n=t.querySelector("#stats-panel"),i=t.querySelector("#settings-panel");t&&("infoButton"===e&&(null==n||n.remove()),"settingsButton"===e&&(null==i||i.remove()))}const o=/iPad|iPhone|iPod/.test(null===navigator||void 0===navigator?void 0:navigator.userAgent);"fullscreenButton"===e&&o&&r&&(null==r||r.remove())}}preventDefaultKeyboardEvents(){this.videoElementParent&&(this.videoElementParent.addEventListener("keydown",function(e){"Tab"!==e.key&&" "!==e.key&&"Spacebar"!==e.key||(e.preventDefault(),e.stopPropagation())},!0),this.uiFeaturesElement.querySelectorAll("button").forEach(e=>{e.addEventListener("keydown",function(t){" "!==t.key&&"Spacebar"!==t.key||(t.preventDefault(),e.blur())})}))}autoPlayHandler(e){var t;const{videoPlayer:n}=null==this?void 0:this.webRtcController,i=null===(t=null==e?void 0:e.streamInfo)||void 0===t?void 0:t.autoPlay,s=null==n?void 0:n.isPaused();if(i&&s&&n){const e=null==n?void 0:n.getVideoElement();if(e){const t=null==e?void 0:e.parentElement;if(t){const e=null==t?void 0:t.querySelector("#playOverlay");e&&(null==e||e.remove())}null==e||e.play()}}}getApplicationResponse(e){var t;null===(t=null==this?void 0:this.stream)||void 0===t||t.applicationResponseHandler.add(e)}onApplicationResponse(e){return this.stream.applicationResponseHandler.add(e),()=>this.stream.applicationResponseHandler.remove(e)}applyArcwareStyles(){const e=new d.e(y.y);null==e||e.applyStyleSheet()}emitUIInteraction(e){var t;e&&(null===(t=null==this?void 0:this.stream)||void 0===t||t.emitUIInteraction(e))}addTextToConnectOverlay(){var e,t,n,i;if(!(null===(n=null===(t=null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.initialSettings)||void 0===n?void 0:n.AutoConnect)&&this.videoElementParent){const e=null===(i=null==this?void 0:this.parentElement)||void 0===i?void 0:i.querySelector("#connectOverlay");if(e){const t=document.createElement("div");t.className="connection-text",e.appendChild(t);const n=document.createElement("p");n.className="title",n.textContent="Click on the button below to start the connection to the streaming.",t.appendChild(n);const i=document.createElement("p");i.className="subtitle",i.textContent="After clicking the button, it may take a few seconds for the connection to start. Don't worry if you don't see an immediate reaction.",t.appendChild(i)}}}syncAfkOverlayFromWhiteLabelling(){var e;const t=null===(e=this.stream.config.settings.whiteLabelling)||void 0===e?void 0:e.hideAfkOverlay;this.showAfkOverlay=t?(e,t)=>{}:this.baseShowAfkOverlay}}T.Flags=(i=class{},(0,s.yV)(i,"Flags"),i.noSession="noSession",i)},6063(e,t,n){n.d(t,{a:()=>l});var i=n(2886),s=n(2451),r=n(6689);let o=null,a=null;function l(e,t,n=!1,l=!1){const{shareId:d,projectId:c}=e,{PixelStreaming:h,Config:u}=(0,r.J)(new i.g({useUrlParams:!0===(null==t?void 0:t.useUrlParams),initialSettings:null==t?void 0:t.initialSettings,settings:Object.assign({shareId:d,projectId:c},null==t?void 0:t.settings),customization:null==t?void 0:t.customization,envName:null==t?void 0:t.envName}),void 0,{forceRefresh:n,allowMultipleInstances:l});if(l)return{Config:u,PixelStreaming:h,Application:new s.I({stream:h})};if(o&&a===h&&!n)return{Config:u,PixelStreaming:h,Application:o};if(o)try{o.stream.disconnect()}catch(e){}const m=new s.I({stream:h});return o=m,a=h,{Config:u,PixelStreaming:h,Application:m}}},5007(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this.arcwareLogoLoader=this.createArcwareLogoLoader()}createArcwareLogoLoader(){const e=document.createElement("div");return e.classList.add("arcware-logo-loader"),e.innerHTML=this.getSvg(),e}setHostElement(e){this._hostEl=e}setImage(e){var t,n;if(this._hostEl){if(!this._imgEl){const e=document.createElement("img");e.alt="Loading",e.style.display="none",this._hostEl.appendChild(e),this._imgEl=e}if(e&&e.trim()){null===(t=this._hostEl)||void 0===t||t.classList.add("aw-custom-loader"),this._imgEl.src!==e&&(this._imgEl.src=e),this._imgEl.style.display="";const n=this._hostEl.querySelector("svg");n&&(n.style.display="none")}else{null===(n=this._hostEl)||void 0===n||n.classList.remove("aw-custom-loader"),this._imgEl.style.display="none";const e=this._hostEl.querySelector("svg");e&&(e.style.display="")}}}setFade(e){if(!this._hostEl)return;const t=Number(e)||0;t>0?(this._hostEl.style.setProperty("--aw-fade",`${t}ms`),this._hostEl.classList.add("pulse")):(this._hostEl.classList.remove("pulse"),this._hostEl.style.removeProperty("--aw-fade"))}getSvg(){return'\n <svg width="42" height="80" viewBox="0 0 42 80" xmlns="http://www.w3.org/2000/svg">\n <style>\n @keyframes ripple-1-down {\n 0%, 50% { translate: 0 0; }\n 60%, 100% { translate: 0 5px; }\n }\n @keyframes ripple-1-up {\n 0%, 50% { translate: 0 0; }\n 60%, 100% { translate: 0 -5px; }\n }\n @keyframes ripple-2-down {\n 0%, 55% { translate: 0 0; }\n 65%, 100% { translate: 0 5px; }\n }\n @keyframes ripple-3-down {\n 0%, 60% { translate: 0 0; }\n 70%, 100% { translate: 0 5px; }\n }\n @keyframes ripple-3-up {\n 0%, 60% { translate: 0 0; }\n 70%, 100% { translate: 0 -5px; }\n }\n @keyframes ripple-4-up {\n 0%, 65% { translate: 0 0; }\n 75%, 100% { translate: 0 -5px; }\n }\n\n .ripple-1-down { animation: ripple-1-down 0.6s infinite alternate; }\n .ripple-1-up { animation: ripple-1-up 0.6s infinite alternate; }\n .ripple-2-down { animation: ripple-2-down 0.6s infinite alternate; }\n .ripple-3-down { animation: ripple-3-down 0.6s infinite alternate; }\n .ripple-3-up { animation: ripple-3-up 0.6s infinite alternate; }\n .ripple-4-up { animation: ripple-4-up 0.6s infinite alternate; }\n </style>\n\n <g class="ripple-1-down" fill="#f1f1f1">\n <rect y="38" width="6" height="22" />\n </g>\n <g class="ripple-1-up" fill="#f1f1f1">\n <rect y="10" width="6" height="22" />\n </g>\n <g class="ripple-2-down" fill="#f1f1f1">\n <rect x="12" width="6" height="32" />\n <rect x="12" y="38" width="6" height="22" />\n </g>\n <g class="ripple-3-down" fill="#f1f1f1">\n <rect x="24" y="38" width="6" height="22" />\n </g>\n <g class="ripple-3-up" fill="#f1f1f1">\n <rect x="24" y="10" width="6" height="22" />\n </g>\n <g class="ripple-4-up" fill="#f1f1f1">\n <rect x="36" y="10" width="6" height="22" />\n <rect x="36" y="38" width="6" height="32" />\n </g>\n </svg>\n '}}},9399(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this.audioIconUnmuted=this.createAudioIconUnmuted(),this.audioIconMuted=this.createAudioIconMuted()}createAudioIconUnmuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","audioIconUnmuted"),t.setAttributeNS(null,"x","31px"),t.setAttributeNS(null,"y","28px"),t.setAttributeNS(null,"viewBox","0 0 31 28");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M21.0008,0.0720318C20.556,-0.117811,20.0379,0.0805569,19.8435,0.514827C19.6492,0.949098,19.8522,1.45512,20.297,1.6449C25.1233,3.70434,28.242,8.35761,28.2422,13.4998C28.2422,18.6423,25.1234,23.2957,20.2966,25.3551C19.8518,25.5448,19.6488,26.0508,19.8431,26.4852C19.9874,26.8077,20.3102,27,20.649,27C20.7664,27,20.8859,26.9769,21.0004,26.928C26.4674,24.5954,30,19.3246,30,13.4997C29.9998,7.67531,26.4674,2.40462,21.0008,0.0720318Z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");s.setAttributeNS(null,"d","M21.2351,6.69434C20.8735,6.37822,20.3179,6.4082,19.9941,6.76134C19.6703,7.11454,19.701,7.65706,20.0627,7.97324C21.6712,9.37932,22.5937,11.3937,22.5937,13.5C22.5937,15.6062,21.6711,17.6206,20.0627,19.0267C19.701,19.3428,19.6703,19.8854,19.9941,20.2386C20.1677,20.4279,20.4079,20.5244,20.6492,20.5244C20.8579,20.5244,21.0674,20.4522,21.2351,20.3056C23.2157,18.5744,24.3515,16.0937,24.3515,13.4999C24.3515,10.9061,23.2156,8.42553,21.2351,6.69434Z");const r=document.createElementNS("http://www.w3.org/2000/svg","path");return r.setAttributeNS(null,"d","M15.3973,2.16277C15.1018,2.01658,14.7473,2.04502,14.4803,2.23623L7.65176,7.12598H0.878906C0.393516,7.12598,0,7.51024,0,7.98422V19.0155C0,19.4895,0.393516,19.8738,0.878906,19.8738H7.6517L14.4802,24.7637C14.6339,24.8737,14.8164,24.9298,15.0001,24.9298C15.1356,24.9298,15.2718,24.8992,15.3973,24.8371C15.6927,24.6909,15.8789,24.395,15.8789,24.0716V2.9282C15.8789,2.60482,15.6927,2.30884,15.3973,2.16277ZM14.121,22.3778L8.45918,18.3234C8.30842,18.2154,8.12637,18.1572,7.93939,18.1572H1.75781V8.84246H7.93939C8.12631,8.84246,8.30842,8.78422,8.45912,8.67636L14.121,4.62197V22.3778Z"),n.appendChild(i),n.appendChild(s),n.appendChild(r),t}createAudioIconMuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","audioIconMuted"),t.setAttributeNS(null,"x","31px"),t.setAttributeNS(null,"y","28px"),t.setAttributeNS(null,"viewBox","0 -1 31 28");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");i.setAttributeNS(null,"d","M16.3501,0.829286C16.046,0.678799,15.6811,0.708072,15.4062,0.904912L8.37681,5.93848H1.40476C0.90509,5.93848,0.5,6.33404,0.5,6.82196V18.1777C0.5,18.6657,0.90509,19.0612,1.40476,19.0612H8.37675L15.4061,24.0949C15.5643,24.2082,15.7522,24.2659,15.9412,24.2659C16.0808,24.2659,16.221,24.2344,16.3501,24.1705C16.6542,24.02,16.8459,23.7154,16.8459,23.3825V1.61724C16.8459,1.28434,16.6542,0.979655,16.3501,0.829286ZM15.0364,21.6389L9.20798,17.4652C9.05278,17.3541,8.86538,17.2942,8.6729,17.2942H2.30951V7.70544H8.6729C8.86532,7.70544,9.05278,7.64548,9.20792,7.53446L15.0364,3.36082V21.6389Z");const s=document.createElementNS("http://www.w3.org/2000/svg","path");return s.setAttributeNS(null,"d","M25.2799,11.7634L21.8442,8.32748C21.6206,8.10399,21.6206,7.74264,21.8442,7.51915C22.0676,7.29566,22.429,7.29566,22.6525,7.51915L26.0883,10.955L29.524,7.51915C29.7476,7.29566,30.1088,7.29566,30.3323,7.51915C30.5559,7.74264,30.5559,8.10399,30.3323,8.32748L26.8966,11.7634L30.3323,15.1992C30.5559,15.4227,30.5559,15.7841,30.3323,16.0076C30.2209,16.1191,30.0745,16.1751,29.9281,16.1751C29.7818,16.1751,29.6355,16.1191,29.524,16.0076L26.0883,12.5717L22.6525,16.0076C22.541,16.1191,22.3947,16.1751,22.2483,16.1751C22.102,16.1751,21.9556,16.1191,21.8442,16.0076C21.6206,15.7841,21.6206,15.4227,21.8442,15.1992L25.2799,11.7634Z"),n.appendChild(i),n.appendChild(s),t}}},2352(e,t,n){n.d(t,{T:()=>s});var i=n(9399);class s{constructor(e){this.stream=e,this.setAudioMutedByDefault(),this.button=this.createButton(),this.audioIcon=new i.O,this.tooltipText=this.createTooltipText(),this.button.appendChild(this.tooltipText),this.button.appendChild(this.audioIcon.audioIconMuted),this.button.appendChild(this.audioIcon.audioIconUnmuted),this.audioIcon.audioIconUnmuted.style.display="none",this.button.addEventListener("click",this.toggleAudio.bind(this)),this.onVolumeChange=this.onVolumeChange.bind(this),this.stream.webRtcController.videoPlayer.videoElement.addEventListener("volumechange",this.onVolumeChange.bind(this))}setAudioMutedByDefault(){const e=this.stream.videoElementParent;if(e){const t=e.querySelector("video");t&&this.stream.toggleAudio(t,!0)}}createButton(){var e;const t=document.createElement("button");return null==t||t.setAttribute("id","audioBtn"),null==t||t.setAttribute("type","button"),null===(e=null==t?void 0:t.classList)||void 0===e||e.add("UiTool"),t}createTooltipText(){var e;const t=document.createElement("span");return null===(e=null==t?void 0:t.classList)||void 0===e||e.add("tooltiptext"),t.innerHTML="Mute/Unmute",t}toggleAudio(){const e=this.stream.videoElementParent;if(e){const t=e.querySelector("video");if(t){const e=!t.muted;this.stream.toggleAudio(t,e),this.updateAudioIcon(e)}}}updateAudioIcon(e){e?(this.audioIcon.audioIconUnmuted.style.display="none",this.audioIcon.audioIconMuted.style.display="block"):(this.audioIcon.audioIconMuted.style.display="none",this.audioIcon.audioIconUnmuted.style.display="block")}get element(){return this.button}onVolumeChange(e){const t=e.target;this.updateAudioIcon(t.muted)}}},8403(e,t,n){n.d(t,{O:()=>i});class i{constructor(){this.loveLettersRoot=null}addLetter(e,t){var n;const i=document.querySelector("#letters-wrapper"),s=document.createElement("p");s.textContent=e,null===(n=null==s?void 0:s.classList)||void 0===n||n.add("letter-animation","letter-animation-enter"),i&&(i.appendChild(s),this.updateOpacity(t)),setTimeout(()=>{var e;null===(e=null==s?void 0:s.classList)||void 0===e||e.remove("letter-animation-enter"),null==s||s.addEventListener("transitioned",()=>{this.updateOpacity(t)})},1e3)}updateOpacity(e){const t=document.querySelectorAll("#letters-block p"),n=1.2/t.length;t.forEach((i,s)=>{var r;const o=i,a=.6-(t.length-1-s)*n*.6;e!==s+1?(o.style.opacity=Math.max(0,a).toString(),null===(r=null==o?void 0:o.classList)||void 0===r||r.add("letter-animation-exit")):o.style.opacity="1"})}}},3389(e,t,n){n.d(t,{K:()=>r});var i=n(223),s=n(9744);class r{constructor(e){this.stream=e,this.setMicMutedByDefault(),this.button=this.createButton(),this.micIcon=new s.L,this.tooltipText=this.createTooltipText(),this.button.appendChild(this.tooltipText),this.button.appendChild(this.micIcon.micIconMuted),this.button.appendChild(this.micIcon.micIconUnmuted),this.micIcon.micIconUnmuted.style.display="none",this.button.addEventListener("click",this.toggleMic.bind(this))}setMicMutedByDefault(){const e=this.stream.videoElementParent;e&&e.querySelector("video")&&this.stream.toggleMic(!1,!0)}createButton(){var e;const t=document.createElement("button");return t.setAttribute("id","micBtn"),t.setAttribute("type","button"),null===(e=null==t?void 0:t.classList)||void 0===e||e.add("UiTool"),t}createTooltipText(){var e;const t=document.createElement("span");return null===(e=null==t?void 0:t.classList)||void 0===e||e.add("tooltiptext"),t.innerHTML="Mic on/off",t}toggleMic(){var e,t;const n=null===(t=null===(e=null==this?void 0:this.stream)||void 0===e?void 0:e.config)||void 0===t?void 0:t.isFlagEnabled(i.iI.UseMic);this.stream.toggleMic(!n,!1),this.updateMicIcon(!n)}updateMicIcon(e){e?(this.micIcon.micIconMuted.style.display="none",this.micIcon.micIconUnmuted.style.display="block"):(this.micIcon.micIconUnmuted.style.display="none",this.micIcon.micIconMuted.style.display="block")}get element(){return this.button}}},9744(e,t,n){n.d(t,{L:()=>i});class i{constructor(){this.micIconUnmuted=this.createMicIconUnmuted(),this.micIconMuted=this.createMicIconMuted()}createMicIconUnmuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","micIconUnmuted"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 -1 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M12 14c1.66,0,2.99-1.34,2.99-3L15,5c0-1.66-1.34-3-3-3S9,3.34,9,5v6c0,1.66,1.34,3,3,3zm5.3-3c0,3-2.54,5.1-5.3,5.1S6.7,14,6.7,11H5c0,3.41,2.72,6.23,6,6.72V21h2v-3.28c3.28-.48,6-3.3,6-6.72h-1.7z"),n.appendChild(i),t}createMicIconMuted(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","micIconMuted"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 -1 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M19,11h-1.7c0,.74-.16,1.43-.43,2.05l1.23,1.23c.56-.98.9-2.09.9-3.28zm-4.02.17c0-.06.02-.11.02-.17V5c0-1.66-1.34-3-3-3S9,3.34,9,5v.18l5.98,5.99zM4.27,3,3,4.27l6.01,6.01V11c0,1.66,1.33,3,2.99,3,.22,0,.44-.03.65-.08l1.66,1.66c-.71.33-1.5.52-2.31.52-2.76,0-5.3-2.1-5.3-5.1H5c0,3.41,2.72,6.23,6,6.72V21h2v-3.28c.91-.13,1.77-.45,2.54-.9L19.73,21,21,19.73,4.27,3z"),n.appendChild(i),t}}},3910(e,t,n){n.d(t,{j:()=>s});var i=n(9744);class s{constructor(e){this.overlay=null,this.stream=e,this.micIcon=new i.L,this.parentElement=null==e?void 0:e.videoElementParent}createOverlay(){var e,t;if(this.parentElement){this.overlay&&(this.parentElement.removeChild(this.overlay),this.overlay=null),this.overlay=document.createElement("div"),this.overlay.id="microphoneOverlay",null===(t=null===(e=this.overlay)||void 0===e?void 0:e.classList)||void 0===t||t.add("hiddenState"),this.overlay.appendChild(this.micIcon.micIconUnmuted),this.overlay.appendChild(this.micIcon.micIconMuted),this.micIcon.micIconMuted.style.display="none";const n=document.createElement("div");n.className="title",n.textContent="Enabling microphone...";const i=document.createElement("p");i.textContent="Please check your browser's prompt to allow microphone access. You may also need to re-enable the sound.",this.overlay.appendChild(n),this.overlay.appendChild(i),this.parentElement.appendChild(this.overlay)}}toggleMessage(e){if(this.parentElement&&this.overlay){const t=this.overlay.querySelector(".title"),n=this.overlay.querySelector("p");this.micIcon.micIconMuted.style.display=e?"none":"block",this.micIcon.micIconUnmuted.style.display=e?"block":"none",t&&(t.textContent=e?"Enabling microphone":"Disabling microphone"),n&&(n.textContent=e?"Please check your browser's prompt to allow microphone access. You may also need to re-enable the sound.":"Please wait. You may need to re-enable the sound.")}}toggleVisibility(e){var t,n,i,s,r,o,a,l,d,c,h,u,m;if(this.parentElement){const p=null===(t=null==this?void 0:this.parentElement)||void 0===t?void 0:t.querySelector("#infoOverlay"),g=null===(n=null==this?void 0:this.parentElement)||void 0===n?void 0:n.querySelector("#disconnectOverlay"),f=null===(i=null==this?void 0:this.parentElement)||void 0===i?void 0:i.querySelector("#errorOverlay"),v="mic-overlay-is-visible";this.overlay&&p&&g&&f&&(e?(null===(s=null==p?void 0:p.classList)||void 0===s||s.add(v),null===(r=null==g?void 0:g.classList)||void 0===r||r.add(v),null===(o=null==f?void 0:f.classList)||void 0===o||o.add(v),null===(l=null===(a=null==this?void 0:this.overlay)||void 0===a?void 0:a.classList)||void 0===l||l.remove("hiddenState")):(null===(c=null===(d=null==this?void 0:this.overlay)||void 0===d?void 0:d.classList)||void 0===c||c.add("hiddenState"),null===(h=null==p?void 0:p.classList)||void 0===h||h.remove(v),null===(u=null==g?void 0:g.classList)||void 0===u||u.remove(v),null===(m=null==f?void 0:f.classList)||void 0===m||m.remove(v)))}}}},761(e,t,n){n.d(t,{u:()=>i});class i{constructor(){this.playIcon=this.createPlayIcon()}createPlayIcon(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","playIcon"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 0 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M8 5v14l11-7z"),n.appendChild(i),t}}},8882(e,t,n){n.d(t,{Z:()=>r});var i=n(99),s=n(761);class r{constructor(e){this.isStreaming=!0,this.stream=e,this.button=this.createButton(),this.stopIcon=new i.w,this.playIcon=new s.u,this.tooltipText=this.createTooltipText(),this.button.appendChild(this.tooltipText),this.button.appendChild(this.stopIcon.stopIcon),this.button.addEventListener("click",this.toggleStreaming.bind(this)),e.onStreamingStateChange(this.updateButtonState.bind(this))}createButton(){var e;const t=document.createElement("button");return null==t||t.setAttribute("id","stopBtn"),null==t||t.setAttribute("type","button"),null===(e=null==t?void 0:t.classList)||void 0===e||e.add("UiTool"),t}createTooltipText(){var e;const t=document.createElement("span");return null===(e=null==t?void 0:t.classList)||void 0===e||e.add("tooltiptext"),t.innerHTML="Disconnect",t}toggleStreaming(){this.isStreaming=!this.isStreaming,this.updateButtonIcon(),this.isStreaming?this.stream.reconnect():this.stream.disconnect()}updateButtonIcon(){const e=this.isStreaming?this.stopIcon.stopIcon:this.playIcon.playIcon,t=this.isStreaming?"Disconnect":"Reconnect";this.tooltipText.innerHTML=t,this.button.firstChild&&this.button.removeChild(this.button.children[1]),this.button.appendChild(e)}get element(){return this.button}updateButtonState(e){this.isStreaming=e,this.updateButtonIcon()}}},99(e,t,n){n.d(t,{w:()=>i});class i{constructor(){this.stopIcon=this.createStopIcon()}createStopIcon(){var e;const t=document.createElementNS("http://www.w3.org/2000/svg","svg");t.setAttributeNS(null,"id","stopIcon"),t.setAttributeNS(null,"x","24px"),t.setAttributeNS(null,"y","24px"),t.setAttributeNS(null,"viewBox","0 -1 24 24");const n=document.createElementNS("http://www.w3.org/2000/svg","g");null===(e=null==n?void 0:n.classList)||void 0===e||e.add("svgIcon"),null==t||t.appendChild(n);const i=document.createElementNS("http://www.w3.org/2000/svg","path");return i.setAttributeNS(null,"d","M6 6h12v12H6z"),n.appendChild(i),t}}},8816(e,t,n){n.d(t,{a:()=>i,y:()=>s});const i={uiFeatures:{buttons_position:{"Top-Left":"controls__position_tl","Top-Right":"controls__position_tr","Bottom-Left":"controls__position_bl","Bottom-Right":"controls__position_br"},buttons_orientation:{Horizontal:"controls__orientation_h",Vertical:"controls__orientation_v"},buttons_reverse:"controls__order_reverse"}},s={customStyles:{":root":{"--color0":"#18181A !important","--color1":"#000000","--color2":"#FFFFFF","--color3":"#DAF693 !important","--color4":"#35b350","--color5":"#ffab00","--color6":"#858588 !important","--color7":"#B5B5B7 !important","--color8":"#41008c","--color9":"#3e0070","--color10":"#2e0052","--color11":"rgba(65,0,139,1) !important","--color12":"#222224 !important","--color13":"#f0f0f2 !important","--colorBoxShadow":"rgba(0, 0, 0, 0.20) !important"},".aw-splash":{backgroundRepeat:"no-repeat",backgroundPosition:"center center",backgroundSize:"contain",backgroundColor:"var(--color0)"},"@keyframes aw-loader-fade":{from:{opacity:.25},to:{opacity:1}},"#uiFeatures #controls":{display:"flex",flexDirection:"column-reverse",position:"absolute",pointerEvents:"auto",zIndex:99999,gap:"0.5rem"},"#uiFeatures #controls > *":{marginBottom:"0 !important"},"#playerUI *":{fontFamily:"system-ui"},"#shared-stream-container":{boxSizing:"border-box"},"#shared-stream-container::-webkit-scrollbar":{width:"10px"},"#shared-stream-container::-webkit-scrollbar-track":{background:"var(--color13)",opacity:"0.5",borderRadius:"30px",borderTop:"20px solid var(--color0)",borderRight:"5px solid var(--color0)",borderBottom:"20px solid var(--color0)",borderLeft:"5px solid var(--color0)"},"#shared-stream-container::-webkit-scrollbar-track-piece":{background:"transparent"},"#shared-stream-container::-webkit-scrollbar-thumb":{background:"var(--color13)",width:"8px",borderRight:"2px solid var(--color0)",borderLeft:"2px solid var(--color0)",transition:"all ease-in-out 0.3s",borderRadius:"7px"},"#shared-stream-container::-webkit-scrollbar-thumb:hover":{transition:"all ease-in-out 0.3s",background:"var(--color3)"},"#playerUI, #videoElementParent":{position:"absolute",width:"100%",height:"100%",maxWidth:"100%",maxHeight:"100%",top:0,right:0,bottom:0,left:0,margin:"auto",boxSizing:"border-box",pointerEvents:"all"},"#streamingVideo":{maxWidth:"100%",maxHeight:"100%",boxSizing:"border-box",background:"#18181A"},"#uiFeatures.controls__position_tl #controls":{top:"10px",left:"20px",bottom:"auto",right:"auto"},"#uiFeatures.controls__position_tr #controls":{top:"10px",right:"20px",bottom:"auto",left:"auto"},"#uiFeatures.controls__position_bl #controls":{bottom:"10px",left:"20px",top:"auto",right:"auto"},"#uiFeatures.controls__position_br #controls":{bottom:"10px",right:"20px",top:"auto",left:"auto"},"#uiFeatures.controls__orientation_h #controls":{flexDirection:"row-reverse"},"#uiFeatures.controls__orientation_h.controls__order_reverse #controls":{flexDirection:"row"},"#uiFeatures.controls__orientation_v #controls":{flexDirection:"column-reverse"},"#uiFeatures.controls__orientation_v.controls__order_reverse #controls":{flexDirection:"column"},"#uiFeatures #connection":{bottom:"5px",left:"10px",width:"2.5rem",height:"2.5rem"},"#uiFeatures button":{backgroundColor:"var(--color12)",border:"none",position:"relative",width:"45px",height:"45px",padding:"0.5rem",textAlign:"center",cursor:"pointer",display:"flex",flexDirection:"row",justifyContent:"center",alignItems:"center",boxShadow:"0px 0px 24px 0px var(--colorBoxShadow)",borderRadius:"3px",outline:"none"},"#uiFeatures button:hover, #uiFeatures button:active":{padding:"0 !important",border:"none"},"#uiFeatures button #audioIconMuted, #uiFeatures button #audioIconUnmuted, #uiFeatures button #micIconMuted, #uiFeatures button #micIconUnmuted":{width:"31px",height:"28px"},"#uiFeatures button #maximizeIcon, #uiFeatures button #minimizeIcon":{width:"25px",height:"25px"},"#stopIcon, #playIcon":{width:"30px",height:"30px"},"#uiFeatures button .tooltiptext":{right:"125%",left:"auto",boxShadow:"0px 0px 24px 0px var(--colorBoxShadow)",borderRadius:"3px",backgroundColor:"var(--color12)",width:"95px",visibility:"hidden!important"},"@media (hover: hover) and (pointer: fine)":{"#uiFeatures button:hover .tooltiptext":{visibility:"visible!important"}},"#controls>*":{marginBottom:"0.5rem",display:"block",lineHeight:"1.75rem",padding:"0.5rem",backgroundColor:"var(--color12)"},"#uiFeatures #settingsIcon, #uiFeatures #statsIcon":{width:"27px",height:"27px"},".svgIcon":{fill:"var(--color13)"},"#uiFeatures button:hover .svgIcon, #uiFeatures button:active .svgIcon":{fill:"var(--color12)"},".tgl-switch .tgl-slider, .tgl-flat:checked+.tgl-slider":{border:"3px solid transparent"},".tgl-switch .tgl-slider":{background:"none"},".tgl-switch .tgl-slider::before":{content:"''",display:"block",background:"var(--color6)",position:"absolute",height:"50%",width:"90%",borderRadius:"5px",margin:"auto",top:"0",bottom:"0",left:"0",right:"0"},".tgl-switch .tgl-slider::after":{height:"13px",width:"13px",borderRadius:"50%",top:"-2px",left:"-1%"},".tgl-flat:checked+.tgl-slider:after":{left:"62%",background:"var(--color3)"},".form-control":{backgroundColor:"transparent",border:"1px solid var(--color13)",borderRadius:"2px",color:"var(--color13)",textAlign:"left",fontFamily:"inherit",padding:"5px 15px "},".btn-flat":{background:"var(--color3)",color:"var(--color12)",border:"none",padding:"7px 50px",cursor:"pointer",borderRadius:"4px",textTransform:"uppercase",minWidth:"175px"},".btn-flat:disabled":{background:"var(--color7)",borderColor:"var(--color3)",color:"var(--color3)",cursor:"default"},".btn-flat:focus":{outline:"none"},".arcware-logo-loader":{position:"relative",display:"flex",alignItems:"center",justifyContent:"center",width:"12.5%",height:"12.5%",margin:"0 auto",boxSizing:"border-box"},".arcware-logo-loader img":{maxWidth:"40%",maxHeight:"40%",objectFit:"contain",objectPosition:"center center",display:"block",margin:0,verticalAlign:"middle"},".arcware-logo-loader.pulse img":{animation:"aw-loader-fade var(--aw-fade,1200ms) ease-in-out infinite alternate"},".arcware-logo-loader.aw-custom-loader":{width:"auto !important",height:"auto !important"},".arcware-logo-loader.aw-custom-loader img":{display:"block",width:"auto",height:"auto",maxWidth:"80%",maxHeight:"80%",objectFit:"contain",margin:"0 auto"},"#playOverlay img#playButton":{width:"5%"},"#disconnectOverlay, #errorOverlay":{textTransform:"initial",textAlign:"center",fontSize:"20px",lineHeight:2.5},"#disconnectOverlay .clickableState":{textTransform:"initial",textAlign:"center",color:"#DAF693",padding:"5px",fontSize:"18px",border:"1px solid #DAF693",margin:"25px auto 0",width:"180px"},"#afkOverlay":{background:"none",transition:"all ease-in-out 0.5s",opacity:1,pointerEvents:"initial"},"#afkOverlayInner":{textTransform:"initial",background:"#18181A",padding:"20px 10px 30px",fontSize:"18px",width:"360px",textAlign:"center",lineHeight:2.5},"#afkOverlayInner center::first-line":{textTransform:"uppercase",color:"#FF8461",fontWeight:"bold",fontSize:"24px"},"#afkOverlayInner #afkCountDownNumber":{color:"#DAF693",fontSize:"26px",lineHeight:"22px"},"#afkOverlayInner center .retry-button":{textTransform:"initial",textAlign:"center",color:"#DAF693",padding:"5px",fontSize:"18px",border:"1px solid #DAF693",margin:"25px auto 0",width:"180px"},"#connectOverlay #connectButton":{textTransform:"initial",textAlign:"center",color:"#DAF693",padding:"5px 5px 8px",fontSize:"18px",border:"1px solid #DAF693",margin:"25px auto 0",width:"180px"},"#connectOverlay .connection-text":{textTransform:"initial",textAlign:"center",margin:"25px auto 0"},"#connectOverlay .connection-text .title":{color:"#ffffff",fontSize:"18px",margin:"5px 0"},"#connectOverlay .connection-text .subtitle":{color:"#ffffff",opacity:.5,fontSize:"12px",margin:"10px 0"},"#infoOverlay.hiddenState":{display:"none"},"#disconnectOverlay, #playOverlay, #errorOverlay, #microphoneOverlay, #connectOverlay":{background:"#18181A",display:"flex",transition:"all ease-in-out 0.5s",opacity:1,pointerEvents:"initial"},"#microphoneOverlay":{textTransform:"initial",padding:"20px 30px",fontSize:"14px",height:"230px",width:"360px",textAlign:"center",lineHeight:1.25,position:"absolute",margin:"auto",top:"0",bottom:"0",left:"0",right:"0",justifyContent:"center",alignItems:"center",flexDirection:"column",zIndex:99999},"#microphoneOverlay .title":{fontSize:"24px",position:"relative",marginBottom:"20px",color:"#F0F0F2"},"#microphoneOverlay .title:after":{content:"''",display:"inline-block",animation:"dotty steps(1,end) 1s infinite",position:"absolute"},"#microphoneOverlay p":{margin:0,color:"#858588"},"#microphoneOverlay svg":{height:"65px",marginBottom:"15px",marginTop:"-5px"},"#microphoneOverlay .svgIcon":{fill:"#DAF693"},"#disconnectOverlay.hiddenState, #playOverlay.hiddenState, #errorOverlay.hiddenState, #afkOverlay.hiddenState, #microphoneOverlay.hiddenState":{opacity:0,pointerEvents:"none"},"#disconnectOverlay.mic-overlay-is-visible, #errorOverlay.mic-overlay-is-visible, #infoOverlay.mic-overlay-is-visible":{opacity:0,pointerEvents:"none"},"#infoOverlay.hiddenState, #connectOverlay.hiddenState":{display:"none"},"#connectOverlay":{display:"flex",flexDirection:"column-reverse",alignItems:"center",justifyContent:"center"},"#infoOverlay":{display:"none"},".love-letters-box-root":{display:"flex",position:"absolute",width:"100%",height:"100%",color:"#ffffff",justifyContent:"center",alignItems:"center",flexDirection:"column",background:"#18181A",zIndex:1},".love-letters-box-root.fade-out":{opacity:0,transition:"opacity 0.5s"},"#letters-block":{position:"absolute",top:0,left:0,right:0,bottom:0,margin:"auto",color:"#ffffff",zIndex:4,display:"flex",flexDirection:"column",justifyContent:"center",alignItems:"center",fontSize:"16px",textTransform:"initial",textAlign:"center"},"#letters-wrapper":{height:"77px",overflow:"hidden",position:"relative",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-end",marginTop:"10px",paddingBottom:"2px"},"#letters-wrapper p":{textAlign:"center",lineHeight:1.25,fontSize:"16px"},".letter-animation:nth-last-of-type(1)::after":{display:"inline-block",animation:"dotty steps(1,end) 1s infinite",content:"''",position:"absolute"},".letter-animation":{transition:"all 0.5s ease-in-out",transformOrigin:"bottom",margin:"0 auto"},".letter-animation-enter":{animation:"fadeInUp 0.75s ease-out"},".letter-animation-exit":{opacity:0,scale:.9,transition:"all ease-in-out 1s",margin:0},"@keyframes dotty":{"0%":{content:"''"},"25%":{content:"'.'"},"50%":{content:"'..'"},"75%":{content:"'...'"},"100%":{content:"''"}},"@keyframes fadeInUp":{from:{opacity:0,transform:" translateY(5px)",scale:.9},to:{opacity:1,transform:"translateY(0)",scale:1}},".hidden":{display:"none",opacity:0},".visible":{display:"block",opacity:1,transition:"opacity 1s ease-out"},".love-letters-box-root .arcware-logo-loader":{display:"flex",alignItems:"center",justifyContent:"center"},".love-letters-box-root .arcware-logo-loader.aw-custom-loader":{width:"auto !important",height:"auto !important"},".love-letters-box-root .arcware-logo-loader.aw-custom-loader img":{display:"block",margin:"0 auto",width:"min(40vmin, 40vw)",height:"auto",objectFit:"contain",objectPosition:"center center"},".love-letters-box-root .arcware-logo-loader.aw-custom-loader img.alt-40pct":{width:"40%",maxWidth:"100%",height:"auto"}}}},9417(e,t,n){function i(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}n.d(t,{A:()=>i})},2901(e,t,n){n.d(t,{A:()=>r});var i=n(9922);function s(e,t){for(var n=0;n<t.length;n++){var s=t[n];s.enumerable=s.enumerable||!1,s.configurable=!0,"value"in s&&(s.writable=!0),Object.defineProperty(e,(0,i.A)(s.key),s)}}function r(e,t,n){return t&&s(e.prototype,t),n&&s(e,n),Object.defineProperty(e,"prototype",{writable:!1}),e}},8168(e,t,n){function i(){return i=Object.assign?Object.assign.bind():function(e){for(var t=1;t<arguments.length;t++){var n=arguments[t];for(var i in n)({}).hasOwnProperty.call(n,i)&&(e[i]=n[i])}return e},i.apply(null,arguments)}n.d(t,{A:()=>i})},7387(e,t,n){n.d(t,{A:()=>s});var i=n(3662);function s(e,t){e.prototype=Object.create(t.prototype),e.prototype.constructor=e,(0,i.A)(e,t)}},8587(e,t,n){function i(e,t){if(null==e)return{};var n={};for(var i in e)if({}.hasOwnProperty.call(e,i)){if(-1!==t.indexOf(i))continue;n[i]=e[i]}return n}n.d(t,{A:()=>i})},3662(e,t,n){function i(e,t){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(e,t){return e.__proto__=t,e},i(e,t)}n.d(t,{A:()=>i})},2327(e,t,n){n.d(t,{A:()=>s});var i=n(2284);function s(e,t){if("object"!=(0,i.A)(e)||!e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var s=n.call(e,t||"default");if("object"!=(0,i.A)(s))return s;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}},9922(e,t,n){n.d(t,{A:()=>r});var i=n(2284),s=n(2327);function r(e){var t=(0,s.A)(e,"string");return"symbol"==(0,i.A)(t)?t:t+""}},2284(e,t,n){function i(e){return i="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i(e)}n.d(t,{A:()=>i})},1635(e,t,n){function i(e,t,n){return"symbol"==typeof t&&(t=t.description?"[".concat(t.description,"]"):""),Object.defineProperty(e,"name",{configurable:!0,value:n?"".concat(n," ",t):t})}function s(e,t,n,i){return new(n||(n=Promise))(function(s,r){function o(e){try{l(i.next(e))}catch(e){r(e)}}function a(e){try{l(i.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?s(e.value):(t=e.value,t instanceof n?t:new n(function(e){e(t)})).then(o,a)}l((i=i.apply(e,t||[])).next())})}n.d(t,{sH:()=>s,yV:()=>i}),Object.create,Object.create,"function"==typeof SuppressedError&&SuppressedError}},t={};function n(i){var s=t[i];if(void 0!==s)return s.exports;var r=t[i]={exports:{}};return e[i](r,r.exports,n),r.exports}n.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return n.d(t,{a:t}),t},n.d=(e,t)=>{for(var i in t)n.o(t,i)&&!n.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},n.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t);var i={};n.d(i,{B2:()=>d.B2,BN:()=>d.BN,DY:()=>d.DY,IR:()=>r.I,J1:()=>l.J,Mr:()=>d.Mr,Ql:()=>d.Ql,U3:()=>d.U3,Vn:()=>d.Vn,ZB:()=>d.ZB,aU:()=>s.a,gh:()=>a.g,jj:()=>o.j,oU:()=>o.o,ot:()=>d.ot,wL:()=>d.wL,xI:()=>d.xI});var s=n(6063),r=n(2451),o=n(272),a=n(2886),l=n(6689),d=n(6246);const c=i.IR,h=i.gh,u=i.aU,m=i.oU,p=i.J1,g=i.Vn,f=i.jj,v=i.xI,y=i.Ql,b=i.Mr,w=i.DY,S=i.wL,C=i.B2,E=i.BN,T=i.U3,x=i.ot,I=i.ZB;export{c as ArcwareApplication,h as ArcwareConfig,u as ArcwareInit,m as ArcwarePixelStreaming,p as CoreSetup,g as Send,f as WebsocketState,v as parseErrorMessage,y as parseLoveLetter,b as parsePing,w as parseQueue,S as parseRender,C as parseSessionId,E as parseStats,T as parseStreamInfo,x as parseVersion,I as parseWebSdkSettings};
|