=1-t)return U[K-1];var tt=W%1,ut=W|0;return $.lerp(U[ut],U[ut+1],tt)}return B}(),$}(),r=function(x,B,F){return B===void 0&&(B=0),F===void 0&&(F=Math.pow(10,B)),Math.round(F*x)/F},o={grad:360/400,turn:360,rad:360/(Math.PI*2)},a=e.hexToHsva=function(){function $(x){return N(s(x))}return $}(),s=e.hexToRgba=function(){function $(x){return x[0]==="#"&&(x=x.substring(1)),x.length<6?{r:parseInt(x[0]+x[0],16),g:parseInt(x[1]+x[1],16),b:parseInt(x[2]+x[2],16),a:x.length===4?r(parseInt(x[3]+x[3],16)/255,2):1}:{r:parseInt(x.substring(0,2),16),g:parseInt(x.substring(2,4),16),b:parseInt(x.substring(4,6),16),a:x.length===8?r(parseInt(x.substring(6,8),16)/255,2):1}}return $}(),u=e.parseHue=function(){function $(x,B){return B===void 0&&(B="deg"),Number(x)*(o[B]||1)}return $}(),l=e.hslaStringToHsva=function(){function $(x){var B=/hsla?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i,F=B.exec(x);return F?f({h:u(F[1],F[2]),s:Number(F[3]),l:Number(F[4]),a:F[5]===void 0?1:Number(F[5])/(F[6]?100:1)}):{h:0,s:0,v:0,a:1}}return $}(),g=e.hslStringToHsva=l,f=e.hslaToHsva=function(){function $(x){var B=x.h,F=x.s,U=x.l,K=x.a;return F*=(U<50?U:100-U)/100,{h:B,s:F>0?2*F/(U+F)*100:0,v:U+F,a:K}}return $}(),i=e.hsvaToHex=function(){function $(x){return P(m(x))}return $}(),d=e.hsvaToHsla=function(){function $(x){var B=x.h,F=x.s,U=x.v,K=x.a,W=(200-F)*U/100;return{h:r(B),s:r(W>0&&W<200?F*U/100/(W<=100?W:200-W)*100:0),l:r(W/2),a:r(K,2)}}return $}(),c=e.hsvaToHslString=function(){function $(x){var B=d(x),F=B.h,U=B.s,K=B.l;return"hsl("+F+", "+U+"%, "+K+"%)"}return $}(),p=e.hsvaToHsvString=function(){function $(x){var B=M(x),F=B.h,U=B.s,K=B.v;return"hsv("+F+", "+U+"%, "+K+"%)"}return $}(),v=e.hsvaToHsvaString=function(){function $(x){var B=M(x),F=B.h,U=B.s,K=B.v,W=B.a;return"hsva("+F+", "+U+"%, "+K+"%, "+W+")"}return $}(),h=e.hsvaToHslaString=function(){function $(x){var B=d(x),F=B.h,U=B.s,K=B.l,W=B.a;return"hsla("+F+", "+U+"%, "+K+"%, "+W+")"}return $}(),m=e.hsvaToRgba=function(){function $(x){var B=x.h,F=x.s,U=x.v,K=x.a;B=B/360*6,F=F/100,U=U/100;var W=Math.floor(B),tt=U*(1-F),ut=U*(1-(B-W)*F),ct=U*(1-(1-B+W)*F),Z=W%6;return{r:[U,ut,tt,tt,ct,U][Z]*255,g:[ct,U,U,ut,tt,tt][Z]*255,b:[tt,tt,ct,U,U,ut][Z]*255,a:r(K,2)}}return $}(),E=e.hsvaToRgbString=function(){function $(x){var B=m(x),F=B.r,U=B.g,K=B.b;return"rgb("+r(F)+", "+r(U)+", "+r(K)+")"}return $}(),I=e.hsvaToRgbaString=function(){function $(x){var B=m(x),F=B.r,U=B.g,K=B.b,W=B.a;return"rgba("+r(F)+", "+r(U)+", "+r(K)+", "+r(W,2)+")"}return $}(),O=e.hsvaStringToHsva=function(){function $(x){var B=/hsva?\(?\s*(-?\d*\.?\d+)(deg|rad|grad|turn)?[,\s]+(-?\d*\.?\d+)%?[,\s]+(-?\d*\.?\d+)%?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i,F=B.exec(x);return F?M({h:u(F[1],F[2]),s:Number(F[3]),v:Number(F[4]),a:F[5]===void 0?1:Number(F[5])/(F[6]?100:1)}):{h:0,s:0,v:0,a:1}}return $}(),b=e.hsvStringToHsva=O,S=e.rgbaStringToHsva=function(){function $(x){var B=/rgba?\(?\s*(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?[,\s]+(-?\d*\.?\d+)(%)?,?\s*[/\s]*(-?\d*\.?\d+)?(%)?\s*\)?/i,F=B.exec(x);return F?N({r:Number(F[1])/(F[2]?100/255:1),g:Number(F[3])/(F[4]?100/255:1),b:Number(F[5])/(F[6]?100/255:1),a:F[7]===void 0?1:Number(F[7])/(F[8]?100:1)}):{h:0,s:0,v:0,a:1}}return $}(),C=e.rgbStringToHsva=S,T=function(x){var B=x.toString(16);return B.length<2?"0"+B:B},P=e.rgbaToHex=function(){function $(x){var B=x.r,F=x.g,U=x.b,K=x.a,W=K<1?T(r(K*255)):"";return"#"+T(r(B))+T(r(F))+T(r(U))+W}return $}(),N=e.rgbaToHsva=function(){function $(x){var B=x.r,F=x.g,U=x.b,K=x.a,W=Math.max(B,F,U),tt=W-Math.min(B,F,U),ut=tt?W===B?(F-U)/tt:W===F?2+(U-B)/tt:4+(B-F)/tt:0;return{h:60*(ut<0?ut+6:ut),s:W?tt/W*100:0,v:W/255*100,a:K}}return $}(),M=e.roundHsva=function(){function $(x){return{h:r(x.h),s:r(x.s),v:r(x.v),a:r(x.a,2)}}return $}(),w=e.rgbaToRgb=function(){function $(x){var B=x.r,F=x.g,U=x.b;return{r:B,g:F,b:U}}return $}(),V=e.hslaToHsl=function(){function $(x){var B=x.h,F=x.s,U=x.l;return{h:B,s:F,l:U}}return $}(),H=e.hsvaToHsv=function(){function $(x){var B=M(x),F=B.h,U=B.s,K=B.v;return{h:F,s:U,v:K}}return $}(),j=/^#?([0-9A-F]{3,8})$/i,G=e.validHex=function(){function $(x,B){var F=j.exec(x),U=F?F[1].length:0;return U===3||U===6||!!B&&U===4||!!B&&U===8}return $}()},92868:function(y,e){"use strict";e.__esModule=!0,e.EventEmitter=void 0;/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t=n.EventEmitter=function(){function e(){this.listeners={}}var r=e.prototype;return r.on=function(){function o(a,s){this.listeners[a]=this.listeners[a]||[],this.listeners[a].push(s)}return o}(),r.off=function(){function o(a,s){var i=this.listeners[a];if(!i)throw new Error('There is no listeners for "'+a+'"');this.listeners[a]=i.filter(function(c){return c!==s})}return o}(),r.emit=function(){function o(a){var s=this.listeners[a];if(s){for(var i=arguments.length,c=new Array(i>1?i-1:0),p=1;p1?u-1:0),g=1;g1?p-1:0),u=1;u1?f-1:0),v=1;v1?g-1:0),i=1;i1?f-1:0),d=1;dv?v:f}return p}(),e=n.clamp01=function(){function p(f){return f<0?0:f>1?1:f}return p}(),r=n.scale=function(){function p(f,u,v){return(f-u)/(v-u)}return p}(),o=n.round=function(){function p(f,u){if(!f||isNaN(f))return f;var v,l,g,d;return u|=0,v=Math.pow(10,u),f*=v,d=+(f>0)|-(f<0),g=Math.abs(f%1)>=.4999999999854481,l=Math.floor(f),g&&(f=l+(d>0)),(g?f:Math.round(f))/v}return p}(),a=n.toFixed=function(){function p(f,u){return u===void 0&&(u=0),Number(f).toFixed(Math.max(u,0))}return p}(),s=n.inRange=function(){function p(f,u){return u&&f>=u[0]&&f<=u[1]}return p}(),i=n.keyOfMatchingRange=function(){function p(f,u){for(var v=0,l=Object.keys(u);vd?d:f}return g}(),n=e.clamp01=function(){function g(f){return f<0?0:f>1?1:f}return g}(),r=e.scale=function(){function g(f,i,d){return(f-i)/(d-i)}return g}(),o=e.round=function(){function g(f,i){if(!f||isNaN(f))return f;var d,c,p,v;return i|=0,d=Math.pow(10,i),f*=d,v=+(f>0)|-(f<0),p=Math.abs(f%1)>=.4999999999854481,c=Math.floor(f),p&&(f=c+(v>0)),(p?f:Math.round(f))/d}return g}(),a=e.toFixed=function(){function g(f,i){return i===void 0&&(i=0),Number(f).toFixed(Math.max(i,0))}return g}(),s=e.inRange=function(){function g(f,i){return i&&f>=i[0]&&f<=i[1]}return g}(),u=e.keyOfMatchingRange=function(){function g(f,i){for(var d=0,c=Object.keys(i);d1?d-1:0),m=1;m1?T-1:0),N=1;N=0;--nt){var ht=this.tryEntries[nt],Et=ht.completion;if(ht.tryLoc==="root")return q("end");if(ht.tryLoc<=this.prev){var ut=b.call(ht,"catchLoc"),yt=b.call(ht,"finallyLoc");if(ut&&yt){if(this.prev=0;--q){var nt=this.tryEntries[q];if(nt.tryLoc<=this.prev&&b.call(nt,"finallyLoc")&&this.prev=0;--k){var q=this.tryEntries[k];if(q.finallyLoc===tt)return this.complete(q.completion,q.afterLoc),rt(q),U}}return ot}(),catch:function(){function ot(tt){for(var k=this.tryEntries.length-1;k>=0;--k){var q=this.tryEntries[k];if(q.tryLoc===tt){var nt=q.completion;if(nt.type==="throw"){var ht=nt.arg;rt(q)}return ht}}throw Error("illegal catch attempt")}return ot}(),delegateYield:function(){function ot(tt,k,q){return this.delegate={iterator:mt(tt),resultName:k,nextLoc:q},this.method==="next"&&(this.arg=O),U}return ot}()},C}function e(O,C,S,b,T,P,N){try{var M=O[P](N),w=M.value}catch(D){return void S(D)}M.done?C(w):Promise.resolve(w).then(b,T)}function r(O){return function(){var C=this,S=arguments;return new Promise(function(b,T){var P=O.apply(C,S);function N(w){e(P,b,T,N,M,"next",w)}function M(w){e(P,b,T,N,M,"throw",w)}N(void 0)})}}/**
+ */var r=e.createStore=function(){function g(f,i){if(i)return i(g)(f);var d,c=[],p=function(){function m(){return d}return m}(),v=function(){function m(E){c.push(E)}return m}(),h=function(){function m(E){d=f(d,E);for(var I=0;I1?v-1:0),m=1;m1?T-1:0),N=1;N=0;--nt){var ht=this.tryEntries[nt],Et=ht.completion;if(ht.tryLoc==="root")return q("end");if(ht.tryLoc<=this.prev){var st=C.call(ht,"catchLoc"),yt=C.call(ht,"finallyLoc");if(st&&yt){if(this.prev=0;--q){var nt=this.tryEntries[q];if(nt.tryLoc<=this.prev&&C.call(nt,"finallyLoc")&&this.prev=0;--k){var q=this.tryEntries[k];if(q.finallyLoc===et)return this.complete(q.completion,q.afterLoc),rt(q),F}}return ot}(),catch:function(){function ot(et){for(var k=this.tryEntries.length-1;k>=0;--k){var q=this.tryEntries[k];if(q.tryLoc===et){var nt=q.completion;if(nt.type==="throw"){var ht=nt.arg;rt(q)}return ht}}throw Error("illegal catch attempt")}return ot}(),delegateYield:function(){function ot(et,k,q){return this.delegate={iterator:mt(et),resultName:k,nextLoc:q},this.method==="next"&&(this.arg=O),F}return ot}()},b}function n(O,b,S,C,T,P,N){try{var M=O[P](N),w=M.value}catch(V){return void S(V)}M.done?b(w):Promise.resolve(w).then(C,T)}function r(O){return function(){var b=this,S=arguments;return new Promise(function(C,T){var P=O.apply(b,S);function N(w){n(P,C,T,N,M,"next",w)}function M(w){n(P,C,T,N,M,"throw",w)}N(void 0)})}}/**
* Browser-agnostic abstraction of key-value web storage.
*
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var o=n.IMPL_MEMORY=0,a=n.IMPL_HUB_STORAGE=1,s=n.IMPL_INDEXED_DB=2,i=1,c="para-tgui",p="storage-v1",f="readonly",u="readwrite",v=function(C){return function(){try{return!!C()}catch(S){return!1}}},l=v(function(){return window.hubStorage&&window.hubStorage.getItem}),g=v(function(){return(window.indexedDB||window.msIndexedDB)&&(window.IDBTransaction||window.msIDBTransaction)}),d=function(){function O(){this.impl=o,this.store={}}var C=O.prototype;return C.get=function(){var S=r(t().mark(function(){function T(P){return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:return M.abrupt("return",this.store[P]);case 1:case"end":return M.stop()}}return N}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.set=function(){var S=r(t().mark(function(){function T(P,N){return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:this.store[P]=N;case 1:case"end":return w.stop()}}return M}(),T,this)}return T}()));function b(T,P){return S.apply(this,arguments)}return b}(),C.remove=function(){var S=r(t().mark(function(){function T(P){return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:this.store[P]=void 0;case 1:case"end":return M.stop()}}return N}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.clear=function(){var S=r(t().mark(function(){function T(){return t().wrap(function(){function P(N){for(;;)switch(N.prev=N.next){case 0:this.store={};case 1:case"end":return N.stop()}}return P}(),T,this)}return T}()));function b(){return S.apply(this,arguments)}return b}(),O}(),h=function(){function O(){this.impl=a}var C=O.prototype;return C.get=function(){var S=r(t().mark(function(){function T(P){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,window.hubStorage.getItem("paradise-"+P);case 2:if(N=w.sent,typeof N!="string"){w.next=5;break}return w.abrupt("return",JSON.parse(N));case 5:case"end":return w.stop()}}return M}(),T)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.set=function(){function S(b,T){window.hubStorage.setItem("paradise-"+b,JSON.stringify(T))}return S}(),C.remove=function(){function S(b){window.hubStorage.removeItem("paradise-"+b)}return S}(),C.clear=function(){function S(){window.hubStorage.clear()}return S}(),O}(),m=function(){function O(){this.impl=s,this.dbPromise=new Promise(function(S,b){var T=window.indexedDB||window.msIndexedDB,P=T.open(c,i);P.onupgradeneeded=function(){try{P.result.createObjectStore(p)}catch(N){b(new Error("Failed to upgrade IDB: "+P.error))}},P.onsuccess=function(){return S(P.result)},P.onerror=function(){b(new Error("Failed to open IDB: "+P.error))}})}var C=O.prototype;return C.getStore=function(){var S=r(t().mark(function(){function T(P){return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:return M.abrupt("return",this.dbPromise.then(function(w){return w.transaction(p,P).objectStore(p)}));case 1:case"end":return M.stop()}}return N}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.get=function(){var S=r(t().mark(function(){function T(P){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.getStore(f);case 2:return N=w.sent,w.abrupt("return",new Promise(function(D,V){var F=N.get(P);F.onsuccess=function(){return D(F.result)},F.onerror=function(){return V(F.error)}}));case 4:case"end":return w.stop()}}return M}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.set=function(){var S=r(t().mark(function(){function T(P,N){var M;return t().wrap(function(){function w(D){for(;;)switch(D.prev=D.next){case 0:return D.next=2,this.getStore(u);case 2:M=D.sent,M.put(N,P);case 4:case"end":return D.stop()}}return w}(),T,this)}return T}()));function b(T,P){return S.apply(this,arguments)}return b}(),C.remove=function(){var S=r(t().mark(function(){function T(P){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.getStore(u);case 2:N=w.sent,N.delete(P);case 4:case"end":return w.stop()}}return M}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.clear=function(){var S=r(t().mark(function(){function T(){var P;return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:return M.next=2,this.getStore(u);case 2:P=M.sent,P.clear();case 4:case"end":return M.stop()}}return N}(),T,this)}return T}()));function b(){return S.apply(this,arguments)}return b}(),O}(),E=function(){function O(){this.backendPromise=r(t().mark(function(){function S(){var b;return t().wrap(function(){function T(P){for(;;)switch(P.prev=P.next){case 0:if(!(!Byond.TRIDENT&&l())){P.next=2;break}return P.abrupt("return",new h);case 2:if(!g()){P.next=12;break}return P.prev=3,b=new m,P.next=7,b.dbPromise;case 7:return P.abrupt("return",b);case 10:P.prev=10,P.t0=P.catch(3);case 12:return P.abrupt("return",new d);case 13:case"end":return P.stop()}}return T}(),S,null,[[3,10]])}return S}()))()}var C=O.prototype;return C.get=function(){var S=r(t().mark(function(){function T(P){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.backendPromise;case 2:return N=w.sent,w.abrupt("return",N.get(P));case 4:case"end":return w.stop()}}return M}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.set=function(){var S=r(t().mark(function(){function T(P,N){var M;return t().wrap(function(){function w(D){for(;;)switch(D.prev=D.next){case 0:return D.next=2,this.backendPromise;case 2:return M=D.sent,D.abrupt("return",M.set(P,N));case 4:case"end":return D.stop()}}return w}(),T,this)}return T}()));function b(T,P){return S.apply(this,arguments)}return b}(),C.remove=function(){var S=r(t().mark(function(){function T(P){var N;return t().wrap(function(){function M(w){for(;;)switch(w.prev=w.next){case 0:return w.next=2,this.backendPromise;case 2:return N=w.sent,w.abrupt("return",N.remove(P));case 4:case"end":return w.stop()}}return M}(),T,this)}return T}()));function b(T){return S.apply(this,arguments)}return b}(),C.clear=function(){var S=r(t().mark(function(){function T(){var P;return t().wrap(function(){function N(M){for(;;)switch(M.prev=M.next){case 0:return M.next=2,this.backendPromise;case 2:return P=M.sent,M.abrupt("return",P.clear());case 4:case"end":return M.stop()}}return N}(),T,this)}return T}()));function b(){return S.apply(this,arguments)}return b}(),O}(),I=n.storage=new E},25328:function(y,n){"use strict";n.__esModule=!0,n.toTitleCase=n.multiline=n.decodeHtmlEntities=n.createSearch=n.createGlobPattern=n.capitalize=n.buildQueryString=void 0;function t(u,v){var l=typeof Symbol!="undefined"&&u[Symbol.iterator]||u["@@iterator"];if(l)return(l=l.call(u)).next.bind(l);if(Array.isArray(u)||(l=e(u))||v&&u&&typeof u.length=="number"){l&&(u=l);var g=0;return function(){return g>=u.length?{done:!0}:{done:!1,value:u[g++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function e(u,v){if(u){if(typeof u=="string")return r(u,v);var l={}.toString.call(u).slice(8,-1);return l==="Object"&&u.constructor&&(l=u.constructor.name),l==="Map"||l==="Set"?Array.from(u):l==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(l)?r(u,v):void 0}}function r(u,v){(v==null||v>u.length)&&(v=u.length);for(var l=0,g=Array(v);l=i.length?{done:!0}:{done:!1,value:i[p++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function n(i,d){if(i){if(typeof i=="string")return r(i,d);var c={}.toString.call(i).slice(8,-1);return c==="Object"&&i.constructor&&(c=i.constructor.name),c==="Map"||c==="Set"?Array.from(i):c==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(c)?r(i,d):void 0}}function r(i,d){(d==null||d>i.length)&&(d=i.length);for(var c=0,p=Array(d);c",apos:"'"};return v.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(l,function(d,h){return g[h]}).replace(/?([0-9]+);/gi,function(d,h){var m=parseInt(h,10);return String.fromCharCode(m)}).replace(/?([0-9a-f]+);/gi,function(d,h){var m=parseInt(h,16);return String.fromCharCode(m)})}return u}(),f=n.buildQueryString=function(){function u(v){return Object.keys(v).map(function(l){return encodeURIComponent(l)+"="+encodeURIComponent(v[l])}).join("&")}return u}()},69214:function(y,n){"use strict";n.__esModule=!0,n.throttle=n.sleep=n.debounce=void 0;/**
+ */var o=e.multiline=function(){function i(d){if(Array.isArray(d))return i(d.join(""));for(var c=d.split("\n"),p,v=t(c),h;!(h=v()).done;)for(var m=h.value,E=0;E",apos:"'"};return d.replace(/
/gi,"\n").replace(/<\/?[a-z0-9-_]+[^>]*>/gi,"").replace(c,function(v,h){return p[h]}).replace(/?([0-9]+);/gi,function(v,h){var m=parseInt(h,10);return String.fromCharCode(m)}).replace(/?([0-9a-f]+);/gi,function(v,h){var m=parseInt(h,16);return String.fromCharCode(m)})}return i}(),f=e.buildQueryString=function(){function i(d){return Object.keys(d).map(function(c){return encodeURIComponent(c)+"="+encodeURIComponent(d[c])}).join("&")}return i}()},69214:function(y,e){"use strict";e.__esModule=!0,e.throttle=e.sleep=e.debounce=void 0;/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t=n.debounce=function(){function o(a,s,i){i===void 0&&(i=!1);var c;return function(){for(var p=arguments.length,f=new Array(p),u=0;u=s)a.apply(null,u),i=l;else{var g;c=setTimeout(function(){return p.apply(void 0,u)},s-(l-((g=i)!=null?g:0)))}}return p}()}return o}()},90286:function(y,n){"use strict";n.__esModule=!0,n.createUuid=void 0;/**
+ */var t=e.debounce=function(){function o(a,s,u){u===void 0&&(u=!1);var l;return function(){for(var g=arguments.length,f=new Array(g),i=0;i=s)a.apply(null,i),u=c;else{var p;l=setTimeout(function(){return g.apply(void 0,i)},s-(c-((p=u)!=null?p:0)))}}return g}()}return o}()},90286:function(y,e){"use strict";e.__esModule=!0,e.createUuid=void 0;/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t=n.createUuid=function(){function e(){var r=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){var a=(r+Math.random()*16)%16|0;return r=Math.floor(r/16),(o==="x"?a:a&3|8).toString(16)})}return e}()},97450:function(y,n,t){"use strict";n.__esModule=!0,n.vecSubtract=n.vecScale=n.vecNormalize=n.vecMultiply=n.vecLength=n.vecInverse=n.vecDivide=n.vecAdd=void 0;var e=t(88510);/**
+ */var t=e.createUuid=function(){function n(){var r=new Date().getTime();return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,function(o){var a=(r+Math.random()*16)%16|0;return r=Math.floor(r/16),(o==="x"?a:a&3|8).toString(16)})}return n}()},97450:function(y,e,t){"use strict";e.__esModule=!0,e.vecSubtract=e.vecScale=e.vecNormalize=e.vecMultiply=e.vecLength=e.vecInverse=e.vecDivide=e.vecAdd=void 0;var n=t(88510);/**
* N-dimensional vector manipulation functions.
*
* Vectors are plain number arrays, i.e. [x, y, z].
@@ -66,178 +66,178 @@
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var r=function(h,m){return h+m},o=function(h,m){return h-m},a=function(h,m){return h*m},s=function(h,m){return h/m},i=n.vecAdd=function(){function d(){for(var h=arguments.length,m=new Array(h),E=0;E=c.length?{done:!0}:{done:!1,value:c[u++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function o(c,p){if(c){if(typeof c=="string")return a(c,p);var f={}.toString.call(c).slice(8,-1);return f==="Object"&&c.constructor&&(f=c.constructor.name),f==="Map"||f==="Set"?Array.from(c):f==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f)?a(c,p):void 0}}function a(c,p){(p==null||p>c.length)&&(p=c.length);for(var f=0,u=Array(p);f=l.length?{done:!0}:{done:!1,value:l[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.")}function o(l,g){if(l){if(typeof l=="string")return a(l,g);var f={}.toString.call(l).slice(8,-1);return f==="Object"&&l.constructor&&(f=l.constructor.name),f==="Map"||f==="Set"?Array.from(l):f==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(f)?a(l,g):void 0}}function a(l,g){(g==null||g>l.length)&&(g=l.length);for(var f=0,i=Array(g);f0&&f.node.currentTime>=f.options.end;u&&f.stop()}},1e3)}var p=c.prototype;return p.destroy=function(){function f(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))}return f}(),p.play=function(){function f(u,v){v===void 0&&(v={}),this.node&&(s.log("playing",u,v),this.options=v,this.node.src=u)}return f}(),p.stop=function(){function f(){if(this.node){if(this.playing)for(var u=r(this.onStopSubscribers),v;!(v=u()).done;){var l=v.value;l()}s.log("stopping"),this.playing=!1,this.node.src=""}}return f}(),p.setVolume=function(){function f(u){this.node&&(this.volume=u,this.node.volume=u)}return f}(),p.onPlay=function(){function f(u){this.node&&this.onPlaySubscribers.push(u)}return f}(),p.onStop=function(){function f(u){this.node&&this.onStopSubscribers.push(u)}return f}(),c}()},70949:function(y,n){"use strict";n.__esModule=!0,n.audioReducer=void 0;/**
+*/var s=(0,n.createLogger)("AudioPlayer"),u=e.AudioPlayer=function(){function l(){var f=this;this.node=document.createElement("audio"),this.node.style.setProperty("display","none"),document.body.appendChild(this.node),this.playing=!1,this.volume=1,this.options={},this.onPlaySubscribers=[],this.onStopSubscribers=[],this.node.addEventListener("canplaythrough",function(){s.log("canplaythrough"),f.playing=!0,f.node.playbackRate=f.options.pitch||1,f.node.currentTime=f.options.start||0,f.node.volume=f.volume,f.node.play();for(var i=r(f.onPlaySubscribers),d;!(d=i()).done;){var c=d.value;c()}}),this.node.addEventListener("ended",function(){s.log("ended"),f.stop()}),this.node.addEventListener("error",function(i){f.playing&&(s.log("playback error",i.error),f.stop())}),this.playbackInterval=setInterval(function(){if(f.playing){var i=f.options.end>0&&f.node.currentTime>=f.options.end;i&&f.stop()}},1e3)}var g=l.prototype;return g.destroy=function(){function f(){this.node&&(this.node.stop(),document.removeChild(this.node),clearInterval(this.playbackInterval))}return f}(),g.play=function(){function f(i,d){d===void 0&&(d={}),this.node&&(s.log("playing",i,d),this.options=d,this.node.src=i)}return f}(),g.stop=function(){function f(){if(this.node){if(this.playing)for(var i=r(this.onStopSubscribers),d;!(d=i()).done;){var c=d.value;c()}s.log("stopping"),this.playing=!1,this.node.src=""}}return f}(),g.setVolume=function(){function f(i){this.node&&(this.volume=i,this.node.volume=i)}return f}(),g.onPlay=function(){function f(i){this.node&&this.onPlaySubscribers.push(i)}return f}(),g.onStop=function(){function f(i){this.node&&this.onStopSubscribers.push(i)}return f}(),l}()},70949:function(y,e){"use strict";e.__esModule=!0,e.audioReducer=void 0;/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t={visible:!1,playing:!1,track:null},e=n.audioReducer=function(){function r(o,a){o===void 0&&(o=t);var s=a.type,i=a.payload;return s==="audio/playing"?Object.assign({},o,{visible:!0,playing:!0}):s==="audio/stopped"?Object.assign({},o,{visible:!1,playing:!1}):s==="audio/playMusic"?Object.assign({},o,{meta:i}):s==="audio/stopMusic"?Object.assign({},o,{visible:!1,playing:!1,meta:null}):s==="audio/toggle"?Object.assign({},o,{visible:!o.visible}):o}return r}()},32559:function(y,n){"use strict";n.__esModule=!0,n.selectAudio=void 0;/**
+ */var t={visible:!1,playing:!1,track:null},n=e.audioReducer=function(){function r(o,a){o===void 0&&(o=t);var s=a.type,u=a.payload;return s==="audio/playing"?Object.assign({},o,{visible:!0,playing:!0}):s==="audio/stopped"?Object.assign({},o,{visible:!1,playing:!1}):s==="audio/playMusic"?Object.assign({},o,{meta:u}):s==="audio/stopMusic"?Object.assign({},o,{visible:!1,playing:!1,meta:null}):s==="audio/toggle"?Object.assign({},o,{visible:!o.visible}):o}return r}()},32559:function(y,e){"use strict";e.__esModule=!0,e.selectAudio=void 0;/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t=n.selectAudio=function(){function e(r){return r.audio}return e}()},15039:function(y,n,t){"use strict";n.__esModule=!0,n.ChatPageSettings=void 0;var e=t(89005),r=t(85307),o=t(36036),a=t(37152),s=t(69126),i=t(23429);/**
+ */var t=e.selectAudio=function(){function n(r){return r.audio}return n}()},15039:function(y,e,t){"use strict";e.__esModule=!0,e.ChatPageSettings=void 0;var n=t(89005),r=t(85307),o=t(36036),a=t(37152),s=t(69126),u=t(23429);/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var c=n.ChatPageSettings=function(){function p(f,u){var v=(0,r.useSelector)(u,i.selectCurrentChatPage),l=(0,r.useDispatch)(u);return(0,e.createComponentVNode)(2,o.Section,{fill:!0,children:[(0,e.createComponentVNode)(2,o.Stack,{align:"center",children:[!v.isMain&&(0,e.createComponentVNode)(2,o.Stack.Item,{children:(0,e.createComponentVNode)(2,o.Button,{tooltip:"Reorder tab to the left",icon:"angle-left",onClick:function(){function g(){return l((0,a.moveChatPageLeft)({pageId:v.id}))}return g}()})}),(0,e.createComponentVNode)(2,o.Stack.Item,{grow:!0,ml:.5,children:(0,e.createComponentVNode)(2,o.Input,{width:"100%",value:v.name,onChange:function(){function g(d,h){return l((0,a.updateChatPage)({pageId:v.id,name:h}))}return g}()})}),!v.isMain&&(0,e.createComponentVNode)(2,o.Stack.Item,{ml:.5,children:(0,e.createComponentVNode)(2,o.Button,{tooltip:"Reorder tab to the right",icon:"angle-right",onClick:function(){function g(){return l((0,a.moveChatPageRight)({pageId:v.id}))}return g}()})}),(0,e.createComponentVNode)(2,o.Stack.Item,{children:(0,e.createComponentVNode)(2,o.Button.Checkbox,{content:"Mute",checked:v.hideUnreadCount,icon:v.hideUnreadCount?"bell-slash":"bell",tooltip:"Disables unread counter",onClick:function(){function g(){return l((0,a.updateChatPage)({pageId:v.id,hideUnreadCount:!v.hideUnreadCount}))}return g}()})}),(0,e.createComponentVNode)(2,o.Stack.Item,{children:(0,e.createComponentVNode)(2,o.Button,{content:"Remove",icon:"times",color:"red",disabled:v.isMain,onClick:function(){function g(){return l((0,a.removeChatPage)({pageId:v.id}))}return g}()})})]}),(0,e.createComponentVNode)(2,o.Divider),(0,e.createComponentVNode)(2,o.Section,{title:"Messages to display",level:2,children:[s.MESSAGE_TYPES.filter(function(g){return!g.important&&!g.admin}).map(function(g){return(0,e.createComponentVNode)(2,o.Button.Checkbox,{checked:v.acceptedTypes[g.type],onClick:function(){function d(){return l((0,a.toggleAcceptedType)({pageId:v.id,type:g.type}))}return d}(),children:g.name},g.type)}),(0,e.createComponentVNode)(2,o.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:s.MESSAGE_TYPES.filter(function(g){return!g.important&&g.admin}).map(function(g){return(0,e.createComponentVNode)(2,o.Button.Checkbox,{checked:v.acceptedTypes[g.type],onClick:function(){function d(){return l((0,a.toggleAcceptedType)({pageId:v.id,type:g.type}))}return d}(),children:g.name},g.type)})})]})]})}return p}()},44675:function(y,n,t){"use strict";n.__esModule=!0,n.ChatPanel=void 0;var e=t(89005),r=t(35840),o=t(36036),a=t(15916);function s(p,f){p.prototype=Object.create(f.prototype),p.prototype.constructor=p,i(p,f)}function i(p,f){return i=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(u,v){return u.__proto__=v,u},i(p,f)}/**
+ */var l=e.ChatPageSettings=function(){function g(f,i){var d=(0,r.useSelector)(i,u.selectCurrentChatPage),c=(0,r.useDispatch)(i);return(0,n.createComponentVNode)(2,o.Section,{fill:!0,children:[(0,n.createComponentVNode)(2,o.Stack,{align:"center",children:[!d.isMain&&(0,n.createComponentVNode)(2,o.Stack.Item,{children:(0,n.createComponentVNode)(2,o.Button,{tooltip:"Reorder tab to the left",icon:"angle-left",onClick:function(){function p(){return c((0,a.moveChatPageLeft)({pageId:d.id}))}return p}()})}),(0,n.createComponentVNode)(2,o.Stack.Item,{grow:!0,ml:.5,children:(0,n.createComponentVNode)(2,o.Input,{width:"100%",value:d.name,onChange:function(){function p(v,h){return c((0,a.updateChatPage)({pageId:d.id,name:h}))}return p}()})}),!d.isMain&&(0,n.createComponentVNode)(2,o.Stack.Item,{ml:.5,children:(0,n.createComponentVNode)(2,o.Button,{tooltip:"Reorder tab to the right",icon:"angle-right",onClick:function(){function p(){return c((0,a.moveChatPageRight)({pageId:d.id}))}return p}()})}),(0,n.createComponentVNode)(2,o.Stack.Item,{children:(0,n.createComponentVNode)(2,o.Button.Checkbox,{content:"Mute",checked:d.hideUnreadCount,icon:d.hideUnreadCount?"bell-slash":"bell",tooltip:"Disables unread counter",onClick:function(){function p(){return c((0,a.updateChatPage)({pageId:d.id,hideUnreadCount:!d.hideUnreadCount}))}return p}()})}),(0,n.createComponentVNode)(2,o.Stack.Item,{children:(0,n.createComponentVNode)(2,o.Button,{content:"Remove",icon:"times",color:"red",disabled:d.isMain,onClick:function(){function p(){return c((0,a.removeChatPage)({pageId:d.id}))}return p}()})})]}),(0,n.createComponentVNode)(2,o.Divider),(0,n.createComponentVNode)(2,o.Section,{title:"Messages to display",level:2,children:[s.MESSAGE_TYPES.filter(function(p){return!p.important&&!p.admin}).map(function(p){return(0,n.createComponentVNode)(2,o.Button.Checkbox,{checked:d.acceptedTypes[p.type],onClick:function(){function v(){return c((0,a.toggleAcceptedType)({pageId:d.id,type:p.type}))}return v}(),children:p.name},p.type)}),(0,n.createComponentVNode)(2,o.Collapsible,{mt:1,color:"transparent",title:"Admin stuff",children:s.MESSAGE_TYPES.filter(function(p){return!p.important&&p.admin}).map(function(p){return(0,n.createComponentVNode)(2,o.Button.Checkbox,{checked:d.acceptedTypes[p.type],onClick:function(){function v(){return c((0,a.toggleAcceptedType)({pageId:d.id,type:p.type}))}return v}(),children:p.name},p.type)})})]})]})}return g}()},44675:function(y,e,t){"use strict";e.__esModule=!0,e.ChatPanel=void 0;var n=t(89005),r=t(35840),o=t(36036),a=t(15916);function s(g,f){g.prototype=Object.create(f.prototype),g.prototype.constructor=g,u(g,f)}function u(g,f){return u=Object.setPrototypeOf?Object.setPrototypeOf.bind():function(i,d){return i.__proto__=d,i},u(g,f)}/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
-*/var c=n.ChatPanel=function(p){function f(){var v;return v=p.call(this)||this,v.ref=(0,e.createRef)(),v.state={scrollTracking:!0},v.handleScrollTrackingChange=function(l){return v.setState({scrollTracking:l})},v}s(f,p);var u=f.prototype;return u.componentDidMount=function(){function v(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()}return v}(),u.componentWillUnmount=function(){function v(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)}return v}(),u.componentDidUpdate=function(){function v(l){requestAnimationFrame(function(){a.chatRenderer.ensureScrollTracking()});var g=!l||(0,r.shallowDiffers)(this.props,l);g&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})}return v}(),u.render=function(){function v(){var l=this.state.scrollTracking;return(0,e.createFragment)([(0,e.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!l&&(0,e.createComponentVNode)(2,o.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){function g(){return a.chatRenderer.scrollToBottom()}return g}(),children:"Scroll to bottom"})],0)}return v}(),f}(e.Component)},41125:function(y,n,t){"use strict";n.__esModule=!0,n.ChatTabs=void 0;var e=t(89005),r=t(85307),o=t(36036),a=t(37152),s=t(23429),i=t(36471);/**
+*/var l=e.ChatPanel=function(g){function f(){var d;return d=g.call(this)||this,d.ref=(0,n.createRef)(),d.state={scrollTracking:!0},d.handleScrollTrackingChange=function(c){return d.setState({scrollTracking:c})},d}s(f,g);var i=f.prototype;return i.componentDidMount=function(){function d(){a.chatRenderer.mount(this.ref.current),a.chatRenderer.events.on("scrollTrackingChanged",this.handleScrollTrackingChange),this.componentDidUpdate()}return d}(),i.componentWillUnmount=function(){function d(){a.chatRenderer.events.off("scrollTrackingChanged",this.handleScrollTrackingChange)}return d}(),i.componentDidUpdate=function(){function d(c){requestAnimationFrame(function(){a.chatRenderer.ensureScrollTracking()});var p=!c||(0,r.shallowDiffers)(this.props,c);p&&a.chatRenderer.assignStyle({width:"100%","white-space":"pre-wrap","font-size":this.props.fontSize,"line-height":this.props.lineHeight})}return d}(),i.render=function(){function d(){var c=this.state.scrollTracking;return(0,n.createFragment)([(0,n.createVNode)(1,"div","Chat",null,1,null,null,this.ref),!c&&(0,n.createComponentVNode)(2,o.Button,{className:"Chat__scrollButton",icon:"arrow-down",onClick:function(){function p(){return a.chatRenderer.scrollToBottom()}return p}(),children:"Scroll to bottom"})],0)}return d}(),f}(n.Component)},41125:function(y,e,t){"use strict";e.__esModule=!0,e.ChatTabs=void 0;var n=t(89005),r=t(85307),o=t(36036),a=t(37152),s=t(23429),u=t(36471);/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var c=function(u){var v=u.value;return(0,e.createComponentVNode)(2,o.Box,{style:{"font-size":"0.7em","border-radius":"0.25em",width:"1.7em","line-height":"1.55em","background-color":"crimson",color:"#fff"},children:Math.min(v,99)})},p=n.ChatTabs=function(){function f(u,v){var l=(0,r.useSelector)(v,s.selectChatPages),g=(0,r.useSelector)(v,s.selectCurrentChatPage),d=(0,r.useDispatch)(v);return(0,e.createComponentVNode)(2,o.Flex,{align:"center",children:[(0,e.createComponentVNode)(2,o.Flex.Item,{children:(0,e.createComponentVNode)(2,o.Tabs,{textAlign:"center",children:l.map(function(h){return(0,e.createComponentVNode)(2,o.Tabs.Tab,{selected:h===g,rightSlot:!h.hideUnreadCount&&h.unreadCount>0&&(0,e.createComponentVNode)(2,c,{value:h.unreadCount}),onClick:function(){function m(){return d((0,a.changeChatPage)({pageId:h.id}))}return m}(),children:h.name},h.id)})})}),(0,e.createComponentVNode)(2,o.Flex.Item,{ml:1,children:(0,e.createComponentVNode)(2,o.Button,{color:"transparent",icon:"plus",onClick:function(){function h(){d((0,a.addChatPage)()),d((0,i.openChatSettings)())}return h}()})})]})}return f}()},37152:function(y,n,t){"use strict";n.__esModule=!0,n.updateMessageCount=n.updateChatPage=n.toggleAcceptedType=n.saveChatToDisk=n.removeChatPage=n.rebuildChat=n.moveChatPageRight=n.moveChatPageLeft=n.loadChat=n.clearChat=n.changeScrollTracking=n.changeChatPage=n.addChatPage=void 0;var e=t(85307),r=t(41950);/**
+ */var l=function(i){var d=i.value;return(0,n.createComponentVNode)(2,o.Box,{style:{"font-size":"0.7em","border-radius":"0.25em",width:"1.7em","line-height":"1.55em","background-color":"crimson",color:"#fff"},children:Math.min(d,99)})},g=e.ChatTabs=function(){function f(i,d){var c=(0,r.useSelector)(d,s.selectChatPages),p=(0,r.useSelector)(d,s.selectCurrentChatPage),v=(0,r.useDispatch)(d);return(0,n.createComponentVNode)(2,o.Flex,{align:"center",children:[(0,n.createComponentVNode)(2,o.Flex.Item,{children:(0,n.createComponentVNode)(2,o.Tabs,{textAlign:"center",children:c.map(function(h){return(0,n.createComponentVNode)(2,o.Tabs.Tab,{selected:h===p,rightSlot:!h.hideUnreadCount&&h.unreadCount>0&&(0,n.createComponentVNode)(2,l,{value:h.unreadCount}),onClick:function(){function m(){return v((0,a.changeChatPage)({pageId:h.id}))}return m}(),children:h.name},h.id)})})}),(0,n.createComponentVNode)(2,o.Flex.Item,{ml:1,children:(0,n.createComponentVNode)(2,o.Button,{color:"transparent",icon:"plus",onClick:function(){function h(){v((0,a.addChatPage)()),v((0,u.openChatSettings)())}return h}()})})]})}return f}()},37152:function(y,e,t){"use strict";e.__esModule=!0,e.updateMessageCount=e.updateChatPage=e.toggleAcceptedType=e.saveChatToDisk=e.removeChatPage=e.rebuildChat=e.moveChatPageRight=e.moveChatPageLeft=e.loadChat=e.clearChat=e.changeScrollTracking=e.changeChatPage=e.addChatPage=void 0;var n=t(85307),r=t(41950);/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var o=n.loadChat=(0,e.createAction)("chat/load"),a=n.rebuildChat=(0,e.createAction)("chat/rebuild"),s=n.clearChat=(0,e.createAction)("chat/clear"),i=n.updateMessageCount=(0,e.createAction)("chat/updateMessageCount"),c=n.addChatPage=(0,e.createAction)("chat/addPage",function(){return{payload:(0,r.createPage)()}}),p=n.changeChatPage=(0,e.createAction)("chat/changePage"),f=n.updateChatPage=(0,e.createAction)("chat/updatePage"),u=n.toggleAcceptedType=(0,e.createAction)("chat/toggleAcceptedType"),v=n.removeChatPage=(0,e.createAction)("chat/removePage"),l=n.changeScrollTracking=(0,e.createAction)("chat/changeScrollTracking"),g=n.saveChatToDisk=(0,e.createAction)("chat/saveToDisk"),d=n.moveChatPageLeft=(0,e.createAction)("chat/movePageLeft"),h=n.moveChatPageRight=(0,e.createAction)("chat/movePageRight")},69126:function(y,n){"use strict";n.__esModule=!0,n.MESSAGE_TYPE_WARNING=n.MESSAGE_TYPE_UNKNOWN=n.MESSAGE_TYPE_SYSTEM=n.MESSAGE_TYPE_RADIO=n.MESSAGE_TYPE_OOC=n.MESSAGE_TYPE_MENTORPM=n.MESSAGE_TYPE_MENTORCHAT=n.MESSAGE_TYPE_LOCALCHAT=n.MESSAGE_TYPE_INTERNAL=n.MESSAGE_TYPE_INFO=n.MESSAGE_TYPE_EVENTCHAT=n.MESSAGE_TYPE_DEVCHAT=n.MESSAGE_TYPE_DEBUG=n.MESSAGE_TYPE_DEADCHAT=n.MESSAGE_TYPE_COMBAT=n.MESSAGE_TYPE_ATTACKLOG=n.MESSAGE_TYPE_ADMINPM=n.MESSAGE_TYPE_ADMINLOG=n.MESSAGE_TYPE_ADMINCHAT=n.MESSAGE_TYPES=n.MESSAGE_SAVE_INTERVAL=n.MESSAGE_PRUNE_INTERVAL=n.MAX_VISIBLE_MESSAGES=n.MAX_PERSISTED_MESSAGES=n.IMAGE_RETRY_MESSAGE_AGE=n.IMAGE_RETRY_LIMIT=n.IMAGE_RETRY_DELAY=n.COMBINE_MAX_TIME_WINDOW=n.COMBINE_MAX_MESSAGES=void 0;/**
+ */var o=e.loadChat=(0,n.createAction)("chat/load"),a=e.rebuildChat=(0,n.createAction)("chat/rebuild"),s=e.clearChat=(0,n.createAction)("chat/clear"),u=e.updateMessageCount=(0,n.createAction)("chat/updateMessageCount"),l=e.addChatPage=(0,n.createAction)("chat/addPage",function(){return{payload:(0,r.createPage)()}}),g=e.changeChatPage=(0,n.createAction)("chat/changePage"),f=e.updateChatPage=(0,n.createAction)("chat/updatePage"),i=e.toggleAcceptedType=(0,n.createAction)("chat/toggleAcceptedType"),d=e.removeChatPage=(0,n.createAction)("chat/removePage"),c=e.changeScrollTracking=(0,n.createAction)("chat/changeScrollTracking"),p=e.saveChatToDisk=(0,n.createAction)("chat/saveToDisk"),v=e.moveChatPageLeft=(0,n.createAction)("chat/movePageLeft"),h=e.moveChatPageRight=(0,n.createAction)("chat/movePageRight")},69126:function(y,e){"use strict";e.__esModule=!0,e.MESSAGE_TYPE_WARNING=e.MESSAGE_TYPE_UNKNOWN=e.MESSAGE_TYPE_SYSTEM=e.MESSAGE_TYPE_RADIO=e.MESSAGE_TYPE_OOC=e.MESSAGE_TYPE_MENTORPM=e.MESSAGE_TYPE_MENTORCHAT=e.MESSAGE_TYPE_LOCALCHAT=e.MESSAGE_TYPE_INTERNAL=e.MESSAGE_TYPE_INFO=e.MESSAGE_TYPE_EVENTCHAT=e.MESSAGE_TYPE_DEVCHAT=e.MESSAGE_TYPE_DEBUG=e.MESSAGE_TYPE_DEADCHAT=e.MESSAGE_TYPE_COMBAT=e.MESSAGE_TYPE_ATTACKLOG=e.MESSAGE_TYPE_ADMINPM=e.MESSAGE_TYPE_ADMINLOG=e.MESSAGE_TYPE_ADMINCHAT=e.MESSAGE_TYPES=e.MESSAGE_SAVE_INTERVAL=e.MESSAGE_PRUNE_INTERVAL=e.MAX_VISIBLE_MESSAGES=e.MAX_PERSISTED_MESSAGES=e.IMAGE_RETRY_MESSAGE_AGE=e.IMAGE_RETRY_LIMIT=e.IMAGE_RETRY_DELAY=e.COMBINE_MAX_TIME_WINDOW=e.COMBINE_MAX_MESSAGES=void 0;/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
- */var t=n.MAX_VISIBLE_MESSAGES=2500,e=n.MAX_PERSISTED_MESSAGES=1e3,r=n.MESSAGE_SAVE_INTERVAL=1e4,o=n.MESSAGE_PRUNE_INTERVAL=6e4,a=n.COMBINE_MAX_TIME_WINDOW=5e3,s=n.COMBINE_MAX_MESSAGES=5,i=n.IMAGE_RETRY_DELAY=250,c=n.IMAGE_RETRY_LIMIT=10,p=n.IMAGE_RETRY_MESSAGE_AGE=6e4,f=n.MESSAGE_TYPE_UNKNOWN="unknown",u=n.MESSAGE_TYPE_INTERNAL="internal",v=n.MESSAGE_TYPE_SYSTEM="system",l=n.MESSAGE_TYPE_LOCALCHAT="localchat",g=n.MESSAGE_TYPE_RADIO="radio",d=n.MESSAGE_TYPE_INFO="info",h=n.MESSAGE_TYPE_WARNING="warning",m=n.MESSAGE_TYPE_DEADCHAT="deadchat",E=n.MESSAGE_TYPE_OOC="ooc",I=n.MESSAGE_TYPE_ADMINPM="adminpm",O=n.MESSAGE_TYPE_MENTORPM="mentorpm",C=n.MESSAGE_TYPE_COMBAT="combat",S=n.MESSAGE_TYPE_ADMINCHAT="adminchat",b=n.MESSAGE_TYPE_MENTORCHAT="mentorchat",T=n.MESSAGE_TYPE_DEVCHAT="devchat",P=n.MESSAGE_TYPE_EVENTCHAT="eventchat",N=n.MESSAGE_TYPE_ADMINLOG="adminlog",M=n.MESSAGE_TYPE_ATTACKLOG="attacklog",w=n.MESSAGE_TYPE_DEBUG="debug",D=n.MESSAGE_TYPES=[{type:v,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounceooc",important:!0},{type:l,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote"},{type:g,name:"Radio",description:"All departments of radio messages",selector:".alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .proradio"},{type:d,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult"},{type:h,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .boldannounceic, .boldwarning"},{type:m,name:"Deadchat",description:"All of deadchat",selector:".deadsay"},{type:E,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .interface"},{type:I,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".adminpm, .adminhelp, .adminticket, .adminticketalt"},{type:O,name:"Mentor PMs",description:"Messages to/from mentors (mentorhelp)",selector:".mentorpm, .mentorhelp"},{type:C,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:f,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:S,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:b,name:"Mentor Chat",description:"MSAY messages",selector:".mentor_channel",admin:!0},{type:T,name:"Developer Chat",description:"DEVSAY messages",selector:".dev_channel",admin:!0},{type:N,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:M,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:w,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",selector:".pr_announce, .debug",admin:!0}]},96835:function(y,n,t){"use strict";n.__esModule=!0,n.chatReducer=n.chatMiddleware=n.ChatTabs=n.ChatPanel=n.ChatPageSettings=void 0;var e=t(15039);n.ChatPageSettings=e.ChatPageSettings;var r=t(44675);n.ChatPanel=r.ChatPanel;var o=t(41125);n.ChatTabs=o.ChatTabs;var a=t(84807);n.chatMiddleware=a.chatMiddleware;var s=t(40147);n.chatReducer=s.chatReducer},84807:function(y,n,t){"use strict";n.__esModule=!0,n.chatMiddleware=void 0;var e=u(t(22734)),r=t(27108),o=t(36471),a=t(77034),s=t(37152),i=t(69126),c=t(41950),p=t(15916),f=t(23429);function u(S){return S&&S.__esModule?S:{default:S}}function v(S,b){var T=typeof Symbol!="undefined"&&S[Symbol.iterator]||S["@@iterator"];if(T)return(T=T.call(S)).next.bind(T);if(Array.isArray(S)||(T=l(S))||b&&S&&typeof S.length=="number"){T&&(S=T);var P=0;return function(){return P>=S.length?{done:!0}:{done:!1,value:S[P++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(S,b){if(S){if(typeof S=="string")return g(S,b);var T={}.toString.call(S).slice(8,-1);return T==="Object"&&S.constructor&&(T=S.constructor.name),T==="Map"||T==="Set"?Array.from(S):T==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(T)?g(S,b):void 0}}function g(S,b){(b==null||b>S.length)&&(b=S.length);for(var T=0,P=Array(b);T=0;--Et){var ut=this.tryEntries[Et],yt=ut.completion;if(ut.tryLoc==="root")return ht("end");if(ut.tryLoc<=this.prev){var Pt=P.call(ut,"catchLoc"),bt=P.call(ut,"finallyLoc");if(Pt&&bt){if(this.prev=0;--ht){var Et=this.tryEntries[ht];if(Et.tryLoc<=this.prev&&P.call(Et,"finallyLoc")&&this.prev=0;--nt){var ht=this.tryEntries[nt];if(ht.finallyLoc===q)return this.complete(ht.completion,ht.afterLoc),mt(ht),z}}return k}(),catch:function(){function k(q){for(var nt=this.tryEntries.length-1;nt>=0;--nt){var ht=this.tryEntries[nt];if(ht.tryLoc===q){var Et=ht.completion;if(Et.type==="throw"){var ut=Et.arg;mt(ht)}return ut}}throw Error("illegal catch attempt")}return k}(),delegateYield:function(){function k(q,nt,ht){return this.delegate={iterator:tt(q),resultName:nt,nextLoc:ht},this.method==="next"&&(this.arg=S),z}return k}()},b}function h(S,b,T,P,N,M,w){try{var D=S[M](w),V=D.value}catch(F){return void T(F)}D.done?b(V):Promise.resolve(V).then(P,N)}function m(S){return function(){var b=this,T=arguments;return new Promise(function(P,N){var M=S.apply(b,T);function w(V){h(M,P,N,w,D,"next",V)}function D(V){h(M,P,N,w,D,"throw",V)}w(void 0)})}}/**
+ */var t=e.MAX_VISIBLE_MESSAGES=2500,n=e.MAX_PERSISTED_MESSAGES=1e3,r=e.MESSAGE_SAVE_INTERVAL=1e4,o=e.MESSAGE_PRUNE_INTERVAL=6e4,a=e.COMBINE_MAX_TIME_WINDOW=5e3,s=e.COMBINE_MAX_MESSAGES=5,u=e.IMAGE_RETRY_DELAY=250,l=e.IMAGE_RETRY_LIMIT=10,g=e.IMAGE_RETRY_MESSAGE_AGE=6e4,f=e.MESSAGE_TYPE_UNKNOWN="unknown",i=e.MESSAGE_TYPE_INTERNAL="internal",d=e.MESSAGE_TYPE_SYSTEM="system",c=e.MESSAGE_TYPE_LOCALCHAT="localchat",p=e.MESSAGE_TYPE_RADIO="radio",v=e.MESSAGE_TYPE_INFO="info",h=e.MESSAGE_TYPE_WARNING="warning",m=e.MESSAGE_TYPE_DEADCHAT="deadchat",E=e.MESSAGE_TYPE_OOC="ooc",I=e.MESSAGE_TYPE_ADMINPM="adminpm",O=e.MESSAGE_TYPE_MENTORPM="mentorpm",b=e.MESSAGE_TYPE_COMBAT="combat",S=e.MESSAGE_TYPE_ADMINCHAT="adminchat",C=e.MESSAGE_TYPE_MENTORCHAT="mentorchat",T=e.MESSAGE_TYPE_DEVCHAT="devchat",P=e.MESSAGE_TYPE_EVENTCHAT="eventchat",N=e.MESSAGE_TYPE_ADMINLOG="adminlog",M=e.MESSAGE_TYPE_ATTACKLOG="attacklog",w=e.MESSAGE_TYPE_DEBUG="debug",V=e.MESSAGE_TYPES=[{type:d,name:"System Messages",description:"Messages from your client, always enabled",selector:".boldannounceooc",important:!0},{type:c,name:"Local",description:"In-character local messages (say, emote, etc)",selector:".say, .emote"},{type:p,name:"Radio",description:"All departments of radio messages",selector:".alert, .syndradio, .centradio, .airadio, .entradio, .comradio, .secradio, .engradio, .medradio, .sciradio, .supradio, .srvradio, .expradio, .radio, .deptradio, .newscaster, .proradio"},{type:v,name:"Info",description:"Non-urgent messages from the game and items",selector:".notice:not(.pm), .adminnotice, .info, .sinister, .cult"},{type:h,name:"Warnings",description:"Urgent messages from the game and items",selector:".warning:not(.pm), .critical, .userdanger, .italics, .boldannounceic, .boldwarning"},{type:m,name:"Deadchat",description:"All of deadchat",selector:".deadsay"},{type:E,name:"OOC",description:"The bluewall of global OOC messages",selector:".ooc, .adminooc, .interface"},{type:I,name:"Admin PMs",description:"Messages to/from admins (adminhelp)",selector:".adminpm, .adminhelp, .adminticket, .adminticketalt"},{type:O,name:"Mentor PMs",description:"Messages to/from mentors (mentorhelp)",selector:".mentorpm, .mentorhelp"},{type:b,name:"Combat Log",description:"Urist McTraitor has stabbed you with a knife!",selector:".danger"},{type:f,name:"Unsorted",description:"Everything we could not sort, always enabled"},{type:S,name:"Admin Chat",description:"ASAY messages",selector:".admin_channel, .adminsay",admin:!0},{type:C,name:"Mentor Chat",description:"MSAY messages",selector:".mentor_channel",admin:!0},{type:T,name:"Developer Chat",description:"DEVSAY messages",selector:".dev_channel",admin:!0},{type:N,name:"Admin Log",description:"ADMIN LOG: Urist McAdmin has jumped to coordinates X, Y, Z",selector:".log_message",admin:!0},{type:M,name:"Attack Log",description:"Urist McTraitor has shot John Doe",admin:!0},{type:w,name:"Debug Log",description:"DEBUG: SSPlanets subsystem Recover().",selector:".pr_announce, .debug",admin:!0}]},96835:function(y,e,t){"use strict";e.__esModule=!0,e.chatReducer=e.chatMiddleware=e.ChatTabs=e.ChatPanel=e.ChatPageSettings=void 0;var n=t(15039);e.ChatPageSettings=n.ChatPageSettings;var r=t(44675);e.ChatPanel=r.ChatPanel;var o=t(41125);e.ChatTabs=o.ChatTabs;var a=t(84807);e.chatMiddleware=a.chatMiddleware;var s=t(40147);e.chatReducer=s.chatReducer},84807:function(y,e,t){"use strict";e.__esModule=!0,e.chatMiddleware=void 0;var n=i(t(22734)),r=t(27108),o=t(36471),a=t(77034),s=t(37152),u=t(69126),l=t(41950),g=t(15916),f=t(23429);function i(S){return S&&S.__esModule?S:{default:S}}function d(S,C){var T=typeof Symbol!="undefined"&&S[Symbol.iterator]||S["@@iterator"];if(T)return(T=T.call(S)).next.bind(T);if(Array.isArray(S)||(T=c(S))||C&&S&&typeof S.length=="number"){T&&(S=T);var P=0;return function(){return P>=S.length?{done:!0}:{done:!1,value:S[P++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(S,C){if(S){if(typeof S=="string")return p(S,C);var T={}.toString.call(S).slice(8,-1);return T==="Object"&&S.constructor&&(T=S.constructor.name),T==="Map"||T==="Set"?Array.from(S):T==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(T)?p(S,C):void 0}}function p(S,C){(C==null||C>S.length)&&(C=S.length);for(var T=0,P=Array(C);T=0;--Et){var st=this.tryEntries[Et],yt=st.completion;if(st.tryLoc==="root")return ht("end");if(st.tryLoc<=this.prev){var Pt=P.call(st,"catchLoc"),Ct=P.call(st,"finallyLoc");if(Pt&&Ct){if(this.prev=0;--ht){var Et=this.tryEntries[ht];if(Et.tryLoc<=this.prev&&P.call(Et,"finallyLoc")&&this.prev=0;--nt){var ht=this.tryEntries[nt];if(ht.finallyLoc===q)return this.complete(ht.completion,ht.afterLoc),mt(ht),K}}return k}(),catch:function(){function k(q){for(var nt=this.tryEntries.length-1;nt>=0;--nt){var ht=this.tryEntries[nt];if(ht.tryLoc===q){var Et=ht.completion;if(Et.type==="throw"){var st=Et.arg;mt(ht)}return st}}throw Error("illegal catch attempt")}return k}(),delegateYield:function(){function k(q,nt,ht){return this.delegate={iterator:et(q),resultName:nt,nextLoc:ht},this.method==="next"&&(this.arg=S),K}return k}()},C}function h(S,C,T,P,N,M,w){try{var V=S[M](w),H=V.value}catch(j){return void T(j)}V.done?C(H):Promise.resolve(H).then(P,N)}function m(S){return function(){var C=this,T=arguments;return new Promise(function(P,N){var M=S.apply(C,T);function w(H){h(M,P,N,w,V,"next",H)}function V(H){h(M,P,N,w,V,"throw",H)}w(void 0)})}}/**
* @file
* @copyright 2020 Aleksej Komarov
* @license MIT
-*/var E=["a","iframe","link","video"],I=function(){var S=m(d().mark(function(){function b(T){var P,N,M;return d().wrap(function(){function w(D){for(;;)switch(D.prev=D.next){case 0:P=(0,f.selectChat)(T.getState()),N=Math.max(0,p.chatRenderer.messages.length-i.MAX_PERSISTED_MESSAGES),M=p.chatRenderer.messages.slice(N).map(function(V){return(0,c.serializeMessage)(V)}),r.storage.set("chat-state",P),r.storage.set("chat-messages",M);case 5:case"end":return D.stop()}}return w}(),b)}return b}()));return function(){function b(T){return S.apply(this,arguments)}return b}()}(),O=function(){var S=m(d().mark(function(){function b(T){var P,N,M,w,D,V,F;return d().wrap(function(){function $(Y){for(;;)switch(Y.prev=Y.next){case 0:return Y.next=2,Promise.all([r.storage.get("chat-state"),r.storage.get("chat-messages")]);case 2:if(P=Y.sent,N=P[0],M=P[1],!(N&&N.version<=4)){Y.next=8;break}return T.dispatch((0,s.loadChat)()),Y.abrupt("return");case 8:if(M){for(w=v(M);!(D=w()).done;)V=D.value,V.html&&(V.html=e.default.sanitize(V.html,{FORBID_TAGS:E}));F=[].concat(M,[(0,c.createMessage)({type:"internal/reconnected"})]),p.chatRenderer.processBatch(F,{prepend:!0})}T.dispatch((0,s.loadChat)(N));case 10:case"end":return Y.stop()}}return $}(),b)}return b}()));return function(){function b(T){return S.apply(this,arguments)}return b}()}(),C=n.chatMiddleware=function(){function S(b){var T=!1,P=!1,N=[],M=[];return p.chatRenderer.events.on("batchProcessed",function(w){P&&b.dispatch((0,s.updateMessageCount)(w))}),p.chatRenderer.events.on("scrollTrackingChanged",function(w){b.dispatch((0,s.changeScrollTracking)(w))}),setInterval(function(){return I(b)},i.MESSAGE_SAVE_INTERVAL),function(w){return function(D){var V=D.type,F=D.payload;if(T||(T=!0,O(b)),V==="chat/message"){var $;try{$=JSON.parse(F)}catch(et){return}var Y=$.sequence;if(N.includes(Y))return;var j=N.length;t:if(j>0){if(M.includes(Y)){M.splice(M.indexOf(Y),1);break t}var x=N[j-1]+1;if(Y!==x)for(var U=x;U=l.length?{done:!0}:{done:!1,value:l[h++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(l,g){if(l){if(typeof l=="string")return s(l,g);var d={}.toString.call(l).slice(8,-1);return d==="Object"&&l.constructor&&(d=l.constructor.name),d==="Map"||d==="Set"?Array.from(l):d==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d)?s(l,g):void 0}}function s(l,g){(g==null||g>l.length)&&(g=l.length);for(var d=0,h=Array(g);d0){if(M.includes($)){M.splice(M.indexOf($),1);break t}var B=N[x-1]+1;if($!==B)for(var F=B;F<$;F++)M.push(F),Byond.sendMessage("chat/resend",F)}g.chatRenderer.processBatch([G.content]);return}if(H===s.loadChat.type){w(V);var U=(0,f.selectCurrentChatPage)(C.getState());g.chatRenderer.changePage(U),g.chatRenderer.onStateLoaded(),P=!0;return}if(H===s.changeChatPage.type||H===s.addChatPage.type||H===s.removeChatPage.type||H===s.toggleAcceptedType.type||H===s.moveChatPageLeft.type||H===s.moveChatPageRight.type){w(V);var K=(0,f.selectCurrentChatPage)(C.getState());g.chatRenderer.changePage(K);return}if(H===s.rebuildChat.type)return g.chatRenderer.rebuildChat(),w(V);if(H===o.updateSettings.type||H===o.loadSettings.type||H===o.addHighlightSetting.type||H===o.removeHighlightSetting.type||H===o.updateHighlightSetting.type){w(V);var W=(0,a.selectSettings)(C.getState());g.chatRenderer.setHighlight(W.highlightSettings,W.highlightSettingById);return}if(H==="roundrestart")return I(C),w(V);if(H===s.saveChatToDisk.type){g.chatRenderer.saveToDisk();return}if(H===s.clearChat.type){g.chatRenderer.clearChat();return}return w(V)}}}return S}()},41950:function(y,e,t){"use strict";e.__esModule=!0,e.serializeMessage=e.isSameMessage=e.createPage=e.createMessage=e.createMainPage=e.canPageAcceptType=void 0;var n=t(90286),r=t(69126);function o(c,p){var v=typeof Symbol!="undefined"&&c[Symbol.iterator]||c["@@iterator"];if(v)return(v=v.call(c)).next.bind(v);if(Array.isArray(c)||(v=a(c))||p&&c&&typeof c.length=="number"){v&&(c=v);var h=0;return function(){return h>=c.length?{done:!0}:{done:!1,value:c[h++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function a(c,p){if(c){if(typeof c=="string")return s(c,p);var v={}.toString.call(c).slice(8,-1);return v==="Object"&&c.constructor&&(v=c.constructor.name),v==="Map"||v==="Set"?Array.from(c):v==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(v)?s(c,p):void 0}}function s(c,p){(p==null||p>c.length)&&(p=c.length);for(var v=0,h=Array(p);v=l.length?{done:!0}:{done:!1,value:l[h++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function c(l,g){if(l){if(typeof l=="string")return p(l,g);var d={}.toString.call(l).slice(8,-1);return d==="Object"&&l.constructor&&(d=l.constructor.name),d==="Map"||d==="Set"?Array.from(l):d==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(d)?p(l,g):void 0}}function p(l,g){(g==null||g>l.length)&&(g=l.length);for(var d=0,h=Array(g);d0&&(W[ct.id]=Object.assign({},ct,{unreadCount:ct.unreadCount+J}))}return Object.assign({},g,{pageById:W})}if(h===e.addChatPage.type){var pt;return Object.assign({},g,{currentPageId:m.id,pages:[].concat(g.pages,[m.id]),pageById:Object.assign({},g.pageById,(pt={},pt[m.id]=m,pt))})}if(h===e.changeChatPage.type){var _,rt=m.pageId,it=Object.assign({},g.pageById[rt],{unreadCount:0});return Object.assign({},g,{currentPageId:rt,pageById:Object.assign({},g.pageById,(_={},_[rt]=it,_))})}if(h===e.updateChatPage.type){var mt,ot=m.pageId,tt=s(m,o),k=Object.assign({},g.pageById[ot],tt);return Object.assign({},g,{pageById:Object.assign({},g.pageById,(mt={},mt[ot]=k,mt))})}if(h===e.toggleAcceptedType.type){var q,nt=m.pageId,ht=m.type,Et=Object.assign({},g.pageById[nt]);return Et.acceptedTypes=Object.assign({},Et.acceptedTypes),Et.acceptedTypes[ht]=!Et.acceptedTypes[ht],Object.assign({},g,{pageById:Object.assign({},g.pageById,(q={},q[nt]=Et,q))})}if(h===e.removeChatPage.type){var ut=m.pageId,yt=Object.assign({},g,{pages:[].concat(g.pages),pageById:Object.assign({},g.pageById)});return delete yt.pageById[ut],yt.pages=yt.pages.filter(function(Nt){return Nt!==ut}),yt.pages.length===0&&(yt.pages.push(f.id),yt.pageById[f.id]=f,yt.currentPageId=f.id),(!yt.currentPageId||yt.currentPageId===ut)&&(yt.currentPageId=yt.pages[0]),yt}if(h===e.moveChatPageLeft.type){var Pt=m.pageId,bt=Object.assign({},g,{pages:[].concat(g.pages),pageById:Object.assign({},g.pageById)}),st=bt.pageById[Pt],gt=bt.pages.indexOf(st.id),It=gt-1;if(gt>0&&It>0){var Lt=bt.pages[gt];bt.pages[gt]=bt.pages[It],bt.pages[It]=Lt}return bt}if(h===e.moveChatPageRight.type){var Vt=m.pageId,Ot=Object.assign({},g,{pages:[].concat(g.pages),pageById:Object.assign({},g.pageById)}),ft=Ot.pageById[Vt],St=Ot.pages.indexOf(ft.id),At=St+1;if(St>0&&At=T.length?{done:!0}:{done:!1,value:T[M++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function u(T,P){if(T){if(typeof T=="string")return v(T,P);var N={}.toString.call(T).slice(8,-1);return N==="Object"&&T.constructor&&(N=T.constructor.name),N==="Map"||N==="Set"?Array.from(T):N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N)?v(T,P):void 0}}function v(T,P){(P==null||P>T.length)&&(P=T.length);for(var N=0,M=Array(P);N=c.length?{done:!0}:{done:!1,value:c[h++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function l(c,p){if(c){if(typeof c=="string")return g(c,p);var v={}.toString.call(c).slice(8,-1);return v==="Object"&&c.constructor&&(v=c.constructor.name),v==="Map"||v==="Set"?Array.from(c):v==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(v)?g(c,p):void 0}}function g(c,p){(p==null||p>c.length)&&(p=c.length);for(var v=0,h=Array(p);v
0&&(W[ct.id]=Object.assign({},ct,{unreadCount:ct.unreadCount+Z}))}return Object.assign({},p,{pageById:W})}if(h===n.addChatPage.type){var gt;return Object.assign({},p,{currentPageId:m.id,pages:[].concat(p.pages,[m.id]),pageById:Object.assign({},p.pageById,(gt={},gt[m.id]=m,gt))})}if(h===n.changeChatPage.type){var _,rt=m.pageId,it=Object.assign({},p.pageById[rt],{unreadCount:0});return Object.assign({},p,{currentPageId:rt,pageById:Object.assign({},p.pageById,(_={},_[rt]=it,_))})}if(h===n.updateChatPage.type){var mt,ot=m.pageId,et=s(m,o),k=Object.assign({},p.pageById[ot],et);return Object.assign({},p,{pageById:Object.assign({},p.pageById,(mt={},mt[ot]=k,mt))})}if(h===n.toggleAcceptedType.type){var q,nt=m.pageId,ht=m.type,Et=Object.assign({},p.pageById[nt]);return Et.acceptedTypes=Object.assign({},Et.acceptedTypes),Et.acceptedTypes[ht]=!Et.acceptedTypes[ht],Object.assign({},p,{pageById:Object.assign({},p.pageById,(q={},q[nt]=Et,q))})}if(h===n.removeChatPage.type){var st=m.pageId,yt=Object.assign({},p,{pages:[].concat(p.pages),pageById:Object.assign({},p.pageById)});return delete yt.pageById[st],yt.pages=yt.pages.filter(function(Nt){return Nt!==st}),yt.pages.length===0&&(yt.pages.push(f.id),yt.pageById[f.id]=f,yt.currentPageId=f.id),(!yt.currentPageId||yt.currentPageId===st)&&(yt.currentPageId=yt.pages[0]),yt}if(h===n.moveChatPageLeft.type){var Pt=m.pageId,Ct=Object.assign({},p,{pages:[].concat(p.pages),pageById:Object.assign({},p.pageById)}),lt=Ct.pageById[Pt],pt=Ct.pages.indexOf(lt.id),It=pt-1;if(pt>0&&It>0){var Lt=Ct.pages[pt];Ct.pages[pt]=Ct.pages[It],Ct.pages[It]=Lt}return Ct}if(h===n.moveChatPageRight.type){var Vt=m.pageId,Ot=Object.assign({},p,{pages:[].concat(p.pages),pageById:Object.assign({},p.pageById)}),ft=Ot.pageById[Vt],St=Ot.pages.indexOf(ft.id),At=St+1;if(St>0&&At=T.length?{done:!0}:{done:!1,value:T[M++]}}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}function i(T,P){if(T){if(typeof T=="string")return d(T,P);var N={}.toString.call(T).slice(8,-1);return N==="Object"&&T.constructor&&(N=T.constructor.name),N==="Map"||N==="Set"?Array.from(T):N==="Arguments"||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(N)?d(T,P):void 0}}function d(T,P){(P==null||P>T.length)&&(P=T.length);for(var N=0,M=Array(P);N=s.IMAGE_RETRY_LIMIT){l.error("failed to load an image after "+M+" attempts");return}var w=N.src;N.src=null,N.src=w+"#"+M,N.setAttribute("data-reload-n",M+1)},s.IMAGE_RETRY_DELAY)},C=function(P){var N=P.node,M=P.times;if(!(!N||!M)){var w=N.querySelector(".Chat__badge"),D=w||document.createElement("div");D.textContent=M,D.className="Chat__badge",w||N.appendChild(D)}},S=function(){function T(){var N=this;this.loaded=!1,this.rootNode=null,this.queue=[],this.messages=[],this.visibleMessages=[],this.page=null,this.events=new r.EventEmitter,this.scrollNode=null,this.scrollTracking=!0,this.handleScroll=function(M){var w=N.scrollNode,D=w.scrollHeight,V=w.scrollTop+w.offsetHeight,F=Math.abs(D-V)0&&(this.processBatch(this.queue),this.queue=[])}return N}(),P.assignStyle=function(){function N(M){M===void 0&&(M={});for(var w=0,D=Object.keys(M);w{}[\]:;'"|~`_\-\\/]/g,W=String($).split(/[,|]/).map(function(it){return it.trim()}).filter(function(it){return it&&it.length>1&&K.test(it)&&((K.lastIndex=0)||!0)}),et,lt;if(W.length!==0){for(var ct=[],J=f(W),X;!(X=J()).done;){var at=X.value;if(at.charAt(0)==="/"&&at.charAt(at.length-1)==="/"){var dt=at.substring(1,at.length-1);if(/^(\[.*\]|\\.|.)$/.test(dt))continue;ct.push(dt)}else et||(et=[]),at=at.replace(z,"\\$&"),et.push(at)}var pt=ct.join("|"),_="g"+(U?"":"i");try{if(pt)lt=new RegExp("("+pt+")",_);else{var rt=(x?"\\b":"")+"("+et.join("|")+")"+(x?"\\b":"");lt=new RegExp(rt,_)}}catch(it){lt=null}D.highlightParsers||(D.highlightParsers=[]),D.highlightParsers.push({highlightWords:et,highlightRegex:lt,highlightColor:Y,highlightWholeMessage:j})}})}return N}(),P.scrollToBottom=function(){function N(){this.scrollNode.scrollTop=this.scrollNode.scrollHeight}return N}(),P.changePage=function(){function N(M){if(!this.isReady()){this.page=M,this.tryFlushQueue();return}this.page=M,this.rootNode.textContent="",this.visibleMessages=[];for(var w=document.createDocumentFragment(),D,V=f(this.messages),F;!(F=V()).done;){var $=F.value;(0,i.canPageAcceptType)(M,$.type)&&(D=$.node,w.appendChild(D),this.visibleMessages.push($))}D&&(this.rootNode.appendChild(w),D.scrollIntoView())}return N}(),P.getCombinableMessage=function(){function N(M,w,D,V){for(var F=D;F>=V;F--){var $=this.visibleMessages[F],Y=!$.type.startsWith(s.MESSAGE_TYPE_INTERNAL)&&(0,i.isSameMessage)($,M)&&w<$.createdAt+s.COMBINE_MAX_TIME_WINDOW;if(Y)return $}return null}return N}(),P.processBatch=function(){function N(M,w){var D=this;w===void 0&&(w={});var V=w,F=V.prepend,$=V.notifyListeners,Y=$===void 0?!0:$,j=Date.now();if(!this.isReady()){F?this.queue=[].concat(M,this.queue):this.queue=[].concat(this.queue,M);return}for(var x=document.createDocumentFragment(),U={},K,z=this.visibleMessages.length,W=z-1,et=Math.max(0,z-s.COMBINE_MAX_MESSAGES),lt=f(M),ct;!(ct=lt()).done;){var J=ct.value,X=(0,i.createMessage)(J),at=this.getCombinableMessage(X,j,W,et);if(at){at.times=(at.times||1)+1,C(at);continue}if(X.node)K=X.node;else if(X.type==="internal/reconnected")K=I();else{K=E(),X.text?K.textContent=X.text:X.html?(K.innerHTML=X.html,K.innerHTML=e.default.sanitize(K.innerHTML,{FORBID_TAGS:d,ALLOW_UNKNOWN_PROTOCOLS:!0})):l.error("Error: message is missing text payload",X),!X.avoidHighlighting&&this.highlightParsers&&this.highlightParsers.map(function(tt){var k=(0,c.highlightNode)(K,tt.highlightRegex,tt.highlightWords,function(q){return m(q,tt.highlightColor)});k&&tt.highlightWholeMessage&&(K.className+=" ChatMessage--highlighted")});for(var dt=K.querySelectorAll(".linkify"),pt=0;pt0){this.visibleMessages=M.slice(w);for(var D=0;D0&&(this.messages=this.messages.slice(F),l.log("pruned "+F+" stored messages"))}}}return N}(),P.rebuildChat=function(){function N(){if(this.isReady()){for(var M=Math.max(0,this.messages.length-s.MAX_VISIBLE_MESSAGES),w=this.messages.slice(M),D=f(w),V;!(V=D()).done;){var F=V.value;F.node=void 0}this.rootNode.textContent="",this.messages=[],this.visibleMessages=[],this.processBatch(w,{notifyListeners:!1})}}return N}(),P.clearChat=function(){function N(){var M=this.visibleMessages;this.visibleMessages=[];for(var w=0;w\n\n\n\n'+Y+"
\n\n