/*! * Socket.IO v4.4.1 * (c) 2014-2022 Guillermo Rauch * Released under the MIT License. */ !(function (t, e) { 'object' == typeof exports && 'undefined' != typeof module ? (module.exports = e()) : 'function' == typeof define && define.amd ? define(e) : ((t = 'undefined' != typeof globalThis ? globalThis : t || self).io = e()) })(this, function () { 'use strict' function t(t, e) { return ( e.forEach(function (e) { Object.keys(e).forEach(function (n) { if ('default' !== n && !(n in t)) { var r = Object.getOwnPropertyDescriptor(e, n) Object.defineProperty( t, n, r.get ? r : { enumerable: !0, get: function () { return e[n] }, } ) } }) }), Object.freeze(t) ) } function e(t) { return ( (e = 'function' == typeof Symbol && 'symbol' == typeof Symbol.iterator ? function (t) { return typeof t } : function (t) { return t && 'function' == typeof Symbol && t.constructor === Symbol && t !== Symbol.prototype ? 'symbol' : typeof t }), e(t) ) } function n(t, e) { if (!(t instanceof e)) throw new TypeError('Cannot call a class as a function') } function r(t, e) { for (var n = 0; n < e.length; n++) { var r = e[n] ;(r.enumerable = r.enumerable || !1), (r.configurable = !0), 'value' in r && (r.writable = !0), Object.defineProperty(t, r.key, r) } } function i(t, e, n) { return e && r(t.prototype, e), n && r(t, n), t } function o() { return ( (o = Object.assign || function (t) { for (var e = 1; e < arguments.length; e++) { var n = arguments[e] for (var r in n) Object.prototype.hasOwnProperty.call(n, r) && (t[r] = n[r]) } return t }), o.apply(this, arguments) ) } function s(t, e) { if ('function' != typeof e && null !== e) throw new TypeError('Super expression must either be null or a function') ;(t.prototype = Object.create(e && e.prototype, { constructor: { value: t, writable: !0, configurable: !0 } })), e && c(t, e) } function a(t) { return ( (a = Object.setPrototypeOf ? Object.getPrototypeOf : function (t) { return t.__proto__ || Object.getPrototypeOf(t) }), a(t) ) } function c(t, e) { return ( (c = Object.setPrototypeOf || function (t, e) { return (t.__proto__ = e), t }), c(t, e) ) } function h(t) { if (void 0 === t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called") return t } function u(t, e) { if (e && ('object' == typeof e || 'function' == typeof e)) return e if (void 0 !== e) throw new TypeError('Derived constructors may only return object or undefined') return h(t) } function f(t) { var e = (function () { if ('undefined' == typeof Reflect || !Reflect.construct) return !1 if (Reflect.construct.sham) return !1 if ('function' == typeof Proxy) return !0 try { return Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})), !0 } catch (t) { return !1 } })() return function () { var n, r = a(t) if (e) { var i = a(this).constructor n = Reflect.construct(r, arguments, i) } else n = r.apply(this, arguments) return u(this, n) } } function p(t, e, n) { return ( (p = 'undefined' != typeof Reflect && Reflect.get ? Reflect.get : function (t, e, n) { var r = (function (t, e) { for (; !Object.prototype.hasOwnProperty.call(t, e) && null !== (t = a(t)); ); return t })(t, e) if (r) { var i = Object.getOwnPropertyDescriptor(r, e) return i.get ? i.get.call(n) : i.value } }), p(t, e, n || t) ) } function l(t, e) { ;(null == e || e > t.length) && (e = t.length) for (var n = 0, r = new Array(e); n < e; n++) r[n] = t[n] return r } function d(t, e) { var n = ('undefined' != typeof Symbol && t[Symbol.iterator]) || t['@@iterator'] if (!n) { if ( Array.isArray(t) || (n = (function (t, e) { if (t) { if ('string' == typeof t) return l(t, e) var n = Object.prototype.toString.call(t).slice(8, -1) return ( 'Object' === n && t.constructor && (n = t.constructor.name), 'Map' === n || 'Set' === n ? Array.from(t) : 'Arguments' === n || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n) ? l(t, e) : void 0 ) } })(t)) || (e && t && 'number' == typeof t.length) ) { n && (t = n) var r = 0, i = function () {} return { s: i, n: function () { return r >= t.length ? { done: !0 } : { done: !1, value: t[r++] } }, e: function (t) { throw t }, f: i, } } throw new TypeError('Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.') } var o, s = !0, a = !1 return { s: function () { n = n.call(t) }, n: function () { var t = n.next() return (s = t.done), t }, e: function (t) { ;(a = !0), (o = t) }, f: function () { try { s || null == n.return || n.return() } finally { if (a) throw o } }, } } var y = /^(?:(?![^:@]+:[^:@\/]*@)(http|https|ws|wss):\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?((?:[a-f0-9]{0,4}:){2,7}[a-f0-9]{0,4}|[^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/, v = ['source', 'protocol', 'authority', 'userInfo', 'user', 'password', 'host', 'port', 'relative', 'path', 'directory', 'file', 'query', 'anchor'], g = function (t) { var e = t, n = t.indexOf('['), r = t.indexOf(']') ;-1 != n && -1 != r && (t = t.substring(0, n) + t.substring(n, r).replace(/:/g, ';') + t.substring(r, t.length)) for (var i, o, s = y.exec(t || ''), a = {}, c = 14; c--; ) a[v[c]] = s[c] || '' return ( -1 != n && -1 != r && ((a.source = e), (a.host = a.host.substring(1, a.host.length - 1).replace(/;/g, ':')), (a.authority = a.authority.replace('[', '').replace(']', '').replace(/;/g, ':')), (a.ipv6uri = !0)), (a.pathNames = (function (t, e) { var n = /\/{2,9}/g, r = e.replace(n, '/').split('/') ;('/' != e.substr(0, 1) && 0 !== e.length) || r.splice(0, 1) '/' == e.substr(e.length - 1, 1) && r.splice(r.length - 1, 1) return r })(0, a.path)), (a.queryKey = ((i = a.query), (o = {}), i.replace(/(?:^|&)([^&=]*)=?([^&]*)/g, function (t, e, n) { e && (o[e] = n) }), o)), a ) } var m = { exports: {} } try { m.exports = 'undefined' != typeof XMLHttpRequest && 'withCredentials' in new XMLHttpRequest() } catch (t) { m.exports = !1 } var _ = m.exports, b = 'undefined' != typeof self ? self : 'undefined' != typeof window ? window : Function('return this')() function k(t) { var e = t.xdomain try { if ('undefined' != typeof XMLHttpRequest && (!e || _)) return new XMLHttpRequest() } catch (t) {} if (!e) try { return new b[['Active'].concat('Object').join('X')]('Microsoft.XMLHTTP') } catch (t) {} } function w(t) { for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r] return n.reduce(function (e, n) { return t.hasOwnProperty(n) && (e[n] = t[n]), e }, {}) } var E = setTimeout, C = clearTimeout function O(t, e) { e.useNativeTimers ? ((t.setTimeoutFn = E.bind(b)), (t.clearTimeoutFn = C.bind(b))) : ((t.setTimeoutFn = setTimeout.bind(b)), (t.clearTimeoutFn = clearTimeout.bind(b))) } var T = S function S(t) { if (t) return (function (t) { for (var e in S.prototype) t[e] = S.prototype[e] return t })(t) } ;(S.prototype.on = S.prototype.addEventListener = function (t, e) { return (this._callbacks = this._callbacks || {}), (this._callbacks['$' + t] = this._callbacks['$' + t] || []).push(e), this }), (S.prototype.once = function (t, e) { function n() { this.off(t, n), e.apply(this, arguments) } return (n.fn = e), this.on(t, n), this }), (S.prototype.off = S.prototype.removeListener = S.prototype.removeAllListeners = S.prototype.removeEventListener = function (t, e) { if (((this._callbacks = this._callbacks || {}), 0 == arguments.length)) return (this._callbacks = {}), this var n, r = this._callbacks['$' + t] if (!r) return this if (1 == arguments.length) return delete this._callbacks['$' + t], this for (var i = 0; i < r.length; i++) if ((n = r[i]) === e || n.fn === e) { r.splice(i, 1) break } return 0 === r.length && delete this._callbacks['$' + t], this }), (S.prototype.emit = function (t) { this._callbacks = this._callbacks || {} for (var e = new Array(arguments.length - 1), n = this._callbacks['$' + t], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r] if (n) { r = 0 for (var i = (n = n.slice(0)).length; r < i; ++r) n[r].apply(this, e) } return this }), (S.prototype.emitReserved = S.prototype.emit), (S.prototype.listeners = function (t) { return (this._callbacks = this._callbacks || {}), this._callbacks['$' + t] || [] }), (S.prototype.hasListeners = function (t) { return !!this.listeners(t).length }) var R = Object.create(null) ;(R.open = '0'), (R.close = '1'), (R.ping = '2'), (R.pong = '3'), (R.message = '4'), (R.upgrade = '5'), (R.noop = '6') var A = Object.create(null) Object.keys(R).forEach(function (t) { A[R[t]] = t }) for ( var x = { type: 'error', data: 'parser error' }, U = 'function' == typeof Blob || ('undefined' != typeof Blob && '[object BlobConstructor]' === Object.prototype.toString.call(Blob)), L = 'function' == typeof ArrayBuffer, B = function (t, e, n) { var r, i = t.type, o = t.data return U && o instanceof Blob ? e ? n(o) : j(o, n) : L && (o instanceof ArrayBuffer || ((r = o), 'function' == typeof ArrayBuffer.isView ? ArrayBuffer.isView(r) : r && r.buffer instanceof ArrayBuffer)) ? e ? n(o) : j(new Blob([o]), n) : n(R[i] + (o || '')) }, j = function (t, e) { var n = new FileReader() return ( (n.onload = function () { var t = n.result.split(',')[1] e('b' + t) }), n.readAsDataURL(t) ) }, N = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/', P = 'undefined' == typeof Uint8Array ? [] : new Uint8Array(256), q = 0; q < N.length; q++ ) P[N.charCodeAt(q)] = q var D, I = 'function' == typeof ArrayBuffer, M = function (t, e) { if ('string' != typeof t) return { type: 'message', data: H(t, e) } var n = t.charAt(0) return 'b' === n ? { type: 'message', data: F(t.substring(1), e) } : A[n] ? (t.length > 1 ? { type: A[n], data: t.substring(1) } : { type: A[n] }) : x }, F = function (t, e) { if (I) { var n = (function (t) { var e, n, r, i, o, s = 0.75 * t.length, a = t.length, c = 0 '=' === t[t.length - 1] && (s--, '=' === t[t.length - 2] && s--) var h = new ArrayBuffer(s), u = new Uint8Array(h) for (e = 0; e < a; e += 4) (n = P[t.charCodeAt(e)]), (r = P[t.charCodeAt(e + 1)]), (i = P[t.charCodeAt(e + 2)]), (o = P[t.charCodeAt(e + 3)]), (u[c++] = (n << 2) | (r >> 4)), (u[c++] = ((15 & r) << 4) | (i >> 2)), (u[c++] = ((3 & i) << 6) | (63 & o)) return h })(t) return H(n, e) } return { base64: !0, data: t } }, H = function (t, e) { return 'blob' === e && t instanceof ArrayBuffer ? new Blob([t]) : t }, $ = String.fromCharCode(30), z = (function (t) { s(r, t) var e = f(r) function r(t) { var i return n(this, r), ((i = e.call(this)).writable = !1), O(h(i), t), (i.opts = t), (i.query = t.query), (i.readyState = ''), (i.socket = t.socket), i } return ( i(r, [ { key: 'onError', value: function (t, e) { var n = new Error(t) return (n.type = 'TransportError'), (n.description = e), p(a(r.prototype), 'emit', this).call(this, 'error', n), this }, }, { key: 'open', value: function () { return ('closed' !== this.readyState && '' !== this.readyState) || ((this.readyState = 'opening'), this.doOpen()), this }, }, { key: 'close', value: function () { return ('opening' !== this.readyState && 'open' !== this.readyState) || (this.doClose(), this.onClose()), this }, }, { key: 'send', value: function (t) { 'open' === this.readyState && this.write(t) }, }, { key: 'onOpen', value: function () { ;(this.readyState = 'open'), (this.writable = !0), p(a(r.prototype), 'emit', this).call(this, 'open') }, }, { key: 'onData', value: function (t) { var e = M(t, this.socket.binaryType) this.onPacket(e) }, }, { key: 'onPacket', value: function (t) { p(a(r.prototype), 'emit', this).call(this, 'packet', t) }, }, { key: 'onClose', value: function () { ;(this.readyState = 'closed'), p(a(r.prototype), 'emit', this).call(this, 'close') }, }, ]), r ) })(T), V = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz-_'.split(''), W = {}, X = 0, K = 0 function J(t) { var e = '' do { ;(e = V[t % 64] + e), (t = Math.floor(t / 64)) } while (t > 0) return e } function Y() { var t = J(+new Date()) return t !== D ? ((X = 0), (D = t)) : t + '.' + J(X++) } for (; K < 64; K++) W[V[K]] = K ;(Y.encode = J), (Y.decode = function (t) { var e = 0 for (K = 0; K < t.length; K++) e = 64 * e + W[t.charAt(K)] return e }) var G = Y, Q = { encode: function (t) { var e = '' for (var n in t) t.hasOwnProperty(n) && (e.length && (e += '&'), (e += encodeURIComponent(n) + '=' + encodeURIComponent(t[n]))) return e }, decode: function (t) { for (var e = {}, n = t.split('&'), r = 0, i = n.length; r < i; r++) { var o = n[r].split('=') e[decodeURIComponent(o[0])] = decodeURIComponent(o[1]) } return e }, }, Z = (function (t) { s(r, t) var e = f(r) function r() { var t return n(this, r), ((t = e.apply(this, arguments)).polling = !1), t } return ( i(r, [ { key: 'name', get: function () { return 'polling' }, }, { key: 'doOpen', value: function () { this.poll() }, }, { key: 'pause', value: function (t) { var e = this this.readyState = 'pausing' var n = function () { ;(e.readyState = 'paused'), t() } if (this.polling || !this.writable) { var r = 0 this.polling && (r++, this.once('pollComplete', function () { --r || n() })), this.writable || (r++, this.once('drain', function () { --r || n() })) } else n() }, }, { key: 'poll', value: function () { ;(this.polling = !0), this.doPoll(), this.emit('poll') }, }, { key: 'onData', value: function (t) { var e = this ;(function (t, e) { for (var n = t.split($), r = [], i = 0; i < n.length; i++) { var o = M(n[i], e) if ((r.push(o), 'error' === o.type)) break } return r })(t, this.socket.binaryType).forEach(function (t) { if (('opening' === e.readyState && 'open' === t.type && e.onOpen(), 'close' === t.type)) return e.onClose(), !1 e.onPacket(t) }), 'closed' !== this.readyState && ((this.polling = !1), this.emit('pollComplete'), 'open' === this.readyState && this.poll()) }, }, { key: 'doClose', value: function () { var t = this, e = function () { t.write([{ type: 'close' }]) } 'open' === this.readyState ? e() : this.once('open', e) }, }, { key: 'write', value: function (t) { var e = this ;(this.writable = !1), (function (t, e) { var n = t.length, r = new Array(n), i = 0 t.forEach(function (t, o) { B(t, !1, function (t) { ;(r[o] = t), ++i === n && e(r.join($)) }) }) })(t, function (t) { e.doWrite(t, function () { ;(e.writable = !0), e.emit('drain') }) }) }, }, { key: 'uri', value: function () { var t = this.query || {}, e = this.opts.secure ? 'https' : 'http', n = '' !1 !== this.opts.timestampRequests && (t[this.opts.timestampParam] = G()), this.supportsBinary || t.sid || (t.b64 = 1), this.opts.port && (('https' === e && 443 !== Number(this.opts.port)) || ('http' === e && 80 !== Number(this.opts.port))) && (n = ':' + this.opts.port) var r = Q.encode(t) return e + '://' + (-1 !== this.opts.hostname.indexOf(':') ? '[' + this.opts.hostname + ']' : this.opts.hostname) + n + this.opts.path + (r.length ? '?' + r : '') }, }, ]), r ) })(z) function tt() {} var et = null != new k({ xdomain: !1 }).responseType, nt = (function (t) { s(r, t) var e = f(r) function r(t) { var i if ((n(this, r), (i = e.call(this, t)), 'undefined' != typeof location)) { var o = 'https:' === location.protocol, s = location.port s || (s = o ? '443' : '80'), (i.xd = ('undefined' != typeof location && t.hostname !== location.hostname) || s !== t.port), (i.xs = t.secure !== o) } var a = t && t.forceBase64 return (i.supportsBinary = et && !a), i } return ( i(r, [ { key: 'request', value: function () { var t = arguments.length > 0 && void 0 !== arguments[0] ? arguments[0] : {} return o(t, { xd: this.xd, xs: this.xs }, this.opts), new rt(this.uri(), t) }, }, { key: 'doWrite', value: function (t, e) { var n = this, r = this.request({ method: 'POST', data: t }) r.on('success', e), r.on('error', function (t) { n.onError('xhr post error', t) }) }, }, { key: 'doPoll', value: function () { var t = this, e = this.request() e.on('data', this.onData.bind(this)), e.on('error', function (e) { t.onError('xhr poll error', e) }), (this.pollXhr = e) }, }, ]), r ) })(Z), rt = (function (t) { s(r, t) var e = f(r) function r(t, i) { var o return ( n(this, r), O(h((o = e.call(this))), i), (o.opts = i), (o.method = i.method || 'GET'), (o.uri = t), (o.async = !1 !== i.async), (o.data = void 0 !== i.data ? i.data : null), o.create(), o ) } return ( i(r, [ { key: 'create', value: function () { var t = this, e = w(this.opts, 'agent', 'pfx', 'key', 'passphrase', 'cert', 'ca', 'ciphers', 'rejectUnauthorized', 'autoUnref') ;(e.xdomain = !!this.opts.xd), (e.xscheme = !!this.opts.xs) var n = (this.xhr = new k(e)) try { n.open(this.method, this.uri, this.async) try { if (this.opts.extraHeaders) for (var i in (n.setDisableHeaderCheck && n.setDisableHeaderCheck(!0), this.opts.extraHeaders)) this.opts.extraHeaders.hasOwnProperty(i) && n.setRequestHeader(i, this.opts.extraHeaders[i]) } catch (t) {} if ('POST' === this.method) try { n.setRequestHeader('Content-type', 'text/plain;charset=UTF-8') } catch (t) {} try { n.setRequestHeader('Accept', '*/*') } catch (t) {} 'withCredentials' in n && (n.withCredentials = this.opts.withCredentials), this.opts.requestTimeout && (n.timeout = this.opts.requestTimeout), (n.onreadystatechange = function () { 4 === n.readyState && (200 === n.status || 1223 === n.status ? t.onLoad() : t.setTimeoutFn(function () { t.onError('number' == typeof n.status ? n.status : 0) }, 0)) }), n.send(this.data) } catch (e) { return void this.setTimeoutFn(function () { t.onError(e) }, 0) } 'undefined' != typeof document && ((this.index = r.requestsCount++), (r.requests[this.index] = this)) }, }, { key: 'onSuccess', value: function () { this.emit('success'), this.cleanup() }, }, { key: 'onData', value: function (t) { this.emit('data', t), this.onSuccess() }, }, { key: 'onError', value: function (t) { this.emit('error', t), this.cleanup(!0) }, }, { key: 'cleanup', value: function (t) { if (void 0 !== this.xhr && null !== this.xhr) { if (((this.xhr.onreadystatechange = tt), t)) try { this.xhr.abort() } catch (t) {} 'undefined' != typeof document && delete r.requests[this.index], (this.xhr = null) } }, }, { key: 'onLoad', value: function () { var t = this.xhr.responseText null !== t && this.onData(t) }, }, { key: 'abort', value: function () { this.cleanup() }, }, ]), r ) })(T) if (((rt.requestsCount = 0), (rt.requests = {}), 'undefined' != typeof document)) if ('function' == typeof attachEvent) attachEvent('onunload', it) else if ('function' == typeof addEventListener) { addEventListener('onpagehide' in b ? 'pagehide' : 'unload', it, !1) } function it() { for (var t in rt.requests) rt.requests.hasOwnProperty(t) && rt.requests[t].abort() } var ot = 'function' == typeof Promise && 'function' == typeof Promise.resolve ? function (t) { return Promise.resolve().then(t) } : function (t, e) { return e(t, 0) }, st = b.WebSocket || b.MozWebSocket, at = 'undefined' != typeof navigator && 'string' == typeof navigator.product && 'reactnative' === navigator.product.toLowerCase(), ct = (function (t) { s(r, t) var e = f(r) function r(t) { var i return n(this, r), ((i = e.call(this, t)).supportsBinary = !t.forceBase64), i } return ( i(r, [ { key: 'name', get: function () { return 'websocket' }, }, { key: 'doOpen', value: function () { if (this.check()) { var t = this.uri(), e = this.opts.protocols, n = at ? {} : w( this.opts, 'agent', 'perMessageDeflate', 'pfx', 'key', 'passphrase', 'cert', 'ca', 'ciphers', 'rejectUnauthorized', 'localAddress', 'protocolVersion', 'origin', 'maxPayload', 'family', 'checkServerIdentity' ) this.opts.extraHeaders && (n.headers = this.opts.extraHeaders) try { this.ws = at ? new st(t, e, n) : e ? new st(t, e) : new st(t) } catch (t) { return this.emit('error', t) } ;(this.ws.binaryType = this.socket.binaryType || 'arraybuffer'), this.addEventListeners() } }, }, { key: 'addEventListeners', value: function () { var t = this ;(this.ws.onopen = function () { t.opts.autoUnref && t.ws._socket.unref(), t.onOpen() }), (this.ws.onclose = this.onClose.bind(this)), (this.ws.onmessage = function (e) { return t.onData(e.data) }), (this.ws.onerror = function (e) { return t.onError('websocket error', e) }) }, }, { key: 'write', value: function (t) { var e = this this.writable = !1 for ( var n = function (n) { var r = t[n], i = n === t.length - 1 B(r, e.supportsBinary, function (t) { try { e.ws.send(t) } catch (t) {} i && ot(function () { ;(e.writable = !0), e.emit('drain') }, e.setTimeoutFn) }) }, r = 0; r < t.length; r++ ) n(r) }, }, { key: 'doClose', value: function () { void 0 !== this.ws && (this.ws.close(), (this.ws = null)) }, }, { key: 'uri', value: function () { var t = this.query || {}, e = this.opts.secure ? 'wss' : 'ws', n = '' this.opts.port && (('wss' === e && 443 !== Number(this.opts.port)) || ('ws' === e && 80 !== Number(this.opts.port))) && (n = ':' + this.opts.port), this.opts.timestampRequests && (t[this.opts.timestampParam] = G()), this.supportsBinary || (t.b64 = 1) var r = Q.encode(t) return e + '://' + (-1 !== this.opts.hostname.indexOf(':') ? '[' + this.opts.hostname + ']' : this.opts.hostname) + n + this.opts.path + (r.length ? '?' + r : '') }, }, { key: 'check', value: function () { return !(!st || ('__initialize' in st && this.name === r.prototype.name)) }, }, ]), r ) })(z), ht = { websocket: ct, polling: nt }, ut = (function (t) { s(a, t) var r = f(a) function a(t) { var i, s = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : {} return ( n(this, a), (i = r.call(this)), t && 'object' === e(t) && ((s = t), (t = null)), t ? ((t = g(t)), (s.hostname = t.host), (s.secure = 'https' === t.protocol || 'wss' === t.protocol), (s.port = t.port), t.query && (s.query = t.query)) : s.host && (s.hostname = g(s.host).host), O(h(i), s), (i.secure = null != s.secure ? s.secure : 'undefined' != typeof location && 'https:' === location.protocol), s.hostname && !s.port && (s.port = i.secure ? '443' : '80'), (i.hostname = s.hostname || ('undefined' != typeof location ? location.hostname : 'localhost')), (i.port = s.port || ('undefined' != typeof location && location.port ? location.port : i.secure ? '443' : '80')), (i.transports = s.transports || ['polling', 'websocket']), (i.readyState = ''), (i.writeBuffer = []), (i.prevBufferLen = 0), (i.opts = o( { path: '/engine.io', agent: !1, withCredentials: !1, upgrade: !0, timestampParam: 't', rememberUpgrade: !1, rejectUnauthorized: !0, perMessageDeflate: { threshold: 1024 }, transportOptions: {}, closeOnBeforeunload: !0, }, s )), (i.opts.path = i.opts.path.replace(/\/$/, '') + '/'), 'string' == typeof i.opts.query && (i.opts.query = Q.decode(i.opts.query)), (i.id = null), (i.upgrades = null), (i.pingInterval = null), (i.pingTimeout = null), (i.pingTimeoutTimer = null), 'function' == typeof addEventListener && (i.opts.closeOnBeforeunload && addEventListener( 'beforeunload', function () { i.transport && (i.transport.removeAllListeners(), i.transport.close()) }, !1 ), 'localhost' !== i.hostname && ((i.offlineEventListener = function () { i.onClose('transport close') }), addEventListener('offline', i.offlineEventListener, !1))), i.open(), i ) } return ( i(a, [ { key: 'createTransport', value: function (t) { var e = (function (t) { var e = {} for (var n in t) t.hasOwnProperty(n) && (e[n] = t[n]) return e })(this.opts.query) ;(e.EIO = 4), (e.transport = t), this.id && (e.sid = this.id) var n = o({}, this.opts.transportOptions[t], this.opts, { query: e, socket: this, hostname: this.hostname, secure: this.secure, port: this.port }) return new ht[t](n) }, }, { key: 'open', value: function () { var t, e = this if (this.opts.rememberUpgrade && a.priorWebsocketSuccess && -1 !== this.transports.indexOf('websocket')) t = 'websocket' else { if (0 === this.transports.length) return void this.setTimeoutFn(function () { e.emitReserved('error', 'No transports available') }, 0) t = this.transports[0] } this.readyState = 'opening' try { t = this.createTransport(t) } catch (t) { return this.transports.shift(), void this.open() } t.open(), this.setTransport(t) }, }, { key: 'setTransport', value: function (t) { var e = this this.transport && this.transport.removeAllListeners(), (this.transport = t), t .on('drain', this.onDrain.bind(this)) .on('packet', this.onPacket.bind(this)) .on('error', this.onError.bind(this)) .on('close', function () { e.onClose('transport close') }) }, }, { key: 'probe', value: function (t) { var e = this, n = this.createTransport(t), r = !1 a.priorWebsocketSuccess = !1 var i = function () { r || (n.send([{ type: 'ping', data: 'probe' }]), n.once('packet', function (t) { if (!r) if ('pong' === t.type && 'probe' === t.data) { if (((e.upgrading = !0), e.emitReserved('upgrading', n), !n)) return ;(a.priorWebsocketSuccess = 'websocket' === n.name), e.transport.pause(function () { r || ('closed' !== e.readyState && (f(), e.setTransport(n), n.send([{ type: 'upgrade' }]), e.emitReserved('upgrade', n), (n = null), (e.upgrading = !1), e.flush())) }) } else { var i = new Error('probe error') ;(i.transport = n.name), e.emitReserved('upgradeError', i) } })) } function o() { r || ((r = !0), f(), n.close(), (n = null)) } var s = function (t) { var r = new Error('probe error: ' + t) ;(r.transport = n.name), o(), e.emitReserved('upgradeError', r) } function c() { s('transport closed') } function h() { s('socket closed') } function u(t) { n && t.name !== n.name && o() } var f = function () { n.removeListener('open', i), n.removeListener('error', s), n.removeListener('close', c), e.off('close', h), e.off('upgrading', u) } n.once('open', i), n.once('error', s), n.once('close', c), this.once('close', h), this.once('upgrading', u), n.open() }, }, { key: 'onOpen', value: function () { if ( ((this.readyState = 'open'), (a.priorWebsocketSuccess = 'websocket' === this.transport.name), this.emitReserved('open'), this.flush(), 'open' === this.readyState && this.opts.upgrade && this.transport.pause) ) for (var t = 0, e = this.upgrades.length; t < e; t++) this.probe(this.upgrades[t]) }, }, { key: 'onPacket', value: function (t) { if ('opening' === this.readyState || 'open' === this.readyState || 'closing' === this.readyState) switch ((this.emitReserved('packet', t), this.emitReserved('heartbeat'), t.type)) { case 'open': this.onHandshake(JSON.parse(t.data)) break case 'ping': this.resetPingTimeout(), this.sendPacket('pong'), this.emitReserved('ping'), this.emitReserved('pong') break case 'error': var e = new Error('server error') ;(e.code = t.data), this.onError(e) break case 'message': this.emitReserved('data', t.data), this.emitReserved('message', t.data) } }, }, { key: 'onHandshake', value: function (t) { this.emitReserved('handshake', t), (this.id = t.sid), (this.transport.query.sid = t.sid), (this.upgrades = this.filterUpgrades(t.upgrades)), (this.pingInterval = t.pingInterval), (this.pingTimeout = t.pingTimeout), this.onOpen(), 'closed' !== this.readyState && this.resetPingTimeout() }, }, { key: 'resetPingTimeout', value: function () { var t = this this.clearTimeoutFn(this.pingTimeoutTimer), (this.pingTimeoutTimer = this.setTimeoutFn(function () { t.onClose('ping timeout') }, this.pingInterval + this.pingTimeout)), this.opts.autoUnref && this.pingTimeoutTimer.unref() }, }, { key: 'onDrain', value: function () { this.writeBuffer.splice(0, this.prevBufferLen), (this.prevBufferLen = 0), 0 === this.writeBuffer.length ? this.emitReserved('drain') : this.flush() }, }, { key: 'flush', value: function () { 'closed' !== this.readyState && this.transport.writable && !this.upgrading && this.writeBuffer.length && (this.transport.send(this.writeBuffer), (this.prevBufferLen = this.writeBuffer.length), this.emitReserved('flush')) }, }, { key: 'write', value: function (t, e, n) { return this.sendPacket('message', t, e, n), this }, }, { key: 'send', value: function (t, e, n) { return this.sendPacket('message', t, e, n), this }, }, { key: 'sendPacket', value: function (t, e, n, r) { if (('function' == typeof e && ((r = e), (e = void 0)), 'function' == typeof n && ((r = n), (n = null)), 'closing' !== this.readyState && 'closed' !== this.readyState)) { ;(n = n || {}).compress = !1 !== n.compress var i = { type: t, data: e, options: n } this.emitReserved('packetCreate', i), this.writeBuffer.push(i), r && this.once('flush', r), this.flush() } }, }, { key: 'close', value: function () { var t = this, e = function () { t.onClose('forced close'), t.transport.close() }, n = function n() { t.off('upgrade', n), t.off('upgradeError', n), e() }, r = function () { t.once('upgrade', n), t.once('upgradeError', n) } return ( ('opening' !== this.readyState && 'open' !== this.readyState) || ((this.readyState = 'closing'), this.writeBuffer.length ? this.once('drain', function () { t.upgrading ? r() : e() }) : this.upgrading ? r() : e()), this ) }, }, { key: 'onError', value: function (t) { ;(a.priorWebsocketSuccess = !1), this.emitReserved('error', t), this.onClose('transport error', t) }, }, { key: 'onClose', value: function (t, e) { ;('opening' !== this.readyState && 'open' !== this.readyState && 'closing' !== this.readyState) || (this.clearTimeoutFn(this.pingTimeoutTimer), this.transport.removeAllListeners('close'), this.transport.close(), this.transport.removeAllListeners(), 'function' == typeof removeEventListener && removeEventListener('offline', this.offlineEventListener, !1), (this.readyState = 'closed'), (this.id = null), this.emitReserved('close', t, e), (this.writeBuffer = []), (this.prevBufferLen = 0)) }, }, { key: 'filterUpgrades', value: function (t) { for (var e = [], n = 0, r = t.length; n < r; n++) ~this.transports.indexOf(t[n]) && e.push(t[n]) return e }, }, ]), a ) })(T) ut.protocol = 4 var ft = {}, pt = {} function lt(t, e, n) { for (var r = 0, i = 0, o = n.length; i < o; i++) (r = n.charCodeAt(i)) < 128 ? t.setUint8(e++, r) : r < 2048 ? (t.setUint8(e++, 192 | (r >> 6)), t.setUint8(e++, 128 | (63 & r))) : r < 55296 || r >= 57344 ? (t.setUint8(e++, 224 | (r >> 12)), t.setUint8(e++, 128 | ((r >> 6) & 63)), t.setUint8(e++, 128 | (63 & r))) : (i++, (r = 65536 + (((1023 & r) << 10) | (1023 & n.charCodeAt(i)))), t.setUint8(e++, 240 | (r >> 18)), t.setUint8(e++, 128 | ((r >> 12) & 63)), t.setUint8(e++, 128 | ((r >> 6) & 63)), t.setUint8(e++, 128 | (63 & r))) } function dt(t, n, r) { var i = e(r), o = 0, s = 0, a = 0, c = 0, h = 0, u = 0 if ('string' === i) { if ( ((h = (function (t) { for (var e = 0, n = 0, r = 0, i = t.length; r < i; r++) (e = t.charCodeAt(r)) < 128 ? (n += 1) : e < 2048 ? (n += 2) : e < 55296 || e >= 57344 ? (n += 3) : (r++, (n += 4)) return n })(r)), h < 32) ) t.push(160 | h), (u = 1) else if (h < 256) t.push(217, h), (u = 2) else if (h < 65536) t.push(218, h >> 8, h), (u = 3) else { if (!(h < 4294967296)) throw new Error('String too long') t.push(219, h >> 24, h >> 16, h >> 8, h), (u = 5) } return n.push({ _str: r, _length: h, _offset: t.length }), u + h } if ('number' === i) return Math.floor(r) === r && isFinite(r) ? r >= 0 ? r < 128 ? (t.push(r), 1) : r < 256 ? (t.push(204, r), 2) : r < 65536 ? (t.push(205, r >> 8, r), 3) : r < 4294967296 ? (t.push(206, r >> 24, r >> 16, r >> 8, r), 5) : ((a = (r / Math.pow(2, 32)) >> 0), (c = r >>> 0), t.push(207, a >> 24, a >> 16, a >> 8, a, c >> 24, c >> 16, c >> 8, c), 9) : r >= -32 ? (t.push(r), 1) : r >= -128 ? (t.push(208, r), 2) : r >= -32768 ? (t.push(209, r >> 8, r), 3) : r >= -2147483648 ? (t.push(210, r >> 24, r >> 16, r >> 8, r), 5) : ((a = Math.floor(r / Math.pow(2, 32))), (c = r >>> 0), t.push(211, a >> 24, a >> 16, a >> 8, a, c >> 24, c >> 16, c >> 8, c), 9) : (t.push(203), n.push({ _float: r, _length: 8, _offset: t.length }), 9) if ('object' === i) { if (null === r) return t.push(192), 1 if (Array.isArray(r)) { if ((h = r.length) < 16) t.push(144 | h), (u = 1) else if (h < 65536) t.push(220, h >> 8, h), (u = 3) else { if (!(h < 4294967296)) throw new Error('Array too large') t.push(221, h >> 24, h >> 16, h >> 8, h), (u = 5) } for (o = 0; o < h; o++) u += dt(t, n, r[o]) return u } if (r instanceof Date) { var f = r.getTime() return (a = Math.floor(f / Math.pow(2, 32))), (c = f >>> 0), t.push(215, 0, a >> 24, a >> 16, a >> 8, a, c >> 24, c >> 16, c >> 8, c), 10 } if (r instanceof ArrayBuffer) { if ((h = r.byteLength) < 256) t.push(196, h), (u = 2) else if (h < 65536) t.push(197, h >> 8, h), (u = 3) else { if (!(h < 4294967296)) throw new Error('Buffer too large') t.push(198, h >> 24, h >> 16, h >> 8, h), (u = 5) } return n.push({ _bin: r, _length: h, _offset: t.length }), u + h } if ('function' == typeof r.toJSON) return dt(t, n, r.toJSON()) var p = [], l = '', d = Object.keys(r) for (o = 0, s = d.length; o < s; o++) 'function' != typeof r[(l = d[o])] && p.push(l) if ((h = p.length) < 16) t.push(128 | h), (u = 1) else if (h < 65536) t.push(222, h >> 8, h), (u = 3) else { if (!(h < 4294967296)) throw new Error('Object too large') t.push(223, h >> 24, h >> 16, h >> 8, h), (u = 5) } for (o = 0; o < h; o++) (u += dt(t, n, (l = p[o]))), (u += dt(t, n, r[l])) return u } if ('boolean' === i) return t.push(r ? 195 : 194), 1 if ('undefined' === i) return t.push(212, 0, 0), 3 throw new Error('Could not encode') } var yt = function (t) { var e = [], n = [], r = dt(e, n, t), i = new ArrayBuffer(r), o = new DataView(i), s = 0, a = 0, c = -1 n.length > 0 && (c = n[0]._offset) for (var h, u = 0, f = 0, p = 0, l = e.length; p < l; p++) if ((o.setUint8(a + p, e[p]), p + 1 === c)) { if (((u = (h = n[s])._length), (f = a + c), h._bin)) for (var d = new Uint8Array(h._bin), y = 0; y < u; y++) o.setUint8(f + y, d[y]) else h._str ? lt(o, f, h._str) : void 0 !== h._float && o.setFloat64(f, h._float) ;(a += u), n[++s] && (c = n[s]._offset) } return i } function vt(t) { if (((this._offset = 0), t instanceof ArrayBuffer)) (this._buffer = t), (this._view = new DataView(this._buffer)) else { if (!ArrayBuffer.isView(t)) throw new Error('Invalid argument') ;(this._buffer = t.buffer), (this._view = new DataView(this._buffer, t.byteOffset, t.byteLength)) } } ;(vt.prototype._array = function (t) { for (var e = new Array(t), n = 0; n < t; n++) e[n] = this._parse() return e }), (vt.prototype._map = function (t) { for (var e = {}, n = 0; n < t; n++) e[this._parse()] = this._parse() return e }), (vt.prototype._str = function (t) { var e = (function (t, e, n) { for (var r = '', i = 0, o = e, s = e + n; o < s; o++) { var a = t.getUint8(o) if (0 != (128 & a)) if (192 != (224 & a)) if (224 != (240 & a)) { if (240 != (248 & a)) throw new Error('Invalid byte ' + a.toString(16)) ;(i = ((7 & a) << 18) | ((63 & t.getUint8(++o)) << 12) | ((63 & t.getUint8(++o)) << 6) | ((63 & t.getUint8(++o)) << 0)) >= 65536 ? ((i -= 65536), (r += String.fromCharCode(55296 + (i >>> 10), 56320 + (1023 & i)))) : (r += String.fromCharCode(i)) } else r += String.fromCharCode(((15 & a) << 12) | ((63 & t.getUint8(++o)) << 6) | ((63 & t.getUint8(++o)) << 0)) else r += String.fromCharCode(((31 & a) << 6) | (63 & t.getUint8(++o))) else r += String.fromCharCode(a) } return r })(this._view, this._offset, t) return (this._offset += t), e }), (vt.prototype._bin = function (t) { var e = this._buffer.slice(this._offset, this._offset + t) return (this._offset += t), e }), (vt.prototype._parse = function () { var t, e = this._view.getUint8(this._offset++), n = 0, r = 0, i = 0, o = 0 if (e < 192) return e < 128 ? e : e < 144 ? this._map(15 & e) : e < 160 ? this._array(15 & e) : this._str(31 & e) if (e > 223) return -1 * (255 - e + 1) switch (e) { case 192: return null case 194: return !1 case 195: return !0 case 196: return (n = this._view.getUint8(this._offset)), (this._offset += 1), this._bin(n) case 197: return (n = this._view.getUint16(this._offset)), (this._offset += 2), this._bin(n) case 198: return (n = this._view.getUint32(this._offset)), (this._offset += 4), this._bin(n) case 199: return (n = this._view.getUint8(this._offset)), (r = this._view.getInt8(this._offset + 1)), (this._offset += 2), [r, this._bin(n)] case 200: return (n = this._view.getUint16(this._offset)), (r = this._view.getInt8(this._offset + 2)), (this._offset += 3), [r, this._bin(n)] case 201: return (n = this._view.getUint32(this._offset)), (r = this._view.getInt8(this._offset + 4)), (this._offset += 5), [r, this._bin(n)] case 202: return (t = this._view.getFloat32(this._offset)), (this._offset += 4), t case 203: return (t = this._view.getFloat64(this._offset)), (this._offset += 8), t case 204: return (t = this._view.getUint8(this._offset)), (this._offset += 1), t case 205: return (t = this._view.getUint16(this._offset)), (this._offset += 2), t case 206: return (t = this._view.getUint32(this._offset)), (this._offset += 4), t case 207: return (i = this._view.getUint32(this._offset) * Math.pow(2, 32)), (o = this._view.getUint32(this._offset + 4)), (this._offset += 8), i + o case 208: return (t = this._view.getInt8(this._offset)), (this._offset += 1), t case 209: return (t = this._view.getInt16(this._offset)), (this._offset += 2), t case 210: return (t = this._view.getInt32(this._offset)), (this._offset += 4), t case 211: return (i = this._view.getInt32(this._offset) * Math.pow(2, 32)), (o = this._view.getUint32(this._offset + 4)), (this._offset += 8), i + o case 212: return (r = this._view.getInt8(this._offset)), (this._offset += 1), 0 === r ? void (this._offset += 1) : [r, this._bin(1)] case 213: return (r = this._view.getInt8(this._offset)), (this._offset += 1), [r, this._bin(2)] case 214: return (r = this._view.getInt8(this._offset)), (this._offset += 1), [r, this._bin(4)] case 215: return ( (r = this._view.getInt8(this._offset)), (this._offset += 1), 0 === r ? ((i = this._view.getInt32(this._offset) * Math.pow(2, 32)), (o = this._view.getUint32(this._offset + 4)), (this._offset += 8), new Date(i + o)) : [r, this._bin(8)] ) case 216: return (r = this._view.getInt8(this._offset)), (this._offset += 1), [r, this._bin(16)] case 217: return (n = this._view.getUint8(this._offset)), (this._offset += 1), this._str(n) case 218: return (n = this._view.getUint16(this._offset)), (this._offset += 2), this._str(n) case 219: return (n = this._view.getUint32(this._offset)), (this._offset += 4), this._str(n) case 220: return (n = this._view.getUint16(this._offset)), (this._offset += 2), this._array(n) case 221: return (n = this._view.getUint32(this._offset)), (this._offset += 4), this._array(n) case 222: return (n = this._view.getUint16(this._offset)), (this._offset += 2), this._map(n) case 223: return (n = this._view.getUint32(this._offset)), (this._offset += 4), this._map(n) } throw new Error('Could not parse') }) var gt = function (t) { var e = new vt(t), n = e._parse() if (e._offset !== t.byteLength) throw new Error(t.byteLength - e._offset + ' trailing bytes') return n } ;(pt.encode = yt), (pt.decode = gt) var mt, _t = { exports: {} } !(function (t) { function e(t) { if (t) return (function (t) { for (var n in e.prototype) t[n] = e.prototype[n] return t })(t) } ;(t.exports = e), (e.prototype.on = e.prototype.addEventListener = function (t, e) { return (this._callbacks = this._callbacks || {}), (this._callbacks['$' + t] = this._callbacks['$' + t] || []).push(e), this }), (e.prototype.once = function (t, e) { function n() { this.off(t, n), e.apply(this, arguments) } return (n.fn = e), this.on(t, n), this }), (e.prototype.off = e.prototype.removeListener = e.prototype.removeAllListeners = e.prototype.removeEventListener = function (t, e) { if (((this._callbacks = this._callbacks || {}), 0 == arguments.length)) return (this._callbacks = {}), this var n, r = this._callbacks['$' + t] if (!r) return this if (1 == arguments.length) return delete this._callbacks['$' + t], this for (var i = 0; i < r.length; i++) if ((n = r[i]) === e || n.fn === e) { r.splice(i, 1) break } return 0 === r.length && delete this._callbacks['$' + t], this }), (e.prototype.emit = function (t) { this._callbacks = this._callbacks || {} for (var e = new Array(arguments.length - 1), n = this._callbacks['$' + t], r = 1; r < arguments.length; r++) e[r - 1] = arguments[r] if (n) { r = 0 for (var i = (n = n.slice(0)).length; r < i; ++r) n[r].apply(this, e) } return this }), (e.prototype.listeners = function (t) { return (this._callbacks = this._callbacks || {}), this._callbacks['$' + t] || [] }), (e.prototype.hasListeners = function (t) { return !!this.listeners(t).length }) })(_t) var bt = pt, kt = _t.exports, wt = (ft.protocol = 5), Et = (mt = ft.PacketType = { CONNECT: 0, DISCONNECT: 1, EVENT: 2, ACK: 3, CONNECT_ERROR: 4 }), Ct = Number.isInteger || function (t) { return 'number' == typeof t && isFinite(t) && Math.floor(t) === t }, Ot = function (t) { return 'string' == typeof t }, Tt = function (t) { return '[object Object]' === Object.prototype.toString.call(t) } function St() {} function Rt() {} ;(St.prototype.encode = function (t) { return [bt.encode(t)] }), kt(Rt.prototype), (Rt.prototype.add = function (t) { var e = bt.decode(t) this.checkPacket(e), this.emit('decoded', e) }), (Rt.prototype.checkPacket = function (t) { if (!(Ct(t.type) && t.type >= Et.CONNECT && t.type <= Et.CONNECT_ERROR)) throw new Error('invalid packet type') if (!Ot(t.nsp)) throw new Error('invalid namespace') if ( !(function (t) { switch (t.type) { case Et.CONNECT: return void 0 === t.data || Tt(t.data) case Et.DISCONNECT: return void 0 === t.data case Et.CONNECT_ERROR: return Ot(t.data) || Tt(t.data) default: return Array.isArray(t.data) } })(t) ) throw new Error('invalid payload') if (!(void 0 === t.id || Ct(t.id))) throw new Error('invalid packet id') }), (Rt.prototype.destroy = function () {}) var At = (ft.Encoder = St), xt = (ft.Decoder = Rt), Ut = Object.freeze( t( { __proto__: null, default: ft, protocol: wt, get PacketType() { return mt }, Encoder: At, Decoder: xt, }, [ft] ) ) function Lt(t, e, n) { return ( t.on(e, n), function () { t.off(e, n) } ) } var Bt = Object.freeze({ connect: 1, connect_error: 1, disconnect: 1, disconnecting: 1, newListener: 1, removeListener: 1 }), jt = (function (t) { s(r, t) var e = f(r) function r(t, i, o) { var s return ( n(this, r), ((s = e.call(this)).connected = !1), (s.disconnected = !0), (s.receiveBuffer = []), (s.sendBuffer = []), (s.ids = 0), (s.acks = {}), (s.flags = {}), (s.io = t), (s.nsp = i), o && o.auth && (s.auth = o.auth), s.io._autoConnect && s.open(), s ) } return ( i(r, [ { key: 'subEvents', value: function () { if (!this.subs) { var t = this.io this.subs = [ Lt(t, 'open', this.onopen.bind(this)), Lt(t, 'packet', this.onpacket.bind(this)), Lt(t, 'error', this.onerror.bind(this)), Lt(t, 'close', this.onclose.bind(this)), ] } }, }, { key: 'active', get: function () { return !!this.subs }, }, { key: 'connect', value: function () { return this.connected || (this.subEvents(), this.io._reconnecting || this.io.open(), 'open' === this.io._readyState && this.onopen()), this }, }, { key: 'open', value: function () { return this.connect() }, }, { key: 'send', value: function () { for (var t = arguments.length, e = new Array(t), n = 0; n < t; n++) e[n] = arguments[n] return e.unshift('message'), this.emit.apply(this, e), this }, }, { key: 'emit', value: function (t) { if (Bt.hasOwnProperty(t)) throw new Error('"' + t + '" is a reserved event name') for (var e = arguments.length, n = new Array(e > 1 ? e - 1 : 0), r = 1; r < e; r++) n[r - 1] = arguments[r] n.unshift(t) var i = { type: mt.EVENT, data: n, options: {} } if (((i.options.compress = !1 !== this.flags.compress), 'function' == typeof n[n.length - 1])) { var o = this.ids++, s = n.pop() this._registerAckCallback(o, s), (i.id = o) } var a = this.io.engine && this.io.engine.transport && this.io.engine.transport.writable, c = this.flags.volatile && (!a || !this.connected) return c || (this.connected ? this.packet(i) : this.sendBuffer.push(i)), (this.flags = {}), this }, }, { key: '_registerAckCallback', value: function (t, e) { var n = this, r = this.flags.timeout if (void 0 !== r) { var i = this.io.setTimeoutFn(function () { delete n.acks[t] for (var r = 0; r < n.sendBuffer.length; r++) n.sendBuffer[r].id === t && n.sendBuffer.splice(r, 1) e.call(n, new Error('operation has timed out')) }, r) this.acks[t] = function () { n.io.clearTimeoutFn(i) for (var t = arguments.length, r = new Array(t), o = 0; o < t; o++) r[o] = arguments[o] e.apply(n, [null].concat(r)) } } else this.acks[t] = e }, }, { key: 'packet', value: function (t) { ;(t.nsp = this.nsp), this.io._packet(t) }, }, { key: 'onopen', value: function () { var t = this 'function' == typeof this.auth ? this.auth(function (e) { t.packet({ type: mt.CONNECT, data: e }) }) : this.packet({ type: mt.CONNECT, data: this.auth }) }, }, { key: 'onerror', value: function (t) { this.connected || this.emitReserved('connect_error', t) }, }, { key: 'onclose', value: function (t) { ;(this.connected = !1), (this.disconnected = !0), delete this.id, this.emitReserved('disconnect', t) }, }, { key: 'onpacket', value: function (t) { if (t.nsp === this.nsp) switch (t.type) { case mt.CONNECT: if (t.data && t.data.sid) { var e = t.data.sid this.onconnect(e) } else this.emitReserved( 'connect_error', new Error( 'It seems you are trying to reach a Socket.IO server in v2.x with a v3.x client, but they are not compatible (more information here: https://socket.io/docs/v3/migrating-from-2-x-to-3-0/)' ) ) break case mt.EVENT: case mt.BINARY_EVENT: this.onevent(t) break case mt.ACK: case mt.BINARY_ACK: this.onack(t) break case mt.DISCONNECT: this.ondisconnect() break case mt.CONNECT_ERROR: this.destroy() var n = new Error(t.data.message) ;(n.data = t.data.data), this.emitReserved('connect_error', n) } }, }, { key: 'onevent', value: function (t) { var e = t.data || [] null != t.id && e.push(this.ack(t.id)), this.connected ? this.emitEvent(e) : this.receiveBuffer.push(Object.freeze(e)) }, }, { key: 'emitEvent', value: function (t) { if (this._anyListeners && this._anyListeners.length) { var e, n = d(this._anyListeners.slice()) try { for (n.s(); !(e = n.n()).done; ) { e.value.apply(this, t) } } catch (t) { n.e(t) } finally { n.f() } } p(a(r.prototype), 'emit', this).apply(this, t) }, }, { key: 'ack', value: function (t) { var e = this, n = !1 return function () { if (!n) { n = !0 for (var r = arguments.length, i = new Array(r), o = 0; o < r; o++) i[o] = arguments[o] e.packet({ type: mt.ACK, id: t, data: i }) } } }, }, { key: 'onack', value: function (t) { var e = this.acks[t.id] 'function' == typeof e && (e.apply(this, t.data), delete this.acks[t.id]) }, }, { key: 'onconnect', value: function (t) { ;(this.id = t), (this.connected = !0), (this.disconnected = !1), this.emitBuffered(), this.emitReserved('connect') }, }, { key: 'emitBuffered', value: function () { var t = this this.receiveBuffer.forEach(function (e) { return t.emitEvent(e) }), (this.receiveBuffer = []), this.sendBuffer.forEach(function (e) { return t.packet(e) }), (this.sendBuffer = []) }, }, { key: 'ondisconnect', value: function () { this.destroy(), this.onclose('io server disconnect') }, }, { key: 'destroy', value: function () { this.subs && (this.subs.forEach(function (t) { return t() }), (this.subs = void 0)), this.io._destroy(this) }, }, { key: 'disconnect', value: function () { return this.connected && this.packet({ type: mt.DISCONNECT }), this.destroy(), this.connected && this.onclose('io client disconnect'), this }, }, { key: 'close', value: function () { return this.disconnect() }, }, { key: 'compress', value: function (t) { return (this.flags.compress = t), this }, }, { key: 'volatile', get: function () { return (this.flags.volatile = !0), this }, }, { key: 'timeout', value: function (t) { return (this.flags.timeout = t), this }, }, { key: 'onAny', value: function (t) { return (this._anyListeners = this._anyListeners || []), this._anyListeners.push(t), this }, }, { key: 'prependAny', value: function (t) { return (this._anyListeners = this._anyListeners || []), this._anyListeners.unshift(t), this }, }, { key: 'offAny', value: function (t) { if (!this._anyListeners) return this if (t) { for (var e = this._anyListeners, n = 0; n < e.length; n++) if (t === e[n]) return e.splice(n, 1), this } else this._anyListeners = [] return this }, }, { key: 'listenersAny', value: function () { return this._anyListeners || [] }, }, ]), r ) })(T), Nt = Pt function Pt(t) { ;(t = t || {}), (this.ms = t.min || 100), (this.max = t.max || 1e4), (this.factor = t.factor || 2), (this.jitter = t.jitter > 0 && t.jitter <= 1 ? t.jitter : 0), (this.attempts = 0) } ;(Pt.prototype.duration = function () { var t = this.ms * Math.pow(this.factor, this.attempts++) if (this.jitter) { var e = Math.random(), n = Math.floor(e * this.jitter * t) t = 0 == (1 & Math.floor(10 * e)) ? t - n : t + n } return 0 | Math.min(t, this.max) }), (Pt.prototype.reset = function () { this.attempts = 0 }), (Pt.prototype.setMin = function (t) { this.ms = t }), (Pt.prototype.setMax = function (t) { this.max = t }), (Pt.prototype.setJitter = function (t) { this.jitter = t }) var qt = (function (t) { s(o, t) var r = f(o) function o(t, i) { var s, a n(this, o), ((s = r.call(this)).nsps = {}), (s.subs = []), t && 'object' === e(t) && ((i = t), (t = void 0)), ((i = i || {}).path = i.path || '/socket.io'), (s.opts = i), O(h(s), i), s.reconnection(!1 !== i.reconnection), s.reconnectionAttempts(i.reconnectionAttempts || 1 / 0), s.reconnectionDelay(i.reconnectionDelay || 1e3), s.reconnectionDelayMax(i.reconnectionDelayMax || 5e3), s.randomizationFactor(null !== (a = i.randomizationFactor) && void 0 !== a ? a : 0.5), (s.backoff = new Nt({ min: s.reconnectionDelay(), max: s.reconnectionDelayMax(), jitter: s.randomizationFactor() })), s.timeout(null == i.timeout ? 2e4 : i.timeout), (s._readyState = 'closed'), (s.uri = t) var c = i.parser || Ut return (s.encoder = new c.Encoder()), (s.decoder = new c.Decoder()), (s._autoConnect = !1 !== i.autoConnect), s._autoConnect && s.open(), s } return ( i(o, [ { key: 'reconnection', value: function (t) { return arguments.length ? ((this._reconnection = !!t), this) : this._reconnection }, }, { key: 'reconnectionAttempts', value: function (t) { return void 0 === t ? this._reconnectionAttempts : ((this._reconnectionAttempts = t), this) }, }, { key: 'reconnectionDelay', value: function (t) { var e return void 0 === t ? this._reconnectionDelay : ((this._reconnectionDelay = t), null === (e = this.backoff) || void 0 === e || e.setMin(t), this) }, }, { key: 'randomizationFactor', value: function (t) { var e return void 0 === t ? this._randomizationFactor : ((this._randomizationFactor = t), null === (e = this.backoff) || void 0 === e || e.setJitter(t), this) }, }, { key: 'reconnectionDelayMax', value: function (t) { var e return void 0 === t ? this._reconnectionDelayMax : ((this._reconnectionDelayMax = t), null === (e = this.backoff) || void 0 === e || e.setMax(t), this) }, }, { key: 'timeout', value: function (t) { return arguments.length ? ((this._timeout = t), this) : this._timeout }, }, { key: 'maybeReconnectOnOpen', value: function () { !this._reconnecting && this._reconnection && 0 === this.backoff.attempts && this.reconnect() }, }, { key: 'open', value: function (t) { var e = this if (~this._readyState.indexOf('open')) return this this.engine = new ut(this.uri, this.opts) var n = this.engine, r = this ;(this._readyState = 'opening'), (this.skipReconnect = !1) var i = Lt(n, 'open', function () { r.onopen(), t && t() }), o = Lt(n, 'error', function (n) { r.cleanup(), (r._readyState = 'closed'), e.emitReserved('error', n), t ? t(n) : r.maybeReconnectOnOpen() }) if (!1 !== this._timeout) { var s = this._timeout 0 === s && i() var a = this.setTimeoutFn(function () { i(), n.close(), n.emit('error', new Error('timeout')) }, s) this.opts.autoUnref && a.unref(), this.subs.push(function () { clearTimeout(a) }) } return this.subs.push(i), this.subs.push(o), this }, }, { key: 'connect', value: function (t) { return this.open(t) }, }, { key: 'onopen', value: function () { this.cleanup(), (this._readyState = 'open'), this.emitReserved('open') var t = this.engine this.subs.push( Lt(t, 'ping', this.onping.bind(this)), Lt(t, 'data', this.ondata.bind(this)), Lt(t, 'error', this.onerror.bind(this)), Lt(t, 'close', this.onclose.bind(this)), Lt(this.decoder, 'decoded', this.ondecoded.bind(this)) ) }, }, { key: 'onping', value: function () { this.emitReserved('ping') }, }, { key: 'ondata', value: function (t) { this.decoder.add(t) }, }, { key: 'ondecoded', value: function (t) { this.emitReserved('packet', t) }, }, { key: 'onerror', value: function (t) { this.emitReserved('error', t) }, }, { key: 'socket', value: function (t, e) { var n = this.nsps[t] return n || ((n = new jt(this, t, e)), (this.nsps[t] = n)), n }, }, { key: '_destroy', value: function (t) { for (var e = 0, n = Object.keys(this.nsps); e < n.length; e++) { var r = n[e] if (this.nsps[r].active) return } this._close() }, }, { key: '_packet', value: function (t) { for (var e = this.encoder.encode(t), n = 0; n < e.length; n++) this.engine.write(e[n], t.options) }, }, { key: 'cleanup', value: function () { this.subs.forEach(function (t) { return t() }), (this.subs.length = 0), this.decoder.destroy() }, }, { key: '_close', value: function () { ;(this.skipReconnect = !0), (this._reconnecting = !1), this.onclose('forced close'), this.engine && this.engine.close() }, }, { key: 'disconnect', value: function () { return this._close() }, }, { key: 'onclose', value: function (t) { this.cleanup(), this.backoff.reset(), (this._readyState = 'closed'), this.emitReserved('close', t), this._reconnection && !this.skipReconnect && this.reconnect() }, }, { key: 'reconnect', value: function () { var t = this if (this._reconnecting || this.skipReconnect) return this var e = this if (this.backoff.attempts >= this._reconnectionAttempts) this.backoff.reset(), this.emitReserved('reconnect_failed'), (this._reconnecting = !1) else { var n = this.backoff.duration() this._reconnecting = !0 var r = this.setTimeoutFn(function () { e.skipReconnect || (t.emitReserved('reconnect_attempt', e.backoff.attempts), e.skipReconnect || e.open(function (n) { n ? ((e._reconnecting = !1), e.reconnect(), t.emitReserved('reconnect_error', n)) : e.onreconnect() })) }, n) this.opts.autoUnref && r.unref(), this.subs.push(function () { clearTimeout(r) }) } }, }, { key: 'onreconnect', value: function () { var t = this.backoff.attempts ;(this._reconnecting = !1), this.backoff.reset(), this.emitReserved('reconnect', t) }, }, ]), o ) })(T), Dt = {} function It(t, n) { 'object' === e(t) && ((n = t), (t = void 0)) var r, i = (function (t) { var e = arguments.length > 1 && void 0 !== arguments[1] ? arguments[1] : '', n = arguments.length > 2 ? arguments[2] : void 0, r = t ;(n = n || ('undefined' != typeof location && location)), null == t && (t = n.protocol + '//' + n.host), 'string' == typeof t && ('/' === t.charAt(0) && (t = '/' === t.charAt(1) ? n.protocol + t : n.host + t), /^(https?|wss?):\/\//.test(t) || (t = void 0 !== n ? n.protocol + '//' + t : 'https://' + t), (r = g(t))), r.port || (/^(http|ws)$/.test(r.protocol) ? (r.port = '80') : /^(http|ws)s$/.test(r.protocol) && (r.port = '443')), (r.path = r.path || '/') var i = -1 !== r.host.indexOf(':') ? '[' + r.host + ']' : r.host return (r.id = r.protocol + '://' + i + ':' + r.port + e), (r.href = r.protocol + '://' + i + (n && n.port === r.port ? '' : ':' + r.port)), r })(t, (n = n || {}).path || '/socket.io'), o = i.source, s = i.id, a = i.path, c = Dt[s] && a in Dt[s].nsps return ( n.forceNew || n['force new connection'] || !1 === n.multiplex || c ? (r = new qt(o, n)) : (Dt[s] || (Dt[s] = new qt(o, n)), (r = Dt[s])), i.query && !n.query && (n.query = i.queryKey), r.socket(i.path, n) ) } return o(It, { Manager: qt, Socket: jt, io: It, connect: It }), It }) //# sourceMappingURL=socket.io.msgpack.min.js.map