From 2e768802811e813d0da5e49b28cfff9d2baeccd4 Mon Sep 17 00:00:00 2001 From: david-fong Date: Thu, 4 Mar 2021 18:56:13 -0800 Subject: [PATCH] 4475e66 switch from socket.io to ws --- .gitattributes | 192 ++++++++++++++++++++ LICENSE.md | 131 +++++++++++++ client/.gitattributes | 192 ++++++++++++++++++++ client/.nojekyll | 1 - client/LICENSE.md | 10 + client/chunk/133.js | 2 - client/chunk/133.js.br | Bin 6771 -> 0 bytes client/chunk/133.js.map | 1 - client/chunk/307.js | 3 - client/chunk/307.js.LICENSE.txt | 5 - client/chunk/307.js.br | Bin 12969 -> 0 bytes client/chunk/307.js.map | 1 - client/chunk/5.js | 2 + client/chunk/5.js.br | Bin 0 -> 4338 bytes client/chunk/5.js.map | 1 + client/chunk/colour-schemes.css | 2 + client/chunk/colour-schemes.css.map | 1 + client/chunk/colour-schemes.js | 1 + client/chunk/game-css.css | 2 - client/chunk/game-css.css.map | 1 - client/chunk/game-css.js | 2 - client/chunk/game-css.js.map | 1 - client/chunk/game/offline.css | 2 + client/chunk/game/offline.css.map | 1 + client/chunk/game/offline.js | 2 +- client/chunk/game/offline.js.br | Bin 4640 -> 4611 bytes client/chunk/game/offline.js.map | 2 +- client/chunk/game/online.css | 2 + client/chunk/game/online.css.map | 1 + client/chunk/game/online.js | 2 +- client/chunk/game/online.js.map | 2 +- client/chunk/lang/Chinese-ts.js | 2 +- client/chunk/lang/Emote-ts.js | 2 +- client/chunk/lang/Emote-ts.js.map | 2 +- client/chunk/lang/English-ts.js | 2 +- client/chunk/lang/English-ts.js.map | 2 +- client/chunk/lang/Japanese-ts.js | 2 +- client/chunk/lang/Japanese-ts.js.map | 2 +- client/chunk/lang/Korean-ts.js | 2 +- client/chunk/lang/Korean-ts.js.map | 2 +- client/chunk/lang/Ngrams-ts.js | 2 +- client/chunk/lang/Ngrams-ts.js.map | 2 +- client/chunk/lang/Numpad-ts.js | 2 +- client/chunk/lang/Numpad-ts.js.map | 2 +- client/chunk/lang/Shell-ts.js | 2 +- client/chunk/lang/Shell-ts.js.map | 2 +- client/chunk/lang/defs-Chinese-ts.js | 2 +- client/chunk/lang/defs-English100-ts.js | 2 +- client/chunk/lang/defs-English100-ts.js.map | 2 +- client/css-common.css.map | 2 +- client/css-common.js | 2 +- client/css-common.js.map | 2 +- client/index.css | 2 +- client/index.css.map | 2 +- client/index.html | 13 +- client/index.js | 2 +- client/index.js.br | Bin 12973 -> 13868 bytes client/index.js.map | 2 +- package.json | 16 +- server/chunk/lang/Chinese-ts.js | 2 +- server/chunk/lang/Emote-ts.js | 2 +- server/chunk/lang/Emote-ts.js.map | 2 +- server/chunk/lang/English-ts.js | 2 +- server/chunk/lang/English-ts.js.map | 2 +- server/chunk/lang/Japanese-ts.js | 2 +- server/chunk/lang/Japanese-ts.js.map | 2 +- server/chunk/lang/Korean-ts.js | 2 +- server/chunk/lang/Korean-ts.js.map | 2 +- server/chunk/lang/Ngrams-ts.js | 2 +- server/chunk/lang/Ngrams-ts.js.map | 2 +- server/chunk/lang/Numpad-ts.js | 2 +- server/chunk/lang/Numpad-ts.js.map | 2 +- server/chunk/lang/Shell-ts.js | 2 +- server/chunk/lang/Shell-ts.js.map | 2 +- server/chunk/lang/defs-Chinese-ts.js | 3 +- server/chunk/lang/defs-Chinese-ts.js.map | 1 - server/chunk/lang/defs-English100-ts.js | 2 +- server/chunk/lang/defs-English100-ts.js.map | 2 +- server/index.js | 2 +- server/index.js.map | 2 +- 80 files changed, 603 insertions(+), 83 deletions(-) create mode 100644 .gitattributes create mode 100644 LICENSE.md create mode 100644 client/.gitattributes create mode 100644 client/LICENSE.md delete mode 100644 client/chunk/133.js delete mode 100644 client/chunk/133.js.br delete mode 100644 client/chunk/133.js.map delete mode 100644 client/chunk/307.js delete mode 100644 client/chunk/307.js.LICENSE.txt delete mode 100644 client/chunk/307.js.br delete mode 100644 client/chunk/307.js.map create mode 100644 client/chunk/5.js create mode 100644 client/chunk/5.js.br create mode 100644 client/chunk/5.js.map create mode 100644 client/chunk/colour-schemes.css create mode 100644 client/chunk/colour-schemes.css.map create mode 100644 client/chunk/colour-schemes.js delete mode 100644 client/chunk/game-css.css delete mode 100644 client/chunk/game-css.css.map delete mode 100644 client/chunk/game-css.js delete mode 100644 client/chunk/game-css.js.map create mode 100644 client/chunk/game/offline.css create mode 100644 client/chunk/game/offline.css.map create mode 100644 client/chunk/game/online.css create mode 100644 client/chunk/game/online.css.map delete mode 100644 server/chunk/lang/defs-Chinese-ts.js.map diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..e7ae2f9c --- /dev/null +++ b/.gitattributes @@ -0,0 +1,192 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +# +# Based on https://github.com/alexkaratarakis/gitattributes + +# Auto detect +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +# Source code +*.bash text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.coffee text +*.css text diff=css +*.htm text diff=html +*.html text diff=html +*.inc text +*.ini text +*.js text +*.json text +*.jsx text +*.less text +*.ls text +*.map text -diff +*.od text +*.onlydata text +*.php text diff=php +*.pl text +*.ps1 text eol=crlf +*.py text diff=python +*.rb text diff=ruby +*.sass text +*.scm text +*.scss text diff=css +*.sh text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text diff=html + +# Docker +Dockerfile text + +# Documentation +*.ipynb text +*.markdown text diff=markdown +*.md text diff=markdown +*.mdwn text diff=markdown +*.mdown text diff=markdown +*.mkd text diff=markdown +*.mkdn text diff=markdown +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +# Templates +#*.dot text +*.ejs text diff=html +#*.haml text +*.handlebars text +*.hbs text +*.vue text + +# Configs +*.cnf text +*.conf text +*.config text +.editorconfig text +.env text +.gitattributes text +.gitconfig text +.htaccess text +*.lock text -diff +package.json text eol=lf +package-lock.json text eol=lf -diff +pnpm-lock.yaml text eol=lf -diff +*.toml text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text + +# Heroku +Procfile text + +# Graphics +#*.ai binary +#*.bmp binary +#*.eps binary +*.gif binary +#*.gifv binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +#*.jpx binary +#*.jxr binary +*.pdf binary +*.png binary +#*.psb binary +*.psd binary +# SVG treated as an asset (binary) by default. +*.svg text +# If you want to treat it as binary, +# use the following line instead. +# *.svg binary +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +# Audio +#*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +#*.ra binary + +# Video +#*.3gpp binary +#*.3gp binary +#*.as binary +#*.asf binary +#*.asx binary +*.fla binary +*.flv binary +*.m4v binary +#*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +#*.ogv binary +#*.swc binary +*.swf binary +*.webm binary + +# Archives +*.7z binary +*.gz binary +*.br binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +# Fonts +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +# Executables +*.exe binary +*.pyc binary + +# RC files (like .babelrc or .eslintrc) +*.*rc text + +# Ignore files (like .npmignore or .gitignore) +*.*ignore text diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 00000000..53368907 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,131 @@ +# PolyForm Noncommercial License 1.0.0 + + + +## Acceptance + +In order to get any license under these terms, you must agree +to them as both strict obligations and conditions to all +your licenses. + +## Copyright License + +The licensor grants you a copyright license for the +software to do everything you might do with the software +that would otherwise infringe the licensor's copyright +in it for any permitted purpose. However, you may +only distribute the software according to [Distribution +License](#distribution-license) and make changes or new works +based on the software according to [Changes and New Works +License](#changes-and-new-works-license). + +## Distribution License + +The licensor grants you an additional copyright license +to distribute copies of the software. Your license +to distribute covers distributing the software with +changes and new works permitted by [Changes and New Works +License](#changes-and-new-works-license). + +## Notices + +You must ensure that anyone who gets a copy of any part of +the software from you also gets a copy of these terms or the +URL for them above, as well as copies of any plain-text lines +beginning with `Required Notice:` that the licensor provided +with the software. For example: + +> Required Notice: Copyright David Fong. (http://github.com/david-fong) + +## Changes and New Works License + +The licensor grants you an additional copyright license to +make changes and new works based on the software for any +permitted purpose. + +## Patent License + +The licensor grants you a patent license for the software that +covers patent claims the licensor can license, or becomes able +to license, that you would infringe by using the software. + +## Noncommercial Purposes + +Any noncommercial purpose is a permitted purpose. + +## Personal Uses + +Personal use for research, experiment, and testing for +the benefit of public knowledge, personal study, private +entertainment, hobby projects, amateur pursuits, or religious +observance, without any anticipated commercial application, +is use for a permitted purpose. + +## Noncommercial Organizations + +Use by any charitable organization, educational institution, +public research organization, public safety or health +organization, environmental protection organization, +or government institution is use for a permitted purpose +regardless of the source of funding or obligations resulting +from the funding. + +## Fair Use + +You may have "fair use" rights for the software under the +law. These terms do not limit them. + +## No Other Rights + +These terms do not allow you to sublicense or transfer any of +your licenses to anyone else, or prevent the licensor from +granting licenses to anyone else. These terms do not imply +any other licenses. + +## Patent Defense + +If you make any written claim that the software infringes or +contributes to infringement of any patent, your patent license +for the software granted under these terms ends immediately. If +your company makes such a claim, your patent license ends +immediately for work on behalf of your company. + +## Violations + +The first time you are notified in writing that you have +violated any of these terms, or done anything with the software +not covered by your licenses, your licenses can nonetheless +continue if you come into full compliance with these terms, +and take practical steps to correct past violations, within +32 days of receiving notice. Otherwise, all your licenses +end immediately. + +## No Liability + +***As far as the law allows, the software comes as is, without +any warranty or condition, and the licensor will not be liable +to you for any damages arising out of these terms or the use +or nature of the software, under any kind of legal claim.*** + +## Definitions + +The **licensor** is the individual or entity offering these +terms, and the **software** is the software the licensor makes +available under these terms. + +**You** refers to the individual or entity agreeing to these +terms. + +**Your company** is any legal entity, sole proprietorship, +or other kind of organization that you work for, plus all +organizations that have control over, are under the control of, +or are under common control with that organization. **Control** +means ownership of substantially all the assets of an entity, +or the power to direct its management and policies by vote, +contract, or otherwise. Control can be direct or indirect. + +**Your licenses** are all the licenses granted to you for the +software under these terms. + +**Use** means anything you do with the software requiring one +of your licenses. \ No newline at end of file diff --git a/client/.gitattributes b/client/.gitattributes new file mode 100644 index 00000000..e7ae2f9c --- /dev/null +++ b/client/.gitattributes @@ -0,0 +1,192 @@ +## GITATTRIBUTES FOR WEB PROJECTS +# +# Details per file setting: +# text These files should be normalized (i.e. convert CRLF to LF). +# binary These files are binary and should be left untouched. +# +# Note that binary is a macro for -text -diff. +# +# Based on https://github.com/alexkaratarakis/gitattributes + +# Auto detect +## Handle line endings automatically for files detected as +## text and leave all files detected as binary untouched. +## This will handle all files NOT defined below. +* text=auto + +# Source code +*.bash text eol=lf +*.bat text eol=crlf +*.cmd text eol=crlf +*.coffee text +*.css text diff=css +*.htm text diff=html +*.html text diff=html +*.inc text +*.ini text +*.js text +*.json text +*.jsx text +*.less text +*.ls text +*.map text -diff +*.od text +*.onlydata text +*.php text diff=php +*.pl text +*.ps1 text eol=crlf +*.py text diff=python +*.rb text diff=ruby +*.sass text +*.scm text +*.scss text diff=css +*.sh text eol=lf +*.sql text +*.styl text +*.tag text +*.ts text +*.tsx text +*.xml text +*.xhtml text diff=html + +# Docker +Dockerfile text + +# Documentation +*.ipynb text +*.markdown text diff=markdown +*.md text diff=markdown +*.mdwn text diff=markdown +*.mdown text diff=markdown +*.mkd text diff=markdown +*.mkdn text diff=markdown +*.mdtxt text +*.mdtext text +*.txt text +AUTHORS text +CHANGELOG text +CHANGES text +CONTRIBUTING text +COPYING text +copyright text +*COPYRIGHT* text +INSTALL text +license text +LICENSE text +NEWS text +readme text +*README* text +TODO text + +# Templates +#*.dot text +*.ejs text diff=html +#*.haml text +*.handlebars text +*.hbs text +*.vue text + +# Configs +*.cnf text +*.conf text +*.config text +.editorconfig text +.env text +.gitattributes text +.gitconfig text +.htaccess text +*.lock text -diff +package.json text eol=lf +package-lock.json text eol=lf -diff +pnpm-lock.yaml text eol=lf -diff +*.toml text +*.yaml text +*.yml text +browserslist text +Makefile text +makefile text + +# Heroku +Procfile text + +# Graphics +#*.ai binary +#*.bmp binary +#*.eps binary +*.gif binary +#*.gifv binary +*.ico binary +*.jng binary +*.jp2 binary +*.jpg binary +*.jpeg binary +#*.jpx binary +#*.jxr binary +*.pdf binary +*.png binary +#*.psb binary +*.psd binary +# SVG treated as an asset (binary) by default. +*.svg text +# If you want to treat it as binary, +# use the following line instead. +# *.svg binary +*.svgz binary +*.tif binary +*.tiff binary +*.wbmp binary +*.webp binary + +# Audio +#*.kar binary +*.m4a binary +*.mid binary +*.midi binary +*.mp3 binary +*.ogg binary +#*.ra binary + +# Video +#*.3gpp binary +#*.3gp binary +#*.as binary +#*.asf binary +#*.asx binary +*.fla binary +*.flv binary +*.m4v binary +#*.mng binary +*.mov binary +*.mp4 binary +*.mpeg binary +*.mpg binary +#*.ogv binary +#*.swc binary +*.swf binary +*.webm binary + +# Archives +*.7z binary +*.gz binary +*.br binary +*.jar binary +*.rar binary +*.tar binary +*.zip binary + +# Fonts +*.ttf binary +*.eot binary +*.otf binary +*.woff binary +*.woff2 binary + +# Executables +*.exe binary +*.pyc binary + +# RC files (like .babelrc or .eslintrc) +*.*rc text + +# Ignore files (like .npmignore or .gitignore) +*.*ignore text diff --git a/client/.nojekyll b/client/.nojekyll index 8b137891..e69de29b 100644 --- a/client/.nojekyll +++ b/client/.nojekyll @@ -1 +0,0 @@ - diff --git a/client/LICENSE.md b/client/LICENSE.md new file mode 100644 index 00000000..49cf0ad7 --- /dev/null +++ b/client/LICENSE.md @@ -0,0 +1,10 @@ + +# general +.DS_Store +*.orig + +# npm +/node_modules/ + +# build +/dist/ diff --git a/client/chunk/133.js b/client/chunk/133.js deleted file mode 100644 index 61f50ed9..00000000 --- a/client/chunk/133.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[133],{157:(e,t,r)=>{"use strict";var s;r.d(t,{u:()=>s}),function(e){let t;!function(e){e.EUCLID2="EUCLID2",e.BEEHIVE="BEEHIVE"}(t=e.System||(e.System={})),e.equals=function(e,t){return e._equals(t)}}(s||(s={})),Object.freeze(s)},110:(e,t,r)=>{"use strict";r.d(t,{r:()=>a});var s=r(632),i=r(983);class a{constructor(e){Object.defineProperty(this,"static",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"dimensions",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"tile",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.static=e.gridClass,this.dimensions=e.dimensions,this.tile=new i.N(this),s.R.propNoWrite(this,"static","dimensions","tile")}get area(){return this.static.getArea(this.dimensions)}reset(){this.forEachTile((e=>e.reset()))}getDestsFromSourcesTo(e){return Array.from(new Set(this.tile.sourcesTo(e).get.flatMap((e=>this.tile.destsFrom(e.coord).get))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}}!function(e){e.getImplementation=t=>e._Constructors[t]}(a||(a={}))},983:(e,t,r)=>{"use strict";r.d(t,{N:()=>a});var s,i=r(903);class a{constructor(e){s.set(this,void 0),(0,i.YH)(this,s,e),Object.freeze(this)}get _source(){return(0,i.Q_)(this,s)}at(...e){return(0,i.Q_)(this,s)._getTileAt(...e)}destsFrom(...e){return new o((0,i.Q_)(this,s)._getTileDestsFrom(...e))}sourcesTo(...e){return new o((0,i.Q_)(this,s)._getTileSourcesTo(...e))}}s=new WeakMap,Object.freeze(a),Object.freeze(a.prototype);class o{constructor(e){Object.defineProperty(this,"contents",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.seal(this)}get occupied(){return this.contents=this.contents.filter((e=>e.isOccupied)),this}get unoccupied(){return this.contents=this.contents.filter((e=>!e.isOccupied)),this}get get(){return this.contents}}Object.freeze(o),Object.freeze(o.prototype)},254:(e,t,r)=>{"use strict";r.d(t,{v:()=>s});var s,i=r(632),a=r(110);!function(e){class t{constructor(e){Object.defineProperty(this,"dash",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"bash",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.dash=e.dash,this.bash=e.bash,Object.freeze(this)}_equals(e){return this.dash===e.dash&&this.bash===e.bash}round(){const e=Math.floor(this.dash),r=Math.floor(this.bash),s=e-this.dash,i=r-this.bash;return s>2*i?new t({dash:e+1,bash:r}):s<.5*i?new t({dash:e,bash:r+1}):Math.min(s,i)>.5?new t({dash:e+1,bash:r+1}):new t({dash:e,bash:r})}add(e){return new t({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new t({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new t({dash:e*this.dash,bash:e*this.bash})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class r extends a.r{constructor(e){super(e),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.grid=Object.freeze(void 0)}static getAmbiguityThreshold(){return 18}static getSizeLimits(){return this.SIZE_LIMITS}forEachTile(e){let t=0;for(const r of this.grid)for(const s of r)e(s,t++)}shuffledForEachTile(e){this.grid.flat().sort(((e,t)=>Math.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,t){}_getTileAt(e){}_getTileDestsFrom(e,t=1){}_getTileSourcesTo(e,t=1){}minMovesFromTo(e,t){}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}static getSpawnCoords(e,t){}static getArea(e){const t=Math.min(e.fslash,e.bslash),r=Math.max(e.fslash,e.bslash),s=-1+e.dash+t;let i=2*t*(e.dash+s);return i+=(r-t-1)*s,i}static getDiameterOfLatticePatchHavingArea(e){if(e<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-e)))/6*2}static getRandomCoord(e){return new t(void 0)}}Object.defineProperty(r,"SIZE_LIMITS",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({dash:Object.freeze({min:10,max:50}),bslash:Object.freeze({min:10,max:50}),fslash:Object.freeze({min:10,max:50})})}),e.Grid=r,i.R.protoNoEnum(r,"_getTileAt","_getTileDestsFrom","_getTileSourcesTo"),Object.freeze(r),Object.freeze(r.prototype)}(s||(s={})),Object.freeze(s)},692:(e,t,r)=>{"use strict";r.d(t,{i:()=>s});var s,i=r(632),a=r(110);!function(e){class t{constructor(e){Object.defineProperty(this,"x",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"y",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.x=e.x,this.y=e.y,Object.freeze(this)}_equals(e){return this.x===e.x&&this.y===e.y}round(){return new t({x:Math.round(this.x),y:Math.round(this.y)})}oneNorm(e){return this.sub(e).originOneNorm()}originOneNorm(){return Math.abs(this.x)+Math.abs(this.y)}infNorm(e){return this.sub(e).originInfNorm()}originInfNorm(){return Math.max(Math.abs(this.x),Math.abs(this.y))}axialAlignment(e){return this.sub(e).originAxialAlignment()}originAxialAlignment(){return Math.abs(Math.abs(this.x)-Math.abs(this.y))/(Math.abs(this.x)+Math.abs(this.y))}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}mul(e){return new t({x:e*this.x,y:e*this.y})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class r extends a.r{constructor(e){super(e),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const r=[];for(let s=0;sMath.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){const r=this.tile.destsFrom(t).unoccupied.get;if(0===r.length)return this.tile.at(t);if(1===r.length)return r[0];r.sort(((t,r)=>t.coord.oneNorm(e)-r.coord.oneNorm(e))).sort(((t,r)=>t.coord.infNorm(e)-r.coord.infNorm(e)));const s=r[0];for(let t=1;ts.coord.infNorm(e)){r.splice(t);break}if(1===r.length)return r[0];if(s.coord.x-t.x==0||s.coord.y-t.y==0){if(t.axialAlignment(t.sub(e))-.5>0)return s;r.shift()}return r[Math.floor(r.length*Math.random())]}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}getRandomCoordAround(e,r){return new t({x:e.x+Math.trunc(2*r*(Math.random()-.5)),y:e.y+Math.trunc(2*r*(Math.random()-.5))})}_getTileAt(e){return this.grid[e.y][e.x]}_getTileDestsFrom(e,t=1){let r=e.y-t,s=e.y+t+1,i=e.x-t,a=e.x+t+1;return r>=this.dimensions.height||s<0||i>=this.dimensions.width||a<0?[]:this.grid.slice(Math.max(0,r),Math.min(this.dimensions.height,s)).flatMap((e=>e.slice(Math.max(0,i),Math.min(this.dimensions.width,a))))}_getTileSourcesTo(e,t=1){return this._getTileDestsFrom(e,t)}minMovesFromTo(e,t){return Math.min(Math.abs(t.x-e.x),Math.abs(t.y-e.y))}static getSpawnCoords(e,t){const s=[];return e.map((e=>{const i=[];for(;e>0;){let a;do{a=r.getRandomCoord(t)}while(s.find((e=>a._equals(e))));i.push(a),s.push(a),e--}return i}))}static getArea(e){return e.height*e.width}static getDiameterOfLatticePatchHavingArea(e){return Math.sqrt(e)}static getRandomCoord(e){const r=Math.floor(e.width*Math.random()),s=Math.floor(e.height*Math.random());return new t({x:r,y:s})}}Object.defineProperty(r,"SIZE_LIMITS",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({height:Object.freeze({min:11,max:51}),width:Object.freeze({min:11,max:51})})}),e.Grid=r,i.R.protoNoEnum(r,"_getTileAt","_getTileDestsFrom","_getTileSourcesTo"),Object.freeze(r),Object.freeze(r.prototype)}(s||(s={})),Object.freeze(s)},364:(e,t,r)=>{"use strict";var s;r.d(t,{L:()=>s}),function(e){e.EVENT_ID_REJECT=-1}(s||(s={})),Object.freeze(s)},753:(e,t,r)=>{"use strict";r.d(t,{a:()=>s});var s,i=r(364);!function(e){e.INITIAL_REQUEST_ID=-1,e.EVENT_NAME=Object.freeze({BUBBLE:"player-bubble",MOVEMENT:"player-movement"});class t{constructor(e,t){Object.defineProperty(this,"eventId",{enumerable:!0,configurable:!0,writable:!0,value:i.L.EVENT_ID_REJECT}),Object.defineProperty(this,"playerId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"playerLastAcceptedRequestId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"affectedNeighbours",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.playerId=e,this.playerLastAcceptedRequestId=t}}e.Bubble=t,e.Movement=class extends t{constructor(e,t,r,s){super(e,t),Object.defineProperty(this,"newPlayerHealth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"destModDesc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"moveType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"tileHealthModDescs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"playerHealthModDescs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.destModDesc={coord:r.coord,lastKnownUpdateId:r.lastKnownUpdateId},this.moveType=s}}}(s||(s={})),Object.freeze(s)},688:(e,t,r)=>{"use strict";r.d(t,{R:()=>f});var s,i,a,o,n=r(903),l=r(825),h=r(364),c=(r(753),r(632)),d=r(532),u=r(477),m=r(87);class p{constructor(e,t,r){Object.defineProperty(this,"gameType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),s.set(this,void 0),Object.defineProperty(this,"langFrontend",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"players",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"operators",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),i.set(this,void 0),Object.defineProperty(this,"teams",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),a.set(this,void 0),Object.defineProperty(this,"_playerStatusCtor",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.gameType=e;const o=this._getGridImplementation(r.coordSys);this.grid=new o({gridClass:o,tileClass:t.tileClass,coordSys:r.coordSys,dimensions:r.gridDimensions}),(0,n.YH)(this,s,t.onGameBecomeOver),this.langFrontend=d.Uo.GET_FRONTEND_DESC_BY_ID(r.langId),this._playerStatusCtor=t.playerStatusCtor,this.players=this.createPlayers(r),this.operators=Object.freeze(this.players.filter((e=>e.isALocalOperator)));{const e=[];if(this.players.forEach((t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)})),this.teams=e.map(((e,t)=>new m.S(t,e))),this.teams.every((e=>e.id===m.S.ElimOrder.IMMORTAL)))throw new Error("All teams are immortal. The game will never end.")}c.R.propNoWrite(this,"gameType","grid","langFrontend","players","operators","teams","_playerStatusCtor"),this.players.forEach((e=>e._afterAllPlayersConstruction())),this.setCurrentOperator(0)}reset(){return(0,n.mG)(this,void 0,void 0,(function*(){this.grid.reset(),(0,n.YH)(this,a,l.l.Status.PAUSED)}))}createPlayers(e){const t=e.playerDescs=this.gameType===l.l.Type.ONLINE?e.playerDescs:u.J5.CtorArgs.finalize(e.playerDescs);return Object.freeze(t.map((e=>e.familyId===u.J5.Family.HUMAN?e.isALocalOperator?this._createOperatorPlayer(e):new u.J5(this,e):this._createArtifPlayer(e))))}serializeResetState(){const e=[],t=this.players.map((e=>e.coord)),r=[];this.grid.forEachTile((t=>{t.lastKnownUpdateId++,e.push({char:t.langChar,seq:t.langSeq}),t.freeHealth&&r.push({coord:t.coord,health:t.freeHealth})}));const s={csps:e,playerCoords:t,healthCoords:r};return c.R.deepFreeze(s),s}deserializeResetState(e){c.R.deepFreeze(e),this.grid.forEachTile(((t,r)=>{t.setLangCharSeqPair(e.csps[r]),t.lastKnownUpdateId++})),e.playerCoords.forEach(((e,t)=>{this.players[t].reset(this.grid.tile.at(e))})),e.healthCoords.forEach((e=>{this.grid.tile.at(e.coord).freeHealth=e.health}))}get currentOperator(){return(0,n.Q_)(this,i)}setCurrentOperator(e){const t=this.operators[e];if(void 0===t)throw new Error("never");this.currentOperator!==t&&(t._notifyWillBecomeCurrent(),(0,n.YH)(this,i,t))}get status(){return(0,n.Q_)(this,a)}statusBecomePlaying(){if(this.status!==l.l.Status.PLAYING){if(this.status!==l.l.Status.PAUSED)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((e=>{e._notifyGameNowPlaying()})),(0,n.YH)(this,a,l.l.Status.PLAYING)}else console.info("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){this.status!==l.l.Status.PAUSED?this.status!==l.l.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowPaused()})),(0,n.YH)(this,a,l.l.Status.PAUSED)):console.info("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){this.status!==l.l.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowOver()})),(0,n.YH)(this,a,l.l.Status.OVER),(0,n.Q_)(this,s).call(this),console.info("game is over!"))}}s=new WeakMap,i=new WeakMap,a=new WeakMap,Object.freeze(p),Object.freeze(p.prototype);class f extends p{constructor(e,t,r){super(e,t,r),Object.defineProperty(this,"eventRecordBitmap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),o.set(this,void 0),this.eventRecordBitmap=[],c.R.propNoWrite(this,"eventRecordBitmap")}reset(){const e=super.reset();return this.eventRecordBitmap.fill(!1,0,l.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH),(0,n.YH)(this,o,0),e}get nextUnusedEventId(){return(0,n.Q_)(this,o)}_recordEvent(e){const t=e.eventId,r=t%l.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;this.eventRecordBitmap[r]=!0,this.eventRecordBitmap[(t+l.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH-l.l.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)%l.l.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH]=!1,(0,n.YH)(this,o,+(0,n.Q_)(this,o)+1)}executeTileModEvent(e,t=!0){c.R.deepFreeze(e);const r=this.grid.tile.at(e.coord);return r.lastKnownUpdateId>e.lastKnownUpdateId||(e.newCharSeqPair&&(r.setLangCharSeqPair(e.newCharSeqPair),t&&this.operators.filter((e=>e.tile.destsFrom().get.includes(r))).forEach((e=>e.seqBufferAcceptKey("")))),r.lastKnownUpdateId=e.lastKnownUpdateId,r.freeHealth=e.newFreeHealth),r}executePlayerMoveEvent(e){var t;c.R.deepFreeze(e);const r=this.players[e.playerId],s=e.playerLastAcceptedRequestId-r.lastAcceptedRequestId;if(e.eventId===h.L.EVENT_ID_REJECT)return void(0===s&&(r.requestInFlight=!1));this._recordEvent(e);const i=this.executeTileModEvent(e.destModDesc,r!==this.currentOperator);if(null===(t=e.tileHealthModDescs)||void 0===t||t.forEach((e=>{this.executeTileModEvent(e)})),!(s>1)){if(r.requestInFlight=!1,!(r===this.currentOperator?1===s:s<=1))throw new RangeError("never");r.status.health=e.newPlayerHealth.health,r.moveTo(i),r.lastAcceptedRequestId=e.playerLastAcceptedRequestId}}executePlayerBubbleEvent(e){this.players[e.playerId].requestInFlight=!1,e.eventId!==h.L.EVENT_ID_REJECT&&this._recordEvent(e)}}o=new WeakMap,c.R.protoNoEnum(f,"nextUnusedEventId","_recordEvent"),Object.freeze(f),Object.freeze(f.prototype)},477:(e,t,r)=>{"use strict";r.d(t,{J5:()=>c});var s,i=r(632),a=(r(825),r(753)),o=r(903),n=r(532),l=r(983);class h extends n.J5{constructor(e,t){if(super(),Object.defineProperty(this,"playerId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isALocalOperator",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"game",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),s.set(this,void 0),Object.defineProperty(this,"tile",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Math.trunc(t.playerId)!==t.playerId)throw new RangeError("Player ID's must be integer values.");this.playerId=t.playerId,this.isALocalOperator=t.isALocalOperator,this.game=e,this.status=new this.game._playerStatusCtor(this,t.noCheckGameOver),this.tile=new l.N(new h.TileGetterSource(this)),i.R.instNoEnum(this,"game"),i.R.propNoWrite(this,"playerId","isALocalOperator","game","status","tile")}_afterAllPlayersConstruction(){this.status._afterAllPlayersConstruction()}reset(e){(0,o.YH)(this,s,e),this.hostTile._setOccupant(this.playerId,this.status.immigrantInfo)}get coord(){return this.hostTile.coord}get hostTile(){return(0,o.Q_)(this,s)}moveTo(e){this.hostTile.occupantId!==this.playerId||this.hostTile.evictOccupant(),e.isOccupied||((0,o.YH)(this,s,e),e._setOccupant(this.playerId,this.status.immigrantInfo))}}s=new WeakMap,function(e){var t,r;class s{constructor(e){t.set(this,void 0),r.set(this,void 0),(0,o.YH)(this,t,e),(0,o.YH)(this,r,e.game.grid.tile._source)}_getTileAt(){return(0,o.Q_)(this,r)._getTileAt((0,o.Q_)(this,t).coord)}_getTileDestsFrom(){return(0,o.Q_)(this,r)._getTileDestsFrom((0,o.Q_)(this,t).coord)}_getTileSourcesTo(){return(0,o.Q_)(this,r)._getTileSourcesTo((0,o.Q_)(this,t).coord)}}t=new WeakMap,r=new WeakMap,e.TileGetterSource=s,Object.freeze(s),Object.freeze(s.prototype)}(h||(h={})),i.R.protoNoEnum(h,"_afterAllPlayersConstruction"),Object.freeze(h),Object.freeze(h.prototype),r(865);class c extends h{constructor(e,t){var r;super(e,t),Object.defineProperty(this,"familyId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"teamId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"username",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"avatar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"lastAcceptedRequestId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"requestInFlight",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=null!==(r=t.avatar)&&void 0!==r?r:c.Avatar.GET_RANDOM(),i.R.propNoWrite(this,"familyId","teamId","username","avatar")}reset(e){super.reset(e),this.status.reset(),this.lastAcceptedRequestId=a.a.INITIAL_REQUEST_ID,this.requestInFlight=!1}_notifyGameNowPlaying(){}_notifyGameNowPaused(){}_notifyGameNowOver(){}makeMovementRequest(e,t){this.requestInFlight=!0,this.game.processMoveRequest(new a.a.Movement(this.playerId,this.lastAcceptedRequestId,e,t))}get team(){return this.game.teams[this.teamId]}isTeamedWith(e){return this.team.members.includes(e)}}!function(e){let t;!function(e){e.finalize=function(e){const t=Array.from(new Set(e.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,r)=>(e[t]=r,e)),[]);return e.slice().sort(((e,r)=>t[e.teamId]-t[r.teamId])).map(((e,r)=>Object.assign({},e,{playerId:r,teamId:t[e.teamId]})))}}(t=e.CtorArgs||(e.CtorArgs={})),Object.freeze(t)}(c||(c={})),i.R.protoNoEnum(c,"_notifyGameNowPaused","_notifyGameNowPlaying","_notifyGameNowOver"),Object.freeze(c),Object.freeze(c.prototype)},865:(e,t,r)=>{"use strict";r.d(t,{c:()=>n});var s,i=r(903),a=r(632),o=r(87);class n{constructor(e,t){Object.defineProperty(this,"player",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"noCheckGameOver",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),s.set(this,void 0),this.player=e,this.noCheckGameOver=t,a.R.instNoEnum(this,"player")}reset(){this.health=0}_afterAllPlayersConstruction(){}get immigrantInfo(){}get health(){return(0,i.Q_)(this,s)}set health(e){const t=this.isDowned;if((0,i.YH)(this,s,e),t||!this.isDowned||this.noCheckGameOver)return;const r=this.player.team,a=this.player.game.teams;if(r.elimOrder===o.S.ElimOrder.STANDING&&r.members.every((e=>e.status.noCheckGameOver||e.status.isDowned))){const e=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING)).length;r.elimOrder=1+a.filter((e=>e.elimOrder!==o.S.ElimOrder.STANDING&&e.elimOrder!==o.S.ElimOrder.IMMORTAL)).length,e===a.length&&this.player.game.statusBecomeOver()}}get isDowned(){return this.health<0}}s=new WeakMap,a.R.protoNoEnum(n,"_afterAllPlayersConstruction"),Object.freeze(n),Object.freeze(n.prototype)},87:(e,t,r)=>{"use strict";r.d(t,{S:()=>o});var s,i=r(903),a=r(632);class o{constructor(e,t){if(Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"members",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),s.set(this,void 0),0===t.length)throw new Error("Teams must have at least one member.");this.id=e,this.members=t,(0,i.YH)(this,s,this.members.every((e=>e.status.noCheckGameOver))?o.ElimOrder.IMMORTAL:o.ElimOrder.STANDING),a.R.propNoWrite(this,"id","members")}reset(){this.elimOrder!==o.ElimOrder.IMMORTAL&&(this.elimOrder=o.ElimOrder.STANDING)}get elimOrder(){return(0,i.Q_)(this,s)}set elimOrder(e){if(this.elimOrder===o.ElimOrder.IMMORTAL)throw new TypeError("Cannot change the elimination status of an immortal team.");(0,i.YH)(this,s,e)}}s=new WeakMap,function(e){let t;!function(e){e.IMMORTAL=-1,e.STANDING=0}(t=e.ElimOrder||(e.ElimOrder={}))}(o||(o={})),Object.freeze(o),Object.freeze(o.prototype)},242:(e,t,r)=>{"use strict";r.d(t,{qM:()=>L,lA:()=>h.l,RQ:()=>l.R,J5:()=>w.J5,Ko:()=>A,gx:()=>f});var s,i,a,o,n,l=r(632),h=r(825),c=r(903),d=r(749),u=r(912),m=r(532);class p{constructor(e){Object.defineProperty(this,"coord",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),s.set(this,void 0),i.set(this,void 0),a.set(this,void 0),o.set(this,void 0),Object.defineProperty(this,"lastKnownUpdateId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.coord=e,l.R.propNoWrite(this,"coord"),(0,c.YH)(this,s,m.J5.Id.NULL)}reset(){this.evictOccupant(),this.lastKnownUpdateId=0,this.freeHealth=0,this.setLangCharSeqPair(m.Uo.CharSeqPair.NULL)}_setOccupant(e,t){(0,c.YH)(this,s,e)}get isOccupied(){return this.occupantId!==m.J5.Id.NULL}evictOccupant(){(0,c.YH)(this,s,m.J5.Id.NULL)}get occupantId(){return(0,c.Q_)(this,s)}get freeHealth(){return(0,c.Q_)(this,i)}set freeHealth(e){(0,c.YH)(this,i,e)}setLangCharSeqPair(e){(0,c.YH)(this,a,e.char),(0,c.YH)(this,o,e.seq)}get langChar(){return(0,c.Q_)(this,a)}get langSeq(){return(0,c.Q_)(this,o)}}s=new WeakMap,i=new WeakMap,a=new WeakMap,o=new WeakMap,Object.freeze(p),Object.freeze(p.prototype);class f extends p{constructor(e){super(e),n.set(this,void 0),Object.defineProperty(this,"langCharElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),(0,c.YH)(this,n,l.R.mkEl("div",[u.Y.General.Class.CENTER_CONTENTS,u.Y.General.Class.STACK_CONTENTS,d.Z.this])).setAttribute("aria-label","Tile");{const e=l.R.mkEl("div",[d.Z.char]);e.setAttribute("role","presentation");const t=this.langCharElem=l.R.mkEl("div",[]);e.appendChild(t),(0,c.Q_)(this,n).appendChild(e)}l.R.propNoWrite(this,"langCharElem")}_addToDom(e){e.appendChild((0,c.Q_)(this,n))}_setOccupant(e,t){super._setOccupant(e,t),this.langCharElem.parentElement.insertAdjacentElement("beforebegin",t.playerElem)}set freeHealth(e){super.freeHealth=e,this.freeHealth>0?(0,c.Q_)(this,n).dataset[u.Y.Tile.Dataset.HEALTH]=this.freeHealth.toString():delete(0,c.Q_)(this,n).dataset[u.Y.Tile.Dataset.HEALTH]}get freeHealth(){return super.freeHealth}setLangCharSeqPair(e){super.setLangCharSeqPair(e),this.langCharElem.textContent=this.langChar}}n=new WeakMap,l.R.protoNoEnum(f,"_addToDom"),Object.freeze(f),Object.freeze(f.prototype);var b,g=r(601),y=r(415);!function(e){e.getImplementation=t=>e._Constructors[t]}(b||(b={}));class v{_superVisibleGrid(e,t){if(e.tileClass!==f)throw new TypeError("never");t.setAttribute("role","presentation"),t.translate=!1,t.spellcheck=!1;const r=(this.baseElem=l.R.mkEl("div",[g.Z["impl-body"]])).attachShadow({mode:"closed"});t.classList.add(g.Z["impl-body"]),r.appendChild(t),r.appendChild(l.R.mkEl("link",[],{rel:"stylesheet",href:"css-common.css"})),r.appendChild(l.R.mkEl("link",[],{rel:"stylesheet",href:"chunk/game-css.css"}));const s=l.R.mkEl("div",[y.Z["spotlight-short"]]),i=l.R.mkEl("div",[y.Z["spotlight-long"]]);this.spotlightElems=Object.freeze([s,i])}}Object.freeze(v),Object.freeze(v.prototype);var O,E,w=r(477),_=r(157);class T extends w.J5{constructor(e,t){super(e,t),O.set(this,void 0),E.set(this,void 0),Object.defineProperty(this,"prevCoord",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),(0,c.YH)(this,E,this.game.langFrontend.remapFunc)}reset(e){super.reset(e),this.prevCoord=e.coord,(0,c.YH)(this,O,"")}processKeyboardInput(e){this.game.status===h.l.Status.PLAYING&&(this.requestInFlight||(" "===e.key?_.u.equals(this.coord,this.prevCoord)||this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord,this.coord),w.J5.MoveType.BOOST):1!==e.key.length||e.repeat||this.seqBufferAcceptKey(e.key)))}seqBufferAcceptKey(e){const t=this.tile.destsFrom().unoccupied.get;if(0!==t.length)if(e){e=(0,c.Q_)(this,E).call(this,e);for(let r=this.seqBuffer+e;r.length;r=r.substring(1)){const e=t.find((e=>e.langSeq.startsWith(r)));if(e)return(0,c.YH)(this,O,r),void(e.langSeq===r&&this.makeMovementRequest(e,w.J5.MoveType.NORMAL))}(0,c.YH)(this,O,""),this.status.visualBell()}else t.find((e=>e.langSeq.startsWith(this.seqBuffer)))||(0,c.YH)(this,O,"")}moveTo(e){(0,c.YH)(this,O,""),this.prevCoord=this.coord,super.moveTo(e)}_notifyWillBecomeCurrent(){this.status._notifyWillBecomeCurrent(this.game.grid.spotlightElems)}get seqBuffer(){return(0,c.Q_)(this,O)}}O=new WeakMap,E=new WeakMap,l.R.protoNoEnum(T,"_notifyWillBecomeCurrent"),Object.freeze(T),Object.freeze(T.prototype);var I,j,C,R=r(865);class A extends R.c{constructor(e,t){super(e,t),I.set(this,void 0),j.set(this,void 0),C.set(this,void 0),(0,c.YH)(this,I,l.R.mkEl("div",[u.Y.General.Class.CENTER_CONTENTS,u.Y.General.Class.STACK_CONTENTS,y.Z.this]));{const e=l.R.mkEl("div",[y.Z.face],{});(0,c.YH)(this,j,this.player.isALocalOperator?[e.animate({filter:["brightness(0.7)","brightness(1.0)"]},{duration:300,easing:"ease-in",delay:1}),e.animate({transform:A.makeWiggleAnimation(10,2)},{duration:270,easing:"ease-out",delay:1})]:[]).forEach((e=>e.pause())),e.appendChild(l.R.mkEl("div",[y.Z["downed-overlay"]])),(0,c.Q_)(this,I).appendChild(e)}}_afterAllPlayersConstruction(){(0,c.YH)(this,C,Object.freeze({playerElem:(0,c.Q_)(this,I),username:this.player.username}))}reset(){super.reset();const e=u.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,I).dataset[e.KEY]=e.VALUES.NO}get immigrantInfo(){return(0,c.Q_)(this,C)}_notifyWillBecomeCurrent(e){const t=this.player.game.currentOperator,r=this.player;r.teamId!==(null==t?void 0:t.teamId)&&r.game.players.forEach((e=>{const t=e.teamId===r.teamId;(0,c.Q_)(e.status,I).dataset[u.Y.Player.Dataset.FACE_SWATCH]=e.isALocalOperator?t?"me":"meOppo":t?"teammate":"opponent"})),e.forEach((e=>{(0,c.Q_)(this,I).appendChild(e)})),r.status.immigrantInfo.playerElem.scrollIntoView(m.Bl)}visualBell(){(0,c.Q_)(this,j),window.requestAnimationFrame((e=>{(0,c.Q_)(this,j).forEach((e=>e.play()))}))}get health(){return super.health}set health(e){const t=this.isDowned;if(super.health=e,t!==this.isDowned){const e=u.Y.Player.Dataset.DOWNED;(0,c.Q_)(this,I).dataset[e.KEY]=this.isDowned?this.player.team.elimOrder?e.VALUES.TEAM:e.VALUES.SELF:e.VALUES.NO}}}I=new WeakMap,j=new WeakMap,C=new WeakMap,function(e){var t,r,s;e.makeWiggleAnimation=function(e,t){const r=Array(2*t).fill(e);return r.unshift(0),r.push(0),r.map(((e,t)=>`translate(${t%2?e:-e}%)`))},t=new WeakMap,r=new WeakMap,s=new WeakMap,e.Card=class{constructor(e){Object.defineProperty(this,"baseElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),t.set(this,void 0),r.set(this,void 0),s.set(this,void 0),this.baseElem=l.R.mkEl("div",[]),this.baseElem.setAttribute("label","Player");const i=(0,c.YH)(this,t,l.R.mkEl("div",[],{textContent:e}));this.baseElem.appendChild(i)}}}(A||(A={})),l.R.protoNoEnum(A,"_afterAllPlayersConstruction"),Object.freeze(A),Object.freeze(A.prototype);var M=r(518),N=r(692);class P extends N.i.Grid{constructor(e){super(e);const t=l.R.mkEl("div",[]);t.style.setProperty("--euclid2-grid-width",this.dimensions.width.toString());for(const e of this.grid)for(const r of e)r._addToDom(t);this._superVisibleGrid(e,t),t.classList.add(M.Z.grid)}}l.R.applyMixins(P,[v]),Object.freeze(P),Object.freeze(P.prototype);var S=r(344),z=r(254);class D extends z.v.Grid{constructor(e){super(e);const t=void 0;this._superVisibleGrid(e,t),t.classList.add(S.Z.grid)}}l.R.applyMixins(D,[v]),Object.freeze(D),Object.freeze(D.prototype),(()=>{const e=b;e._Constructors=Object.freeze({EUCLID2:P,BEEHIVE:D}),Object.freeze(e)})();class L{constructor(){Object.defineProperty(this,"htmlElements",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_ctorBrowserGame(){this.htmlElements=Object.freeze({grid:this.grid.baseElem,playersBar:document.createElement("div")}),l.R.propNoWrite(this,"htmlElements")}_getGridImplementation(e){return b.getImplementation(e)}_createOperatorPlayer(e){return new T(this,e)}}l.R.protoNoEnum(L,"_getGridImplementation"),Object.freeze(L),Object.freeze(L.prototype)}}]); -//# sourceMappingURL=133.js.map \ No newline at end of file diff --git a/client/chunk/133.js.br b/client/chunk/133.js.br deleted file mode 100644 index ee1daa95c4d0ba60909f85c7f8a606b740108b68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6771 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"undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==n.g?n.g:Function("return this")(),t.exports=function(t){var e={};function n(r){if(e[r])return e[r].exports;var o=e[r]={i:r,l:!1,exports:{}};return t[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}return n.m=t,n.c=e,n.d=function(t,e,r){n.o(t,e)||Object.defineProperty(t,e,{enumerable:!0,get:r})},n.r=function(t){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})},n.t=function(t,e){if(1&e&&(t=n(t)),8&e)return t;if(4&e&&"object"==typeof t&&t&&t.__esModule)return t;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,"default",{enumerable:!0,value:t}),2&e&&"string"!=typeof t)for(var o in t)n.d(r,o,function(e){return t[e]}.bind(null,o));return r},n.n=function(t){var e=t&&t.__esModule?function(){return t.default}:function(){return t};return n.d(e,"a",e),e},n.o=function(t,e){return Object.prototype.hasOwnProperty.call(t,e)},n.p="",n(n.s=18)}([function(t,e,n){function r(t){if(t)return function(t){for(var e in r.prototype)t[e]=r.prototype[e];return t}(t)}t.exports=r,r.prototype.on=r.prototype.addEventListener=function(t,e){return this._callbacks=this._callbacks||{},(this._callbacks["$"+t]=this._callbacks["$"+t]||[]).push(e),this},r.prototype.once=function(t,e){function n(){this.off(t,n),e.apply(this,arguments)}return n.fn=e,this.on(t,n),this},r.prototype.off=r.prototype.removeListener=r.prototype.removeAllListeners=r.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 o=0;o=this._reconnectionAttempts)this.backoff.reset(),i(u(l.prototype),"emit",this).call(this,"reconnect_failed"),this._reconnecting=!1;else{var n=this.backoff.duration();this._reconnecting=!0;var r=setTimeout((function(){e.skipReconnect||(i(u(l.prototype),"emit",t).call(t,"reconnect_attempt",e.backoff.attempts),e.skipReconnect||e.open((function(n){n?(e._reconnecting=!1,e.reconnect(),i(u(l.prototype),"emit",t).call(t,"reconnect_error",n)):e.onreconnect()})))}),n);this.subs.push({destroy:function(){clearTimeout(r)}})}}},{key:"onreconnect",value:function(){var t=this.backoff.attempts;this._reconnecting=!1,this.backoff.reset(),i(u(l.prototype),"emit",this).call(this,"reconnect",t)}}])&&o(e.prototype,n),l}(l);e.Manager=b},function(t,e,n){var r=n(9),o=n(23),i=n(27),s=n(28);e.polling=function(t){var e=!1,n=!1,s=!1!==t.jsonp;if("undefined"!=typeof location){var c="https:"===location.protocol,a=location.port;a||(a=c?443:80),e=t.hostname!==location.hostname||a!==t.port,n=t.secure!==c}if(t.xdomain=e,t.xscheme=n,"open"in new r(t)&&!t.forceJSONP)return new o(t);if(!s)throw new Error("JSONP disabled");return new i(t)},e.websocket=s},function(t,e,n){var r=n(22),o=n(2);t.exports=function(t){var e=t.xdomain,n=t.xscheme,i=t.enablesXDR;try{if("undefined"!=typeof XMLHttpRequest&&(!e||r))return new XMLHttpRequest}catch(t){}try{if("undefined"!=typeof XDomainRequest&&!n&&i)return new XDomainRequest}catch(t){}if(!e)try{return new(o[["Active"].concat("Object").join("X")])("Microsoft.XMLHTTP")}catch(t){}}},function(t,e,n){function r(t){return(r="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})(t)}function o(t,e){if(!(t instanceof e))throw new TypeError("Cannot call a class as a function")}function i(t,e){for(var n=0;n0);return e}function u(){var t=a(+new Date);return t!==r?(s=0,r=t):t+"."+a(s++)}for(;c<64;c++)i[o[c]]=c;u.encode=a,u.decode=function(t){var e=0;for(c=0;c1?e-1:0),r=1;r=t.length?{done:!0}:{done:!1,value:t[r++]}},e:function(t){throw t},f:o}}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 s,c=!0,a=!1;return{s:function(){n=t[Symbol.iterator]()},n:function(){var t=n.next();return c=t.done,t},e:function(t){a=!0,s=t},f:function(){try{c||null==n.return||n.return()}finally{if(a)throw s}}}}function i(t,e){(null==e||e>t.length)&&(e=t.length);for(var n=0,r=new Array(e);n1?e-1:0),r=1;r1&&void 0!==arguments[1]?arguments[1]:{};return i(this,f),e=u.call(this),t&&"object"===o(t)&&(n=t,t=null),t?(t=y(t),n.hostname=t.host,n.secure="https"===t.protocol||"wss"===t.protocol,n.port=t.port,t.query&&(n.query=t.query)):n.host&&(n.hostname=y(n.host).host),e.secure=null!=n.secure?n.secure:"undefined"!=typeof location&&"https:"===location.protocol,n.hostname&&!n.port&&(n.port=e.secure?"443":"80"),e.hostname=n.hostname||("undefined"!=typeof location?location.hostname:"localhost"),e.port=n.port||("undefined"!=typeof location&&location.port?location.port:e.secure?443:80),e.transports=n.transports||["polling","websocket"],e.readyState="",e.writeBuffer=[],e.prevBufferLen=0,e.opts=r({path:"/engine.io",agent:!1,withCredentials:!1,upgrade:!0,jsonp:!0,timestampParam:"t",rememberUpgrade:!1,rejectUnauthorized:!0,perMessageDeflate:{threshold:1024},transportOptions:{}},n),e.opts.path=e.opts.path.replace(/\/$/,"")+"/","string"==typeof e.opts.query&&(e.opts.query=d.decode(e.opts.query)),e.id=null,e.upgrades=null,e.pingInterval=null,e.pingTimeout=null,e.pingTimeoutTimer=null,e.open(),e}return e=f,(n=[{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=h.protocol,e.transport=t,this.id&&(e.sid=this.id);var n=r({},this.opts.transportOptions[t],this.opts,{query:e,socket:this,hostname:this.hostname,secure:this.secure,port:this.port});return new p[t](n)}},{key:"open",value:function(){var t;if(this.opts.rememberUpgrade&&f.priorWebsocketSuccess&&-1!==this.transports.indexOf("websocket"))t="websocket";else{if(0===this.transports.length){var e=this;return void setTimeout((function(){e.emit("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",(function(){e.onDrain()})).on("packet",(function(t){e.onPacket(t)})).on("error",(function(t){e.onError(t)})).on("close",(function(){e.onClose("transport close")}))}},{key:"probe",value:function(t){var e=this.createTransport(t,{probe:1}),n=!1,r=this;function o(){if(r.onlyBinaryUpgrades){var t=!this.supportsBinary&&r.transport.supportsBinary;n=n||t}n||(e.send([{type:"ping",data:"probe"}]),e.once("packet",(function(t){if(!n)if("pong"===t.type&&"probe"===t.data){if(r.upgrading=!0,r.emit("upgrading",e),!e)return;f.priorWebsocketSuccess="websocket"===e.name,r.transport.pause((function(){n||"closed"!==r.readyState&&(p(),r.setTransport(e),e.send([{type:"upgrade"}]),r.emit("upgrade",e),e=null,r.upgrading=!1,r.flush())}))}else{var o=new Error("probe error");o.transport=e.name,r.emit("upgradeError",o)}})))}function i(){n||(n=!0,p(),e.close(),e=null)}function s(t){var n=new Error("probe error: "+t);n.transport=e.name,i(),r.emit("upgradeError",n)}function c(){s("transport closed")}function a(){s("socket closed")}function u(t){e&&t.name!==e.name&&i()}function p(){e.removeListener("open",o),e.removeListener("error",s),e.removeListener("close",c),r.removeListener("close",a),r.removeListener("upgrading",u)}f.priorWebsocketSuccess=!1,e.once("open",o),e.once("error",s),e.once("close",c),this.once("close",a),this.once("upgrading",u),e.open()}},{key:"onOpen",value:function(){if(this.readyState="open",f.priorWebsocketSuccess="websocket"===this.transport.name,this.emit("open"),this.flush(),"open"===this.readyState&&this.opts.upgrade&&this.transport.pause)for(var t=0,e=this.upgrades.length;t0&&void 0!==arguments[0]?arguments[0]:{};return o(t,{xd:this.xd,xs:this.xs},this.opts),new w(this.uri(),t)}},{key:"doWrite",value:function(t,e){var n=this.request({method:"POST",data:t}),r=this;n.on("success",e),n.on("error",(function(t){r.onError("xhr post error",t)}))}},{key:"doPoll",value:function(){var t=this.request(),e=this;t.on("data",(function(t){e.onData(t)})),t.on("error",(function(t){e.onError("xhr poll error",t)})),this.pollXhr=t}}]),n}(y),w=function(t){a(n,t);var e=f(n);function n(t,r){var o;return i(this,n),(o=e.call(this)).opts=r,o.method=r.method||"GET",o.uri=t,o.async=!1!==r.async,o.data=void 0!==r.data?r.data:null,o.create(),o}return c(n,[{key:"create",value:function(){var t=v(this.opts,"agent","enablesXDR","pfx","key","passphrase","cert","ca","ciphers","rejectUnauthorized");t.xdomain=!!this.opts.xd,t.xscheme=!!this.opts.xs;var e=this.xhr=new h(t),r=this;try{e.open(this.method,this.uri,this.async);try{if(this.opts.extraHeaders)for(var o in e.setDisableHeaderCheck&&e.setDisableHeaderCheck(!0),this.opts.extraHeaders)this.opts.extraHeaders.hasOwnProperty(o)&&e.setRequestHeader(o,this.opts.extraHeaders[o])}catch(t){}if("POST"===this.method)try{e.setRequestHeader("Content-type","text/plain;charset=UTF-8")}catch(t){}try{e.setRequestHeader("Accept","*/*")}catch(t){}"withCredentials"in e&&(e.withCredentials=this.opts.withCredentials),this.opts.requestTimeout&&(e.timeout=this.opts.requestTimeout),this.hasXDR()?(e.onload=function(){r.onLoad()},e.onerror=function(){r.onError(e.responseText)}):e.onreadystatechange=function(){4===e.readyState&&(200===e.status||1223===e.status?r.onLoad():setTimeout((function(){r.onError("number"==typeof e.status?e.status:0)}),0))},e.send(this.data)}catch(t){return void setTimeout((function(){r.onError(t)}),0)}"undefined"!=typeof document&&(this.index=n.requestsCount++,n.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.hasXDR()?this.xhr.onload=this.xhr.onerror=m:this.xhr.onreadystatechange=m,t)try{this.xhr.abort()}catch(t){}"undefined"!=typeof document&&delete n.requests[this.index],this.xhr=null}}},{key:"onLoad",value:function(){var t=this.xhr.responseText;null!==t&&this.onData(t)}},{key:"hasXDR",value:function(){return"undefined"!=typeof XDomainRequest&&!this.xs&&this.enablesXDR}},{key:"abort",value:function(){this.cleanup()}}]),n}(d);function _(){for(var t in w.requests)w.requests.hasOwnProperty(t)&&w.requests[t].abort()}w.requestsCount=0,w.requests={},"undefined"!=typeof document&&("function"==typeof attachEvent?attachEvent("onunload",_):"function"==typeof addEventListener&&addEventListener("onpagehide"in b?"pagehide":"unload",_,!1)),t.exports=k,t.exports.Request=w},function(t,e,n){var r=n(11).PACKET_TYPES,o="function"==typeof Blob||"undefined"!=typeof Blob&&"[object BlobConstructor]"===Object.prototype.toString.call(Blob),i="function"==typeof ArrayBuffer,s=function(t,e){var n=new FileReader;return n.onload=function(){var t=n.result.split(",")[1];e("b"+t)},n.readAsDataURL(t)};t.exports=function(t,e,n){var c,a=t.type,u=t.data;return o&&u instanceof Blob?e?n(u):s(u,n):i&&(u instanceof ArrayBuffer||(c=u,"function"==typeof ArrayBuffer.isView?ArrayBuffer.isView(c):c&&c.buffer instanceof ArrayBuffer))?e?n(u instanceof ArrayBuffer?u:u.buffer):s(new Blob([u]),n):n(r[a]+(u||""))}},function(t,e,n){var r,o=n(11),i=o.PACKET_TYPES_REVERSE,s=o.ERROR_PACKET;"function"==typeof ArrayBuffer&&(r=n(26));var c=function(t,e){if(r){var n=r.decode(t);return a(n,e)}return{base64:!0,data:t}},a=function(t,e){switch(e){case"blob":return t instanceof ArrayBuffer?new Blob([t]):t;case"arraybuffer":default:return t}};t.exports=function(t,e){if("string"!=typeof t)return{type:"message",data:a(t,e)};var n=t.charAt(0);return"b"===n?{type:"message",data:c(t.substring(1),e)}:i[n]?t.length>1?{type:i[n],data:t.substring(1)}:{type:i[n]}:s}},function(t,e){!function(){"use strict";for(var t="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",n=new Uint8Array(256),r=0;r>2],i+=t[(3&r[n])<<4|r[n+1]>>4],i+=t[(15&r[n+1])<<2|r[n+2]>>6],i+=t[63&r[n+2]];return o%3==2?i=i.substring(0,i.length-1)+"=":o%3==1&&(i=i.substring(0,i.length-2)+"=="),i},e.decode=function(t){var e,r,o,i,s,c=.75*t.length,a=t.length,u=0;"="===t[t.length-1]&&(c--,"="===t[t.length-2]&&c--);var f=new ArrayBuffer(c),p=new Uint8Array(f);for(e=0;e>4,p[u++]=(15&o)<<4|i>>2,p[u++]=(3&i)<<6|63&s;return f}}()},function(t,e,n){function r(t){return(r="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})(t)}function o(t,e){for(var n=0;n';n=document.createElement(t)}catch(t){(n=document.createElement("iframe")).name=r.iframeId,n.src="javascript:0"}n.id=r.iframeId,r.form.appendChild(n),r.iframe=n}this.form.action=this.uri(),a(),t=t.replace(d,"\\\n"),this.area.value=t.replace(y,"\\n");try{this.form.submit()}catch(t){}this.iframe.attachEvent?this.iframe.onreadystatechange=function(){"complete"===r.iframe.readyState&&c()}:this.iframe.onload=c}},{key:"supportsBinary",get:function(){return!1}}])&&o(e.prototype,n),a}(l);t.exports=b},function(t,e,n){function r(t){return(r="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})(t)}function o(t,e){for(var n=0;n0&&t.jitter<=1?t.jitter:0,this.attempts=0}t.exports=n,n.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)},n.prototype.reset=function(){this.attempts=0},n.prototype.setMin=function(t){this.ms=t},n.prototype.setMax=function(t){this.max=t},n.prototype.setJitter=function(t){this.jitter=t}}])}}]); -//# sourceMappingURL=307.js.map \ No newline at end of file diff --git a/client/chunk/307.js.LICENSE.txt b/client/chunk/307.js.LICENSE.txt deleted file mode 100644 index 6bbf2a81..00000000 --- a/client/chunk/307.js.LICENSE.txt +++ /dev/null @@ -1,5 +0,0 @@ -/*! - * Socket.IO v3.0.4 - * (c) 2014-2020 Guillermo Rauch - * Released under the MIT License. - */ diff --git a/client/chunk/307.js.br b/client/chunk/307.js.br deleted file mode 100644 index acc90ca5d0549046991da9b3f57996c6b6c0e2a7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12969 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"use strict";s.d(e,{r:()=>a});var r,i=s(164),o=s(139);class a{constructor(t){Object.freeze(t),this.static=t.Grid,this.dimensions=t.dimensions,this.area=t.Grid.getArea(t.dimensions),i.R.propNoWrite(this,"static","dimensions")}reset(){this.forEach((t=>{this.write(t.coord,{occId:o.J5.Id.NULL,char:"",seq:"",health:0})}))}getAllAltDestsThan(t){return Array.from(new Set(this.tileSourcesTo(t).flatMap((t=>this.tileDestsFrom(t.coord)))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}static getSpawnCoords(t,e){const s=new Set;return t.map((t=>{const r=[];for(;t>0;){let i;do{i=this.getRandomCoord(e)}while(s.has(i));r.push(i),s.add(i),t--}return r.freeze()})).freeze()}}(r=a||(a={}))._Constructors={W_EUCLID2:void 0,BEEHIVE:void 0},r.getImplementation=t=>r._Constructors[t],Object.freeze(a),Object.freeze(a.prototype)},216:(t,e,s)=>{"use strict";s.d(e,{v:()=>r});var r,i=s(164),o=s(810);class a{constructor(t){this.dash=t.dash,this.bash=t.bash,Object.freeze(this)}toCoord(){}round(){const t=Math.floor(this.dash),e=Math.floor(this.bash),s=t-this.dash,r=e-this.bash;return s>2*r?new a({dash:t+1,bash:e}):s<.5*r?new a({dash:t,bash:e+1}):Math.min(s,r)>.5?new a({dash:t+1,bash:e+1}):new a({dash:t,bash:e})}add(t){return new a({dash:this.dash+t.dash,bash:this.bash+t.bash})}sub(t){return new a({dash:this.dash-t.dash,bash:this.bash-t.bash})}mul(t){return new a({dash:t*this.dash,bash:t*this.bash})}}Object.freeze(a),Object.freeze(a.prototype),function(t){const e=class extends o.r{constructor(t){super(t),this.grid=(void 0).freeze(),new.target===e&&Object.seal(this)}write(t,e){}forEach(t){let e=0;for(const s of this.grid)for(const r of s)t(r,e++)}forEachShuffled(t){}getUntToward(t,e){}getUntAwayFrom(t,e){}getAllAltDestsThan(t){return this.tileDestsFrom(t,2)}getRandomCoordAround(t,e){}dist(t,e){}tileAt(t){}tileDestsFrom(t,e=1){return[].freeze()}tileSourcesTo(t,e=1){}static getArea(t){const e=Math.min(t.fslash,t.bslash),s=Math.max(t.fslash,t.bslash),r=-1+t.dash+e;let i=2*e*(t.dash+r);return i+=(s-e-1)*r,i}static getLatticePatchDiameter(t){if(t<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-t)))/6*2}static getRandomCoord(t){return new a(void 0).toCoord()}};let s=e;s.ambiguityThreshold=18,s.SIZE_LIMITS=i.R.deepFreeze({dash:{min:10,max:50},bslash:{min:10,max:50},fslash:{min:10,max:50}}),s.sizeLimits=e.SIZE_LIMITS,t.Grid=s,i.R.protoNoEnum(s,"tileAt","tileDestsFrom","tileSourcesTo"),Object.freeze(s),Object.freeze(s.prototype)}(r||(r={})),Object.freeze(r)},33:(t,e,s)=>{"use strict";s.d(e,{K:()=>r});var r,i=s(164),o=s(810),a=s(139);class h{constructor(t,e){this.x=t,this.y=e,Object.freeze(this)}static from(t,e){return new h(e%t.width,Math.floor(e/t.width))}toCoord(t){return this.y*t.width+this.x}static distX(t,e,s){let r=Math.abs(e.x-s.x);return rMath.random()-.5)).freeze();for(const s of e)t(this._grid[s],s)}getUntToward(t,e){const s=this.tileDestsFrom(e).filter((t=>t.occId===a.J5.Id.NULL)).map((e=>{const s=this.iacCache[e.coord],r=this.iacCache[t];return{tile:e,iac:s,infNorm:h.infNorm(this.dimensions,s,r).norm,oneNorm:h.oneNorm(this.dimensions,s,r).norm}}));if(0===s.length)return this.tileAt(e);s.sort(((t,e)=>t.infNorm-e.infNorm)),s.length=3,s.sort(((t,e)=>t.oneNorm-e.oneNorm));const r=s[0];for(let t=1;tr.infNorm){s.splice(t);break}if(1===s.length)return r.tile;if(r.infNorm===r.oneNorm){if(h.axialAlignment(this.dimensions,e,t)>.5)return r.tile;s.shift()}return s[Math.floor(s.length*Math.random())].tile}getUntAwayFrom(t,e){const s=this.iacCache[t],r=this.iacCache[e].iSub(s).mod(this.dimensions);return this._grid[r.toCoord(this.dimensions)]}getAllAltDestsThan(t){return this.tileDestsFrom(t,2)}getRandomCoordAround(t,e){const s=this.iacCache[t];return new h(s.x+Math.trunc(2*e*(Math.random()-.5)),s.y+Math.trunc(2*e*(Math.random()-.5))).mod(this.dimensions).toCoord(this.dimensions)}dist(t,e){return h.infNorm(this.dimensions,this.iacCache[t],this.iacCache[e]).norm}tileAt(t){return this._grid[t]}tileDestsFrom(t,e=1){const s=this.iacCache[t];let r=!1,i=!1;const o=this.dimensions.width,a=this.dimensions.height;let h=s.y-e;h<0&&(h+=a,i=!0);let n=s.x-e;n<0&&(n+=o,r=!0);let c=s.y+e+1;c>a&&(c-=a,i=!0);let d=s.x+e+1;d>o&&(d-=o,r=!0);const l=[];if(r){const t=h*o;l.push(...this._grid.slice(t,t+d)),i&&l.push(...this._grid.slice(0,d))}const m=i?a:c,u=2*e+1;for(let t=h;t{"use strict";s.d(e,{T:()=>r});var r,i,o=s(164);(i=r||(r={}))._Constructors={W_EUCLID2:void 0,BEEHIVE:void 0},i.getImplementation=t=>i._Constructors[t],i._mkExtensionProps=function(t){t.setAttribute("role","presentation"),t.translate=!1,t.spellcheck=!1;const e=o.R.html("div"),s=e.attachShadow({mode:"closed"});t.classList.add("_2N_eu47KtEpZi5d2CowzkM"),s.appendChild(t),o.R.Web.adoptStyleSheet(s,"css-common.css"),o.R.Web.adoptStyleSheet(s,"chunk/game-css.css");const r=o.R.html("div",["_2BjCVl5m4MP1W-F8Z9wQNx"]),i=o.R.html("div",["_1QzcWwOXzKGRJ08E7Atc6o"]),a=Object.freeze([r,i]);return Object.freeze({baseElem:e,spotlightElems:a})},Object.freeze(r)},61:(t,e,s)=>{"use strict";s.d(e,{Z:()=>f});var r=s(52),i=s(164),o=s(139),a=s(33);var h,n=(t,e,s)=>{if(!e.has(t))throw TypeError("Cannot "+s)};const c=.4;class d{constructor(t){this.body=i.R.svg("rect"),this._char=i.R.svg("text");const e=2.06*t.x+c,s=2.06*t.y+c;this.body.classList.add("_3bZJ4fE4oboFoXnIoxvMoC");const r=this.body.setAttributeNS.bind(this.body,null);r("x",e+"em"),r("y",s+"em"),this._char.classList.add("_1RIAliHGAPUZnmLFKbeJR0"),this._char.setAttributeNS(null,"x",e+.83+"em"),this._char.setAttributeNS(null,"y",s+.83+"em")}set occId(t){t===o.J5.Id.NULL?delete this.body.dataset.occId:this.body.dataset.occId=t.toString()}set health(t){t>0?this.body.dataset.health=t.toString():delete this.body.dataset.health}set char(t){this._char.textContent=t}}Object.freeze(d),Object.freeze(d.prototype);class l extends a.K.Grid{constructor(t){super(t),h.set(this,void 0);const e=i.R.svg("svg",["_3sIxemHPd1QgnRpmKBX9zJ"]),s=t.dimensions;e.setAttribute("height",2.06*s.height+c+"em"),e.setAttribute("width",2.06*s.width+c+"em");const o=[];var a,l;this.forEach((t=>{const s=new d(this.iacCache[t.coord]);o.push(s),e.appendChild(s.body),e.appendChild(s._char)})),l=o,n(this,a=h,"write to private field"),a.set(this,l);const m=i.R.html("div");m.appendChild(e),Object.assign(this,r.T._mkExtensionProps(m)),Object.seal(this)}write(t,e){super.write(t,e);const s=(r=this,o=h,n(r,o,"read from private field"),o.get(r))[t];var r,o;i.R.hasProp(e,"occId")&&(s.occId=e.occId),i.R.hasProp(e,"health")&&(s.health=e.health),i.R.hasProp(e,"char")&&(s.char=e.char)}}h=new WeakMap,Object.freeze(l),Object.freeze(l.prototype);var m=s(216);class u extends m.v.Grid{constructor(t){super(t),Object.assign(this,r.T._mkExtensionProps(void 0)),Object.seal(this)}write(t,e){}}Object.freeze(u),Object.freeze(u.prototype);const f=()=>{const t=r.T;Object.freeze(Object.assign(t._Constructors,{W_EUCLID2:l,BEEHIVE:u})),Object.freeze(t)}},702:(t,e,s)=>{"use strict";s.d(e,{S:()=>f});var r,i,o,a=s(164),h=s(892),n=s(139),c=s(783),d=s(56),l=(t,e,s)=>{if(!e.has(t))throw TypeError("Cannot "+s)},m=(t,e,s)=>(l(t,e,"read from private field"),s?s.call(t):e.get(t)),u=(t,e,s,r)=>(l(t,e,"write to private field"),r?r.call(t,s):e.set(t,s),s);class f{constructor(t){r.set(this,void 0),i.set(this,void 0),o.set(this,void 0);const{impl:e,desc:s,operatorIds:h}=t;Object.freeze(s),Object.freeze(s.players),s.players.forEach((t=>Object.freeze(t))),Object.freeze(h);const c=e.gridClassLookup(s.coordSys);this.grid=new c({Grid:c,system:s.coordSys,dimensions:s.gridDimensions,players:s.players}),u(this,r,e.onGameBecomeOver),this.langFrontend=n.Uo.GET_FRONTEND_DESC_BY_ID(s.langId);const l=this._createPlayers(s,e,h);this.players=l.players,this.operators=l.operators;{const t=[];this.players.forEach((e=>{t[e.teamId]||(t[e.teamId]=[]),t[e.teamId].push(e)})),this.teams=t.map(((t,e)=>new d.S(e,t)))}a.R.propNoWrite(this,"grid","langFrontend","players","operators","teams"),this.players.forEach((t=>t.onTeamsBootstrapped())),this.setCurrentOperator(0)}reset(){this.grid.reset(),u(this,o,h.l.Status.PAUSED)}_createPlayers(t,e,s){const r=t.players.map((t=>t.familyId===c.J.Family.HUMAN?s.includes(t.playerId)?new e.OperatorPlayer(this,t):new c.J(this,t):e.RobotPlayer(this,t))).freeze();return Object.freeze({players:r,operators:s.map((t=>r[t])).freeze()})}deserializeResetState(t){a.R.deepFreeze(t),this.grid.forEach(((e,s)=>{this.grid.write(e.coord,t.csps[s])})),t.playerCoords.forEach(((t,e)=>{this.players[e].reset(t)}))}get currentOperator(){return m(this,i)}setCurrentOperator(t){const e=this.operators[t];if(void 0===e)throw new Error("never");this.currentOperator!==e&&u(this,i,e)}get status(){return m(this,o)}statusBecomePlaying(){if(this.status!==h.l.Status.PLAYING){if(this.status!==h.l.Status.PAUSED)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((t=>{t.onGamePlaying()})),u(this,o,h.l.Status.PLAYING)}else console.info("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){this.status!==h.l.Status.PAUSED?this.status!==h.l.Status.OVER&&(this.players.forEach((t=>{t.onGamePaused()})),u(this,o,h.l.Status.PAUSED)):console.info("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){this.status!==h.l.Status.OVER&&(this.players.forEach((t=>{t.onGameOver()})),u(this,o,h.l.Status.OVER),m(this,r).call(this),console.info("game is over!"))}commitTileMods(t,e,s=!0){const r=this.grid.tileAt(t);void 0!==e.seq&&s&&this.operators.forEach((t=>{this.grid.tileDestsFrom(t.coord).includes(r)&&t.seqBufferAcceptKey(void 0)})),this.grid.write(t,e)}commitStateChange(t,e){a.R.deepFreeze(t);const s=this.players[t.initiator];void 0===t.rejectId?(Object.entries(t.tiles).freeze().forEach((([t,e])=>{this.commitTileMods(parseInt(t),e)})),Object.entries(t.players).freeze().forEach((([t,e])=>{const s=this.players[parseInt(t)];s.reqBuffer.acceptOldest(),s.health=e.health,void 0!==e.coord&&(this.grid.write(s.coord,{occId:c.J.Id.NULL}),this.grid.write(e.coord,{occId:s.playerId}),s.setCoord(e.coord))}))):s.reqBuffer.reject(t.rejectId,s.coord)}}r=new WeakMap,i=new WeakMap,o=new WeakMap,a.R.protoNoEnum(f,"_createPlayers"),Object.freeze(f),Object.freeze(f.prototype)},46:(t,e,s)=>{"use strict";s.d(e,{i:()=>d});var r,i,o=s(892),a=s(783),h=(t,e,s)=>{if(!e.has(t))throw TypeError("Cannot "+s)},n=(t,e,s)=>(h(t,e,"read from private field"),s?s.call(t):e.get(t)),c=(t,e,s,r)=>(h(t,e,"write to private field"),r?r.call(t,s):e.set(t,s),s);class d extends a.J{constructor(t,e){super(t,e),r.set(this,void 0),i.set(this,void 0),Object.seal(this),c(this,i,this.game.langFrontend.remapFunc)}reset(t){super.reset(t),c(this,r,"")}get seqBuffer(){return n(this,r)}processKeyboardInput(t){this.game.status!==o.l.Status.PLAYING||this.reqBuffer.isFull||(" "===t.key?this.coord!==this.prevCoord&&this.makeMovementRequest(this.game.grid.getUntAwayFrom(this.prevCoord,this.coord).coord,a.J.MoveType.BOOST):1!==t.key.length||t.repeat||this.seqBufferAcceptKey(t.key))}seqBufferAcceptKey(t){const e=this.game.grid.tileDestsFrom(this.reqBuffer.predictedCoord).filter((t=>t.occId===a.J.Id.NULL));if(0!==e.length)if(void 0!==t){t=n(this,i).call(this,t);for(let s=this.seqBuffer+t;s.length;s=s.substring(1)){const t=e.find((t=>t.seq.startsWith(s)));if(void 0!==t)return c(this,r,s),void(t.seq===s&&this.makeMovementRequest(t.coord,"NORMAL"))}c(this,r,"")}else e.find((t=>t.seq.startsWith(this.seqBuffer)))||c(this,r,"")}setCoord(t){c(this,r,""),super.setCoord(t)}}r=new WeakMap,i=new WeakMap,Object.freeze(d),Object.freeze(d.prototype)}}]); +//# sourceMappingURL=5.js.map \ No newline at end of file diff --git a/client/chunk/5.js.br b/client/chunk/5.js.br new file mode 100644 index 0000000000000000000000000000000000000000..7fa72913029c609fc05af2189dc2124e7af3b09e GIT binary patch literal 4338 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 literal 0 HcmV?d00001 diff --git a/client/chunk/5.js.map b/client/chunk/5.js.map new file mode 100644 index 00000000..dc1f1e42 --- /dev/null +++ b/client/chunk/5.js.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://capswalk/./src/base/floor/Grid.ts","webpack://capswalk/./src/base/floor/impl/Beehive/System.ts","webpack://capswalk/./src/base/floor/impl/Euclid2/System.ts","webpack://capswalk/./src/base/floor/visible/VisibleGrid.ts","webpack://capswalk/./src/base/floor/visible/grid.m.css?f02d","webpack://capswalk/./src/base/game/player/player.m.css?26a8","webpack://capswalk/./src/base/floor/impl/Euclid2/Visible.ts","webpack://capswalk/./src/base/floor/impl/Euclid2/style.m.css?1fbd","webpack://capswalk/./src/base/floor/impl/Beehive/Visible.ts","webpack://capswalk/./src/base/game/ctormaps/CmapBrowser.ts","webpack://capswalk/./src/base/game/gameparts/GameMirror.ts","webpack://capswalk/./src/base/game/player/OperatorPlayer.ts"],"names":["desc","Object","freeze","this","static","Grid","dimensions","area","getArea","forEach","tile","write","coord","occId","char","seq","health","originCoord","Array","from","Set","tileSourcesTo","flatMap","sourceToTarget","tileDestsFrom","getRandomCoord","teamSizes","avoidSet","map","numMembers","teamSpawnCoords","has","push","add","_Constructors","getImplementation","coordSys","prototype","Beehive","IAC","dash","bash","floorDash","Math","floor","floorBash","d","b","min","other","scalar","super","grid","seal","changes","consumer","i","row","intendedDest","sourceCoord","_avoidCoord","_sourceCoord","origin","radius","source","dest","dim","shorterSide","fslash","bslash","longerSide","max","width","RangeError","sqrt","toCoord","ambiguityThreshold","SIZE_LIMITS","sizeLimits","WrappedEuclid2","x","y","i1","i2","dist","abs","wrap","height","dX","distX","dY","distY","norm","wrapX","wrapY","_i1","_i2","sub","_grid","iacCache","assign","create","indices","sort","a","random","index","options","filter","tileIac","destIac","iac","infNorm","oneNorm","length","tileAt","ta","tb","best","splice","axialAlignment","shift","avoid","iSub","mod","_origin","trunc","W","H","t","l","r","dests","_t","slice","b1","sliceLength","begin","VisibleGrid","_mkExtensionProps","tiles","setAttribute","translate","spellcheck","base","JsUtils","root","attachShadow","mode","classList","appendChild","shortSpotlight","longSpotlight","spotlightElems","baseElem","GAP","VisibleTile","body","_char","xOffset","yOffset","bodyAttr","setAttributeNS","bind","WIDTH","playerId","dataset","toString","textContent","Euclid2VisibleGrid","System","svg","vTile","wrapper","BeehiveVisibleGrid","VGr","args","impl","operatorIds","players","gridClass","gridClassLookup","system","gridDimensions","onGameBecomeOver","langFrontend","langId","_createPlayers","operators","teams","player","teamId","teammateArray","onTeamsBootstrapped","setCurrentOperator","reset","gameDesc","implArgs","pDesc","familyId","includes","OperatorPlayer","RobotPlayer","ser","csps","playerCoords","nextOperatorIndex","nextOperator","Error","currentOperator","status","onGamePlaying","console","info","onGamePaused","onGameOver","doCheckOperatorSeqBuffer","op","seqBufferAcceptKey","socket","initiator","rejectId","entries","commitTileMods","parseInt","pid","reqBuffer","acceptOldest","setCoord","reject","GameMirror","game","remapFunc","event","isFull","key","prevCoord","makeMovementRequest","getUntAwayFrom","repeat","unts","predictedCoord","newSeqBuffer","seqBuffer","substring","possibleTarget","find","startsWith"],"mappings":"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","file":"chunk/5.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/colour-schemes.css b/client/chunk/colour-schemes.css new file mode 100644 index 00000000..26e20913 --- /dev/null +++ b/client/chunk/colour-schemes.css @@ -0,0 +1,2 @@ +[data-sk-colour-scheme=murky-dive]{--colour-mainFg:#c3c5ce;--colour-mainBg:#336465;--colour-tileFg:#e7efef;--colour-tileBg:#283e3f;--colour-tileBd:#fff;--colour-healthFg:#1d3633;--colour-healthBg:#37dfc6;--colour-pFaceMe:#03f9ed;--colour-pFaceMeOppo:#898697;--colour-pFaceTeammate:#fba;--colour-pFaceImtlTeammate:#ffcabd;--colour-pFaceOpponent:#ff4f6c;--colour-pFaceImtlOpponent:#ff6d85}[data-sk-colour-scheme=smooth-stone]{--colour-mainFg:#c3c5ce;--colour-mainBg:#72888d;--colour-tileFg:#a2b6bb;--colour-tileBg:#546164;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#398f5a;--colour-pFaceMe:#43aec9;--colour-pFaceMeOppo:#5a5f9c;--colour-pFaceTeammate:#bdae58;--colour-pFaceImtlTeammate:#f8df50;--colour-pFaceOpponent:#a34e59;--colour-pFaceImtlOpponent:#e23fa3} +/*# sourceMappingURL=colour-schemes.css.map*/ \ No newline at end of file diff --git a/client/chunk/colour-schemes.css.map b/client/chunk/colour-schemes.css.map new file mode 100644 index 00000000..74706965 --- /dev/null +++ b/client/chunk/colour-schemes.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://capswalk/./src/client/colours/schemes/murky-dive.css","webpack://capswalk/./src/client/colours/schemes/smooth-stone.css"],"names":[],"mappings":"AAAA,mCACC,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,oBAAwB,CACxB,yBAA0B,CAC1B,yBAA0B,CAC1B,wBAAyB,CACzB,4BAA6B,CAC7B,2BAA+B,CAC/B,kCAAmC,CACnC,8BAA+B,CAC/B,kCACD,CCdA,qCACC,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,oBAAwB,CACxB,yBAA0B,CAC1B,yBAA0B,CAC1B,wBAAyB,CACzB,4BAA6B,CAC7B,8BAA+B,CAC/B,kCAAmC,CACnC,8BAA+B,CAC/B,kCACD","file":"chunk/colour-schemes.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/colour-schemes.js b/client/chunk/colour-schemes.js new file mode 100644 index 00000000..b016ffcb --- /dev/null +++ b/client/chunk/colour-schemes.js @@ -0,0 +1 @@ +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[122],{115:(s,a,c)=>{"use strict";c.r(a)},622:(s,a,c)=>{"use strict";c.r(a)}}]); \ No newline at end of file diff --git a/client/chunk/game-css.css b/client/chunk/game-css.css deleted file mode 100644 index 794b7242..00000000 --- a/client/chunk/game-css.css +++ /dev/null @@ -1,2 +0,0 @@ -.tile-m_this_3XULG{--border-width:0.14em;--border-radius:0.35em;pointer-events:none;contain:size style}.tile-m_this_3XULG *{height:100%;width:100%}.tile-m_char_2hddM{box-sizing:border-box;border:var(--border-width) solid transparent;border-radius:var(--border-radius);contain:strict;background-color:var(--colour-tileBg);overflow:hidden hidden;display:grid;align-items:center}.tile-m_char_2hddM>*{height:auto}.tile-m_this_3XULG[data-health] .tile-m_char_2hddM{z-index:11;border-color:var(--colour-tileBd);color:var(--colour-healthFg);background-color:var(--colour-healthBg);transition-property:color,background-color;transition-duration:.5s;transition-timing-function:ease-in}.grid-m_impl-body_3Sgh6{z-index:0;contain:content;position:static;color:var(--colour-tileFg);height:fit-content;width:fit-content;padding:.4em;text-rendering:optimizeSpeed}.player-m_this_3JbtP{--colour-spotlight:var(--colour-mainBg);contain:size}.player-m_face_3u8M-{pointer-events:auto;box-sizing:border-box;border:var(--border-width) solid transparent;border-radius:var(--border-radius);z-index:11;border-color:var(--colour-tileBd);contain:strict;transition:background-color .7s ease-in-out}.player-m_spotlight-long_1QzcW,.player-m_spotlight-short_2BjCV{will-change:transform}.player-m_this_3JbtP[data-face=me]>.player-m_face_3u8M-{z-index:21;will-change:transform}.player-m_downed-overlay_3e386{z-index:12;background-color:red;opacity:.2}.player-m_this_3JbtP[data-downed=no] .player-m_downed-overlay_3e386{visibility:hidden}@keyframes player-m_anim-frames-player__on-move_3csK2{0%{transform:scale(1.1)}37%{transform:scale(1.3)}}.player-m_spotlight-short_2BjCV{z-index:10;background-image:radial-gradient(farthest-side,transparent 21%,46%,var(--colour-spotlight));padding:1400%;border:100vmax solid var(--colour-spotlight)}.player-m_spotlight-long_1QzcW{z-index:20;background-image:radial-gradient(farthest-side,transparent 15%,var(--colour-spotlight));padding:1700%;border:100vmax solid var(--colour-spotlight);opacity:.92}@media print{.player-m_spotlight-long_1QzcW,.player-m_spotlight-short_2BjCV{visibility:hidden}}.player-m_this_3JbtP[data-face=me]>.player-m_face_3u8M-{background-color:var(--colour-pFaceMe)}.player-m_this_3JbtP[data-face=meOppo]>.player-m_face_3u8M-{background-color:var(--colour-pFaceMeOppo)}.player-m_this_3JbtP[data-face=teammate]>.player-m_face_3u8M-{background-color:var(--colour-pFaceTeammate)}.player-m_this_3JbtP[data-face=opponent]>.player-m_face_3u8M-{background-color:var(--colour-pFaceOpponent)}.player-m_this_3JbtP[data-face=teammate][data-downed=team]>.player-m_face_3u8M-{background-color:var(--colour-pFaceImtlTeammate)}.player-m_this_3JbtP[data-face=opponent][data-downed=team]>.player-m_face_3u8M-{background-color:var(--colour-pFaceImtlOpponent)}.style-m_grid_3sIxe{--track-size:1.67em;display:grid;grid-template-columns:repeat(var(--euclid2-grid-width),var(--track-size));grid-auto-rows:var(--track-size)}.style-m_grid_3sIxe>*{margin:5%;scroll-snap-align:center} -/*# sourceMappingURL=game-css.css.map*/ \ No newline at end of file diff --git a/client/chunk/game-css.css.map b/client/chunk/game-css.css.map deleted file mode 100644 index d354f84e..00000000 --- a/client/chunk/game-css.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/floor/tile.m.css","webpack://snakey3/./src/base/floor/grid.m.css","webpack://snakey3/./src/base/game/player/player.m.css","webpack://snakey3/./src/base/floor/impl/Euclid2/style.m.css"],"names":[],"mappings":"AACA,mBACC,qBAAsB,CACtB,sBAAuB,CAGvB,mBAAoB,CACpB,kBACD,CACA,qBACC,WAAY,CAAE,UACf,CAEA,mBACC,qBAAsB,CACtB,4CAA6C,CAC7C,kCAAmC,CAGnC,cAAsB,CACtB,qCAAsC,CACtC,sBAA6B,CAC7B,YAAoB,CACpB,kBAND,CAQA,qBACC,WACD,CACA,mDACC,UAAoB,CACpB,iCAAsC,CACtC,4BAAwC,CACxC,uCAAwC,CAExC,0CAA4C,CAC5C,uBAAyB,CACzB,kCACD,CCpCA,wBACC,SAAa,CACb,eAAmB,CACnB,eAAkB,CAClB,0BAAgC,CAChC,kBAAuB,CACvB,iBAAuB,CACvB,YAAiB,CACjB,4BACD,CCTA,qBAOC,uCAAwC,CACxC,YACD,CACA,qBACC,mBAAuB,CACvB,qBAAsB,CACtB,4CAA6C,CAC7C,kCAAmC,CAGnC,UAAkB,CAClB,iCAAoC,CACpC,cAAsB,CACtB,2CALD,CAOA,+DAEC,qBACD,CACA,wDACC,UAAkB,CAMlB,qBACD,CACA,+BACC,UAAW,CACX,oBAAqB,CACrB,UACD,CACA,oEACC,iBACD,CASI,sDACF,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CAC9B,CAQA,gCACC,UAAW,CACX,2FAGC,CACD,aAAiB,CACjB,4CACD,CACA,+BACC,UAAW,CACX,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACD,CACA,aAIC,+DACC,iBACD,CACD,CAGA,wDAEC,sCACD,CACA,4DAEC,0CACD,CACA,8DAEC,4CACD,CACA,8DAEC,4CACD,CACA,gFAEC,gDACD,CACA,gFAEC,gDACD,CClHA,oBACC,mBAAoB,CACpB,YAAgB,CAChB,yEACqD,CACrD,gCACD,CACA,sBACC,SAAc,CACd,wBACD","file":"chunk/game-css.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game-css.js b/client/chunk/game-css.js deleted file mode 100644 index 81f75445..00000000 --- a/client/chunk/game-css.js +++ /dev/null @@ -1,2 +0,0 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[68],{601:(s,e,t)=>{"use strict";t.d(e,{Z:()=>r});const r={"impl-body":"grid-m_impl-body_3Sgh6"}},344:(s,e,t)=>{"use strict";t.d(e,{Z:()=>r});const r={grid:"style-m_grid_2nYrT"}},518:(s,e,t)=>{"use strict";t.d(e,{Z:()=>r});const r={grid:"style-m_grid_3sIxe"}},749:(s,e,t)=>{"use strict";t.d(e,{Z:()=>r});const r={this:"tile-m_this_3XULG",char:"tile-m_char_2hddM"}},415:(s,e,t)=>{"use strict";t.d(e,{Z:()=>r});const r={this:"player-m_this_3JbtP",face:"player-m_face_3u8M-","spotlight-short":"player-m_spotlight-short_2BjCV","spotlight-long":"player-m_spotlight-long_1QzcW","downed-overlay":"player-m_downed-overlay_3e386","anim-frames-player__on-move":"player-m_anim-frames-player__on-move_3csK2"}}}]); -//# sourceMappingURL=game-css.js.map \ No newline at end of file diff --git a/client/chunk/game-css.js.map b/client/chunk/game-css.js.map deleted file mode 100644 index 0289b590..00000000 --- a/client/chunk/game-css.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/floor/grid.m.css?0f27","webpack://snakey3/./src/base/floor/impl/Beehive/style.m.css","webpack://snakey3/./src/base/floor/impl/Euclid2/style.m.css?7d82","webpack://snakey3/./src/base/floor/tile.m.css?a7d5","webpack://snakey3/./src/base/game/player/player.m.css?e09a"],"names":[],"mappings":"gHACA,SAAgB,YAAY,2B,4CCA5B,SAAgB,KAAO,uB,4CCAvB,SAAgB,KAAO,uB,4CCAvB,SAAgB,KAAO,oBAAoB,KAAO,sB,4CCAlD,SAAgB,KAAO,sBAAsB,KAAO,sBAAsB,kBAAkB,iCAAiC,iBAAiB,gCAAgC,iBAAiB,gCAAgC,8BAA8B","file":"chunk/game-css.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/offline.css b/client/chunk/game/offline.css new file mode 100644 index 00000000..064ed2f0 --- /dev/null +++ b/client/chunk/game/offline.css @@ -0,0 +1,2 @@ +._2N_eu47KtEpZi5d2CowzkM{contain:content;color:var(--colour-tileFg);height:fit-content;width:fit-content;padding:.4em;text-rendering:optimizeSpeed}._3JbtPbIjLTUiQJTU8n-H7C{--colour-spotlight:var(--colour-mainBg);contain:size}._3u8M-CC4Px9o6vllq-e_Uk{pointer-events:auto;box-sizing:border-box;border:var(--border-width) solid transparent;border-radius:var(--border-radius);z-index:11;border-color:var(--colour-tileBd);contain:strict;transition:background-color .7s ease-in-out}._1QzcWwOXzKGRJ08E7Atc6o,._2BjCVl5m4MP1W-F8Z9wQNx{will-change:transform}._3JbtPbIjLTUiQJTU8n-H7C[data-face=me]>._3u8M-CC4Px9o6vllq-e_Uk{z-index:21;will-change:transform}._3e386DsWFKSsP26EIeKIUv{z-index:12;background-color:red;opacity:.2}._3JbtPbIjLTUiQJTU8n-H7C[data-downed=no] ._3e386DsWFKSsP26EIeKIUv{visibility:hidden}@keyframes _3csK2auwtiV8TtCo1YGszT{0%{transform:scale(1.1)}37%{transform:scale(1.3)}}._2BjCVl5m4MP1W-F8Z9wQNx{z-index:10;background-image:radial-gradient(farthest-side,transparent 21%,46%,var(--colour-spotlight));padding:1400%;border:100vmax solid var(--colour-spotlight)}._1QzcWwOXzKGRJ08E7Atc6o{z-index:20;background-image:radial-gradient(farthest-side,transparent 15%,var(--colour-spotlight));padding:1700%;border:100vmax solid var(--colour-spotlight);opacity:.92}@media print{._1QzcWwOXzKGRJ08E7Atc6o,._2BjCVl5m4MP1W-F8Z9wQNx{visibility:hidden}}._3JbtPbIjLTUiQJTU8n-H7C[data-face=me]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceMe)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=meOppo]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceMeOppo)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=teammate]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceTeammate)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=opponent]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceOpponent)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=teammate][data-downed=team]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceImtlTeammate)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=opponent][data-downed=team]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceImtlOpponent)}._3sIxemHPd1QgnRpmKBX9zJ{contain:strict;display:grid;grid-template-columns:repeat(var(--euclid2-grid-width),1.67em);grid-auto-rows:1.67em}._3sIxemHPd1QgnRpmKBX9zJ>*{margin:5%;scroll-snap-align:center}._3bZJ4fE4oboFoXnIoxvMoC{height:1.67em;width:1.67em;rx:.4em;stroke-width:.18em;fill:var(--colour-tileBg);stroke:var(--colour-tileBg)}._1RIAliHGAPUZnmLFKbeJR0{pointer-events:none;alignment-baseline:central;text-anchor:middle;fill:var(--colour-tileFg)} +/*# sourceMappingURL=offline.css.map*/ \ No newline at end of file diff --git a/client/chunk/game/offline.css.map b/client/chunk/game/offline.css.map new file mode 100644 index 00000000..1d232feb --- /dev/null +++ b/client/chunk/game/offline.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://capswalk/./src/base/floor/visible/grid.m.css","webpack://capswalk/./src/base/game/player/player.m.css","webpack://capswalk/./src/base/floor/impl/Euclid2/style.m.css"],"names":[],"mappings":"AACA,yBACC,eAAmB,CACnB,0BAAgC,CAChC,kBAAuB,CACvB,iBAAuB,CACvB,YAAiB,CACjB,4BACD,CCPA,yBAOC,uCAAwC,CACxC,YACD,CACA,yBACC,mBAAuB,CACvB,qBAAsB,CACtB,4CAA6C,CAC7C,kCAAmC,CAGnC,UAAkB,CAClB,iCAAoC,CACpC,cAAsB,CACtB,2CALD,CAOA,kDAEC,qBACD,CACA,gEACC,UAAkB,CAMlB,qBACD,CACA,yBACC,UAAW,CACX,oBAAqB,CACrB,UACD,CACA,kEACC,iBACD,CASI,mCACF,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CAC9B,CAQA,yBACC,UAAW,CACX,2FAGC,CACD,aAAiB,CACjB,4CACD,CACA,yBACC,UAAW,CACX,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACD,CACA,aAIC,kDACC,iBACD,CACD,CAGA,gEAEC,sCACD,CACA,oEAEC,0CACD,CACA,sEAEC,4CACD,CACA,sEAEC,4CACD,CACA,wFAEC,gDACD,CACA,wFAEC,gDACD,CCnHA,yBACC,cAAe,CACf,YAAa,CACb,8DAAgE,CAChE,qBACD,CACA,2BACC,SAAU,CACV,wBACD,CAEA,yBACC,aAAc,CACd,YAAa,CACb,OAAS,CACT,kBAAoB,CACpB,yBAA0B,CAC1B,2BACD,CAEA,yBACC,mBAAoB,CACpB,0BAA2B,CAC3B,kBAAmB,CACnB,yBACD","file":"chunk/game/offline.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/offline.js b/client/chunk/game/offline.js index 3f0a6763..e94122bf 100644 --- a/client/chunk/game/offline.js +++ b/client/chunk/game/offline.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[755],{115:(e,t,r)=>{"use strict";r.d(t,{U:()=>l});var i,s=r(632),o=r(532),a=r(903);!function(e){var t;class r{constructor(){Object.defineProperty(this,"seq",{enumerable:!0,configurable:!0,writable:!0,value:""}),Object.defineProperty(this,"children",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"carryHits",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.children=[],s.R.propNoWrite(this,"children")}reset(){for(const e of this.children)e.reset();this.carryHits=0}_finalize(){Object.freeze(this.children);for(const e of this.children)e._finalize()}getLeaves(){const e=[];return this._rGetLeaves(e),e}_rGetLeaves(e){if(this.children.length)for(const t of this.children)t._rGetLeaves(e);else e.push(this)}simpleView(){return this.children}static CREATE_TREE_MAP(t,o){var a;const l=e.GET_SCALE_WEIGHT_FUNC(o,t),h=new Map;Object.entries(t).forEach((([e,{seq:t,weight:r}])=>{const i=new n(e,l(r)),s=h.get(t);void 0!==s?s.push(i):h.set(t,[i])}));const c=new r;s.R.propNoWrite(c,"children");let d=c;for(const[e,t]of Array.from(h).sort((([e],[t])=>ee.carryHits-t.carryHits}),e.ParentNode=r,s.R.protoNoEnum(r,"_finalize","_rGetLeaves"),Object.freeze(r),Object.freeze(r.prototype);class i extends r{constructor(e,r,i){super(),Object.defineProperty(this,"parent",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"seq",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),t.set(this,void 0),this.seq=r,(0,a.YH)(this,t,i),this.parent=e,s.R.propNoWrite(this,"seq","parent")}_finalize(){Object.freeze((0,a.Q_)(this,t)),super._finalize()}reset(){super.reset();for(const e of(0,a.Q_)(this,t))e.reset(),this.incrHits(e,Math.random()*o.Uo.CHAR_HIT_COUNT_SEED_CEILING)}chooseOnePair(){let e=(0,a.Q_)(this,t)[0];for(const r of(0,a.Q_)(this,t))r.hitse.simpleView()));return Object.assign(Object.create(null),{seq:this.seq,chars:1===e.length?e[0]:e,kids:this.children.map((e=>e.simpleView()))})}}function l(e,t){if(0===e)return e=>1;if(1===e)return e=>e;const r=Object.values(t),i=r.reduce(((e,t)=>e+t.weight),0)/r.length;return t=>Math.pow(t/i,e)}t=new WeakMap,Object.defineProperty(i,"PATH_CMP",{enumerable:!0,configurable:!0,writable:!0,value:(e,t)=>e.ownHits-t.ownHits}),e.ChildNode=i,s.R.protoNoEnum(i,"_finalize","_rIncrHits"),Object.freeze(i),Object.freeze(i.prototype),e.GET_SCALE_WEIGHT_FUNC=l,Object.freeze(l)}(i||(i={})),Object.freeze(i);class n{constructor(e,t){Object.defineProperty(this,"char",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"weightInv",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"hits",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.char=e,this.weightInv=1/t}reset(){this.hits=0}_incrementNumHits(){this.hits+=this.weightInv}simpleView(){return Object.assign(Object.create(null),{char:this.char})}}Object.defineProperty(n,"CMP",{enumerable:!0,configurable:!0,writable:!0,value:(e,t)=>e.hits-t.hits}),Object.freeze(n),Object.freeze(n.prototype);class l extends o.Uo{constructor(e,t){super(),Object.defineProperty(this,"frontendDesc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"treeMap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leafNodes",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.frontendDesc=l.GET_FRONTEND_DESC_BY_ID(e),this.treeMap=i.ParentNode.CREATE_TREE_MAP(Object.getPrototypeOf(this).constructor.BUILD(),t),this.leafNodes=this.treeMap.getLeaves(),s.R.propNoWrite(this,"frontendDesc","treeMap","leafNodes")}get numLeaves(){return this.leafNodes.length}reset(){this.treeMap.reset()}getNonConflictingChar(e){this.leafNodes.sort(i.ParentNode.LEAF_CMP);e:for(const t of this.leafNodes){let r=t;for(let i=t;i;i=i.parent){const t=e.find((e=>e.startsWith(i.seq)));if(t){if(t.length>i.seq.length)break;continue e}i.ownHits(e[t]={seq:t,weight:r},e)),{})}}(t=e.BuildUtils||(e.BuildUtils={}))}(l||(l={})),Object.freeze(l),Object.freeze(l.prototype)},765:(e,t,r)=>{"use strict";r.r(t),r.d(t,{OfflineGame:()=>_});var i=r(242),s=r(903),o=r(632),a=r(115),n=r(825),l=r(157),h=r(477);class c extends h.J5{constructor(e,t){super(e,t),Object.defineProperty(this,"_nextMovementTimerMultiplier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_scheduledMovementCallbackId",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_notifyGameNowPlaying(){super._notifyGameNowPlaying(),this.delayedMovementContinue()}_notifyGameNowPaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_notifyGameNowOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tile.at(e).langSeq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord),this.getNextMoveType()),this.delayedMovementContinue()}delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this.movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){e.of=(t,r)=>{const i=r.familyId;return new e._Constructors[i](t,r)}}(c||(c={})),o.R.protoNoEnum(c,"movementContinue");var d=r(532);class u{constructor(e){Object.defineProperty(this,"entries",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const t=[];for(const r of e)t[r]=new u.Entry;this.entries=t,o.R.propNoWrite(this,"entries")}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){Object.defineProperty(this,"moveCounts",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"totalHealthPickedUp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(d.J5.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(u||(u={})),Object.freeze(u),Object.freeze(u.prototype);var f,g,m,b,p=r(688),v=r(110),y=r(692),O=r(254);class w extends c{constructor(e,t){super(e,t),Object.defineProperty(this,"threatProximity",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"targetProximity",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"behaviour",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),f.set(this,void 0),this.behaviour=Object.freeze(Object.assign({},w.Behaviour.DEFAULT,t.familyArgs)),this.grid=this.game.grid}_afterAllPlayersConstruction(){super._afterAllPlayersConstruction(),this.threatProximity=this.game.teams.filter((e=>e.id!==this.teamId)).flatMap((e=>e.members)),this.targetProximity=[...this.threatProximity],o.R.propNoWrite(this,"threatProximity","targetProximity","behaviour","grid")}reset(e){super.reset(e),(0,s.YH)(this,f,this.coord)}moveTo(e){(0,s.YH)(this,f,this.coord),super.moveTo(e)}computeDesiredDest(){this.threatProximity.sort(((e,t)=>this.grid.minMovesFromTo(e.coord,this.coord)-this.grid.minMovesFromTo(t.coord,this.coord)));for(const e of this.threatProximity){if(this.grid.minMovesFromTo(e.coord,this.coord)>this.behaviour.fearDistance)break;if(!e.status.isDowned&&e.status.health>this.status.health)return this.grid.getUntAwayFrom(e.coord,this.coord).coord}if(this.targetProximity.sort(((e,t)=>this.grid.minMovesFromTo(this.coord,e.coord)-this.grid.minMovesFromTo(this.coord,t.coord))),this.status.isDowned)for(const e of this.targetProximity){if(this.grid.minMovesFromTo(this.coord,e.coord)>this.behaviour.bloodThirstDistance)break;if(e.status.health{v.r._Constructors=Object.freeze({EUCLID2:y.i.Grid,BEEHIVE:O.v.Grid}),Object.freeze(v.r),Object.freeze(v.r.prototype);{const e=c;e._Constructors=Object.freeze({CHASER:w}),Object.freeze(e),Object.freeze(e.prototype)}})();class P extends p.R{constructor(e,t,i){super(e,t,i),Object.defineProperty(this,"averageFreeHealth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"averageFreeHealthPerTile",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"healthCostOfBoost",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),g.set(this,void 0),m.set(this,void 0),Object.defineProperty(this,"lang",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),b.set(this,void 0),Object.defineProperty(this,"scoreInfo",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.averageFreeHealth=i.averageFreeHealthPerTile*this.grid.area,this.averageFreeHealthPerTile=i.averageFreeHealthPerTile,this.healthCostOfBoost=n.l.K.HEALTH_COST_OF_BOOST(this.averageFreeHealthPerTile,this.grid.static.getDiameterOfLatticePatchHavingArea),(0,s.YH)(this,m,new Set),this.scoreInfo=new u(this.players.map((e=>e.playerId))),o.R.propNoWrite(this,"averageFreeHealth","averageFreeHealthPerTile","healthCostOfBoost","scoreInfo"),(0,s.YH)(this,b,r(59)(`./${this.langFrontend.module}.ts`).then((e=>{const t=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),e[this.langFrontend.module]);return this.lang=new t(i.langWeightExaggeration),o.R.propNoWrite(this,"lang"),this.grid.static.getAmbiguityThreshold(),this.lang})))}reset(){const e=Object.create(null,{reset:{get:()=>super.reset}});return(0,s.mG)(this,void 0,void 0,(function*(){yield e.reset.call(this),(0,s.YH)(this,g,0),(0,s.Q_)(this,m).clear(),yield(0,s.Q_)(this,b),this.lang.reset(),this.grid.shuffledForEachTile((e=>{e.setLangCharSeqPair(this.dryRunShuffleLangCharSeqAt(e))})),this.teams.forEach((e=>e.reset()));const t=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((e,r)=>{e.members.forEach(((e,i)=>{e.reset(this.grid.tile.at(t[r][i]))}))})),this.scoreInfo.reset(),Promise.resolve()}))}_createArtifPlayer(e){return c.of(this,e)}dryRunShuffleLangCharSeqAt(e,t=!1){e.setLangCharSeqPair(a.U.CharSeqPair.NULL);let r=this.grid.getDestsFromSourcesTo(e.coord).map((e=>e.langSeq));if(t){const e=a.U.CharSeqPair.NULL.seq;r=r.filter((t=>t!==e))}return Object.freeze(r),this.lang.getNonConflictingChar(r)}get currentFreeHealth(){return(0,s.Q_)(this,g)}get freeHealthTiles(){return(0,s.Q_)(this,m)}dryRunSpawnFreeHealth(e){var t;let r=this.averageFreeHealth-this.currentFreeHealth;if(r<=0)return;const i=[];for(;r>0;){let s;do{s=this.grid.tile.at(this.grid.getRandomCoord())}while(s.isOccupied||i.find((e=>l.u.equals(s.coord,e.coord))));const o=n.l.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random()l.u.equals(s.coord,e.coord))))?r.newFreeHealth=(null!==(t=r.newFreeHealth)&&void 0!==t?t:0)+o:i.push({coord:s.coord,lastKnownUpdateId:1+s.lastKnownUpdateId,newFreeHealth:s.freeHealth+o})}r-=o}return i}executeTileModEvent(e,t=!0){o.R.deepFreeze(e);const r=this.grid.tile.at(e.coord);return(0,s.YH)(this,g,(0,s.Q_)(this,g)+(e.newFreeHealth-r.freeHealth)),0===e.newFreeHealth?(0,s.Q_)(this,m).delete(r):(0,s.Q_)(this,m).add(r),super.executeTileModEvent(e,t),r}managerCheckGamePlayingRequest(e){if(this.status!==n.l.Status.PLAYING)return;const t=this.players[e.playerId];if(!t)throw new Error("No such player exists.");if(e.playerLastAcceptedRequestId!==t.lastAcceptedRequestId)throw new RangeError(e.playerLastAcceptedRequestId{var i={"./Chinese.ts":[216,7,330],"./Emote.ts":[655,9,858],"./English.ts":[891,9,184],"./Japanese.ts":[800,9,410],"./Korean.ts":[3,9,227],"./Ngrams.ts":[492,9,273],"./Numpad.ts":[193,9,683],"./Shell.ts":[521,9,159],"./defs/Chinese.ts":[958,7,704],"./defs/English100.ts":[213,9,885]};function s(e){if(!r.o(i,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=i[e],s=t[0];return r.e(t[2]).then((()=>r.t(s,16|t[1])))}s.keys=()=>Object.keys(i),s.id=59,e.exports=s}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[755],{208:(e,t,s)=>{"use strict";s.d(t,{U:()=>c});var r,i=s(164),o=s(139),a=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},n=(e,t,s)=>(a(e,t,"read from private field"),s?s.call(e):t.get(e));!function(e){var t;const s=class{constructor(e,s="",r){var i,o,n;t.set(this,[]),this.carryHits=0,Object.defineProperty(this,"parent",{enumerable:!0,value:e}),Object.defineProperty(this,"seq",{enumerable:!0,value:s}),Object.defineProperty(this,"children",{enumerable:!0,value:[]}),i=this,o=t,n=Object.freeze(r),a(i,o,"write to private field"),o.set(i,n),Object.seal(this)}get ownHits(){var e,t;return this.carryHits-(null!=(t=null==(e=this.parent)?void 0:e.carryHits)?t:0)}reset(){this.carryHits=0;for(const e of this.children)e.reset();for(const e of n(this,t))e.reset(),this.incrHits(e,Math.random()*o.Uo.CHAR_HIT_COUNT_SEED_CEILING)}getLeaves(){const e=[];return this._rGetLeaves(e),e.freeze()}_rGetLeaves(e){if(this.children.length)for(const t of this.children)t._rGetLeaves(e);else e.push(this)}chooseOnePair(){let e=n(this,t)[0];for(const s of n(this,t))s.hits{const r=new h(e,i(s)),a=o.get(t);void 0!==a?a.push(r):o.set(t,[r])}));const a=[];let n;for(const[e,t]of Array.from(o).seal().sort((([e],[t])=>e1;if(1===e)return e=>e;const s=Object.values(t),r=s.reduce(((e,t)=>e+t.weight),0)/s.length;return t=>Math.pow(t/r,e)}t=new WeakMap,r.LEAF_CMP=(e,t)=>e.carryHits-t.carryHits,e.Node=r,i.R.protoNoEnum(r,"_rGetLeaves","_rIncrHits"),Object.freeze(r),Object.freeze(r.prototype),e.GET_SCALE_WEIGHT_FUNC=c,Object.freeze(c)}(r||(r={})),Object.freeze(r);class h{constructor(e,t){this.char=e,this.hits=0,this.char=e,Object.defineProperty(this,"weightInv",{enumerable:!0,value:1/t}),Object.seal(this)}reset(){this.hits=0}_incrementNumHits(){this.hits+=this.weightInv}}Object.freeze(h),Object.freeze(h.prototype);class c extends o.Uo{constructor(e,t){super(),this.frontendDesc=c.GET_FRONTEND_DESC_BY_ID(e),this.treeRoots=r.Node.CREATE_TREE_MAP(Object.getPrototypeOf(this).constructor.BUILD(),t);const s=this.treeRoots.map((e=>e.getLeaves()));this.leafNodes=s.flat(),this.isolatedMinOpts=s.map((e=>e.length)).sort().slice(0,-1).reduce(((e,t)=>e+t),0),i.R.propNoWrite(this,"frontendDesc","treeRoots","leafNodes","isolatedMinOpts"),Object.seal(this)}reset(){for(const e of this.treeRoots)e.reset()}getNonConflictingChar(e){this.leafNodes.sort(r.Node.LEAF_CMP);e:for(const t of this.leafNodes){let s=t;for(let r=t;void 0!==r;r=r.parent){const t=e.find((e=>e.startsWith(r.seq)));if(t){if(t.length>r.seq.length)break;continue e}r.ownHits(e[t]={seq:t,weight:s},e)),{})}}(c||(c={})),Object.freeze(c),Object.freeze(c.prototype)},303:(e,t,s)=>{"use strict";s.r(t),s.d(t,{OfflineGame:()=>I});var r,i=s(61),o=s(52),a=s(46),n=s(783),h=s(164),c=s(208),d=s(892),l=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},p=(e,t,s)=>(l(e,t,"read from private field"),s?s.call(e):t.get(e)),u=(e,t,s,r)=>(l(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);class f{constructor(e,t){r.set(this,0),this.tiles=new Map;const s=d.l.K._HEALTH_COST_OF_BOOST(e.averageHealthPerTile,t.getLatticePatchDiameter);this.K=Object.freeze({avg:e.averageHealthPerTile*t.getArea(e.gridDimensions),avgPerTile:e.averageHealthPerTile,costOfBoost:e=>s/e.seq.length}),h.R.propNoWrite(this,"K"),Object.seal(this)}get currentAmount(){return p(this,r)}reset(){u(this,r,0),this.tiles.clear()}add(e){u(this,r,p(this,r)+e)}}r=new WeakMap,Object.freeze(f),Object.freeze(f.prototype);class g{constructor(e){const t=[];for(const s of e)t[s]=new g.Entry;this.entries=t,h.R.propNoWrite(this,"entries"),Object.seal(this)}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(n.J.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(g||(g={})),Object.freeze(g),Object.freeze(g.prototype);var m=s(810),v=s(702),y=s(33),b=s(216),O=(e,t,s)=>(((e,t,s)=>{if(!t.has(e))throw TypeError("Cannot read from private field")})(e,t),s?s.call(e):t.get(e));class _ extends n.J{constructor(e,t){super(e,t),this._nextMovementTimerMultiplier=void 0,this._scheduledMovementCallbackId=void 0}onGamePlaying(){super.onGamePlaying(),this._delayedMovementContinue()}onGamePaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}onGameOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tileAt(e).seq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord).coord,this.getNextMoveType()),this._delayedMovementContinue()}_delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this._movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){var t;e._Constructors={CHASER:void 0},e.of=(t,s)=>{const r=s.familyId;return new e._Constructors[r](t,s)};class s extends e{constructor(){super(...arguments),t.set(this,{which:0,reuses:0,target:void 0})}reset(e){super.reset(e),O(this,t).which=0,O(this,t).reuses=0,O(this,t).target=void 0}computeDesiredDest(){const e=O(this,t);if(void 0!==e.target&&e.reuses<=d.l.K._ROBOT_PRIORITY_MAX_REUSES){const t=this._behaviours[e.which].call(this,e.target);if(void 0!==t)return e.reuses++,t.dest}e.reuses=0;for(let t=0;te.id!==this.teamId)).flatMap((e=>e.members)).seal(),this.prey=[...this.pred].seal(),h.R.propNoWrite(this,"pred","prey")}_bhvrEvadePred(e){if(void 0!==e)return{dest:this.grid.getUntAwayFrom(this.game.players[e].coord,this.coord).coord};this.pred.sort(((e,t)=>this.grid.dist(e.coord,this.coord)-this.grid.dist(t.coord,this.coord)));for(const e of this.pred){if(this.grid.dist(e.coord,this.coord)>this.params.fearDistance)break;if(!e.isDowned&&e.health>this.health)return{dest:this.grid.getUntAwayFrom(e.coord,this.coord).coord,target:e.playerId}}}_bhvrChasePrey(e){if(void 0!==e)return{dest:this.game.players[e].coord};if(this.prey.sort(((e,t)=>this.grid.dist(this.coord,e.coord)-this.grid.dist(this.coord,t.coord))),this.isDowned)for(const e of this.prey){if(this.grid.dist(this.coord,e.coord)>this.params.bloodThirstDistance)break;if(e.health{if(!t.has(e))throw TypeError("Cannot "+s)};(()=>{Object.freeze(Object.assign(m.r._Constructors,{W_EUCLID2:y.K.Grid,BEEHIVE:b.v.Grid})),Object.freeze(m.r);{const e=_;Object.freeze(Object.assign(e._Constructors,{CHASER:E})),Object.freeze(e)}})();class j extends v.S{constructor(e){var t,r,i;super(e),this.lang=void 0,C.set(this,void 0),this.health=new f(e.desc,this.grid.static),this.scoreInfo=new g(this.players.map((e=>e.playerId))),h.R.propNoWrite(this,"health","scoreInfo"),t=this,r=C,i=s(59)(`./${this.langFrontend.module}.ts`).then((t=>{const s=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),t[this.langFrontend.module]);return this.lang=new s(e.desc.langWeightExaggeration),h.R.propNoWrite(this,"lang"),this.lang})),w(t,r,"write to private field"),r.set(t,i)}async reset(){super.reset();const e=Object.freeze({playerCoords:[],csps:[]});var t,s;this.health.reset(),await(t=this,s=C,w(t,s,"read from private field"),s.get(t)),this.lang.reset(),this.grid.forEachShuffled(((t,s)=>{const r=this.dryRunShuffleLangCspAt(t.coord,!0);this.grid.write(t.coord,r),e.csps[s]=r})),this.teams.forEach((e=>e.reset()));const r=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((t,s)=>{t.members.forEach(((t,i)=>{const o=r[s][i];t.reset(o),e.playerCoords[t.playerId]=o}))})),this.scoreInfo.reset(),e}dryRunShuffleLangCspAt(e,t=!1){this.grid.write(e,c.U.CharSeqPair.NULL);let s=this.grid.getAllAltDestsThan(e).map((e=>e.seq)).freeze();if(t){const e=c.U.CharSeqPair.NULL.seq;s=s.filter((t=>t!==e)).freeze()}return this.lang.getNonConflictingChar(s)}dryRunSpawnHealth(e){var t;let s=this.health.K.avg-this.health.currentAmount;if(s<=0)return e;for(;s>0;){let r;do{r=this.grid.tileAt(this.grid.getRandomCoord())}while(r.occId!==n.J.Id.NULL);const i=d.l.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random()_.of(e,t),onGameBecomeOver:e},desc:(n.J.CtorArgs.finalize(t),t),operatorIds:t.players.filter((e=>"HUMAN"===e.familyId)).map((e=>e.playerId))}),Object.seal(this)}setTimeout(e,t,...s){return setTimeout(e,t,s)}cancelTimeout(e){clearTimeout(e)}}Object.freeze(I),Object.freeze(I.prototype)},59:(e,t,s)=>{var r={"./Chinese.ts":[83,7,330],"./Emote.ts":[985,9,858],"./English.ts":[825,9,184],"./Japanese.ts":[885,9,410],"./Korean.ts":[969,9,227],"./Ngrams.ts":[755,9,273],"./Numpad.ts":[444,9,683],"./Shell.ts":[25,9,159],"./defs/Chinese.ts":[711,7,704],"./defs/English100.ts":[589,9,885]};function i(e){if(!s.o(r,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],i=t[0];return s.e(t[2]).then((()=>s.t(i,16|t[1])))}i.keys=()=>Object.keys(r),i.id=59,e.exports=i}}]); //# sourceMappingURL=offline.js.map \ No newline at end of file diff --git a/client/chunk/game/offline.js.br b/client/chunk/game/offline.js.br index 63f63b2d4c973810605e8f90e88072ac563ac33c..5549bc6c5b1ba10e262bbf356fa781b9b6121174 100644 GIT binary patch literal 4611 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 literal 4640 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 W->m46H@9W%?q_Eex)(dyzqTr$-WFy6 diff --git a/client/chunk/game/offline.js.map b/client/chunk/game/offline.js.map index 1dccdcb7..0df6ec0d 100644 --- a/client/chunk/game/offline.js.map +++ b/client/chunk/game/offline.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/LangSeqTreeNode.ts","webpack://snakey3/./src/base/lang/Lang.ts","webpack://snakey3/./src/base/game/player/ArtificialPlayer.ts","webpack://snakey3/./src/base/game/ScoreInfo.ts","webpack://snakey3/./src/base/game/player/artificials/Chaser.ts","webpack://snakey3/./src/base/game/ctormaps/CmapManager.ts","webpack://snakey3/./src/base/game/gameparts/GamepartManager.ts","webpack://snakey3/./src/client/game/OfflineGame.ts","webpack://snakey3/./src/base/lang/impl|lazy|/^/.*/.ts$/|chunkName: lang/[request]|groupOptions: {}|namespace object"],"names":["LangSeqTree","ParentNode","this","children","JsUtils","child","reset","carryHits","Object","freeze","_finalize","leafNodes","_rGetLeaves","length","push","forwardDict","weightScaling","scaleWeight","GET_SCALE_WEIGHT_FUNC","reverseDict","Map","entries","forEach","char","seq","weight","weightedChar","WeightedLangChar","chars","get","undefined","set","rootNode","cursor","Array","from","sort","seqA","seqB","startsWith","parent","newChild","ChildNode","a","b","prototype","sequence","characters","super","incrHits","Math","random","wgtChar","wc","hits","pair","wCharToHit","numTimes","_incrementNumHits","_rIncrHits","weightInv","map","simpleView","assign","create","kids","ogWgt","values","averageWeight","reduce","sum","next","originalWeight","pow","ownHits","Lang","frontendDescId","weightExaggeration","frontendDesc","GET_FRONTEND_DESC_BY_ID","treeMap","CREATE_TREE_MAP","getPrototypeOf","constructor","BUILD","getLeaves","avoid","LEAF_CMP","search_branch","leaf","hitNode","node","superSeq","find","avoidSeq","chooseOnePair","Error","id","displayName","root","numLeaves","BuildUtils","WORD_FOR_WORD","seq2Weight","accumulator","ArtificialPlayer","Player","game","desc","_notifyGameNowPlaying","delayedMovementContinue","cancelTimeout","_scheduledMovementCallbackId","desiredDest","computeDesiredDest","_nextMovementTimerMultiplier","grid","tile","at","langSeq","makeMovementRequest","getUntToward","coord","getNextMoveType","setTimeout","movementContinue","bind","computeNextMovementTimer","of","playerDesc","familyId","_Constructors","ScoreInfo","playerIds","Entry","entry","moveCounts","totalHealthPickedUp","getOwnPropertyNames","key","Chaser","behaviour","Behaviour","DEFAULT","familyArgs","_afterAllPlayersConstruction","threatProximity","teams","filter","team","teamId","flatMap","members","targetProximity","spawnTile","dest","moveTo","pa","pb","minMovesFromTo","threatP","fearDistance","status","isDowned","health","getUntAwayFrom","targetP","bloodThirstDistance","healthReserve","freeHealthTiles","size","wanderingAimlessness","getRandomCoordAround","awayFunc","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Grid","AP","GamepartManager","GamepartEvents","gameType","impl","averageFreeHealth","averageFreeHealthPerTile","area","healthCostOfBoost","Game","static","getDiameterOfLatticePatchHavingArea","Set","scoreInfo","players","player","playerId","langFrontend","module","then","langModule","LangConstructor","export","split","nsps","propName","lang","langWeightExaggeration","getAmbiguityThreshold","clear","shuffledForEachTile","setLangCharSeqPair","dryRunShuffleLangCharSeqAt","spawnPoints","getSpawnCoords","dimensions","teamIndex","member","memberIndex","Promise","resolve","targetTile","doCheckEmptyTiles","getDestsFromSourcesTo","nullSeq","getNonConflictingChar","sameReqOtherModDescs","healthToSpawn","currentFreeHealth","retval","getRandomCoord","isOccupied","Coord","tileHealthToAdd","otherDesc","newFreeHealth","lastKnownUpdateId","freeHealth","doCheckOperatorSeqBuffer","delete","add","executeTileModEvent","playerLastAcceptedRequestId","lastAcceptedRequestId","RangeError","managerCheckGamePlayingRequest","executePlayerMoveEvent","destModDesc","moveIsBoost","moveType","newPlayerHealthValue","playerScoreInfo","newPlayerHealth","newCharSeqPair","tileHealthModDescs","dryRunSpawnFreeHealth","eventId","nextUnusedEventId","sourceP","bubbler","executePlayerBubbleEvent","CHECK_VALID_CTOR_ARGS","args","fr","requiredFields","coordSys","gridDimensions","langId","playerDescs","missingFields","fieldName","field","NaN","parseInt","max","parseFloat","OfflineGame","onGameBecomeOver","gameDesc","tileClass","playerStatusCtor","_ctorBrowserGame","callback","millis","handle","clearTimeout","BrowserGame","webpackAsyncContext","req","__webpack_require__","o","e","code","ids","t","keys","exports"],"mappings":"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","file":"chunk/game/offline.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/LangSeqTreeNode.ts","webpack://capswalk/./src/base/lang/Lang.ts","webpack://capswalk/./src/base/game/gameparts/HealthInfo.ts","webpack://capswalk/./src/base/game/gameparts/ScoreInfo.ts","webpack://capswalk/./src/base/game/player/RobotPlayer.ts","webpack://capswalk/./src/base/game/player/robots/Chaser.ts","webpack://capswalk/./src/base/game/gameparts/GameManager.ts","webpack://capswalk/./src/base/game/ctormaps/CmapManager.ts","webpack://capswalk/./src/client/game/OfflineGame.ts","webpack://capswalk/./src/base/lang/impl|lazy|/^/.*/.ts$/|chunkName: lang/[request]|groupOptions: {}|namespace object"],"names":["LangSeqTree","parent","seq","characters","carryHits","Object","defineProperty","this","enumerable","value","freeze","seal","child","children","reset","char","incrHits","Math","random","leafNodes","_rGetLeaves","length","push","wgtChar","wc","hits","pair","wCharToHit","numTimes","_incrementNumHits","_rIncrHits","weightInv","forwardDict","weightScaling","scaleWeight","GET_SCALE_WEIGHT_FUNC","reverseDict","Map","entries","forEach","weight","weightedChar","WeightedLangChar","chars","get","set","roots","Array","from","sort","seqA","seqB","startsWith","newNode","ogWgt","values","averageWeight","reduce","sum","next","originalWeight","pow","LEAF_CMP","a","b","Node","JsUtils","prototype","frontendDescId","weightExaggeration","super","frontendDesc","Lang","GET_FRONTEND_DESC_BY_ID","treeRoots","CREATE_TREE_MAP","getPrototypeOf","constructor","BUILD","leaves","map","root","getLeaves","flat","isolatedMinOpts","l","slice","s","n","avoid","search_branch","leaf","hitNode","node","superSeq","find","avoidSeq","ownHits","chooseOnePair","Error","BuildUtils","WORD_FOR_WORD","seq2Weight","accumulator","HealthInfo","desc","gridStatic","tiles","baseCostOfBoost","Game","averageHealthPerTile","getLatticePatchDiameter","K","avg","getArea","gridDimensions","avgPerTile","costOfBoost","dest","clear","amount","ScoreInfo","playerIds","id","Entry","entry","moveCounts","totalHealthPickedUp","getOwnPropertyNames","Player","key","game","_nextMovementTimerMultiplier","_scheduledMovementCallbackId","onGamePlaying","_delayedMovementContinue","cancelTimeout","desiredDest","computeDesiredDest","grid","tileAt","makeMovementRequest","getUntToward","coord","getNextMoveType","setTimeout","_movementContinue","bind","computeNextMovementTimer","_Constructors","of","playerDesc","familyId","which","reuses","target","c","_behaviours","call","i","Decisive","RobotPlayer","Chaser","pred","prey","params","assign","Behaviour","DEFAULT","familyArgs","Symbol","iterator","keys","onTeamsBootstrapped","teams","filter","team","teamId","flatMap","members","cachedPred","getUntAwayFrom","players","pa","pb","dist","fearDistance","isDowned","health","playerId","cachedPrey","bloodThirstDistance","healthReserve","cachedHealthCoord","has","size","wanderingAimlessness","getRandomCoordAround","awayFunc","prevCoord","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Grid","Robot","GameMirror","args","lang","static","scoreInfo","player","langFrontend","module","then","langModule","LangConstructor","export","split","nsps","propName","langWeightExaggeration","resetSer","playerCoords","csps","forEachShuffled","tile","index","csp","dryRunShuffleLangCspAt","write","spawnPoints","getSpawnCoords","dimensions","teamIndex","member","memberIndex","doCheckEmptyTiles","getAllAltDestsThan","nullSeq","getNonConflictingChar","changes","healthToSpawn","currentAmount","getRandomCoord","occId","healthToAdd","otherDesc","req","socket","initiator","lastRejectId","reqBuffer","reqDest","moveDest","status","commitStateChange","rejectId","getNextRejectId","moveIsBoost","moveType","newPlayerHealthValue","dryRunSpawnHealth","doCheckOperatorSeqBuffer","add","delete","commitTileMods","GameManager","CHECK_VALID_CTOR_ARGS","bad","requiredFields","coordSys","langId","missingFields","fieldName","field","langDesc","gridClass","ambiguityThreshold","NaN","parseInt","max","parseFloat","OfflineGame","onGameBecomeOver","gameDesc","impl","gridClassLookup","VisibleGrid","OperatorPlayer","operatorIds","p","callback","millis","handle","clearTimeout","webpackAsyncContext","__webpack_require__","o","Promise","resolve","e","code","ids","t","exports"],"mappings":"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","file":"chunk/game/offline.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/online.css b/client/chunk/game/online.css new file mode 100644 index 00000000..879f21a7 --- /dev/null +++ b/client/chunk/game/online.css @@ -0,0 +1,2 @@ +._2N_eu47KtEpZi5d2CowzkM{contain:content;color:var(--colour-tileFg);height:fit-content;width:fit-content;padding:.4em;text-rendering:optimizeSpeed}._3JbtPbIjLTUiQJTU8n-H7C{--colour-spotlight:var(--colour-mainBg);contain:size}._3u8M-CC4Px9o6vllq-e_Uk{pointer-events:auto;box-sizing:border-box;border:var(--border-width) solid transparent;border-radius:var(--border-radius);z-index:11;border-color:var(--colour-tileBd);contain:strict;transition:background-color .7s ease-in-out}._1QzcWwOXzKGRJ08E7Atc6o,._2BjCVl5m4MP1W-F8Z9wQNx{will-change:transform}._3JbtPbIjLTUiQJTU8n-H7C[data-face=me]>._3u8M-CC4Px9o6vllq-e_Uk{z-index:21;will-change:transform}._3e386DsWFKSsP26EIeKIUv{z-index:12;background-color:red;opacity:.2}._3JbtPbIjLTUiQJTU8n-H7C[data-downed=no] ._3e386DsWFKSsP26EIeKIUv{visibility:hidden}@keyframes _3csK2auwtiV8TtCo1YGszT{0%{transform:scale(1.1)}37%{transform:scale(1.3)}}._2BjCVl5m4MP1W-F8Z9wQNx{z-index:10;background-image:radial-gradient(farthest-side,transparent 21%,46%,var(--colour-spotlight));padding:1400%;border:100vmax solid var(--colour-spotlight)}._1QzcWwOXzKGRJ08E7Atc6o{z-index:20;background-image:radial-gradient(farthest-side,transparent 15%,var(--colour-spotlight));padding:1700%;border:100vmax solid var(--colour-spotlight);opacity:.92}@media print{._1QzcWwOXzKGRJ08E7Atc6o,._2BjCVl5m4MP1W-F8Z9wQNx{visibility:hidden}}._3JbtPbIjLTUiQJTU8n-H7C[data-face=me]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceMe)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=meOppo]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceMeOppo)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=teammate]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceTeammate)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=opponent]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceOpponent)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=teammate][data-downed=team]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceImtlTeammate)}._3JbtPbIjLTUiQJTU8n-H7C[data-face=opponent][data-downed=team]>._3u8M-CC4Px9o6vllq-e_Uk{background-color:var(--colour-pFaceImtlOpponent)}._3sIxemHPd1QgnRpmKBX9zJ{contain:strict;display:grid;grid-template-columns:repeat(var(--euclid2-grid-width),1.67em);grid-auto-rows:1.67em}._3sIxemHPd1QgnRpmKBX9zJ>*{margin:5%;scroll-snap-align:center}._3bZJ4fE4oboFoXnIoxvMoC{height:1.67em;width:1.67em;rx:.4em;stroke-width:.18em;fill:var(--colour-tileBg);stroke:var(--colour-tileBg)}._1RIAliHGAPUZnmLFKbeJR0{pointer-events:none;alignment-baseline:central;text-anchor:middle;fill:var(--colour-tileFg)} +/*# sourceMappingURL=online.css.map*/ \ No newline at end of file diff --git a/client/chunk/game/online.css.map b/client/chunk/game/online.css.map new file mode 100644 index 00000000..9484d379 --- /dev/null +++ b/client/chunk/game/online.css.map @@ -0,0 +1 @@ +{"version":3,"sources":["webpack://capswalk/./src/base/floor/visible/grid.m.css","webpack://capswalk/./src/base/game/player/player.m.css","webpack://capswalk/./src/base/floor/impl/Euclid2/style.m.css"],"names":[],"mappings":"AACA,yBACC,eAAmB,CACnB,0BAAgC,CAChC,kBAAuB,CACvB,iBAAuB,CACvB,YAAiB,CACjB,4BACD,CCPA,yBAOC,uCAAwC,CACxC,YACD,CACA,yBACC,mBAAuB,CACvB,qBAAsB,CACtB,4CAA6C,CAC7C,kCAAmC,CAGnC,UAAkB,CAClB,iCAAoC,CACpC,cAAsB,CACtB,2CALD,CAOA,kDAEC,qBACD,CACA,gEACC,UAAkB,CAMlB,qBACD,CACA,yBACC,UAAW,CACX,oBAAqB,CACrB,UACD,CACA,kEACC,iBACD,CASI,mCACF,GAAK,oBAAuB,CAC7B,IAAM,oBAAuB,CAC9B,CAQA,yBACC,UAAW,CACX,2FAGC,CACD,aAAiB,CACjB,4CACD,CACA,yBACC,UAAW,CACX,uFAGC,CACD,aAAiB,CACjB,4CAAiD,CACjD,WACD,CACA,aAIC,kDACC,iBACD,CACD,CAGA,gEAEC,sCACD,CACA,oEAEC,0CACD,CACA,sEAEC,4CACD,CACA,sEAEC,4CACD,CACA,wFAEC,gDACD,CACA,wFAEC,gDACD,CCnHA,yBACC,cAAe,CACf,YAAa,CACb,8DAAgE,CAChE,qBACD,CACA,2BACC,SAAU,CACV,wBACD,CAEA,yBACC,aAAc,CACd,YAAa,CACb,OAAS,CACT,kBAAoB,CACpB,yBAA0B,CAC1B,2BACD,CAEA,yBACC,mBAAoB,CACpB,0BAA2B,CAC3B,kBAAmB,CACnB,yBACD","file":"chunk/game/online.css","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/game/online.js b/client/chunk/game/online.js index f1f7588e..b849b7c0 100644 --- a/client/chunk/game/online.js +++ b/client/chunk/game/online.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[775],{92:(e,t,s)=>{"use strict";s.r(t),s.d(t,{OnlineGame:()=>E});var i=s(903),o=s(804),r=s(242),a=s(753),c=s(688);class E extends c.R{constructor(e,t,s){super(r.lA.Type.ONLINE,{onGameBecomeOver:e,tileClass:r.gx,playerStatusCtor:r.Ko},s),Object.defineProperty(this,"socket",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.socket=t,this._ctorBrowserGame(),this.socket.on(a.a.EVENT_NAME.MOVEMENT,this.executePlayerMoveEvent.bind(this)),this.socket.on(a.a.EVENT_NAME.BUBBLE,this.executePlayerBubbleEvent.bind(this)),this.socket.on(o.JD.RESET,(e=>(0,i.mG)(this,void 0,void 0,(function*(){yield this.reset(),this.deserializeResetState(e),this.socket.emit(o.JD.UNPAUSE)})))),this.socket.emit(o.JD.RESET)}_createArtifPlayer(e){return new r.J5(this,e)}processMoveRequest(e){this.socket.emit(a.a.EVENT_NAME.MOVEMENT,e)}processBubbleRequest(e){this.socket.emit(a.a.EVENT_NAME.BUBBLE,e)}}r.RQ.applyMixins(E,[r.qM]),Object.freeze(E),Object.freeze(E.prototype)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[775],{102:(e,s,t)=>{"use strict";t.r(s),t.d(s,{OnlineGame:()=>p});var a=t(495),r=t(61),i=t(52),c=t(46),n=t(783),o=t(702);(0,r.Z)();class p extends o.S{constructor(e,s,t,r){super({impl:{gridClassLookup:i.T.getImplementation,OperatorPlayer:c.i,RobotPlayer:(e,s)=>new n.J(e,s),onGameBecomeOver:s},desc:t,operatorIds:r}),this.ws=e,Object.seal(this),this.ws.send(JSON.stringify([a.JD.RESET]))}wsMessageCb(e){const[s,...t]=JSON.parse(e.data);switch(s){case a.JD.IN_GAME:this.commitStateChange(t[0]);break;case a.JD.RESET:this.reset(),this.deserializeResetState(t[0]),this.ws.send(JSON.stringify([a.JD.UNPAUSE]))}}processMoveRequest(e,s){this.ws.send(JSON.stringify([a.JD.IN_GAME,e]))}}Object.freeze(p),Object.freeze(p.prototype)}}]); //# sourceMappingURL=online.js.map \ No newline at end of file diff --git a/client/chunk/game/online.js.map b/client/chunk/game/online.js.map index fbde639a..b529a840 100644 --- a/client/chunk/game/online.js.map +++ b/client/chunk/game/online.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/client/game/OnlineGame.ts"],"names":["OnlineGame","onGameBecomeOver","gameSocket","gameDesc","super","tileClass","playerStatusCtor","this","socket","_ctorBrowserGame","on","executePlayerMoveEvent","bind","executePlayerBubbleEvent","ser","reset","deserializeResetState","emit","desc","Object","freeze","prototype"],"mappings":"iLAmBO,MAAMA,UACL,IAsBP,YACCC,EACAC,EACAC,GAEAC,MACC,iBAAkB,CAClBH,mBACAI,UAAW,KACXC,iBAAkB,MACfH,GAnBL,qC,yDAqBCI,KAAKC,OAASN,EACdK,KAAKE,mBAWLF,KAAKC,OAAOE,GACX,wBACAH,KAAKI,uBAAuBC,KAAKL,OAElCA,KAAKC,OAAOE,GACX,sBACAH,KAAKM,yBAAyBD,KAAKL,OAEpCA,KAAKC,OAAOE,GACX,YACOI,IAA0B,8CAC1BP,KAAKQ,QACXR,KAAKS,sBAAsBF,GAG3BP,KAAKC,OAAOS,KAAK,mBAGnBV,KAAKC,OAAOS,KAAK,YAWR,mBAAmBC,GAC5B,OAAO,IAAI,KAAOX,KAAMW,GAWlB,mBAAmBA,GACzBX,KAAKC,OAAOS,KAAK,wBAAuCC,GAUlD,qBAAqBA,GAC3BX,KAAKC,OAAOS,KAAK,sBAAqCC,IAIxD,iBAAoBlB,EAAY,CAAC,OACjCmB,OAAOC,OAAOpB,GACdmB,OAAOC,OAAOpB,EAAWqB","file":"chunk/game/online.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/client/game/OnlineGame.ts"],"names":["OnlineGame","socket","onGameBecomeOver","gameDesc","operatorIds","super","impl","gridClassLookup","OperatorPlayer","RobotPlayer","game","desc","this","ws","Object","seal","send","JSON","stringify","ev","evName","body","parse","data","commitStateChange","reset","deserializeResetState","freeze","prototype"],"mappings":"2LAMA,SAQO,MAAMA,UAA0D,IAQ/D,YACNC,EACAC,EACAC,EACAC,GAEAC,MAAM,CACLC,KAAM,CACLC,gBAAiB,sBACjBC,eAAgB,EAAF,EACdC,YAAa,CAACC,EAAMC,IAAS,IAAI,IAAOD,EAAMC,GAC9CT,oBAEDS,KAAMR,EACNC,gBAEDQ,KAAKC,GAAKZ,EACVa,OAAOC,KAAKH,MACZA,KAAKC,GAAGG,KAAKC,KAAKC,UAAU,CAAC,cAIvB,YAAYC,GAClB,MAAOC,KAAWC,GAAQJ,KAAKK,MAAMH,EAAGI,MACxC,OAAQH,GAAA,KACF,aAAgBR,KAAKY,kBAAkBH,EAAK,IAAK,WACjD,WACJT,KAAKa,QACLb,KAAKc,sBAAsBL,EAAK,IAGhCT,KAAKC,GAAGG,KAAKC,KAAKC,UAAU,CAAC,iBAYzB,mBAAmBP,EAAuBV,GAChDW,KAAKC,GAAGG,KAAKC,KAAKC,UAAU,CAAC,aAAgBP,MAG/CG,OAAOa,OAAO3B,GACdc,OAAOa,OAAO3B,EAAW4B","file":"chunk/game/online.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/Chinese-ts.js b/client/chunk/lang/Chinese-ts.js index 136bdf8c..b44dcf64 100644 --- a/client/chunk/lang/Chinese-ts.js +++ b/client/chunk/lang/Chinese-ts.js @@ -1 +1 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[330],{216:()=>{}}]); \ No newline at end of file +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[330],{83:()=>{}}]); \ No newline at end of file diff --git a/client/chunk/lang/Emote-ts.js b/client/chunk/lang/Emote-ts.js index f3ba91e6..626bf306 100644 --- a/client/chunk/lang/Emote-ts.js +++ b/client/chunk/lang/Emote-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[858],{655:(e,t,s)=>{"use strict";s.r(t),s.d(t,{Emote:()=>c});var c,n=s(115);!function(e){class t extends n.U{}e.GitHub=t,Object.freeze(t),Object.freeze(t.prototype)}(c||(c={})),Object.freeze(c)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[858],{985:(e,t,c)=>{"use strict";c.r(t),c.d(t,{Emote:()=>s});var s,a=c(208);!function(e){class t extends a.U{}e.GitHub=t,Object.freeze(t),Object.freeze(t.prototype)}(s||(s={})),Object.freeze(s)}}]); //# sourceMappingURL=Emote-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/Emote-ts.js.map b/client/chunk/lang/Emote-ts.js.map index ccccca52..1448de13 100644 --- a/client/chunk/lang/Emote-ts.js.map +++ b/client/chunk/lang/Emote-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Emote.ts"],"names":["Emote","GitHub","Object","freeze","prototype"],"mappings":"gIAMiBA,E,UAAjB,SAAiBA,GAKhB,MAAaC,UAAe,KAAf,EAAAA,OAAM,EAEnBC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WARtB,CAAiBJ,MAAK,KAUtBE,OAAOC,OAAOH","file":"chunk/lang/Emote-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/Emote.ts"],"names":["Emote","GitHub","Object","freeze","prototype"],"mappings":"kIAMiBA,E,UAAV,SAAU,GAKT,gBAAqB,KAArB,EAAMC,SAEbC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WARf,CAAUJ,MAAA,KAUjBE,OAAOC,OAAOH","file":"chunk/lang/Emote-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/English-ts.js b/client/chunk/lang/English-ts.js index 43a5e524..b3a37067 100644 --- a/client/chunk/lang/English-ts.js +++ b/client/chunk/lang/English-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[184],{891:(t,e,n)=>{"use strict";n.r(e),n.d(e,{English:()=>r});var r,c=n(115);!function(t){class e extends c.U{constructor(t){super("engl-low",t)}static BUILD(){return c.U.BuildUtils.WORD_FOR_WORD(t.LETTER_FREQUENCY)}}t.Lowercase=e,Object.freeze(e),Object.freeze(e.prototype);class n extends c.U{constructor(t){super("engl-mix",t)}static BUILD(){let e={};const n=n=>{e=Object.entries(t.LETTER_FREQUENCY).reduce(((t,[e,r])=>{const c=n(e);return t[c]={seq:c,weight:r},t}),e)};return n((t=>t.toLowerCase())),n((t=>t.toUpperCase())),e}}let r,s;t.MixedCase=n,Object.freeze(n),Object.freeze(n.prototype),function(e){class n extends c.U{constructor(t){super("engl-cell-enc",t)}static BUILD(){return Object.entries(t.LETTER_FREQUENCY).reduce(((t,[e,n],c)=>(t[e]={seq:r[c],weight:n},t)),{})}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);const r=Object.freeze([3,3,3,3,3,4,3,4].flatMap(((t,e)=>{const n=[],r=(1+e).toString();for(let e=r;e.length<=t;e+=r)n.push(e);return n})))}(r=t.OldCellphone||(t.OldCellphone={})),Object.freeze(r),t.LETTER_FREQUENCY=Object.freeze(JSON.parse('{\n\t\t"a": 8.167, "b": 1.492, "c": 2.202, "d": 4.253,\n\t\t"e":12.702, "f": 2.228, "g": 2.015, "h": 6.094,\n\t\t"i": 6.966, "j": 0.153, "k": 1.292, "l": 4.025,\n\t\t"m": 2.406, "n": 6.749, "o": 7.507, "p": 1.929,\n\t\t"q": 0.095, "r": 5.987, "s": 6.327, "t": 9.356,\n\t\t"u": 2.758, "v": 0.978, "w": 2.560, "x": 0.150,\n\t\t"y": 1.994, "z": 0.077\n\t}')),t.LETTER_FREQUENCY_EXT=Object.freeze(Object.assign((()=>{const t={".":65.3,",":61.3,'"':26.7,"'":24.3,"-":15.3,"?":5.6,":":3.4,"!":3.3,";":3.2};for(let e=0;e<10;e++)t[e.toString()]=10;let e=0;for(const n in t)e+=t[n];for(const n in t)t[n]*=8/e;return t})(),t.LETTER_FREQUENCY)),function(e){class n extends c.U{constructor(t){super("mors-enc",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict))n[r]={seq:c,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);class r extends c.U{constructor(t){super("mors-dec",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict))n[c.replace(/\./g,"•").replace(/\-/g,"−")]={seq:r,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Decode=r,Object.freeze(r),Object.freeze(r.prototype),e.Dict=Object.freeze(JSON.parse('{\n\t\t\t"0": "-----", "5": ".....",\n\t\t\t"1": ".----", "6": "-....",\n\t\t\t"2": "..---", "7": "--...",\n\t\t\t"3": "...--", "8": "---..",\n\t\t\t"4": "....-", "9": "----.",\n\n\t\t\t"a": ".-" , "n": "-." ,\n\t\t\t"b": "-..." , "o": "---" ,\n\t\t\t"c": "-.-." , "p": ".--." ,\n\t\t\t"d": "-.." , "q": "--.-" ,\n\t\t\t"e": "." , "r": ".-." ,\n\t\t\t"f": "..-." , "s": "..." ,\n\t\t\t"g": "--." , "t": "-" ,\n\t\t\t"h": "...." , "u": "..-" ,\n\t\t\t"i": ".." , "v": "...-" ,\n\t\t\t"j": ".---" , "w": ".--" ,\n\t\t\t"k": "-.-" , "x": "-..-" ,\n\t\t\t"l": ".-.." , "y": "-.--" ,\n\t\t\t"m": "--" , "z": "--.." ,\n\n\t\t\t".": ".-.-.-",\n\t\t\t",": "--..--",\n\t\t\t"?": "..--..",\n\t\t\t"!": "-.-.--",\n\t\t\t"-": "-....-"\n\t\t}'))}(s=t.Morse||(t.Morse={})),Object.freeze(s)}(r||(r={})),Object.freeze(r)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[184],{825:(t,e,n)=>{"use strict";n.r(e),n.d(e,{English:()=>r});var r,c=n(208);!function(t){class e extends c.U{constructor(t){super("engl-low",t)}static BUILD(){return c.U.BuildUtils.WORD_FOR_WORD(t.LETTER_FREQUENCY)}}t.Lowercase=e,Object.freeze(e),Object.freeze(e.prototype);class n extends c.U{constructor(t){super("engl-mix",t)}static BUILD(){let e={};const n=n=>{e=Object.entries(t.LETTER_FREQUENCY).freeze().reduce(((t,[e,r])=>{const c=n(e);return t[c]={seq:c,weight:r},t}),e)};return n((t=>t.toLowerCase())),n((t=>t.toUpperCase())),e}}let r,s;t.MixedCase=n,Object.freeze(n),Object.freeze(n.prototype),function(e){class n extends c.U{constructor(t){super("engl-cell-enc",t)}static BUILD(){return Object.entries(t.LETTER_FREQUENCY).freeze().reduce(((t,[e,n],c)=>(t[e]={seq:r[c],weight:n},t)),{})}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);const r=[3,3,3,3,3,4,3,4].flatMap(((t,e)=>{const n=[],r=(1+e).toString();for(let e=r;e.length<=t;e+=r)n.push(e);return n})).freeze()}(r=t.OldCellphone||(t.OldCellphone={})),Object.freeze(r),t.LETTER_FREQUENCY=Object.freeze(JSON.parse('{\n\t\t"a": 8.167, "b": 1.492, "c": 2.202, "d": 4.253,\n\t\t"e":12.702, "f": 2.228, "g": 2.015, "h": 6.094,\n\t\t"i": 6.966, "j": 0.153, "k": 1.292, "l": 4.025,\n\t\t"m": 2.406, "n": 6.749, "o": 7.507, "p": 1.929,\n\t\t"q": 0.095, "r": 5.987, "s": 6.327, "t": 9.356,\n\t\t"u": 2.758, "v": 0.978, "w": 2.560, "x": 0.150,\n\t\t"y": 1.994, "z": 0.077\n\t}')),t.LETTER_FREQUENCY_EXT=Object.freeze(Object.assign((()=>{const t={".":65.3,",":61.3,'"':26.7,"'":24.3,"-":15.3,"?":5.6,":":3.4,"!":3.3,";":3.2};for(let e=0;e<10;e++)t[e.toString()]=10;let e=0;for(const n in t)e+=t[n];for(const n in t)t[n]*=8/e;return t})(),t.LETTER_FREQUENCY)),function(e){class n extends c.U{constructor(t){super("mors-enc",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict).freeze())n[r]={seq:c,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);class r extends c.U{constructor(t){super("mors-dec",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict).freeze())n[c.replace(/\./g,"•").replace(/\-/g,"−")]={seq:r,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Decode=r,Object.freeze(r),Object.freeze(r.prototype),e.Dict=Object.freeze(JSON.parse('{\n\t\t\t"0": "-----", "5": ".....",\n\t\t\t"1": ".----", "6": "-....",\n\t\t\t"2": "..---", "7": "--...",\n\t\t\t"3": "...--", "8": "---..",\n\t\t\t"4": "....-", "9": "----.",\n\n\t\t\t"a": ".-" , "n": "-." ,\n\t\t\t"b": "-..." , "o": "---" ,\n\t\t\t"c": "-.-." , "p": ".--." ,\n\t\t\t"d": "-.." , "q": "--.-" ,\n\t\t\t"e": "." , "r": ".-." ,\n\t\t\t"f": "..-." , "s": "..." ,\n\t\t\t"g": "--." , "t": "-" ,\n\t\t\t"h": "...." , "u": "..-" ,\n\t\t\t"i": ".." , "v": "...-" ,\n\t\t\t"j": ".---" , "w": ".--" ,\n\t\t\t"k": "-.-" , "x": "-..-" ,\n\t\t\t"l": ".-.." , "y": "-.--" ,\n\t\t\t"m": "--" , "z": "--.." ,\n\n\t\t\t".": ".-.-.-",\n\t\t\t",": "--..--",\n\t\t\t"?": "..--..",\n\t\t\t"!": "-.-.--",\n\t\t\t"-": "-....-"\n\t\t}'))}(s=t.Morse||(t.Morse={})),Object.freeze(s)}(r||(r={})),Object.freeze(r)}}]); //# sourceMappingURL=English-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/English-ts.js.map b/client/chunk/lang/English-ts.js.map index 6a26cba1..cc7dd3f3 100644 --- a/client/chunk/lang/English-ts.js.map +++ b/client/chunk/lang/English-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/English.ts"],"names":["English","Lowercase","weightScaling","super","LETTER_FREQUENCY","Object","freeze","prototype","MixedCase","initializer","addMappings","charSeqTransform","entries","reduce","accumulator","_char","weight","char","seq","cs","toLowerCase","toUpperCase","OldCellphone","Morse","Encode","index","NUMPAD","flatMap","val","idx","button","numpadKey","toString","str","length","push","JSON","parse","LETTER_FREQUENCY_EXT","assign","freq","\"","i","sum","key","dict","plain","cipher","Dict","Decode","replace"],"mappings":"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","file":"chunk/lang/English-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/English.ts"],"names":["English","weightScaling","super","LETTER_FREQUENCY","Lowercase","Object","freeze","prototype","initializer","addMappings","charSeqTransform","entries","reduce","accumulator","_char","weight","char","seq","cs","toLowerCase","toUpperCase","OldCellphone","Morse","MixedCase","index","NUMPAD","Encode","flatMap","val","idx","button","numpadKey","toString","str","length","push","JSON","parse","LETTER_FREQUENCY_EXT","assign","freq","\"","i","sum","key","dict","plain","cipher","Dict","replace","Decode"],"mappings":"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","file":"chunk/lang/English-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/Japanese-ts.js b/client/chunk/lang/Japanese-ts.js index ee0815d6..53130b0d 100644 --- a/client/chunk/lang/Japanese-ts.js +++ b/client/chunk/lang/Japanese-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[410],{800:(t,e,n)=>{"use strict";n.r(e),n.d(e,{Japanese:()=>i});var i,s=n(115);!function(t){class e extends s.U{constructor(t){super("japn-hir",t)}static BUILD(){return e.INITIALIZER}}Object.defineProperty(e,"INITIALIZER",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze(JSON.parse('{\n\t\t\t"の": { "seq": "no", "weight": 1918313 },\n\t\t\t"に": { "seq": "ni", "weight": 1108840 },\n\t\t\t"た": { "seq": "ta", "weight": 1067566},\n\t\t\t"い": { "seq": "i", "weight": 1060284 },\n\t\t\t"は": { "seq": "ha", "weight": 937811 },\n\t\t\t"を": { "seq": "wo", "weight": 936356 },\n\t\t\t"と": { "seq": "to", "weight": 927938 },\n\t\t\t"る": { "seq": "ru", "weight": 916652 },\n\t\t\t"が": { "seq": "ga", "weight": 860742 },\n\t\t\t"し": { "seq": "shi","weight": 848132 },\n\t\t\t"で": { "seq": "de", "weight": 764834 },\n\t\t\t"て": { "seq": "te", "weight": 758316 },\n\t\t\t"な": { "seq": "na", "weight": 720156 },\n\t\t\t"か": { "seq": "ka", "weight": 537294 },\n\t\t\t"れ": { "seq": "re", "weight": 450805 },\n\t\t\t"ら": { "seq": "ra", "weight": 42329 },\n\t\t\t"も": { "seq": "mo", "weight": 396142 },\n\t\t\t"う": { "seq": "u", "weight": 352965 },\n\t\t\t"す": { "seq": "su", "weight": 340654 },\n\t\t\t"り": { "seq": "ri", "weight": 333999 },\n\t\t\t"こ": { "seq": "ko", "weight": 312227 },\n\t\t\t"だ": { "seq": "da", "weight": 280911 },\n\t\t\t"ま": { "seq": "ma", "weight": 278599 },\n\t\t\t"さ": { "seq": "sa", "weight": 258960 },\n\t\t\t"き": { "seq": "ki", "weight": 233505 },\n\t\t\t"め": { "seq": "me", "weight": 223806 },\n\t\t\t"く": { "seq": "ku", "weight": 221960 },\n\t\t\t"あ": { "seq": "a" , "weight": 204256 },\n\t\t\t"け": { "seq": "ke", "weight": 199362 },\n\t\t\t"ど": { "seq": "do", "weight": 196555 },\n\t\t\t"ん": { "seq": "nn", "weight": 190068 },\n\t\t\t"え": { "seq": "e" , "weight": 163664 },\n\t\t\t"よ": { "seq": "yo", "weight": 154206 },\n\t\t\t"つ": { "seq": "tsu","weight": 153999 },\n\t\t\t"や": { "seq": "ya", "weight": 146156 },\n\t\t\t"そ": { "seq": "so", "weight": 131611 },\n\t\t\t"わ": { "seq": "wa", "weight": 123077 },\n\t\t\t"ち": { "seq": "chi","weight": 99183 },\n\t\t\t"み": { "seq": "mi", "weight": 89264 },\n\t\t\t"せ": { "seq": "se", "weight": 83444 },\n\t\t\t"ろ": { "seq": "ro", "weight": 73467 },\n\t\t\t"ば": { "seq": "ba", "weight": 72228 },\n\t\t\t"お": { "seq": "o", "weight": 65870 },\n\t\t\t"じ": { "seq": "ji", "weight": 56857 },\n\t\t\t"べ": { "seq": "be", "weight": 56005 },\n\t\t\t"ず": { "seq": "zu", "weight": 53256 },\n\t\t\t"げ": { "seq": "ge", "weight": 49126 },\n\t\t\t"ほ": { "seq": "ho", "weight": 48752 },\n\t\t\t"へ": { "seq": "he", "weight": 47013 },\n\t\t\t"び": { "seq": "bi", "weight": 32312 },\n\t\t\t"む": { "seq": "mu", "weight": 31212 },\n\t\t\t"ご": { "seq": "go", "weight": 26965 },\n\t\t\t"ね": { "seq": "ne", "weight": 23490 },\n\t\t\t"ぶ": { "seq": "bu", "weight": 23280 },\n\t\t\t"ぐ": { "seq": "gu", "weight": 21549 },\n\t\t\t"ぎ": { "seq": "gi", "weight": 19865 },\n\t\t\t"ひ": { "seq": "hi", "weight": 19148 },\n\t\t\t"づ": { "seq": "du", "weight": 13125 },\n\t\t\t"ぼ": { "seq": "bo", "weight": 12402 },\n\t\t\t"ざ": { "seq": "za", "weight": 12108 },\n\t\t\t"ふ": { "seq": "fu", "weight": 11606 },\n\t\t\t"ぞ": { "seq": "zo", "weight": 10047 },\n\t\t\t"ゆ": { "seq": "yu", "weight": 8486 },\n\t\t\t"ぜ": { "seq": "ze", "weight": 6893 },\n\t\t\t"ぬ": { "seq": "nu", "weight": 5124 },\n\t\t\t"ぱ": { "seq": "pa", "weight": 4349 },\n\t\t\t"ゅ": { "seq": "yu", "weight": 2755 },\n\t\t\t"ぴ": { "seq": "pi", "weight": 1608 },\n\t\t\t"ぽ": { "seq": "po", "weight": 1315 },\n\t\t\t"ぷ": { "seq": "pu", "weight": 986 },\n\t\t\t"ぺ": { "seq": "pe", "weight": 477 },\n\t\t\t"ぢ": { "seq": "di", "weight": 82 }\n\t\t}'))}),t.Hiragana=e,Object.freeze(e),Object.freeze(e.prototype);class n extends s.U{constructor(t){super("japn-kat",t)}static BUILD(){return n.INITIALIZER}}Object.defineProperty(n,"INITIALIZER",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze(JSON.parse('{\n\t\t\t"ン": { "seq": "nn", "weight": 290948 },\n\t\t\t"ル": { "seq": "ru", "weight": 189442 },\n\t\t\t"ス": { "seq": "su", "weight": 178214 },\n\t\t\t"ト": { "seq": "to", "weight": 162802 },\n\t\t\t"ア": { "seq": "a", "weight": 127845 },\n\t\t\t"イ": { "seq": "i", "weight": 120807 },\n\t\t\t"ラ": { "seq": "ra", "weight": 117203 },\n\t\t\t"リ": { "seq": "ri", "weight": 106744 },\n\t\t\t"ク": { "seq": "ku", "weight": 98209 },\n\t\t\t"カ": { "seq": "ka", "weight": 82982 },\n\t\t\t"シ": { "seq": "shi","weight": 80626 },\n\t\t\t"タ": { "seq": "ta", "weight": 75319 },\n\t\t\t"ロ": { "seq": "ro", "weight": 75301 },\n\t\t\t"ド": { "seq": "do", "weight": 74257 },\n\t\t\t"ジ": { "seq": "ji", "weight": 61171 },\n\t\t\t"フ": { "seq": "fu", "weight": 61115 },\n\t\t\t"レ": { "seq": "re", "weight": 60608 },\n\t\t\t"メ": { "seq": "me", "weight": 60230 },\n\t\t\t"コ": { "seq": "ko", "weight": 58724 },\n\t\t\t"マ": { "seq": "ma", "weight": 56123 },\n\t\t\t"プ": { "seq": "pu", "weight": 54159 },\n\t\t\t"テ": { "seq": "te", "weight": 53404 },\n\t\t\t"ム": { "seq": "mu", "weight": 50758 },\n\t\t\t"チ": { "seq": "chi","weight": 48437 },\n\t\t\t"バ": { "seq": "ba", "weight": 44970 },\n\t\t\t"ビ": { "seq": "bi", "weight": 44462 },\n\t\t\t"グ": { "seq": "gu", "weight": 40433 },\n\t\t\t"キ": { "seq": "ki", "weight": 39608 },\n\t\t\t"ウ": { "seq": "u", "weight": 39323 },\n\t\t\t"サ": { "seq": "sa", "weight": 39202 },\n\t\t\t"ニ": { "seq": "ni", "weight": 38711 },\n\t\t\t"ナ": { "seq": "na", "weight": 38047 },\n\t\t\t"エ": { "seq": "e", "weight": 36458 },\n\t\t\t"ブ": { "seq": "bu", "weight": 35920 },\n\t\t\t"パ": { "seq": "pa", "weight": 35416 },\n\t\t\t"セ": { "seq": "se", "weight": 34883 },\n\t\t\t"オ": { "seq": "o", "weight": 34718 },\n\t\t\t"デ": { "seq": "de", "weight": 32665 },\n\t\t\t"ミ": { "seq": "mi", "weight": 29262 },\n\t\t\t"ャ": { "seq": "ya", "weight": 28144 },\n\t\t\t"ボ": { "seq": "bo", "weight": 26651 },\n\t\t\t"ダ": { "seq": "da", "weight": 26396 },\n\t\t\t"ツ": { "seq": "tsu","weight": 24541 },\n\t\t\t"ポ": { "seq": "ho", "weight": 23742 },\n\t\t\t"ベ": { "seq": "be", "weight": 22755 },\n\t\t\t"ネ": { "seq": "ne", "weight": 22462 },\n\t\t\t"ガ": { "seq": "ga", "weight": 22061 },\n\t\t\t"ハ": { "seq": "ha", "weight": 21839 },\n\t\t\t"ワ": { "seq": "wa", "weight": 21784 },\n\t\t\t"ソ": { "seq": "so", "weight": 20784 },\n\t\t\t"ケ": { "seq": "ke", "weight": 20633 },\n\t\t\t"モ": { "seq": "ho", "weight": 20070 },\n\t\t\t"ノ": { "seq": "no", "weight": 19572 },\n\t\t\t"ズ": { "seq": "zu", "weight": 19240 },\n\t\t\t"ピ": { "seq": "pi", "weight": 18692 },\n\t\t\t"ホ": { "seq": "ho", "weight": 18204 },\n\t\t\t"ペ": { "seq": "pe", "weight": 14881 },\n\t\t\t"ゴ": { "seq": "go", "weight": 13931 },\n\t\t\t"ヤ": { "seq": "ya", "weight": 12526 },\n\t\t\t"ギ": { "seq": "gi", "weight": 10732 },\n\t\t\t"ヨ": { "seq": "yo", "weight": 10318 },\n\t\t\t"ザ": { "seq": "za", "weight": 10144 },\n\t\t\t"ァ": { "seq": "a", "weight": 10121 },\n\t\t\t"ゼ": { "seq": "ze", "weight": 7689 },\n\t\t\t"ヒ": { "seq": "hi", "weight": 7289 },\n\t\t\t"ヘ": { "seq": "he", "weight": 7129 },\n\t\t\t"ユ": { "seq": "yo", "weight": 6653 },\n\t\t\t"ゲ": { "seq": "ge", "weight": 6481 },\n\t\t\t"ォ": { "seq": "o", "weight": 6245 },\n\t\t\t"ヌ": { "seq": "nu", "weight": 2897 },\n\t\t\t"ゾ": { "seq": "zo", "weight": 2640 },\n\t\t\t"ヴ": { "seq": "vu", "weight": 1145 },\n\t\t\t"ヂ": { "seq": "di", "weight": 149 },\n\t\t\t"ヅ": { "seq": "du", "weight": 127 },\n\t\t\t"ヲ": { "seq": "wo", "weight": 122 }\n\t\t}'))}),t.Katakana=n,Object.freeze(n),Object.freeze(n.prototype)}(i||(i={})),Object.freeze(i)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[410],{885:(e,t,s)=>{"use strict";s.r(t),s.d(t,{Japanese:()=>w});var i=s(208);const h=JSON.parse('{"の":{"seq":"no","weight":1918313},"に":{"seq":"ni","weight":1108840},"た":{"seq":"ta","weight":1067566},"い":{"seq":"i","weight":1060284},"は":{"seq":"ha","weight":937811},"を":{"seq":"wo","weight":936356},"と":{"seq":"to","weight":927938},"る":{"seq":"ru","weight":916652},"が":{"seq":"ga","weight":860742},"し":{"seq":"shi","weight":848132},"で":{"seq":"de","weight":764834},"て":{"seq":"te","weight":758316},"な":{"seq":"na","weight":720156},"か":{"seq":"ka","weight":537294},"れ":{"seq":"re","weight":450805},"ら":{"seq":"ra","weight":42329},"も":{"seq":"mo","weight":396142},"う":{"seq":"u","weight":352965},"す":{"seq":"su","weight":340654},"り":{"seq":"ri","weight":333999},"こ":{"seq":"ko","weight":312227},"だ":{"seq":"da","weight":280911},"ま":{"seq":"ma","weight":278599},"さ":{"seq":"sa","weight":258960},"き":{"seq":"ki","weight":233505},"め":{"seq":"me","weight":223806},"く":{"seq":"ku","weight":221960},"あ":{"seq":"a","weight":204256},"け":{"seq":"ke","weight":199362},"ど":{"seq":"do","weight":196555},"ん":{"seq":"nn","weight":190068},"え":{"seq":"e","weight":163664},"よ":{"seq":"yo","weight":154206},"つ":{"seq":"tsu","weight":153999},"や":{"seq":"ya","weight":146156},"そ":{"seq":"so","weight":131611},"わ":{"seq":"wa","weight":123077},"ち":{"seq":"chi","weight":99183},"み":{"seq":"mi","weight":89264},"せ":{"seq":"se","weight":83444},"ろ":{"seq":"ro","weight":73467},"ば":{"seq":"ba","weight":72228},"お":{"seq":"o","weight":65870},"じ":{"seq":"ji","weight":56857},"べ":{"seq":"be","weight":56005},"ず":{"seq":"zu","weight":53256},"げ":{"seq":"ge","weight":49126},"ほ":{"seq":"ho","weight":48752},"へ":{"seq":"he","weight":47013},"び":{"seq":"bi","weight":32312},"む":{"seq":"mu","weight":31212},"ご":{"seq":"go","weight":26965},"ね":{"seq":"ne","weight":23490},"ぶ":{"seq":"bu","weight":23280},"ぐ":{"seq":"gu","weight":21549},"ぎ":{"seq":"gi","weight":19865},"ひ":{"seq":"hi","weight":19148},"づ":{"seq":"du","weight":13125},"ぼ":{"seq":"bo","weight":12402},"ざ":{"seq":"za","weight":12108},"ふ":{"seq":"fu","weight":11606},"ぞ":{"seq":"zo","weight":10047},"ゆ":{"seq":"yu","weight":8486},"ぜ":{"seq":"ze","weight":6893},"ぬ":{"seq":"nu","weight":5124},"ぱ":{"seq":"pa","weight":4349},"ゅ":{"seq":"yu","weight":2755},"ぴ":{"seq":"pi","weight":1608},"ぽ":{"seq":"po","weight":1315},"ぷ":{"seq":"pu","weight":986},"ぺ":{"seq":"pe","weight":477},"ぢ":{"seq":"di","weight":82}}'),g=JSON.parse('{"ン":{"seq":"nn","weight":290948},"ル":{"seq":"ru","weight":189442},"ス":{"seq":"su","weight":178214},"ト":{"seq":"to","weight":162802},"ア":{"seq":"a","weight":127845},"イ":{"seq":"i","weight":120807},"ラ":{"seq":"ra","weight":117203},"リ":{"seq":"ri","weight":106744},"ク":{"seq":"ku","weight":98209},"カ":{"seq":"ka","weight":82982},"シ":{"seq":"shi","weight":80626},"タ":{"seq":"ta","weight":75319},"ロ":{"seq":"ro","weight":75301},"ド":{"seq":"do","weight":74257},"ジ":{"seq":"ji","weight":61171},"フ":{"seq":"fu","weight":61115},"レ":{"seq":"re","weight":60608},"メ":{"seq":"me","weight":60230},"コ":{"seq":"ko","weight":58724},"マ":{"seq":"ma","weight":56123},"プ":{"seq":"pu","weight":54159},"テ":{"seq":"te","weight":53404},"ム":{"seq":"mu","weight":50758},"チ":{"seq":"chi","weight":48437},"バ":{"seq":"ba","weight":44970},"ビ":{"seq":"bi","weight":44462},"グ":{"seq":"gu","weight":40433},"キ":{"seq":"ki","weight":39608},"ウ":{"seq":"u","weight":39323},"サ":{"seq":"sa","weight":39202},"ニ":{"seq":"ni","weight":38711},"ナ":{"seq":"na","weight":38047},"エ":{"seq":"e","weight":36458},"ブ":{"seq":"bu","weight":35920},"パ":{"seq":"pa","weight":35416},"セ":{"seq":"se","weight":34883},"オ":{"seq":"o","weight":34718},"デ":{"seq":"de","weight":32665},"ミ":{"seq":"mi","weight":29262},"ャ":{"seq":"ya","weight":28144},"ボ":{"seq":"bo","weight":26651},"ダ":{"seq":"da","weight":26396},"ツ":{"seq":"tsu","weight":24541},"ポ":{"seq":"ho","weight":23742},"ベ":{"seq":"be","weight":22755},"ネ":{"seq":"ne","weight":22462},"ガ":{"seq":"ga","weight":22061},"ハ":{"seq":"ha","weight":21839},"ワ":{"seq":"wa","weight":21784},"ソ":{"seq":"so","weight":20784},"ケ":{"seq":"ke","weight":20633},"モ":{"seq":"ho","weight":20070},"ノ":{"seq":"no","weight":19572},"ズ":{"seq":"zu","weight":19240},"ピ":{"seq":"pi","weight":18692},"ホ":{"seq":"ho","weight":18204},"ペ":{"seq":"pe","weight":14881},"ゴ":{"seq":"go","weight":13931},"ヤ":{"seq":"ya","weight":12526},"ギ":{"seq":"gi","weight":10732},"ヨ":{"seq":"yo","weight":10318},"ザ":{"seq":"za","weight":10144},"ァ":{"seq":"a","weight":10121},"ゼ":{"seq":"ze","weight":7689},"ヒ":{"seq":"hi","weight":7289},"ヘ":{"seq":"he","weight":7129},"ユ":{"seq":"yo","weight":6653},"ゲ":{"seq":"ge","weight":6481},"ォ":{"seq":"o","weight":6245},"ヌ":{"seq":"nu","weight":2897},"ゾ":{"seq":"zo","weight":2640},"ヴ":{"seq":"vu","weight":1145},"ヂ":{"seq":"di","weight":149},"ヅ":{"seq":"du","weight":127},"ヲ":{"seq":"wo","weight":122}}');var w;!function(e){const t=class extends i.U{constructor(e){super("japn-hir",e)}static BUILD(){return t.INITIALIZER}};let s=t;s.INITIALIZER=Object.freeze(h),e.Hiragana=s,Object.freeze(s),Object.freeze(s.prototype);const w=class extends i.U{constructor(e){super("japn-kat",e)}static BUILD(){return w.INITIALIZER}};let q=w;q.INITIALIZER=Object.freeze(g),e.Katakana=q,Object.freeze(q),Object.freeze(q.prototype)}(w||(w={})),Object.freeze(w)}}]); //# sourceMappingURL=Japanese-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/Japanese-ts.js.map b/client/chunk/lang/Japanese-ts.js.map index e6db5afd..eb8be738 100644 --- a/client/chunk/lang/Japanese-ts.js.map +++ b/client/chunk/lang/Japanese-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Japanese.ts"],"names":["Japanese","Hiragana","weightScaling","super","INITIALIZER","Object","freeze","JSON","parse","prototype","Katakana"],"mappings":"mIASiBA,E,UAAjB,SAAiBA,GAQhB,MAAaC,UAAiB,IA6F7B,YAAmBC,GAClBC,MAAM,WAAYD,GAEZ,eACN,OAAOD,EAASG,aAxFjB,uC,gDAA4BC,OAAOC,OAA4CC,KAAKC,MAEpF,64GAXY,EAAAP,SAAQ,EAqGrBI,OAAOC,OAAOL,GACdI,OAAOC,OAAOL,EAASQ,WAOvB,MAAaC,UAAiB,IA6F7B,YAAmBR,GAClBC,MAAM,WAAYD,GAEZ,eACN,OAAOQ,EAASN,aA5FjB,uC,gDAA4BC,OAAOC,OAA4CC,KAAKC,MAEpF,m9GAPY,EAAAE,SAAQ,EAqGrBL,OAAOC,OAAOI,GACdL,OAAOC,OAAOI,EAASD,WA3NxB,CAAiBT,MAAQ,KA6NzBK,OAAOC,OAAON","file":"chunk/lang/Japanese-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/Japanese.ts"],"names":["Japanese","Lang","weightScaling","super","INITIALIZER","Object","freeze","Hiragana","prototype","Katakana"],"mappings":"qyJAUO,IAAUA,GAAV,SAAU,GAQT,sBAAuBC,EAAA,EAatB,YAAYC,GAClBC,MAAM,WAAYD,GAAA,eAGlB,OAAO,EAASE,cAjBX,UASQA,YAAcC,OAAOC,OAClC,GAVK,EAAMC,WAqBbF,OAAOC,OAAOC,GACdF,OAAOC,OAAOC,EAASC,WAOhB,sBAAuBP,EAAA,EAStB,YAAYC,GAClBC,MAAM,WAAYD,GAAA,eAGlB,OAAO,EAASE,cAbX,UAKQA,YAAcC,OAAOC,OAClC,GANK,EAAMG,WAiBbJ,OAAOC,OAAOG,GACdJ,OAAOC,OAAOG,EAASD,WAvDjB,CAAUR,MAAA,KAyDjBK,OAAOC,OAAON","file":"chunk/lang/Japanese-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/Korean-ts.js b/client/chunk/lang/Korean-ts.js index 4e68714b..a2aa303d 100644 --- a/client/chunk/lang/Korean-ts.js +++ b/client/chunk/lang/Korean-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[227],{3:(e,a,r)=>{"use strict";r.r(a),r.d(a,{Korean:()=>o});var o,m=r(115);!function(e){class a extends m.U{constructor(e){super("kore-dub",e)}static BUILD(){return t(((e,r,o)=>[e,r,o].flatMap((e=>e.atoms.split(""))).map((e=>a.DUB_KEYBOARD[e])).join("")))}}Object.defineProperty(a,"DUB_KEYBOARD",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({"":"",ㅂ:"q",ㅈ:"w",ㄷ:"e",ㄱ:"r",ㅅ:"t",ㅛ:"y",ㅕ:"u",ㅑ:"i",ㅐ:"o",ㅔ:"p",ㅁ:"a",ㄴ:"s",ㅇ:"d",ㄹ:"f",ㅎ:"g",ㅗ:"h",ㅓ:"j",ㅏ:"k",ㅣ:"l",ㅋ:"z",ㅌ:"x",ㅊ:"c",ㅍ:"v",ㅠ:"b",ㅜ:"n",ㅡ:"m",ㅃ:"Q",ㅉ:"W",ㄸ:"E",ㄲ:"R",ㅆ:"T",ㅒ:"O",ㅖ:"P"})}),e.Dubeolsik=a,Object.freeze(a),Object.freeze(a.prototype);class r extends m.U{constructor(e){super("kore-sub",e)}static BUILD(){return t(((e,a,o)=>r.SEB_KEYBOARD.INITIALS[e.value]+r.SEB_KEYBOARD.MEDIALS[a.value]+r.SEB_KEYBOARD.FINALS[o.value]))}}Object.defineProperty(r,"SEB_KEYBOARD",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({FINALS:{"":"",ㅎ:"1",ㅆ:"2",ㅂ:"3",ㅅ:"q",ㄹ:"w",ㅇ:"a",ㄴ:"s",ㅁ:"z",ㄱ:"x",ㄲ:"!",ㄺ:"@",ㅈ:"#",ㄿ:"$",ㄾ:"%",ㅍ:"Q",ㅌ:"W",ㄵ:"E",ㅀ:"R",ㄽ:"T",ㄷ:"A",ㄶ:"S",ㄼ:"D",ㄻ:"F",ㅊ:"Z",ㅄ:"X",ㅋ:"C",ㄳ:"V"},MEDIALS:{ㅛ:"4",ㅠ:"5",ㅑ:"6",ㅖ:"7",ㅢ:"8",ㅕ:"e",ㅐ:"r",ㅓ:"t",ㅣ:"d",ㅏ:"f",ㅡ:"g",ㅔ:"c",ㅗ:"v",ㅜ:"b",ㅒ:"G",ㅘ:"vf",ㅙ:"vr",ㅚ:"vd",ㅝ:"bt",ㅞ:"bc",ㅟ:"bd"},INITIALS:{ㅋ:"0",ㄹ:"y",ㄷ:"u",ㅁ:"i",ㅊ:"o",ㅍ:"p",ㄴ:"h",ㅇ:"j",ㄱ:"k",ㅈ:"l",ㅂ:";",ㅌ:"'",ㅅ:"n",ㅎ:"m",ㄲ:"!",ㄸ:"uu",ㅃ:";;",ㅆ:"nn",ㅉ:"l"}})}),e.Sebeolsik=r,Object.freeze(r),Object.freeze(r.prototype);class o extends m.U{constructor(e){super("kore-rom",e)}static BUILD(){return t(((e,a,r)=>e.roman+a.roman+r.roman))}}e.Romanization=o,Object.freeze(o),Object.freeze(o.prototype);const t=e=>{const a={};return n.forEach(((r,o)=>{s.forEach(((m,t)=>{u.forEach(((n,l)=>{let f=o;f=s.length*f+t,f=u.length*f+l;const v=String.fromCharCode(44032+f);a[v]={seq:e(r,m,n),weight:r.freq*m.freq*n.freq}}))}))})),a},n=Object.freeze([{value:"ㄱ",atoms:"ㄱ",roman:"g",freq:2.508206},{value:"ㄲ",atoms:"ㄱㄱ",roman:"kk",freq:.139215},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:1.278464},{value:"ㄷ",atoms:"ㄷ",roman:"d",freq:1.715174},{value:"ㄸ",atoms:"ㄷㄷ",roman:"tt",freq:.155508},{value:"ㄹ",atoms:"ㄹ",roman:"r",freq:1.30699},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.920276},{value:"ㅂ",atoms:"ㅂ",roman:"b",freq:.768992},{value:"ㅃ",atoms:"ㅂㅂ",roman:"pp",freq:.034349},{value:"ㅅ",atoms:"ㅅ",roman:"s",freq:1.620272},{value:"ㅆ",atoms:"ㅅㅅ",roman:"ss",freq:.062508},{value:"ㅇ",atoms:"ㅇ",roman:"-",freq:4.509884},{value:"ㅈ",atoms:"ㅈ",roman:"j",freq:1.603205},{value:"ㅉ",atoms:"ㅈㅈ",roman:"jj",freq:.043767},{value:"ㅊ",atoms:"ㅊ",roman:"ch",freq:.428943},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:.103017},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.228492},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.212015},{value:"ㅎ",atoms:"ㅎ",roman:"h",freq:1.360725}]),s=Object.freeze([{value:"ㅏ",atoms:"ㅏ",roman:"a",freq:4.559484},{value:"ㅐ",atoms:"ㅐ",roman:"ae",freq:.970054},{value:"ㅑ",atoms:"ㅑ",roman:"ya",freq:.150865},{value:"ㅒ",atoms:"ㅒ",roman:"yae",freq:.008922},{value:"ㅓ",atoms:"ㅓ",roman:"eo",freq:2.231959},{value:"ㅔ",atoms:"ㅔ",roman:"e",freq:.932004},{value:"ㅕ",atoms:"ㅕ",roman:"yeo",freq:1.000171},{value:"ㅖ",atoms:"ㅖ",roman:"ye",freq:.105095},{value:"ㅗ",atoms:"ㅗ",roman:"o",freq:2.040807},{value:"ㅘ",atoms:"ㅗㅏ",roman:"wa",freq:.38506},{value:"ㅙ",atoms:"ㅗㅐ",roman:"wae",freq:.02655},{value:"ㅚ",atoms:"ㅗㅣ",roman:"oe",freq:.236245},{value:"ㅛ",atoms:"ㅛ",roman:"yo",freq:.223892},{value:"ㅜ",atoms:"ㅜ",roman:"u",freq:1.402448},{value:"ㅝ",atoms:"ㅜㅓ",roman:"wo",freq:.135821},{value:"ㅞ",atoms:"ㅜㅔ",roman:"we",freq:.004818},{value:"ㅟ",atoms:"ㅜㅣ",roman:"wi",freq:.112462},{value:"ㅠ",atoms:"ㅠ",roman:"yu",freq:.111584},{value:"ㅡ",atoms:"ㅡ",roman:"eu",freq:2.727101},{value:"ㅢ",atoms:"ㅡㅣ",roman:"ui",freq:.425688},{value:"ㅣ",atoms:"ㅣ",roman:"i",freq:3.208973}]),u=Object.freeze([{value:"",atoms:"",roman:"",freq:17.06119},{value:"ㄱ",atoms:"ㄱ",roman:"k",freq:1.109483},{value:"ㄲ",atoms:"ㄱㄱ",roman:"k",freq:.016359},{value:"ㄳ",atoms:"ㄱㅅ",roman:"kt",freq:962e-6},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:3.580456},{value:"ㄵ",atoms:"ㄴㅈ",roman:"nt",freq:.007522},{value:"ㄶ",atoms:"ㄴㅎ",roman:"nt",freq:.081892},{value:"ㄷ",atoms:"ㄷ",roman:"t",freq:.049969},{value:"ㄹ",atoms:"ㄹ",roman:"l",freq:2.094454},{value:"ㄺ",atoms:"ㄹㄱ",roman:"lk",freq:.019761},{value:"ㄻ",atoms:"ㄹㅁ",roman:"lm",freq:.011711},{value:"ㄼ",atoms:"ㄹㅂ",roman:"lp",freq:.005885},{value:"ㄽ",atoms:"ㄹㅅ",roman:"lt",freq:13e-6},{value:"ㄾ",atoms:"ㄹㅌ",roman:"lt",freq:353e-6},{value:"ㄿ",atoms:"ㄹㅍ",roman:"lp",freq:21e-5},{value:"ㅀ",atoms:"ㄹㅎ",roman:"lt",freq:.00815},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.697015},{value:"ㅂ",atoms:"ㅂ",roman:"p",freq:.360526},{value:"ㅄ",atoms:"ㅂㅅ",roman:"pt",freq:.069739},{value:"ㅅ",atoms:"ㅅ",roman:"t",freq:.308934},{value:"ㅆ",atoms:"ㅅㅅ",roman:"t",freq:.590913},{value:"ㅇ",atoms:"ㅇ",roman:"ng",freq:1.66395},{value:"ㅈ",atoms:"ㅈ",roman:"t",freq:.046297},{value:"ㅊ",atoms:"ㅊ",roman:"t",freq:.026808},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:814e-6},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.068318},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.045664},{value:"ㅎ",atoms:"ㅎ",roman:"t",freq:.002595}])}(o||(o={})),Object.freeze(o)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[227],{969:(e,a,r)=>{"use strict";r.r(a),r.d(a,{Korean:()=>o});var o,m=r(208);!function(e){const a=class extends m.U{constructor(e){super("kore-dub",e)}static BUILD(){return n(((e,r,o)=>[e,r,o].flatMap((e=>e.atoms.split(""))).freeze().map((e=>a.DUB_KEYBOARD[e])).join("")))}};let r=a;r.DUB_KEYBOARD=Object.freeze({"":"",ㅂ:"q",ㅈ:"w",ㄷ:"e",ㄱ:"r",ㅅ:"t",ㅛ:"y",ㅕ:"u",ㅑ:"i",ㅐ:"o",ㅔ:"p",ㅁ:"a",ㄴ:"s",ㅇ:"d",ㄹ:"f",ㅎ:"g",ㅗ:"h",ㅓ:"j",ㅏ:"k",ㅣ:"l",ㅋ:"z",ㅌ:"x",ㅊ:"c",ㅍ:"v",ㅠ:"b",ㅜ:"n",ㅡ:"m",ㅃ:"Q",ㅉ:"W",ㄸ:"E",ㄲ:"R",ㅆ:"T",ㅒ:"O",ㅖ:"P"}),e.Dubeolsik=r,Object.freeze(r),Object.freeze(r.prototype);const o=class extends m.U{constructor(e){super("kore-sub",e)}static BUILD(){return n(((e,a,r)=>o.SEB_KEYBOARD.INITIALS[e.value]+o.SEB_KEYBOARD.MEDIALS[a.value]+o.SEB_KEYBOARD.FINALS[r.value]))}};let t=o;t.SEB_KEYBOARD=Object.freeze({FINALS:{"":"",ㅎ:"1",ㅆ:"2",ㅂ:"3",ㅅ:"q",ㄹ:"w",ㅇ:"a",ㄴ:"s",ㅁ:"z",ㄱ:"x",ㄲ:"!",ㄺ:"@",ㅈ:"#",ㄿ:"$",ㄾ:"%",ㅍ:"Q",ㅌ:"W",ㄵ:"E",ㅀ:"R",ㄽ:"T",ㄷ:"A",ㄶ:"S",ㄼ:"D",ㄻ:"F",ㅊ:"Z",ㅄ:"X",ㅋ:"C",ㄳ:"V"},MEDIALS:{ㅛ:"4",ㅠ:"5",ㅑ:"6",ㅖ:"7",ㅢ:"8",ㅕ:"e",ㅐ:"r",ㅓ:"t",ㅣ:"d",ㅏ:"f",ㅡ:"g",ㅔ:"c",ㅗ:"v",ㅜ:"b",ㅒ:"G",ㅘ:"vf",ㅙ:"vr",ㅚ:"vd",ㅝ:"bt",ㅞ:"bc",ㅟ:"bd"},INITIALS:{ㅋ:"0",ㄹ:"y",ㄷ:"u",ㅁ:"i",ㅊ:"o",ㅍ:"p",ㄴ:"h",ㅇ:"j",ㄱ:"k",ㅈ:"l",ㅂ:";",ㅌ:"'",ㅅ:"n",ㅎ:"m",ㄲ:"!",ㄸ:"uu",ㅃ:";;",ㅆ:"nn",ㅉ:"l"}}),e.Sebeolsik=t,Object.freeze(t),Object.freeze(t.prototype);class s extends m.U{constructor(e){super("kore-rom",e)}static BUILD(){return n(((e,a,r)=>e.roman+a.roman+r.roman))}}e.Romanization=s,Object.freeze(s),Object.freeze(s.prototype);const n=e=>{const a={};return l.forEach(((r,o)=>{u.forEach(((m,t)=>{f.forEach(((s,n)=>{let l=o;l=u.length*l+t,l=f.length*l+n;const v=String.fromCharCode(44032+l);a[v]={seq:e(r,m,s),weight:r.freq*m.freq*s.freq}}))}))})),a},l=Object.freeze([{value:"ㄱ",atoms:"ㄱ",roman:"g",freq:2.508206},{value:"ㄲ",atoms:"ㄱㄱ",roman:"kk",freq:.139215},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:1.278464},{value:"ㄷ",atoms:"ㄷ",roman:"d",freq:1.715174},{value:"ㄸ",atoms:"ㄷㄷ",roman:"tt",freq:.155508},{value:"ㄹ",atoms:"ㄹ",roman:"r",freq:1.30699},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.920276},{value:"ㅂ",atoms:"ㅂ",roman:"b",freq:.768992},{value:"ㅃ",atoms:"ㅂㅂ",roman:"pp",freq:.034349},{value:"ㅅ",atoms:"ㅅ",roman:"s",freq:1.620272},{value:"ㅆ",atoms:"ㅅㅅ",roman:"ss",freq:.062508},{value:"ㅇ",atoms:"ㅇ",roman:"-",freq:4.509884},{value:"ㅈ",atoms:"ㅈ",roman:"j",freq:1.603205},{value:"ㅉ",atoms:"ㅈㅈ",roman:"jj",freq:.043767},{value:"ㅊ",atoms:"ㅊ",roman:"ch",freq:.428943},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:.103017},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.228492},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.212015},{value:"ㅎ",atoms:"ㅎ",roman:"h",freq:1.360725}]),u=Object.freeze([{value:"ㅏ",atoms:"ㅏ",roman:"a",freq:4.559484},{value:"ㅐ",atoms:"ㅐ",roman:"ae",freq:.970054},{value:"ㅑ",atoms:"ㅑ",roman:"ya",freq:.150865},{value:"ㅒ",atoms:"ㅒ",roman:"yae",freq:.008922},{value:"ㅓ",atoms:"ㅓ",roman:"eo",freq:2.231959},{value:"ㅔ",atoms:"ㅔ",roman:"e",freq:.932004},{value:"ㅕ",atoms:"ㅕ",roman:"yeo",freq:1.000171},{value:"ㅖ",atoms:"ㅖ",roman:"ye",freq:.105095},{value:"ㅗ",atoms:"ㅗ",roman:"o",freq:2.040807},{value:"ㅘ",atoms:"ㅗㅏ",roman:"wa",freq:.38506},{value:"ㅙ",atoms:"ㅗㅐ",roman:"wae",freq:.02655},{value:"ㅚ",atoms:"ㅗㅣ",roman:"oe",freq:.236245},{value:"ㅛ",atoms:"ㅛ",roman:"yo",freq:.223892},{value:"ㅜ",atoms:"ㅜ",roman:"u",freq:1.402448},{value:"ㅝ",atoms:"ㅜㅓ",roman:"wo",freq:.135821},{value:"ㅞ",atoms:"ㅜㅔ",roman:"we",freq:.004818},{value:"ㅟ",atoms:"ㅜㅣ",roman:"wi",freq:.112462},{value:"ㅠ",atoms:"ㅠ",roman:"yu",freq:.111584},{value:"ㅡ",atoms:"ㅡ",roman:"eu",freq:2.727101},{value:"ㅢ",atoms:"ㅡㅣ",roman:"ui",freq:.425688},{value:"ㅣ",atoms:"ㅣ",roman:"i",freq:3.208973}]),f=Object.freeze([{value:"",atoms:"",roman:"",freq:17.06119},{value:"ㄱ",atoms:"ㄱ",roman:"k",freq:1.109483},{value:"ㄲ",atoms:"ㄱㄱ",roman:"k",freq:.016359},{value:"ㄳ",atoms:"ㄱㅅ",roman:"kt",freq:962e-6},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:3.580456},{value:"ㄵ",atoms:"ㄴㅈ",roman:"nt",freq:.007522},{value:"ㄶ",atoms:"ㄴㅎ",roman:"nt",freq:.081892},{value:"ㄷ",atoms:"ㄷ",roman:"t",freq:.049969},{value:"ㄹ",atoms:"ㄹ",roman:"l",freq:2.094454},{value:"ㄺ",atoms:"ㄹㄱ",roman:"lk",freq:.019761},{value:"ㄻ",atoms:"ㄹㅁ",roman:"lm",freq:.011711},{value:"ㄼ",atoms:"ㄹㅂ",roman:"lp",freq:.005885},{value:"ㄽ",atoms:"ㄹㅅ",roman:"lt",freq:13e-6},{value:"ㄾ",atoms:"ㄹㅌ",roman:"lt",freq:353e-6},{value:"ㄿ",atoms:"ㄹㅍ",roman:"lp",freq:21e-5},{value:"ㅀ",atoms:"ㄹㅎ",roman:"lt",freq:.00815},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.697015},{value:"ㅂ",atoms:"ㅂ",roman:"p",freq:.360526},{value:"ㅄ",atoms:"ㅂㅅ",roman:"pt",freq:.069739},{value:"ㅅ",atoms:"ㅅ",roman:"t",freq:.308934},{value:"ㅆ",atoms:"ㅅㅅ",roman:"t",freq:.590913},{value:"ㅇ",atoms:"ㅇ",roman:"ng",freq:1.66395},{value:"ㅈ",atoms:"ㅈ",roman:"t",freq:.046297},{value:"ㅊ",atoms:"ㅊ",roman:"t",freq:.026808},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:814e-6},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.068318},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.045664},{value:"ㅎ",atoms:"ㅎ",roman:"t",freq:.002595}])}(o||(o={})),Object.freeze(o)}}]); //# sourceMappingURL=Korean-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/Korean-ts.js.map b/client/chunk/lang/Korean-ts.js.map index 41a20dc1..96ca7aef 100644 --- a/client/chunk/lang/Korean-ts.js.map +++ b/client/chunk/lang/Korean-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Korean.ts"],"names":["Korean","Dubeolsik","weightScaling","super","INITIALIZE","ij","mj","fj","flatMap","jamos","atoms","split","map","atom","DUB_KEYBOARD","join","Object","freeze","prototype","Sebeolsik","SEB_KEYBOARD","INITIALS","value","MEDIALS","FINALS","Romanization","roman","seqBuilder","forwardDict","forEach","initialJamo","initialIdx","medialJamo","medialIdx","finalJamo","finalIdx","offset","length","char","String","fromCharCode","seq","weight","freq"],"mappings":"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","file":"chunk/lang/Korean-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/Korean.ts"],"names":["Korean","weightScaling","super","INITIALIZE","ij","mj","fj","flatMap","jamos","atoms","split","freeze","map","atom","DUB_KEYBOARD","join","Object","Dubeolsik","prototype","SEB_KEYBOARD","INITIALS","value","MEDIALS","FINALS","Sebeolsik","roman","Romanization","seqBuilder","forwardDict","forEach","initialJamo","initialIdx","medialJamo","medialIdx","finalJamo","finalIdx","offset","length","char","String","fromCharCode","seq","weight","freq"],"mappings":"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","file":"chunk/lang/Korean-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/Ngrams-ts.js b/client/chunk/lang/Ngrams-ts.js index 55e33fdd..a0bcf2d5 100644 --- a/client/chunk/lang/Ngrams-ts.js +++ b/client/chunk/lang/Ngrams-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[273],{492:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Ngrams:()=>o});var r=a(115);const i=JSON.parse('{"in":22.964,"th":22.691,"er":20.307,"re":18.511,"he":18.141,"an":17.958,"on":17.113,"es":16.579,"or":14.649,"te":13.789,"at":13.731,"ti":13.599,"st":13.411,"en":13.17,"nt":12.217,"ar":11.712,"to":11.677,"nd":11.586,"al":10.907,"it":10.354,"se":9.908,"ed":9.797,"is":9.63,"ea":9.529,"ng":9.313,"ou":9.013,"le":8.949,"co":8.941,"me":8.68,"ne":8.249,"ri":8.203,"ro":7.939,"de":7.894,"ra":7.859,"io":7.813,"ic":7.778,"li":7.706,"of":7.657,"as":7.419,"et":7.293,"ve":7.22,"ta":7.213,"si":7.066,"ha":7.019,"ma":6.858,"ec":6.786,"om":6.519,"ce":6.469,"el":6.461,"ll":6.236,"ca":6.126,"ur":6.125,"la":6.01,"ch":5.821,"hi":5.799,"di":5.673,"ho":5.628,"fo":5.578,"ns":5.529,"ot":5.522,"ac":5.45,"na":5.423,"rs":5.365,"so":5.36,"pr":5.326,"rt":5.31,"sa":5.304,"ss":5.294,"us":5.226,"no":5.216,"il":5.213,"ts":5.106,"em":5.072,"ct":4.923,"ge":4.855,"lo":4.831,"ee":4.676,"be":4.635,"tr":4.599,"ni":4.32,"pe":4.28,"ie":4.247,"pa":4.241,"nc":4.214,"po":4.038,"ol":4.012,"da":3.966,"ad":3.952,"vi":3.942,"un":3.916,"am":3.901,"ut":3.833,"wi":3.66,"mo":3.636,"sh":3.632,"yo":3.452,"ai":3.422,"ew":3.407,"ow":3.402,"os":3.376,"fi":3.365,"ep":3.311,"tt":3.274,"mi":3.252,"op":3.25,"ia":3.244,"we":3.19,"ag":3.137,"su":3.12,"id":3.05,"do":3.016,"oo":2.988,"ir":2.903,"sp":2.898,"pl":2.896,"sc":2.876,"ay":2.853,"wa":2.831,"ig":2.769,"ei":2.749,"ry":2.738,"ly":2.734,"tu":2.694,"ul":2.683,"iv":2.646,"im":2.636,"ab":2.621,"ty":2.592,"ci":2.575,"ap":2.564,"ev":2.551,"eo":2.516,"ef":2.511,"od":2.48,"fr":2.46,"rd":2.45,"bo":2.433,"rc":2.432,"mp":2.429,"ga":2.417,"bl":2.411,"ke":2.405,"ds":2.404,"ck":2.347,"oc":2.329,"ba":2.321,"ls":2.309,"rm":2.306,"fe":2.289,"ex":2.275,"ft":2.244,"av":2.164,"eb":2.158,"ld":2.152,"wh":2.051,"gh":2.051,"gr":2.049,"gi":2.045,"wo":2.005,"ov":2.004,"cl":1.982,"rn":1.969,"bu":1.968,"eg":1.961,"fa":1.947,"go":1.877,"dt":1.87,"lt":1.858,"uc":1.823,"if":1.815,"ys":1.801,"ht":1.794,"du":1.745,"va":1.714,"um":1.705,"cr":1.691,"pp":1.682,"by":1.679,"pi":1.64,"cu":1.629,"og":1.625,"up":1.599,"ff":1.521,"nf":1.487,"bi":1.484,"ki":1.468,"au":1.467,"lu":1.467,"ob":1.451,"ru":1.444,"ue":1.441,"rr":1.441,"ey":1.434,"ip":1.411,"qu":1.411,"oa":1.402,"ua":1.401,"ms":1.395,"tw":1.383,"mm":1.34}');var n=a.t(i,2);const s=JSON.parse('{"the":28.751,"ing":15.313,"and":15.216,"ion":13.975,"tio":11.453,"ent":11.181,"for":9.201,"ati":8.864,"ter":7.576,"ate":6.996,"ers":6.453,"res":5.92,"her":5.889,"est":5.657,"com":5.647,"pro":5.586,"ere":5.36,"all":5.351,"int":5.342,"men":5.337,"you":5.258,"ons":5.171,"our":5.159,"con":5.023,"are":4.962,"tha":4.892,"ver":4.872,"ess":4.817,"thi":4.681,"rea":4.652,"sta":4.528,"tin":4.392,"hat":4.254,"ist":4.246,"ect":4.244,"ort":4.223,"ear":4.221,"ine":4.187,"age":4.185,"his":4.086,"ted":3.994,"ont":3.989,"nce":3.921,"sto":3.877,"ith":3.867,"nte":3.807,"sin":3.782,"tor":3.777,"ore":3.736,"lin":3.706,"ive":3.671,"ite":3.595,"wit":3.57,"not":3.524,"nth":3.512,"tra":3.43,"ome":3.43,"ica":3.427,"per":3.412,"art":3.381,"ste":3.351,"cti":3.302,"oft":3.261,"oth":3.246,"ice":3.227,"out":3.19,"ill":3.101,"ide":3.068,"eth":3.068,"ies":3.066,"one":3.059,"ser":3.025,"eco":3.024,"era":3.003,"str":2.999,"eve":2.975,"din":2.945,"rat":2.927,"ona":2.924,"ces":2.92,"edi":2.907,"iti":2.898,"eri":2.891,"ran":2.832,"san":2.811,"ity":2.794,"oun":2.785,"nal":2.767,"use":2.748,"ure":2.737,"rin":2.728,"ame":2.726,"act":2.725,"igh":2.723,"ese":2.713,"ave":2.71,"sti":2.709,"nts":2.698,"hes":2.685,"sit":2.673,"der":2.664,"fth":2.66,"les":2.65,"man":2.643,"ant":2.637,"ind":2.622,"new":2.574,"pri":2.573,"ree":2.57,"ble":2.557,"ast":2.555,"nta":2.551,"tur":2.541,"por":2.534,"ght":2.525,"ain":2.523,"anc":2.511,"cha":2.51,"eas":2.502,"par":2.483,"ove":2.48,"nde":2.452,"rom":2.451,"rec":2.449,"ert":2.442,"lan":2.442,"cal":2.438,"sof":2.414,"can":2.403,"orm":2.385,"tes":2.379,"ost":2.368,"cat":2.352,"son":2.349,"tic":2.334,"end":2.333,"hea":2.332,"ina":2.329,"red":2.326,"wor":2.324,"ber":2.31,"lic":2.305,"han":2.304,"mat":2.302,"tat":2.287,"hin":2.282,"nes":2.275,"pre":2.272,"sho":2.261,"ren":2.258,"ein":2.258,"eme":2.242,"ric":2.239,"ust":2.234,"fro":2.232,"rth":2.231,"inc":2.231,"eat":2.23,"ase":2.216,"nti":2.212,"ard":2.21,"rch":2.197,"ndi":2.195,"lea":2.187,"tan":2.177,"ssi":2.17,"nin":2.147,"min":2.133,"ail":2.126,"omp":2.122,"ins":2.106,"cou":2.1,"ell":2.096,"erv":2.095,"tal":2.093,"enc":2.092,"ass":2.089,"tth":2.08,"lle":2.071,"ele":2.052,"mor":2.05,"ean":2.039,"sth":2.033,"tem":2.032,"sea":2.026,"rma":2.019,"als":2.008,"und":2.005,"pla":2.004,"ple":2.002,"eal":1.992,"rie":1.985,"ema":1.973,"ali":1.949,"nda":1.946,"ack":1.942,"hen":1.938,"ial":1.937,"ord":1.929,"ana":1.927,"arc":1.923,"ori":1.905,"che":1.891,"tho":1.887,"eof":1.886,"lis":1.886,"dis":1.877,"een":1.876,"car":1.876,"ngt":1.875,"ire":1.869,"ead":1.866,"eto":1.854,"ene":1.853,"att":1.848,"nto":1.846,"omm":1.844,"pos":1.838,"abl":1.832,"lat":1.832,"nds":1.819,"dat":1.813,"lit":1.81,"gra":1.802,"mes":1.796,"hec":1.793,"kin":1.791,"esa":1.786,"vie":1.784,"ote":1.776,"dth":1.776,"ern":1.776,"sio":1.774,"ono":1.773,"esi":1.755,"inf":1.748,"mer":1.746,"nfo":1.744,"hav":1.739,"mar":1.738,"chi":1.735,"ten":1.724,"uni":1.714,"ime":1.713,"nat":1.711,"des":1.711,"hou":1.708,"rit":1.699,"tim":1.697,"den":1.686,"sco":1.682,"ans":1.682,"hel":1.675,"nst":1.67,"rti":1.668,"rep":1.668,"eso":1.666,"tot":1.66,"any":1.656,"tri":1.651,"ret":1.637,"fin":1.634,"spe":1.634,"duc":1.633,"ntr":1.629,"mbe":1.628,"usi":1.619,"tiv":1.619,"ner":1.618,"ous":1.614,"was":1.612,"hem":1.602,"ens":1.601,"ale":1.591,"day":1.59,"unt":1.587,"tte":1.586,"ngs":1.571,"tre":1.567,"ral":1.564,"rou":1.563,"sed":1.562,"nge":1.56,"edt":1.559,"wil":1.559,"ini":1.546,"nit":1.543,"ora":1.538,"har":1.535,"tof":1.523,"las":1.52,"mon":1.517,"ton":1.516,"ile":1.514,"ope":1.511,"fre":1.507,"ors":1.498,"ven":1.497,"eli":1.494,"uct":1.493,"shi":1.493,"abo":1.491,"ook":1.487,"gin":1.486,"evi":1.483,"ang":1.483,"ary":1.478,"ond":1.476,"rac":1.471,"app":1.47,"ses":1.461,"sen":1.459,"own":1.458,"ani":1.458,"dit":1.458,"iss":1.455,"efo":1.454,"ork":1.451,"ndt":1.447,"tel":1.445,"sse":1.439,"log":1.438,"hei":1.435,"epr":1.43,"isi":1.43,"rel":1.428,"mai":1.427,"off":1.423,"top":1.42,"tis":1.416,"iew":1.416,"cen":1.412,"net":1.41,"cia":1.408,"low":1.402,"nan":1.4,"erm":1.399,"vel":1.396,"has":1.395,"wer":1.394,"onl":1.393,"oul":1.392,"ose":1.389,"dto":1.389,"ade":1.387,"ake":1.387,"hot":1.385,"let":1.379,"cre":1.37,"war":1.366,"oll":1.363,"ery":1.36,"fic":1.358,"gen":1.344,"ien":1.343,"lar":1.337,"oli":1.335,"vid":1.334,"rev":1.333,"mpl":1.333,"ach":1.33,"ari":1.328,"its":1.327,"ish":1.326,"ndo":1.324,"ews":1.324,"ili":1.323,"vic":1.321,"eda":1.31,"lec":1.309,"bou":1.309,"spo":1.304,"ult":1.304,"rvi":1.303,"but":1.303,"tar":1.301,"nga":1.301,"hom":1.3,"fer":1.299,"sel":1.297,"acc":1.289,"ick":1.287,"hep":1.286,"eed":1.286,"ges":1.283,"ian":1.28,"sec":1.278,"gre":1.278,"ory":1.275,"rig":1.273,"tai":1.268,"rst":1.267,"cor":1.263,"pag":1.26,"rre":1.254,"dre":1.245,"ela":1.244,"ata":1.243,"emo":1.241,"alt":1.24}');var o,c=a.t(s,2);Object.freeze(n),Object.freeze(c),function(e){class t extends r.U{constructor(e){super("ngram2",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(n)}}e.Ngram2=t,Object.freeze(t),Object.freeze(t.prototype);class a extends r.U{constructor(e){super("ngram3",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(c)}}e.Ngram3=a,Object.freeze(a),Object.freeze(a.prototype)}(o||(o={})),Object.freeze(o)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[273],{755:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Ngrams:()=>o});var r=a(208);const i=JSON.parse('{"in":22.964,"th":22.691,"er":20.307,"re":18.511,"he":18.141,"an":17.958,"on":17.113,"es":16.579,"or":14.649,"te":13.789,"at":13.731,"ti":13.599,"st":13.411,"en":13.17,"nt":12.217,"ar":11.712,"to":11.677,"nd":11.586,"al":10.907,"it":10.354,"se":9.908,"ed":9.797,"is":9.63,"ea":9.529,"ng":9.313,"ou":9.013,"le":8.949,"co":8.941,"me":8.68,"ne":8.249,"ri":8.203,"ro":7.939,"de":7.894,"ra":7.859,"io":7.813,"ic":7.778,"li":7.706,"of":7.657,"as":7.419,"et":7.293,"ve":7.22,"ta":7.213,"si":7.066,"ha":7.019,"ma":6.858,"ec":6.786,"om":6.519,"ce":6.469,"el":6.461,"ll":6.236,"ca":6.126,"ur":6.125,"la":6.01,"ch":5.821,"hi":5.799,"di":5.673,"ho":5.628,"fo":5.578,"ns":5.529,"ot":5.522,"ac":5.45,"na":5.423,"rs":5.365,"so":5.36,"pr":5.326,"rt":5.31,"sa":5.304,"ss":5.294,"us":5.226,"no":5.216,"il":5.213,"ts":5.106,"em":5.072,"ct":4.923,"ge":4.855,"lo":4.831,"ee":4.676,"be":4.635,"tr":4.599,"ni":4.32,"pe":4.28,"ie":4.247,"pa":4.241,"nc":4.214,"po":4.038,"ol":4.012,"da":3.966,"ad":3.952,"vi":3.942,"un":3.916,"am":3.901,"ut":3.833,"wi":3.66,"mo":3.636,"sh":3.632,"yo":3.452,"ai":3.422,"ew":3.407,"ow":3.402,"os":3.376,"fi":3.365,"ep":3.311,"tt":3.274,"mi":3.252,"op":3.25,"ia":3.244,"we":3.19,"ag":3.137,"su":3.12,"id":3.05,"do":3.016,"oo":2.988,"ir":2.903,"sp":2.898,"pl":2.896,"sc":2.876,"ay":2.853,"wa":2.831,"ig":2.769,"ei":2.749,"ry":2.738,"ly":2.734,"tu":2.694,"ul":2.683,"iv":2.646,"im":2.636,"ab":2.621,"ty":2.592,"ci":2.575,"ap":2.564,"ev":2.551,"eo":2.516,"ef":2.511,"od":2.48,"fr":2.46,"rd":2.45,"bo":2.433,"rc":2.432,"mp":2.429,"ga":2.417,"bl":2.411,"ke":2.405,"ds":2.404,"ck":2.347,"oc":2.329,"ba":2.321,"ls":2.309,"rm":2.306,"fe":2.289,"ex":2.275,"ft":2.244,"av":2.164,"eb":2.158,"ld":2.152,"wh":2.051,"gh":2.051,"gr":2.049,"gi":2.045,"wo":2.005,"ov":2.004,"cl":1.982,"rn":1.969,"bu":1.968,"eg":1.961,"fa":1.947,"go":1.877,"dt":1.87,"lt":1.858,"uc":1.823,"if":1.815,"ys":1.801,"ht":1.794,"du":1.745,"va":1.714,"um":1.705,"cr":1.691,"pp":1.682,"by":1.679,"pi":1.64,"cu":1.629,"og":1.625,"up":1.599,"ff":1.521,"nf":1.487,"bi":1.484,"ki":1.468,"au":1.467,"lu":1.467,"ob":1.451,"ru":1.444,"ue":1.441,"rr":1.441,"ey":1.434,"ip":1.411,"qu":1.411,"oa":1.402,"ua":1.401,"ms":1.395,"tw":1.383,"mm":1.34}');var n=a.t(i,2);const s=JSON.parse('{"the":28.751,"ing":15.313,"and":15.216,"ion":13.975,"tio":11.453,"ent":11.181,"for":9.201,"ati":8.864,"ter":7.576,"ate":6.996,"ers":6.453,"res":5.92,"her":5.889,"est":5.657,"com":5.647,"pro":5.586,"ere":5.36,"all":5.351,"int":5.342,"men":5.337,"you":5.258,"ons":5.171,"our":5.159,"con":5.023,"are":4.962,"tha":4.892,"ver":4.872,"ess":4.817,"thi":4.681,"rea":4.652,"sta":4.528,"tin":4.392,"hat":4.254,"ist":4.246,"ect":4.244,"ort":4.223,"ear":4.221,"ine":4.187,"age":4.185,"his":4.086,"ted":3.994,"ont":3.989,"nce":3.921,"sto":3.877,"ith":3.867,"nte":3.807,"sin":3.782,"tor":3.777,"ore":3.736,"lin":3.706,"ive":3.671,"ite":3.595,"wit":3.57,"not":3.524,"nth":3.512,"tra":3.43,"ome":3.43,"ica":3.427,"per":3.412,"art":3.381,"ste":3.351,"cti":3.302,"oft":3.261,"oth":3.246,"ice":3.227,"out":3.19,"ill":3.101,"ide":3.068,"eth":3.068,"ies":3.066,"one":3.059,"ser":3.025,"eco":3.024,"era":3.003,"str":2.999,"eve":2.975,"din":2.945,"rat":2.927,"ona":2.924,"ces":2.92,"edi":2.907,"iti":2.898,"eri":2.891,"ran":2.832,"san":2.811,"ity":2.794,"oun":2.785,"nal":2.767,"use":2.748,"ure":2.737,"rin":2.728,"ame":2.726,"act":2.725,"igh":2.723,"ese":2.713,"ave":2.71,"sti":2.709,"nts":2.698,"hes":2.685,"sit":2.673,"der":2.664,"fth":2.66,"les":2.65,"man":2.643,"ant":2.637,"ind":2.622,"new":2.574,"pri":2.573,"ree":2.57,"ble":2.557,"ast":2.555,"nta":2.551,"tur":2.541,"por":2.534,"ght":2.525,"ain":2.523,"anc":2.511,"cha":2.51,"eas":2.502,"par":2.483,"ove":2.48,"nde":2.452,"rom":2.451,"rec":2.449,"ert":2.442,"lan":2.442,"cal":2.438,"sof":2.414,"can":2.403,"orm":2.385,"tes":2.379,"ost":2.368,"cat":2.352,"son":2.349,"tic":2.334,"end":2.333,"hea":2.332,"ina":2.329,"red":2.326,"wor":2.324,"ber":2.31,"lic":2.305,"han":2.304,"mat":2.302,"tat":2.287,"hin":2.282,"nes":2.275,"pre":2.272,"sho":2.261,"ren":2.258,"ein":2.258,"eme":2.242,"ric":2.239,"ust":2.234,"fro":2.232,"rth":2.231,"inc":2.231,"eat":2.23,"ase":2.216,"nti":2.212,"ard":2.21,"rch":2.197,"ndi":2.195,"lea":2.187,"tan":2.177,"ssi":2.17,"nin":2.147,"min":2.133,"ail":2.126,"omp":2.122,"ins":2.106,"cou":2.1,"ell":2.096,"erv":2.095,"tal":2.093,"enc":2.092,"ass":2.089,"tth":2.08,"lle":2.071,"ele":2.052,"mor":2.05,"ean":2.039,"sth":2.033,"tem":2.032,"sea":2.026,"rma":2.019,"als":2.008,"und":2.005,"pla":2.004,"ple":2.002,"eal":1.992,"rie":1.985,"ema":1.973,"ali":1.949,"nda":1.946,"ack":1.942,"hen":1.938,"ial":1.937,"ord":1.929,"ana":1.927,"arc":1.923,"ori":1.905,"che":1.891,"tho":1.887,"eof":1.886,"lis":1.886,"dis":1.877,"een":1.876,"car":1.876,"ngt":1.875,"ire":1.869,"ead":1.866,"eto":1.854,"ene":1.853,"att":1.848,"nto":1.846,"omm":1.844,"pos":1.838,"abl":1.832,"lat":1.832,"nds":1.819,"dat":1.813,"lit":1.81,"gra":1.802,"mes":1.796,"hec":1.793,"kin":1.791,"esa":1.786,"vie":1.784,"ote":1.776,"dth":1.776,"ern":1.776,"sio":1.774,"ono":1.773,"esi":1.755,"inf":1.748,"mer":1.746,"nfo":1.744,"hav":1.739,"mar":1.738,"chi":1.735,"ten":1.724,"uni":1.714,"ime":1.713,"nat":1.711,"des":1.711,"hou":1.708,"rit":1.699,"tim":1.697,"den":1.686,"sco":1.682,"ans":1.682,"hel":1.675,"nst":1.67,"rti":1.668,"rep":1.668,"eso":1.666,"tot":1.66,"any":1.656,"tri":1.651,"ret":1.637,"fin":1.634,"spe":1.634,"duc":1.633,"ntr":1.629,"mbe":1.628,"usi":1.619,"tiv":1.619,"ner":1.618,"ous":1.614,"was":1.612,"hem":1.602,"ens":1.601,"ale":1.591,"day":1.59,"unt":1.587,"tte":1.586,"ngs":1.571,"tre":1.567,"ral":1.564,"rou":1.563,"sed":1.562,"nge":1.56,"edt":1.559,"wil":1.559,"ini":1.546,"nit":1.543,"ora":1.538,"har":1.535,"tof":1.523,"las":1.52,"mon":1.517,"ton":1.516,"ile":1.514,"ope":1.511,"fre":1.507,"ors":1.498,"ven":1.497,"eli":1.494,"uct":1.493,"shi":1.493,"abo":1.491,"ook":1.487,"gin":1.486,"evi":1.483,"ang":1.483,"ary":1.478,"ond":1.476,"rac":1.471,"app":1.47,"ses":1.461,"sen":1.459,"own":1.458,"ani":1.458,"dit":1.458,"iss":1.455,"efo":1.454,"ork":1.451,"ndt":1.447,"tel":1.445,"sse":1.439,"log":1.438,"hei":1.435,"epr":1.43,"isi":1.43,"rel":1.428,"mai":1.427,"off":1.423,"top":1.42,"tis":1.416,"iew":1.416,"cen":1.412,"net":1.41,"cia":1.408,"low":1.402,"nan":1.4,"erm":1.399,"vel":1.396,"has":1.395,"wer":1.394,"onl":1.393,"oul":1.392,"ose":1.389,"dto":1.389,"ade":1.387,"ake":1.387,"hot":1.385,"let":1.379,"cre":1.37,"war":1.366,"oll":1.363,"ery":1.36,"fic":1.358,"gen":1.344,"ien":1.343,"lar":1.337,"oli":1.335,"vid":1.334,"rev":1.333,"mpl":1.333,"ach":1.33,"ari":1.328,"its":1.327,"ish":1.326,"ndo":1.324,"ews":1.324,"ili":1.323,"vic":1.321,"eda":1.31,"lec":1.309,"bou":1.309,"spo":1.304,"ult":1.304,"rvi":1.303,"but":1.303,"tar":1.301,"nga":1.301,"hom":1.3,"fer":1.299,"sel":1.297,"acc":1.289,"ick":1.287,"hep":1.286,"eed":1.286,"ges":1.283,"ian":1.28,"sec":1.278,"gre":1.278,"ory":1.275,"rig":1.273,"tai":1.268,"rst":1.267,"cor":1.263,"pag":1.26,"rre":1.254,"dre":1.245,"ela":1.244,"ata":1.243,"emo":1.241,"alt":1.24}');var o,c=a.t(s,2);Object.freeze(n),Object.freeze(c),function(e){class t extends r.U{constructor(e){super("ngram2",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(n)}}e.Ngram2=t,Object.freeze(t),Object.freeze(t.prototype);class a extends r.U{constructor(e){super("ngram3",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(c)}}e.Ngram3=a,Object.freeze(a),Object.freeze(a.prototype)}(o||(o={})),Object.freeze(o)}}]); //# sourceMappingURL=Ngrams-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/Ngrams-ts.js.map b/client/chunk/lang/Ngrams-ts.js.map index 8c974aa8..62e49d56 100644 --- a/client/chunk/lang/Ngrams-ts.js.map +++ b/client/chunk/lang/Ngrams-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Ngrams.ts"],"names":["Ngrams","Object","freeze","Ngram2","Lang","weightScaling","super","prototype","Ngram3"],"mappings":"+/NAQiBA,E,WALjBC,OAAOC,OAAO,GACdD,OAAOC,OAAO,GAId,SAAiBF,GAKhB,MAAaG,UAAeC,EAAA,EAC3B,YAAmBC,GAClBC,MAAM,SAAUD,GAEV,eACN,OAAOD,EAAA,2BAA8B,IAL1B,EAAAD,OAAM,EASnBF,OAAOC,OAAOC,GACdF,OAAOC,OAAOC,EAAOI,WAKrB,MAAaC,UAAeJ,EAAA,EAC3B,YAAmBC,GAClBC,MAAM,SAAUD,GAEV,eACN,OAAOD,EAAA,2BAA8B,IAL1B,EAAAI,OAAM,EASnBP,OAAOC,OAAOM,GACdP,OAAOC,OAAOM,EAAOD,WA9BtB,CAAiBP,MAAM,KAgCvBC,OAAOC,OAAOF","file":"chunk/lang/Ngrams-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/Ngrams.ts"],"names":["Ngrams","Object","freeze","Lang","weightScaling","super","Ngram2","prototype","Ngram3"],"mappings":"igOAQiBA,E,WALjBC,OAAOC,OAAO,GACdD,OAAOC,OAAO,GAIP,SAAU,GAKT,gBAAqBC,EAAA,EACpB,YAAYC,GAClBC,MAAM,SAAUD,GAAA,eAGhB,OAAOD,EAAA,2BAA8B,IALhC,EAAMG,SASbL,OAAOC,OAAOI,GACdL,OAAOC,OAAOI,EAAOC,WAKd,gBAAqBJ,EAAA,EACpB,YAAYC,GAClBC,MAAM,SAAUD,GAAA,eAGhB,OAAOD,EAAA,2BAA8B,IALhC,EAAMK,SASbP,OAAOC,OAAOM,GACdP,OAAOC,OAAOM,EAAOD,WA9Bf,CAAUP,MAAA,KAgCjBC,OAAOC,OAAOF","file":"chunk/lang/Ngrams-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/Numpad-ts.js b/client/chunk/lang/Numpad-ts.js index f3d6ef76..a19c8404 100644 --- a/client/chunk/lang/Numpad-ts.js +++ b/client/chunk/lang/Numpad-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[683],{193:(e,t,s)=>{"use strict";s.r(t),s.d(t,{Numpad:()=>r});var r,c=s(115);!function(e){class t extends c.U{constructor(e){super("numpad",e)}static BUILD(){const e={};for(let t=0;t<100;t++){const s=t.toString().padStart(2,"0");e[s]={seq:s,weight:1}}return e}}e.Numpad=t,Object.freeze(t),Object.freeze(t.prototype)}(r||(r={})),Object.freeze(r)}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[683],{444:(e,t,s)=>{"use strict";s.r(t),s.d(t,{Numpad:()=>c});var c,r=s(208);!function(e){class t extends r.U{constructor(e){super("numpad",e)}static BUILD(){const e={};for(let t=0;t<100;t++){const s=t.toString().padStart(2,"0");e[s]={seq:s,weight:1}}return e}}e.Numpad=t,Object.freeze(t),Object.freeze(t.prototype)}(c||(c={})),Object.freeze(c)}}]); //# sourceMappingURL=Numpad-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/Numpad-ts.js.map b/client/chunk/lang/Numpad-ts.js.map index 9621d7b6..21cdc87b 100644 --- a/client/chunk/lang/Numpad-ts.js.map +++ b/client/chunk/lang/Numpad-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Numpad.ts"],"names":["Numpad","weightScaling","super","dict","i","str","toString","padStart","seq","weight","Object","freeze","prototype"],"mappings":"iIAEiBA,E,UAAjB,SAAiB,GAIhB,MAAaA,UAAe,IAC3B,YAAmBC,GAClBC,MAAM,SAAUD,GAEV,eACN,MAAME,EAA4C,GAClD,IAAK,IAAIC,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC7B,MAAMC,EAAMD,EAAEE,WAAWC,SAAS,EAAE,KACpCJ,EAAKE,GAAO,CAAEG,IAAKH,EAAKI,OAAQ,GAEjC,OAAON,GAVI,EAAAH,OAAM,EAcnBU,OAAOC,OAAOX,GACdU,OAAOC,OAAOX,EAAOY,WAnBtB,CAAiBZ,MAAM,KAqBvBU,OAAOC,OAAOX","file":"chunk/lang/Numpad-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/Numpad.ts"],"names":["Numpad","weightScaling","super","dict","i","str","toString","padStart","seq","weight","Object","freeze","prototype"],"mappings":"mIAEiBA,E,UAAV,SAAU,GAIT,gBAAqB,IACpB,YAAYC,GAClBC,MAAM,SAAUD,GAAA,eAGhB,MAAME,EAAgC,GACtC,QAASC,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC7B,MAAMC,EAAMD,EAAEE,WAAWC,SAAS,EAAE,KACpCJ,EAAKE,GAAO,CAAEG,IAAKH,EAAKI,OAAQ,GAEjC,OAAON,GAVF,EAAMH,OAAA,EAcbU,OAAOC,OAAO,GACdD,OAAOC,OAAO,EAAOC,WAnBf,CAAUZ,MAAA,KAqBjBU,OAAOC,OAAOX","file":"chunk/lang/Numpad-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/Shell-ts.js b/client/chunk/lang/Shell-ts.js index e63f7e04..dd4486a6 100644 --- a/client/chunk/lang/Shell-ts.js +++ b/client/chunk/lang/Shell-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[159],{521:(e,t,c)=>{"use strict";var r;c.r(t),c.d(t,{Shell:()=>r}),function(e){e.UnixAndShell=Object.freeze(["env","chroot","fg","bg","ps","jobs","kill","source","xargs","test","time","echo","printf","cd","pwd","ls","find","grep","mkdir","rm","mv","cp","chmod","ln","touch","cat","tac","head","tail","nl","od","more","less","sort","uniq","file","cksum","wc","awk","sed"]),e.Other=Object.freeze(["vim","vi","nano","tig","perl"]),e.Git=Object.freeze(["init","clone","fetch","merge","push","status","diff","add","restore","commit","switch","branch","worktree","gc","fsck","prune","log"])}(r||(r={}))}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[159],{25:(e,c,t)=>{"use strict";var r,s;t.r(c),t.d(c,{Shell:()=>r}),(s=r||(r={})).UnixAndShell=Object.freeze(["env","chroot","fg","bg","ps","jobs","kill","source","xargs","test","time","echo","printf","cd","pwd","ls","find","grep","mkdir","rm","mv","cp","chmod","ln","touch","cat","tac","head","tail","nl","od","more","less","sort","uniq","file","cksum","wc","awk","sed"]),s.Other=Object.freeze(["vim","vi","nano","tig","perl"]),s.Git=Object.freeze(["init","clone","fetch","merge","push","status","diff","add","restore","commit","switch","branch","worktree","gc","fsck","prune","log"])}}]); //# sourceMappingURL=Shell-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/Shell-ts.js.map b/client/chunk/lang/Shell-ts.js.map index b89f4199..33b11e04 100644 --- a/client/chunk/lang/Shell-ts.js.map +++ b/client/chunk/lang/Shell-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/Shell.ts"],"names":["Shell","UnixAndShell","Object","freeze","Other","Git"],"mappings":"gGAMO,IAAUA,E,4BAAjB,SAAiBA,GACH,EAAAC,aAAeC,OAAOC,OAAc,CAGhD,MAAO,SAAU,KAAM,KAAM,KAAM,OAAQ,OAC3C,SAAU,QAAS,OAAgC,OACnD,OAAQ,SAER,KAAM,MACN,KAAuB,OAAQ,OAC/B,QAAS,KAAM,KAAM,KAAM,QAAS,KAAM,QAE1C,MAAO,MAAO,OAAQ,OAAQ,KAAM,KACpC,OAAQ,OAER,OAAQ,OACR,OAAQ,QAAS,KACjB,MAAO,QAEK,EAAAC,MAAQF,OAAOC,OAAc,CACzC,MAAO,KAAM,OACb,MACA,SAEY,EAAAE,IAAMH,OAAOC,OAAc,CACvC,OAAQ,QAAS,QAAS,QAAS,OACnC,SAAU,OAAQ,MAAO,UAAW,SACpC,SAAU,SAAU,WACpB,KAAM,OAAQ,QACd,QA7BF,CAAiBH,MAAK","file":"chunk/lang/Shell-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/Shell.ts"],"names":["Shell","UnixAndShell","Object","freeze","Other","Git"],"mappings":"iGAMO,IAAUA,EAAA,E,6BAAA,EAAAA,MAAA,KACHC,aAAeC,OAAOC,OAAc,CAGhD,MAAO,SAAU,KAAM,KAAM,KAAM,OAAQ,OAC3C,SAAU,QAAS,OAAgC,OACnD,OAAQ,SAER,KAAM,MACN,KAAuB,OAAQ,OAC/B,QAAS,KAAM,KAAM,KAAM,QAAS,KAAM,QAE1C,MAAO,MAAO,OAAQ,OAAQ,KAAM,KACpC,OAAQ,OAER,OAAQ,OACR,OAAQ,QAAS,KACjB,MAAO,QAEK,EAAAC,MAAQF,OAAOC,OAAc,CACzC,MAAO,KAAM,OACb,MACA,SAEY,EAAAE,IAAMH,OAAOC,OAAc,CACvC,OAAQ,QAAS,QAAS,QAAS,OACnC,SAAU,OAAQ,MAAO,UAAW,SACpC,SAAU,SAAU,WACpB,KAAM,OAAQ,QACd","file":"chunk/lang/Shell-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/chunk/lang/defs-Chinese-ts.js b/client/chunk/lang/defs-Chinese-ts.js index 9d1420ae..3598dd4a 100644 --- a/client/chunk/lang/defs-Chinese-ts.js +++ b/client/chunk/lang/defs-Chinese-ts.js @@ -1 +1 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[704],{958:()=>{}}]); \ No newline at end of file +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[704],{711:()=>{}}]); \ No newline at end of file diff --git a/client/chunk/lang/defs-English100-ts.js b/client/chunk/lang/defs-English100-ts.js index 681d93fa..be4943fb 100644 --- a/client/chunk/lang/defs-English100-ts.js +++ b/client/chunk/lang/defs-English100-ts.js @@ -1,2 +1,2 @@ -(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[885],{213:(e,o,t)=>{"use strict";t.r(o),t.d(o,{default:()=>a});const a=["the","be","to","of","and","a","in","that","have","I","it","for","not","on","with","he","as","you","do","at","this","but","his","by","from","they","we","say","her","she","or","an","will","my","one","all","would","there","their","what","so","up","out","if","about","who","get","which","go","me","when","make","can","like","time","no","just","him","know","take","people","into","year","your","good","some","could","them","see","other","than","then","now","look","only","come","its","over","think","also","back","after","use","two","how","our","work","first","well","way","even","new","want","because","any","these","give","day","most","us"]}}]); +(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[885],{589:(e,o,t)=>{"use strict";t.r(o),t.d(o,{default:()=>a});const a=["the","be","to","of","and","a","in","that","have","I","it","for","not","on","with","he","as","you","do","at","this","but","his","by","from","they","we","say","her","she","or","an","will","my","one","all","would","there","their","what","so","up","out","if","about","who","get","which","go","me","when","make","can","like","time","no","just","him","know","take","people","into","year","your","good","some","could","them","see","other","than","then","now","look","only","come","its","over","think","also","back","after","use","two","how","our","work","first","well","way","even","new","want","because","any","these","give","day","most","us"]}}]); //# sourceMappingURL=defs-English100-ts.js.map \ No newline at end of file diff --git a/client/chunk/lang/defs-English100-ts.js.map b/client/chunk/lang/defs-English100-ts.js.map index d572da3c..b092615f 100644 --- a/client/chunk/lang/defs-English100-ts.js.map +++ b/client/chunk/lang/defs-English100-ts.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/base/lang/impl/defs/English100.ts"],"names":[],"mappings":"8HACA,SACA,MACA,KACA,KACA,KACA,MACA,IACA,KACA,OACA,OACA,IACA,KACA,MACA,MACA,KACA,OACA,KACA,KACA,MACA,KACA,KACA,OACA,MACA,MACA,KACA,OACA,OACA,KACA,MACA,MACA,MACA,KACA,KACA,OACA,KACA,MACA,MACA,QACA,QACA,QACA,OACA,KACA,KACA,MACA,KACA,QACA,MACA,MACA,QACA,KACA,KACA,OACA,OACA,MACA,OACA,OACA,KACA,OACA,MACA,OACA,OACA,SACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,MACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,MACA,OACA,QACA,OACA,OACA,QACA,MACA,MACA,MACA,MACA,OACA,QACA,OACA,MACA,OACA,MACA,OACA,UACA,MACA,QACA,OACA,MACA,OACA","file":"chunk/lang/defs-English100-ts.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/base/lang/impl/defs/English100.ts"],"names":[],"mappings":"gIACA,SACA,MACA,KACA,KACA,KACA,MACA,IACA,KACA,OACA,OACA,IACA,KACA,MACA,MACA,KACA,OACA,KACA,KACA,MACA,KACA,KACA,OACA,MACA,MACA,KACA,OACA,OACA,KACA,MACA,MACA,MACA,KACA,KACA,OACA,KACA,MACA,MACA,QACA,QACA,QACA,OACA,KACA,KACA,MACA,KACA,QACA,MACA,MACA,QACA,KACA,KACA,OACA,OACA,MACA,OACA,OACA,KACA,OACA,MACA,OACA,OACA,SACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,MACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,MACA,OACA,QACA,OACA,OACA,QACA,MACA,MACA,MACA,MACA,OACA,QACA,OACA,MACA,OACA,MACA,OACA,UACA,MACA,QACA,OACA,MACA,OACA","file":"chunk/lang/defs-English100-ts.js","sourceRoot":""} \ No newline at end of file diff --git a/client/css-common.css.map b/client/css-common.css.map index acde9d98..d473047c 100644 --- a/client/css-common.css.map +++ b/client/css-common.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/style/general.css","webpack://snakey3/./src/style/common.css"],"names":[],"mappings":"AAEA,WACC,qCACD,CACA,yBACC,KACC,qBACD,CACD,CAEA,MACC,sBAAuB,CACvB,uDAIC,CACD,eAAoB,CACpB,0BAAoC,CACpC,iBAAsB,CACtB,iCACD,CAEA,KACC,QACD,CAEA,UACC,kBACD,CAEA,EACC,oBAAqB,CACrB,2BAA4B,CAC5B,0CACD,CACA,oBACC,SAAW,CACX,UACD,CACA,0BACC,4BACD,CACA,0BACC,+BAAoC,CACpC,kBAAoB,CACpB,4BACD,CACA,2BACC,iBACD,CAEA,MACC,gBACD,CACA,OACC,YAAmB,CACnB,aAAmB,CACnB,SAAe,CACf,qCACD,CACA,gBACC,UACD,CACA,MACC,YAAuB,CACvB,kBAAuB,CACvB,qBACD,CCnEA,aACC,iBAAkB,CAClB,KAAM,CAAE,OAAQ,CAAE,QAAS,CAAE,MAAO,CACpC,sBACD,CAEA,sBACC,gBAAwB,CACxB,qBAAwB,CACxB,wBAAwB,CACxB,oBACD,CAEA,iBACC,mBAA+B,CAC/B,sBAA0B,CAC1B,oBAA0B,CAC1B,oBAA0B,CAC1B,kBACD,CACA,gBACC,iBACD,CACA,kBACC,iBACD,CAMA,gBACC,qCAAsC,CACtC,sBAAuB,CACvB,2DAGD,CACA,kBACC,cAAsB,CACtB,iBACD,CACA,0CACC,SACD,CACA,kDACC,mBACD,CACA,qCACC,kCAAoC,CACpC,qBAA8B,CAC9B,mCAAwC,CACxC,0BAAwC,CACxC,qCAAwC,CACxC,2BACD,CAEA,2CACC,YAAoB,CACpB,iCAAoC,CACpC,2EACD,CACA,8DACC,qBAA+B,CAC/B,UACD,CACA,qCACC,GACC,6BAAkC,CAClC,qCACD,CACA,GACC,+BAAwC,CACxC,qCACD,CACD","file":"css-common.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/style/general.css","webpack://capswalk/./src/style/common.css"],"names":[],"mappings":"AAEA,WACC,qCACD,CACA,yBACC,KACC,qBACD,CACD,CAEA,MACC,sBAAuB,CACvB,uDAIC,CACD,eAAoB,CACpB,0BAAoC,CACpC,iBAAsB,CACtB,iCACD,CAEA,KACC,QACD,CAEA,UACC,kBACD,CAEA,EACC,oBAAqB,CACrB,2BAA4B,CAC5B,0CACD,CACA,oBACC,SAAW,CACX,UACD,CACA,0BACC,4BACD,CACA,0BACC,+BAAoC,CACpC,kBAAoB,CACpB,4BACD,CACA,2BACC,iBACD,CAEA,MACC,gBACD,CACA,OACC,YAAmB,CACnB,aAAmB,CACnB,SAAe,CACf,qCACD,CACA,gBACC,UACD,CACA,MACC,YAAuB,CACvB,kBAAuB,CACvB,qBACD,CCnEA,aACC,iBAAkB,CAClB,KAAM,CAAE,OAAQ,CAAE,QAAS,CAAE,MAAO,CACpC,sBACD,CAEA,sBACC,gBAAwB,CACxB,qBAAwB,CACxB,wBAAwB,CACxB,oBACD,CAEA,iBACC,mBAA+B,CAC/B,sBAA0B,CAC1B,oBAA0B,CAC1B,oBAA0B,CAC1B,kBACD,CACA,gBACC,iBACD,CACA,kBACC,iBACD,CAMA,gBACC,qCAAsC,CACtC,sBAAuB,CACvB,2DAGD,CACA,kBACC,cAAsB,CACtB,iBACD,CACA,0CACC,SACD,CACA,kDACC,mBACD,CACA,qCACC,kCAAoC,CACpC,qBAA8B,CAC9B,mCAAwC,CACxC,0BAAwC,CACxC,qCAAwC,CACxC,2BACD,CAEA,2CACC,YAAoB,CACpB,iCAAoC,CACpC,2EACD,CACA,8DACC,qBAA+B,CAC/B,UACD,CACA,qCACC,GACC,6BAAkC,CAClC,qCACD,CACA,GACC,+BAAwC,CACxC,qCACD,CACD","file":"css-common.css","sourceRoot":""} \ No newline at end of file diff --git a/client/css-common.js b/client/css-common.js index 11715e0a..ef0eab45 100644 --- a/client/css-common.js +++ b/client/css-common.js @@ -1,2 +1,2 @@ -var snakey3;snakey3=(()=>{"use strict";var e,t,r,n,a,o,s,l={22:(e,t,r)=>{r.r(t)}},i={};function u(e){if(i[e])return i[e].exports;var t=i[e]={exports:{}};return l[e](t,t.exports,u),t.exports}return u.m=l,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,u.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var a=Object.create(null);u.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var s=2&n&&r;"object"==typeof s&&!~e.indexOf(s);s=t(s))Object.getOwnPropertyNames(s).forEach((e=>o[e]=()=>r[e]));return o.default=()=>r,u.d(a,o),a},u.d=(e,t)=>{for(var r in t)u.o(t,r)&&!u.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},u.f={},u.e=e=>Promise.all(Object.keys(u.f).reduce(((t,r)=>(u.f[r](e,t),t)),[])),u.u=e=>826===e?"index.js":"chunk/"+({68:"game-css",159:"lang/Shell-ts",184:"lang/English-ts",227:"lang/Korean-ts",273:"lang/Ngrams-ts",330:"lang/Chinese-ts",410:"lang/Japanese-ts",683:"lang/Numpad-ts",704:"lang/defs-Chinese-ts",755:"game/offline",775:"game/online",858:"lang/Emote-ts",885:"lang/defs-English100-ts"}[e]||e)+".js",u.miniCssF=e=>280===e?"css-common.css":826===e?"index.css":"chunk/"+({68:"game-css",159:"lang/Shell-ts",184:"lang/English-ts",227:"lang/Korean-ts",273:"lang/Ngrams-ts",330:"lang/Chinese-ts",410:"lang/Japanese-ts",683:"lang/Numpad-ts",704:"lang/defs-Chinese-ts",755:"game/offline",775:"game/online",858:"lang/Emote-ts",885:"lang/defs-English100-ts"}[e]||e)+".css",u.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),u.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},n="snakey3:",u.l=(e,t,a)=>{if(r[e])r[e].push(t);else{var o,s;if(void 0!==a)for(var l=document.getElementsByTagName("script"),i=0;i{o.onerror=o.onload=null,clearTimeout(c);var a=r[e];if(delete r[e],o.parentNode&&o.parentNode.removeChild(o),a&&a.forEach((e=>e(n))),t)return t(n)},c=setTimeout(d.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=d.bind(null,o.onerror),o.onload=d.bind(null,o.onload),s&&document.head.appendChild(o)}},u.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},u.H={},u.G=e=>{Object.keys(u.H).map((t=>{u.H[t](e)}))},u.p="./",a=e=>new Promise(((t,r)=>{var n=u.miniCssF(e),a=u.p+n;if(((e,t)=>{for(var r=document.getElementsByTagName("link"),n=0;n{var a=document.createElement("link");a.setAttribute("disable","true"),a.rel="stylesheet",a.type="text/css",a.onerror=a.onload=o=>{if(a.onerror=a.onload=null,"load"===o.type)r();else{var s=o&&("load"===o.type?"missing":o.type),l=o&&o.target&&o.target.href||t,i=new Error("Loading CSS chunk "+e+" failed.\n("+l+")");i.code="CSS_CHUNK_LOAD_FAILED",i.type=s,i.request=l,a.parentNode.removeChild(a),n(i)}},a.href=t,document.head.appendChild(a)})(e,a,t,r)})),o={280:0},u.f.miniCss=(e,t)=>{o[e]?t.push(o[e]):0!==o[e]&&{68:1,826:1}[e]&&t.push(o[e]=a(e).then((()=>{o[e]=0}),(t=>{throw delete o[e],t})))},(()=>{var e={280:0},t=[[22]];u.f.j=(t,r)=>{var n=u.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise(((r,a)=>{n=e[t]=[r,a]}));r.push(n[2]=a);var o=u.p+u.u(t),s=new Error;u.l(o,(r=>{if(u.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",s.name="ChunkLoadError",s.type=a,s.request=o,n[1](s)}}),"chunk-"+t)}},u.H.j=t=>{if(!u.o(e,t)||void 0===e[t]){e[t]=null;var r=document.createElement("link");r.charset="utf-8",u.nc&&r.setAttribute("nonce",u.nc),r.rel="preload",r.as="script",r.href=u.p+u.u(t),document.head.appendChild(r)}};var r=()=>{};function n(){for(var r,n=0;n{}),r}u.x=()=>{u.x=()=>{},o=o.slice();for(var e=0;e{for(var a,o,[l,i,f,d]=n,c=0,g=[];c{for(var t=s[e],r=0;Array.isArray(t)&&r{"use strict";var e,t,r,n,a,o,l={768:(e,t,r)=>{r.r(t)}},s={};function i(e){if(s[e])return s[e].exports;var t=s[e]={exports:{}};return l[e](t,t.exports,i),t.exports}i.m=l,i.x=e=>{},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(r,n){if(1&n&&(r=this(r)),8&n)return r;if("object"==typeof r&&r){if(4&n&&r.__esModule)return r;if(16&n&&"function"==typeof r.then)return r}var a=Object.create(null);i.r(a);var o={};e=e||[null,t({}),t([]),t(t)];for(var l=2&n&&r;"object"==typeof l&&!~e.indexOf(l);l=t(l))Object.getOwnPropertyNames(l).forEach((e=>o[e]=()=>r[e]));return o.default=()=>r,i.d(a,o),a},i.d=(e,t)=>{for(var r in t)i.o(t,r)&&!i.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,r)=>(i.f[r](e,t),t)),[])),i.u=e=>826===e?"index.js":"chunk/"+({122:"colour-schemes",159:"lang/Shell-ts",184:"lang/English-ts",227:"lang/Korean-ts",273:"lang/Ngrams-ts",330:"lang/Chinese-ts",410:"lang/Japanese-ts",683:"lang/Numpad-ts",704:"lang/defs-Chinese-ts",755:"game/offline",775:"game/online",858:"lang/Emote-ts",885:"lang/defs-English100-ts"}[e]||e)+".js",i.miniCssF=e=>826===e?"index.css":"chunk/"+{122:"colour-schemes",755:"game/offline",775:"game/online"}[e]+".css",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),r={},n="capswalk:",i.l=(e,t,a,o)=>{if(r[e])r[e].push(t);else{var l,s;if(void 0!==a)for(var u=document.getElementsByTagName("script"),d=0;d{l.onerror=l.onload=null,clearTimeout(p);var a=r[e];if(delete r[e],l.parentNode&&l.parentNode.removeChild(l),a&&a.forEach((e=>e(n))),t)return t(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:l}),12e4);l.onerror=c.bind(null,l.onerror),l.onload=c.bind(null,l.onload),s&&document.head.appendChild(l)}},i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.p="./",a=e=>new Promise(((t,r)=>{var n=i.miniCssF(e),a=i.p+n;if(((e,t)=>{for(var r=document.getElementsByTagName("link"),n=0;n{var a=document.createElement("link");a.setAttribute("disable","true"),a.rel="stylesheet",a.type="text/css",a.onerror=a.onload=o=>{if(a.onerror=a.onload=null,"load"===o.type)r();else{var l=o&&("load"===o.type?"missing":o.type),s=o&&o.target&&o.target.href||t,i=new Error("Loading CSS chunk "+e+" failed.\n("+s+")");i.code="CSS_CHUNK_LOAD_FAILED",i.type=l,i.request=s,a.parentNode.removeChild(a),n(i)}},a.href=t,document.head.appendChild(a)})(e,a,t,r)})),o={280:0},i.f.miniCss=(e,t)=>{o[e]?t.push(o[e]):0!==o[e]&&{122:1,755:1,775:1,826:1}[e]&&t.push(o[e]=a(e).then((()=>{o[e]=0}),(t=>{throw delete o[e],t})))},(()=>{var e={280:0},t=[[768]];i.f.j=(t,r)=>{var n=i.o(e,t)?e[t]:void 0;if(0!==n)if(n)r.push(n[2]);else{var a=new Promise(((r,a)=>{n=e[t]=[r,a]}));r.push(n[2]=a);var o=i.p+i.u(t),l=new Error;i.l(o,(r=>{if(i.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=r&&("load"===r.type?"missing":r.type),o=r&&r.target&&r.target.src;l.message="Loading chunk "+t+" failed.\n("+a+": "+o+")",l.name="ChunkLoadError",l.type=a,l.request=o,n[1](l)}}),"chunk-"+t,t)}};var r=e=>{},n=(n,a)=>{for(var o,l,[s,u,d,f]=a,c=0,p=[];c{}),r}a.forEach(n.bind(null,0)),a.push=n.bind(null,a.push.bind(a));var l=i.x;i.x=()=>(i.x=l||(e=>{}),(r=o)())})();var u=i.x();capswalk=u})(); //# sourceMappingURL=css-common.js.map \ No newline at end of file diff --git a/client/css-common.js.map b/client/css-common.js.map index a1cc4a3f..b41b18f8 100644 --- a/client/css-common.js.map +++ b/client/css-common.js.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/webpack/runtime/create fake namespace object","webpack://snakey3/webpack/runtime/load script","webpack://snakey3/webpack/runtime/css loading","webpack://snakey3/webpack/runtime/chunk preload trigger","webpack://snakey3/webpack/bootstrap","webpack://snakey3/webpack/startup","webpack://snakey3/webpack/runtime/define property getters","webpack://snakey3/webpack/runtime/ensure chunk","webpack://snakey3/webpack/runtime/get javascript chunk filename","webpack://snakey3/webpack/runtime/get mini-css chunk filename","webpack://snakey3/webpack/runtime/global","webpack://snakey3/webpack/runtime/hasOwnProperty shorthand","webpack://snakey3/webpack/runtime/make namespace object","webpack://snakey3/webpack/runtime/chunk preload function","webpack://snakey3/webpack/runtime/publicPath","webpack://snakey3/webpack/runtime/jsonp chunk loading"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","chunkToChildrenMap","__webpack_module_cache__","__webpack_require__","moduleId","exports","module","__webpack_modules__","m","Object","getPrototypeOf","obj","__proto__","t","value","mode","this","__esModule","then","ns","create","r","def","current","indexOf","getOwnPropertyNames","forEach","key","d","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","miniCssF","g","globalThis","Function","window","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","undefined","scripts","document","getElementsByTagName","i","length","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","H","G","map","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","280","miniCss","installedChunks","deferredModules","j","installedChunkData","promise","error","realSrc","message","name","link","as","checkDeferredModules","checkDeferredModulesImpl","result","deferredModule","fulfilled","depId","splice","x","chunkLoadingGlobal","slice","webpackJsonpCallback","data","chunkIds","moreModules","runtime","executeModules","resolves","parentChunkLoadingFunction","shift","apply","self","preload","chunks","Array","isArray"],"mappings":"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","file":"css-common.js","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/webpack/runtime/create fake namespace object","webpack://capswalk/webpack/runtime/load script","webpack://capswalk/webpack/runtime/css loading","webpack://capswalk/webpack/bootstrap","webpack://capswalk/webpack/runtime/define property getters","webpack://capswalk/webpack/runtime/ensure chunk","webpack://capswalk/webpack/runtime/get javascript chunk filename","webpack://capswalk/webpack/runtime/get mini-css chunk filename","webpack://capswalk/webpack/runtime/hasOwnProperty shorthand","webpack://capswalk/webpack/runtime/make namespace object","webpack://capswalk/webpack/runtime/publicPath","webpack://capswalk/webpack/runtime/jsonp chunk loading","webpack://capswalk/webpack/startup"],"names":["leafPrototypes","getProto","inProgress","dataWebpackPrefix","loadStylesheet","installedCssChunks","__webpack_module_cache__","__webpack_require__","moduleId","exports","module","__webpack_modules__","m","x","Object","getPrototypeOf","obj","t","value","mode","this","__esModule","then","ns","create","r","def","current","indexOf","getOwnPropertyNames","forEach","key","d","definition","o","defineProperty","enumerable","get","f","e","chunkId","Promise","all","keys","reduce","promises","u","miniCssF","prop","prototype","hasOwnProperty","call","l","url","done","push","script","needAttach","undefined","scripts","document","getElementsByTagName","i","length","s","getAttribute","createElement","charset","timeout","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","fn","setTimeout","bind","type","target","head","appendChild","Symbol","toStringTag","p","resolve","reject","href","fullhref","existingLinkTags","dataHref","tag","rel","existingStyleTags","findStylesheet","linkTag","errorType","realHref","err","Error","code","request","createStylesheet","280","miniCss","installedChunks","deferredModules","j","installedChunkData","promise","error","realSrc","message","name","checkDeferredModules","webpackJsonpCallback","parentChunkLoadingFunction","data","chunkIds","moreModules","runtime","executeModules","resolves","shift","apply","chunkLoadingGlobal","self","checkDeferredModulesImpl","result","deferredModule","fulfilled","depId","splice","startup","__webpack_exports__"],"mappings":"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","file":"css-common.js","sourceRoot":""} \ No newline at end of file diff --git a/client/index.css b/client/index.css index 1f41c45e..cdd1a8f8 100644 --- a/client/index.css +++ b/client/index.css @@ -1,2 +1,2 @@ -@media print{:root{--colour-mainFg:#000!important;--colour-mainBg:#fff!important;--colour-tileFg:#000!important;--colour-tileBg:#fff!important;--colour-tileBd:#000!important;--colour-healthFg:#000!important;--colour-healthBg:#fff!important;--colour-pFaceMe:grey!important;--colour-pFaceMeOppo:grey!important;--colour-pFaceTeammate:grey!important;--colour-pFaceImtlTeammate:grey!important;--colour-pFaceOpponent:grey!important;--colour-pFaceImtlOpponent:grey!important}}[data-sk-colour-scheme=snakey]{--colour-mainFg:#e9eef3;--colour-mainBg:#3f5e77;--colour-tileFg:#e9eef3;--colour-tileBg:#2e3b48;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#4edf8f;--colour-pFaceMe:#35e7ff;--colour-pFaceMeOppo:#937ad8;--colour-pFaceTeammate:#f8d150;--colour-pFaceImtlTeammate:#f8d150;--colour-pFaceOpponent:#ec4daf;--colour-pFaceImtlOpponent:#e23fa3}#all-screens-container{display:contents}.sk-screen{contain:strict;position:absolute;top:0;right:0;bottom:0;left:0;overflow:auto}.sk-screen:not([data-current]){display:none}#background{z-index:-10000;display:initial;background-color:var(--colour-mainBg)}#screen-texture,#screen-tint{pointer-events:none;z-index:10000;display:initial}#screen-tint{opacity:0;transition-property:opacity,background-color;transition-duration:333ms;transition-timing-function:ease-in-out;background-color:var(--colour-mainBg)}#screen-texture{background-size:13.5rem;mix-blend-mode:overlay;background-color:#919191;background-image:url(images/textures/cheap_diagonal_fabric.png);background-blend-mode:color-burn;filter:contrast(2.3)}.style-m_this_2fw8L{display:flex}.style-m_nav_3bXQ_{--spacing:6px;--border-radius:1rem;height:30em;max-height:80vmin;width:30em;max-width:80vmin;display:grid;grid-template:"pofl pofl pofl ponl" 3fr "htpl htpl htpl hths" 1fr "colr colr colr . " 1fr "repo bugs . . " 1fr/1fr 1fr 1fr 3fr}.style-m_nav_3bXQ_>*{border-style:double!important}.style-m_nav--play-offline_27pYK{grid-area:pofl}.style-m_nav--play-online_1cZmp{grid-area:ponl}.style-m_nav--how-to-play_29Ok3{grid-area:htpl}.style-m_nav--how-to-host_1Me42{grid-area:hths}.style-m_nav--colour-scheme_31wBm{grid-area:colr}.style-m_nav--goto-repo_2mwhS{grid-area:repo;text-decoration:none}.style-m_nav--report-issue_QdLSQ{grid-area:bugs;text-decoration:none}[data-sk-colour-scheme=smooth-stone]{--colour-mainFg:#c3c5ce;--colour-mainBg:#72888d;--colour-tileFg:#a2b6bb;--colour-tileBg:#546164;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#398f5a;--colour-pFaceMe:#43aec9;--colour-pFaceMeOppo:#5a5f9c;--colour-pFaceTeammate:#bdae58;--colour-pFaceImtlTeammate:#f8df50;--colour-pFaceOpponent:#a34e59;--colour-pFaceImtlOpponent:#e23fa3}[data-sk-colour-scheme=murky-dive]{--colour-mainFg:#c3c5ce;--colour-mainBg:#336465;--colour-tileFg:#e7efef;--colour-tileBg:#283e3f;--colour-tileBd:#fff;--colour-healthFg:#1d3633;--colour-healthBg:#37dfc6;--colour-pFaceMe:#03f9ed;--colour-pFaceMeOppo:#898697;--colour-pFaceTeammate:#fba;--colour-pFaceImtlTeammate:#ffcabd;--colour-pFaceOpponent:#ff4f6c;--colour-pFaceImtlOpponent:#ff6d85}.style-m_this_2usro{display:grid;justify-content:center;align-content:center}.style-m_this_2usro .screen--prev-button{position:absolute;margin:.7em;padding:.5em;border-radius:.5em}.style-m_this_2usro .skpickone-m_this_1P7KX{--padding:0.5em;gap:var(--padding);padding:var(--padding);border:.3em solid var(--colour-tileBd);border-radius:1.45em}.style-m_opt_2GxiP{--swatch-square-dimensions:2em;contain:content;display:grid;grid-template-columns:auto repeat(7,var(--swatch-square-dimensions));align-items:center;gap:.35em;padding:.3em;border:.2em solid var(--colour-mainBg);border-radius:.9em;color:var(--colour-mainFg);background-color:var(--colour-mainBg)}.style-m_opt_2GxiP[aria-active-descendant=true]{border-color:var(--colour-tile-Bd);border-style:dotted}.style-m_opt_2GxiP[aria-selected=true]{text-decoration:none;border-color:var(--colour-tile-Bd)}.style-m_opt_2GxiP>*{height:var(--swatch-square-dimensions);box-sizing:border-box;border:.2em solid var(--colour-tileBd);border-radius:.45em}.style-m_opt-label_2nPC6{height:auto;padding:.3em .7em;text-align:end}.style-m_opt-label--author_3LTv3{font-size:.6em;padding-bottom:.3em}.style-m_opt_2GxiP>:first-child{color:var(--colour-tileFg);background-color:var(--colour-tileBg);border:none}.style-m_opt_2GxiP>:nth-child(2){color:var(--colour-healthFg);background-color:var(--colour-healthBg)}.style-m_opt_2GxiP>:nth-child(3){background-color:var(--colour-pFaceMe)}.style-m_opt_2GxiP>:nth-child(4){background-color:var(--colour-pFaceMeOppo)}.style-m_opt_2GxiP>:nth-child(5){background-color:var(--colour-pFaceTeammate)}.style-m_opt_2GxiP>:nth-child(6){background-color:var(--colour-pFaceImtlTeammate)}.style-m_opt_2GxiP>:nth-child(7){background-color:var(--colour-pFaceOpponent)}.style-m_opt_2GxiP>:nth-child(8){background-color:var(--colour-pFaceImtlOpponent)}.skpickone-m_this_1P7KX{display:flex;flex-direction:column;align-items:stretch;overflow-x:hidden;overflow-y:auto;border-color:var(--colour-tileBd);text-align:start}.skpickone-m_this_1P7KX:focus{outline:none}.skpickone-m_opt_3w8x7{overflow:hidden hidden;cursor:default;transition-property:opacity;transition-duration:.35s;transition-timing-function:ease-out}.skpickone-m_this_1P7KX:focus .skpickone-m_opt_3w8x7:not([aria-active-descendant=true]):not([aria-selected=true]){opacity:.4}.skpickone-m_opt_3w8x7[aria-selected=true]{text-decoration:underline}.skpickone-m_this_1P7KX[aria-invalid=true]{border-style:dotted;border-width:.3rem}.style-m_this_18T-R{display:grid;justify-content:center;justify-items:center;align-content:center;align-items:center;gap:1em}.style-m_this_18T-R .screen--next-button,.style-m_this_18T-R .screen--prev-button{padding:.3em .7em;font-size:2em}.style-m_lang-weight-exagg_3vawC{width:100%}.style-m_this_1euFn{display:grid;grid-template:"controls main players" 100%/minmax(auto,1fr) auto minmax(auto,1fr)}.style-m_grid-wrapper_2jXbc{grid-area:main;contain:content;box-sizing:border-box;height:100%;padding:1rem 0}.style-m_controls-bar_fLS47{--spacing:0.3rem;--border-radius:0.7rem;--track-size:5rem;position:sticky;top:0;grid-area:controls;display:grid;grid-auto-rows:var(--track-size);grid-template-columns:minmax(var(--track-size),1fr);justify-items:stretch;align-items:stretch;font-size:80%}.style-m_controls-bar_fLS47>*{padding:.35em}.style-m_players-bar_BDHhb{grid-area:players}@media screen and (max-aspect-ratio:1/1){.style-m_this_1euFn{align-content:flex-start;grid-template:"main" calc(100vh - 7.5rem) "controls" max-content "players" auto/1fr}.style-m_grid-wrapper_2jXbc{padding:1rem 1rem 0}.style-m_controls-bar_fLS47{grid-template-columns:repeat(3,var(--track-size));grid-template-rows:var(--track-size)}}.grid-m_this_3RnyB{contain:content;height:100%;display:grid;align-content:center}.grid-m_scroll-outer_3To0V,.grid-m_this_3RnyB{position:relative}.grid-m_scroll-outer_3To0V{contain:style;overflow:auto auto;scroll-snap-type:both;scrollbar-width:none;box-sizing:border-box;border:5px double var(--colour-tileBd);border-radius:15px}.grid-m_scroll-outer_3To0V::-webkit-scrollbar{width:0;height:0}.grid-m_pause-overlay_3RB2_{pointer-events:none;contain:strict;cursor:pointer;position:fixed;padding:3em;border-radius:inherit;color:#fff;visibility:hidden;z-index:2}@media screen{.grid-m_this_3RnyB:focus{outline:none}}.style-m_content-wrapper_3PpQN{--spacing:0.2em;--border-radius:1.2em;height:27em;max-height:80vh;width:27em;max-width:90vw;display:grid;gap:7%;grid-template:"host-url host-url" 2fr "group-name group-name" 2fr "passphrase passphrase" 2fr "prev next" 1fr/1fr 1fr}.style-m_content-wrapper_3PpQN>label{display:grid;grid-template-rows:1fr 2fr;grid-column:1/3}.style-m_this_1mSAZ .screen--prev-button{grid-area:prev}.style-m_this_1mSAZ .screen--next-button{grid-area:next}.style-m_this_1Rjcs{display:grid;justify-items:center;align-content:center}.style-m_client-info-section_2hDNO{--spacing:0.2em;--border-radius:0.8em;gap:.2em;margin:.2em;height:6em;max-height:80vh;width:15em;display:grid;grid-template-rows:1fr 1fr}.style-m_teams-section_2eDnz{display:grid}.style-m_player_2jAbJ{max-width:20em;display:grid;grid-template-columns:3em 2em 1fr}.style-m_player_2jAbJ *{pointer-events:none}.style-m_player__name_3esbS{justify-self:start;padding-inline-start:.5em}.style-m_this_1Rjcs .screen--next-button:disabled{display:none} +@media print{:root{--colour-mainFg:#000!important;--colour-mainBg:#fff!important;--colour-tileFg:#000!important;--colour-tileBg:#fff!important;--colour-tileBd:#000!important;--colour-healthFg:#000!important;--colour-healthBg:#fff!important;--colour-pFaceMe:grey!important;--colour-pFaceMeOppo:grey!important;--colour-pFaceTeammate:grey!important;--colour-pFaceImtlTeammate:grey!important;--colour-pFaceOpponent:grey!important;--colour-pFaceImtlOpponent:grey!important}}[data-sk-colour-scheme=default]{--colour-mainFg:#e9eef3;--colour-mainBg:#3f5e77;--colour-tileFg:#e9eef3;--colour-tileBg:#2e3b48;--colour-tileBd:#fff;--colour-healthFg:#21352e;--colour-healthBg:#4edf8f;--colour-pFaceMe:#35e7ff;--colour-pFaceMeOppo:#937ad8;--colour-pFaceTeammate:#f8d150;--colour-pFaceImtlTeammate:#f8d150;--colour-pFaceOpponent:#ec4daf;--colour-pFaceImtlOpponent:#e23fa3}#all-screens-container{display:contents}.screen{contain:strict;position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}#background{z-index:-10000;display:initial;background-color:var(--colour-mainBg)}#screen-texture,#screen-tint{pointer-events:none;z-index:10000;display:initial}#screen-tint{opacity:0;transition-property:opacity,background-color;transition-duration:333ms;transition-timing-function:ease-in-out;background-color:var(--colour-mainBg)}#screen-texture{background-size:13.5rem;mix-blend-mode:overlay;background-color:#919191;background-image:url(images/textures/cheap_diagonal_fabric.png);background-blend-mode:color-burn;filter:contrast(2.3)}._2fw8LavR89kQmI-ujd84Oc{display:flex}._3bXQ_T8CN61h-XuM1Q5CKO{--spacing:6px;--border-radius:1rem;height:30em;max-height:80vmin;width:30em;max-width:80vmin;display:grid;grid-template:"pofl pofl pofl ponl" 3fr "htpl htpl htpl hths" 1fr "colr colr colr . " 1fr "repo bugs . . " 1fr/1fr 1fr 1fr 3fr}._3bXQ_T8CN61h-XuM1Q5CKO>*{border-style:double!important}._27pYKLXKIhEkDPRBq7FQkG{grid-area:pofl}._1cZmpRlPlHZasyAk0suiYy{grid-area:ponl}._29Ok3ZNcVG4aBK7f28U0Vl{grid-area:htpl}._1Me42uM4lSoh2869wVFjJD{grid-area:hths}._31wBmMbr_vhgM4lM1jary6{grid-area:colr}._2mwhS0oLTAcnpq5YWXg7cq{grid-area:repo;text-decoration:none}.QdLSQUx8gcAov0d1PYNgJ{grid-area:bugs;text-decoration:none}._3tt0mEYF2K12deMBmuiflg{display:flex;flex-direction:column;align-items:stretch;overflow-x:hidden;overflow-y:auto;border-color:var(--colour-tileBd);text-align:start}._3tt0mEYF2K12deMBmuiflg:focus{outline:none}.aq-ZO_N3w-UH9VTYF60rL{overflow:hidden hidden;cursor:default;transition-property:opacity;transition-duration:.35s;transition-timing-function:ease-out}._3tt0mEYF2K12deMBmuiflg:focus .aq-ZO_N3w-UH9VTYF60rL:not([aria-active-descendant=true]):not([aria-selected=true]){opacity:.4}.aq-ZO_N3w-UH9VTYF60rL[aria-selected=true]{text-decoration:underline}._3tt0mEYF2K12deMBmuiflg[aria-invalid=true]{border-style:dotted;border-width:.3rem}._2usroyHG0lbElLvXa_iy5{display:grid;justify-content:center;align-content:center}._2usroyHG0lbElLvXa_iy5 .screen--prev-button{position:absolute;margin:.7em;padding:.5em;border-radius:.5em}._2usroyHG0lbElLvXa_iy5 ._3tt0mEYF2K12deMBmuiflg{--padding:0.5em;gap:var(--padding);padding:var(--padding);border:.3em solid var(--colour-tileBd);border-radius:1.45em}._2GxiPlklote2AuXecWhETZ{--swatch-square-dimensions:2em;contain:content;display:grid;grid-template-columns:auto repeat(7,var(--swatch-square-dimensions));align-items:center;gap:.35em;padding:.3em;border:.2em solid var(--colour-mainBg);border-radius:.9em;color:var(--colour-mainFg);background-color:var(--colour-mainBg)}._2GxiPlklote2AuXecWhETZ[aria-active-descendant=true]{border-color:var(--colour-tile-Bd);border-style:dotted}._2GxiPlklote2AuXecWhETZ[aria-selected=true]{text-decoration:none;border-color:var(--colour-tile-Bd)}._2GxiPlklote2AuXecWhETZ>*{height:var(--swatch-square-dimensions);box-sizing:border-box;border:.2em solid var(--colour-tileBd);border-radius:.45em}._2nPC6c6ioUh-4gkJ5-JWNj{height:auto;padding:.3em .7em;text-align:end}._3LTv36NFPFb2DvxJ2eWKcb{font-size:.6em;padding-bottom:.3em}._2GxiPlklote2AuXecWhETZ>:first-child{color:var(--colour-tileFg);background-color:var(--colour-tileBg);border:none}._2GxiPlklote2AuXecWhETZ>:nth-child(2){color:var(--colour-healthFg);background-color:var(--colour-healthBg)}._2GxiPlklote2AuXecWhETZ>:nth-child(3){background-color:var(--colour-pFaceMe)}._2GxiPlklote2AuXecWhETZ>:nth-child(4){background-color:var(--colour-pFaceMeOppo)}._2GxiPlklote2AuXecWhETZ>:nth-child(5){background-color:var(--colour-pFaceTeammate)}._2GxiPlklote2AuXecWhETZ>:nth-child(6){background-color:var(--colour-pFaceImtlTeammate)}._2GxiPlklote2AuXecWhETZ>:nth-child(7){background-color:var(--colour-pFaceOpponent)}._2GxiPlklote2AuXecWhETZ>:nth-child(8){background-color:var(--colour-pFaceImtlOpponent)}._18T-RiVnTQugnMDE5W5g2S{display:grid;justify-content:center;justify-items:center;align-content:center;align-items:center;gap:1em}._18T-RiVnTQugnMDE5W5g2S .screen--next-button,._18T-RiVnTQugnMDE5W5g2S .screen--prev-button{padding:.3em .7em;font-size:2em}._3vawCmM619VS6F2hL-NerD{width:100%}._1euFnazUyfYf-c6qSiUhez{display:grid;grid-template:"controls main players" 100%/minmax(auto,1fr) auto minmax(auto,1fr)}._2jXbc7jisQYh8dGHBjQfoB{grid-area:main;contain:content;box-sizing:border-box;height:100%;padding:1rem 0}.fLS47QhRkscn0NK-vdINf{--spacing:0.3rem;--border-radius:0.7rem;--track-size:5rem;position:sticky;top:0;grid-area:controls;display:grid;grid-auto-rows:var(--track-size);grid-template-columns:minmax(var(--track-size),1fr);justify-items:stretch;align-items:stretch;font-size:80%}.fLS47QhRkscn0NK-vdINf>*{padding:.35em}.BDHhbE0AQjge5tlj2Z3_O{grid-area:players}@media screen and (max-aspect-ratio:1/1){._1euFnazUyfYf-c6qSiUhez{align-content:flex-start;grid-template:"main" calc(100vh - 7.5rem) "controls" max-content "players" auto/1fr}._2jXbc7jisQYh8dGHBjQfoB{padding:1rem 1rem 0}.fLS47QhRkscn0NK-vdINf{grid-template-columns:repeat(3,var(--track-size));grid-template-rows:var(--track-size)}}._3RnyB-FPnRJq2VQ-jJ1Fdy{contain:content;height:100%;display:grid;align-content:center}._3RnyB-FPnRJq2VQ-jJ1Fdy,._3To0VmRGhvAChHm1UecO55{position:relative}._3To0VmRGhvAChHm1UecO55{contain:style;overflow:auto auto;scroll-snap-type:both;scrollbar-width:none;box-sizing:border-box;border:5px double var(--colour-tileBd);border-radius:15px}._3To0VmRGhvAChHm1UecO55::-webkit-scrollbar{width:0;height:0}._3RB2_LMTHSqVD3X5arzyV{contain:strict;cursor:pointer;position:fixed;padding:3em;border-radius:inherit;color:#fff;visibility:hidden;z-index:2}@media screen{._3RnyB-FPnRJq2VQ-jJ1Fdy:focus{outline:none}}._3PpQNPHVO6NTNpgwU79ERL{--spacing:0.2em;--border-radius:1.2em;height:27em;max-height:80vh;width:27em;max-width:90vw;display:grid;gap:7%;grid-template:"host-url host-url" 2fr "group-name group-name" 2fr "passphrase passphrase" 2fr "prev next" 1fr/1fr 1fr}._3PpQNPHVO6NTNpgwU79ERL>label{display:grid;grid-template-rows:1fr 2fr;grid-column:1/3}._1mSAZ0WI6Dl-lgWbZngYuh .screen--prev-button{grid-area:prev}._1mSAZ0WI6Dl-lgWbZngYuh .screen--next-button{grid-area:next}._1RjcsAfyK_99UIm77cgsi1{display:grid;justify-items:center;align-content:center}._2hDNOGQoaqlmP3PIE18QwQ{--spacing:0.2em;--border-radius:0.8em;gap:.2em;margin:.2em;height:6em;max-height:80vh;width:15em;display:grid;grid-template-rows:1fr 1fr}._2eDnztFQPAJnFHoqcX6Rt8{display:grid}._2jAbJY6xTuqckSRVnOPwG4{max-width:20em;display:grid;grid-template-columns:3em 2em 1fr}._2jAbJY6xTuqckSRVnOPwG4 *{pointer-events:none}._3esbSTakuS113N38hp7-V4{justify-self:start;padding-inline-start:.5em}._1RjcsAfyK_99UIm77cgsi1 .screen--next-button:disabled{display:none} /*# sourceMappingURL=index.css.map*/ \ No newline at end of file diff --git a/client/index.css.map b/client/index.css.map index a8295cd3..2786f510 100644 --- a/client/index.css.map +++ b/client/index.css.map @@ -1 +1 @@ -{"version":3,"sources":["webpack://snakey3/./src/style/snakey.css","webpack://snakey3/./src/style/layers.css","webpack://snakey3/./src/client/screen/impl/Home/style.m.css","webpack://snakey3/./src/client/screen/impl/ColourCtrl/schemes/smooth-stone.css","webpack://snakey3/./src/client/screen/impl/ColourCtrl/schemes/murky-dive.css","webpack://snakey3/./src/client/screen/impl/ColourCtrl/style.m.css","webpack://snakey3/./src/client/utils/skpickone.m.css","webpack://snakey3/./src/client/screen/impl/Setup/style.m.css","webpack://snakey3/./src/client/screen/impl/Play/style.m.css","webpack://snakey3/./src/client/screen/impl/Play/grid.m.css","webpack://snakey3/./src/client/screen/impl/GroupJoiner/style.m.css","webpack://snakey3/./src/client/screen/impl/GroupLobby/style.m.css"],"names":[],"mappings":"AAAA,aAAe,MACd,8BAAiC,CACjC,8BAAiC,CACjC,8BAAiC,CACjC,8BAAiC,CACjC,8BAAiC,CACjC,gCAAmC,CACnC,gCAAmC,CACnC,+BAAiC,CACjC,mCAAqC,CACrC,qCAAuC,CACvC,yCAA2C,CAC3C,qCAAuC,CACvC,yCACD,CAAC,CACD,+BACC,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,oBAAwB,CACxB,yBAA0B,CAC1B,yBAA0B,CAC1B,wBAAyB,CACzB,4BAA6B,CAC7B,8BAA+B,CAC/B,kCAAmC,CACnC,8BAA+B,CAC/B,kCACD,CC5BA,uBACC,gBACD,CAEA,WAMC,cAAkB,CAClB,iBAAoB,CACpB,KAAM,CAAE,OAAQ,CAAE,QAAS,CAAE,MAAO,CACpC,aACD,CACA,+BACC,YACD,CAWA,YAIC,cAAsB,CACtB,eAAuB,CACvB,qCACD,CACA,6BACC,mBAAoB,CACpB,aAAqB,CACrB,eACD,CACA,aACC,SAAmB,CACnB,4CAA8C,CAC9C,yBAA4B,CAC5B,sCAAuC,CACvC,qCACD,CACA,gBACC,uBAAwB,CACxB,sBAAuB,CACvB,wBAAyB,CAEzB,+DAAyE,CACzE,gCAAiC,CACjC,oBACD,CCxDA,oBACC,YACD,CAEA,mBACC,aAAc,CACd,oBAAqB,CACrB,WAAY,CAAE,iBAAkB,CAChC,UAAY,CAAE,gBAAkB,CAChC,YAAoB,CACpB,qIAMD,CACA,qBACC,6BACD,CACA,iCAAsB,cAAiB,CACvC,gCAAsB,cAAiB,CACvC,gCAAsB,cAAiB,CACvC,gCAAsB,cAAiB,CACvC,kCAAsB,cAAiB,CACvC,8BAAsB,cAAe,CAAE,oBAAuB,CAC9D,iCAAsB,cAAe,CAAE,oBAAuB,CC3B9D,qCACC,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,oBAAwB,CACxB,yBAA0B,CAC1B,yBAA0B,CAC1B,wBAAyB,CACzB,4BAA6B,CAC7B,8BAA+B,CAC/B,kCAAmC,CACnC,8BAA+B,CAC/B,kCACD,CCdA,mCACC,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,oBAAwB,CACxB,yBAA0B,CAC1B,yBAA0B,CAC1B,wBAAyB,CACzB,4BAA6B,CAC7B,2BAA+B,CAC/B,kCAAmC,CACnC,8BAA+B,CAC/B,kCACD,CCVA,oBACC,YAAa,CACb,sBAAuB,CACvB,oBACD,CAEA,yCACC,iBAAkB,CAClB,WAAa,CACb,YAAc,CACd,kBACD,CAEA,4CACC,eAAgB,CAChB,kBAAmB,CACnB,sBAAuB,CACvB,sCAAwC,CACxC,oBACD,CAEA,mBACC,8BAA+B,CAC/B,eAAgB,CAChB,YAAa,CACb,oEAAsE,CACtE,kBAAmB,CAEnB,SAAW,CACX,YAAc,CACd,sCAAwC,CACxC,kBAAoB,CAEpB,0BAA2B,CAC3B,qCACD,CACA,gDACC,kCAAmC,CACnC,mBACD,CACA,uCACC,oBAAqB,CACrB,kCACD,CAEA,qBACC,sCAAuC,CACvC,qBAAsB,CACtB,sCAAwC,CACxC,mBACD,CAEA,yBACC,WAAY,CACZ,iBAAoB,CACpB,cACD,CAGA,iCACC,cAAgB,CAChB,mBACD,CAEA,gCACC,0BAA2B,CAC3B,qCAAsC,CACtC,WACD,CACA,iCACC,4BAA6B,CAC7B,uCACD,CACA,iCACC,sCACD,CACA,iCACC,0CACD,CACA,iCACC,4CACD,CACA,iCACC,gDACD,CACA,iCACC,4CACD,CACA,iCACC,gDACD,CC7FA,wBACC,YAAoB,CACpB,qBAAsB,CACtB,mBAAuB,CACvB,iBAAsB,CACtB,eAAoB,CAEpB,iCAAoC,CACpC,gBACD,CACA,8BACC,YACD,CAEA,uBACC,sBAAyB,CACzB,cAAmB,CACnB,2BAA4B,CAC5B,wBAA0B,CAC1B,mCACD,CACA,kHACC,UACD,CACA,2CACC,yBACD,CAEA,2CACC,mBAAoB,CACpB,kBACD,CC/BA,oBACC,YAAa,CACb,sBAAuB,CACvB,oBAAqB,CACrB,oBAAqB,CACrB,kBAAmB,CACnB,OACD,CAEA,kFAEC,iBAAoB,CACpB,aACD,CAKA,iCACC,UACD,CCpBA,oBACC,YAAoB,CACpB,iFAKD,CACA,4BACC,cAAoB,CACpB,eAAuB,CACvB,qBAA0B,CAC1B,WAAoB,CACpB,cACD,CACA,4BACC,gBAAsB,CACtB,sBAAsB,CACtB,iBAAoB,CACpB,eAAsB,CACtB,KAAiB,CAEjB,kBAAwB,CACxB,YAAoB,CACpB,gCAAiC,CACjC,mDAAqD,CACrD,qBAAuB,CACvB,mBAAuB,CACvB,aACD,CACA,8BACC,aACD,CACA,2BACC,iBACD,CACA,yCACC,oBACC,wBAAyB,CACzB,mFAKD,CACA,4BAEC,mBACD,CACA,4BAEC,iDAAoD,CACpD,oCACD,CACD,CCtDA,mBAMC,eAAuB,CACvB,WAAoB,CAEpB,YAAoB,CACpB,oBAMD,CACA,8CAEC,iBACD,CAQA,2BACC,aAAqB,CACrB,kBAAyB,CAEzB,qBAAsB,CACtB,oBAAqB,CACrB,qBAA0B,CAC1B,sCAA+C,CAC/C,kBACD,CACA,8CACC,OAAW,CACX,QACD,CAEA,4BACC,mBAAoB,CACpB,cAAsB,CACtB,cAAuB,CACvB,cAAqB,CACrB,WAAmB,CACnB,qBAAuB,CACvB,UAAqB,CACrB,iBAAsB,CAGtB,SAFD,CAKA,cACC,yBACC,YACD,CACD,CC3DA,+BACC,eAAsB,CACtB,qBAAsB,CACtB,WAAY,CAAE,eAAgB,CAC9B,UAAY,CAAE,cAAgB,CAC9B,YAAoB,CAEpB,MAAoB,CACpB,6HAMD,CACA,qCACC,YAAoB,CACpB,0BAA6B,CAC7B,eACD,CAYA,yCACC,cACD,CACA,yCACC,cACD,CCvCA,oBACC,YAAoB,CACpB,oBAAsB,CACtB,oBACD,CAEA,mCACC,eAAsB,CACtB,qBAAsB,CACtB,QAAU,CAAE,WAAa,CACzB,UAAY,CAAE,eAAgB,CAC9B,UAAY,CACZ,YAAoB,CACpB,0BACD,CAEA,6BACC,YACD,CAKA,sBACC,cAAe,CACf,YAAa,CACb,iCACD,CACA,wBACC,mBACD,CACA,4BACC,kBAAmB,CACnB,yBACD,CAEA,kDACC,YACD","file":"index.css","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["webpack://capswalk/./src/style/default.css","webpack://capswalk/./src/style/layers.css","webpack://capswalk/./src/client/screen/impl/Home/style.m.css","webpack://capswalk/./src/client/utils/pickone.m.css","webpack://capswalk/./src/client/screen/impl/ColourCtrl/style.m.css","webpack://capswalk/./src/client/screen/impl/Setup/style.m.css","webpack://capswalk/./src/client/screen/impl/Play/style.m.css","webpack://capswalk/./src/client/screen/impl/Play/grid.m.css","webpack://capswalk/./src/client/screen/impl/GroupJoiner/style.m.css","webpack://capswalk/./src/client/screen/impl/GroupLobby/style.m.css"],"names":[],"mappings":"AAAA,aAAe,MACd,8BAAiC,CACjC,8BAAiC,CACjC,8BAAiC,CACjC,8BAAiC,CACjC,8BAAiC,CACjC,gCAAmC,CACnC,gCAAmC,CACnC,+BAAiC,CACjC,mCAAqC,CACrC,qCAAuC,CACvC,yCAA2C,CAC3C,qCAAuC,CACvC,yCACD,CAAC,CACD,gCACC,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,uBAAwB,CACxB,oBAAwB,CACxB,yBAA0B,CAC1B,yBAA0B,CAC1B,wBAAyB,CACzB,4BAA6B,CAC7B,8BAA+B,CAC/B,kCAAmC,CACnC,8BAA+B,CAC/B,kCACD,CC5BA,uBACC,gBACD,CAEA,QAMC,cAAkB,CAClB,cAAiB,CACjB,KAAM,CAAE,OAAQ,CAAE,QAAS,CAAE,MAAO,CACpC,aACD,CAWA,YAIC,cAAsB,CACtB,eAAuB,CACvB,qCACD,CACA,6BACC,mBAAoB,CACpB,aAAqB,CACrB,eACD,CACA,aACC,SAAmB,CACnB,4CAA8C,CAC9C,yBAA4B,CAC5B,sCAAuC,CACvC,qCACD,CACA,gBACC,uBAAwB,CACxB,sBAAuB,CACvB,wBAAyB,CAEzB,+DAAyE,CACzE,gCAAiC,CACjC,oBACD,CCrDA,yBACC,YACD,CAEA,yBACC,aAAc,CACd,oBAAqB,CACrB,WAAY,CAAE,iBAAkB,CAChC,UAAY,CAAE,gBAAkB,CAChC,YAAoB,CACpB,qIAMD,CACA,2BACC,6BACD,CACA,yBAAsB,cAAiB,CACvC,yBAAsB,cAAiB,CACvC,yBAAsB,cAAiB,CACvC,yBAAsB,cAAiB,CACvC,yBAAsB,cAAiB,CACvC,yBAAsB,cAAe,CAAE,oBAAuB,CAC9D,uBAAsB,cAAe,CAAE,oBAAuB,CC1B9D,yBACC,YAAoB,CACpB,qBAAsB,CACtB,mBAAuB,CACvB,iBAAsB,CACtB,eAAoB,CAEpB,iCAAoC,CACpC,gBACD,CACA,+BACC,YACD,CAEA,uBACC,sBAAyB,CACzB,cAAmB,CACnB,2BAA4B,CAC5B,wBAA0B,CAC1B,mCACD,CACA,mHACC,UACD,CACA,2CACC,yBACD,CAEA,4CACC,mBAAoB,CACpB,kBACD,CC5BA,wBACC,YAAa,CACb,sBAAuB,CACvB,oBACD,CAEA,6CACC,iBAAkB,CAClB,WAAa,CACb,YAAc,CACd,kBACD,CAEA,iDACC,eAAgB,CAChB,kBAAmB,CACnB,sBAAuB,CACvB,sCAAwC,CACxC,oBACD,CAEA,yBACC,8BAA+B,CAC/B,eAAgB,CAChB,YAAa,CACb,oEAAsE,CACtE,kBAAmB,CAEnB,SAAW,CACX,YAAc,CACd,sCAAwC,CACxC,kBAAoB,CAEpB,0BAA2B,CAC3B,qCACD,CACA,sDACC,kCAAmC,CACnC,mBACD,CACA,6CACC,oBAAqB,CACrB,kCACD,CAEA,2BACC,sCAAuC,CACvC,qBAAsB,CACtB,sCAAwC,CACxC,mBACD,CAEA,yBACC,WAAY,CACZ,iBAAoB,CACpB,cACD,CAGA,yBACC,cAAgB,CAChB,mBACD,CAEA,sCACC,0BAA2B,CAC3B,qCAAsC,CACtC,WACD,CACA,uCACC,4BAA6B,CAC7B,uCACD,CACA,uCACC,sCACD,CACA,uCACC,0CACD,CACA,uCACC,4CACD,CACA,uCACC,gDACD,CACA,uCACC,4CACD,CACA,uCACC,gDACD,CC7FA,yBACC,YAAa,CACb,sBAAuB,CACvB,oBAAqB,CACrB,oBAAqB,CACrB,kBAAmB,CACnB,OACD,CAEA,4FAEC,iBAAoB,CACpB,aACD,CAKA,yBACC,UACD,CCpBA,yBACC,YAAoB,CACpB,iFAKD,CACA,yBACC,cAAoB,CACpB,eAAuB,CACvB,qBAA0B,CAC1B,WAAoB,CACpB,cACD,CACA,uBACC,gBAAsB,CACtB,sBAAsB,CACtB,iBAAoB,CACpB,eAAsB,CACtB,KAAiB,CAEjB,kBAAwB,CACxB,YAAoB,CACpB,gCAAiC,CACjC,mDAAqD,CACrD,qBAAuB,CACvB,mBAAuB,CACvB,aACD,CACA,yBACC,aACD,CACA,uBACC,iBACD,CACA,yCACC,yBACC,wBAAyB,CACzB,mFAKD,CACA,yBAEC,mBACD,CACA,uBAEC,iDAAoD,CACpD,oCACD,CACD,CCtDA,yBAMC,eAAuB,CACvB,WAAoB,CAEpB,YAAoB,CACpB,oBAMD,CACA,kDAEC,iBACD,CAQA,yBACC,aAAqB,CACrB,kBAAyB,CAEzB,qBAAsB,CACtB,oBAAqB,CACrB,qBAA0B,CAC1B,sCAA+C,CAC/C,kBACD,CACA,4CACC,OAAW,CACX,QACD,CAEA,wBACC,cAAsB,CACtB,cAAuB,CACvB,cAAqB,CACrB,WAAmB,CACnB,qBAAuB,CACvB,UAAqB,CACrB,iBAAsB,CAGtB,SAFD,CAKA,cACC,+BACC,YACD,CACD,CC1DA,yBACC,eAAsB,CACtB,qBAAsB,CACtB,WAAY,CAAE,eAAgB,CAC9B,UAAY,CAAE,cAAgB,CAC9B,YAAoB,CAEpB,MAAoB,CACpB,6HAMD,CACA,+BACC,YAAoB,CACpB,0BAA6B,CAC7B,eACD,CAYA,8CACC,cACD,CACA,8CACC,cACD,CCvCA,yBACC,YAAoB,CACpB,oBAAsB,CACtB,oBACD,CAEA,yBACC,eAAsB,CACtB,qBAAsB,CACtB,QAAU,CAAE,WAAa,CACzB,UAAY,CAAE,eAAgB,CAC9B,UAAY,CACZ,YAAoB,CACpB,0BACD,CAEA,yBACC,YACD,CAKA,yBACC,cAAe,CACf,YAAa,CACb,iCACD,CACA,2BACC,mBACD,CACA,yBACC,kBAAmB,CACnB,yBACD,CAEA,uDACC,YACD","file":"index.css","sourceRoot":""} \ No newline at end of file diff --git a/client/index.html b/client/index.html index 19e7c796..68b12556 100644 --- a/client/index.html +++ b/client/index.html @@ -1,9 +1,12 @@ -snakey3
\ No newline at end of file + else { root.dataset["skColourScheme"] = "default"; } + }
\ No newline at end of file diff --git a/client/index.js b/client/index.js index 07f5359a..e6ec42dd 100644 --- a/client/index.js +++ b/client/index.js @@ -1,2 +1,2 @@ -var snakey3;snakey3=(self.webpackChunksnakey3=self.webpackChunksnakey3||[]).push([[826],{632:(e,t,s)=>{"use strict";s.d(t,{R:()=>r});const n=Object.freeze({enumerable:!1}),i=Object.freeze({writable:!1});var r;!function(e){let t;function s(e,t,s){t.forEach((t=>{Object.defineProperty(e,t,s)}))}e.applyMixins=function(e,t){t.forEach((t=>{Object.getOwnPropertyNames(t.prototype).forEach((s=>{Object.defineProperty(e.prototype,s,Object.getOwnPropertyDescriptor(t.prototype,s))}))}))},e.deepFreeze=function e(t){return function(t){for(const s of Object.getOwnPropertyNames(t)){const n=t[s];"object"==typeof n&&e(n)}Object.freeze(t)}(t),t},function(e){let t;!function(e){e.access=function(e,t,s){s.enumerable=!1},e.cyclic=function(e,t,s){s.enumerable=!1}}(t=e.NonEnumerable||(e.NonEnumerable={}))}(t=e.Decor||(e.Decor={})),e.protoNoEnum=function(e,...t){t.forEach((t=>{Object.defineProperty(e.prototype,t,n)}))},e.instNoEnum=function(e,...t){s(e,t,n)},e.propNoWrite=function(e,...t){s(e,t,i)},e.prependComment=function(e,t){e.parentNode.insertBefore(document.createComment(" "+t+" "),e)},e.camelCaseTransforms=function(e){const t=e.replace(/[A-Z]/g,(e=>" "+e.toLowerCase()));return Object.freeze({spaceyLowercase:t,spaceyUppercase:t.toUpperCase(),spaceyCapitalized:t.split(" ").map((e=>e.charAt(0).toUpperCase()+e.substring(1))).join(" ")})},e.mkEl=function(e,t,s){const n=document.createElement(e);try{Object.seal(n)}catch(e){}return t.length&&n.classList.add(...t),"button"===e?n.type="button":"a"===e&&(n.rel="noopener"),void 0!==s&&Object.assign(n,s),n}}(r||(r={})),Object.freeze(r)},912:(e,t,s)=>{"use strict";s.d(t,{Y:()=>n});var n,i=s(632);!function(e){let t,s,n,i;e.GLOBAL_IDS={PUBLIC_GAME_HOST_URLS:"public-game-hosts-list",CURRENT_HOST_GROUPS:"current-host-groups-list"},function(e){e.Class={TEXT_SELECT_DISABLED:"text-select-disabled",FILL_PARENT:"fill-parent",CENTER_CONTENTS:"center-contents",STACK_CONTENTS:"stack-contents",INPUT_GROUP:"sk-input-group",INPUT_GROUP_ITEM:"sk-input-group-item"},e.Dataset={COLOUR_SCHEME:"skColourScheme"}}(t=e.General||(e.General={})),function(e){e.Dataset={HEALTH:"health"}}(s=e.Tile||(e.Tile={})),function(e){e.Dataset={DOWNED:{KEY:"downed",VALUES:{TEAM:"team",SELF:"self",NO:"no"}},FACE_SWATCH:"face"}}(n=e.Player||(e.Player={})),function(e){let t;e.Id={ALL_SCREENS:"all-screens-container",SCREEN_TINT:"screen-tint"},e.Class={BASE:"sk-screen",NAV_NEXT:"screen--next-button",NAV_PREV:"screen--prev-button"},e.Dataset={CURRENT:"current"},function(e){let t;!function(e){e.Id={LANG_WEIGHT_EXAGGERATION_LIST:"screen-setup--lang-weight-exaggeration-list"}}(t=e.Setup||(e.Setup={}))}(t=e.Impl||(e.Impl={}))}(i=e.Screen||(e.Screen={}))}(n||(n={})),i.R.deepFreeze(n)},804:(e,t,s)=>{"use strict";s.d(t,{b4:()=>n,ZA:()=>i,m4:()=>r,JD:()=>a});class n{}!function(e){let t;e.PROTOCOL="http://",e.DEFAULT_PORT=80,function(e){e.GROUP_JOINER="/joiner.",e.GROUP_LOBBY_PREFIX="/group.",e.GROUP_GAME_PREFIX="/group-game."}(t=e.Nsps||(e.Nsps={}))}(n||(n={})),Object.freeze(n),Object.freeze(n.prototype);class i{}var r,a;!function(e){let t,s,n,i;!function(e){let t;!function(e){e.EVENT_NAME="group-lobby-user-info-change"}(t=e.UserInfoChange||(e.UserInfoChange={}))}(t=e.Socket||(e.Socket={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]+)/,e.MaxLength=30}(s=e.Name||(e.Name={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]*)/,e.MaxLength=30}(n=e.Passphrase||(e.Passphrase={})),e.GameServerReconnectionAttempts=2,e.DEFAULT_TTL=20,function(e){e.EVENT_NAME="group-exist";class t{constructor(e,t){Object.defineProperty(this,"groupName",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"passphrase",{enumerable:!0,configurable:!0,writable:!0,value:t})}}let s;e.RequestCreate=t,function(e){let t;!function(e){e.OKAY="okay",e.NOPE="nope"}(t=e.Response||(e.Response={}))}(t=e.RequestCreate||(e.RequestCreate={})),function(e){e.IN_LOBBY="in-lobby",e.IN_GAME="in-game",e.DELETE="delete"}(s=e.Status||(e.Status={}))}(i=e.Exist||(e.Exist={}))}(i||(i={})),Object.freeze(i),Object.freeze(i.prototype),function(e){e.CREATE_GAME="group-game-create"}(r||(r={})),function(e){e.CREATE_GAME="game-create",e.RESET="game-reset",e.UNPAUSE="game-unpause",e.PAUSE="game-pause",e.RETURN_TO_LOBBY="game-return-to-lobby"}(a||(a={}))},532:(e,t,s)=>{"use strict";s.d(t,{Uo:()=>c,J5:()=>l,Bl:()=>o});var n=s(632);const i=Object.freeze({IDENT:e=>e,LOWER:e=>e.toLowerCase()}),r={"engl-low":{module:"English",export:"Lowercase",numLeaves:26,remapFunc:i.LOWER,displayName:"English Lowercase (qwerty)",blurb:""},"engl-mix":{module:"English",export:"MixedCase",numLeaves:52,remapFunc:i.IDENT,displayName:"English Mixed-Case (Querty)",blurb:""},"japn-hir":{module:"Japanese",export:"Hiragana",numLeaves:71,remapFunc:i.LOWER,displayName:"Japanese Hiragana",blurb:""},"japn-kat":{module:"Japanese",export:"Katakana",numLeaves:69,remapFunc:i.LOWER,displayName:"Japanese Katakana",blurb:""},"kore-dub":{module:"Korean",export:"Dubeolsik",numLeaves:8778,remapFunc:i.IDENT,displayName:"Korean Dubeolsik (두벌식 키보드)",blurb:"The most common keyboard layout, and South Korea's only Hangul standard since 1969. Consonants are on the left, and vowels on the right."},"kore-sub":{module:"Korean",export:"Sebeolsik",numLeaves:10206,remapFunc:i.IDENT,displayName:"Korean Sebeolsik (세벌식 최종 키보드)",blurb:"Another Hangul keyboard layout used in South Korea, and the final Sebeolsik layout designed by Dr. Kong Byung Woo, hence the name. Syllable-initial consonants are on the right, final consonants on the left, and vowels in the middle. It is more ergonomic than the dubeolsik, but not widely used."},"kore-rom":{module:"Korean",export:"Romanization",numLeaves:3990,remapFunc:i.LOWER,displayName:"Korean Revised Romanization",blurb:"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字 表記法) is the official South Korean language romanization system. It was developed by the National Academy of the Korean Language from 1995, and was released on 7 July 2000 by South Korea's Ministry of Culture and Tourism"},"engl-cell-enc":{module:"English",export:"OldCellphone.Encode",numLeaves:8,remapFunc:i.IDENT,displayName:"Old Cellphone Keyboard",blurb:""},"mors-enc":{module:"English",export:"Morse.Encode",numLeaves:20,remapFunc:e=>e,displayName:"Morse Encoder",blurb:""},"mors-dec":{module:"English",export:"Morse.Decode",numLeaves:41,remapFunc:i.LOWER,displayName:"Morse Decoder",blurb:""},ngram2:{module:"Ngrams",export:"Ngram2",numLeaves:200,remapFunc:i.LOWER,displayName:"English Bigrams",blurb:""},ngram3:{module:"Ngrams",export:"Ngram3",numLeaves:401,remapFunc:i.LOWER,displayName:"English Trigrams",blurb:""},numpad:{module:"Numpad",export:"Numpad",numLeaves:100,remapFunc:i.LOWER,displayName:"Number Pad",blurb:""}};Object.entries(r).forEach((([e,t])=>{t.id=e})),n.R.deepFreeze(r);const a=r,o=Object.freeze({behavior:"smooth",block:"center",inline:"center"});class l{}!function(e){let t,s,n;e.Family=Object.freeze({HUMAN:"HUMAN",CHASER:"CHASER"}),e.Family,function(e){e.NULL=void 0}(t=e.Id||(e.Id={})),function(e){e.REGEXP=/[ a-zA-Z0-9:-]+/,e.MAX_LENGTH=15}(s=e.Username||(e.Username={})),function(e){e.LOREM_IPSUM="lorem-ipsum"}(n=e.Avatar||(e.Avatar={})),function(e){const t=Object.values(e).filter((e=>"string"==typeof e));e.GET_RANDOM=function(){return t[Math.floor(Math.random()*t.length)]}}(n=e.Avatar||(e.Avatar={})),e.MoveType=Object.freeze({NORMAL:"NORMAL",BOOST:"BOOST"}),e.MoveType}(l||(l={})),Object.freeze(l),Object.freeze(l.prototype);class c{}!function(e){let t,s,n;!function(e){e.REGEXP=new RegExp("^[a-zA-Z0-9!@#$%^&*()-_=+;:'\"\\|,.<>/?]+$")}(t=e.Seq||(e.Seq={})),function(e){e.NULL=Object.freeze({char:"",seq:""})}(s=e.CharSeqPair||(e.CharSeqPair={})),function(e){e.MAX=4}(n=e.WeightExaggeration||(e.WeightExaggeration={})),e.CHAR_HIT_COUNT_SEED_CEILING=5,e.FrontendDescs=a,e.GET_FRONTEND_DESC_BY_ID=function(t){return e.FrontendDescs[t]}}(c||(c={})),Object.freeze(c),Object.freeze(c.prototype)},825:(e,t,s)=>{"use strict";var n;s.d(t,{l:()=>n}),function(e){let t,s;!function(e){e.SERVER="SERVER",e.ONLINE="ONLINE",e.OFFLINE="OFFLINE"}(t=e.Type||(e.Type={})),Object.freeze(t),function(e){e.PLAYING="PLAYING",e.PAUSED="PAUSED",e.OVER="OVER"}(s=e.Status||(e.Status={})),Object.freeze(s),e.K=Object.freeze({HEALTH_UPDATE_CHANCE:.1,AVERAGE_HEALTH_TO_SPAWN_ON_TILE:1,PORTION_OF_MOVES_THAT_ARE_BOOST:.4,HEALTH_COST_OF_BOOST(e,t){const s=t(this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/e);return this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/s/this.PORTION_OF_MOVES_THAT_ARE_BOOST},HEALTH_EFFECT_FOR_DOWNED_PLAYER:.6,EVENT_RECORD_WRAPPING_BUFFER_LENGTH:50,EVENT_RECORD_FORWARD_WINDOW_LENGTH:25})}(n||(n={})),Object.freeze(n)},897:(e,t,s)=>{"use strict";s.r(t),s.d(t,{OmHooks:()=>l.Y,game:()=>X,screen:()=>K,top:()=>q});var n,i,r,a=s(903),o=s(632),l=s(912),c=s(532);!function(e){let t;function s(e,t){const s={};return Object.keys(t).forEach((t=>{Object.defineProperty(s,t,{enumerable:!0,get:()=>{const s=e.getItem(t);return null===s?void 0:JSON.parse(s)},set:s=>{e.setItem(t,JSON.stringify(s))}})})),Object.freeze(s),s}e.Local=s(localStorage,{musicVolume:1,sfxVolume:1,colourSchemeId:"",colourSchemeStyleLiteral:"",gamePresetId:"",username:"",avatar:""}),e.getLastUserInfo=function(){var t,s;return Object.freeze({username:null!==(t=e.Local.username)&&void 0!==t?t:"unnamed player",teamId:0,avatar:null!==(s=e.Local.avatar)&&void 0!==s?s:c.J5.Avatar.GET_RANDOM()})},e.Session=s(localStorage,Object.freeze({})),function(e){let t;e.DB_NAME="snakeyDB",function(e){e.STORE_NAME="userGamePresets"}(t=e.UserGamePresetStore||(e.UserGamePresetStore={})),Object.freeze(t)}(t=e.IDB||(e.IDB={})),Object.freeze(t)}(n||(n={})),Object.freeze(n);const u=l.Y.Screen.Class;class d{constructor(e,t,s,n){Object.defineProperty(this,"screenId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"screenNames",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"top",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),i.set(this,void 0),Object.defineProperty(this,"baseElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),r.set(this,void 0),Object.defineProperty(this,"nav",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"requestGoToScreen",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.screenId=e,this.screenNames=o.R.camelCaseTransforms(e),this.top=t,(0,a.YH)(this,i,s),this.requestGoToScreen=n,this.baseElem=o.R.mkEl("div",[u.BASE]),(0,a.YH)(this,r,!1),this.nav=Object.freeze({prev:o.R.mkEl("button",[]),next:o.R.mkEl("button",[])}),o.R.propNoWrite(this,"screenId","top","baseElem","nav","requestGoToScreen"),this.nav.prev.classList.add(u.NAV_PREV),this.nav.next.classList.add(u.NAV_NEXT),this.nav.prev.textContent="Back",this.nav.next.textContent="Next",this.nav.prev.onclick=t=>{const s=d.NavTree,n=s[this.screenId];s[n.prev].href===n.href?this.requestGoToScreen(d.NavTree[e].prev,{}):window.history.back()}}_enter(e,t){var s;return(0,a.mG)(this,void 0,void 0,(function*(){if(document.title=`${this.screenNames.spaceyCapitalized} | ${this.top.defaultDocTitle}`,e===d.NavDir.FORWARD){const e=new window.URL(window.location.href),t=e.hash=d.NavTree[this.screenId].href,n=[{screenId:this.screenId},"",e.href];(null===(s=window.history.state)||void 0===s?void 0:s.screenId)!==t&&(d.NavTree[this.screenId].prev===this.screenId?history.replaceState(...n):history.pushState(...n))}(0,a.Q_)(this,r)||(this._lazyLoad(),(0,a.Q_)(this,i).appendChild(this.baseElem),o.R.prependComment(this.baseElem,`${this.screenNames.spaceyUppercase} SCREEN`),this.baseElem.setAttribute("aria-label",this.screenNames.spaceyCapitalized+" Screen"),(0,a.YH)(this,r,!0)),yield this._abstractOnBeforeEnter(e,t)}))}_leave(e){return!!this._abstractOnBeforeLeave(e)}_onAfterEnter(){this.baseElem.dataset[l.Y.Screen.Dataset.CURRENT]="",this.baseElem.setAttribute("aria-hidden","false")}_onAfterLeave(){delete this.baseElem.dataset[l.Y.Screen.Dataset.CURRENT],this.baseElem.setAttribute("aria-hidden","true")}getRecommendedFocusElem(){}_abstractOnBeforeEnter(e,t){return(0,a.mG)(this,void 0,void 0,(function*(){}))}_abstractOnBeforeLeave(e){return!0}}i=new WeakMap,r=new WeakMap,function(e){let t,s;!function(e){e.HOME="home",e.HOW_TO_PLAY="howToPlay",e.HOW_TO_HOST="howToHost",e.COLOUR_CTRL="colourControl",e.SETUP_OFFLINE="setupOffline",e.PLAY_OFFLINE="playOffline",e.GROUP_JOINER="groupJoiner",e.SETUP_ONLINE="setupOnline",e.GROUP_LOBBY="groupLobby",e.PLAY_ONLINE="playOnline"}(t=e.Id||(e.Id={})),Object.freeze(t),e.NavTree=Object.freeze({[t.HOME]:{prev:t.HOME,href:t.HOME},[t.HOW_TO_PLAY]:{prev:t.HOME,href:t.HOW_TO_PLAY},[t.HOW_TO_HOST]:{prev:t.HOME,href:t.HOW_TO_HOST},[t.COLOUR_CTRL]:{prev:t.HOME,href:t.COLOUR_CTRL},[t.SETUP_OFFLINE]:{prev:t.HOME,href:t.SETUP_OFFLINE},[t.PLAY_OFFLINE]:{prev:t.SETUP_OFFLINE,href:t.SETUP_OFFLINE},[t.GROUP_JOINER]:{prev:t.HOME,href:t.GROUP_JOINER},[t.GROUP_LOBBY]:{prev:t.GROUP_JOINER,href:t.GROUP_JOINER},[t.SETUP_ONLINE]:{prev:t.GROUP_LOBBY,href:t.GROUP_JOINER},[t.PLAY_ONLINE]:{prev:t.GROUP_LOBBY,href:t.GROUP_JOINER}}),function(e){e.FORWARD="forward",e.BACKWARD="backward"}(s=e.NavDir||(e.NavDir={})),e.GET_NAV_DIR=function(t){const{curr:s,dest:n}=t;if(void 0===s)return e.NavDir.FORWARD;let i=s;for(;i!==e.NavTree[i].prev;)if(i=e.NavTree[i].prev,i===n)return e.NavDir.BACKWARD;return e.NavDir.FORWARD}}(d||(d={})),Object.freeze(d),Object.freeze(d.prototype);const p={this:"style-m_this_2fw8L",nav:"style-m_nav_3bXQ_","nav--play-offline":"style-m_nav--play-offline_27pYK","nav--play-online":"style-m_nav--play-online_1cZmp","nav--how-to-play":"style-m_nav--how-to-play_29Ok3","nav--how-to-host":"style-m_nav--how-to-host_1Me42","nav--colour-scheme":"style-m_nav--colour-scheme_31wBm","nav--goto-repo":"style-m_nav--goto-repo_2mwhS","nav--report-issue":"style-m_nav--report-issue_QdLSQ"};class h extends d{constructor(){super(...arguments),Object.defineProperty(this,"navElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_lazyLoad(){this.baseElem.classList.add(l.Y.General.Class.CENTER_CONTENTS,p.this);const e=this.navElem=o.R.mkEl("div",[l.Y.General.Class.TEXT_SELECT_DISABLED,l.Y.General.Class.INPUT_GROUP,p.nav]);e.setAttribute("role","navigation"),e.addEventListener("pointerleave",(()=>{var t;(null===(t=document.activeElement)||void 0===t?void 0:t.parentElement)===e&&document.activeElement.blur()}));const t=(t,s)=>{t.classList.add(l.Y.General.Class.CENTER_CONTENTS,l.Y.General.Class.INPUT_GROUP_ITEM,s.cssClass),t.textContent=s.text,t.addEventListener("pointerenter",(()=>{window.requestAnimationFrame((e=>{t.focus()}))})),e.appendChild(t)};[{text:"Offline Single-player",cssClass:p["nav--play-offline"],screenId:d.Id.SETUP_OFFLINE},{text:"Online Multi-player",cssClass:p["nav--play-online"],screenId:d.Id.GROUP_JOINER},{text:"How To Play",cssClass:p["nav--how-to-play"],screenId:d.Id.HOW_TO_PLAY},{text:"How To Host",cssClass:p["nav--how-to-host"],screenId:d.Id.HOW_TO_HOST},{text:"Colour Schemes",cssClass:p["nav--colour-scheme"],screenId:d.Id.COLOUR_CTRL}].map((e=>Object.freeze(e))).forEach((e=>{const s=o.R.mkEl("button",[]);s.onclick=e.screenId instanceof Function?e.screenId:()=>{this.requestGoToScreen(e.screenId,{})},t(s,e)})),[{text:"Visit\nRepo",cssClass:p["nav--goto-repo"],href:new window.URL("https://github.com/david-fong/snakey3")},{text:"Report\nIssue",cssClass:p["nav--report-issue"],href:new window.URL("https://github.com/david-fong/snakey3/issues")}].map((e=>Object.freeze(e))).forEach((e=>{const s=o.R.mkEl("a",[],{href:e.href.toString(),target:"_blank"});t(s,e)})),this.baseElem.appendChild(e)}}Object.freeze(h),Object.freeze(h.prototype);class m extends d{_lazyLoad(){}}Object.freeze(m),Object.freeze(m.prototype);class b extends d{_lazyLoad(){}}!function(e){e.INSTRUCTIONS_STEPS=Object.freeze(["$ npm install 'https://github.com/david-fong/snakey3#gh-pages'","$ npm run start","send the url to your friends"])}(b||(b={})),Object.freeze(b),Object.freeze(b.prototype);var E,v,O,_;class f{constructor(){Object.defineProperty(this,"baseElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"options",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),E.set(this,void 0),v.set(this,void 0),O.set(this,void 0);const e=o.R.mkEl("div",["skpickone-m_this_1P7KX"],{tabIndex:0});e.setAttribute("role","listbox"),e.addEventListener("keydown",this._onKeyDown.bind(this)),e.addEventListener("pointerenter",(t=>{window.requestAnimationFrame((t=>{e.focus()}))})),this.baseElem=e,this.options=[]}addOption(e){this.options.push(e),this.baseElem.appendChild(e.baseElem),e.baseElem.addEventListener("pointerenter",this.hoverOpt.bind(this,e)),e.baseElem.addEventListener("click",this.selectOpt.bind(this,e,!0)),e._registerParent(this._onOptDisabledChange.bind(this))}hoverOpt(e){var t;this.hoveredOpt!==e&&(null===(t=this.hoveredOpt)||void 0===t||t.baseElem.setAttribute("aria-active-descendant","false"),(0,a.YH)(this,v,e),this.hoveredOpt.baseElem.setAttribute("aria-active-descendant","true"))}selectOpt(e,t=!0){var s;if(!e)throw new Error("opt must be defined");this.hoverOpt(e),this.confirmedOpt!==e&&(null===(s=this.confirmedOpt)||void 0===s||s.baseElem.setAttribute("aria-selected","false"),(0,a.YH)(this,E,e),this.confirmedOpt.baseElem.setAttribute("aria-selected","true"),t&&this._onSelectOpt(e))}get confirmedOpt(){return(0,a.Q_)(this,E)}get hoveredOpt(){return(0,a.Q_)(this,v)}_onOptDisabledChange(e){this.confirmedOpt===e&&(this._isValid=!e.disabled)}set _isValid(e){this._isValid!==e&&(this.baseElem.setAttribute("aria-invalid",e?"false":"true"),(0,a.YH)(this,O,e))}get _isValid(){return(0,a.Q_)(this,O)}_onKeyDown(e){if(" "===e.key||"Enter"===e.key)return this.selectOpt(this.hoveredOpt),e.preventDefault(),!1;{const t=this.options.indexOf(this.hoveredOpt);if("ArrowDown"===e.key||"Down"===e.key)for(let s=t+1;s=0;s--){const t=this.options[s];if(!t.disabled)return this.hoverOpt(t),e.preventDefault(),!1}}return!0}}E=new WeakMap,v=new WeakMap,O=new WeakMap,function(e){var t,s;t=new WeakMap,s=new WeakMap,e._Option=class{constructor(){Object.defineProperty(this,"baseElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),t.set(this,void 0),s.set(this,void 0),(this.baseElem=o.R.mkEl("div",["skpickone-m_opt_3w8x7"])).setAttribute("role","option"),(0,a.YH)(this,t,!1)}_registerParent(e){(0,a.YH)(this,s,e)}get disabled(){return(0,a.Q_)(this,t)}set disabled(e){this.disabled!==e&&(this.baseElem.setAttribute("aria-disabled",e?"true":"false"),(0,a.YH)(this,t,e),(0,a.Q_)(this,s).call(this,this))}},Object.freeze(e),Object.freeze(e.prototype)}(f||(f={})),Object.freeze(f),Object.freeze(f.prototype);class g extends d{constructor(){super(...arguments),Object.defineProperty(this,"sel",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_lazyLoad(){this.baseElem.classList.add("style-m_this_2usro"),this.baseElem.appendChild(this.nav.prev);const e=this.sel=new g.PickOne(this.top.storage.Local,this.top.transition);o.R.propNoWrite(this,"sel"),this.baseElem.appendChild(e.baseElem);const t=this.top.storage.Local.colourSchemeId;t&&this.sel.selectOpt(this.sel.getOptById(t),!1)}}!function(e){var t,s,n;class i extends f{constructor(e,r){var o;super(),t.set(this,void 0),s.set(this,void 0),n.set(this,void 0),(0,a.YH)(this,t,!0),(0,a.YH)(this,s,e),(0,a.YH)(this,n,r),_.Schemes.forEach((e=>{this.addOption(new i.Option(e))})),this.selectOpt(this.getOptById(null!==(o=(0,a.Q_)(this,s).colourSchemeId)&&void 0!==o?o:"snakey"),!1)}_onHoverOpt(e){}_onSelectOpt(e){(0,a.Q_)(this,s).colourSchemeId=e.desc.id,(0,a.Q_)(this,s).colourSchemeStyleLiteral=e.cssLiteral;const i=(0,a.Q_)(this,t);(0,a.YH)(this,t,!1),(0,a.Q_)(this,n).do({intermediateTransitionTrigger:()=>{document.documentElement.dataset[l.Y.General.Dataset.COLOUR_SCHEME]=e.desc.id;const t=document.documentElement.style;if(i)for(const e of _.Swatch){const s="--colour-"+e;t.setProperty(s,"")}}})}getOptById(e){return this.options.find((t=>t.desc.id===e))}}t=new WeakMap,s=new WeakMap,n=new WeakMap,e.PickOne=i,function(e){class t extends f._Option{constructor(e){super(),Object.defineProperty(this,"desc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"cssLiteral",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.desc=e;const s=this.baseElem;s.classList.add("style-m_opt_2GxiP"),s.dataset[l.Y.General.Dataset.COLOUR_SCHEME]=e.id;const n=o.R.mkEl("span",["style-m_opt-label_2nPC6"]);n.appendChild(o.R.mkEl("div",["style-m_opt-label--title_3GbE2"],{textContent:e.displayName})),n.appendChild(o.R.mkEl("div",["style-m_opt-label--author_3LTv3"],{textContent:"by "+e.author})),s.appendChild(n);for(let e=0;eObject.freeze(e))))}(_||(_={})),Object.freeze(_);class y extends d{constructor(){super(...arguments),Object.defineProperty(this,"langSel",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"langWeightExaggeration",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_lazyLoad(){this.baseElem.classList.add("style-m_this_18T-R"),this.baseElem.appendChild(this.nav.prev),this.langSel=new y.LangPickOne,this.baseElem.appendChild(this.langSel.baseElem),this._createLangWeightExaggerationInput(),o.R.propNoWrite(this,"langSel","langWeightExaggeration"),this.baseElem.appendChild(this.nav.next),this._loadLastUsedPreset()}_createLangWeightExaggerationInput(){const e=this.langWeightExaggeration=o.R.mkEl("input",["style-m_lang-weight-exagg_3vawC"],{type:"range",min:"0",max:c.Uo.WeightExaggeration.MAX.toString(),step:"any",value:"1"});{const e=o.R.mkEl("datalist",[]);e.id=l.Y.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST,[{val:0,label:"0"},{val:1,label:"1"}].forEach((t=>{e.appendChild(o.R.mkEl("option",[],{value:t.val.toString(),label:t.label}))})),this.baseElem.appendChild(e)}e.setAttribute("list",l.Y.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST),this.baseElem.appendChild(e)}getRecommendedFocusElem(){return this.nav.next}_loadLastUsedPreset(){this.top.storage.Local.gamePresetId}parseArgsFromGui(){const e=Object.assign({},y.DEFAULT_PRESET());return e.langId=this.langSel.confirmedOpt.desc.id,e.langWeightExaggeration=parseFloat(this.langWeightExaggeration.value),e}}!function(e){e.DEFAULT_PRESET=()=>({coordSys:"EUCLID2",gridDimensions:{height:21,width:21},averageFreeHealthPerTile:1/45,langWeightExaggeration:1,langId:"engl-low",playerDescs:[{isALocalOperator:!1,familyId:"CHASER",teamId:1,clientId:void 0,username:"chaser1",avatar:void 0,noCheckGameOver:!0,familyArgs:{}},{isALocalOperator:!1,familyId:"CHASER",teamId:1,clientId:void 0,username:"chaser2",avatar:void 0,noCheckGameOver:!0,familyArgs:{fearDistance:6,bloodThirstDistance:5,healthReserve:5,keyPressesPerSecond:1.8}}]});class t extends f{constructor(){super(),this.baseElem.classList.add("style-m_lang-sel_2PZpD"),Object.values(c.Uo.FrontendDescs).forEach((e=>{this.addOption(new t.Option(e))})),this.selectOpt(this.options[0])}_onHoverOpt(e){}_onSelectOpt(e){}}e.LangPickOne=t,function(e){class t extends f._Option{constructor(e){super(),Object.defineProperty(this,"desc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.desc=e,this.baseElem.textContent=e.displayName}}e.Option=t,Object.freeze(t),Object.freeze(t.prototype)}(t=e.LangPickOne||(e.LangPickOne={}))}(y||(y={})),Object.freeze(y),Object.freeze(y.prototype);class T extends y{_lazyLoad(){super._lazyLoad(),this.nav.next.onclick=e=>{const t=this.parseArgsFromGui();this.requestGoToScreen(d.Id.PLAY_OFFLINE,t)}}parseArgsFromGui(){const e=super.parseArgsFromGui();return e.playerDescs.splice(e.playerDescs.length,0,{isALocalOperator:!0,familyId:"HUMAN",teamId:0,clientId:void 0,username:"hello1",avatar:void 0,noCheckGameOver:!1,familyArgs:{}},{isALocalOperator:!0,familyId:"HUMAN",teamId:1,clientId:void 0,username:"hello2",avatar:void 0,noCheckGameOver:!1,familyArgs:{}}),e}}Object.freeze(T),Object.freeze(T.prototype);var N=s(825);var S,L,R,I;class P extends d{constructor(){super(...arguments),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"playersBar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"btn",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),S.set(this,void 0),Object.defineProperty(this,"wantsAutoPlayPause",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"askConfirmBeforeLeave",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),L.set(this,void 0),R.set(this,void 0),I.set(this,void 0)}_lazyLoad(){this.baseElem.classList.add(l.Y.General.Class.CENTER_CONTENTS,"style-m_this_1euFn");const e=P.createGridWrapper();this.grid=Object.freeze({base:e.top,implHost:e.implHost,pauseOl:e.pauseOl}),o.R.propNoWrite(this,"grid"),o.R.prependComment(this.grid.implHost,"grid impl host"),this.grid.implHost.appendChild(document.createComment("grid impl")),this.baseElem.appendChild(e.top),e.pauseOl.addEventListener("focus",(e=>{const t=this.currentGame;void 0!==t&&t.status===N.l.Status.PAUSED&&(this.grid.base.focus(),this._reqStatusPlaying())})),this._initializeControlsBar(),this._initializePlayersBar(),(0,a.YH)(this,L,(()=>{if(this.wantsAutoPlayPause)if(document.hidden){if(void 0===(0,a.Q_)(this,I)){const e=this.currentGame;(void 0===e||void 0!==e&&e.status!==N.l.Status.OVER)&&this._reqStatusPaused()}}else"page-hide"===(0,a.Q_)(this,I)&&this._reqStatusPlaying()})),(0,a.YH)(this,R,this._gridKeyDownCallback.bind(this))}_abstractOnBeforeEnter(e,t){return(0,a.mG)(this,void 0,void 0,(function*(){document.addEventListener("visibilitychange",(0,a.Q_)(this,L)),this.btn.pause.disabled=!0,this._statusBecomePaused();const e=(0,a.YH)(this,S,yield this._createNewGame(t));yield e.reset(),this.grid.implHost.appendChild(e.htmlElements.grid),this.playersBar.appendChild(e.htmlElements.playersBar),this.btn.pause.onclick=this._reqStatusPlaying.bind(this),this.btn.pause.disabled=!1,this.wantsAutoPlayPause&&setTimeout((()=>{document.hidden||this._reqStatusPlaying()}),500),this.grid.base.addEventListener("keydown",(0,a.Q_)(this,R),{capture:!0})}))}_abstractOnBeforeLeave(e){if(this.askConfirmBeforeLeave&&!this.top.confirm("Are you sure you would like to leave?"))return!1;document.removeEventListener("visibilitychange",(0,a.Q_)(this,L)),this.currentGame.statusBecomeOver();for(const e of Object.values(this.currentGame.htmlElements))e.textContent="",e.remove();return this.grid.base.removeEventListener("keydown",(0,a.Q_)(this,R)),(0,a.YH)(this,S,void 0),!0}get currentGame(){return(0,a.Q_)(this,S)}get probeCurrentGame(){return(0,a.Q_)(this,S)}_gridKeyDownCallback(e){if(e.stopPropagation(),!e.isTrusted)return!0;const t=this.currentGame;if(e.ctrlKey&&" "===e.key&&!e.repeat){const e=t.operators;t.setCurrentOperator((1+e.indexOf(t.currentOperator))%e.length)}else t.currentOperator.processKeyboardInput(e);return" "!==e.key||(e.preventDefault(),!1)}_reqStatusPlaying(){this._statusBecomePlaying()}_reqStatusPaused(){this._statusBecomePaused()}_statusBecomePlaying(){this.currentGame.statusBecomePlaying(),this.btn.pause.textContent="Pause",this.grid.pauseOl.style.visibility="hidden",(0,a.YH)(this,I,void 0),this.btn.pause.onclick=this._reqStatusPaused.bind(this),this.btn.reset.disabled=!0,this.grid.base.focus()}_statusBecomePaused(){var e;null===(e=this.currentGame)||void 0===e||e.statusBecomePaused(),this.btn.pause.textContent="Unpause",this.grid.pauseOl.style.visibility="visible",(0,a.YH)(this,I,document.hidden?"page-hide":"other"),this.btn.pause.onclick=this._reqStatusPlaying.bind(this),this.btn.reset.disabled=!1}_onGameBecomeOver(){this.btn.pause.disabled=!0,this.btn.reset.disabled=!1}_resetGame(){this.currentGame.reset(),this.btn.pause.disabled=!1,this.wantsAutoPlayPause&&this._reqStatusPlaying()}_initializeControlsBar(){const e=o.R.mkEl("div",[l.Y.General.Class.CENTER_CONTENTS,l.Y.General.Class.INPUT_GROUP,"style-m_controls-bar_fLS47"]);function t(t,s){return(s=null!=s?s:o.R.mkEl("button",[])).classList.add(l.Y.General.Class.INPUT_GROUP_ITEM),s.textContent=t,s.addEventListener("pointerenter",(e=>{s.focus()})),e.appendChild(s),s}e.setAttribute("role","menu"),e.addEventListener("pointerleave",(e=>{this.grid.base.focus()})),t("",this.nav.prev),this.btn=Object.freeze({pause:t(""),reset:t("Reset")}),o.R.propNoWrite(this,"btn"),this.btn.reset.onclick=this._resetGame.bind(this),this.baseElem.appendChild(e)}_initializePlayersBar(){const e=this.playersBar=o.R.mkEl("div",["style-m_players-bar_BDHhb"]);o.R.propNoWrite(this,"playersBar"),this.baseElem.appendChild(e)}}S=new WeakMap,L=new WeakMap,R=new WeakMap,I=new WeakMap,function(e){e.createGridWrapper=function(){const e=l.Y.General.Class,t=o.R.mkEl("div",["style-m_grid-wrapper_2jXbc"]);t.setAttribute("role","presentation");const s=o.R.mkEl("div",[e.TEXT_SELECT_DISABLED,"grid-m_this_3RnyB"],{tabIndex:0});s.setAttribute("role","textbox"),s.setAttribute("aria-label","Game Grid");const n=o.R.mkEl("div",["grid-m_scroll-outer_3To0V"]);n.setAttribute("role","presentation");const i=o.R.mkEl("div",[e.FILL_PARENT,e.CENTER_CONTENTS,"grid-m_pause-overlay_3RB2_"],{});return i.appendChild(o.R.mkEl("div",[],{textContent:"(Click to Unpause)"})),n.appendChild(i),s.appendChild(n),t.appendChild(s),Object.freeze({top:t,grid:s,intersectionRoot:n,implHost:n,pauseOl:i})}}(P||(P={})),o.R.protoNoEnum(P,"probeCurrentGame","_statusBecomePlaying","_statusBecomePaused"),o.R.instNoEnum(P,"createGridWrapper"),Object.freeze(P),Object.freeze(P.prototype);class C extends P{constructor(){super(...arguments),Object.defineProperty(this,"wantsAutoPlayPause",{enumerable:!0,configurable:!0,writable:!0,value:!0}),Object.defineProperty(this,"askConfirmBeforeLeave",{enumerable:!0,configurable:!0,writable:!0,value:!0})}_lazyLoad(){super._lazyLoad(),this.nav.prev.innerHTML="Return To Setup"}_createNewGame(e){return(0,a.mG)(this,void 0,void 0,(function*(){return new((yield Promise.all([s.e(68),s.e(133),s.e(755)]).then(s.bind(s,765))).OfflineGame)(this._onGameBecomeOver.bind(this),e)}))}}Object.freeze(C),Object.freeze(C.prototype);var k=s(804);var w,A;class G extends d{constructor(){super(...arguments),w.set(this,void 0),Object.defineProperty(this,"in",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"groupNameDataList",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),A.set(this,!1)}get clientIsGroupHost(){return(0,a.Q_)(this,A)}get loginInfo(){if(void 0===this.in)throw new Error("never");return Object.freeze({name:this.in.groupName.value,passphrase:this.in.passphrase.value})}_lazyLoad(){this.baseElem.classList.add(l.Y.General.Class.CENTER_CONTENTS,"style-m_this_1mSAZ");const e=this._initializeFormContents(),t=this._initializeHostUrlHandlers();this._initializeGroupNameHandlers(t),this._initializePassphraseHandlers(),this.nav.next.onclick=e=>{s()};const s=()=>{this.requestGoToScreen(d.Id.GROUP_LOBBY,{})};this._setFormState(H.CHOOSING_HOST),this.baseElem.appendChild(e)}getRecommendedFocusElem(){return void 0!==this.groupSocket?this.in.groupName:this.in.hostUrl}get state(){return(0,a.Q_)(this,w)}_setFormState(e){if(this.state!==e){if(e===H.IN_GROUP){if(this.state!==H.CHOOSING_GROUP)throw new Error("never");this.in.passphrase.disabled=!0,this.nav.next.disabled=!1,this.nav.next.focus()}else this.nav.next.disabled=!0,this.in.passphrase.value="",e===H.CHOOSING_HOST?(this.in.groupName.disabled=!0,this.in.groupName.value="",this.groupNameDataList.textContent="",this.in.passphrase.disabled=!0,this.in.hostUrl.focus()):e===H.CHOOSING_GROUP&&(this.in.groupName.disabled=!1,this.in.passphrase.disabled=!1,(0,a.YH)(this,A,!1),this.in.groupName.focus());(0,a.YH)(this,w,e)}}_initializeHostUrlHandlers(){const e=this.top,t=this.in.hostUrl,s=()=>(0,a.mG)(this,void 0,void 0,(function*(){var s,n;if(!t.value||!t.validity.valid)return;const i=new window.URL(t.value);if((null===(s=this.groupSocket)||void 0===s?void 0:s.io.opts.hostname)===i.hostname)return void(this.groupSocket.connected&&this._setFormState(H.CHOOSING_GROUP));null===(n=this.joinerSocket)||void 0===n||n.disconnect();const r=yield this.top.sockets.joinerSocketConnect({serverUrl:i});r.on("connect",(()=>{this._setFormState(H.CHOOSING_GROUP),r.on(k.ZA.Exist.EVENT_NAME,this._onNotifyGroupExist.bind(this))})).on("connect_error",(e=>{this.top.toast("Unable to connected to the specified server.")})).on("disconnect",(s=>{"io server disconnect"===s&&(this._setFormState(H.CHOOSING_HOST),t.value="",e.toast("The server disconnected you from the group joiner."))}))}));return t.oninput=e=>this._setFormState(H.CHOOSING_HOST),t.onkeydown=e=>{e.isTrusted&&"Enter"===e.key&&s()},t.onpaste=e=>{e.isTrusted&&window.setTimeout((()=>s()),0)},t.onchange=e=>{e.isTrusted&&s()},s}_onNotifyGroupExist(e){if(e===k.ZA.Exist.RequestCreate.Response.NOPE)return void this.top.toast(`The server rejected your request to create a new group "${this.in.groupName.value}".`);if(e===k.ZA.Exist.RequestCreate.Response.OKAY)return this.top.toast(`server accepted request to create new group "${this.in.groupName.value}".`),this.top.toast("connecting to new group..."),void this._attemptToJoinExistingGroup();const t=this.groupNameDataList,s=Array.from(t.children);Object.entries(e).forEach((([e,n])=>{const i=s.find((t=>t.value===e))||(e=>{const n=o.R.mkEl("option",[],{value:e});for(const e of s)if(n.value.localeCompare(e.value)<0){t.insertBefore(n,e);break}return n.parentElement||t.appendChild(n),n})(e);switch(n){case k.ZA.Exist.Status.IN_LOBBY:i.textContent="In Lobby";break;case k.ZA.Exist.Status.IN_GAME:i.textContent="In Game";break;case k.ZA.Exist.Status.DELETE:i.remove()}}))}_initializeGroupNameHandlers(e){const t=this.in.groupName,s=()=>{t.value&&t.validity.valid&&(this.state===H.IN_GROUP?this.nav.next.focus():this.in.passphrase.focus())};this.in.groupName.oninput=t=>(0,a.mG)(this,void 0,void 0,(function*(){t.isTrusted&&(this.state===H.IN_GROUP&&(yield e()),this.in.passphrase.value="",(0,a.YH)(this,A,!1))})),t.onkeydown=e=>{e.isTrusted&&"Enter"===e.key&&s()},t.onchange=e=>{e.isTrusted&&s()}}_initializePassphraseHandlers(){const e=()=>(0,a.mG)(this,void 0,void 0,(function*(){if(this.in.passphrase.validity.valid)return void 0!==this.groupSocket&&this.groupSocket.nsp===k.b4.Nsps.GROUP_LOBBY_PREFIX+this.in.groupName.value?this.groupSocket.connected?(this._setFormState(H.IN_GROUP),void this.nav.next.focus()):void 0:void(Array.from(this.groupNameDataList.children).some((e=>e.value===this.in.groupName.value))?((0,a.YH)(this,A,!1),this._attemptToJoinExistingGroup()):((0,a.YH)(this,A,!0),this.joinerSocket.emit(k.ZA.Exist.EVENT_NAME,new k.ZA.Exist.RequestCreate(this.in.groupName.value,this.in.passphrase.value))))}));this.in.passphrase.onkeydown=t=>{t.isTrusted&&"Enter"===t.key&&e()}}_attemptToJoinExistingGroup(){var e;null===(e=this.groupSocket)||void 0===e||e.disconnect();const t=this.top,s=n.getLastUserInfo();this.top.sockets.groupSocketConnect(this.in.groupName.value,{passphrase:this.in.passphrase.value,userInfo:s}).on("connect",(()=>{this._setFormState(H.IN_GROUP)})).on("connect_error",(e=>{this._setFormState(H.CHOOSING_GROUP),t.toast("Unable to connect to the specified group.")})).on("disconnect",(e=>{this._setFormState(H.CHOOSING_GROUP),"io server disconnect"===e&&(t.toast("The server disconnected you from your group."),this.top.currentScreen!==this?this.requestGoToScreen(d.Id.GROUP_JOINER,{}):this.in.passphrase.focus())}))}get joinerSocket(){return this.top.sockets.joinerSocket}get groupSocket(){return this.top.sockets.groupSocket}_initializeFormContents(){this.in={};const e=o.R.mkEl("div",[l.Y.General.Class.INPUT_GROUP,"style-m_content-wrapper_3PpQN"],{});function t(t,s){const n=o.R.mkEl("input",[l.Y.General.Class.INPUT_GROUP_ITEM,s],{type:"text",autocomplete:"off",spellcheck:!1}),i=o.R.mkEl("label",[],{textContent:t});return i.appendChild(n),e.appendChild(i),n}this.nav.prev.classList.add(l.Y.General.Class.INPUT_GROUP_ITEM),e.appendChild(this.nav.prev);{const e=this.in.hostUrl=Object.assign(t("Host URL","style-m_host-url_1TIpa"),{type:"url",maxLength:128,autocomplete:"on",required:!0});e.setAttribute("list",l.Y.GLOBAL_IDS.PUBLIC_GAME_HOST_URLS);const s=G.SUGGEST_HOST(this.top.webpageHostType);if(s){const t=o.R.mkEl("option",[],{value:s.value,textContent:s.description});document.getElementById(l.Y.GLOBAL_IDS.PUBLIC_GAME_HOST_URLS).insertAdjacentElement("afterbegin",t),e.value=t.value}}{const e=this.in.groupName=Object.assign(t("Group Name","style-m_group-name_1JfrT"),{pattern:k.ZA.Name.REGEXP.source,minLength:1,maxLength:k.ZA.Name.MaxLength,autocomplete:"on",required:!0}),s=this.groupNameDataList=o.R.mkEl("datalist",[],{id:l.Y.GLOBAL_IDS.CURRENT_HOST_GROUPS});this.baseElem.appendChild(s),e.setAttribute("list",s.id)}{const e=this.in.passphrase=t("Group Passphrase","style-m_passphrase_2tjc3");e.pattern=k.ZA.Passphrase.REGEXP.source,e.maxLength=k.ZA.Passphrase.MaxLength}return this.nav.next.classList.add(l.Y.General.Class.INPUT_GROUP_ITEM),e.appendChild(this.nav.next),o.R.propNoWrite(this,"in","groupNameDataList"),Object.freeze(this.in),e}}w=new WeakMap,A=new WeakMap,function(e){let t;!function(e){e.CHOOSING_HOST="choosing-host",e.CHOOSING_GROUP="choosing-group",e.IN_GROUP="in-group"}(t=e.State||(e.State={})),e.SUGGEST_HOST=function(e){switch(e){case"github":return;case"filesystem":return{value:"localhost:"+k.b4.DEFAULT_PORT,description:"dev shortcut :)"};case"sk-server":return{value:window.location.origin,description:"this page's server"};default:return}}}(G||(G={}));const H=G.State;Object.freeze(G),Object.freeze(G.prototype);class U extends y{_lazyLoad(){super._lazyLoad(),this.nav.next.textContent="Start Game",this.nav.next.onclick=e=>{const t=this.parseArgsFromGui();this.top.clientIsGroupHost&&this.top.sockets.groupSocket.emit(k.m4.CREATE_GAME,t)}}}Object.freeze(U),Object.freeze(U.prototype);class j extends d{constructor(){super(...arguments),Object.defineProperty(this,"_players",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"teamsElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"teamElems",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"in",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}get socket(){return this.top.sockets.groupSocket}_lazyLoad(){this.baseElem.classList.add("style-m_this_1Rjcs"),this._players=new Map,this._createInputs(),this.nav.prev.textContent="Return To Joiner",this.teamsElem=o.R.mkEl("div",["style-m_teams-section_2eDnz"]),this.baseElem.appendChild(this.teamsElem),this.teamElems=new Map,o.R.propNoWrite(this,"_players","teamsElem","teamElems","in");{const e=this.nav.next;e.textContent="Setup Game",e.onclick=()=>{this.requestGoToScreen(d.Id.SETUP_ONLINE,{})},this.baseElem.appendChild(e)}}_createInputs(){var e;const t=o.R.mkEl("div",[l.Y.General.Class.INPUT_GROUP,"style-m_client-info-section_2hDNO"]),s=o.R.mkEl("input",[l.Y.General.Class.INPUT_GROUP_ITEM],{type:"text",minLength:1,maxLength:c.J5.Username.MAX_LENGTH,pattern:c.J5.Username.REGEXP.source,spellcheck:!1,value:null!==(e=this.top.storage.Local.username)&&void 0!==e?e:"",onchange:this._submitInputs.bind(this)});t.appendChild(s);const n=o.R.mkEl("input",[l.Y.General.Class.INPUT_GROUP_ITEM],{type:"number",inputMode:"numeric",min:"0",max:"0",step:"1",value:"0",onchange:this._submitInputs.bind(this)});n.classList.add(),t.appendChild(n);const i=o.R.mkEl("select",[]);this.in=Object.freeze({username:s,teamId:n,avatar:i}),this.baseElem.appendChild(t)}_submitInputs(){this.in.username.validity.valid&&this.in.teamId.validity.valid&&(this.top.storage.Local.username=this.in.username.value,this.top.storage.Local.avatar=this.in.avatar.value,this.socket.emit(k.ZA.Socket.UserInfoChange.EVENT_NAME,{username:this.in.username.value,teamId:parseInt(this.in.teamId.value),avatar:c.J5.Avatar.LOREM_IPSUM}))}_abstractOnBeforeEnter(e,t){return(0,a.mG)(this,void 0,void 0,(function*(){"forward"===e&&(this.nav.next.disabled=!this.top.clientIsGroupHost,this._players.clear(),this.teamElems.clear(),this.teamsElem.textContent="",this._submitInputs(),this.socket.off(k.ZA.Socket.UserInfoChange.EVENT_NAME).on(k.ZA.Socket.UserInfoChange.EVENT_NAME,this._onUserInfoChange.bind(this))),this.socket.once(k.m4.CREATE_GAME,(()=>{const e=this.top.groupLoginInfo;console.log("group create game socket. now waiting for ctor args. "),this.top.sockets.gameSocketConnect(e.name,{passphrase:e.passphrase}).once(k.JD.CREATE_GAME,(e=>{this.requestGoToScreen(d.Id.PLAY_ONLINE,e)}))}))}))}getRecommendedFocusElem(){let e=this.in.username.validity.valid?this.in.teamId.validity.valid?void 0:this.in.teamId:this.in.username;return void 0===e&&(e=this.top.clientIsGroupHost?this.nav.next:this.in.teamId),e}_abstractOnBeforeLeave(e){return e===d.NavDir.BACKWARD&&this.socket.off(k.m4.CREATE_GAME),!0}_onUserInfoChange(e){Object.entries(e).forEach((([e,t])=>{const s=this._players.get(e);if(!s||1!==this.teamElems.get(s.teamId).childElementCount||void 0!==t&&t.teamId===s.teamId||(this.teamElems.get(s.teamId).remove(),this.teamElems.delete(s.teamId)),t&&!this.teamElems.has(t.teamId)){const e=o.R.mkEl("div",["style-m_team_1OhAw"]);this.teamElems.set(t.teamId,e),e.onclick=e=>{this.in.teamId.value=t.teamId.toString()},this.teamsElem.appendChild(e)}if(void 0===t)s.base.remove(),this._players.delete(e);else if(void 0===s){const s=new j.UserInfo(t);this._players.set(e,s),this.teamElems.get(t.teamId).appendChild(s.base)}else s.update(t)})),this.in.teamId.max=Object.keys(this._players).length.toString()}}!function(e){var t,s,n;t=new WeakMap,s=new WeakMap,n=new WeakMap,e.UserInfo=class{constructor(e){t.set(this,void 0),s.set(this,void 0),n.set(this,void 0),Object.defineProperty(this,"base",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"el",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.base=o.R.mkEl("div",["style-m_player_2jAbJ"]);const i=()=>{const e=o.R.mkEl("div",[]);return this.base.appendChild(e),e};this.el=Object.freeze({username:i(),teamId:i(),avatar:i()}),this.el.username.classList.add("style-m_player__name_3esbS"),this.username=e.username,this.teamId=e.teamId,o.R.propNoWrite(this,"base","el")}update(e){this.username=e.username,this.teamId=e.teamId,this.avatar=e.avatar}get username(){return(0,a.Q_)(this,t)}set username(e){this.el.username.textContent=e,(0,a.YH)(this,t,e)}get teamId(){return(0,a.Q_)(this,s)}set teamId(e){this.el.teamId.textContent=e.toString(),(0,a.YH)(this,s,e)}get avatar(){return(0,a.Q_)(this,n)}set avatar(e){(0,a.YH)(this,n,e),this.el.avatar}}}(j||(j={})),o.R.protoNoEnum(j,"_createInputs","_submitInputs"),Object.freeze(j),Object.freeze(j.prototype);class x extends P{constructor(){super(...arguments),Object.defineProperty(this,"askConfirmBeforeLeave",{enumerable:!0,configurable:!0,writable:!0,value:!1}),Object.defineProperty(this,"wantsAutoPlayPause",{enumerable:!0,configurable:!0,writable:!0,value:!1})}get socket(){return this.top.sockets.gameSocket}_lazyLoad(){super._lazyLoad(),this.nav.prev.innerHTML="Return To Lobby"}_abstractOnBeforeLeave(e){const t=super._abstractOnBeforeLeave(e);return t&&void 0!==this.socket&&(this.socket.emit(k.JD.RETURN_TO_LOBBY),this.socket.offAny(),this.socket.disconnect()),t}_reqStatusPlaying(){this.socket.emit(k.JD.UNPAUSE)}_reqStatusPaused(){this.socket.emit(k.JD.PAUSE)}_createNewGame(e){return(0,a.mG)(this,void 0,void 0,(function*(){const t=new((yield Promise.all([s.e(68),s.e(133),s.e(775)]).then(s.bind(s,92))).OnlineGame)(this._onGameBecomeOver.bind(this),this.top.sockets.gameSocket,e);return this.socket.on(k.JD.UNPAUSE,(()=>{this._statusBecomePlaying()})).on(k.JD.PAUSE,(()=>{this._statusBecomePaused()})).on(k.JD.RETURN_TO_LOBBY,(e=>{void 0===e&&this.nav.prev.click()})),Promise.resolve(t)}))}_onGameBecomeOver(){super._onGameBecomeOver()}}var z,M,D,B,F;Object.freeze(x),Object.freeze(x.prototype);class W{constructor(e,t){Object.defineProperty(this,"dict",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),z.set(this,void 0),M.set(this,void 0),(0,a.YH)(this,M,e.transition),t.setAttribute("role","presentation");const s=d.Id,n=e,i=t,r=Object.freeze(this.goToScreen.bind(this));this.dict=Object.freeze({[s.HOME]:new h(s.HOME,n,i,r),[s.HOW_TO_PLAY]:new m(s.HOW_TO_PLAY,n,i,r),[s.HOW_TO_HOST]:new b(s.HOW_TO_HOST,n,i,r),[s.COLOUR_CTRL]:new g(s.COLOUR_CTRL,n,i,r),[s.SETUP_OFFLINE]:new T(s.SETUP_OFFLINE,n,i,r),[s.PLAY_OFFLINE]:new C(s.PLAY_OFFLINE,n,i,r),[s.GROUP_JOINER]:new G(s.GROUP_JOINER,n,i,r),[s.SETUP_ONLINE]:new U(s.SETUP_ONLINE,n,i,r),[s.GROUP_LOBBY]:new j(s.GROUP_LOBBY,n,i,r),[s.PLAY_ONLINE]:new x(s.PLAY_ONLINE,n,i,r)}),o.R.propNoWrite(this,"dict");const l=d.NavTree[window.location.hash.slice(1)];window.setTimeout((()=>{var e;this.goToScreen(null!==(e=null==l?void 0:l.href)&&void 0!==e?e:d.Id.HOME,{})}),75),window.addEventListener("popstate",(e=>{this.goToScreen(window.history.state.screenId,{})}))}goToScreen(e,t){return(0,a.mG)(this,void 0,void 0,(function*(){const s=this.currentScreen,n=this.dict[e];(0,a.YH)(this,z,n);const i=d.GET_NAV_DIR({curr:null==s?void 0:s.screenId,dest:e});return!(void 0!==s&&!s._leave(i)||(yield(0,a.Q_)(this,M).do({beforeUnblurAwait:n._enter(i,t),beforeUnblur:()=>{var e;null==s||s._onAfterLeave(),n._onAfterEnter(),null===(e=n.getRecommendedFocusElem())||void 0===e||e.focus()}}),0))}))}get currentScreen(){return(0,a.Q_)(this,z)}}z=new WeakMap,M=new WeakMap,Object.freeze(W),Object.freeze(W.prototype);class Y{constructor(){Object.defineProperty(this,"baseElem",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),D.set(this,void 0),this.baseElem=document.getElementById(l.Y.Screen.Id.SCREEN_TINT),(0,a.YH)(this,D,void 0),o.R.propNoWrite(this,"baseElem")}do(e){var t;return(0,a.YH)(this,D,(null!==(t=(0,a.Q_)(this,D))&&void 0!==t?t:Promise.resolve()).then((()=>this._atomicDo(e)))),(0,a.Q_)(this,D)}_atomicDo(e){return(0,a.mG)(this,void 0,void 0,(function*(){const t=this.baseElem.style;yield this._triggerCssTransition((()=>{t.pointerEvents="all",t.opacity="1.0"})),void 0!==e.intermediateTransitionTrigger&&(yield this._triggerCssTransition((()=>{e.intermediateTransitionTrigger()}))),yield e.beforeUnblurAwait,void 0!==e.beforeUnblur&&e.beforeUnblur(),yield this._triggerCssTransition((()=>{t.pointerEvents="none",t.opacity="0.0"}))}))}_triggerCssTransition(e){return new Promise(((t,s)=>{this.baseElem.addEventListener("transitionend",(()=>t()),{once:!0}),e()}))}}D=new WeakMap,o.R.protoNoEnum(Y,"_atomicDo","_triggerCssTransition"),Object.freeze(Y),Object.freeze(Y.prototype);class Q{constructor(){B.set(this,void 0),(0,a.YH)(this,B,{joiner:void 0,group:void 0,game:void 0})}get joinerSocket(){return(0,a.Q_)(this,B).joiner}get groupSocket(){return(0,a.Q_)(this,B).group}get gameSocket(){return(0,a.Q_)(this,B).game}joinerSocketConnect(e){return(0,a.mG)(this,void 0,void 0,(function*(){const t=new((yield s.e(307).then(s.t.bind(s,307,23))).default.Manager)(e.serverUrl.toString(),{reconnectionAttempts:k.ZA.GameServerReconnectionAttempts,autoConnect:!1,transports:["websocket"]}).socket(k.b4.Nsps.GROUP_JOINER);return this._registerSocket(t,"joiner"),t.connect()}))}groupSocketConnect(e,t){return this._groupSocketHelper("group",e,t).connect()}gameSocketConnect(e,t){if(void 0===e||void 0===t.passphrase)throw new TypeError("never");return this._groupSocketHelper("game",e,t).connect()}_groupSocketHelper(e,t,s){let n;switch(e){case"group":n=k.b4.Nsps.GROUP_LOBBY_PREFIX;break;case"game":n=k.b4.Nsps.GROUP_GAME_PREFIX;break;default:throw new TypeError("never")}const i=this.joinerSocket.io.socket(n+t,{auth:s});return this._registerSocket(i,e),i}_registerSocket(e,t){(0,a.Q_)(this,B)[t]=e;const s=()=>{e.offAny(),(0,a.Q_)(this,B)[t]=void 0};e.on("connect_error",(e=>{console.warn(e),s()})).on("disconnect",(e=>{"io server disconnect"!==e&&"io client disconnect"!==e||(console.info(e),s())}))}}B=new WeakMap,o.R.protoNoEnum(Q,"joinerSocketConnect","groupSocketConnect","gameSocketConnect","_groupSocketHelper","_registerSocket"),Object.freeze(Q),Object.freeze(Q.prototype);class J{constructor(){Object.defineProperty(this,"defaultDocTitle",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"webpageHostType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"storage",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"transition",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),F.set(this,void 0),Object.defineProperty(this,"sockets",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.defaultDocTitle=document.title,this.webpageHostType=window.location.hostname.match(/github\.io/)?J.WebpageHostType.GITHUB:window.location.protocol.startsWith("file")?J.WebpageHostType.FILESYSTEM:J.WebpageHostType.SNAKEY_SERVER,o.R.propNoWrite(this,"defaultDocTitle","webpageHostType"),this.storage=n,this.sockets=new Q,this.transition=new Y,o.R.propNoWrite(this,"storage","sockets","transition");const e=document.getElementById(l.Y.Screen.Id.ALL_SCREENS);if(!e)throw new Error("never");o.R.prependComment(e,"ALL SCREENS CONTAINER"),(0,a.YH)(this,F,new W(this,e)),o.R.propNoWrite(this)}get clientIsGroupHost(){return(0,a.Q_)(this,F).dict.groupJoiner.clientIsGroupHost}get groupLoginInfo(){return(0,a.Q_)(this,F).dict.groupJoiner.loginInfo}toast(e){console.info(e)}confirm(e){return window.confirm(e)}get game(){var e;return null!==(e=(0,a.Q_)(this,F).dict.playOffline.probeCurrentGame)&&void 0!==e?e:(0,a.Q_)(this,F).dict.playOnline.probeCurrentGame}get currentScreen(){return(0,a.Q_)(this,F).currentScreen}}F=new WeakMap,function(e){let t;!function(e){e.GITHUB="github",e.FILESYSTEM="filesystem",e.SNAKEY_SERVER="sk-server"}(t=e.WebpageHostType||(e.WebpageHostType={}))}(J||(J={})),Object.freeze(J),Object.freeze(J.prototype),[Object,Array,Map,Set,WeakMap,WeakSet,String,Number,RegExp,HTMLElement,HTMLDivElement,HTMLSpanElement,HTMLPreElement,HTMLButtonElement,HTMLInputElement,HTMLSelectElement,HTMLOptionElement,HTMLScriptElement,HTMLStyleElement,HTMLLinkElement,HTMLAnchorElement,HTMLDocument,HTMLIFrameElement,HTMLCanvasElement].forEach((e=>{Object.freeze(e),Object.freeze(null==e?void 0:e.prototype)}));const V=new J,q=void 0;function K(){return V.currentScreen}function X(){return V.game}console.info("%c🩺 welcome! 🐍","font:700 2.3em /1.5 monospace; margin:0.4em; border:0.3em solid black;padding:0.4em; color:white; background-color:#3f5e77; border-radius:0.7em; "),V.webpageHostType===J.WebpageHostType.GITHUB&&"serviceWorker"in navigator&&window.addEventListener("load",(function(){navigator.serviceWorker.register("/ServiceWorker.js").then((e=>{console.info("ServiceWorker registration successful with scope: ",e.scope)}),(e=>{console.info("ServiceWorker registration failed: ",e)}))}))},903:(e,t,s)=>{"use strict";function n(e,t,s,n){return new(s||(s=Promise))((function(i,r){function a(e){try{l(n.next(e))}catch(e){r(e)}}function o(e){try{l(n.throw(e))}catch(e){r(e)}}function l(e){var t;e.done?i(e.value):(t=e.value,t instanceof s?t:new s((function(e){e(t)}))).then(a,o)}l((n=n.apply(e,t||[])).next())}))}function i(e,t){if(!t.has(e))throw new TypeError("attempted to get private field on non-instance");return t.get(e)}function r(e,t,s){if(!t.has(e))throw new TypeError("attempted to set private field on non-instance");return t.set(e,s),s}s.d(t,{mG:()=>n,Q_:()=>i,YH:()=>r}),Object.create,Object.create}},0,[[897,280]]]); +var capswalk;(self.webpackChunkcapswalk=self.webpackChunkcapswalk||[]).push([[826],{164:(e,t,s)=>{"use strict";s.d(t,{R:()=>i});const a=Object.freeze({enumerable:!1}),r=Object.freeze({writable:!1});var i;!function(e){function t(e){for(const s of Object.getOwnPropertyNames(e)){const a=e[s];null!==a&&"object"==typeof a&&t(a)}Object.freeze(e)}function s(e,t,...s){for(const a of s)Object.defineProperty(t,a,e)}let i;var n;e.deepFreeze=function(e){return t(e),e},e.hasProp=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.protoNoEnum=function(e,...t){Object.getOwnPropertyNames(e.prototype).freeze(),t.forEach((t=>{Object.defineProperty(e.prototype,t,a)}))},e.instNoEnum=s.bind(null,a),e.propNoWrite=s.bind(null,r),e.camelCaseTransforms=function(e){const t=e.replace(/[A-Z]/g,(e=>" "+e.toLowerCase()));return Object.freeze({spaceyLowercase:t,spaceyUppercase:t.toUpperCase(),spaceyCapitalized:t.split(" ").map((e=>e.charAt(0).toUpperCase()+e.substring(1))).join(" ")})},(n=i=e.Web||(e.Web={})).prependComment=function(e,t){e.parentNode.insertBefore(document.createComment(" "+t+" "),e)},n.adoptStyleSheet=function(t,s){t.appendChild(e.html("link",[],{rel:"stylesheet",href:s}))},n._makeSmartStorage=function(e,t,s){const a={};return Object.keys(s).forEach((e=>{const s=""+e;Object.defineProperty(a,e,{enumerable:!0,get:()=>{const e=t.getItem(s);return null===e?void 0:JSON.parse(e)},set:e=>{t.setItem(s,JSON.stringify(e))}})})),a},e.html=function(e,t,s){const a=document.createElement(e);try{Object.seal(a)}catch(e){}return(null==t?void 0:t.length)&&a.classList.add(...t),"button"===e?a.type="button":"a"===e&&(a.rel="noopener"),void 0!==s&&Object.assign(a,s),a},e.svg=function(e,t,s){const a=document.createElementNS("http://www.w3.org/2000/svg",e);return Object.seal(a),(null==t?void 0:t.length)&&a.classList.add(...t),void 0!==s&&Object.assign(a,s),a}}(i||(i={})),Object.freeze(i)},495:(e,t,s)=>{"use strict";s.d(t,{ZA:()=>a,oU:()=>r,m4:()=>i,JD:()=>n}),new WeakMap;class a{}var r,i,n,o;!function(e){let t;var s;let a;var r;(s=t=e.Name||(e.Name={})).REGEXP=/^(?:[a-zA-Z0-9:-]+)$/,s.MaxLength=30,(r=a=e.Passphrase||(e.Passphrase={})).REGEXP=/^(?:[a-zA-Z0-9:-]*)$/,r.MaxLength=30,e.GameServerReconnectionAttempts=2,e.DEFAULT_TTL=20}(a||(a={})),Object.freeze(a),Object.freeze(a.prototype),function(e){let t,s,a;(t=e.Create||(e.Create={})).NAME="joiner/create",function(e){let t;var s;e.NAME="joiner/exist",(s=t=e.Status||(e.Status={})).IN_LOBBY="in-lobby",s.IN_GAME="in-game",s.DELETE="delete"}(s=e.Exist||(e.Exist={})),(a=e.TryJoin||(e.TryJoin={})).NAME="joiner/try-join"}(r||(r={})),Object.freeze(r),function(e){let t;(t=e.UserInfo||(e.UserInfo={})).NAME="group/user-info-change",e.CREATE_GAME="group/create-game"}(i||(i={})),Object.freeze(i),(o=n||(n={})).RESET="game/reset",o.UNPAUSE="game/unpause",o.PAUSE="game/pause",o.IN_GAME="game/ingame",o.RETURN_TO_LOBBY="game/return-to-lobby"},139:(e,t,s)=>{"use strict";s.d(t,{Uo:()=>l,J5:()=>o});var a=s(164);const r=Object.freeze({IDENT:e=>e,LOWER:e=>e.toLowerCase()}),i={"engl-low":{module:"English",export:"Lowercase",isolatedMinOpts:25,remapFunc:r.LOWER,displayName:"English Lowercase (qwerty)",blurb:""},"engl-mix":{module:"English",export:"MixedCase",isolatedMinOpts:51,remapFunc:r.IDENT,displayName:"English Mixed-Case (Querty)",blurb:""},"japn-hir":{module:"Japanese",export:"Hiragana",isolatedMinOpts:70,remapFunc:r.LOWER,displayName:"Japanese Hiragana",blurb:""},"japn-kat":{module:"Japanese",export:"Katakana",isolatedMinOpts:68,remapFunc:r.LOWER,displayName:"Japanese Katakana",blurb:""},"kore-dub":{module:"Korean",export:"Dubeolsik",isolatedMinOpts:8690,remapFunc:r.IDENT,displayName:"Korean Dubeolsik (두벌식 키보드)",blurb:"The most common keyboard layout, and South Korea's only Hangul standard since 1969. Consonants are on the left, and vowels on the right."},"kore-sub":{module:"Korean",export:"Sebeolsik",isolatedMinOpts:10179,remapFunc:r.IDENT,displayName:"Korean Sebeolsik (세벌식 최종 키보드)",blurb:"Another Hangul keyboard layout used in South Korea, and the final Sebeolsik layout designed by Dr. Kong Byung Woo, hence the name. Syllable-initial consonants are on the right, final consonants on the left, and vowels in the middle. It is more ergonomic than the dubeolsik, but not widely used."},"kore-rom":{module:"Korean",export:"Romanization",isolatedMinOpts:3960,remapFunc:r.LOWER,displayName:"Korean Revised Romanization",blurb:"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字 表記法) is the official South Korean language romanization system. It was developed by the National Academy of the Korean Language from 1995, and was released on 7 July 2000 by South Korea's Ministry of Culture and Tourism"},"engl-cell-enc":{module:"English",export:"OldCellphone.Encode",isolatedMinOpts:7,remapFunc:r.IDENT,displayName:"Old Cellphone Keyboard",blurb:""},"mors-enc":{module:"English",export:"Morse.Encode",isolatedMinOpts:10,remapFunc:e=>e,displayName:"Morse Encoder",blurb:""},"mors-dec":{module:"English",export:"Morse.Decode",isolatedMinOpts:40,remapFunc:r.LOWER,displayName:"Morse Decoder",blurb:""},ngram2:{module:"Ngrams",export:"Ngram2",isolatedMinOpts:199,remapFunc:r.LOWER,displayName:"English Bigrams",blurb:""},ngram3:{module:"Ngrams",export:"Ngram3",isolatedMinOpts:400,remapFunc:r.LOWER,displayName:"English Trigrams",blurb:""},numpad:{module:"Numpad",export:"Numpad",isolatedMinOpts:100,remapFunc:r.LOWER,displayName:"Number Pad",blurb:""}};Object.entries(i).forEach((([e,t])=>{t.id=e})),a.R.deepFreeze(i);const n=i;Object.freeze({behavior:"smooth",block:"center",inline:"center"});class o{}!function(e){let t,s;var a;let r;e.Family=Object.freeze({HUMAN:"HUMAN",CHASER:"CHASER"}),e.Family,(t=e.Id||(e.Id={})).NULL=-1,(a=s=e.Username||(e.Username={})).REGEXP=/[ a-zA-Z0-9:-]+/,a.MAX_LENGTH=15,(r=e.Avatar||(e.Avatar={})).LOREM_IPSUM="lorem-ipsum",function(e){const t=Object.values(e).filter((e=>"string"==typeof e));e.GET_RANDOM=function(){return t[Math.floor(Math.random()*t.length)]}}(r=e.Avatar||(e.Avatar={}))}(o||(o={})),Object.freeze(o);class l{}!function(e){let t,s,a;(t=e.Seq||(e.Seq={})).REGEXP=new RegExp("^[a-zA-Z0-9!@#$%^&*()-_=+;:'\"\\|,.<>/?]+$"),(s=e.CharSeqPair||(e.CharSeqPair={})).NULL=Object.freeze({char:"",seq:""}),(a=e.WeightExaggeration||(e.WeightExaggeration={})).MAX=4,e.CHAR_HIT_COUNT_SEED_CEILING=5,e.FrontendDescs=n,e.GET_FRONTEND_DESC_BY_ID=function(t){return e.FrontendDescs[t]}}(l||(l={})),Object.freeze(l),Object.freeze(l.prototype)},892:(e,t,s)=>{"use strict";var a;s.d(t,{l:()=>a}),function(e){let t;var s;(s=t=e.Status||(e.Status={})).PLAYING="PLAYING",s.PAUSED="PAUSED",s.OVER="OVER",Object.freeze(t),e.K=Object.freeze({_HEALTH_UPDATE_CHANCE:.1,AVERAGE_HEALTH_TO_SPAWN_ON_TILE:1,PORTION_OF_MOVES_THAT_ARE_BOOST:.4,_HEALTH_COST_OF_BOOST(e,t){const s=t(this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/e);return this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/s/this.PORTION_OF_MOVES_THAT_ARE_BOOST},HEALTH_EFFECT_FOR_DOWNED_PLAYER:.6,_REQUEST_BUFFER_LENGTH:5,_ROBOT_PRIORITY_MAX_REUSES:4})}(a||(a={})),Object.freeze(a)},783:(e,t,s)=>{"use strict";s.d(t,{J:()=>v});var a,r=s(164),i=s(892),n=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},o=(e,t,s,a)=>(n(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);class l{constructor(){a.set(this,0),this.length=0}get lastRejectId(){return n(this,e=a,"read from private field"),e.get(this);var e}reset(e){o(this,a,0),this.length=0,this.predictedCoord=e}get isFull(){return this.length===i.l.K._REQUEST_BUFFER_LENGTH}signRequest(e){return this.length++,this.predictedCoord=e.moveDest,e}getNextRejectId(){return(this.lastRejectId+Math.floor(99*Math.random()))%100}reject(e,t){o(this,a,e),this.length=0,this.predictedCoord=t}acceptOldest(){this.length--}}a=new WeakMap,Object.freeze(l),Object.freeze(l.prototype);var h,c,d=s(139),p=s(56),u=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},m=(e,t,s)=>(u(e,t,"read from private field"),s?s.call(e):t.get(e)),E=(e,t,s,a)=>(u(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);const O=class extends d.J5{constructor(e,t){super(),h.set(this,void 0),c.set(this,0),this.prevCoord=void 0,this.playerId=t.playerId,this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=t.avatar,this.game=e,this.reqBuffer=new l,r.R.instNoEnum(this,"game"),r.R.propNoWrite(this,"game","playerId","familyId","teamId","username","avatar","reqBuffer"),new.target===O&&Object.seal(this)}get team(){return this.game.teams[this.teamId]}get coord(){return m(this,h)}get health(){return m(this,c)}get isDowned(){return this.health<0}isTeamedWith(e){return this.team.members.includes(e)}onTeamsBootstrapped(){}reset(e){E(this,h,e),this.prevCoord=e,this.game.grid.write(e,{occId:this.playerId}),E(this,c,0),this.reqBuffer.reset(e)}onGamePlaying(){}onGamePaused(){}onGameOver(){}makeMovementRequest(e,t){this.reqBuffer.isFull||this.game.processMoveRequest(this.reqBuffer.signRequest({initiator:this.playerId,lastRejectId:this.reqBuffer.lastRejectId,moveType:t,moveDest:e}))}setCoord(e){this.prevCoord=this.coord,E(this,h,e)}set health(e){const t=this.isDowned;if(E(this,c,e),t||!this.isDowned)return;const s=this.team,a=this.game.teams;if(s.elimOrder===p.S.ElimOrder.STANDING&&s.members.every((e=>e.isDowned))){const e=1+a.filter((e=>e.elimOrder!==p.S.ElimOrder.STANDING)).length;s.elimOrder=1+a.filter((e=>e.elimOrder!==p.S.ElimOrder.STANDING)).length,e===a.length&&this.game.statusBecomeOver()}}};let v=O;h=new WeakMap,c=new WeakMap,function(e){let t;e.MoveType=Object.freeze({NORMAL:"NORMAL",BOOST:"BOOST"}),e.MoveType,(t=e.CtorArgs||(e.CtorArgs={})).finalize=function(t){const s=t.players,a=Array.from(new Set(s.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,s)=>(e[t]=s,e)),[]);t.players=s.slice().sort(((e,t)=>a[e.teamId]-a[t.teamId])).freeze().map(((t,s)=>{var r;return Object.assign({},t,{playerId:s,teamId:a[t.teamId],avatar:null!=(r=t.avatar)?r:e.Avatar.GET_RANDOM()})})).freeze()},Object.freeze(t)}(v||(v={})),r.R.protoNoEnum(v,"onGamePlaying","onGamePaused","onGameOver","onTeamsBootstrapped"),Object.freeze(v),Object.freeze(v.prototype)},56:(e,t,s)=>{"use strict";s.d(t,{S:()=>r});var a=s(164);class r{constructor(e,t){if(this.id=e,this.members=t,this.elimOrder=r.ElimOrder.STANDING,a.R.propNoWrite(this,"id","members"),Object.seal(this),0===t.length)throw new Error("Teams must have at least one member.")}reset(){this.elimOrder=r.ElimOrder.STANDING}}!function(e){let t;(t=e.ElimOrder||(e.ElimOrder={})).STANDING=0}(r||(r={})),Object.freeze(r),Object.freeze(r.prototype)},811:(e,t,s)=>{"use strict";s.r(t),s.d(t,{game:()=>Je,screen:()=>Fe,top:()=>We}),s(768);var a,r=s(164);!function(e){let t;var s;let a,r;e.ID={PUBLIC_GAME_SERVER_URLS:"public-game-hosts-list",CURRENT_HOST_GROUPS:"current-host-groups-list"},(s=t=e.General||(e.General={})).Class={TEXT_SELECT_DISABLED:"text-select-disabled",FILL_PARENT:"fill-parent",CENTER_CONTENTS:"center-contents",STACK_CONTENTS:"stack-contents",INPUT_GROUP:"sk-input-group",INPUT_GROUP_ITEM:"sk-input-group-item"},s.Dataset={COLOUR_SCHEME:"skColourScheme"},(a=e.Player||(e.Player={})).Dataset={DOWNED:{KEY:"downed",VALUES:{TEAM:"team",SELF:"self",NO:"no"}},FACE_SWATCH:"face"},function(e){let t;e.Id={ALL_SCREENS:"all-screens-container",SCREEN_TINT:"screen-tint"},e.Class={BASE:"screen",NAV_NEXT:"screen--next-button",NAV_PREV:"screen--prev-button"},e.Dataset={CURRENT:"current"},function(e){let t;(t=e.Setup||(e.Setup={})).Id={LANG_WEIGHT_EXAGGERATION_LIST:"screen-setup--lang-weight-exaggeration-list"}}(t=e.Impl||(e.Impl={}))}(r=e.Screen||(e.Screen={}))}(a||(a={})),r.R.deepFreeze(a);var i,n=s(139);!function(e){let t;e.Local=r.R.Web._makeSmartStorage("capswalk",localStorage,{musicVolume:1,sfxVolume:1,colourSchemeId:"",colourSchemeStyleLiteral:"",gamePresetId:"",username:"",avatar:""}),e.getLastUserInfo=function(){var t,s;return Object.freeze({username:null!=(t=e.Local.username)?t:"unnamed player",teamId:0,avatar:null!=(s=e.Local.avatar)?s:n.J5.Avatar.GET_RANDOM()})},e.Session=r.R.Web._makeSmartStorage("capswalk",localStorage,Object.freeze({})),function(e){let t;e.DB_NAME="capswalk_db",(t=e.UserGamePresetStore||(e.UserGamePresetStore={})).STORE_NAME="userGamePresets",Object.freeze(t)}(t=e.IDB||(e.IDB={})),Object.freeze(t)}(i||(i={})),Object.freeze(i);var o,l,h=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},c=(e,t,s)=>(h(e,t,"read from private field"),s?s.call(e):t.get(e)),d=(e,t,s,a)=>(h(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);const p=a.Screen.Class,u=class{constructor(e,t){o.set(this,void 0),this.baseElem=r.R.html("div",[p.BASE]),l.set(this,!1),this.screenId=t,this.screenNames=r.R.camelCaseTransforms(t),this.top=e.toplevel,d(this,o,e.parentElem),this.requestGoToScreen=e.goToScreen,this.nav=Object.freeze({prev:r.R.html("button"),next:r.R.html("button")}),r.R.propNoWrite(this,"screenId","top","baseElem","nav","requestGoToScreen"),this.nav.prev.classList.add(p.NAV_PREV),this.nav.next.classList.add(p.NAV_NEXT),this.nav.prev.textContent="Back",this.nav.next.textContent="Next",this.nav.prev.onclick=e=>{const s=u.NavTree,a=s[this.screenId];s[a.prev].href===a.href?this.requestGoToScreen(u.NavTree[t].prev,{}):window.history.back()}}lazyLoad(){c(this,l)||(this._lazyLoad(),this.baseElem.setAttribute("aria-label",this.screenNames.spaceyCapitalized+" Screen"),d(this,l,!0))}async _enter(e,t){var s;if(document.title=`${this.screenNames.spaceyCapitalized} | ${this.top.defaultDocTitle}`,e===u.NavDir.FORWARD){const e=new window.URL(window.location.href),t=e.hash=u.NavTree[this.screenId].href,a=[{screenId:this.screenId},"",e.href];(null==(s=window.history.state)?void 0:s.screenId)!==t&&(u.NavTree[this.screenId].prev===this.screenId?history.replaceState(...a):history.pushState(...a))}this.lazyLoad(),await this._abstractOnBeforeEnter(e,t)}_leave(e){return!!this._abstractOnBeforeLeave(e)}_onAfterEnter(){this.baseElem.dataset[a.Screen.Dataset.CURRENT]="",c(this,o).appendChild(this.baseElem)}_onAfterLeave(){delete this.baseElem.dataset[a.Screen.Dataset.CURRENT],this.baseElem.remove()}getRecommendedFocusElem(){}async _abstractOnBeforeEnter(e,t){}_abstractOnBeforeLeave(e){return!0}};let m=u;o=new WeakMap,l=new WeakMap,function(e){let t;var s;let a;var i;(s=t=e.Id||(e.Id={})).HOME="home",s.HOW_TO_PLAY="how-to-play",s.HOW_TO_HOST="how-to-host",s.COLOUR_CTRL="colour-control",s.SETUP_OFFLINE="setup-offline",s.PLAY_OFFLINE="play-offline",s.GROUP_JOINER="group-joiner",s.SETUP_ONLINE="setup-online",s.GROUP_LOBBY="group-lobby",s.PLAY_ONLINE="play-online",Object.freeze(t),e.NavTree=r.R.deepFreeze({[t.HOME]:{prev:t.HOME,href:t.HOME},[t.HOW_TO_PLAY]:{prev:t.HOME,href:t.HOW_TO_PLAY},[t.HOW_TO_HOST]:{prev:t.HOME,href:t.HOW_TO_HOST},[t.COLOUR_CTRL]:{prev:t.HOME,href:t.COLOUR_CTRL},[t.SETUP_OFFLINE]:{prev:t.HOME,href:t.SETUP_OFFLINE},[t.PLAY_OFFLINE]:{prev:t.SETUP_OFFLINE,href:t.SETUP_OFFLINE},[t.GROUP_JOINER]:{prev:t.HOME,href:t.GROUP_JOINER},[t.GROUP_LOBBY]:{prev:t.GROUP_JOINER,href:t.GROUP_JOINER},[t.SETUP_ONLINE]:{prev:t.GROUP_LOBBY,href:t.GROUP_JOINER},[t.PLAY_ONLINE]:{prev:t.GROUP_LOBBY,href:t.GROUP_JOINER}}),(i=a=e.NavDir||(e.NavDir={})).FORWARD="forward",i.BACKWARD="backward",e.GET_NAV_DIR=function(t){const{curr:s,dest:a}=t;if(void 0===s)return e.NavDir.FORWARD;let r=s;for(;r!==e.NavTree[r].prev;)if(r=e.NavTree[r].prev,r===a)return e.NavDir.BACKWARD;return e.NavDir.FORWARD}}(m||(m={})),Object.freeze(m),Object.freeze(m.prototype);const E={this:"_2fw8LavR89kQmI-ujd84Oc",nav:"_3bXQ_T8CN61h-XuM1Q5CKO","nav--play-offline":"_27pYKLXKIhEkDPRBq7FQkG","nav--play-online":"_1cZmpRlPlHZasyAk0suiYy","nav--how-to-play":"_29Ok3ZNcVG4aBK7f28U0Vl","nav--how-to-host":"_1Me42uM4lSoh2869wVFjJD","nav--colour-scheme":"_31wBmMbr_vhgM4lM1jary6","nav--goto-repo":"_2mwhS0oLTAcnpq5YWXg7cq","nav--report-issue":"QdLSQUx8gcAov0d1PYNgJ"};class O extends m{_lazyLoad(){Object.freeze(this),this.baseElem.classList.add(a.General.Class.CENTER_CONTENTS,E.this);const e=r.R.html("div",[a.General.Class.TEXT_SELECT_DISABLED,a.General.Class.INPUT_GROUP,E.nav]);e.setAttribute("role","navigation"),e.addEventListener("pointerleave",(()=>{var t;(null==(t=document.activeElement)?void 0:t.parentElement)===e&&document.activeElement.blur()}));const t=(t,s)=>{t.classList.add(a.General.Class.CENTER_CONTENTS,a.General.Class.INPUT_GROUP_ITEM,s.cssClass),t.textContent=s.text,t.addEventListener("pointerenter",(()=>{window.requestAnimationFrame((e=>{t.focus()}))})),e.appendChild(t)};[{text:"Offline Single-player",cssClass:E["nav--play-offline"],screenId:m.Id.SETUP_OFFLINE},{text:"Online Multi-player",cssClass:E["nav--play-online"],screenId:m.Id.GROUP_JOINER},{text:"How To Play",cssClass:E["nav--how-to-play"],screenId:m.Id.HOW_TO_PLAY},{text:"How To Host",cssClass:E["nav--how-to-host"],screenId:m.Id.HOW_TO_HOST},{text:"Colour Schemes",cssClass:E["nav--colour-scheme"],screenId:m.Id.COLOUR_CTRL}].map((e=>Object.freeze(e))).forEach((e=>{const s=r.R.html("button");s.onclick=e.screenId instanceof Function?e.screenId:()=>{this.requestGoToScreen(e.screenId,{})},t(s,e)})),[{text:"Visit\nRepo",cssClass:E["nav--goto-repo"],href:new window.URL("https://github.com/david-fong/capswalk")},{text:"Report\nIssue",cssClass:E["nav--report-issue"],href:new window.URL("https://github.com/david-fong/capswalk/issues")}].map((e=>Object.freeze(e))).forEach((e=>{const s=r.R.html("a",[],{href:e.href.toString(),target:"_blank"});t(s,e)})),this.baseElem.appendChild(e)}}Object.freeze(O),Object.freeze(O.prototype);class v extends m{_lazyLoad(){Object.freeze(this)}}Object.freeze(v),Object.freeze(v.prototype);class f extends m{_lazyLoad(){Object.freeze(this)}}(f||(f={})).INSTRUCTIONS_STEPS=Object.freeze(["$ npm install 'https://github.com/david-fong/capswalk#gh-pages'","$ npm run start","send the url to your friends"]),Object.freeze(f),Object.freeze(f.prototype);const b=JSON.parse('[{"id":"default","displayName":"Default","author":"N.W."},{"id":"smooth-stone","displayName":"Smooth Stone","author":"Dav"},{"id":"murky-dive","displayName":"Murky Dive","author":"Stressed Dav"}]');var _=s.t(b,2);var g,N,S,T,y,R,I=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},L=(e,t,s)=>(I(e,t,"read from private field"),s?s.call(e):t.get(e)),w=(e,t,s,a)=>(I(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);class C{constructor(){g.set(this,void 0),N.set(this,void 0),S.set(this,void 0);const e=r.R.html("div",["_3tt0mEYF2K12deMBmuiflg"],{tabIndex:0});e.setAttribute("role","listbox"),e.addEventListener("keydown",this._onKeyDown.bind(this)),e.addEventListener("pointerenter",(t=>{window.requestAnimationFrame((t=>{e.focus()}))})),this.baseElem=e,this.options=[]}addOption(e){this.options.push(e),this.baseElem.appendChild(e.baseElem),e.baseElem.addEventListener("pointerenter",this.hoverOpt.bind(this,e)),e.baseElem.addEventListener("click",this.selectOpt.bind(this,e,!0)),e._registerParent(this._onOptDisabledChange.bind(this))}hoverOpt(e){var t;this.hoveredOpt!==e&&(null==(t=this.hoveredOpt)||t.baseElem.setAttribute("aria-active-descendant","false"),w(this,N,e),this.hoveredOpt.baseElem.setAttribute("aria-active-descendant","true"))}selectOpt(e,t=!0){var s;if(!e)throw new Error("opt must be defined");this.hoverOpt(e),this.confirmedOpt!==e&&(null==(s=this.confirmedOpt)||s.baseElem.setAttribute("aria-selected","false"),w(this,g,e),this.confirmedOpt.baseElem.setAttribute("aria-selected","true"),t&&this._onSelectOpt(e))}get confirmedOpt(){return L(this,g)}get hoveredOpt(){return L(this,N)}_onOptDisabledChange(e){this.confirmedOpt===e&&(this._isValid=!e.disabled)}set _isValid(e){this._isValid!==e&&(this.baseElem.setAttribute("aria-invalid",e?"false":"true"),w(this,S,e))}get _isValid(){return L(this,S)}_onKeyDown(e){if(" "===e.key||"Enter"===e.key)return this.selectOpt(this.hoveredOpt),e.preventDefault(),!1;{const t=this.options.indexOf(this.hoveredOpt);if("ArrowDown"===e.key||"Down"===e.key)for(let s=t+1;s=0;s--){const t=this.options[s];if(!t.disabled)return this.hoverOpt(t),e.preventDefault(),!1}}return!0}}g=new WeakMap,N=new WeakMap,S=new WeakMap,T=C||(C={}),y=new WeakMap,R=new WeakMap,T._Option=class{constructor(){y.set(this,void 0),R.set(this,void 0),(this.baseElem=r.R.html("div",["aq-ZO_N3w-UH9VTYF60rL"])).setAttribute("role","option"),w(this,y,!1)}_registerParent(e){w(this,R,e)}get disabled(){return L(this,y)}set disabled(e){this.disabled!==e&&(this.baseElem.setAttribute("aria-disabled",e?"true":"false"),w(this,y,e),L(this,R).call(this,this))}},Object.freeze(T),Object.freeze(T.prototype),Object.freeze(C),Object.freeze(C.prototype);var P,A,G=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},U=(e,t,s)=>(G(e,t,"read from private field"),s?s.call(e):t.get(e)),M=(e,t,s,a)=>(G(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);class j extends m{_lazyLoad(){s(649)("./undefined.css"),this.baseElem.classList.add("_2usroyHG0lbElLvXa_iy5"),this.baseElem.appendChild(this.nav.prev);const e=this.sel=new j.PickOne(this.top.storage.Local,this.top.transition);r.R.propNoWrite(this,"sel"),this.baseElem.appendChild(e.baseElem);const t=this.top.storage.Local.colourSchemeId;t&&this.sel.selectOpt(this.sel.getOptById(t),!1)}}!function(e){var t,s,i;const n=class extends C{constructor(e,a){var r;super(),t.set(this,void 0),s.set(this,void 0),i.set(this,void 0),M(this,t,!0),M(this,s,e),M(this,i,a),P.Schemes.forEach((e=>{this.addOption(new n.Option(e))})),this.selectOpt(this.getOptById(null!=(r=U(this,s).colourSchemeId)?r:"default"),!1)}_onHoverOpt(e){}_onSelectOpt(e){U(this,s).colourSchemeId=e.desc.id,U(this,s).colourSchemeStyleLiteral=e.cssLiteral;const r=U(this,t);M(this,t,!1),U(this,i).do({intermediateTransitionTrigger:()=>{document.documentElement.dataset[a.General.Dataset.COLOUR_SCHEME]=e.desc.id;const t=document.documentElement.style;if(r)for(const e of P.Swatch){const s="--colour-"+e;t.setProperty(s,"")}}})}getOptById(e){return this.options.find((t=>t.desc.id===e))}};let o=n;t=new WeakMap,s=new WeakMap,i=new WeakMap,e.PickOne=o,function(e){class t extends C._Option{constructor(e){super(),this.desc=e;const s=this.baseElem;s.classList.add("_2GxiPlklote2AuXecWhETZ"),s.dataset[a.General.Dataset.COLOUR_SCHEME]=e.id;const i=r.R.html("span",["_2nPC6c6ioUh-4gkJ5-JWNj"]);i.appendChild(r.R.html("div",["_3GbE2mb1TyXrO0uwR4Wbal"],{textContent:e.displayName})),i.appendChild(r.R.html("div",["_3LTv36NFPFb2DvxJ2eWKcb"],{textContent:"by "+e.author})),s.appendChild(i);for(let e=0;e{e.appendChild(r.R.html("option",[],{value:t.val.toString(),label:t.label}))})),this.baseElem.appendChild(e)}e.setAttribute("list",a.Screen.Impl.Setup.Id.LANG_WEIGHT_EXAGGERATION_LIST),this.baseElem.appendChild(e)}getRecommendedFocusElem(){return this.nav.next}_loadLastUsedPreset(){this.top.storage.Local.gamePresetId,this.top.storage.IDB.UserGamePresetStore}parseArgsFromGui(){const e=Object.assign({},z.DEFAULT_PRESET());return e.langId=this.langSel.confirmedOpt.desc.id,e.langWeightExaggeration=parseFloat(this.langWeightExaggeration.value),e}}!function(e){e.DEFAULT_PRESET=()=>({coordSys:"W_EUCLID2",gridDimensions:{height:10,width:10},averageHealthPerTile:1/45,langWeightExaggeration:1,langId:"engl-low",players:[{familyId:"CHASER",teamId:1,username:"chaser1",avatar:n.J5.Avatar.GET_RANDOM(),familyArgs:{}},{familyId:"CHASER",teamId:1,username:"chaser2",avatar:n.J5.Avatar.GET_RANDOM(),familyArgs:{fearDistance:6,bloodThirstDistance:5,healthReserve:5,keyPressesPerSecond:1.8}}]});class t extends C{constructor(){super(),this.baseElem.classList.add("_2PZpDhMzEe7lio-sMdv4SB"),Object.values(n.Uo.FrontendDescs).forEach((e=>{this.addOption(new t.Option(e))})),this.selectOpt(this.options[0])}_onHoverOpt(e){}_onSelectOpt(e){}}e.LangPickOne=t,function(e){class t extends C._Option{constructor(e){super(),this.desc=e,this.baseElem.textContent=e.displayName}}e.Option=t,Object.freeze(t),Object.freeze(t.prototype)}(t=e.LangPickOne||(e.LangPickOne={})),Object.freeze(t),Object.freeze(t.prototype)}(z||(z={})),Object.freeze(z),Object.freeze(z.prototype);class D extends z{_lazyLoad(){super._lazyLoad(),Object.freeze(this),this.nav.next.onclick=e=>{const t=this.parseArgsFromGui();this.requestGoToScreen(m.Id.PLAY_OFFLINE,[t])}}parseArgsFromGui(){const e=super.parseArgsFromGui();return e.players.splice(e.players.length,0,{familyId:"HUMAN",teamId:0,socket:void 0,username:"hello1",avatar:k.J.Avatar.LOREM_IPSUM,familyArgs:{}},{familyId:"HUMAN",teamId:1,socket:void 0,username:"hello2",avatar:k.J.Avatar.LOREM_IPSUM,familyArgs:{}}),e}}Object.freeze(D),Object.freeze(D.prototype);var x=s(892);var H,B,W,F,J=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},q=(e,t,s)=>(J(e,t,"read from private field"),s?s.call(e):t.get(e)),Y=(e,t,s,a)=>(J(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);const V=class extends m{constructor(){super(...arguments),this.playersBar=r.R.html("div",["BDHhbE0AQjge5tlj2Z3_O"]),H.set(this,void 0),B.set(this,void 0),W.set(this,void 0),F.set(this,void 0)}_lazyLoad(){this.baseElem.classList.add(a.General.Class.CENTER_CONTENTS,"_1euFnazUyfYf-c6qSiUhez");const e=V.createGridWrapper();this.grid=Object.freeze({base:e.top,implHost:e.implHost,pauseOl:e.pauseOl}),r.R.propNoWrite(this,"grid","playersBar"),r.R.Web.prependComment(this.grid.implHost,"grid impl host"),this.grid.implHost.appendChild(document.createComment("grid impl")),this.baseElem.appendChild(e.top),e.pauseOl.addEventListener("click",(e=>{const t=this.currentGame;void 0!==t&&t.status===x.l.Status.PAUSED&&(this.grid.base.focus(),this._reqStatusPlaying())})),this._initializeControlsBar(),this._initializePlayersBar(),Y(this,B,(()=>{if(this.wantsAutoPlayPause)if(document.hidden){if(void 0===q(this,F)){const e=this.currentGame;(void 0===e||void 0!==e&&e.status!==x.l.Status.OVER)&&this._reqStatusPaused()}}else"page-hide"===q(this,F)&&this._reqStatusPlaying()})),Y(this,W,this._gridKeyDownCallback.bind(this))}async _abstractOnBeforeEnter(e,t){document.addEventListener("visibilitychange",q(this,B)),this.btn.pause.disabled=!0,this._statusBecomePaused();const s=Y(this,H,await this._createNewGame(t));await s.reset(),this.grid.implHost.appendChild(s.grid.baseElem),this.btn.pause.onclick=this._reqStatusPlaying.bind(this),this.btn.pause.disabled=!1,this.wantsAutoPlayPause&&setTimeout((()=>{document.hidden||this._reqStatusPlaying()}),500),this.grid.base.addEventListener("keydown",q(this,W),{capture:!0})}_abstractOnBeforeLeave(e){if(this.askConfirmBeforeLeave&&!this.top.confirm("Are you sure you would like to leave?"))return!1;document.removeEventListener("visibilitychange",q(this,B)),this.currentGame.statusBecomeOver();for(const e of[this.currentGame.grid.baseElem])e.textContent="",e.remove();return this.grid.base.removeEventListener("keydown",q(this,W)),Y(this,H,void 0),!0}get currentGame(){return q(this,H)}get probeCurrentGame(){return q(this,H)}_gridKeyDownCallback(e){if(e.stopPropagation(),!e.isTrusted)return!0;const t=this.currentGame;if(e.ctrlKey&&" "===e.key&&!e.repeat){const e=t.operators;t.setCurrentOperator((1+e.indexOf(t.currentOperator))%e.length)}else t.currentOperator.processKeyboardInput(e);return" "!==e.key||(e.preventDefault(),!1)}_reqStatusPlaying(){this._statusBecomePlaying()}_reqStatusPaused(){this._statusBecomePaused()}_statusBecomePlaying(){this.currentGame.statusBecomePlaying(),this.btn.pause.textContent="Pause",this.grid.pauseOl.style.visibility="hidden",Y(this,F,void 0),this.btn.pause.onclick=this._reqStatusPaused.bind(this),this.btn.reset.disabled=!0,this.grid.base.focus()}_statusBecomePaused(){var e;null==(e=this.currentGame)||e.statusBecomePaused(),this.btn.pause.textContent="Unpause",this.grid.pauseOl.style.visibility="visible",Y(this,F,document.hidden?"page-hide":"other"),this.btn.pause.onclick=this._reqStatusPlaying.bind(this),this.btn.reset.disabled=!1}_onGameBecomeOver(){this.btn.pause.disabled=!0,this.btn.reset.disabled=!1}_resetGame(){this.currentGame.reset(),this.btn.pause.disabled=!1,this.wantsAutoPlayPause&&this._reqStatusPlaying()}_initializeControlsBar(){const e=r.R.html("div",[a.General.Class.CENTER_CONTENTS,a.General.Class.INPUT_GROUP,"fLS47QhRkscn0NK-vdINf"]);function t(t,s){return(s=null!=s?s:r.R.html("button")).classList.add(a.General.Class.INPUT_GROUP_ITEM),s.textContent=t,s.addEventListener("pointerenter",(e=>{s.focus()})),e.appendChild(s),s}e.setAttribute("role","menu"),e.addEventListener("pointerleave",(e=>{this.grid.base.focus()})),t("",this.nav.prev),this.btn=Object.freeze({pause:t(""),reset:t("Reset")}),r.R.propNoWrite(this,"btn"),this.btn.reset.onclick=this._resetGame.bind(this),this.baseElem.appendChild(e)}_initializePlayersBar(){r.R.propNoWrite(this),this.baseElem.appendChild(this.playersBar)}};let K=V;H=new WeakMap,B=new WeakMap,W=new WeakMap,F=new WeakMap,(K||(K={})).createGridWrapper=function(){const e=a.General.Class,t=r.R.html("div",["_2jXbc7jisQYh8dGHBjQfoB"]);t.setAttribute("role","presentation");const s=r.R.html("div",[e.TEXT_SELECT_DISABLED,"_3RnyB-FPnRJq2VQ-jJ1Fdy"],{tabIndex:0});s.setAttribute("role","textbox"),s.setAttribute("aria-label","Game Grid");const i=r.R.html("div",["_3To0VmRGhvAChHm1UecO55"]);i.setAttribute("role","presentation");const n=r.R.html("div",[e.FILL_PARENT,e.CENTER_CONTENTS,"_3RB2_LMTHSqVD3X5arzyV"],{});return n.appendChild(r.R.html("div",[],{textContent:"(Click to Unpause)"})),i.appendChild(n),s.appendChild(i),t.appendChild(s),Object.freeze({top:t,grid:s,intersectionRoot:i,implHost:i,pauseOl:n})},r.R.protoNoEnum(K,"probeCurrentGame","_statusBecomePlaying","_statusBecomePaused"),r.R.instNoEnum(K,"createGridWrapper"),Object.freeze(K),Object.freeze(K.prototype);class X extends K{constructor(){super(...arguments),this.wantsAutoPlayPause=!0,this.askConfirmBeforeLeave=!0}_lazyLoad(){super._lazyLoad(),Object.freeze(this),this.nav.prev.innerHTML="Return To Setup"}async _createNewGame(e){return new((await Promise.all([s.e(5),s.e(755)]).then(s.bind(s,303))).OfflineGame)(this._onGameBecomeOver.bind(this),e[0])}}Object.freeze(X),Object.freeze(X.prototype);var Z=s(495);var Q,$=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)};class ee extends m{constructor(){super(...arguments),Q.set(this,void 0),this.groupNameDataList=r.R.html("datalist",[],{id:a.ID.CURRENT_HOST_GROUPS})}get state(){return $(this,e=Q,"read from private field"),e.get(this);var e}_lazyLoad(){this.baseElem.classList.add(a.General.Class.CENTER_CONTENTS,"_1mSAZ0WI6Dl-lgWbZngYuh");const e=this._initFormContents();this.baseElem.appendChild(this.groupNameDataList),this.nav.prev.classList.add(a.General.Class.INPUT_GROUP_ITEM),this.nav.next.classList.add(a.General.Class.INPUT_GROUP_ITEM),e.appendChild(this.nav.prev),e.appendChild(this.nav.next),this.nav.next.onclick=e=>{this.requestGoToScreen(m.Id.GROUP_LOBBY,{})},this._setFormState(te.CHOOSING_SERVER),this.baseElem.appendChild(e)}_setFormState(e){if(this.state!==e){if(this.in.passphrase.disabled=!0,e===te.IN_GROUP){if(this.state!==te.CHOOSING_GROUP)throw new Error("never");this.nav.next.disabled=!1,this.nav.next.focus()}else this.nav.next.disabled=!0,this.in.passphrase.value="",e===te.CHOOSING_SERVER?(this.in.groupName.disabled=!0,this.in.groupName.value="",this.groupNameDataList.textContent="",this.in.serverUrl.focus()):e===te.CHOOSING_GROUP&&(this.in.groupName.disabled=!1,this.in.passphrase.disabled=!1,this.in.groupName.focus());var t,s;s=e,$(this,t=Q,"write to private field"),t.set(this,s)}}_initFormContents(){const e=r.R.html("div",[a.General.Class.INPUT_GROUP,"_3PpQNPHVO6NTNpgwU79ERL"],{});function t(t,s){const i=r.R.html("input",[a.General.Class.INPUT_GROUP_ITEM,s],{type:"text",autocomplete:"off",spellcheck:!1}),n=r.R.html("label",[],{textContent:t});return n.appendChild(i),e.appendChild(n),i}this.in=Object.freeze({serverUrl:Object.assign(t("Server URL","NgHzGx-miZPI-3fgl2oSY"),{type:"url",maxLength:128,autocomplete:"on",required:!0}),groupName:Object.assign(t("Group Name","_1JfrTGHJVK3NgMBs8AnnXZ"),{pattern:Z.ZA.Name.REGEXP.source,minLength:1,maxLength:Z.ZA.Name.MaxLength,autocomplete:"on",required:!0}),passphrase:Object.assign(t("Group Passphrase","_2tjc31lyon2RB1Ww3pt47Y"),{pattern:Z.ZA.Passphrase.REGEXP.source,maxLength:Z.ZA.Passphrase.MaxLength})}),this.in.groupName.setAttribute("list",a.ID.CURRENT_HOST_GROUPS);{this.in.serverUrl.setAttribute("list",a.ID.PUBLIC_GAME_SERVER_URLS);const e=He.SiteServerTypeSuggestedGameServer[this.top.siteServerType];if(e){const t=r.R.html("option",[],{value:e.value,textContent:e.description});document.getElementById(a.ID.PUBLIC_GAME_SERVER_URLS).insertAdjacentElement("afterbegin",t),this.in.serverUrl.value=t.value}}return r.R.propNoWrite(this,"in","groupNameDataList"),e}}Q=new WeakMap,function(e){let t;var s;(s=t=e.State||(e.State={})).CHOOSING_SERVER="choosing-server",s.CHOOSING_GROUP="choosing-group",s.IN_GROUP="in-group"}(ee||(ee={}));const te=ee.State;Object.freeze(ee),Object.freeze(ee.prototype);var se,ae,re,ie=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},ne=(e,t,s)=>(ie(e,t,"read from private field"),s?s.call(e):t.get(e)),oe=(e,t,s,a)=>(ie(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);class le extends ee{constructor(){super(...arguments),se.set(this,!1),ae.set(this,!1),re.set(this,void 0)}get isHost(){return ne(this,ae)}get ws(){return this.top.webSocket}_lazyLoad(){super._lazyLoad(),oe(this,re,(e=>{const[t,...s]=JSON.parse(e.data);switch(t){case Z.oU.Create.NAME:this._onCreateResponse(s[0]);break;case Z.oU.Exist.NAME:this._onNotifyGroupExist(s[0]);break;case Z.oU.TryJoin.NAME:this._setFormState(he.IN_GROUP);break;case Z.m4.CREATE_GAME:this.requestGoToScreen(m.Id.PLAY_ONLINE,[s[0],s[1]])}}));const e=this._initServerUrlCbs();this._initGroupNameCbs(e),this._initPassphraseCbs(),Object.seal(this)}getRecommendedFocusElem(){return void 0===this.ws?this.in.serverUrl:this.in.groupName}_initServerUrlCbs(){const e=this.top,t=this.in.serverUrl;t.addEventListener("input",(e=>{this._setFormState(he.CHOOSING_SERVER)}));const s=()=>{t.value&&t.validity.valid&&(void 0===this.ws||new URL(this.ws.url).hostname!==new URL(t.value).hostname?(this.top.setWebSocket(new WebSocket(t.value)),this.ws.addEventListener("open",(e=>{this._setFormState(he.CHOOSING_GROUP)})),this.ws.addEventListener("message",ne(this,re)),this.ws.addEventListener("close",(t=>{this.top.setWebSocket(void 0),this._setFormState(he.CHOOSING_SERVER),e.toast("You disconnected you from the server."),this.top.currentScreen!==this&&this.requestGoToScreen(m.Id.GROUP_JOINER,{})}),{once:!0})):ne(this,se)&&this._setFormState(he.CHOOSING_GROUP))};return t.addEventListener("keydown",(e=>{e.isTrusted&&"Enter"===e.key&&s()})),t.addEventListener("paste",(e=>{e.isTrusted&&window.setTimeout((()=>s()),0)})),t.addEventListener("change",(e=>{e.isTrusted&&s()})),s}_onCreateResponse(e){return e?(this.top.toast(`server accepted request to create new group "${this.in.groupName.value}".`),this.top.toast("connecting to new group..."),void this._attemptToJoinExistingGroup()):(oe(this,se,!0),void this.top.toast(`The server rejected your request to create a new group "${this.in.groupName.value}".`))}_onNotifyGroupExist(e){const t=e=>{const t=r.R.html("option",[],{value:e});for(const e of s)if(t.value.localeCompare(e.value)<0){this.groupNameDataList.insertBefore(t,e);break}return t.parentElement||this.groupNameDataList.appendChild(t),t},s=Array.from(this.groupNameDataList.children);Object.entries(e).freeze().forEach((([e,a])=>{var r;const i=null!=(r=s.find((t=>t.value===e)))?r:t(e);switch(a){case Z.oU.Exist.Status.IN_LOBBY:i.textContent="In Lobby";break;case Z.oU.Exist.Status.IN_GAME:i.textContent="In Game";break;case Z.oU.Exist.Status.DELETE:i.remove()}}))}_initGroupNameCbs(e){const t=this.in.groupName;t.addEventListener("input",(t=>{t.isTrusted&&(this.state===he.IN_GROUP&&e(),this.in.passphrase.value="",oe(this,ae,!1))}));const s=()=>{t.value&&t.validity.valid&&(this.state===he.IN_GROUP?this.nav.next.focus():this.in.passphrase.focus())};t.addEventListener("keydown",(e=>{e.isTrusted&&"Enter"===e.key&&s()})),t.addEventListener("change",(e=>{e.isTrusted&&s()}))}_initPassphraseCbs(){const e=()=>{if(!this.in.passphrase.validity.valid)return;ne(this,se)&&this._setFormState(he.IN_GROUP);const e=this.in.groupName.value;Array.from(this.groupNameDataList.children).some((t=>t.value===e))?(oe(this,ae,!1),this._attemptToJoinExistingGroup()):(oe(this,ae,!0),this.ws.send(JSON.stringify([Z.oU.Create.NAME,Object.freeze({groupName:this.in.groupName.value,passphrase:this.in.passphrase.value})])))};this.in.passphrase.addEventListener("keydown",(t=>{t.isTrusted&&"Enter"===t.key&&e()}))}_attemptToJoinExistingGroup(){this.ws.send(JSON.stringify([Z.oU.TryJoin.NAME,{groupName:this.in.groupName.value,passphrase:this.in.passphrase.value,userInfo:i.getLastUserInfo()}]))}}se=new WeakMap,ae=new WeakMap,re=new WeakMap;const he=ee.State;Object.freeze(le),Object.freeze(le.prototype);class ce extends z{_lazyLoad(){super._lazyLoad(),Object.freeze(this),this.nav.next.textContent="Start Game",this.nav.next.onclick=e=>{const t=this.parseArgsFromGui();this.top.clientIsGroupHost&&this.top.webSocket.send(JSON.stringify([Z.m4.CREATE_GAME,t]))}}}Object.freeze(ce),Object.freeze(ce.prototype);var de,pe=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},ue=(e,t,s)=>(pe(e,t,"read from private field"),s?s.call(e):t.get(e)),me=(e,t,s,a)=>(pe(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);const Ee=class extends m{constructor(){super(...arguments),this.players=new Map,this.teamsElem=r.R.html("div",["_2eDnztFQPAJnFHoqcX6Rt8"]),this.teamElems=new Map,de.set(this,void 0)}get ws(){return this.top.webSocket}_lazyLoad(){this.baseElem.classList.add("_1RjcsAfyK_99UIm77cgsi1"),this._createInputs(),me(this,de,(e=>{const[t,...s]=JSON.parse(e.data);switch(t){case Z.m4.UserInfo.NAME:this._onUserInfoChange(s[0])}})),Object.freeze(this),this.nav.prev.textContent="Return To Joiner",this.baseElem.appendChild(this.teamsElem),r.R.propNoWrite(this,"players","teamsElem","teamElems","in");{const e=this.nav.next;e.textContent="Setup Game",e.onclick=()=>{this.requestGoToScreen(m.Id.SETUP_ONLINE,{})},this.baseElem.appendChild(e)}}_createInputs(){var e;const t=r.R.html("div",[a.General.Class.INPUT_GROUP,"_2hDNOGQoaqlmP3PIE18QwQ"]),s=r.R.html("input",[a.General.Class.INPUT_GROUP_ITEM],{type:"text",minLength:1,maxLength:n.J5.Username.MAX_LENGTH,pattern:n.J5.Username.REGEXP.source,spellcheck:!1,value:null!=(e=this.top.storage.Local.username)?e:"",onchange:this._submitInputs.bind(this)});t.appendChild(s);const i=r.R.html("input",[a.General.Class.INPUT_GROUP_ITEM],{type:"number",inputMode:"numeric",min:"0",max:"0",step:"1",value:"0",onchange:this._submitInputs.bind(this)});i.classList.add(),t.appendChild(i);const o=r.R.html("select");this.in=Object.freeze({username:s,teamId:i,avatar:o}),this.baseElem.appendChild(t)}_submitInputs(){if(!this.in.username.validity.valid||!this.in.teamId.validity.valid)return;const e=this.top.storage.Local;e.username=this.in.username.value,e.avatar=this.in.avatar.value;const t={username:this.in.username.value,teamId:parseInt(this.in.teamId.value),avatar:n.J5.Avatar.LOREM_IPSUM};this.ws.send(JSON.stringify([Z.m4.UserInfo.NAME,t]))}async _abstractOnBeforeEnter(e,t){"forward"===e&&(this.nav.next.disabled=!this.top.clientIsGroupHost,this.players.clear(),this.teamElems.clear(),this.teamsElem.textContent="",this._submitInputs(),this.ws.addEventListener("message",ue(this,de)))}getRecommendedFocusElem(){let e=this.in.username.validity.valid?this.in.teamId.validity.valid?void 0:this.in.teamId:this.in.username;return void 0===e&&(e=this.top.clientIsGroupHost?this.nav.next:this.in.teamId),e}_abstractOnBeforeLeave(e){return e===m.NavDir.BACKWARD&&this.ws.removeEventListener("message",ue(this,de)),!0}_onUserInfoChange(e){Object.freeze(Object.entries(e)).forEach((([e,t])=>{const s=this.players.get(e);if(!s||1!==this.teamElems.get(s.teamId).childElementCount||null!==t&&t.teamId===s.teamId||(this.teamElems.get(s.teamId).remove(),this.teamElems.delete(s.teamId)),t&&!this.teamElems.has(t.teamId)){const e=r.R.html("div",["_1OhAwynz14tlCVrxxglqWC"]);this.teamElems.set(t.teamId,e),e.onclick=e=>{this.in.teamId.value=t.teamId.toString()},this.teamsElem.appendChild(e)}if(null===t)s.base.remove(),this.players.delete(e);else if(void 0===s){const s=new Ee.UserInfo(t);this.players.set(e,s),this.teamElems.get(t.teamId).appendChild(s.base)}else s.update(t)})),this.in.teamId.max=Object.keys(this.players).length.toString()}};let Oe=Ee;var ve,fe,be,_e;de=new WeakMap,ve=Oe||(Oe={}),fe=new WeakMap,be=new WeakMap,_e=new WeakMap,ve.UserInfo=class{constructor(e){fe.set(this,void 0),be.set(this,void 0),_e.set(this,void 0),this.base=r.R.html("div",["_2jAbJY6xTuqckSRVnOPwG4"]);const t=()=>{const e=r.R.html("div");return this.base.appendChild(e),e};this.el=Object.freeze({username:t(),teamId:t(),avatar:t()}),this.el.username.classList.add("_3esbSTakuS113N38hp7-V4"),this.username=e.username,this.teamId=e.teamId,r.R.propNoWrite(this,"base","el")}update(e){this.username=e.username,this.teamId=e.teamId,this.avatar=e.avatar}get username(){return ue(this,fe)}set username(e){this.el.username.textContent=e,me(this,fe,e)}get teamId(){return ue(this,be)}set teamId(e){this.el.teamId.textContent=e.toString(),me(this,be,e)}get avatar(){return ue(this,_e)}set avatar(e){me(this,_e,e),this.el.avatar}},r.R.protoNoEnum(Oe,"_createInputs","_submitInputs"),Object.freeze(Oe),Object.freeze(Oe.prototype);var ge,Ne=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},Se=(e,t,s)=>(Ne(e,t,"read from private field"),s?s.call(e):t.get(e));class Te extends K{constructor(){super(...arguments),this.askConfirmBeforeLeave=!1,this.wantsAutoPlayPause=!1,ge.set(this,void 0)}get ws(){return this.top.webSocket}_lazyLoad(){var e,t;super._lazyLoad(),Object.freeze(this),this.nav.prev.innerHTML="Return To Lobby",t=e=>{const[t,...s]=JSON.parse(e.data);switch(t){case Z.JD.UNPAUSE:this._statusBecomePlaying();break;case Z.JD.PAUSE:this._statusBecomePaused();break;case Z.JD.RETURN_TO_LOBBY:void 0===s[0]&&this.nav.prev.click();break;default:this.currentGame.wsMessageCb(e)}},Ne(this,e=ge,"write to private field"),e.set(this,t),Object.seal(this)}_abstractOnBeforeLeave(e){const t=super._abstractOnBeforeLeave(e);return t&&void 0!==this.ws&&(this.ws.send(JSON.stringify([Z.JD.RETURN_TO_LOBBY])),this.ws.removeEventListener("message",Se(this,ge))),t}_reqStatusPlaying(){this.ws.send(JSON.stringify([Z.JD.UNPAUSE]))}_reqStatusPaused(){this.ws.send(JSON.stringify([Z.JD.PAUSE]))}async _createNewGame(e){const[t,a]=e,r=new((await Promise.all([s.e(5),s.e(775)]).then(s.bind(s,102))).OnlineGame)(this.top.webSocket,this._onGameBecomeOver.bind(this),t,a);return this.ws.addEventListener("message",Se(this,ge)),Promise.resolve(r)}}ge=new WeakMap,Object.freeze(Te),Object.freeze(Te.prototype);var ye,Re,Ie=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},Le=(e,t,s)=>(Ie(e,t,"read from private field"),s?s.call(e):t.get(e)),we=(e,t,s,a)=>(Ie(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);class Ce{constructor(e,t){ye.set(this,void 0),Re.set(this,void 0),we(this,Re,e.transition),t.setAttribute("role","presentation");const s=m.Id,a=Object.freeze({toplevel:e,parentElem:t,goToScreen:Object.freeze(this.goToScreen.bind(this))});this.dict=Object.freeze({[s.HOME]:new O(a,s.HOME),[s.HOW_TO_PLAY]:new v(a,s.HOW_TO_PLAY),[s.HOW_TO_HOST]:new f(a,s.HOW_TO_HOST),[s.COLOUR_CTRL]:new j(a,s.COLOUR_CTRL),[s.SETUP_OFFLINE]:new D(a,s.SETUP_OFFLINE),[s.PLAY_OFFLINE]:new X(a,s.PLAY_OFFLINE),[s.GROUP_JOINER]:new le(a,s.GROUP_JOINER),[s.SETUP_ONLINE]:new ce(a,s.SETUP_ONLINE),[s.GROUP_LOBBY]:new Oe(a,s.GROUP_LOBBY),[s.PLAY_ONLINE]:new Te(a,s.PLAY_ONLINE)}),r.R.propNoWrite(this,"dict"),Object.seal(this);const i=m.NavTree[window.location.hash.slice(1)];window.setTimeout((()=>{var e;this.goToScreen(null!=(e=null==i?void 0:i.href)?e:m.Id.HOME,{})})),window.addEventListener("popstate",(e=>{this.goToScreen(window.history.state.screenId,{})}))}async goToScreen(e,t){const s=this.currentScreen,a=this.dict[e];if(s===a)throw new Error("never");we(this,ye,a);const r=m.GET_NAV_DIR({curr:null==s?void 0:s.screenId,dest:e});return!(void 0!==s&&!s._leave(r)||(await Le(this,Re).do({whileBeforeUnblur:a._enter(r,t),beforeUnblur:()=>{var t;switch(e){case m.Id.GROUP_JOINER:this.dict[m.Id.GROUP_LOBBY].lazyLoad()}null==s||s._onAfterLeave(),a._onAfterEnter(),null==(t=a.getRecommendedFocusElem())||t.focus()}}),0))}get currentScreen(){return Le(this,ye)}}ye=new WeakMap,Re=new WeakMap,Object.freeze(Ce),Object.freeze(Ce.prototype);var Pe,Ae=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},Ge=(e,t,s)=>(Ae(e,t,"read from private field"),s?s.call(e):t.get(e));class Ue{constructor(){this.baseElem=document.getElementById(a.Screen.Id.SCREEN_TINT),Pe.set(this,Promise.resolve()),this.baseElem.tabIndex=-1,this.baseElem.addEventListener("keydown",(e=>{e.preventDefault()}),{capture:!0}),r.R.propNoWrite(this,"baseElem"),Object.seal(this)}do(e){var t,s,a;return t=this,s=Pe,a=Ge(this,Pe).then((()=>this._atomicDo(e))),Ae(t,s,"write to private field"),s.set(t,a),Ge(this,Pe)}async _atomicDo(e){const t=document.activeElement;this.baseElem.focus();const s=this.baseElem.style;await this._cssTransition((function(){s.pointerEvents="all",s.opacity="1.0"})),void 0!==e.intermediateTransitionTrigger&&await this._cssTransition((()=>{e.intermediateTransitionTrigger()})),await e.whileBeforeUnblur,t instanceof HTMLElement&&t.focus(),void 0!==e.beforeUnblur&&e.beforeUnblur(),await this._cssTransition((function(){s.pointerEvents="none",s.opacity="0.0"})),this.baseElem.blur()}_cssTransition(e){return new Promise((t=>{this.baseElem.addEventListener("transitionend",(()=>t()),{once:!0}),e()}))}}Pe=new WeakMap,r.R.protoNoEnum(Ue,"_atomicDo","_cssTransition"),Object.freeze(Ue),Object.freeze(Ue.prototype);var Me,je,ke=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},ze=(e,t,s)=>(ke(e,t,"read from private field"),s?s.call(e):t.get(e)),De=(e,t,s,a)=>(ke(e,t,"write to private field"),a?a.call(e,s):t.set(e,s),s);const xe=class{constructor(){Me.set(this,void 0),je.set(this,void 0),this.defaultDocTitle=document.title,this.siteServerType=window.location.hostname.match(/github\.io/)?xe.SiteServerType.GITHUB:window.location.protocol.startsWith("file")?xe.SiteServerType.FILESYSTEM:xe.SiteServerType.DEDICATED,r.R.propNoWrite(this,"defaultDocTitle","siteServerType"),this.storage=i,De(this,je,void 0),this.transition=new Ue,r.R.propNoWrite(this,"storage","transition");const e=document.getElementById(a.Screen.Id.ALL_SCREENS);if(!e)throw new Error("never");r.R.Web.prependComment(e,"ALL SCREENS CONTAINER"),De(this,Me,new Ce(this,e)),r.R.propNoWrite(this),Object.seal(this)}get webSocket(){return ze(this,je)}setWebSocket(e){void 0!==this.webSocket&&this.webSocket.close(),De(this,je,e)}get clientIsGroupHost(){return ze(this,Me).dict["group-joiner"].isHost}toast(e){console.info(e)}confirm(e){return window.confirm(e)}get game(){var e;return null!=(e=ze(this,Me).dict["play-offline"].probeCurrentGame)?e:ze(this,Me).dict["play-online"].probeCurrentGame}get currentScreen(){return ze(this,Me).currentScreen}};let He=xe;Me=new WeakMap,je=new WeakMap,function(e){let t;var s;(s=t=e.SiteServerType||(e.SiteServerType={})).GITHUB="github",s.FILESYSTEM="filesystem",s.DEDICATED="dedicated",e.SiteServerTypeSuggestedGameServer=r.R.deepFreeze({[t.GITHUB]:void 0,[t.FILESYSTEM]:{value:"ws://localhost",description:"dev shortcut :)"},[t.DEDICATED]:{value:(()=>{const e=new URL(window.location.origin);return e.protocol="ws",e.toString()})(),description:"this page's server"}})}(He||(He={})),Object.freeze(He),Object.freeze(He.prototype),["Object","String","Number","RegExp","Date","Array","Map","Set","WeakMap","WeakSet","URL","HTMLElement","HTMLDivElement","HTMLSpanElement","HTMLPreElement","HTMLButtonElement","HTMLInputElement","HTMLSelectElement","HTMLOptionElement","HTMLScriptElement","HTMLStyleElement","HTMLLinkElement","HTMLAnchorElement","HTMLDocument","HTMLIFrameElement","HTMLCanvasElement"].forEach((e=>{Object.defineProperty(globalThis,e,{enumerable:!0,writable:!1,configurable:!1}),Object.freeze(globalThis[e]),Object.freeze(globalThis[e].prototype)}));const Be=new He,We=void 0;function Fe(){return Be.currentScreen}function Je(){return Be.game}console.info("%c🩺 welcome! 🐍","font:700 2.3em /1.5 monospace; margin:0.4em; border:0.3em solid black;padding:0.4em; color:white; background-color:#3f5e77; border-radius:0.7em; ")},649:(e,t,s)=>{var a={"./murky-dive.css":115,"./smooth-stone.css":622};function r(e){return i(e).then(s)}function i(e){return s.e(122).then((()=>{if(!s.o(a,e)){var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}return a[e]}))}r.keys=()=>Object.keys(a),r.resolve=i,r.id=649,e.exports=r}},0,[[811,280]]]); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/client/index.js.br b/client/index.js.br index b9834fa123e8b34a97faccdb0f8fbc41178fa50b..a0bf2cb1a8b690819ba76b3947ad614dc628fd72 100644 GIT binary patch literal 13868 zcmV+{Hq*%)aKs}6!Nvi^2Y;!eL!hC(J8Br)%ePpq>*IL0S~R1!>Z@8Y6^GRj zZeTN-6Vi%=uwO6Hys-yY&%d;GYpj7v%LqwkQ>0OMa9+rL&?Wx)>gwy)d3%?W21zN~ z?oFRj1XH9`5mUX@&kSdop^W8xkF3 zx&R8PbYd9yfa<2~EJ9he0J{~N-5tELI}|Mz_}|yF0AKNeak8<;_A@h_YdOAY*+WEF4z(z z!7u-Cce{okjplANWfqc2I6awAE$GpqOd|(H3KKJ5F$?SO8YLNh(G%guSlICXHzYX< ze+TEhy0Sn9jV5e|;XWyDF3G;&Nv8;6y1c|Hi?t-XyN{0a=>0h>vYTHG{}dicxpf57 zVl5o#s*=RU7IV3Q5VB1;V!vfXEKnl9xaLI&Ymaf!Abe3o`oi~2n1YCW zwDY9nR#cCQYNhcmx|BmHTI1(ai%nFVtzo{#Ir10pQ{oG3;rjuMFaiI8X{hs+&h)FQ zG84f$k<09d-aabSS5CKO9cp=C>Rz(N@pHOfZQjn90>L(GvRHSC=@^P2@Tm*f^!B15 zQ=Zl^ZUAD$nl(){Obtn>|I$@t6Zz%I)Lu}E!Iv#S?##>63p3~mKxv|Iu^K!FB) z&k!vYGTPqs{^0oYyviTKGm9AuG;v;Q#g%@r@F8%MKnxoZ6K|?ow_k|1O_ipChp-em zV!eHQ6_dId`jij`R|yDA{Bv^m%iLH?;5CVzH_`$%%#VGThm4*qQcbx4-(A`rmOp|D zW}rGih=>vL7OxEofFtQ+<+XxHc+`pz*#R(TL=7V;z_H;=DTY8iY^f&8DdJjnWQK-E z+ywk;h3up)j;G&3C2FG}{pjhYCI}J&il%R6a&jh6eiov5uG1SJCjhTp?pU7>`yM0} zyObFvUZoGA9Igf&g2Gj?i%I&Q6KaP)T{+;n3ulT>Co!I`K7q{+&vf|6ObAQw) zO^?2141O$CcEK_s0<}0I+oKd3C`!4E9Y37HR8gGHB+hVPh1d&=ZJoEOB;&&u{X|r% z;od^mG_g7g-!B$-Ka(ofx9%oU^tX-@rif0Wm*gBgz|Yj}RK4uP#*sizFThPuzH3?U zClQSJMK9@jW0wLOnWh^KY2m9HhBZiQVEpHJ0Ynfk^q-^@4Nb8vjRM6(4hGXJyj8Wr z>BRb}<|W5(ejRewip@2@{VJpxc~9f7y^QCP#{pwHVAS~K6x0V|qHza*jX4^e@Ifgq ziaL1Jt!AU~N}8__01j4!8ulp?4seyK%1$uCMp?Fq=%qPlUoh6mnFIZP4Hj3x&PLW9EIgCxa`>?D7n!TJ)Y9EhFLCD z7E)U|n0S0?pemn6P(}_|63th22R%OxNM#sLWZ5p+<|Lpk!$GFw$2yg2es)%tLNLyP zVw|Z+8tt$Qr3!!;Vq)qUH1An2yX9)Su(IWbPy#gC!7>@-Pdrxlo7sd`r679&=4{dwrhb+8<6>kdZ0tlSz-ylZByk%1TKV)Lb`K94r=L zYvJUYOhvueF9;Qi$im|q2b`fk)C5sHF{!{mAW+*B+=UGfW{7e3cT zEJ3ExE_K}TW75Y(bz~@7A*h`rU7|_p)3xD^6PN~_(d~JWh3?qbWwc2r#VpFa)n78; zpx2|^{SP(7AH>jojw7}H_x*RVT;{^lQQCVf)Ka?9(yQd+hlNtyq289}ntMK)a?i43 zx5Qm`Tbt`I%(AnHQB4+E%;hMF>WgqPQ1d4WRhvX}W1gmnVkP8OSOMugiL`f7YlNa?qyxpr8tLnRSTsEz0vHoB z#hGi=82tENEIU=w=N*IVx)t2E#EJ^7;pxHggNq06YiJr?B(OwKK>~6gS&B{hbm!C4 z_wf;l#pEv@`}Pyu4X<@nZw6=-y`;yTH}d%hx{r0+5BnT+EivQsy{$5kLdcG#bMRY7 z{1Uw&nUIJ!9##0gAShHnS9na|y?-9TwsRoqYf^lANQSuFkvL*LP18Mfaj2rh^YDoj zaOXY!HSuTdxjLe;>lbv-e-V{X9N>*=B)i zQJ^{(L3xW`3nA^T)x5wqV-L_cPnQ6U{E|Ajz)GDPw2!`nB*8L!LQ?~)&~S(VRbDAb zZmg0Ht6Ck&`p1BMo@cno>!ubZuL7#g^m{`S50N6P6vGQ=QnHeZ4ClJ?N-*7EodsUX zSIda%nuF>kCaYr-9L0&EPkeZ(VuSjHL`rj9R4gTz%e!t68gh^n_`f+ZegO|G^)6-{ zeg;)IJACjcvTPo6`Yjv>T;d;#`UDRreS!zNevQ5K;IP%R9w;mScKSA13zPy?-Q>)L zh3r%<1cO99NkN$vTW z);!j17{BRo-nU^PJIv+`li*>vzmL6q0{;Nq&tp0$%N=-HWmWK}HdDb#)Wit8j_Yq5 z`sbci4AiWbCD!ABv``vdD!&N|4VtgJl+G(_P@ky66sU<^HO0B^tM&7)%y%u9@YtcQ zz~D$B+h@X75%s2bQCO`hg%Wg!!0bra!_fUGPRlx_1wtow_T9Ex#MFiqiyf1S z)UCG$#W$dJ8>X3r7u3W&OOnP5srF0hY{l4GemOC9+#Nm zw~tV|P@dI!l;2$Z2mSZY)4&6AUGrT#r7-c3qsBV7`uT^Z&f!QB zQTAgZ;xU-lM#9H5lLz!ns>wTfPOerFQ=eM4ZH;Bf$iz$uvRmPnc@Yfv_fgrXW8K9O zwdM%IaFvD5nPF!zj3$=~18s0RF*~iFW01$Tg(QXA7rn%M9%ofufl3JPZlb24Z{o#t zk`?LDS=yS7I2AT{WV^2bkv17Dpg5xDzB?X9NhkfvE?EnN=?5N|*7 zZ{ZHOf5<{*E8C{(XNF})J^ESsLuQ^97bVfWPHA-F*$E`BtPad}*6I1-V=37$fJ0?i zXY5m);!S(nWp%uGJZC?``E)J05Fpq^AY4d^Z}_l*Zy_K$#TP|gF1(Oxgy0|WZuw51 z4yi6SC7 zQ2fqhbR;;}x=?%C^>R!$b<(0A@1jC?XT-?dsqeNGb+BD#!}G3@X~5tEV1)k`pX+C4 zOjL;;FK{is=U?eZ#&uIYipy_#xH@8z=1vYXo}c3hth`R}bWm)>p=){u%%5199&_H) zs^$I4mOXbARjdlzbaE*g3>ZpLbHX`JX_HF07no@lul$A@MX?RB%dhj%HcmeGI=+J(Vo>G`+Ar1kv__ zb6_L4&79f;=ZPg}=_SUgy_vdx2Yi0O3?iv}#DPVp@{Vle(BbLGfNeGmbdpzP_oQ_Q z^$H*c#W{M(f5jl87Ca5h$N7dq+|_X68NR5peClr{hSgTVdBHtq2G)85&Ljg zG@cgoze!oq8IwD8$B=qU(Z4tZa1^y*^EcKxJx%`qA zMYAa|g!)9J<*$)cKX5>6D0z*s+Wr!2z2|hCCBSZ716jLyU5(|;+|;q`lSmh6+`sM& z;^vE9h7v#(c{IJ5Z^e3j9OY{Wa!J1{OTlZpBXO1}DIl9tn0qXy_RC=skE|HW`FDfE z?NXj>r|0$&s?vUjP=N}37dg3qg-j3};I*P3l}6#8rl_uUH`}KT$6!zg1G3gl&tIxD z>Vc=`3&&6d)VfU1{uLDYP7Mt66%1pYdjE&CEhYQS}v|nJ^}? z92!hRJUN`+xOondR0)vPSw?dS;7L6+c?A?;c*VeHit&cHmFMH>wN=l8iC2x7Y~3i( zmIQQwfTGlpJsu4U@ufEiZ{OltDEtWz)o>CTKdZ@_4K`x!+`40JqSqQAEu$g@(zmb5 zuf-IYX20hqhRan1;-PhYg(gETBMQv@wE)4xW?byiW4K_+IlyLEDz?~cXV1zze7#^b zdvRHiX(pf;BJdfGZ=GeB)&vL4&N4;1+)xbSf6Gj>qsyH^WFlw?=6fEC2C;SgIKF8p zfZ~fjPJ*dI%!85^ZhIfgAM_?WuGti{%z-khnwI?h@LYhzB=VNi0a0mk(kYnQj9w*f!{3rX{*-CS8c+yMJ zo)1LY%1{S)=G2<2vOId&+E5yCW>bXTfMs;{IGBlLutigg%7Mev_5#rgK-7Cb6S2#c zyQQYKMgWF78;`{=z8_MA7`CmdP&RVUgtrRaFxv*u1{4J@R!v@0IWd`=q~L+uKI27* z0DUz!w(|ehh$()Yh(+60iYl%_SbeUVa-^d`tmU$8okv+5p_Oh{zR|jx%WaW6P38=- zXWUCdv@Tr(UdHpv;!+(?@el@T-DnD;4fFPeJD&lyyWh-RT1kV>c|Vd~eQDX)9uhP) zi9I8FR(~65K72?#vK&cEzc`Jo*OQZ+O!^bjWS4;Rc?+X@xJzPI*QjL8BdmybT*!bw zdF!!w=N2s1!NP@^4GYyZ9MHouZ$$`NaMGwND2w6bJ8nPX!%0EV{fdFJwGHBYHLJ~ zno*nhZBVz?#2bl+XIolC8ag~?`e=H)^tLtNwd-l$f)T~OeBDpTq3JG zl5PBd>Gs`9Vrc86Xs4EMQjYO}YO;d6#K`c7;p#+C-)=Pii~OBRW|Ei;%ZR?qb#c zs`r+s{uUK=xk)ehOwX%ikqkZs-CA3Rvh>&O&4-X^`px|@Kb1dc!M0x!?Q#83YHXZs z@}@v0EH^jBN-3LG5>LmaM(vO5ws#zL-x!9{B(=bu@5;Tl)9K#$mpDp1j_){%@>YA= zbL})YSm^JYORur#=*hYjsPk9#wTULU-{o zi$-M%gan+dCD}t;?g{LAxid%qJ#~cp(Vk{z=W&{a>g`m+V z$W`GLE5F_&g%~Xiyk&>bVc!0T;PfRCoAB>$a!+whRN`1O{*MWdroA+j?-!NQ#H@)N2wQ4NPlm+v{ zh*+OtK}ht5Y}OuEK|DMcyTak<;=?U~Sq<((dccYQuJh{G*$&6Py%QQ6%*1XTy1r$f zw!_R>J67Yyu1!FRi@LE*DBWtnVel(s_6(0Mm$xMQQEqGAOs}8uboFgsS3hVZKMNRp zM%Bk7dUNdOStrw;C8fU}BF?~rHQcy@AsPD6$utZnU$=M2%ZP3L zcHyabaou$EQTThFe~Q!gZIy0x0>hkh*jL!)NylJQQ1gWyENA$8V(YqwlBtJJ^ta`j z92=sf6-s$<%ZGEEA793JGMZ%g1l3ru(KD;vuUzlq`I(HOG>|x={t@8GssZZjT&^KQ zQE1ej`PuozBVh=mFbicfs1Dq^1Em%IReZTk^c$n=e19gz_31`(tW-EuVlD6u!gW2{ z#^_U}76$7fz?PQhp6=bK$b|BC^6tGCKp5}VB3_-5&R7b?>`gWo1$`|;{0Wlb-Y7(p z^DYJ9DQV_=CsUi}@VJu-F^Ll*&&&3jh_ohp9=SRRTme6cqR?LR8z`Q!E^i+nOQFw$O(JUCbBt@xRPzi`*WNp55l(?h{GR+v`VsvZaskO6T=c}x! z&C3wXn&PRKCfzs0XCse&z?pBmZOjvJRU^m-RRd2j4M+l7ICvoHilQTy7zwnHB$J_{ zfVBr~3p8igR8Yw4kli#0BJn(&Jq@s+vX@qiDdDGgJyy!+VbvS|Cjh~B{wPrd@BF5sE43*i_vr=(WY6Sx zUhI!=wakUdBbtb*XK@9XIGi8bOLXh}@gXUd6*p($ZSYP>w6Fuf@f+{Dwj!7kDR8D` z@?s8M6GaajHdhyS-p#fnuYd(x&_^T>-AqG&@^pIp{T$0dAAnMAN=XCJkyr_13(P^^ z`$rp|@>eSJ`l9dNgrnr<@>BTpKOX^O()HvXLh67frl#sqefpl7D!x}I+A-ZMQbAe!mO8h((ZLYyRD_0|b^RXwZG18o3Efp@O2Ia1cR4bmM z&UYk;=h-#nISlt8<-^EispGD(ZiS_#2QKp9f)sRo}xTN zSgy;Py%)iAfdyL%rsR89UvA3sldqOk0?Lt*S8EvjPW<*mMu0 zye=YM^{OOxaV5FTSg(6z9$FpIu!Q34Uhq>YpoL;9cg-W(F}g?MYBqCG@F8TA0|uf( z$8lkyUev4C1|S7GAP6tSh$TV`SBL-&90o`rs^&uqn*a&1SOBa1v@7KA4N#B$i*=}; zCsVgnsUQ^CsdNoDC6f;Ra`~;1U|efAijZihoeCSYNXp;EC&2cpl^^LM+3MV3zxDc# z!H;;f-u5k{0F$ullvy~)5r*r(=~I5U=tL)*GMb`9%D^5=Byhl$p=yzn_hIdtVbpTO9YhZ~Lo~ejA^JZwnCq z5oJn588CY?ElCtI_ues_IUciS!#=j>60VB<@tAmZCf*#oUT0&=oA!Z{KCJZD2(fBS z1%NkKG&9XoWH+pnQk=X&f1Xq@75|A;$JPZ2M_Wb70gpak8)F-MV3hIU#eGV(tbnkl zm{XHfh{cyz!V>V1;k?0eU@EFc0?SQD^1vPN>#zU^TTz?#5|69naoghKyT9D6)#3{~ zuwd`BNunT6dUYIuFUHTm!%Z5;x1NuM)LsoW&`W&AMK|{YQ@pLu&qb~R?LL;X!0EW& zW$Ls#ZgY)6X5qzM(#5AB4*I$nnOpq ze2eqM_gUU?aCSAgSq=>BpGg#}Nq4zbcgxqvOuKow4$u4EHIHVosOaL25?`7kSUey_ z1J4vnCU#FYHGx+F6LLF%m@u7vK-xKTk~iW-OP}+OExRZFnZZgv_{R1e1TG)jTd*6X z)0#(DeN^}tH$|b%@C{mVmSB{n{{T!UBcW@V=Dk$f+`sGsgpH^g7dYNjZ4i_iJiJm> z=vBM)%E`71*#%7vs#JC(EXw#!EgPT?FMFGYr-fa9$yz$V*9rEmMb%r}s8=w=ZTEwa zn=k>YP9p20oE!B{=GIt0UtmKul1XbuH*dMF&AzjYtbBs(=*ZW*iFW<8phm5`JJlESfs=Eu%S&M=#Nkc?S)9T^Gip z-!S%LKw}sEi?Kj+Cli$J?lc6uL3~DU=#Vl@%bqIw*Q%^5dFZAy+=-Lxc(%c! zU7#5>>YuT6o!DfA!mh)aSw5P;r`B#ChVk@1!g`YCTtA1eAH1|1qOTAnY6(c^M~j+A z$wDK%KxZsBUi8SC^?qh3E^HY7qFu$pH+;P}@@m(=c zyMAkT(w+QAH!%oukZAy`TTW=2OaLtQQ+y%Fy`uP4U(2xLD*{-_wzei8m@?d05VUW- zE{aZIK!=m$MRuLEIon7z+M<(07(e}E7eHz65}o*>1j_|MOL$*L;U2?2!gC|c_UjTA zO^RvqEg6aw-Vp|D!yEKqL_$6EYZ^wAKc;I$ktNyE={6bT=LmC&b7AQDpW1m=U4$bi zIk-yjBkSk>XMnQo;(&bDqpf_Hx2b!&U~$e^HXlEDBAty@@OFRO{5tUZ?bof`#P|l} z-14?p1sJ&vk5t&DSIFhfhGbxwl5DHiV)Cibyl+bq^|HjosNXeDXnvKgB^m5s4+!4f z1Z<>f^;MD*3(3C7h}ctt(G*+)P@}>fv-M*lX7vv^F1mV->a>iN{lykIb&GcKF?BalcjI#XX1)YNgJ% zi-nVr;+gwpf-Q1{rK3zjn)0O^ zS}%#hw5T8e89dqZysR!9qi{?cY(p1j6fLcYH{!tq_f=YTU1BQA%IPG5vGzvHf0YZK z%R)4?`;s)$6w7wB*uJKvHl*c8SA>IF^%8b4Sf?K^uvc9el`(Ryubl)+g?CD1Rc^$# zsWD2@Tv!m2No*}%Z>Gb4pGVeav`t`WHxKpFe(tp7`zHx89ps8hLGYt*Bk#uB)&@kI zp1$t|;6QIMWpgkV;dqqWZ3`l~j0I{I;{X{g&Y?P*^x)u7>TA6H!f^r$^;8b&w+{^6 zl!+5tfy4H9XHx1a%l)nSNO*6eWu5Xs#On~hhON!XLvtd{iG)_cfI0;Suwm=yjXW2- zk)*3$6B0?9Gr@9r6M@(n4C;HvThVHR6CE*eHyx1nCCA2@5O`;Q!VN~z#lMMOemEy? z4c-XA8bCapoA-Xf|a~`GpyW)%ci}bG+^zA&!ZfhNetADOD z2;27-$y^HBQn0JfnOkNz4VB?vFuGBuxaoOSRum%>F4os%>pfSkgl-gI^U0ge4lY(F z8=3BGZ}PUgoSoHD`u$-pGf84>ouYdGQhKTaAo`@R5pJM#F_B{3BV-bT@EE3)BR|zjz$m`CxK;@>_RLrOg`u{NR{i z6)0{>!&yIRSn+K)#{BO$XyYH>_d)$A?eZgTg#AJLxIF0dDBlN18a2%ZL7r{X`*5qp zzxUt=D|KrZdkeK1eU-M$;&J5m!W+Z=5zyB&?)xQ49We~@1AItq*-N_r27|SBw&|)L zUs{8Bkh&WT<{ztX$4VYf`6AhdJ|hT1kGPR`$)8Nu1Mh3wEx%WVx!<;zj#}r@0cLjQ z1(QdiLpF5RoVBUa&+f4S&^@b^?Z5~eEg$J6RzNCqeAf%^h} zMq=3w2<+OZBKkxS&c-VgppCIY!X&0n`99_Q*yq<(X!z(a`7bhRxhR%f=Rf@{rC6a1 z4XC>SwkOCTLsin0Dv$3-UTT;*G9ihb49_93d{+J?djHrh|Ibi1AK%;C*4ACuQFg;u z-+t_WtK?S}zj@>?=o;P)Op*R&&i-tlv!e9oqDH#PWOGgE8#zMyM2?HhRW(_wVwCg@ zYNShkSyNv~{7}rDt(+lcUyD-KXde7T8KLPX7`328>M5U+MVz~k)%g9>V>H<;hQgBq zCMmm-HoL(P&e~-sxl_cqI$Nw^mL8({(GLk zJV)={n>siBRqCzZ-=E!w`sPhGG;ObKto4e$L8N>%Vt{GG*!elgfcZMnkd)mG&~) zjRXDST{6ZUKx|}Ord~hZ9cxA^tsR?%`JEnQ=1*e?SircZ{c%n_p|2XzM0VHkPzPS< zEPM_kp8OhtF;?I_i!LPtpb|t*_-EHftq-rv4+a$j&@Mrxeb>vpUu)8T6tLeg`%%R$ns;0gxYXpyq>#_fnuxoD642z7uGXyUDiv| zTfI8G;fxD%I*#-XFf4z^-DMh4gCd zEEtxHNBc7l<9hnF+=L}j90~`AU3&2RutrhQ%WxGqB>ahw(u;lDfR3yl9D;%v9#(9L zY}WMfTAXcy3|q{4*ko^g=Sh3TCA%N#1lbowMK*OLlptLjMmdq+*&Gl1kBNMEj^B3p-_ z+_1^yU4VknXgWr64ZeLBdkm!pNEL}p#bye<e7&>R^;Ki1$vaxbXdL7kHdB)H2 zuvh7(EfQb5k?chwqYxDN5!2$x1qmax7Tk(<<6RF*B>z<>&A_tf54ZmfQ)BO(1dx$?3!7*=ge$@TPr5Abn^ zKui)C9L)74gW(v$Bza@?^3I#c1y=ca&jiAbiJdC$H7kivR(tMKa2LQ+sSKbY(pEJ`q$ z)GBBMoS=P0y3)&;`G{{R3@{9Mw#rX`aDIU7gfrwE!+Gljv*SY02so8N){t`wclf(m zqvnxsvba>yOfp5-)rLW2vGrt+J!5Z)B*I70E4 zQ=~51W(ZZYgjWOhajSA~F7Q=U&HD=?G&_?lCS}uco+6#TGfC{;PHY>2@e-n_^fij5 z(IBhF%% zx00)hZZN+X&SZITFJ5%ED7SU)#Ru=ph`ZHPBV>Jst0|}@sT=TwKcI;U)F3EL=0n#f zacgwO#(SfHB;EO1BqxFCf@g6IrE$iQhx!~6`-bAZ5%m9Dc@7x2kLZA_)*oPNIr*(V?0S?%F6+otpDZuix5=Y`ZtIZk6K^Yy0jbHloUA zn~%AJ>!Mv6534umOi^IY$FH7hr|T6m?A_fxNQrbv;_|#8i&5+^GT^;{11?b^ZBMOR zJC1G&fwSN&W%&8q>qr+LO3r1dmOmp>qO(Rk1y^SNX0IZ!8m_fBVnu#p;Y2nTW+oJq zpr1TZtpAfw=_EmGw1dCEr%99lj)>utMv>Fn#UrC)_e-%?S}I)kc+#+KFXXa(-hbHq zB#=QDqUdp(P!b-*iz|!kh(fp>3dLO0)rnXtQHC^C$OEW=$aEhZXk-20@SR!_lGYi} zR@i4$b~DL40uhyZ+wwG{5ZZ!NBVxWO|Lt>%r+$niFV3#DdFxeP^kDn6-zWOzM~6jM zn+or;yeLD6rG+5GsHjbRfh7e=Up9)+csC0BU1S4D)_x%Y#1HsK!ccXWJrbtKRg@y! zsS{qrBtg4Fp>Ydqdy>VN*(jl3)7=VJ7$}dpCe3>_xIMLZ*B`#}9%ACYXO7KRU8adH ze+CD$y_qk4SmKN>@x0#mz(xV=vYCQbZAp5y>Pc8~96F%vI z#ce<4OUODO39yb|JJ-)pEWwALzZXL%8^v1HCPzfkbj&7s(=cNa(!;zq^Ld!VJY&l$ zT)n*!IeCjKlrGT2~&P>_G12qtVo^%Baiz3)A+6;z}cail$Mb~EHNOM?oDs;_Htbt*K`u;OsD zuXSC&=|=|FyPN&F4GB&1|Kghq@1% zE`8k&eJ${HoAtGaJ3Zg!=4-E&dim<@*R1q2%I@Am+t>j?ub2(;*7bD0M_ef?( z<~<~k?hrb(Tn&gsA|ov=69@Ug#qWKM zma(J$z(sd}q0J?5NViFITqhRQ zhK{fGd&b7F5Ng3uga}mZm59$JGD6X`VAVbgtwXiPuW9}~0X}Hx5p1^H?OFiB#l@F7iWhNrlCu?SEkR#M* z+2+M1=;&4vUK|r|9@?)tb!3}jJA@rA92ILbRrM>rX0Z3%C7pl~61|Qi zWu~mVdauqtKtrf&`7yJ@{b~ur3S&_dXtR%XFduR2B?9{$q?hA9=-bEYYkWV2dO1(+ zGifv-y4oK0-cD#e==9K|Ld?HQNX%pu{L8iaUS(oacc$({i|uHAPwH=9t9($nVSzR} zN6E;jPyPiV=nqR|4{?z@*?GS$v&%Kc-cJ>2Z9eW4TNFw`qyc3DV{R`&P%+0n#kBjV&Og@SkxwnOudC36=`rJ7qs)rC_Z^`$4g`ET>4emb?l71_%!?t|IApt zIEek~O^SQvPnO0cv8dcI=hGul2@XAl#{cijpmwL>^+k3Ih?R2t&}`elBp=|AeU^VT zdN>^t(gvR2dmtiwmw{IGpNsB5$07*(hF0CoYLmb(m-M1A?1Kf*dSpwO9-X&|^_Co0 z_!X&B<8U7nVwHWe%gY~_ex-5Ur+vbOL~a@Xuy(|_kr;U6gXFMVdeKL%55P{18%&wN zxX@vtu-ruOTdani6&oLCEsoS{VE_0XZ}f*_+^5MGz=SRXLyPz4G|&wPXGNw!pg(=H zE`NpWpOg5k2t-oxKXZVQm8#(K*Ek0A_asZO??i>;KvC#FOuA zB}_|?a5g?}zV5m^B@yV<`{6p_PFhWFiy%V(ECYYlRHr;;iP+JObAH2_tEK*2Ea;mL zx)RQ5p@%=Sk+X`kk65o8`A~kyaa!5@@!6{YVr@EJZyH_ORXK=Ghv(S6;@#c#LI|mz z)aiLu&G(HrexpgaBoh+RJK%+#QWp^0mtEg4{y9wcyQy>%q#`5+n}Nzg8ylM5(|h^v zawJ{&2Wa6CRn{rKrCS7g4C=SekJfyn`KWiS-me;d)KW^v(dhx=z!Cfa literal 12973 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 jwxB4cqX0S~8|I{b*)8`6K+n_gvh@5Q#Wd{}}; \ No newline at end of file +exports.id=330,exports.ids=[330],exports.modules={83:()=>{}}; \ No newline at end of file diff --git a/server/chunk/lang/Emote-ts.js b/server/chunk/lang/Emote-ts.js index 2ec07806..ee5be306 100644 --- a/server/chunk/lang/Emote-ts.js +++ b/server/chunk/lang/Emote-ts.js @@ -1,2 +1,2 @@ -exports.id=858,exports.ids=[858],exports.modules={655:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Emote:()=>s});var s,o=r(115);!function(e){class t extends o.U{}e.GitHub=t,Object.freeze(t),Object.freeze(t.prototype)}(s||(s={})),Object.freeze(s)}}; +exports.id=858,exports.ids=[858],exports.modules={985:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Emote:()=>s});var s,o=r(208);!function(e){class t extends o.U{}e.GitHub=t,Object.freeze(t),Object.freeze(t.prototype)}(s||(s={})),Object.freeze(s)}}; //# sourceMappingURL=Emote-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/Emote-ts.js.map b/server/chunk/lang/Emote-ts.js.map index ee7c3a72..c416f6f3 100644 --- a/server/chunk/lang/Emote-ts.js.map +++ b/server/chunk/lang/Emote-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/Emote-ts.js","sources":["../chunk/lang/Emote-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/Emote.ts?"],"names":["Emote","GitHub","Object","freeze","prototype"],"mappings":"6GAMiBA,E,UAAV,SAAU,GAKT,gBAAqB,KAArB,EAAMC,SAEbC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAOG,WARf,CAAUJ,MAAA,KAUjBE,OAAOC,OAAOH","file":"chunk/lang/Emote-ts.js","sourcesContent":["import { Lang } from \"../Lang\";\r\n\r\n\r\n/**\r\n *\r\n */\r\nexport namespace Emote {\r\n\r\n\t/**\r\n\t *\r\n\t */\r\n\texport class GitHub extends Lang {\r\n\t}\r\n\tObject.freeze(GitHub);\r\n\tObject.freeze(GitHub.prototype);\r\n}\r\nObject.freeze(Emote);"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/English-ts.js b/server/chunk/lang/English-ts.js index 8ed48b2b..da4c4b90 100644 --- a/server/chunk/lang/English-ts.js +++ b/server/chunk/lang/English-ts.js @@ -1,2 +1,2 @@ -exports.id=184,exports.ids=[184],exports.modules={891:(t,e,n)=>{"use strict";n.r(e),n.d(e,{English:()=>r});var r,c=n(115);!function(t){class e extends c.U{constructor(t){super("engl-low",t)}static BUILD(){return c.U.BuildUtils.WORD_FOR_WORD(t.LETTER_FREQUENCY)}}t.Lowercase=e,Object.freeze(e),Object.freeze(e.prototype);class n extends c.U{constructor(t){super("engl-mix",t)}static BUILD(){let e={};const n=n=>{e=Object.entries(t.LETTER_FREQUENCY).reduce(((t,[e,r])=>{const c=n(e);return t[c]={seq:c,weight:r},t}),e)};return n((t=>t.toLowerCase())),n((t=>t.toUpperCase())),e}}let r,s;t.MixedCase=n,Object.freeze(n),Object.freeze(n.prototype),function(e){class n extends c.U{constructor(t){super("engl-cell-enc",t)}static BUILD(){return Object.entries(t.LETTER_FREQUENCY).reduce(((t,[e,n],c)=>(t[e]={seq:r[c],weight:n},t)),{})}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);const r=Object.freeze([3,3,3,3,3,4,3,4].flatMap(((t,e)=>{const n=[],r=(1+e).toString();for(let e=r;e.length<=t;e+=r)n.push(e);return n})))}(r=t.OldCellphone||(t.OldCellphone={})),Object.freeze(r),t.LETTER_FREQUENCY=Object.freeze(JSON.parse('{\n\t\t"a": 8.167, "b": 1.492, "c": 2.202, "d": 4.253,\n\t\t"e":12.702, "f": 2.228, "g": 2.015, "h": 6.094,\n\t\t"i": 6.966, "j": 0.153, "k": 1.292, "l": 4.025,\n\t\t"m": 2.406, "n": 6.749, "o": 7.507, "p": 1.929,\n\t\t"q": 0.095, "r": 5.987, "s": 6.327, "t": 9.356,\n\t\t"u": 2.758, "v": 0.978, "w": 2.560, "x": 0.150,\n\t\t"y": 1.994, "z": 0.077\n\t}')),t.LETTER_FREQUENCY_EXT=Object.freeze(Object.assign((()=>{const t={".":65.3,",":61.3,'"':26.7,"'":24.3,"-":15.3,"?":5.6,":":3.4,"!":3.3,";":3.2};for(let e=0;e<10;e++)t[e.toString()]=10;let e=0;for(const n in t)e+=t[n];for(const n in t)t[n]*=8/e;return t})(),t.LETTER_FREQUENCY)),function(e){class n extends c.U{constructor(t){super("mors-enc",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict))n[r]={seq:c,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);class r extends c.U{constructor(t){super("mors-dec",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict))n[c.replace(/\./g,"•").replace(/\-/g,"−")]={seq:r,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Decode=r,Object.freeze(r),Object.freeze(r.prototype),e.Dict=Object.freeze(JSON.parse('{\n\t\t\t"0": "-----", "5": ".....",\n\t\t\t"1": ".----", "6": "-....",\n\t\t\t"2": "..---", "7": "--...",\n\t\t\t"3": "...--", "8": "---..",\n\t\t\t"4": "....-", "9": "----.",\n\n\t\t\t"a": ".-" , "n": "-." ,\n\t\t\t"b": "-..." , "o": "---" ,\n\t\t\t"c": "-.-." , "p": ".--." ,\n\t\t\t"d": "-.." , "q": "--.-" ,\n\t\t\t"e": "." , "r": ".-." ,\n\t\t\t"f": "..-." , "s": "..." ,\n\t\t\t"g": "--." , "t": "-" ,\n\t\t\t"h": "...." , "u": "..-" ,\n\t\t\t"i": ".." , "v": "...-" ,\n\t\t\t"j": ".---" , "w": ".--" ,\n\t\t\t"k": "-.-" , "x": "-..-" ,\n\t\t\t"l": ".-.." , "y": "-.--" ,\n\t\t\t"m": "--" , "z": "--.." ,\n\n\t\t\t".": ".-.-.-",\n\t\t\t",": "--..--",\n\t\t\t"?": "..--..",\n\t\t\t"!": "-.-.--",\n\t\t\t"-": "-....-"\n\t\t}'))}(s=t.Morse||(t.Morse={})),Object.freeze(s)}(r||(r={})),Object.freeze(r)}}; +exports.id=184,exports.ids=[184],exports.modules={825:(t,e,n)=>{"use strict";n.r(e),n.d(e,{English:()=>r});var r,c=n(208);!function(t){class e extends c.U{constructor(t){super("engl-low",t)}static BUILD(){return c.U.BuildUtils.WORD_FOR_WORD(t.LETTER_FREQUENCY)}}t.Lowercase=e,Object.freeze(e),Object.freeze(e.prototype);class n extends c.U{constructor(t){super("engl-mix",t)}static BUILD(){let e={};const n=n=>{e=Object.entries(t.LETTER_FREQUENCY).freeze().reduce(((t,[e,r])=>{const c=n(e);return t[c]={seq:c,weight:r},t}),e)};return n((t=>t.toLowerCase())),n((t=>t.toUpperCase())),e}}let r,s;t.MixedCase=n,Object.freeze(n),Object.freeze(n.prototype),function(e){class n extends c.U{constructor(t){super("engl-cell-enc",t)}static BUILD(){return Object.entries(t.LETTER_FREQUENCY).freeze().reduce(((t,[e,n],c)=>(t[e]={seq:r[c],weight:n},t)),{})}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);const r=[3,3,3,3,3,4,3,4].flatMap(((t,e)=>{const n=[],r=(1+e).toString();for(let e=r;e.length<=t;e+=r)n.push(e);return n})).freeze()}(r=t.OldCellphone||(t.OldCellphone={})),Object.freeze(r),t.LETTER_FREQUENCY=Object.freeze(JSON.parse('{\n\t\t"a": 8.167, "b": 1.492, "c": 2.202, "d": 4.253,\n\t\t"e":12.702, "f": 2.228, "g": 2.015, "h": 6.094,\n\t\t"i": 6.966, "j": 0.153, "k": 1.292, "l": 4.025,\n\t\t"m": 2.406, "n": 6.749, "o": 7.507, "p": 1.929,\n\t\t"q": 0.095, "r": 5.987, "s": 6.327, "t": 9.356,\n\t\t"u": 2.758, "v": 0.978, "w": 2.560, "x": 0.150,\n\t\t"y": 1.994, "z": 0.077\n\t}')),t.LETTER_FREQUENCY_EXT=Object.freeze(Object.assign((()=>{const t={".":65.3,",":61.3,'"':26.7,"'":24.3,"-":15.3,"?":5.6,":":3.4,"!":3.3,";":3.2};for(let e=0;e<10;e++)t[e.toString()]=10;let e=0;for(const n in t)e+=t[n];for(const n in t)t[n]*=8/e;return t})(),t.LETTER_FREQUENCY)),function(e){class n extends c.U{constructor(t){super("mors-enc",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict).freeze())n[r]={seq:c,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Encode=n,Object.freeze(n),Object.freeze(n.prototype);class r extends c.U{constructor(t){super("mors-dec",t)}static BUILD(){const n={};for(const[r,c]of Object.entries(e.Dict).freeze())n[c.replace(/\./g,"•").replace(/\-/g,"−")]={seq:r,weight:t.LETTER_FREQUENCY_EXT[r]};return n}}e.Decode=r,Object.freeze(r),Object.freeze(r.prototype),e.Dict=Object.freeze(JSON.parse('{\n\t\t\t"0": "-----", "5": ".....",\n\t\t\t"1": ".----", "6": "-....",\n\t\t\t"2": "..---", "7": "--...",\n\t\t\t"3": "...--", "8": "---..",\n\t\t\t"4": "....-", "9": "----.",\n\n\t\t\t"a": ".-" , "n": "-." ,\n\t\t\t"b": "-..." , "o": "---" ,\n\t\t\t"c": "-.-." , "p": ".--." ,\n\t\t\t"d": "-.." , "q": "--.-" ,\n\t\t\t"e": "." , "r": ".-." ,\n\t\t\t"f": "..-." , "s": "..." ,\n\t\t\t"g": "--." , "t": "-" ,\n\t\t\t"h": "...." , "u": "..-" ,\n\t\t\t"i": ".." , "v": "...-" ,\n\t\t\t"j": ".---" , "w": ".--" ,\n\t\t\t"k": "-.-" , "x": "-..-" ,\n\t\t\t"l": ".-.." , "y": "-.--" ,\n\t\t\t"m": "--" , "z": "--.." ,\n\n\t\t\t".": ".-.-.-",\n\t\t\t",": "--..--",\n\t\t\t"?": "..--..",\n\t\t\t"!": "-.-.--",\n\t\t\t"-": "-....-"\n\t\t}'))}(s=t.Morse||(t.Morse={})),Object.freeze(s)}(r||(r={})),Object.freeze(r)}}; //# sourceMappingURL=English-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/English-ts.js.map b/server/chunk/lang/English-ts.js.map index a07edcb7..ca271a2e 100644 --- a/server/chunk/lang/English-ts.js.map +++ b/server/chunk/lang/English-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/English-ts.js","sources":["../chunk/lang/English-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/English.ts?"],"names":["English","weightScaling","super","LETTER_FREQUENCY","Lowercase","Object","freeze","prototype","initializer","addMappings","charSeqTransform","entries","reduce","accumulator","_char","weight","char","seq","cs","toLowerCase","toUpperCase","OldCellphone","Morse","MixedCase","index","NUMPAD","Encode","flatMap","val","idx","button","numpadKey","toString","str","length","push","JSON","parse","LETTER_FREQUENCY_EXT","assign","freq","\"","i","sum","key","dict","plain","cipher","Dict","replace","Decode"],"mappings":"+GAIiBA,E,UAAV,SAAU,GAOT,gBAAwB,IAGvB,YAAYC,GAClBC,MAAM,WAAYD,GAAA,eAGlB,OAAO,6BAA8B,EAAAE,mBAPhC,EAAMC,YAWbC,OAAOC,OAAOF,GACdC,OAAOC,OAAOF,EAAUG,WAQjB,gBAAwB,IACvB,YAAYN,GAClBC,MAAM,WAAYD,GAAA,eAGlB,IAAIO,EAAuC,GAC3C,MAAMC,EAAeC,IACpBF,EAAcH,OAAOM,QAAQ,EAAAR,kBAAkBG,SAASM,QACvD,CAACC,GAAcC,EAAMC,MACpB,MAAMC,EAAkBN,EAAiBI,GAEzC,OADAD,EAAYG,GAAQ,CAAEC,IAAKD,EAAMD,UAC1BF,IAERL,IAKF,OAFAC,GAAaS,GAAOA,EAAGC,gBACvBV,GAAaS,GAAOA,EAAGE,gBAChBZ,GAQF,IAAUa,EAwEAC,EAlGV,EAAMC,YAsBblB,OAAOC,OAAOiB,GACdlB,OAAOC,OAAOiB,EAAUhB,WAGjB,SAAU,GAIT,gBAAqB,IACpB,YAAYN,GAClBC,MAAM,gBAAiBD,GAAA,eAGvB,OAAOI,OAAOM,QAAQ,EAAAR,kBAAkBG,SAASM,QAChD,CAACC,GAAcG,EAAKD,GAASS,KAC5BX,EAAYG,GAAQ,CAAEC,IAAKQ,EAAOD,GAAST,UACpCF,IACL,KATC,EAAMa,SAcbrB,OAAOC,OAAOoB,GACdrB,OAAOC,OAAOoB,EAAOnB,WAErB,MAAMkB,EAAS,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,GAC5BE,SAAQ,CAACC,EAAKC,KACd,MAAMC,EAAS,GACTC,GAAa,EAAEF,GAAKG,WAC1B,QAASC,EAAMF,EAAWE,EAAIC,QAAUN,EAAKK,GAAOF,EACnDD,EAAOK,KAAKF,GAEb,OAAOH,KAEPxB,SA9BI,CAAUe,EAAA,EAAAA,eAAA,EAAAA,aAAA,KAgCjBhB,OAAOC,OAAOe,GAMD,EAAAlB,iBAAmBE,OAAOC,OAA8B8B,KAAKC,MAAM,qWASnE,EAAAC,qBAAuBjC,OAAOC,OAAOD,OAAOkC,OACvD,MACA,MAAMC,EAA+B,CACpC,IAAK,KAAM,IAAK,KAAMC,IAAM,KAAM,IAAK,KAAM,IAAK,KAClD,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,KAEpC,QAASC,EAAI,EAAGA,EAAI,GAAIA,IACvBF,EAAKE,EAAEV,YAAc,GAEtB,IAAIW,EAAM,EACV,UAAWC,KAAOJ,EACjBG,GAAOH,EAAKI,GAEb,UAAWA,KAAOJ,EACjBA,EAAKI,IAA6B,EAAID,EAIvC,OAAOH,GAjBP,GAmBD,EAAArC,mBAKM,SAAU,GAIT,gBAAqB,IACpB,YAAYF,GAClBC,MAAM,WAAYD,GAAA,eAGlB,MAAM4C,EAAgC,GACtC,UAAYC,EAAMC,KAAW1C,OAAOM,QAAQ,EAAAqC,MAAM1C,SACjDuC,EAAKC,GAAS,CAAE7B,IAAK8B,EAAQhC,OAAQ,EAAQuB,qBAAqBQ,IAEnE,OAAOD,GATF,EAAMnB,SAabrB,OAAOC,OAAOoB,GACdrB,OAAOC,OAAOoB,EAAOnB,WAMd,gBAAqB,IACpB,YAAYN,GAClBC,MAAM,WAAYD,GAAA,eAGlB,MAAM4C,EAAgC,GACtC,UAAYC,EAAMC,KAAW1C,OAAOM,QAAQ,EAAAqC,MAAM1C,SAEjDuC,EADcE,EAAOE,QAAQ,MAAM,KAAKA,QAAQ,MAAM,MACxC,CAAEhC,IAAK6B,EAAO/B,OAAQ,EAAQuB,qBAAqBQ,IAElE,OAAOD,GAVF,EAAMK,SAcb7C,OAAOC,OAAO4C,GACd7C,OAAOC,OAAO4C,EAAO3C,WAGR,EAAAyC,KAAO3C,OAAOC,OAA8B8B,KAAKC,MAAM,ovBA1C9D,CAAUf,EAAA,EAAAA,QAAA,EAAAA,MAAA,KA0EjBjB,OAAOC,OAAOgB,GAvMR,CAAUtB,MAAA,KAyMjBK,OAAOC,OAAON","file":"chunk/lang/English-ts.js","sourcesContent":["import { Lang } from \"../Lang\";\r\n\r\n/**\r\n */\r\nexport namespace English {\r\n\r\n\t/**\r\n\t * Lowercase (QWERTY)\r\n\t *\r\n\t * https://wikipedia.org/wiki/Keyboard_layout#QWERTY\r\n\t */\r\n\texport class Lowercase extends Lang {\r\n\t\t// TODO.learn see https://wikipedia.org/wiki/Keyboard_layout#Dvorak\r\n\t\t// and https://wikipedia.org/wiki/Keyboard_layout#Colemak\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"engl-low\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn Lang.BuildUtils.WORD_FOR_WORD(LETTER_FREQUENCY);\r\n\t\t}\r\n\t}\r\n\tLowercase as Lang.ClassIf;\r\n\tObject.freeze(Lowercase);\r\n\tObject.freeze(Lowercase.prototype);\r\n\r\n\r\n\t/**\r\n\t * Mixed-Case (QWERTY)\r\n\t *\r\n\t * https://wikipedia.org/wiki/Keyboard_layout#QWERTY\r\n\t */\r\n\texport class MixedCase extends Lang {\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"engl-mix\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\tlet initializer: Lang.WeightedForwardMap = {};\r\n\t\t\tconst addMappings = (charSeqTransform: (cs: string) => string): void => {\r\n\t\t\t\tinitializer = Object.entries(LETTER_FREQUENCY).freeze().reduce(\r\n\t\t\t\t\t(accumulator, [_char,weight]) => {\r\n\t\t\t\t\t\tconst char: Lang.Char = charSeqTransform(_char);\r\n\t\t\t\t\t\taccumulator[char] = { seq: char, weight };\r\n\t\t\t\t\t\treturn accumulator;\r\n\t\t\t\t\t},\r\n\t\t\t\t\tinitializer,\r\n\t\t\t\t);\r\n\t\t\t};\r\n\t\t\taddMappings((cs) => cs.toLowerCase());\r\n\t\t\taddMappings((cs) => cs.toUpperCase());\r\n\t\t\treturn initializer;\r\n\t\t}\r\n\t}\r\n\tMixedCase as Lang.ClassIf;\r\n\tObject.freeze(MixedCase);\r\n\tObject.freeze(MixedCase.prototype);\r\n\r\n\r\n\texport namespace OldCellphone {\r\n\t\t/**\r\n\t\t * You see letters and type as if on an old cellphone's numeric keypad.\r\n\t\t */\r\n\t\texport class Encode extends Lang {\r\n\t\t\tpublic constructor(weightScaling: number) {\r\n\t\t\t\tsuper(\"engl-cell-enc\", weightScaling);\r\n\t\t\t}\r\n\t\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\t\treturn Object.entries(LETTER_FREQUENCY).freeze().reduce(\r\n\t\t\t\t\t(accumulator, [char,weight], index) => {\r\n\t\t\t\t\t\taccumulator[char] = { seq: NUMPAD[index]!, weight };\r\n\t\t\t\t\t\treturn accumulator;\r\n\t\t\t\t\t}, {},\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}\r\n\t\tEncode as Lang.ClassIf;\r\n\t\tObject.freeze(Encode);\r\n\t\tObject.freeze(Encode.prototype);\r\n\r\n\t\tconst NUMPAD = [3,3,3,3,3,4,3,4]\r\n\t\t\t.flatMap((val, idx) => {\r\n\t\t\t\tconst button = [];\r\n\t\t\t\tconst numpadKey = (1+idx).toString();\r\n\t\t\t\tfor (let str = numpadKey; str.length <= val; str += numpadKey) {\r\n\t\t\t\t\tbutton.push(str);\r\n\t\t\t\t}\r\n\t\t\t\treturn button;\r\n\t\t\t})\r\n\t\t\t.freeze();\r\n\t}\r\n\tObject.freeze(OldCellphone);\r\n\r\n\r\n\t/**\r\n\t * Values obtained from https://wikipedia.org/wiki/Letter_frequency\r\n\t */\r\n\texport const LETTER_FREQUENCY = Object.freeze(>JSON.parse(`{\r\n\t\t\"a\": 8.167, \"b\": 1.492, \"c\": 2.202, \"d\": 4.253,\r\n\t\t\"e\":12.702, \"f\": 2.228, \"g\": 2.015, \"h\": 6.094,\r\n\t\t\"i\": 6.966, \"j\": 0.153, \"k\": 1.292, \"l\": 4.025,\r\n\t\t\"m\": 2.406, \"n\": 6.749, \"o\": 7.507, \"p\": 1.929,\r\n\t\t\"q\": 0.095, \"r\": 5.987, \"s\": 6.327, \"t\": 9.356,\r\n\t\t\"u\": 2.758, \"v\": 0.978, \"w\": 2.560, \"x\": 0.150,\r\n\t\t\"y\": 1.994, \"z\": 0.077\r\n\t}`));\r\n\texport const LETTER_FREQUENCY_EXT = Object.freeze(Object.assign(\r\n\t\t(() => {\r\n\t\t\tconst freq: Record = {\r\n\t\t\t\t\".\": 65.3, \",\": 61.3, \"\\\"\": 26.7, \"'\": 24.3, \"-\": 15.3,\r\n\t\t\t\t\"?\": 5.6, \":\": 3.4, \"!\": 3.3, \";\": 3.2,\r\n\t\t\t};\r\n\t\t\tfor (let i = 0; i < 10; i++) {\r\n\t\t\t\tfreq[i.toString()] = 10; // TODO.learn what's a good value to use here?\r\n\t\t\t}\r\n\t\t\tlet sum = 0;\r\n\t\t\tfor (const key in freq) {\r\n\t\t\t\tsum += freq[key]!;\r\n\t\t\t}\r\n\t\t\tfor (const key in freq) {\r\n\t\t\t\tfreq[key as keyof typeof freq] *= 8 / sum;\r\n\t\t\t\t// ^ above constant: 8 is between the 3rd and 4th top\r\n\t\t\t\t// frequencies of alphabet letters in LETTER_FREQUENCY.\r\n\t\t\t}\r\n\t\t\treturn freq;\r\n\t\t})(),\r\n\t\tLETTER_FREQUENCY,\r\n\t));\r\n\r\n\t/**\r\n\t */\r\n\texport namespace Morse {\r\n\t\t/**\r\n\t\t * You see letters and numbers and you type sequences of dots and dashes.\r\n\t\t */\r\n\t\texport class Encode extends Lang {\r\n\t\t\tpublic constructor(weightScaling: number) {\r\n\t\t\t\tsuper(\"mors-enc\", weightScaling);\r\n\t\t\t}\r\n\t\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\t\tconst dict: Lang.WeightedForwardMap = {};\r\n\t\t\t\tfor (const [plain,cipher] of Object.entries(Dict).freeze()) {\r\n\t\t\t\t\tdict[plain] = { seq: cipher, weight: English.LETTER_FREQUENCY_EXT[plain]! };\r\n\t\t\t\t}\r\n\t\t\t\treturn dict;\r\n\t\t\t}\r\n\t\t}\r\n\t\tEncode as Lang.ClassIf;\r\n\t\tObject.freeze(Encode);\r\n\t\tObject.freeze(Encode.prototype);\r\n\r\n\r\n\t\t/**\r\n\t\t * You see dots and dashes and you type alphanumeric characters.\r\n\t\t */\r\n\t\texport class Decode extends Lang {\r\n\t\t\tpublic constructor(weightScaling: number) {\r\n\t\t\t\tsuper(\"mors-dec\", weightScaling);\r\n\t\t\t}\r\n\t\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\t\tconst dict: Lang.WeightedForwardMap = {};\r\n\t\t\t\tfor (const [plain,cipher] of Object.entries(Dict).freeze()) {\r\n\t\t\t\t\tconst morse = cipher.replace(/\\./g,\"•\").replace(/\\-/g,\"−\");\r\n\t\t\t\t\tdict[morse] = { seq: plain, weight: English.LETTER_FREQUENCY_EXT[plain]! };\r\n\t\t\t\t}\r\n\t\t\t\treturn dict;\r\n\t\t\t}\r\n\t\t}\r\n\t\tDecode as Lang.ClassIf;\r\n\t\tObject.freeze(Decode);\r\n\t\tObject.freeze(Decode.prototype);\r\n\r\n\t\t// Also see https://en.wikipedia.org/wiki/Prosigns_for_Morse_code\r\n\t\texport const Dict = Object.freeze(>JSON.parse(`{\r\n\t\t\t\"0\": \"-----\", \"5\": \".....\",\r\n\t\t\t\"1\": \".----\", \"6\": \"-....\",\r\n\t\t\t\"2\": \"..---\", \"7\": \"--...\",\r\n\t\t\t\"3\": \"...--\", \"8\": \"---..\",\r\n\t\t\t\"4\": \"....-\", \"9\": \"----.\",\r\n\r\n\t\t\t\"a\": \".-\" , \"n\": \"-.\" ,\r\n\t\t\t\"b\": \"-...\" , \"o\": \"---\" ,\r\n\t\t\t\"c\": \"-.-.\" , \"p\": \".--.\" ,\r\n\t\t\t\"d\": \"-..\" , \"q\": \"--.-\" ,\r\n\t\t\t\"e\": \".\" , \"r\": \".-.\" ,\r\n\t\t\t\"f\": \"..-.\" , \"s\": \"...\" ,\r\n\t\t\t\"g\": \"--.\" , \"t\": \"-\" ,\r\n\t\t\t\"h\": \"....\" , \"u\": \"..-\" ,\r\n\t\t\t\"i\": \"..\" , \"v\": \"...-\" ,\r\n\t\t\t\"j\": \".---\" , \"w\": \".--\" ,\r\n\t\t\t\"k\": \"-.-\" , \"x\": \"-..-\" ,\r\n\t\t\t\"l\": \".-..\" , \"y\": \"-.--\" ,\r\n\t\t\t\"m\": \"--\" , \"z\": \"--..\" ,\r\n\r\n\t\t\t\".\": \".-.-.-\",\r\n\t\t\t\",\": \"--..--\",\r\n\t\t\t\"?\": \"..--..\",\r\n\t\t\t\"!\": \"-.-.--\",\r\n\t\t\t\"-\": \"-....-\"\r\n\t\t}`));\r\n\t\t// \"/\": \"-..-.\",\r\n\t\t// \"@\": \".--.-.\",\r\n\t\t// \"(\": \"-.--.\",\r\n\t\t// \")\": \"-.--.-\"\r\n\t}\r\n\tObject.freeze(Morse);\r\n}\r\nObject.freeze(English);"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/Japanese-ts.js b/server/chunk/lang/Japanese-ts.js index 3c91cee4..2b124b04 100644 --- a/server/chunk/lang/Japanese-ts.js +++ b/server/chunk/lang/Japanese-ts.js @@ -1,2 +1,2 @@ -exports.id=410,exports.ids=[410],exports.modules={800:(t,e,i)=>{"use strict";i.r(e),i.d(e,{Japanese:()=>n});var n,s=i(115);!function(t){class e extends s.U{constructor(t){super("japn-hir",t)}static BUILD(){return e.INITIALIZER}}Object.defineProperty(e,"INITIALIZER",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze(JSON.parse('{\n\t\t\t"の": { "seq": "no", "weight": 1918313 },\n\t\t\t"に": { "seq": "ni", "weight": 1108840 },\n\t\t\t"た": { "seq": "ta", "weight": 1067566},\n\t\t\t"い": { "seq": "i", "weight": 1060284 },\n\t\t\t"は": { "seq": "ha", "weight": 937811 },\n\t\t\t"を": { "seq": "wo", "weight": 936356 },\n\t\t\t"と": { "seq": "to", "weight": 927938 },\n\t\t\t"る": { "seq": "ru", "weight": 916652 },\n\t\t\t"が": { "seq": "ga", "weight": 860742 },\n\t\t\t"し": { "seq": "shi","weight": 848132 },\n\t\t\t"で": { "seq": "de", "weight": 764834 },\n\t\t\t"て": { "seq": "te", "weight": 758316 },\n\t\t\t"な": { "seq": "na", "weight": 720156 },\n\t\t\t"か": { "seq": "ka", "weight": 537294 },\n\t\t\t"れ": { "seq": "re", "weight": 450805 },\n\t\t\t"ら": { "seq": "ra", "weight": 42329 },\n\t\t\t"も": { "seq": "mo", "weight": 396142 },\n\t\t\t"う": { "seq": "u", "weight": 352965 },\n\t\t\t"す": { "seq": "su", "weight": 340654 },\n\t\t\t"り": { "seq": "ri", "weight": 333999 },\n\t\t\t"こ": { "seq": "ko", "weight": 312227 },\n\t\t\t"だ": { "seq": "da", "weight": 280911 },\n\t\t\t"ま": { "seq": "ma", "weight": 278599 },\n\t\t\t"さ": { "seq": "sa", "weight": 258960 },\n\t\t\t"き": { "seq": "ki", "weight": 233505 },\n\t\t\t"め": { "seq": "me", "weight": 223806 },\n\t\t\t"く": { "seq": "ku", "weight": 221960 },\n\t\t\t"あ": { "seq": "a" , "weight": 204256 },\n\t\t\t"け": { "seq": "ke", "weight": 199362 },\n\t\t\t"ど": { "seq": "do", "weight": 196555 },\n\t\t\t"ん": { "seq": "nn", "weight": 190068 },\n\t\t\t"え": { "seq": "e" , "weight": 163664 },\n\t\t\t"よ": { "seq": "yo", "weight": 154206 },\n\t\t\t"つ": { "seq": "tsu","weight": 153999 },\n\t\t\t"や": { "seq": "ya", "weight": 146156 },\n\t\t\t"そ": { "seq": "so", "weight": 131611 },\n\t\t\t"わ": { "seq": "wa", "weight": 123077 },\n\t\t\t"ち": { "seq": "chi","weight": 99183 },\n\t\t\t"み": { "seq": "mi", "weight": 89264 },\n\t\t\t"せ": { "seq": "se", "weight": 83444 },\n\t\t\t"ろ": { "seq": "ro", "weight": 73467 },\n\t\t\t"ば": { "seq": "ba", "weight": 72228 },\n\t\t\t"お": { "seq": "o", "weight": 65870 },\n\t\t\t"じ": { "seq": "ji", "weight": 56857 },\n\t\t\t"べ": { "seq": "be", "weight": 56005 },\n\t\t\t"ず": { "seq": "zu", "weight": 53256 },\n\t\t\t"げ": { "seq": "ge", "weight": 49126 },\n\t\t\t"ほ": { "seq": "ho", "weight": 48752 },\n\t\t\t"へ": { "seq": "he", "weight": 47013 },\n\t\t\t"び": { "seq": "bi", "weight": 32312 },\n\t\t\t"む": { "seq": "mu", "weight": 31212 },\n\t\t\t"ご": { "seq": "go", "weight": 26965 },\n\t\t\t"ね": { "seq": "ne", "weight": 23490 },\n\t\t\t"ぶ": { "seq": "bu", "weight": 23280 },\n\t\t\t"ぐ": { "seq": "gu", "weight": 21549 },\n\t\t\t"ぎ": { "seq": "gi", "weight": 19865 },\n\t\t\t"ひ": { "seq": "hi", "weight": 19148 },\n\t\t\t"づ": { "seq": "du", "weight": 13125 },\n\t\t\t"ぼ": { "seq": "bo", "weight": 12402 },\n\t\t\t"ざ": { "seq": "za", "weight": 12108 },\n\t\t\t"ふ": { "seq": "fu", "weight": 11606 },\n\t\t\t"ぞ": { "seq": "zo", "weight": 10047 },\n\t\t\t"ゆ": { "seq": "yu", "weight": 8486 },\n\t\t\t"ぜ": { "seq": "ze", "weight": 6893 },\n\t\t\t"ぬ": { "seq": "nu", "weight": 5124 },\n\t\t\t"ぱ": { "seq": "pa", "weight": 4349 },\n\t\t\t"ゅ": { "seq": "yu", "weight": 2755 },\n\t\t\t"ぴ": { "seq": "pi", "weight": 1608 },\n\t\t\t"ぽ": { "seq": "po", "weight": 1315 },\n\t\t\t"ぷ": { "seq": "pu", "weight": 986 },\n\t\t\t"ぺ": { "seq": "pe", "weight": 477 },\n\t\t\t"ぢ": { "seq": "di", "weight": 82 }\n\t\t}'))}),t.Hiragana=e,Object.freeze(e),Object.freeze(e.prototype);class i extends s.U{constructor(t){super("japn-kat",t)}static BUILD(){return i.INITIALIZER}}Object.defineProperty(i,"INITIALIZER",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze(JSON.parse('{\n\t\t\t"ン": { "seq": "nn", "weight": 290948 },\n\t\t\t"ル": { "seq": "ru", "weight": 189442 },\n\t\t\t"ス": { "seq": "su", "weight": 178214 },\n\t\t\t"ト": { "seq": "to", "weight": 162802 },\n\t\t\t"ア": { "seq": "a", "weight": 127845 },\n\t\t\t"イ": { "seq": "i", "weight": 120807 },\n\t\t\t"ラ": { "seq": "ra", "weight": 117203 },\n\t\t\t"リ": { "seq": "ri", "weight": 106744 },\n\t\t\t"ク": { "seq": "ku", "weight": 98209 },\n\t\t\t"カ": { "seq": "ka", "weight": 82982 },\n\t\t\t"シ": { "seq": "shi","weight": 80626 },\n\t\t\t"タ": { "seq": "ta", "weight": 75319 },\n\t\t\t"ロ": { "seq": "ro", "weight": 75301 },\n\t\t\t"ド": { "seq": "do", "weight": 74257 },\n\t\t\t"ジ": { "seq": "ji", "weight": 61171 },\n\t\t\t"フ": { "seq": "fu", "weight": 61115 },\n\t\t\t"レ": { "seq": "re", "weight": 60608 },\n\t\t\t"メ": { "seq": "me", "weight": 60230 },\n\t\t\t"コ": { "seq": "ko", "weight": 58724 },\n\t\t\t"マ": { "seq": "ma", "weight": 56123 },\n\t\t\t"プ": { "seq": "pu", "weight": 54159 },\n\t\t\t"テ": { "seq": "te", "weight": 53404 },\n\t\t\t"ム": { "seq": "mu", "weight": 50758 },\n\t\t\t"チ": { "seq": "chi","weight": 48437 },\n\t\t\t"バ": { "seq": "ba", "weight": 44970 },\n\t\t\t"ビ": { "seq": "bi", "weight": 44462 },\n\t\t\t"グ": { "seq": "gu", "weight": 40433 },\n\t\t\t"キ": { "seq": "ki", "weight": 39608 },\n\t\t\t"ウ": { "seq": "u", "weight": 39323 },\n\t\t\t"サ": { "seq": "sa", "weight": 39202 },\n\t\t\t"ニ": { "seq": "ni", "weight": 38711 },\n\t\t\t"ナ": { "seq": "na", "weight": 38047 },\n\t\t\t"エ": { "seq": "e", "weight": 36458 },\n\t\t\t"ブ": { "seq": "bu", "weight": 35920 },\n\t\t\t"パ": { "seq": "pa", "weight": 35416 },\n\t\t\t"セ": { "seq": "se", "weight": 34883 },\n\t\t\t"オ": { "seq": "o", "weight": 34718 },\n\t\t\t"デ": { "seq": "de", "weight": 32665 },\n\t\t\t"ミ": { "seq": "mi", "weight": 29262 },\n\t\t\t"ャ": { "seq": "ya", "weight": 28144 },\n\t\t\t"ボ": { "seq": "bo", "weight": 26651 },\n\t\t\t"ダ": { "seq": "da", "weight": 26396 },\n\t\t\t"ツ": { "seq": "tsu","weight": 24541 },\n\t\t\t"ポ": { "seq": "ho", "weight": 23742 },\n\t\t\t"ベ": { "seq": "be", "weight": 22755 },\n\t\t\t"ネ": { "seq": "ne", "weight": 22462 },\n\t\t\t"ガ": { "seq": "ga", "weight": 22061 },\n\t\t\t"ハ": { "seq": "ha", "weight": 21839 },\n\t\t\t"ワ": { "seq": "wa", "weight": 21784 },\n\t\t\t"ソ": { "seq": "so", "weight": 20784 },\n\t\t\t"ケ": { "seq": "ke", "weight": 20633 },\n\t\t\t"モ": { "seq": "ho", "weight": 20070 },\n\t\t\t"ノ": { "seq": "no", "weight": 19572 },\n\t\t\t"ズ": { "seq": "zu", "weight": 19240 },\n\t\t\t"ピ": { "seq": "pi", "weight": 18692 },\n\t\t\t"ホ": { "seq": "ho", "weight": 18204 },\n\t\t\t"ペ": { "seq": "pe", "weight": 14881 },\n\t\t\t"ゴ": { "seq": "go", "weight": 13931 },\n\t\t\t"ヤ": { "seq": "ya", "weight": 12526 },\n\t\t\t"ギ": { "seq": "gi", "weight": 10732 },\n\t\t\t"ヨ": { "seq": "yo", "weight": 10318 },\n\t\t\t"ザ": { "seq": "za", "weight": 10144 },\n\t\t\t"ァ": { "seq": "a", "weight": 10121 },\n\t\t\t"ゼ": { "seq": "ze", "weight": 7689 },\n\t\t\t"ヒ": { "seq": "hi", "weight": 7289 },\n\t\t\t"ヘ": { "seq": "he", "weight": 7129 },\n\t\t\t"ユ": { "seq": "yo", "weight": 6653 },\n\t\t\t"ゲ": { "seq": "ge", "weight": 6481 },\n\t\t\t"ォ": { "seq": "o", "weight": 6245 },\n\t\t\t"ヌ": { "seq": "nu", "weight": 2897 },\n\t\t\t"ゾ": { "seq": "zo", "weight": 2640 },\n\t\t\t"ヴ": { "seq": "vu", "weight": 1145 },\n\t\t\t"ヂ": { "seq": "di", "weight": 149 },\n\t\t\t"ヅ": { "seq": "du", "weight": 127 },\n\t\t\t"ヲ": { "seq": "wo", "weight": 122 }\n\t\t}'))}),t.Katakana=i,Object.freeze(i),Object.freeze(i.prototype)}(n||(n={})),Object.freeze(n)}}; +exports.id=410,exports.ids=[410],exports.modules={885:(e,t,s)=>{"use strict";s.r(t),s.d(t,{Japanese:()=>w});var i=s(208);const h=JSON.parse('{"の":{"seq":"no","weight":1918313},"に":{"seq":"ni","weight":1108840},"た":{"seq":"ta","weight":1067566},"い":{"seq":"i","weight":1060284},"は":{"seq":"ha","weight":937811},"を":{"seq":"wo","weight":936356},"と":{"seq":"to","weight":927938},"る":{"seq":"ru","weight":916652},"が":{"seq":"ga","weight":860742},"し":{"seq":"shi","weight":848132},"で":{"seq":"de","weight":764834},"て":{"seq":"te","weight":758316},"な":{"seq":"na","weight":720156},"か":{"seq":"ka","weight":537294},"れ":{"seq":"re","weight":450805},"ら":{"seq":"ra","weight":42329},"も":{"seq":"mo","weight":396142},"う":{"seq":"u","weight":352965},"す":{"seq":"su","weight":340654},"り":{"seq":"ri","weight":333999},"こ":{"seq":"ko","weight":312227},"だ":{"seq":"da","weight":280911},"ま":{"seq":"ma","weight":278599},"さ":{"seq":"sa","weight":258960},"き":{"seq":"ki","weight":233505},"め":{"seq":"me","weight":223806},"く":{"seq":"ku","weight":221960},"あ":{"seq":"a","weight":204256},"け":{"seq":"ke","weight":199362},"ど":{"seq":"do","weight":196555},"ん":{"seq":"nn","weight":190068},"え":{"seq":"e","weight":163664},"よ":{"seq":"yo","weight":154206},"つ":{"seq":"tsu","weight":153999},"や":{"seq":"ya","weight":146156},"そ":{"seq":"so","weight":131611},"わ":{"seq":"wa","weight":123077},"ち":{"seq":"chi","weight":99183},"み":{"seq":"mi","weight":89264},"せ":{"seq":"se","weight":83444},"ろ":{"seq":"ro","weight":73467},"ば":{"seq":"ba","weight":72228},"お":{"seq":"o","weight":65870},"じ":{"seq":"ji","weight":56857},"べ":{"seq":"be","weight":56005},"ず":{"seq":"zu","weight":53256},"げ":{"seq":"ge","weight":49126},"ほ":{"seq":"ho","weight":48752},"へ":{"seq":"he","weight":47013},"び":{"seq":"bi","weight":32312},"む":{"seq":"mu","weight":31212},"ご":{"seq":"go","weight":26965},"ね":{"seq":"ne","weight":23490},"ぶ":{"seq":"bu","weight":23280},"ぐ":{"seq":"gu","weight":21549},"ぎ":{"seq":"gi","weight":19865},"ひ":{"seq":"hi","weight":19148},"づ":{"seq":"du","weight":13125},"ぼ":{"seq":"bo","weight":12402},"ざ":{"seq":"za","weight":12108},"ふ":{"seq":"fu","weight":11606},"ぞ":{"seq":"zo","weight":10047},"ゆ":{"seq":"yu","weight":8486},"ぜ":{"seq":"ze","weight":6893},"ぬ":{"seq":"nu","weight":5124},"ぱ":{"seq":"pa","weight":4349},"ゅ":{"seq":"yu","weight":2755},"ぴ":{"seq":"pi","weight":1608},"ぽ":{"seq":"po","weight":1315},"ぷ":{"seq":"pu","weight":986},"ぺ":{"seq":"pe","weight":477},"ぢ":{"seq":"di","weight":82}}'),g=JSON.parse('{"ン":{"seq":"nn","weight":290948},"ル":{"seq":"ru","weight":189442},"ス":{"seq":"su","weight":178214},"ト":{"seq":"to","weight":162802},"ア":{"seq":"a","weight":127845},"イ":{"seq":"i","weight":120807},"ラ":{"seq":"ra","weight":117203},"リ":{"seq":"ri","weight":106744},"ク":{"seq":"ku","weight":98209},"カ":{"seq":"ka","weight":82982},"シ":{"seq":"shi","weight":80626},"タ":{"seq":"ta","weight":75319},"ロ":{"seq":"ro","weight":75301},"ド":{"seq":"do","weight":74257},"ジ":{"seq":"ji","weight":61171},"フ":{"seq":"fu","weight":61115},"レ":{"seq":"re","weight":60608},"メ":{"seq":"me","weight":60230},"コ":{"seq":"ko","weight":58724},"マ":{"seq":"ma","weight":56123},"プ":{"seq":"pu","weight":54159},"テ":{"seq":"te","weight":53404},"ム":{"seq":"mu","weight":50758},"チ":{"seq":"chi","weight":48437},"バ":{"seq":"ba","weight":44970},"ビ":{"seq":"bi","weight":44462},"グ":{"seq":"gu","weight":40433},"キ":{"seq":"ki","weight":39608},"ウ":{"seq":"u","weight":39323},"サ":{"seq":"sa","weight":39202},"ニ":{"seq":"ni","weight":38711},"ナ":{"seq":"na","weight":38047},"エ":{"seq":"e","weight":36458},"ブ":{"seq":"bu","weight":35920},"パ":{"seq":"pa","weight":35416},"セ":{"seq":"se","weight":34883},"オ":{"seq":"o","weight":34718},"デ":{"seq":"de","weight":32665},"ミ":{"seq":"mi","weight":29262},"ャ":{"seq":"ya","weight":28144},"ボ":{"seq":"bo","weight":26651},"ダ":{"seq":"da","weight":26396},"ツ":{"seq":"tsu","weight":24541},"ポ":{"seq":"ho","weight":23742},"ベ":{"seq":"be","weight":22755},"ネ":{"seq":"ne","weight":22462},"ガ":{"seq":"ga","weight":22061},"ハ":{"seq":"ha","weight":21839},"ワ":{"seq":"wa","weight":21784},"ソ":{"seq":"so","weight":20784},"ケ":{"seq":"ke","weight":20633},"モ":{"seq":"ho","weight":20070},"ノ":{"seq":"no","weight":19572},"ズ":{"seq":"zu","weight":19240},"ピ":{"seq":"pi","weight":18692},"ホ":{"seq":"ho","weight":18204},"ペ":{"seq":"pe","weight":14881},"ゴ":{"seq":"go","weight":13931},"ヤ":{"seq":"ya","weight":12526},"ギ":{"seq":"gi","weight":10732},"ヨ":{"seq":"yo","weight":10318},"ザ":{"seq":"za","weight":10144},"ァ":{"seq":"a","weight":10121},"ゼ":{"seq":"ze","weight":7689},"ヒ":{"seq":"hi","weight":7289},"ヘ":{"seq":"he","weight":7129},"ユ":{"seq":"yo","weight":6653},"ゲ":{"seq":"ge","weight":6481},"ォ":{"seq":"o","weight":6245},"ヌ":{"seq":"nu","weight":2897},"ゾ":{"seq":"zo","weight":2640},"ヴ":{"seq":"vu","weight":1145},"ヂ":{"seq":"di","weight":149},"ヅ":{"seq":"du","weight":127},"ヲ":{"seq":"wo","weight":122}}');var w;!function(e){const t=class extends i.U{constructor(e){super("japn-hir",e)}static BUILD(){return t.INITIALIZER}};let s=t;s.INITIALIZER=Object.freeze(h),e.Hiragana=s,Object.freeze(s),Object.freeze(s.prototype);const w=class extends i.U{constructor(e){super("japn-kat",e)}static BUILD(){return w.INITIALIZER}};let q=w;q.INITIALIZER=Object.freeze(g),e.Katakana=q,Object.freeze(q),Object.freeze(q.prototype)}(w||(w={})),Object.freeze(w)}}; //# sourceMappingURL=Japanese-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/Japanese-ts.js.map b/server/chunk/lang/Japanese-ts.js.map index 32dd1a49..22dbc73e 100644 --- a/server/chunk/lang/Japanese-ts.js.map +++ b/server/chunk/lang/Japanese-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/Japanese-ts.js","sources":["../chunk/lang/Japanese-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/Japanese.ts?"],"names":["Japanese","Lang","weightScaling","super","INITIALIZER","Object","freeze","Hiragana","prototype","Katakana"],"mappings":"gxJAUO,IAAUA,GAAV,SAAU,GAQT,sBAAuBC,EAAA,EAatB,YAAYC,GAClBC,MAAM,WAAYD,GAAA,eAGlB,OAAO,EAASE,cAjBX,UASQA,YAAcC,OAAOC,OAClC,GAVK,EAAMC,WAqBbF,OAAOC,OAAOC,GACdF,OAAOC,OAAOC,EAASC,WAOhB,sBAAuBP,EAAA,EAStB,YAAYC,GAClBC,MAAM,WAAYD,GAAA,eAGlB,OAAO,EAASE,cAbX,UAKQA,YAAcC,OAAOC,OAClC,GANK,EAAMG,WAiBbJ,OAAOC,OAAOG,GACdJ,OAAOC,OAAOG,EAASD,WAvDjB,CAAUR,MAAA,KAyDjBK,OAAOC,OAAON","file":"chunk/lang/Japanese-ts.js","sourcesContent":["import { Lang } from \"../Lang\";\r\nimport JapnHirInitializer from \"./defs/japn-hir.json5\";\r\nimport JapnKatInitializer from \"./defs/japn-kat.json5\";\r\n\r\n/**\r\n * Japanese\r\n *\r\n * A namespace grouping implementations of {@link Japanese.Hiragana}\r\n * and {@link Japanese.Katakana} alphabets.\r\n */\r\nexport namespace Japanese {\r\n\r\n\t// TODO.impl https://wikipedia.org/wiki/Keyboard_layout#Japanese\r\n\t// add INITIALIZER entry field \"kana\", make hiragana a namespace\r\n\t// and separate romanization class from kana-keyboard class.\r\n\t/**\r\n\t * Hiragana\r\n\t */\r\n\texport class Hiragana extends Lang {\r\n\t\t/**\r\n\t\t * Values obtained from page 18 of the below pdf (p.499 of text)\r\n\t\t * https://link.springer.com/content/pdf/10.3758/BF03200819.pdf\r\n\t\t *\r\n\t\t * alternate unused source:\r\n\t\t * https://gawron.sdsu.edu/crypto/japanese_models/hir_freq.html\r\n\t\t * (https://gawron.sdsu.edu/crypto/lectures/hiragana.html)\r\n\t\t */\r\n\t\tpublic static INITIALIZER = Object.freeze(\r\n\t\t\tJapnHirInitializer as Lang.WeightedForwardMap\r\n\t\t);\r\n\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"japn-hir\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn Hiragana.INITIALIZER;\r\n\t\t}\r\n\t}\r\n\tHiragana as Lang.ClassIf;\r\n\tObject.freeze(Hiragana);\r\n\tObject.freeze(Hiragana.prototype);\r\n\r\n\r\n\r\n\t/**\r\n\t * Katakana\r\n\t */\r\n\texport class Katakana extends Lang {\r\n\t\t/**\r\n\t\t * Values obtained from page 19 of the below pdf (p.500 of text)\r\n\t\t * https://link.springer.com/content/pdf/10.3758/BF03200819.pdf\r\n\t\t */\r\n\t\tpublic static INITIALIZER = Object.freeze(\r\n\t\t\tJapnKatInitializer as Lang.WeightedForwardMap\r\n\t\t);\r\n\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"japn-kat\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn Katakana.INITIALIZER;\r\n\t\t}\r\n\t}\r\n\tKatakana as Lang.ClassIf;\r\n\tObject.freeze(Katakana);\r\n\tObject.freeze(Katakana.prototype);\r\n}\r\nObject.freeze(Japanese);"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/Korean-ts.js b/server/chunk/lang/Korean-ts.js index a4a29a9e..e6c6f3cb 100644 --- a/server/chunk/lang/Korean-ts.js +++ b/server/chunk/lang/Korean-ts.js @@ -1,2 +1,2 @@ -exports.id=227,exports.ids=[227],exports.modules={3:(e,a,r)=>{"use strict";r.r(a),r.d(a,{Korean:()=>o});var o,m=r(115);!function(e){class a extends m.U{constructor(e){super("kore-dub",e)}static BUILD(){return t(((e,r,o)=>[e,r,o].flatMap((e=>e.atoms.split(""))).map((e=>a.DUB_KEYBOARD[e])).join("")))}}Object.defineProperty(a,"DUB_KEYBOARD",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({"":"",ㅂ:"q",ㅈ:"w",ㄷ:"e",ㄱ:"r",ㅅ:"t",ㅛ:"y",ㅕ:"u",ㅑ:"i",ㅐ:"o",ㅔ:"p",ㅁ:"a",ㄴ:"s",ㅇ:"d",ㄹ:"f",ㅎ:"g",ㅗ:"h",ㅓ:"j",ㅏ:"k",ㅣ:"l",ㅋ:"z",ㅌ:"x",ㅊ:"c",ㅍ:"v",ㅠ:"b",ㅜ:"n",ㅡ:"m",ㅃ:"Q",ㅉ:"W",ㄸ:"E",ㄲ:"R",ㅆ:"T",ㅒ:"O",ㅖ:"P"})}),e.Dubeolsik=a,Object.freeze(a),Object.freeze(a.prototype);class r extends m.U{constructor(e){super("kore-sub",e)}static BUILD(){return t(((e,a,o)=>r.SEB_KEYBOARD.INITIALS[e.value]+r.SEB_KEYBOARD.MEDIALS[a.value]+r.SEB_KEYBOARD.FINALS[o.value]))}}Object.defineProperty(r,"SEB_KEYBOARD",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({FINALS:{"":"",ㅎ:"1",ㅆ:"2",ㅂ:"3",ㅅ:"q",ㄹ:"w",ㅇ:"a",ㄴ:"s",ㅁ:"z",ㄱ:"x",ㄲ:"!",ㄺ:"@",ㅈ:"#",ㄿ:"$",ㄾ:"%",ㅍ:"Q",ㅌ:"W",ㄵ:"E",ㅀ:"R",ㄽ:"T",ㄷ:"A",ㄶ:"S",ㄼ:"D",ㄻ:"F",ㅊ:"Z",ㅄ:"X",ㅋ:"C",ㄳ:"V"},MEDIALS:{ㅛ:"4",ㅠ:"5",ㅑ:"6",ㅖ:"7",ㅢ:"8",ㅕ:"e",ㅐ:"r",ㅓ:"t",ㅣ:"d",ㅏ:"f",ㅡ:"g",ㅔ:"c",ㅗ:"v",ㅜ:"b",ㅒ:"G",ㅘ:"vf",ㅙ:"vr",ㅚ:"vd",ㅝ:"bt",ㅞ:"bc",ㅟ:"bd"},INITIALS:{ㅋ:"0",ㄹ:"y",ㄷ:"u",ㅁ:"i",ㅊ:"o",ㅍ:"p",ㄴ:"h",ㅇ:"j",ㄱ:"k",ㅈ:"l",ㅂ:";",ㅌ:"'",ㅅ:"n",ㅎ:"m",ㄲ:"!",ㄸ:"uu",ㅃ:";;",ㅆ:"nn",ㅉ:"l"}})}),e.Sebeolsik=r,Object.freeze(r),Object.freeze(r.prototype);class o extends m.U{constructor(e){super("kore-rom",e)}static BUILD(){return t(((e,a,r)=>e.roman+a.roman+r.roman))}}e.Romanization=o,Object.freeze(o),Object.freeze(o.prototype);const t=e=>{const a={};return n.forEach(((r,o)=>{s.forEach(((m,t)=>{l.forEach(((n,u)=>{let f=o;f=s.length*f+t,f=l.length*f+u;const v=String.fromCharCode(44032+f);a[v]={seq:e(r,m,n),weight:r.freq*m.freq*n.freq}}))}))})),a},n=Object.freeze([{value:"ㄱ",atoms:"ㄱ",roman:"g",freq:2.508206},{value:"ㄲ",atoms:"ㄱㄱ",roman:"kk",freq:.139215},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:1.278464},{value:"ㄷ",atoms:"ㄷ",roman:"d",freq:1.715174},{value:"ㄸ",atoms:"ㄷㄷ",roman:"tt",freq:.155508},{value:"ㄹ",atoms:"ㄹ",roman:"r",freq:1.30699},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.920276},{value:"ㅂ",atoms:"ㅂ",roman:"b",freq:.768992},{value:"ㅃ",atoms:"ㅂㅂ",roman:"pp",freq:.034349},{value:"ㅅ",atoms:"ㅅ",roman:"s",freq:1.620272},{value:"ㅆ",atoms:"ㅅㅅ",roman:"ss",freq:.062508},{value:"ㅇ",atoms:"ㅇ",roman:"-",freq:4.509884},{value:"ㅈ",atoms:"ㅈ",roman:"j",freq:1.603205},{value:"ㅉ",atoms:"ㅈㅈ",roman:"jj",freq:.043767},{value:"ㅊ",atoms:"ㅊ",roman:"ch",freq:.428943},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:.103017},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.228492},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.212015},{value:"ㅎ",atoms:"ㅎ",roman:"h",freq:1.360725}]),s=Object.freeze([{value:"ㅏ",atoms:"ㅏ",roman:"a",freq:4.559484},{value:"ㅐ",atoms:"ㅐ",roman:"ae",freq:.970054},{value:"ㅑ",atoms:"ㅑ",roman:"ya",freq:.150865},{value:"ㅒ",atoms:"ㅒ",roman:"yae",freq:.008922},{value:"ㅓ",atoms:"ㅓ",roman:"eo",freq:2.231959},{value:"ㅔ",atoms:"ㅔ",roman:"e",freq:.932004},{value:"ㅕ",atoms:"ㅕ",roman:"yeo",freq:1.000171},{value:"ㅖ",atoms:"ㅖ",roman:"ye",freq:.105095},{value:"ㅗ",atoms:"ㅗ",roman:"o",freq:2.040807},{value:"ㅘ",atoms:"ㅗㅏ",roman:"wa",freq:.38506},{value:"ㅙ",atoms:"ㅗㅐ",roman:"wae",freq:.02655},{value:"ㅚ",atoms:"ㅗㅣ",roman:"oe",freq:.236245},{value:"ㅛ",atoms:"ㅛ",roman:"yo",freq:.223892},{value:"ㅜ",atoms:"ㅜ",roman:"u",freq:1.402448},{value:"ㅝ",atoms:"ㅜㅓ",roman:"wo",freq:.135821},{value:"ㅞ",atoms:"ㅜㅔ",roman:"we",freq:.004818},{value:"ㅟ",atoms:"ㅜㅣ",roman:"wi",freq:.112462},{value:"ㅠ",atoms:"ㅠ",roman:"yu",freq:.111584},{value:"ㅡ",atoms:"ㅡ",roman:"eu",freq:2.727101},{value:"ㅢ",atoms:"ㅡㅣ",roman:"ui",freq:.425688},{value:"ㅣ",atoms:"ㅣ",roman:"i",freq:3.208973}]),l=Object.freeze([{value:"",atoms:"",roman:"",freq:17.06119},{value:"ㄱ",atoms:"ㄱ",roman:"k",freq:1.109483},{value:"ㄲ",atoms:"ㄱㄱ",roman:"k",freq:.016359},{value:"ㄳ",atoms:"ㄱㅅ",roman:"kt",freq:962e-6},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:3.580456},{value:"ㄵ",atoms:"ㄴㅈ",roman:"nt",freq:.007522},{value:"ㄶ",atoms:"ㄴㅎ",roman:"nt",freq:.081892},{value:"ㄷ",atoms:"ㄷ",roman:"t",freq:.049969},{value:"ㄹ",atoms:"ㄹ",roman:"l",freq:2.094454},{value:"ㄺ",atoms:"ㄹㄱ",roman:"lk",freq:.019761},{value:"ㄻ",atoms:"ㄹㅁ",roman:"lm",freq:.011711},{value:"ㄼ",atoms:"ㄹㅂ",roman:"lp",freq:.005885},{value:"ㄽ",atoms:"ㄹㅅ",roman:"lt",freq:13e-6},{value:"ㄾ",atoms:"ㄹㅌ",roman:"lt",freq:353e-6},{value:"ㄿ",atoms:"ㄹㅍ",roman:"lp",freq:21e-5},{value:"ㅀ",atoms:"ㄹㅎ",roman:"lt",freq:.00815},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.697015},{value:"ㅂ",atoms:"ㅂ",roman:"p",freq:.360526},{value:"ㅄ",atoms:"ㅂㅅ",roman:"pt",freq:.069739},{value:"ㅅ",atoms:"ㅅ",roman:"t",freq:.308934},{value:"ㅆ",atoms:"ㅅㅅ",roman:"t",freq:.590913},{value:"ㅇ",atoms:"ㅇ",roman:"ng",freq:1.66395},{value:"ㅈ",atoms:"ㅈ",roman:"t",freq:.046297},{value:"ㅊ",atoms:"ㅊ",roman:"t",freq:.026808},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:814e-6},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.068318},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.045664},{value:"ㅎ",atoms:"ㅎ",roman:"t",freq:.002595}])}(o||(o={})),Object.freeze(o)}}; +exports.id=227,exports.ids=[227],exports.modules={969:(e,a,r)=>{"use strict";r.r(a),r.d(a,{Korean:()=>o});var o,m=r(208);!function(e){const a=class extends m.U{constructor(e){super("kore-dub",e)}static BUILD(){return n(((e,r,o)=>[e,r,o].flatMap((e=>e.atoms.split(""))).freeze().map((e=>a.DUB_KEYBOARD[e])).join("")))}};let r=a;r.DUB_KEYBOARD=Object.freeze({"":"",ㅂ:"q",ㅈ:"w",ㄷ:"e",ㄱ:"r",ㅅ:"t",ㅛ:"y",ㅕ:"u",ㅑ:"i",ㅐ:"o",ㅔ:"p",ㅁ:"a",ㄴ:"s",ㅇ:"d",ㄹ:"f",ㅎ:"g",ㅗ:"h",ㅓ:"j",ㅏ:"k",ㅣ:"l",ㅋ:"z",ㅌ:"x",ㅊ:"c",ㅍ:"v",ㅠ:"b",ㅜ:"n",ㅡ:"m",ㅃ:"Q",ㅉ:"W",ㄸ:"E",ㄲ:"R",ㅆ:"T",ㅒ:"O",ㅖ:"P"}),e.Dubeolsik=r,Object.freeze(r),Object.freeze(r.prototype);const o=class extends m.U{constructor(e){super("kore-sub",e)}static BUILD(){return n(((e,a,r)=>o.SEB_KEYBOARD.INITIALS[e.value]+o.SEB_KEYBOARD.MEDIALS[a.value]+o.SEB_KEYBOARD.FINALS[r.value]))}};let t=o;t.SEB_KEYBOARD=Object.freeze({FINALS:{"":"",ㅎ:"1",ㅆ:"2",ㅂ:"3",ㅅ:"q",ㄹ:"w",ㅇ:"a",ㄴ:"s",ㅁ:"z",ㄱ:"x",ㄲ:"!",ㄺ:"@",ㅈ:"#",ㄿ:"$",ㄾ:"%",ㅍ:"Q",ㅌ:"W",ㄵ:"E",ㅀ:"R",ㄽ:"T",ㄷ:"A",ㄶ:"S",ㄼ:"D",ㄻ:"F",ㅊ:"Z",ㅄ:"X",ㅋ:"C",ㄳ:"V"},MEDIALS:{ㅛ:"4",ㅠ:"5",ㅑ:"6",ㅖ:"7",ㅢ:"8",ㅕ:"e",ㅐ:"r",ㅓ:"t",ㅣ:"d",ㅏ:"f",ㅡ:"g",ㅔ:"c",ㅗ:"v",ㅜ:"b",ㅒ:"G",ㅘ:"vf",ㅙ:"vr",ㅚ:"vd",ㅝ:"bt",ㅞ:"bc",ㅟ:"bd"},INITIALS:{ㅋ:"0",ㄹ:"y",ㄷ:"u",ㅁ:"i",ㅊ:"o",ㅍ:"p",ㄴ:"h",ㅇ:"j",ㄱ:"k",ㅈ:"l",ㅂ:";",ㅌ:"'",ㅅ:"n",ㅎ:"m",ㄲ:"!",ㄸ:"uu",ㅃ:";;",ㅆ:"nn",ㅉ:"l"}}),e.Sebeolsik=t,Object.freeze(t),Object.freeze(t.prototype);class s extends m.U{constructor(e){super("kore-rom",e)}static BUILD(){return n(((e,a,r)=>e.roman+a.roman+r.roman))}}e.Romanization=s,Object.freeze(s),Object.freeze(s.prototype);const n=e=>{const a={};return l.forEach(((r,o)=>{u.forEach(((m,t)=>{f.forEach(((s,n)=>{let l=o;l=u.length*l+t,l=f.length*l+n;const v=String.fromCharCode(44032+l);a[v]={seq:e(r,m,s),weight:r.freq*m.freq*s.freq}}))}))})),a},l=Object.freeze([{value:"ㄱ",atoms:"ㄱ",roman:"g",freq:2.508206},{value:"ㄲ",atoms:"ㄱㄱ",roman:"kk",freq:.139215},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:1.278464},{value:"ㄷ",atoms:"ㄷ",roman:"d",freq:1.715174},{value:"ㄸ",atoms:"ㄷㄷ",roman:"tt",freq:.155508},{value:"ㄹ",atoms:"ㄹ",roman:"r",freq:1.30699},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.920276},{value:"ㅂ",atoms:"ㅂ",roman:"b",freq:.768992},{value:"ㅃ",atoms:"ㅂㅂ",roman:"pp",freq:.034349},{value:"ㅅ",atoms:"ㅅ",roman:"s",freq:1.620272},{value:"ㅆ",atoms:"ㅅㅅ",roman:"ss",freq:.062508},{value:"ㅇ",atoms:"ㅇ",roman:"-",freq:4.509884},{value:"ㅈ",atoms:"ㅈ",roman:"j",freq:1.603205},{value:"ㅉ",atoms:"ㅈㅈ",roman:"jj",freq:.043767},{value:"ㅊ",atoms:"ㅊ",roman:"ch",freq:.428943},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:.103017},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.228492},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.212015},{value:"ㅎ",atoms:"ㅎ",roman:"h",freq:1.360725}]),u=Object.freeze([{value:"ㅏ",atoms:"ㅏ",roman:"a",freq:4.559484},{value:"ㅐ",atoms:"ㅐ",roman:"ae",freq:.970054},{value:"ㅑ",atoms:"ㅑ",roman:"ya",freq:.150865},{value:"ㅒ",atoms:"ㅒ",roman:"yae",freq:.008922},{value:"ㅓ",atoms:"ㅓ",roman:"eo",freq:2.231959},{value:"ㅔ",atoms:"ㅔ",roman:"e",freq:.932004},{value:"ㅕ",atoms:"ㅕ",roman:"yeo",freq:1.000171},{value:"ㅖ",atoms:"ㅖ",roman:"ye",freq:.105095},{value:"ㅗ",atoms:"ㅗ",roman:"o",freq:2.040807},{value:"ㅘ",atoms:"ㅗㅏ",roman:"wa",freq:.38506},{value:"ㅙ",atoms:"ㅗㅐ",roman:"wae",freq:.02655},{value:"ㅚ",atoms:"ㅗㅣ",roman:"oe",freq:.236245},{value:"ㅛ",atoms:"ㅛ",roman:"yo",freq:.223892},{value:"ㅜ",atoms:"ㅜ",roman:"u",freq:1.402448},{value:"ㅝ",atoms:"ㅜㅓ",roman:"wo",freq:.135821},{value:"ㅞ",atoms:"ㅜㅔ",roman:"we",freq:.004818},{value:"ㅟ",atoms:"ㅜㅣ",roman:"wi",freq:.112462},{value:"ㅠ",atoms:"ㅠ",roman:"yu",freq:.111584},{value:"ㅡ",atoms:"ㅡ",roman:"eu",freq:2.727101},{value:"ㅢ",atoms:"ㅡㅣ",roman:"ui",freq:.425688},{value:"ㅣ",atoms:"ㅣ",roman:"i",freq:3.208973}]),f=Object.freeze([{value:"",atoms:"",roman:"",freq:17.06119},{value:"ㄱ",atoms:"ㄱ",roman:"k",freq:1.109483},{value:"ㄲ",atoms:"ㄱㄱ",roman:"k",freq:.016359},{value:"ㄳ",atoms:"ㄱㅅ",roman:"kt",freq:962e-6},{value:"ㄴ",atoms:"ㄴ",roman:"n",freq:3.580456},{value:"ㄵ",atoms:"ㄴㅈ",roman:"nt",freq:.007522},{value:"ㄶ",atoms:"ㄴㅎ",roman:"nt",freq:.081892},{value:"ㄷ",atoms:"ㄷ",roman:"t",freq:.049969},{value:"ㄹ",atoms:"ㄹ",roman:"l",freq:2.094454},{value:"ㄺ",atoms:"ㄹㄱ",roman:"lk",freq:.019761},{value:"ㄻ",atoms:"ㄹㅁ",roman:"lm",freq:.011711},{value:"ㄼ",atoms:"ㄹㅂ",roman:"lp",freq:.005885},{value:"ㄽ",atoms:"ㄹㅅ",roman:"lt",freq:13e-6},{value:"ㄾ",atoms:"ㄹㅌ",roman:"lt",freq:353e-6},{value:"ㄿ",atoms:"ㄹㅍ",roman:"lp",freq:21e-5},{value:"ㅀ",atoms:"ㄹㅎ",roman:"lt",freq:.00815},{value:"ㅁ",atoms:"ㅁ",roman:"m",freq:.697015},{value:"ㅂ",atoms:"ㅂ",roman:"p",freq:.360526},{value:"ㅄ",atoms:"ㅂㅅ",roman:"pt",freq:.069739},{value:"ㅅ",atoms:"ㅅ",roman:"t",freq:.308934},{value:"ㅆ",atoms:"ㅅㅅ",roman:"t",freq:.590913},{value:"ㅇ",atoms:"ㅇ",roman:"ng",freq:1.66395},{value:"ㅈ",atoms:"ㅈ",roman:"t",freq:.046297},{value:"ㅊ",atoms:"ㅊ",roman:"t",freq:.026808},{value:"ㅋ",atoms:"ㅋ",roman:"k",freq:814e-6},{value:"ㅌ",atoms:"ㅌ",roman:"t",freq:.068318},{value:"ㅍ",atoms:"ㅍ",roman:"p",freq:.045664},{value:"ㅎ",atoms:"ㅎ",roman:"t",freq:.002595}])}(o||(o={})),Object.freeze(o)}}; //# sourceMappingURL=Korean-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/Korean-ts.js.map b/server/chunk/lang/Korean-ts.js.map index 2b3ddb2e..405c3285 100644 --- a/server/chunk/lang/Korean-ts.js.map +++ b/server/chunk/lang/Korean-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/Korean-ts.js","sources":["../chunk/lang/Korean-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/Korean.ts?"],"names":["Korean","weightScaling","super","INITIALIZE","ij","mj","fj","flatMap","jamos","atoms","split","freeze","map","atom","DUB_KEYBOARD","join","Object","Dubeolsik","prototype","SEB_KEYBOARD","INITIALS","value","MEDIALS","FINALS","Sebeolsik","roman","Romanization","seqBuilder","forwardDict","forEach","initialJamo","initialIdx","medialJamo","medialIdx","finalJamo","finalIdx","offset","length","char","String","fromCharCode","seq","weight","freq"],"mappings":"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","file":"chunk/lang/Korean-ts.js","sourcesContent":["import { Lang } from \"../Lang\";\r\n\r\n\r\n/**\r\n * # Korean\r\n *\r\n * [Frequency data](https://www.koreascience.or.kr/article/JAKO201514751644957.page).\r\n * Another paper (that I didn't use): https://www.koreascience.or.kr/article/JAKO201507158233900.page\r\n *\r\n * I have normalized jamo frequency values to an average value of one.\r\n * In the above data sources there is no data for when a character has\r\n * no final jamo. I looked at [this](https://en.wiktionary.org/wiki/Wiktionary:Frequency_lists/Korean_5800)\r\n * to make an estimate for that value.\r\n *\r\n * https://wikipedia.org/wiki/Hangul_consonant_and_vowel_tables#Hangul_syllables\r\n * https://wikipedia.org/wiki/Korean_language_and_computers#Hangul_in_Unicode\r\n * https://wikipedia.org/wiki/Hangul_Jamo_(Unicode_block)\r\n */\r\nexport namespace Korean {\r\n\r\n\t/**\r\n\t * # Dubeolsik (3-row layout)\r\n\t *\r\n\t * https://wikipedia.org/wiki/Keyboard_layout#Dubeolsik\r\n\t * https://www.branah.com/korean\r\n\t */\r\n\texport class Dubeolsik extends Lang {\r\n\t\tprivate static readonly DUB_KEYBOARD = Object.freeze({\r\n\t\t\t\"\": \"\",\r\n\t\t\t\"ㅂ\": \"q\", \"ㅈ\": \"w\", \"ㄷ\": \"e\", \"ㄱ\": \"r\", \"ㅅ\": \"t\",\r\n\t\t\t\"ㅛ\": \"y\", \"ㅕ\": \"u\", \"ㅑ\": \"i\", \"ㅐ\": \"o\", \"ㅔ\": \"p\",\r\n\t\t\t\"ㅁ\": \"a\", \"ㄴ\": \"s\", \"ㅇ\": \"d\", \"ㄹ\": \"f\", \"ㅎ\": \"g\",\r\n\t\t\t\"ㅗ\": \"h\", \"ㅓ\": \"j\", \"ㅏ\": \"k\", \"ㅣ\": \"l\",\r\n\t\t\t\"ㅋ\": \"z\", \"ㅌ\": \"x\", \"ㅊ\": \"c\", \"ㅍ\": \"v\", \"ㅠ\": \"b\",\r\n\t\t\t\"ㅜ\": \"n\", \"ㅡ\": \"m\",\r\n\t\t\t\"ㅃ\": \"Q\", \"ㅉ\": \"W\", \"ㄸ\": \"E\", \"ㄲ\": \"R\", \"ㅆ\": \"T\",\r\n\t\t\t\"ㅒ\": \"O\", \"ㅖ\": \"P\",\r\n\t\t});\r\n\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"kore-dub\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn INITIALIZE((ij, mj, fj) => {\r\n\t\t\t\ttype Atoms = Array;\r\n\t\t\t\tconst atoms = ([ij, mj, fj].flatMap((jamos) => jamos.atoms.split(\"\")) as Atoms).freeze();\r\n\t\t\t\treturn atoms.map((atom) => Dubeolsik.DUB_KEYBOARD[atom]).join(\"\");\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tDubeolsik as Lang.ClassIf;\r\n\tObject.freeze(Dubeolsik);\r\n\tObject.freeze(Dubeolsik.prototype);\r\n\r\n\r\n\t/**\r\n\t * # Sebeolsik (5-row layout)\r\n\t *\r\n\t * \\*Note: the branah link below is to an earlier version of\r\n\t * Sebeolsik, [Sebeolsik 390](https://wikipedia.org/wiki/Keyboard_layout#Sebeolsik_390).\r\n\t *\r\n\t * https://wikipedia.org/wiki/Keyboard_layout#Sebeolsik_Final\r\n\t * https://www.branah.com/sebeolsik\r\n\t */\r\n\texport class Sebeolsik extends Lang {\r\n\t\tprivate static readonly SEB_KEYBOARD = Object.freeze({\r\n\t\t\t// Finals and consonant clusters are found on the left.\r\n\t\t\tFINALS: {\r\n\t\t\t\t\"\": \"\",\r\n\t\t\t\t\"ㅎ\": \"1\", \"ㅆ\": \"2\", \"ㅂ\": \"3\", // 1-row\r\n\t\t\t\t\"ㅅ\": \"q\", \"ㄹ\": \"w\", // q-row\r\n\t\t\t\t\"ㅇ\": \"a\", \"ㄴ\": \"s\", // a-row\r\n\t\t\t\t\"ㅁ\": \"z\", \"ㄱ\": \"x\", // z-row\r\n\t\t\t\t\"ㄲ\": \"!\", \"ㄺ\": \"@\", \"ㅈ\": \"#\", \"ㄿ\": \"$\", \"ㄾ\": \"%\", // !-row\r\n\t\t\t\t\"ㅍ\": \"Q\", \"ㅌ\": \"W\", \"ㄵ\": \"E\", \"ㅀ\": \"R\", \"ㄽ\": \"T\", // Q-row\r\n\t\t\t\t\"ㄷ\": \"A\", \"ㄶ\": \"S\", \"ㄼ\": \"D\", \"ㄻ\": \"F\", // A-row\r\n\t\t\t\t\"ㅊ\": \"Z\", \"ㅄ\": \"X\", \"ㅋ\": \"C\", \"ㄳ\": \"V\", // Z-row\r\n\t\t\t},\r\n\t\t\t// Medials are found in the middle.\r\n\t\t\tMEDIALS: {\r\n\t\t\t\t\"ㅛ\": \"4\", \"ㅠ\": \"5\", \"ㅑ\": \"6\", \"ㅖ\": \"7\", \"ㅢ\": \"8\", // \"ㅜ\": \"9\",\r\n\t\t\t\t\"ㅕ\": \"e\", \"ㅐ\": \"r\", \"ㅓ\": \"t\", // q-row\r\n\t\t\t\t\"ㅣ\": \"d\", \"ㅏ\": \"f\", \"ㅡ\": \"g\", // a-row\r\n\t\t\t\t\"ㅔ\": \"c\", \"ㅗ\": \"v\", \"ㅜ\": \"b\", // z-row\r\n\t\t\t\t\"ㅒ\": \"G\",\r\n\t\t\t\t// Things that don't have dedicated keys:\r\n\t\t\t\t\"ㅘ\": \"vf\", \"ㅙ\": \"vr\", \"ㅚ\": \"vd\", \"ㅝ\": \"bt\", \"ㅞ\": \"bc\", \"ㅟ\": \"bd\",\r\n\t\t\t},\r\n\t\t\t// Initials are found on the right.\r\n\t\t\tINITIALS: {\r\n\t\t\t\t\"ㅋ\": \"0\", // 1-row\r\n\t\t\t\t\"ㄹ\": \"y\", \"ㄷ\": \"u\", \"ㅁ\": \"i\", \"ㅊ\": \"o\", \"ㅍ\": \"p\", // q-row\r\n\t\t\t\t\"ㄴ\": \"h\", \"ㅇ\": \"j\", \"ㄱ\": \"k\", \"ㅈ\": \"l\", \"ㅂ\": \";\", \"ㅌ\": \"'\", // a-row\r\n\t\t\t\t\"ㅅ\": \"n\", \"ㅎ\": \"m\", // z-row\r\n\t\t\t\t\"ㄲ\": \"!\", // !-row\r\n\t\t\t\t// NOTE: If we included numbers, this is where they would go.\r\n\t\t\t\t// Things that don't have dedicated keys:\r\n\t\t\t\t\"ㄸ\": \"uu\", \"ㅃ\": \";;\", \"ㅆ\": \"nn\", \"ㅉ\": \"l\",\r\n\t\t\t},\r\n\t\t});\r\n\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"kore-sub\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn INITIALIZE((ij, mj, fj) => {\r\n\t\t\t\treturn Sebeolsik.SEB_KEYBOARD.INITIALS[ij.value]\r\n\t\t\t\t\t+ Sebeolsik.SEB_KEYBOARD.MEDIALS[mj.value]\r\n\t\t\t\t\t+ Sebeolsik.SEB_KEYBOARD.FINALS[fj.value];\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tSebeolsik as Lang.ClassIf;\r\n\tObject.freeze(Sebeolsik);\r\n\tObject.freeze(Sebeolsik.prototype);\r\n\r\n\r\n\t/**\r\n\t * # Korean Romanization\r\n\t *\r\n\t * https://wikipedia.org/wiki/Revised_Romanization_of_Korean#Transcription_rules\r\n\t * https://wikipedia.org/wiki/Romanization_of_Korean#Systems\r\n\t * https://www.korean.go.kr/front_eng/roman/roman_01.do\r\n\t */\r\n\texport class Romanization extends Lang {\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"kore-rom\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn INITIALIZE((ij, mj, fj) => {\r\n\t\t\t\treturn ij.roman + mj.roman + fj.roman;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tRomanization as Lang.ClassIf;\r\n\tObject.freeze(Romanization);\r\n\tObject.freeze(Romanization.prototype);\r\n\r\n\r\n\tconst UNICODE_HANGUL_SYLLABLES_BASE = 0xAC00;\r\n\r\n\ttype JamoDesc = Readonly<{\r\n\t\tvalue: string; // not used. for readability.\r\n\t\tatoms: string; // used for keyboard mapping.\r\n\t\troman: string;\r\n\t}>;\r\n\r\n\t/**\r\n\t * Helper for each implementation's constructors.\r\n\t *\r\n\t * @param seqBuilder - Return a {@link Lang.Seq} based on the three\r\n\t * parts of a syllable (passed in to this as parameters).\r\n\t * @returns A transformation of initializer information to a form\r\n\t * suitable for consumption by the {@link Lang} constructor.\r\n\t */\r\n\tconst INITIALIZE = (\r\n\t\tseqBuilder: SeqBuilder,\r\n\t): Lang.WeightedForwardMap => {\r\n\t\tconst forwardDict: Lang.WeightedForwardMap = {};\r\n\t\tINITIALS.forEach((initialJamo, initialIdx) => {\r\n\t\t\tMEDIALS.forEach((medialJamo, medialIdx) => {\r\n\t\t\t\tFINALS.forEach((finalJamo, finalIdx) => {\r\n\t\t\t\t\t// base + f + F(m + Mi)\r\n\t\t\t\t\tlet offset = initialIdx;\r\n\t\t\t\t\toffset = MEDIALS.length * offset + medialIdx;\r\n\t\t\t\t\toffset = FINALS.length * offset + finalIdx;\r\n\t\t\t\t\tconst char = String.fromCharCode(UNICODE_HANGUL_SYLLABLES_BASE + offset);\r\n\t\t\t\t\tforwardDict[char] = {\r\n\t\t\t\t\t\tseq: seqBuilder(initialJamo, medialJamo, finalJamo),\r\n\t\t\t\t\t\tweight: initialJamo.freq * medialJamo.freq * finalJamo.freq,\r\n\t\t\t\t\t\t// TODO.impl remove the above fallback once weights dict gets implemented.\r\n\t\t\t\t\t\t// Also then fix the internal `averageWeight` argument in each implementation.\r\n\t\t\t\t\t};\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t});\r\n\t\treturn forwardDict;\r\n\t};\r\n\ttype SeqBuilder = { (\r\n\t\tij: typeof INITIALS[number],\r\n\t\tmj: typeof MEDIALS[number],\r\n\t\tfj: typeof FINALS[number],\r\n\t): Lang.Seq, };\r\n\r\n\t/**\r\n\t * # Initial Jamo (Choseong)\r\n\t */\r\n\tconst INITIALS = Object.freeze([\r\n\t\t{ value: \"ㄱ\", atoms: \"ㄱ\", roman: \"g\" , freq: 2.508206 },\r\n\t\t{ value: \"ㄲ\", atoms: \"ㄱㄱ\", roman: \"kk\", freq: 0.139215 },\r\n\t\t{ value: \"ㄴ\", atoms: \"ㄴ\", roman: \"n\" , freq: 1.278464 },\r\n\t\t{ value: \"ㄷ\", atoms: \"ㄷ\", roman: \"d\" , freq: 1.715174 },\r\n\t\t{ value: \"ㄸ\", atoms: \"ㄷㄷ\", roman: \"tt\", freq: 0.155508 },\r\n\t\t{ value: \"ㄹ\", atoms: \"ㄹ\", roman: \"r\" , freq: 1.306990 },\r\n\t\t{ value: \"ㅁ\", atoms: \"ㅁ\", roman: \"m\" , freq: 0.920276 },\r\n\t\t{ value: \"ㅂ\", atoms: \"ㅂ\", roman: \"b\" , freq: 0.768992 },\r\n\t\t{ value: \"ㅃ\", atoms: \"ㅂㅂ\", roman: \"pp\", freq: 0.034349 },\r\n\t\t{ value: \"ㅅ\", atoms: \"ㅅ\", roman: \"s\" , freq: 1.620272 },\r\n\t\t{ value: \"ㅆ\", atoms: \"ㅅㅅ\", roman: \"ss\", freq: 0.062508 },\r\n\t\t{ value: \"ㅇ\", atoms: \"ㅇ\", roman: \"-\" , freq: 4.509884 }, // TODO.learn \"-\" ? see wikipedia\r\n\t\t{ value: \"ㅈ\", atoms: \"ㅈ\", roman: \"j\" , freq: 1.603205 },\r\n\t\t{ value: \"ㅉ\", atoms: \"ㅈㅈ\", roman: \"jj\", freq: 0.043767 },\r\n\t\t{ value: \"ㅊ\", atoms: \"ㅊ\", roman: \"ch\", freq: 0.428943 },\r\n\t\t{ value: \"ㅋ\", atoms: \"ㅋ\", roman: \"k\" , freq: 0.103017 },\r\n\t\t{ value: \"ㅌ\", atoms: \"ㅌ\", roman: \"t\" , freq: 0.228492 },\r\n\t\t{ value: \"ㅍ\", atoms: \"ㅍ\", roman: \"p\" , freq: 0.212015 },\r\n\t\t{ value: \"ㅎ\", atoms: \"ㅎ\", roman: \"h\" , freq: 1.360725 },\r\n\t]);\r\n\tINITIALS as TU.RoArr; // type-check\r\n\r\n\t/**\r\n\t * # Medial Jamo (Jungseong)\r\n\t */\r\n\tconst MEDIALS = Object.freeze([\r\n\t\t{ value: \"ㅏ\", atoms: \"ㅏ\", roman: \"a\" , freq: 4.559484 },\r\n\t\t{ value: \"ㅐ\", atoms: \"ㅐ\", roman: \"ae\" , freq: 0.970054 },\r\n\t\t{ value: \"ㅑ\", atoms: \"ㅑ\", roman: \"ya\" , freq: 0.150865 },\r\n\t\t{ value: \"ㅒ\", atoms: \"ㅒ\", roman: \"yae\", freq: 0.008922 },\r\n\t\t{ value: \"ㅓ\", atoms: \"ㅓ\", roman: \"eo\" , freq: 2.231959 },\r\n\t\t{ value: \"ㅔ\", atoms: \"ㅔ\", roman: \"e\" , freq: 0.932004 },\r\n\t\t{ value: \"ㅕ\", atoms: \"ㅕ\", roman: \"yeo\", freq: 1.000171 },\r\n\t\t{ value: \"ㅖ\", atoms: \"ㅖ\", roman: \"ye\" , freq: 0.105095 },\r\n\t\t{ value: \"ㅗ\", atoms: \"ㅗ\", roman: \"o\" , freq: 2.040807 },\r\n\t\t{ value: \"ㅘ\", atoms: \"ㅗㅏ\", roman: \"wa\" , freq: 0.385060 },\r\n\t\t{ value: \"ㅙ\", atoms: \"ㅗㅐ\", roman: \"wae\", freq: 0.026550 },\r\n\t\t{ value: \"ㅚ\", atoms: \"ㅗㅣ\", roman: \"oe\" , freq: 0.236245 },\r\n\t\t{ value: \"ㅛ\", atoms: \"ㅛ\", roman: \"yo\" , freq: 0.223892 },\r\n\t\t{ value: \"ㅜ\", atoms: \"ㅜ\", roman: \"u\" , freq: 1.402448 },\r\n\t\t{ value: \"ㅝ\", atoms: \"ㅜㅓ\", roman: \"wo\" , freq: 0.135821 },\r\n\t\t{ value: \"ㅞ\", atoms: \"ㅜㅔ\", roman: \"we\" , freq: 0.004818 },\r\n\t\t{ value: \"ㅟ\", atoms: \"ㅜㅣ\", roman: \"wi\" , freq: 0.112462 },\r\n\t\t{ value: \"ㅠ\", atoms: \"ㅠ\", roman: \"yu\" , freq: 0.111584 },\r\n\t\t{ value: \"ㅡ\", atoms: \"ㅡ\", roman: \"eu\" , freq: 2.727101 },\r\n\t\t{ value: \"ㅢ\", atoms: \"ㅡㅣ\", roman: \"ui\" , freq: 0.425688 },\r\n\t\t{ value: \"ㅣ\", atoms: \"ㅣ\", roman: \"i\" , freq: 3.208973 },\r\n\t]);\r\n\tMEDIALS as TU.RoArr; // type-check\r\n\r\n\t/**\r\n\t * # Final Jamo (Jongseong)\r\n\t */\r\n\tconst FINALS = Object.freeze([\r\n\t\t{ value: \"\", atoms: \"\", roman: \"\" , freq: 17.061190 },\r\n\t\t{ value: \"ㄱ\", atoms: \"ㄱ\", roman: \"k\" , freq: 1.109483 },\r\n\t\t{ value: \"ㄲ\", atoms: \"ㄱㄱ\", roman: \"k\" , freq: 0.016359 },\r\n\t\t{ value: \"ㄳ\", atoms: \"ㄱㅅ\", roman: \"kt\", freq: 0.000962 },\r\n\t\t{ value: \"ㄴ\", atoms: \"ㄴ\", roman: \"n\" , freq: 3.580456 },\r\n\t\t{ value: \"ㄵ\", atoms: \"ㄴㅈ\", roman: \"nt\", freq: 0.007522 },\r\n\t\t{ value: \"ㄶ\", atoms: \"ㄴㅎ\", roman: \"nt\", freq: 0.081892 },\r\n\t\t{ value: \"ㄷ\", atoms: \"ㄷ\", roman: \"t\" , freq: 0.049969 },\r\n\t\t{ value: \"ㄹ\", atoms: \"ㄹ\", roman: \"l\" , freq: 2.094454 },\r\n\t\t{ value: \"ㄺ\", atoms: \"ㄹㄱ\", roman: \"lk\", freq: 0.019761 },\r\n\t\t{ value: \"ㄻ\", atoms: \"ㄹㅁ\", roman: \"lm\", freq: 0.011711 },\r\n\t\t{ value: \"ㄼ\", atoms: \"ㄹㅂ\", roman: \"lp\", freq: 0.005885 },\r\n\t\t{ value: \"ㄽ\", atoms: \"ㄹㅅ\", roman: \"lt\", freq: 0.000013 },\r\n\t\t{ value: \"ㄾ\", atoms: \"ㄹㅌ\", roman: \"lt\", freq: 0.000353 },\r\n\t\t{ value: \"ㄿ\", atoms: \"ㄹㅍ\", roman: \"lp\", freq: 0.000210 },\r\n\t\t{ value: \"ㅀ\", atoms: \"ㄹㅎ\", roman: \"lt\", freq: 0.008150 },\r\n\t\t{ value: \"ㅁ\", atoms: \"ㅁ\", roman: \"m\" , freq: 0.697015 },\r\n\t\t{ value: \"ㅂ\", atoms: \"ㅂ\", roman: \"p\" , freq: 0.360526 },\r\n\t\t{ value: \"ㅄ\", atoms: \"ㅂㅅ\", roman: \"pt\", freq: 0.069739 },\r\n\t\t{ value: \"ㅅ\", atoms: \"ㅅ\", roman: \"t\" , freq: 0.308934 },\r\n\t\t{ value: \"ㅆ\", atoms: \"ㅅㅅ\", roman: \"t\" , freq: 0.590913 },\r\n\t\t{ value: \"ㅇ\", atoms: \"ㅇ\", roman: \"ng\", freq: 1.663950 },\r\n\t\t{ value: \"ㅈ\", atoms: \"ㅈ\", roman: \"t\" , freq: 0.046297 },\r\n\t\t{ value: \"ㅊ\", atoms: \"ㅊ\", roman: \"t\" , freq: 0.026808 },\r\n\t\t{ value: \"ㅋ\", atoms: \"ㅋ\", roman: \"k\" , freq: 0.000814 },\r\n\t\t{ value: \"ㅌ\", atoms: \"ㅌ\", roman: \"t\" , freq: 0.068318 },\r\n\t\t{ value: \"ㅍ\", atoms: \"ㅍ\", roman: \"p\" , freq: 0.045664 },\r\n\t\t{ value: \"ㅎ\", atoms: \"ㅎ\", roman: \"t\" , freq: 0.002595 },\r\n\t]);\r\n\tFINALS as TU.RoArr; // type-check\r\n}\r\nObject.freeze(Korean);"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/Ngrams-ts.js b/server/chunk/lang/Ngrams-ts.js index ab0e63f9..12d9053f 100644 --- a/server/chunk/lang/Ngrams-ts.js +++ b/server/chunk/lang/Ngrams-ts.js @@ -1,2 +1,2 @@ -exports.id=273,exports.ids=[273],exports.modules={492:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Ngrams:()=>n});var r=a(115);const i=JSON.parse('{"in":22.964,"th":22.691,"er":20.307,"re":18.511,"he":18.141,"an":17.958,"on":17.113,"es":16.579,"or":14.649,"te":13.789,"at":13.731,"ti":13.599,"st":13.411,"en":13.17,"nt":12.217,"ar":11.712,"to":11.677,"nd":11.586,"al":10.907,"it":10.354,"se":9.908,"ed":9.797,"is":9.63,"ea":9.529,"ng":9.313,"ou":9.013,"le":8.949,"co":8.941,"me":8.68,"ne":8.249,"ri":8.203,"ro":7.939,"de":7.894,"ra":7.859,"io":7.813,"ic":7.778,"li":7.706,"of":7.657,"as":7.419,"et":7.293,"ve":7.22,"ta":7.213,"si":7.066,"ha":7.019,"ma":6.858,"ec":6.786,"om":6.519,"ce":6.469,"el":6.461,"ll":6.236,"ca":6.126,"ur":6.125,"la":6.01,"ch":5.821,"hi":5.799,"di":5.673,"ho":5.628,"fo":5.578,"ns":5.529,"ot":5.522,"ac":5.45,"na":5.423,"rs":5.365,"so":5.36,"pr":5.326,"rt":5.31,"sa":5.304,"ss":5.294,"us":5.226,"no":5.216,"il":5.213,"ts":5.106,"em":5.072,"ct":4.923,"ge":4.855,"lo":4.831,"ee":4.676,"be":4.635,"tr":4.599,"ni":4.32,"pe":4.28,"ie":4.247,"pa":4.241,"nc":4.214,"po":4.038,"ol":4.012,"da":3.966,"ad":3.952,"vi":3.942,"un":3.916,"am":3.901,"ut":3.833,"wi":3.66,"mo":3.636,"sh":3.632,"yo":3.452,"ai":3.422,"ew":3.407,"ow":3.402,"os":3.376,"fi":3.365,"ep":3.311,"tt":3.274,"mi":3.252,"op":3.25,"ia":3.244,"we":3.19,"ag":3.137,"su":3.12,"id":3.05,"do":3.016,"oo":2.988,"ir":2.903,"sp":2.898,"pl":2.896,"sc":2.876,"ay":2.853,"wa":2.831,"ig":2.769,"ei":2.749,"ry":2.738,"ly":2.734,"tu":2.694,"ul":2.683,"iv":2.646,"im":2.636,"ab":2.621,"ty":2.592,"ci":2.575,"ap":2.564,"ev":2.551,"eo":2.516,"ef":2.511,"od":2.48,"fr":2.46,"rd":2.45,"bo":2.433,"rc":2.432,"mp":2.429,"ga":2.417,"bl":2.411,"ke":2.405,"ds":2.404,"ck":2.347,"oc":2.329,"ba":2.321,"ls":2.309,"rm":2.306,"fe":2.289,"ex":2.275,"ft":2.244,"av":2.164,"eb":2.158,"ld":2.152,"wh":2.051,"gh":2.051,"gr":2.049,"gi":2.045,"wo":2.005,"ov":2.004,"cl":1.982,"rn":1.969,"bu":1.968,"eg":1.961,"fa":1.947,"go":1.877,"dt":1.87,"lt":1.858,"uc":1.823,"if":1.815,"ys":1.801,"ht":1.794,"du":1.745,"va":1.714,"um":1.705,"cr":1.691,"pp":1.682,"by":1.679,"pi":1.64,"cu":1.629,"og":1.625,"up":1.599,"ff":1.521,"nf":1.487,"bi":1.484,"ki":1.468,"au":1.467,"lu":1.467,"ob":1.451,"ru":1.444,"ue":1.441,"rr":1.441,"ey":1.434,"ip":1.411,"qu":1.411,"oa":1.402,"ua":1.401,"ms":1.395,"tw":1.383,"mm":1.34}');var o=a.t(i,2);const s=JSON.parse('{"the":28.751,"ing":15.313,"and":15.216,"ion":13.975,"tio":11.453,"ent":11.181,"for":9.201,"ati":8.864,"ter":7.576,"ate":6.996,"ers":6.453,"res":5.92,"her":5.889,"est":5.657,"com":5.647,"pro":5.586,"ere":5.36,"all":5.351,"int":5.342,"men":5.337,"you":5.258,"ons":5.171,"our":5.159,"con":5.023,"are":4.962,"tha":4.892,"ver":4.872,"ess":4.817,"thi":4.681,"rea":4.652,"sta":4.528,"tin":4.392,"hat":4.254,"ist":4.246,"ect":4.244,"ort":4.223,"ear":4.221,"ine":4.187,"age":4.185,"his":4.086,"ted":3.994,"ont":3.989,"nce":3.921,"sto":3.877,"ith":3.867,"nte":3.807,"sin":3.782,"tor":3.777,"ore":3.736,"lin":3.706,"ive":3.671,"ite":3.595,"wit":3.57,"not":3.524,"nth":3.512,"tra":3.43,"ome":3.43,"ica":3.427,"per":3.412,"art":3.381,"ste":3.351,"cti":3.302,"oft":3.261,"oth":3.246,"ice":3.227,"out":3.19,"ill":3.101,"ide":3.068,"eth":3.068,"ies":3.066,"one":3.059,"ser":3.025,"eco":3.024,"era":3.003,"str":2.999,"eve":2.975,"din":2.945,"rat":2.927,"ona":2.924,"ces":2.92,"edi":2.907,"iti":2.898,"eri":2.891,"ran":2.832,"san":2.811,"ity":2.794,"oun":2.785,"nal":2.767,"use":2.748,"ure":2.737,"rin":2.728,"ame":2.726,"act":2.725,"igh":2.723,"ese":2.713,"ave":2.71,"sti":2.709,"nts":2.698,"hes":2.685,"sit":2.673,"der":2.664,"fth":2.66,"les":2.65,"man":2.643,"ant":2.637,"ind":2.622,"new":2.574,"pri":2.573,"ree":2.57,"ble":2.557,"ast":2.555,"nta":2.551,"tur":2.541,"por":2.534,"ght":2.525,"ain":2.523,"anc":2.511,"cha":2.51,"eas":2.502,"par":2.483,"ove":2.48,"nde":2.452,"rom":2.451,"rec":2.449,"ert":2.442,"lan":2.442,"cal":2.438,"sof":2.414,"can":2.403,"orm":2.385,"tes":2.379,"ost":2.368,"cat":2.352,"son":2.349,"tic":2.334,"end":2.333,"hea":2.332,"ina":2.329,"red":2.326,"wor":2.324,"ber":2.31,"lic":2.305,"han":2.304,"mat":2.302,"tat":2.287,"hin":2.282,"nes":2.275,"pre":2.272,"sho":2.261,"ren":2.258,"ein":2.258,"eme":2.242,"ric":2.239,"ust":2.234,"fro":2.232,"rth":2.231,"inc":2.231,"eat":2.23,"ase":2.216,"nti":2.212,"ard":2.21,"rch":2.197,"ndi":2.195,"lea":2.187,"tan":2.177,"ssi":2.17,"nin":2.147,"min":2.133,"ail":2.126,"omp":2.122,"ins":2.106,"cou":2.1,"ell":2.096,"erv":2.095,"tal":2.093,"enc":2.092,"ass":2.089,"tth":2.08,"lle":2.071,"ele":2.052,"mor":2.05,"ean":2.039,"sth":2.033,"tem":2.032,"sea":2.026,"rma":2.019,"als":2.008,"und":2.005,"pla":2.004,"ple":2.002,"eal":1.992,"rie":1.985,"ema":1.973,"ali":1.949,"nda":1.946,"ack":1.942,"hen":1.938,"ial":1.937,"ord":1.929,"ana":1.927,"arc":1.923,"ori":1.905,"che":1.891,"tho":1.887,"eof":1.886,"lis":1.886,"dis":1.877,"een":1.876,"car":1.876,"ngt":1.875,"ire":1.869,"ead":1.866,"eto":1.854,"ene":1.853,"att":1.848,"nto":1.846,"omm":1.844,"pos":1.838,"abl":1.832,"lat":1.832,"nds":1.819,"dat":1.813,"lit":1.81,"gra":1.802,"mes":1.796,"hec":1.793,"kin":1.791,"esa":1.786,"vie":1.784,"ote":1.776,"dth":1.776,"ern":1.776,"sio":1.774,"ono":1.773,"esi":1.755,"inf":1.748,"mer":1.746,"nfo":1.744,"hav":1.739,"mar":1.738,"chi":1.735,"ten":1.724,"uni":1.714,"ime":1.713,"nat":1.711,"des":1.711,"hou":1.708,"rit":1.699,"tim":1.697,"den":1.686,"sco":1.682,"ans":1.682,"hel":1.675,"nst":1.67,"rti":1.668,"rep":1.668,"eso":1.666,"tot":1.66,"any":1.656,"tri":1.651,"ret":1.637,"fin":1.634,"spe":1.634,"duc":1.633,"ntr":1.629,"mbe":1.628,"usi":1.619,"tiv":1.619,"ner":1.618,"ous":1.614,"was":1.612,"hem":1.602,"ens":1.601,"ale":1.591,"day":1.59,"unt":1.587,"tte":1.586,"ngs":1.571,"tre":1.567,"ral":1.564,"rou":1.563,"sed":1.562,"nge":1.56,"edt":1.559,"wil":1.559,"ini":1.546,"nit":1.543,"ora":1.538,"har":1.535,"tof":1.523,"las":1.52,"mon":1.517,"ton":1.516,"ile":1.514,"ope":1.511,"fre":1.507,"ors":1.498,"ven":1.497,"eli":1.494,"uct":1.493,"shi":1.493,"abo":1.491,"ook":1.487,"gin":1.486,"evi":1.483,"ang":1.483,"ary":1.478,"ond":1.476,"rac":1.471,"app":1.47,"ses":1.461,"sen":1.459,"own":1.458,"ani":1.458,"dit":1.458,"iss":1.455,"efo":1.454,"ork":1.451,"ndt":1.447,"tel":1.445,"sse":1.439,"log":1.438,"hei":1.435,"epr":1.43,"isi":1.43,"rel":1.428,"mai":1.427,"off":1.423,"top":1.42,"tis":1.416,"iew":1.416,"cen":1.412,"net":1.41,"cia":1.408,"low":1.402,"nan":1.4,"erm":1.399,"vel":1.396,"has":1.395,"wer":1.394,"onl":1.393,"oul":1.392,"ose":1.389,"dto":1.389,"ade":1.387,"ake":1.387,"hot":1.385,"let":1.379,"cre":1.37,"war":1.366,"oll":1.363,"ery":1.36,"fic":1.358,"gen":1.344,"ien":1.343,"lar":1.337,"oli":1.335,"vid":1.334,"rev":1.333,"mpl":1.333,"ach":1.33,"ari":1.328,"its":1.327,"ish":1.326,"ndo":1.324,"ews":1.324,"ili":1.323,"vic":1.321,"eda":1.31,"lec":1.309,"bou":1.309,"spo":1.304,"ult":1.304,"rvi":1.303,"but":1.303,"tar":1.301,"nga":1.301,"hom":1.3,"fer":1.299,"sel":1.297,"acc":1.289,"ick":1.287,"hep":1.286,"eed":1.286,"ges":1.283,"ian":1.28,"sec":1.278,"gre":1.278,"ory":1.275,"rig":1.273,"tai":1.268,"rst":1.267,"cor":1.263,"pag":1.26,"rre":1.254,"dre":1.245,"ela":1.244,"ata":1.243,"emo":1.241,"alt":1.24}');var n,c=a.t(s,2);Object.freeze(o),Object.freeze(c),function(e){class t extends r.U{constructor(e){super("ngram2",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(o)}}e.Ngram2=t,Object.freeze(t),Object.freeze(t.prototype);class a extends r.U{constructor(e){super("ngram3",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(c)}}e.Ngram3=a,Object.freeze(a),Object.freeze(a.prototype)}(n||(n={})),Object.freeze(n)}}; +exports.id=273,exports.ids=[273],exports.modules={755:(e,t,a)=>{"use strict";a.r(t),a.d(t,{Ngrams:()=>n});var r=a(208);const i=JSON.parse('{"in":22.964,"th":22.691,"er":20.307,"re":18.511,"he":18.141,"an":17.958,"on":17.113,"es":16.579,"or":14.649,"te":13.789,"at":13.731,"ti":13.599,"st":13.411,"en":13.17,"nt":12.217,"ar":11.712,"to":11.677,"nd":11.586,"al":10.907,"it":10.354,"se":9.908,"ed":9.797,"is":9.63,"ea":9.529,"ng":9.313,"ou":9.013,"le":8.949,"co":8.941,"me":8.68,"ne":8.249,"ri":8.203,"ro":7.939,"de":7.894,"ra":7.859,"io":7.813,"ic":7.778,"li":7.706,"of":7.657,"as":7.419,"et":7.293,"ve":7.22,"ta":7.213,"si":7.066,"ha":7.019,"ma":6.858,"ec":6.786,"om":6.519,"ce":6.469,"el":6.461,"ll":6.236,"ca":6.126,"ur":6.125,"la":6.01,"ch":5.821,"hi":5.799,"di":5.673,"ho":5.628,"fo":5.578,"ns":5.529,"ot":5.522,"ac":5.45,"na":5.423,"rs":5.365,"so":5.36,"pr":5.326,"rt":5.31,"sa":5.304,"ss":5.294,"us":5.226,"no":5.216,"il":5.213,"ts":5.106,"em":5.072,"ct":4.923,"ge":4.855,"lo":4.831,"ee":4.676,"be":4.635,"tr":4.599,"ni":4.32,"pe":4.28,"ie":4.247,"pa":4.241,"nc":4.214,"po":4.038,"ol":4.012,"da":3.966,"ad":3.952,"vi":3.942,"un":3.916,"am":3.901,"ut":3.833,"wi":3.66,"mo":3.636,"sh":3.632,"yo":3.452,"ai":3.422,"ew":3.407,"ow":3.402,"os":3.376,"fi":3.365,"ep":3.311,"tt":3.274,"mi":3.252,"op":3.25,"ia":3.244,"we":3.19,"ag":3.137,"su":3.12,"id":3.05,"do":3.016,"oo":2.988,"ir":2.903,"sp":2.898,"pl":2.896,"sc":2.876,"ay":2.853,"wa":2.831,"ig":2.769,"ei":2.749,"ry":2.738,"ly":2.734,"tu":2.694,"ul":2.683,"iv":2.646,"im":2.636,"ab":2.621,"ty":2.592,"ci":2.575,"ap":2.564,"ev":2.551,"eo":2.516,"ef":2.511,"od":2.48,"fr":2.46,"rd":2.45,"bo":2.433,"rc":2.432,"mp":2.429,"ga":2.417,"bl":2.411,"ke":2.405,"ds":2.404,"ck":2.347,"oc":2.329,"ba":2.321,"ls":2.309,"rm":2.306,"fe":2.289,"ex":2.275,"ft":2.244,"av":2.164,"eb":2.158,"ld":2.152,"wh":2.051,"gh":2.051,"gr":2.049,"gi":2.045,"wo":2.005,"ov":2.004,"cl":1.982,"rn":1.969,"bu":1.968,"eg":1.961,"fa":1.947,"go":1.877,"dt":1.87,"lt":1.858,"uc":1.823,"if":1.815,"ys":1.801,"ht":1.794,"du":1.745,"va":1.714,"um":1.705,"cr":1.691,"pp":1.682,"by":1.679,"pi":1.64,"cu":1.629,"og":1.625,"up":1.599,"ff":1.521,"nf":1.487,"bi":1.484,"ki":1.468,"au":1.467,"lu":1.467,"ob":1.451,"ru":1.444,"ue":1.441,"rr":1.441,"ey":1.434,"ip":1.411,"qu":1.411,"oa":1.402,"ua":1.401,"ms":1.395,"tw":1.383,"mm":1.34}');var o=a.t(i,2);const s=JSON.parse('{"the":28.751,"ing":15.313,"and":15.216,"ion":13.975,"tio":11.453,"ent":11.181,"for":9.201,"ati":8.864,"ter":7.576,"ate":6.996,"ers":6.453,"res":5.92,"her":5.889,"est":5.657,"com":5.647,"pro":5.586,"ere":5.36,"all":5.351,"int":5.342,"men":5.337,"you":5.258,"ons":5.171,"our":5.159,"con":5.023,"are":4.962,"tha":4.892,"ver":4.872,"ess":4.817,"thi":4.681,"rea":4.652,"sta":4.528,"tin":4.392,"hat":4.254,"ist":4.246,"ect":4.244,"ort":4.223,"ear":4.221,"ine":4.187,"age":4.185,"his":4.086,"ted":3.994,"ont":3.989,"nce":3.921,"sto":3.877,"ith":3.867,"nte":3.807,"sin":3.782,"tor":3.777,"ore":3.736,"lin":3.706,"ive":3.671,"ite":3.595,"wit":3.57,"not":3.524,"nth":3.512,"tra":3.43,"ome":3.43,"ica":3.427,"per":3.412,"art":3.381,"ste":3.351,"cti":3.302,"oft":3.261,"oth":3.246,"ice":3.227,"out":3.19,"ill":3.101,"ide":3.068,"eth":3.068,"ies":3.066,"one":3.059,"ser":3.025,"eco":3.024,"era":3.003,"str":2.999,"eve":2.975,"din":2.945,"rat":2.927,"ona":2.924,"ces":2.92,"edi":2.907,"iti":2.898,"eri":2.891,"ran":2.832,"san":2.811,"ity":2.794,"oun":2.785,"nal":2.767,"use":2.748,"ure":2.737,"rin":2.728,"ame":2.726,"act":2.725,"igh":2.723,"ese":2.713,"ave":2.71,"sti":2.709,"nts":2.698,"hes":2.685,"sit":2.673,"der":2.664,"fth":2.66,"les":2.65,"man":2.643,"ant":2.637,"ind":2.622,"new":2.574,"pri":2.573,"ree":2.57,"ble":2.557,"ast":2.555,"nta":2.551,"tur":2.541,"por":2.534,"ght":2.525,"ain":2.523,"anc":2.511,"cha":2.51,"eas":2.502,"par":2.483,"ove":2.48,"nde":2.452,"rom":2.451,"rec":2.449,"ert":2.442,"lan":2.442,"cal":2.438,"sof":2.414,"can":2.403,"orm":2.385,"tes":2.379,"ost":2.368,"cat":2.352,"son":2.349,"tic":2.334,"end":2.333,"hea":2.332,"ina":2.329,"red":2.326,"wor":2.324,"ber":2.31,"lic":2.305,"han":2.304,"mat":2.302,"tat":2.287,"hin":2.282,"nes":2.275,"pre":2.272,"sho":2.261,"ren":2.258,"ein":2.258,"eme":2.242,"ric":2.239,"ust":2.234,"fro":2.232,"rth":2.231,"inc":2.231,"eat":2.23,"ase":2.216,"nti":2.212,"ard":2.21,"rch":2.197,"ndi":2.195,"lea":2.187,"tan":2.177,"ssi":2.17,"nin":2.147,"min":2.133,"ail":2.126,"omp":2.122,"ins":2.106,"cou":2.1,"ell":2.096,"erv":2.095,"tal":2.093,"enc":2.092,"ass":2.089,"tth":2.08,"lle":2.071,"ele":2.052,"mor":2.05,"ean":2.039,"sth":2.033,"tem":2.032,"sea":2.026,"rma":2.019,"als":2.008,"und":2.005,"pla":2.004,"ple":2.002,"eal":1.992,"rie":1.985,"ema":1.973,"ali":1.949,"nda":1.946,"ack":1.942,"hen":1.938,"ial":1.937,"ord":1.929,"ana":1.927,"arc":1.923,"ori":1.905,"che":1.891,"tho":1.887,"eof":1.886,"lis":1.886,"dis":1.877,"een":1.876,"car":1.876,"ngt":1.875,"ire":1.869,"ead":1.866,"eto":1.854,"ene":1.853,"att":1.848,"nto":1.846,"omm":1.844,"pos":1.838,"abl":1.832,"lat":1.832,"nds":1.819,"dat":1.813,"lit":1.81,"gra":1.802,"mes":1.796,"hec":1.793,"kin":1.791,"esa":1.786,"vie":1.784,"ote":1.776,"dth":1.776,"ern":1.776,"sio":1.774,"ono":1.773,"esi":1.755,"inf":1.748,"mer":1.746,"nfo":1.744,"hav":1.739,"mar":1.738,"chi":1.735,"ten":1.724,"uni":1.714,"ime":1.713,"nat":1.711,"des":1.711,"hou":1.708,"rit":1.699,"tim":1.697,"den":1.686,"sco":1.682,"ans":1.682,"hel":1.675,"nst":1.67,"rti":1.668,"rep":1.668,"eso":1.666,"tot":1.66,"any":1.656,"tri":1.651,"ret":1.637,"fin":1.634,"spe":1.634,"duc":1.633,"ntr":1.629,"mbe":1.628,"usi":1.619,"tiv":1.619,"ner":1.618,"ous":1.614,"was":1.612,"hem":1.602,"ens":1.601,"ale":1.591,"day":1.59,"unt":1.587,"tte":1.586,"ngs":1.571,"tre":1.567,"ral":1.564,"rou":1.563,"sed":1.562,"nge":1.56,"edt":1.559,"wil":1.559,"ini":1.546,"nit":1.543,"ora":1.538,"har":1.535,"tof":1.523,"las":1.52,"mon":1.517,"ton":1.516,"ile":1.514,"ope":1.511,"fre":1.507,"ors":1.498,"ven":1.497,"eli":1.494,"uct":1.493,"shi":1.493,"abo":1.491,"ook":1.487,"gin":1.486,"evi":1.483,"ang":1.483,"ary":1.478,"ond":1.476,"rac":1.471,"app":1.47,"ses":1.461,"sen":1.459,"own":1.458,"ani":1.458,"dit":1.458,"iss":1.455,"efo":1.454,"ork":1.451,"ndt":1.447,"tel":1.445,"sse":1.439,"log":1.438,"hei":1.435,"epr":1.43,"isi":1.43,"rel":1.428,"mai":1.427,"off":1.423,"top":1.42,"tis":1.416,"iew":1.416,"cen":1.412,"net":1.41,"cia":1.408,"low":1.402,"nan":1.4,"erm":1.399,"vel":1.396,"has":1.395,"wer":1.394,"onl":1.393,"oul":1.392,"ose":1.389,"dto":1.389,"ade":1.387,"ake":1.387,"hot":1.385,"let":1.379,"cre":1.37,"war":1.366,"oll":1.363,"ery":1.36,"fic":1.358,"gen":1.344,"ien":1.343,"lar":1.337,"oli":1.335,"vid":1.334,"rev":1.333,"mpl":1.333,"ach":1.33,"ari":1.328,"its":1.327,"ish":1.326,"ndo":1.324,"ews":1.324,"ili":1.323,"vic":1.321,"eda":1.31,"lec":1.309,"bou":1.309,"spo":1.304,"ult":1.304,"rvi":1.303,"but":1.303,"tar":1.301,"nga":1.301,"hom":1.3,"fer":1.299,"sel":1.297,"acc":1.289,"ick":1.287,"hep":1.286,"eed":1.286,"ges":1.283,"ian":1.28,"sec":1.278,"gre":1.278,"ory":1.275,"rig":1.273,"tai":1.268,"rst":1.267,"cor":1.263,"pag":1.26,"rre":1.254,"dre":1.245,"ela":1.244,"ata":1.243,"emo":1.241,"alt":1.24}');var n,c=a.t(s,2);Object.freeze(o),Object.freeze(c),function(e){class t extends r.U{constructor(e){super("ngram2",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(o)}}e.Ngram2=t,Object.freeze(t),Object.freeze(t.prototype);class a extends r.U{constructor(e){super("ngram3",e)}static BUILD(){return r.U.BuildUtils.WORD_FOR_WORD(c)}}e.Ngram3=a,Object.freeze(a),Object.freeze(a.prototype)}(n||(n={})),Object.freeze(n)}}; //# sourceMappingURL=Ngrams-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/Ngrams-ts.js.map b/server/chunk/lang/Ngrams-ts.js.map index d62f38ad..cf734caf 100644 --- a/server/chunk/lang/Ngrams-ts.js.map +++ b/server/chunk/lang/Ngrams-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/Ngrams-ts.js","sources":["../chunk/lang/Ngrams-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/Ngrams.ts?"],"names":["Ngrams","Object","freeze","Lang","weightScaling","super","Ngram2","prototype","Ngram3"],"mappings":"4+NAQiBA,E,WALjBC,OAAOC,OAAO,GACdD,OAAOC,OAAO,GAIP,SAAU,GAKT,gBAAqBC,EAAA,EACpB,YAAYC,GAClBC,MAAM,SAAUD,GAAA,eAGhB,OAAOD,EAAA,2BAA8B,IALhC,EAAMG,SASbL,OAAOC,OAAOI,GACdL,OAAOC,OAAOI,EAAOC,WAKd,gBAAqBJ,EAAA,EACpB,YAAYC,GAClBC,MAAM,SAAUD,GAAA,eAGhB,OAAOD,EAAA,2BAA8B,IALhC,EAAMK,SASbP,OAAOC,OAAOM,GACdP,OAAOC,OAAOM,EAAOD,WA9Bf,CAAUP,MAAA,KAgCjBC,OAAOC,OAAOF","file":"chunk/lang/Ngrams-ts.js","sourcesContent":["import { Lang } from \"../Lang\";\r\nimport * as Ngram2Dict from \"./defs/ngram2.json\";\r\nimport * as Ngram3Dict from \"./defs/ngram3.json\";\r\nObject.freeze(Ngram2Dict);\r\nObject.freeze(Ngram3Dict);\r\n\r\n/**\r\n */\r\nexport namespace Ngrams {\r\n\r\n\t/**\r\n\t * # English Bigrams\r\n\t */\r\n\texport class Ngram2 extends Lang {\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"ngram2\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn Lang.BuildUtils.WORD_FOR_WORD(Ngram2Dict);\r\n\t\t}\r\n\t}\r\n\tNgram2 as Lang.ClassIf;\r\n\tObject.freeze(Ngram2);\r\n\tObject.freeze(Ngram2.prototype);\r\n\r\n\t/**\r\n\t * # English Trigrams\r\n\t */\r\n\texport class Ngram3 extends Lang {\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"ngram3\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\treturn Lang.BuildUtils.WORD_FOR_WORD(Ngram3Dict);\r\n\t\t}\r\n\t}\r\n\tNgram3 as Lang.ClassIf;\r\n\tObject.freeze(Ngram3);\r\n\tObject.freeze(Ngram3.prototype);\r\n}\r\nObject.freeze(Ngrams);"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/Numpad-ts.js b/server/chunk/lang/Numpad-ts.js index 83cf71e0..ef44795d 100644 --- a/server/chunk/lang/Numpad-ts.js +++ b/server/chunk/lang/Numpad-ts.js @@ -1,2 +1,2 @@ -exports.id=683,exports.ids=[683],exports.modules={193:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Numpad:()=>s});var s,o=r(115);!function(e){class t extends o.U{constructor(e){super("numpad",e)}static BUILD(){const e={};for(let t=0;t<100;t++){const r=t.toString().padStart(2,"0");e[r]={seq:r,weight:1}}return e}}e.Numpad=t,Object.freeze(t),Object.freeze(t.prototype)}(s||(s={})),Object.freeze(s)}}; +exports.id=683,exports.ids=[683],exports.modules={444:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Numpad:()=>s});var s,o=r(208);!function(e){class t extends o.U{constructor(e){super("numpad",e)}static BUILD(){const e={};for(let t=0;t<100;t++){const r=t.toString().padStart(2,"0");e[r]={seq:r,weight:1}}return e}}e.Numpad=t,Object.freeze(t),Object.freeze(t.prototype)}(s||(s={})),Object.freeze(s)}}; //# sourceMappingURL=Numpad-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/Numpad-ts.js.map b/server/chunk/lang/Numpad-ts.js.map index b3b0da96..e05fd971 100644 --- a/server/chunk/lang/Numpad-ts.js.map +++ b/server/chunk/lang/Numpad-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/Numpad-ts.js","sources":["../chunk/lang/Numpad-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/Numpad.ts?"],"names":["Numpad","weightScaling","super","dict","i","str","toString","padStart","seq","weight","Object","freeze","prototype"],"mappings":"8GAEiBA,E,UAAV,SAAU,GAIT,gBAAqB,IACpB,YAAYC,GAClBC,MAAM,SAAUD,GAAA,eAGhB,MAAME,EAAgC,GACtC,QAASC,EAAI,EAAGA,EAAI,IAAKA,IAAK,CAC7B,MAAMC,EAAMD,EAAEE,WAAWC,SAAS,EAAE,KACpCJ,EAAKE,GAAO,CAAEG,IAAKH,EAAKI,OAAQ,GAEjC,OAAON,GAVF,EAAMH,OAAA,EAcbU,OAAOC,OAAO,GACdD,OAAOC,OAAO,EAAOC,WAnBf,CAAUZ,MAAA,KAqBjBU,OAAOC,OAAOX","file":"chunk/lang/Numpad-ts.js","sourcesContent":["import { Lang } from \"../Lang\";\r\n\r\nexport namespace Numpad {\r\n\t/**\r\n\t * # Number Pad\r\n\t */\r\n\texport class Numpad extends Lang {\r\n\t\tpublic constructor(weightScaling: number) {\r\n\t\t\tsuper(\"numpad\", weightScaling);\r\n\t\t}\r\n\t\tpublic static BUILD(): Lang.WeightedForwardMap {\r\n\t\t\tconst dict: Lang.WeightedForwardMap = {};\r\n\t\t\tfor (let i = 0; i < 100; i++) {\r\n\t\t\t\tconst str = i.toString().padStart(2,\"0\");\r\n\t\t\t\tdict[str] = { seq: str, weight: 1 };\r\n\t\t\t}\r\n\t\t\treturn dict;\r\n\t\t}\r\n\t}\r\n\tNumpad as Lang.ClassIf;\r\n\tObject.freeze(Numpad);\r\n\tObject.freeze(Numpad.prototype);\r\n}\r\nObject.freeze(Numpad);"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/Shell-ts.js b/server/chunk/lang/Shell-ts.js index 73b12720..ad9ec0c6 100644 --- a/server/chunk/lang/Shell-ts.js +++ b/server/chunk/lang/Shell-ts.js @@ -1,2 +1,2 @@ -exports.id=159,exports.ids=[159],exports.modules={521:(e,t,r)=>{"use strict";var s;r.r(t),r.d(t,{Shell:()=>s}),function(e){e.UnixAndShell=Object.freeze(["env","chroot","fg","bg","ps","jobs","kill","source","xargs","test","time","echo","printf","cd","pwd","ls","find","grep","mkdir","rm","mv","cp","chmod","ln","touch","cat","tac","head","tail","nl","od","more","less","sort","uniq","file","cksum","wc","awk","sed"]),e.Other=Object.freeze(["vim","vi","nano","tig","perl"]),e.Git=Object.freeze(["init","clone","fetch","merge","push","status","diff","add","restore","commit","switch","branch","worktree","gc","fsck","prune","log"])}(s||(s={}))}}; +exports.id=159,exports.ids=[159],exports.modules={25:(e,t,r)=>{"use strict";var s,c;r.r(t),r.d(t,{Shell:()=>s}),(c=s||(s={})).UnixAndShell=Object.freeze(["env","chroot","fg","bg","ps","jobs","kill","source","xargs","test","time","echo","printf","cd","pwd","ls","find","grep","mkdir","rm","mv","cp","chmod","ln","touch","cat","tac","head","tail","nl","od","more","less","sort","uniq","file","cksum","wc","awk","sed"]),c.Other=Object.freeze(["vim","vi","nano","tig","perl"]),c.Git=Object.freeze(["init","clone","fetch","merge","push","status","diff","add","restore","commit","switch","branch","worktree","gc","fsck","prune","log"])}}; //# sourceMappingURL=Shell-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/Shell-ts.js.map b/server/chunk/lang/Shell-ts.js.map index 8acc47dc..da172ef7 100644 --- a/server/chunk/lang/Shell-ts.js.map +++ b/server/chunk/lang/Shell-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/Shell-ts.js","sources":["../chunk/lang/Shell-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/Shell.ts?"],"names":["Shell","UnixAndShell","Object","freeze","Other","Git"],"mappings":"4EAMO,IAAUA,EAAA,E,6BAAA,EAAAA,MAAA,KACHC,aAAeC,OAAOC,OAAc,CAGhD,MAAO,SAAU,KAAM,KAAM,KAAM,OAAQ,OAC3C,SAAU,QAAS,OAAgC,OACnD,OAAQ,SAER,KAAM,MACN,KAAuB,OAAQ,OAC/B,QAAS,KAAM,KAAM,KAAM,QAAS,KAAM,QAE1C,MAAO,MAAO,OAAQ,OAAQ,KAAM,KACpC,OAAQ,OAER,OAAQ,OACR,OAAQ,QAAS,KACjB,MAAO,QAEK,EAAAC,MAAQF,OAAOC,OAAc,CACzC,MAAO,KAAM,OACb,MACA,SAEY,EAAAE,IAAMH,OAAOC,OAAc,CACvC,OAAQ,QAAS,QAAS,QAAS,OACnC,SAAU,OAAQ,MAAO,UAAW,SACpC,SAAU,SAAU,WACpB,KAAM,OAAQ,QACd","file":"chunk/lang/Shell-ts.js","sourcesContent":["\r\n/**\r\n * ```sh\r\n * >_\r\n * ```\r\n */\r\nexport namespace Shell {\r\n\texport const UnixAndShell = Object.freeze([\r\n\t\t// \"uname\", \"users\", \"whoami\", \"df\", \"du\", \"uptime\",\r\n\t\t// \"date\", \"cal\",\r\n\t\t\"env\", \"chroot\", \"fg\", \"bg\", \"ps\", \"jobs\", \"kill\",\r\n\t\t\"source\", \"xargs\", \"test\", /* \"timeout\", \"yes\", */ \"time\",\r\n\t\t\"echo\", \"printf\",\r\n\r\n\t\t\"cd\", \"pwd\",\r\n\t\t\"ls\", /* \"dirname\", */ \"find\", \"grep\",\r\n\t\t\"mkdir\", \"rm\", \"mv\", \"cp\", \"chmod\", \"ln\", \"touch\",\r\n\r\n\t\t\"cat\", \"tac\", \"head\", \"tail\", \"nl\", \"od\",\r\n\t\t\"more\", \"less\",\r\n\t\t// \"cut\", \"paste\", \"expand\", \"unexpand\", \"fold\",\r\n\t\t\"sort\", \"uniq\",\r\n\t\t\"file\", \"cksum\", \"wc\",\r\n\t\t\"awk\", \"sed\",\r\n\t]);\r\n\texport const Other = Object.freeze([\r\n\t\t\"vim\", \"vi\", \"nano\",\r\n\t\t\"tig\",\r\n\t\t\"perl\",\r\n\t]);\r\n\texport const Git = Object.freeze([\r\n\t\t\"init\", \"clone\", \"fetch\", \"merge\", \"push\",\r\n\t\t\"status\", \"diff\", \"add\", \"restore\", \"commit\",\r\n\t\t\"switch\", \"branch\", \"worktree\",\r\n\t\t\"gc\", \"fsck\", \"prune\",\r\n\t\t\"log\",\r\n\t]);\r\n}"],"sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/defs-Chinese-ts.js b/server/chunk/lang/defs-Chinese-ts.js index 63eb111e..2427e562 100644 --- a/server/chunk/lang/defs-Chinese-ts.js +++ b/server/chunk/lang/defs-Chinese-ts.js @@ -1,2 +1 @@ -exports.id=704,exports.ids=[704],exports.modules={958:()=>{}}; -//# sourceMappingURL=defs-Chinese-ts.js.map \ No newline at end of file +exports.id=704,exports.ids=[704],exports.modules={711:()=>{}}; \ No newline at end of file diff --git a/server/chunk/lang/defs-Chinese-ts.js.map b/server/chunk/lang/defs-Chinese-ts.js.map deleted file mode 100644 index 99bad2ce..00000000 --- a/server/chunk/lang/defs-Chinese-ts.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"chunk/lang/defs-Chinese-ts.js","sources":["../chunk/lang/defs-Chinese-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file diff --git a/server/chunk/lang/defs-English100-ts.js b/server/chunk/lang/defs-English100-ts.js index 088f0016..e121d6e7 100644 --- a/server/chunk/lang/defs-English100-ts.js +++ b/server/chunk/lang/defs-English100-ts.js @@ -1,2 +1,2 @@ -exports.id=885,exports.ids=[885],exports.modules={213:(e,o,t)=>{"use strict";t.r(o),t.d(o,{default:()=>a});const a=["the","be","to","of","and","a","in","that","have","I","it","for","not","on","with","he","as","you","do","at","this","but","his","by","from","they","we","say","her","she","or","an","will","my","one","all","would","there","their","what","so","up","out","if","about","who","get","which","go","me","when","make","can","like","time","no","just","him","know","take","people","into","year","your","good","some","could","them","see","other","than","then","now","look","only","come","its","over","think","also","back","after","use","two","how","our","work","first","well","way","even","new","want","because","any","these","give","day","most","us"]}}; +exports.id=885,exports.ids=[885],exports.modules={589:(e,o,t)=>{"use strict";t.r(o),t.d(o,{default:()=>a});const a=["the","be","to","of","and","a","in","that","have","I","it","for","not","on","with","he","as","you","do","at","this","but","his","by","from","they","we","say","her","she","or","an","will","my","one","all","would","there","their","what","so","up","out","if","about","who","get","which","go","me","when","make","can","like","time","no","just","him","know","take","people","into","year","your","good","some","could","them","see","other","than","then","now","look","only","come","its","over","think","also","back","after","use","two","how","our","work","first","well","way","even","new","want","because","any","these","give","day","most","us"]}}; //# sourceMappingURL=defs-English100-ts.js.map \ No newline at end of file diff --git a/server/chunk/lang/defs-English100-ts.js.map b/server/chunk/lang/defs-English100-ts.js.map index 35b9dbf2..085549b8 100644 --- a/server/chunk/lang/defs-English100-ts.js.map +++ b/server/chunk/lang/defs-English100-ts.js.map @@ -1 +1 @@ -{"version":3,"file":"chunk/lang/defs-English100-ts.js","sources":["../chunk/lang/defs-English100-ts.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":[".././src/base/lang/impl/defs/English100.ts?"],"names":[],"mappings":"2GACA,SACA,MACA,KACA,KACA,KACA,MACA,IACA,KACA,OACA,OACA,IACA,KACA,MACA,MACA,KACA,OACA,KACA,KACA,MACA,KACA,KACA,OACA,MACA,MACA,KACA,OACA,OACA,KACA,MACA,MACA,MACA,KACA,KACA,OACA,KACA,MACA,MACA,QACA,QACA,QACA,OACA,KACA,KACA,MACA,KACA,QACA,MACA,MACA,QACA,KACA,KACA,OACA,OACA,MACA,OACA,OACA,KACA,OACA,MACA,OACA,OACA,SACA,OACA,OACA,OACA,OACA,OACA,QACA,OACA,MACA,QACA,OACA,OACA,MACA,OACA,OACA,OACA,MACA,OACA,QACA,OACA,OACA,QACA,MACA,MACA,MACA,MACA,OACA,QACA,OACA,MACA,OACA,MACA,OACA,UACA,MACA,QACA,OACA,MACA,OACA","file":"chunk/lang/defs-English100-ts.js","sourcesContent":["// Source: https://en.wikipedia.org/wiki/Most_common_words_in_English\r\nexport default [\r\n\"the\",\r\n\"be\",\r\n\"to\",\r\n\"of\",\r\n\"and\",\r\n\"a\",\r\n\"in\",\r\n\"that\",\r\n\"have\",\r\n\"I\",\r\n\"it\",\r\n\"for\",\r\n\"not\",\r\n\"on\",\r\n\"with\",\r\n\"he\",\r\n\"as\",\r\n\"you\",\r\n\"do\",\r\n\"at\",\r\n\"this\",\r\n\"but\",\r\n\"his\",\r\n\"by\",\r\n\"from\",\r\n\"they\",\r\n\"we\",\r\n\"say\",\r\n\"her\",\r\n\"she\",\r\n\"or\",\r\n\"an\",\r\n\"will\",\r\n\"my\",\r\n\"one\",\r\n\"all\",\r\n\"would\",\r\n\"there\",\r\n\"their\",\r\n\"what\",\r\n\"so\",\r\n\"up\",\r\n\"out\",\r\n\"if\",\r\n\"about\",\r\n\"who\",\r\n\"get\",\r\n\"which\",\r\n\"go\",\r\n\"me\",\r\n\"when\",\r\n\"make\",\r\n\"can\",\r\n\"like\",\r\n\"time\",\r\n\"no\",\r\n\"just\",\r\n\"him\",\r\n\"know\",\r\n\"take\",\r\n\"people\",\r\n\"into\",\r\n\"year\",\r\n\"your\",\r\n\"good\",\r\n\"some\",\r\n\"could\",\r\n\"them\",\r\n\"see\",\r\n\"other\",\r\n\"than\",\r\n\"then\",\r\n\"now\",\r\n\"look\",\r\n\"only\",\r\n\"come\",\r\n\"its\",\r\n\"over\",\r\n\"think\",\r\n\"also\",\r\n\"back\",\r\n\"after\",\r\n\"use\",\r\n\"two\",\r\n\"how\",\r\n\"our\",\r\n\"work\",\r\n\"first\",\r\n\"well\",\r\n\"way\",\r\n\"even\",\r\n\"new\",\r\n\"want\",\r\n\"because\",\r\n\"any\",\r\n\"these\",\r\n\"give\",\r\n\"day\",\r\n\"most\",\r\n\"us\",\r\n]"],"sourceRoot":""} \ No newline at end of file diff --git a/server/index.js b/server/index.js index 33cdc2e3..ccabe451 100644 --- a/server/index.js +++ b/server/index.js @@ -1,2 +1,2 @@ -var snakey3;snakey3=(()=>{var e,t,r,s={632:(e,t,r)=>{"use strict";r.d(t,{R:()=>a});const s=Object.freeze({enumerable:!1}),i=Object.freeze({writable:!1});var a;!function(e){let t;function r(e,t,r){t.forEach((t=>{Object.defineProperty(e,t,r)}))}e.applyMixins=function(e,t){t.forEach((t=>{Object.getOwnPropertyNames(t.prototype).forEach((r=>{Object.defineProperty(e.prototype,r,Object.getOwnPropertyDescriptor(t.prototype,r))}))}))},e.deepFreeze=function e(t){return function(t){for(const r of Object.getOwnPropertyNames(t)){const s=t[r];"object"==typeof s&&e(s)}Object.freeze(t)}(t),t},function(e){let t;!function(e){e.access=function(e,t,r){r.enumerable=!1},e.cyclic=function(e,t,r){r.enumerable=!1}}(t=e.NonEnumerable||(e.NonEnumerable={}))}(t=e.Decor||(e.Decor={})),e.protoNoEnum=function(e,...t){t.forEach((t=>{Object.defineProperty(e.prototype,t,s)}))},e.instNoEnum=function(e,...t){r(e,t,s)},e.propNoWrite=function(e,...t){r(e,t,i)},e.prependComment=function(e,t){e.parentNode.insertBefore(document.createComment(" "+t+" "),e)},e.camelCaseTransforms=function(e){const t=e.replace(/[A-Z]/g,(e=>" "+e.toLowerCase()));return Object.freeze({spaceyLowercase:t,spaceyUppercase:t.toUpperCase(),spaceyCapitalized:t.split(" ").map((e=>e.charAt(0).toUpperCase()+e.substring(1))).join(" ")})},e.mkEl=function(e,t,r){const s=document.createElement(e);try{Object.seal(s)}catch(e){}return t.length&&s.classList.add(...t),"button"===e?s.type="button":"a"===e&&(s.rel="noopener"),void 0!==r&&Object.assign(s,r),s}}(a||(a={})),Object.freeze(a)},532:(e,t,r)=>{"use strict";r.d(t,{Uo:()=>l,J5:()=>n});var s=r(632);const i=Object.freeze({IDENT:e=>e,LOWER:e=>e.toLowerCase()}),a={"engl-low":{module:"English",export:"Lowercase",numLeaves:26,remapFunc:i.LOWER,displayName:"English Lowercase (qwerty)",blurb:""},"engl-mix":{module:"English",export:"MixedCase",numLeaves:52,remapFunc:i.IDENT,displayName:"English Mixed-Case (Querty)",blurb:""},"japn-hir":{module:"Japanese",export:"Hiragana",numLeaves:71,remapFunc:i.LOWER,displayName:"Japanese Hiragana",blurb:""},"japn-kat":{module:"Japanese",export:"Katakana",numLeaves:69,remapFunc:i.LOWER,displayName:"Japanese Katakana",blurb:""},"kore-dub":{module:"Korean",export:"Dubeolsik",numLeaves:8778,remapFunc:i.IDENT,displayName:"Korean Dubeolsik (두벌식 키보드)",blurb:"The most common keyboard layout, and South Korea's only Hangul standard since 1969. Consonants are on the left, and vowels on the right."},"kore-sub":{module:"Korean",export:"Sebeolsik",numLeaves:10206,remapFunc:i.IDENT,displayName:"Korean Sebeolsik (세벌식 최종 키보드)",blurb:"Another Hangul keyboard layout used in South Korea, and the final Sebeolsik layout designed by Dr. Kong Byung Woo, hence the name. Syllable-initial consonants are on the right, final consonants on the left, and vowels in the middle. It is more ergonomic than the dubeolsik, but not widely used."},"kore-rom":{module:"Korean",export:"Romanization",numLeaves:3990,remapFunc:i.LOWER,displayName:"Korean Revised Romanization",blurb:"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字 表記法) is the official South Korean language romanization system. It was developed by the National Academy of the Korean Language from 1995, and was released on 7 July 2000 by South Korea's Ministry of Culture and Tourism"},"engl-cell-enc":{module:"English",export:"OldCellphone.Encode",numLeaves:8,remapFunc:i.IDENT,displayName:"Old Cellphone Keyboard",blurb:""},"mors-enc":{module:"English",export:"Morse.Encode",numLeaves:20,remapFunc:e=>e,displayName:"Morse Encoder",blurb:""},"mors-dec":{module:"English",export:"Morse.Decode",numLeaves:41,remapFunc:i.LOWER,displayName:"Morse Decoder",blurb:""},ngram2:{module:"Ngrams",export:"Ngram2",numLeaves:200,remapFunc:i.LOWER,displayName:"English Bigrams",blurb:""},ngram3:{module:"Ngrams",export:"Ngram3",numLeaves:401,remapFunc:i.LOWER,displayName:"English Trigrams",blurb:""},numpad:{module:"Numpad",export:"Numpad",numLeaves:100,remapFunc:i.LOWER,displayName:"Number Pad",blurb:""}};Object.entries(a).forEach((([e,t])=>{t.id=e})),s.R.deepFreeze(a);const o=a;Object.freeze({behavior:"smooth",block:"center",inline:"center"});class n{}!function(e){let t,r,s;e.Family=Object.freeze({HUMAN:"HUMAN",CHASER:"CHASER"}),e.Family,function(e){e.NULL=void 0}(t=e.Id||(e.Id={})),function(e){e.REGEXP=/[ a-zA-Z0-9:-]+/,e.MAX_LENGTH=15}(r=e.Username||(e.Username={})),function(e){e.LOREM_IPSUM="lorem-ipsum"}(s=e.Avatar||(e.Avatar={})),function(e){const t=Object.values(e).filter((e=>"string"==typeof e));e.GET_RANDOM=function(){return t[Math.floor(Math.random()*t.length)]}}(s=e.Avatar||(e.Avatar={})),e.MoveType=Object.freeze({NORMAL:"NORMAL",BOOST:"BOOST"}),e.MoveType}(n||(n={})),Object.freeze(n),Object.freeze(n.prototype);class l{}!function(e){let t,r,s;!function(e){e.REGEXP=new RegExp("^[a-zA-Z0-9!@#$%^&*()-_=+;:'\"\\|,.<>/?]+$")}(t=e.Seq||(e.Seq={})),function(e){e.NULL=Object.freeze({char:"",seq:""})}(r=e.CharSeqPair||(e.CharSeqPair={})),function(e){e.MAX=4}(s=e.WeightExaggeration||(e.WeightExaggeration={})),e.CHAR_HIT_COUNT_SEED_CEILING=5,e.FrontendDescs=o,e.GET_FRONTEND_DESC_BY_ID=function(t){return e.FrontendDescs[t]}}(l||(l={})),Object.freeze(l),Object.freeze(l.prototype)},115:(e,t,r)=>{"use strict";r.d(t,{U:()=>l});var s,i=r(632),a=r(532),o=r(780);!function(e){var t;class r{constructor(){Object.defineProperty(this,"seq",{enumerable:!0,configurable:!0,writable:!0,value:""}),Object.defineProperty(this,"children",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"carryHits",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.children=[],i.R.propNoWrite(this,"children")}reset(){for(const e of this.children)e.reset();this.carryHits=0}_finalize(){Object.freeze(this.children);for(const e of this.children)e._finalize()}getLeaves(){const e=[];return this._rGetLeaves(e),e}_rGetLeaves(e){if(this.children.length)for(const t of this.children)t._rGetLeaves(e);else e.push(this)}simpleView(){return this.children}static CREATE_TREE_MAP(t,a){var o;const l=e.GET_SCALE_WEIGHT_FUNC(a,t),c=new Map;Object.entries(t).forEach((([e,{seq:t,weight:r}])=>{const s=new n(e,l(r)),i=c.get(t);void 0!==i?i.push(s):c.set(t,[s])}));const h=new r;i.R.propNoWrite(h,"children");let u=h;for(const[e,t]of Array.from(c).sort((([e],[t])=>ee.carryHits-t.carryHits}),e.ParentNode=r,i.R.protoNoEnum(r,"_finalize","_rGetLeaves"),Object.freeze(r),Object.freeze(r.prototype);class s extends r{constructor(e,r,s){super(),Object.defineProperty(this,"parent",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"seq",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),t.set(this,void 0),this.seq=r,(0,o.__classPrivateFieldSet)(this,t,s),this.parent=e,i.R.propNoWrite(this,"seq","parent")}_finalize(){Object.freeze((0,o.__classPrivateFieldGet)(this,t)),super._finalize()}reset(){super.reset();for(const e of(0,o.__classPrivateFieldGet)(this,t))e.reset(),this.incrHits(e,Math.random()*a.Uo.CHAR_HIT_COUNT_SEED_CEILING)}chooseOnePair(){let e=(0,o.__classPrivateFieldGet)(this,t)[0];for(const r of(0,o.__classPrivateFieldGet)(this,t))r.hitse.simpleView()));return Object.assign(Object.create(null),{seq:this.seq,chars:1===e.length?e[0]:e,kids:this.children.map((e=>e.simpleView()))})}}function l(e,t){if(0===e)return e=>1;if(1===e)return e=>e;const r=Object.values(t),s=r.reduce(((e,t)=>e+t.weight),0)/r.length;return t=>Math.pow(t/s,e)}t=new WeakMap,Object.defineProperty(s,"PATH_CMP",{enumerable:!0,configurable:!0,writable:!0,value:(e,t)=>e.ownHits-t.ownHits}),e.ChildNode=s,i.R.protoNoEnum(s,"_finalize","_rIncrHits"),Object.freeze(s),Object.freeze(s.prototype),e.GET_SCALE_WEIGHT_FUNC=l,Object.freeze(l)}(s||(s={})),Object.freeze(s);class n{constructor(e,t){Object.defineProperty(this,"char",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"weightInv",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"hits",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.char=e,this.weightInv=1/t}reset(){this.hits=0}_incrementNumHits(){this.hits+=this.weightInv}simpleView(){return Object.assign(Object.create(null),{char:this.char})}}Object.defineProperty(n,"CMP",{enumerable:!0,configurable:!0,writable:!0,value:(e,t)=>e.hits-t.hits}),Object.freeze(n),Object.freeze(n.prototype);class l extends a.Uo{constructor(e,t){super(),Object.defineProperty(this,"frontendDesc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"treeMap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"leafNodes",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.frontendDesc=l.GET_FRONTEND_DESC_BY_ID(e),this.treeMap=s.ParentNode.CREATE_TREE_MAP(Object.getPrototypeOf(this).constructor.BUILD(),t),this.leafNodes=this.treeMap.getLeaves(),i.R.propNoWrite(this,"frontendDesc","treeMap","leafNodes")}get numLeaves(){return this.leafNodes.length}reset(){this.treeMap.reset()}getNonConflictingChar(e){this.leafNodes.sort(s.ParentNode.LEAF_CMP);e:for(const t of this.leafNodes){let r=t;for(let s=t;s;s=s.parent){const t=e.find((e=>e.startsWith(s.seq)));if(t){if(t.length>s.seq.length)break;continue e}s.ownHits(e[t]={seq:t,weight:r},e)),{})}}(t=e.BuildUtils||(e.BuildUtils={}))}(l||(l={})),Object.freeze(l),Object.freeze(l.prototype)},816:(e,t,r)=>{"use strict";r.r(t),r.d(t,{server:()=>ie});const s=require("os"),i=require("path"),a=require("http"),o=require("express"),n=require("express-static-gzip"),l=require("socket.io");var c,h,u,d=r(632),m=r(780);class p{}!function(e){let t;e.PROTOCOL="http://",e.DEFAULT_PORT=80,function(e){e.GROUP_JOINER="/joiner.",e.GROUP_LOBBY_PREFIX="/group.",e.GROUP_GAME_PREFIX="/group-game."}(t=e.Nsps||(e.Nsps={}))}(p||(p={})),Object.freeze(p),Object.freeze(p.prototype);class f{}!function(e){let t,r,s,i;!function(e){let t;!function(e){e.EVENT_NAME="group-lobby-user-info-change"}(t=e.UserInfoChange||(e.UserInfoChange={}))}(t=e.Socket||(e.Socket={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]+)/,e.MaxLength=30}(r=e.Name||(e.Name={})),function(e){e.REGEXP=/(?:[a-zA-Z0-9:-]*)/,e.MaxLength=30}(s=e.Passphrase||(e.Passphrase={})),e.GameServerReconnectionAttempts=2,e.DEFAULT_TTL=20,function(e){e.EVENT_NAME="group-exist";class t{constructor(e,t){Object.defineProperty(this,"groupName",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.defineProperty(this,"passphrase",{enumerable:!0,configurable:!0,writable:!0,value:t})}}let r;e.RequestCreate=t,function(e){let t;!function(e){e.OKAY="okay",e.NOPE="nope"}(t=e.Response||(e.Response={}))}(t=e.RequestCreate||(e.RequestCreate={})),function(e){e.IN_LOBBY="in-lobby",e.IN_GAME="in-game",e.DELETE="delete"}(r=e.Status||(e.Status={}))}(i=e.Exist||(e.Exist={}))}(f||(f={})),Object.freeze(f),Object.freeze(f.prototype),function(e){e.CREATE_GAME="group-game-create"}(c||(c={})),function(e){e.CREATE_GAME="game-create",e.RESET="game-reset",e.UNPAUSE="game-unpause",e.PAUSE="game-pause",e.RETURN_TO_LOBBY="game-return-to-lobby"}(h||(h={})),function(e){let t,r;!function(e){e.SERVER="SERVER",e.ONLINE="ONLINE",e.OFFLINE="OFFLINE"}(t=e.Type||(e.Type={})),Object.freeze(t),function(e){e.PLAYING="PLAYING",e.PAUSED="PAUSED",e.OVER="OVER"}(r=e.Status||(e.Status={})),Object.freeze(r),e.K=Object.freeze({HEALTH_UPDATE_CHANCE:.1,AVERAGE_HEALTH_TO_SPAWN_ON_TILE:1,PORTION_OF_MOVES_THAT_ARE_BOOST:.4,HEALTH_COST_OF_BOOST(e,t){const r=t(this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/e);return this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/r/this.PORTION_OF_MOVES_THAT_ARE_BOOST},HEALTH_EFFECT_FOR_DOWNED_PLAYER:.6,EVENT_RECORD_WRAPPING_BUFFER_LENGTH:50,EVENT_RECORD_FORWARD_WINDOW_LENGTH:25})}(u||(u={})),Object.freeze(u);var b,g,v,E,_,y,O,P,N,w,T,I=r(532);class R{constructor(e){Object.defineProperty(this,"coord",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),b.set(this,void 0),g.set(this,void 0),v.set(this,void 0),E.set(this,void 0),Object.defineProperty(this,"lastKnownUpdateId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.coord=e,d.R.propNoWrite(this,"coord"),(0,m.__classPrivateFieldSet)(this,b,I.J5.Id.NULL)}reset(){this.evictOccupant(),this.lastKnownUpdateId=0,this.freeHealth=0,this.setLangCharSeqPair(I.Uo.CharSeqPair.NULL)}_setOccupant(e,t){(0,m.__classPrivateFieldSet)(this,b,e)}get isOccupied(){return this.occupantId!==I.J5.Id.NULL}evictOccupant(){(0,m.__classPrivateFieldSet)(this,b,I.J5.Id.NULL)}get occupantId(){return(0,m.__classPrivateFieldGet)(this,b)}get freeHealth(){return(0,m.__classPrivateFieldGet)(this,g)}set freeHealth(e){(0,m.__classPrivateFieldSet)(this,g,e)}setLangCharSeqPair(e){(0,m.__classPrivateFieldSet)(this,v,e.char),(0,m.__classPrivateFieldSet)(this,E,e.seq)}get langChar(){return(0,m.__classPrivateFieldGet)(this,v)}get langSeq(){return(0,m.__classPrivateFieldGet)(this,E)}}b=new WeakMap,g=new WeakMap,v=new WeakMap,E=new WeakMap,Object.freeze(R),Object.freeze(R.prototype);class j{constructor(e){_.set(this,void 0),(0,m.__classPrivateFieldSet)(this,_,e),Object.freeze(this)}get _source(){return(0,m.__classPrivateFieldGet)(this,_)}at(...e){return(0,m.__classPrivateFieldGet)(this,_)._getTileAt(...e)}destsFrom(...e){return new A((0,m.__classPrivateFieldGet)(this,_)._getTileDestsFrom(...e))}sourcesTo(...e){return new A((0,m.__classPrivateFieldGet)(this,_)._getTileSourcesTo(...e))}}_=new WeakMap,Object.freeze(j),Object.freeze(j.prototype);class A{constructor(e){Object.defineProperty(this,"contents",{enumerable:!0,configurable:!0,writable:!0,value:e}),Object.seal(this)}get occupied(){return this.contents=this.contents.filter((e=>e.isOccupied)),this}get unoccupied(){return this.contents=this.contents.filter((e=>!e.isOccupied)),this}get get(){return this.contents}}Object.freeze(A),Object.freeze(A.prototype);class M{constructor(e){Object.defineProperty(this,"static",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"dimensions",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"tile",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.static=e.gridClass,this.dimensions=e.dimensions,this.tile=new j(this),d.R.propNoWrite(this,"static","dimensions","tile")}get area(){return this.static.getArea(this.dimensions)}reset(){this.forEachTile((e=>e.reset()))}getDestsFromSourcesTo(e){return Array.from(new Set(this.tile.sourcesTo(e).get.flatMap((e=>this.tile.destsFrom(e.coord).get))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}}(y=M||(M={})).getImplementation=e=>y._Constructors[e],function(e){e.EVENT_ID_REJECT=-1}(O||(O={})),Object.freeze(O),function(e){e.INITIAL_REQUEST_ID=-1,e.EVENT_NAME=Object.freeze({BUBBLE:"player-bubble",MOVEMENT:"player-movement"});class t{constructor(e,t){Object.defineProperty(this,"eventId",{enumerable:!0,configurable:!0,writable:!0,value:O.EVENT_ID_REJECT}),Object.defineProperty(this,"playerId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"playerLastAcceptedRequestId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"affectedNeighbours",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.playerId=e,this.playerLastAcceptedRequestId=t}}e.Bubble=t,e.Movement=class extends t{constructor(e,t,r,s){super(e,t),Object.defineProperty(this,"newPlayerHealth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"destModDesc",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"moveType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"tileHealthModDescs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"playerHealthModDescs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.destModDesc={coord:r.coord,lastKnownUpdateId:r.lastKnownUpdateId},this.moveType=s}}}(P||(P={})),Object.freeze(P);class S extends I.J5{constructor(e,t){if(super(),Object.defineProperty(this,"playerId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"isALocalOperator",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"game",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"status",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),N.set(this,void 0),Object.defineProperty(this,"tile",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Math.trunc(t.playerId)!==t.playerId)throw new RangeError("Player ID's must be integer values.");this.playerId=t.playerId,this.isALocalOperator=t.isALocalOperator,this.game=e,this.status=new this.game._playerStatusCtor(this,t.noCheckGameOver),this.tile=new j(new S.TileGetterSource(this)),d.R.instNoEnum(this,"game"),d.R.propNoWrite(this,"playerId","isALocalOperator","game","status","tile")}_afterAllPlayersConstruction(){this.status._afterAllPlayersConstruction()}reset(e){(0,m.__classPrivateFieldSet)(this,N,e),this.hostTile._setOccupant(this.playerId,this.status.immigrantInfo)}get coord(){return this.hostTile.coord}get hostTile(){return(0,m.__classPrivateFieldGet)(this,N)}moveTo(e){this.hostTile.occupantId!==this.playerId||this.hostTile.evictOccupant(),e.isOccupied||((0,m.__classPrivateFieldSet)(this,N,e),e._setOccupant(this.playerId,this.status.immigrantInfo))}}N=new WeakMap,function(e){var t,r;class s{constructor(e){t.set(this,void 0),r.set(this,void 0),(0,m.__classPrivateFieldSet)(this,t,e),(0,m.__classPrivateFieldSet)(this,r,e.game.grid.tile._source)}_getTileAt(){return(0,m.__classPrivateFieldGet)(this,r)._getTileAt((0,m.__classPrivateFieldGet)(this,t).coord)}_getTileDestsFrom(){return(0,m.__classPrivateFieldGet)(this,r)._getTileDestsFrom((0,m.__classPrivateFieldGet)(this,t).coord)}_getTileSourcesTo(){return(0,m.__classPrivateFieldGet)(this,r)._getTileSourcesTo((0,m.__classPrivateFieldGet)(this,t).coord)}}t=new WeakMap,r=new WeakMap,e.TileGetterSource=s,Object.freeze(s),Object.freeze(s.prototype)}(S||(S={})),d.R.protoNoEnum(S,"_afterAllPlayersConstruction"),Object.freeze(S),Object.freeze(S.prototype);class C{constructor(e,t){if(Object.defineProperty(this,"id",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"members",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),w.set(this,void 0),0===t.length)throw new Error("Teams must have at least one member.");this.id=e,this.members=t,(0,m.__classPrivateFieldSet)(this,w,this.members.every((e=>e.status.noCheckGameOver))?C.ElimOrder.IMMORTAL:C.ElimOrder.STANDING),d.R.propNoWrite(this,"id","members")}reset(){this.elimOrder!==C.ElimOrder.IMMORTAL&&(this.elimOrder=C.ElimOrder.STANDING)}get elimOrder(){return(0,m.__classPrivateFieldGet)(this,w)}set elimOrder(e){if(this.elimOrder===C.ElimOrder.IMMORTAL)throw new TypeError("Cannot change the elimination status of an immortal team.");(0,m.__classPrivateFieldSet)(this,w,e)}}w=new WeakMap,function(e){let t;!function(e){e.IMMORTAL=-1,e.STANDING=0}(t=e.ElimOrder||(e.ElimOrder={}))}(C||(C={})),Object.freeze(C),Object.freeze(C.prototype);class F{constructor(e,t){Object.defineProperty(this,"player",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"noCheckGameOver",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),T.set(this,void 0),this.player=e,this.noCheckGameOver=t,d.R.instNoEnum(this,"player")}reset(){this.health=0}_afterAllPlayersConstruction(){}get immigrantInfo(){}get health(){return(0,m.__classPrivateFieldGet)(this,T)}set health(e){const t=this.isDowned;if((0,m.__classPrivateFieldSet)(this,T,e),t||!this.isDowned||this.noCheckGameOver)return;const r=this.player.team,s=this.player.game.teams;if(r.elimOrder===C.ElimOrder.STANDING&&r.members.every((e=>e.status.noCheckGameOver||e.status.isDowned))){const e=1+s.filter((e=>e.elimOrder!==C.ElimOrder.STANDING)).length;r.elimOrder=1+s.filter((e=>e.elimOrder!==C.ElimOrder.STANDING&&e.elimOrder!==C.ElimOrder.IMMORTAL)).length,e===s.length&&this.player.game.statusBecomeOver()}}get isDowned(){return this.health<0}}T=new WeakMap,d.R.protoNoEnum(F,"_afterAllPlayersConstruction"),Object.freeze(F),Object.freeze(F.prototype);class L extends S{constructor(e,t){var r;super(e,t),Object.defineProperty(this,"familyId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"teamId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"username",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"avatar",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"lastAcceptedRequestId",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"requestInFlight",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=null!==(r=t.avatar)&&void 0!==r?r:L.Avatar.GET_RANDOM(),d.R.propNoWrite(this,"familyId","teamId","username","avatar")}reset(e){super.reset(e),this.status.reset(),this.lastAcceptedRequestId=P.INITIAL_REQUEST_ID,this.requestInFlight=!1}_notifyGameNowPlaying(){}_notifyGameNowPaused(){}_notifyGameNowOver(){}makeMovementRequest(e,t){this.requestInFlight=!0,this.game.processMoveRequest(new P.Movement(this.playerId,this.lastAcceptedRequestId,e,t))}get team(){return this.game.teams[this.teamId]}isTeamedWith(e){return this.team.members.includes(e)}}!function(e){let t;!function(e){e.finalize=function(e){const t=Array.from(new Set(e.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,r)=>(e[t]=r,e)),[]);return e.slice().sort(((e,r)=>t[e.teamId]-t[r.teamId])).map(((e,r)=>Object.assign({},e,{playerId:r,teamId:t[e.teamId]})))}}(t=e.CtorArgs||(e.CtorArgs={})),Object.freeze(t)}(L||(L={})),d.R.protoNoEnum(L,"_notifyGameNowPaused","_notifyGameNowPlaying","_notifyGameNowOver"),Object.freeze(L),Object.freeze(L.prototype);var x,G,D,z,H,k,U,q,B,W,V,K,J=r(115);!function(e){let t;!function(e){e.EUCLID2="EUCLID2",e.BEEHIVE="BEEHIVE"}(t=e.System||(e.System={})),e.equals=function(e,t){return e._equals(t)}}(x||(x={})),Object.freeze(x);class Y extends L{constructor(e,t){super(e,t),Object.defineProperty(this,"_nextMovementTimerMultiplier",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_scheduledMovementCallbackId",{enumerable:!0,configurable:!0,writable:!0,value:void 0})}_notifyGameNowPlaying(){super._notifyGameNowPlaying(),this.delayedMovementContinue()}_notifyGameNowPaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_notifyGameNowOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tile.at(e).langSeq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord),this.getNextMoveType()),this.delayedMovementContinue()}delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this.movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){e.of=(t,r)=>{const s=r.familyId;return new e._Constructors[s](t,r)}}(Y||(Y={})),d.R.protoNoEnum(Y,"movementContinue");class ${constructor(e){Object.defineProperty(this,"entries",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const t=[];for(const r of e)t[r]=new $.Entry;this.entries=t,d.R.propNoWrite(this,"entries")}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){Object.defineProperty(this,"moveCounts",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"totalHealthPickedUp",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(I.J5.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}($||($={})),Object.freeze($),Object.freeze($.prototype);class X{constructor(e,t,r){Object.defineProperty(this,"gameType",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),G.set(this,void 0),Object.defineProperty(this,"langFrontend",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"players",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"operators",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),D.set(this,void 0),Object.defineProperty(this,"teams",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),z.set(this,void 0),Object.defineProperty(this,"_playerStatusCtor",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.gameType=e;const s=this._getGridImplementation(r.coordSys);this.grid=new s({gridClass:s,tileClass:t.tileClass,coordSys:r.coordSys,dimensions:r.gridDimensions}),(0,m.__classPrivateFieldSet)(this,G,t.onGameBecomeOver),this.langFrontend=I.Uo.GET_FRONTEND_DESC_BY_ID(r.langId),this._playerStatusCtor=t.playerStatusCtor,this.players=this.createPlayers(r),this.operators=Object.freeze(this.players.filter((e=>e.isALocalOperator)));{const e=[];if(this.players.forEach((t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)})),this.teams=e.map(((e,t)=>new C(t,e))),this.teams.every((e=>e.id===C.ElimOrder.IMMORTAL)))throw new Error("All teams are immortal. The game will never end.")}d.R.propNoWrite(this,"gameType","grid","langFrontend","players","operators","teams","_playerStatusCtor"),this.players.forEach((e=>e._afterAllPlayersConstruction())),this.setCurrentOperator(0)}reset(){return(0,m.__awaiter)(this,void 0,void 0,(function*(){this.grid.reset(),(0,m.__classPrivateFieldSet)(this,z,u.Status.PAUSED)}))}createPlayers(e){const t=e.playerDescs=this.gameType===u.Type.ONLINE?e.playerDescs:L.CtorArgs.finalize(e.playerDescs);return Object.freeze(t.map((e=>e.familyId===L.Family.HUMAN?e.isALocalOperator?this._createOperatorPlayer(e):new L(this,e):this._createArtifPlayer(e))))}serializeResetState(){const e=[],t=this.players.map((e=>e.coord)),r=[];this.grid.forEachTile((t=>{t.lastKnownUpdateId++,e.push({char:t.langChar,seq:t.langSeq}),t.freeHealth&&r.push({coord:t.coord,health:t.freeHealth})}));const s={csps:e,playerCoords:t,healthCoords:r};return d.R.deepFreeze(s),s}deserializeResetState(e){d.R.deepFreeze(e),this.grid.forEachTile(((t,r)=>{t.setLangCharSeqPair(e.csps[r]),t.lastKnownUpdateId++})),e.playerCoords.forEach(((e,t)=>{this.players[t].reset(this.grid.tile.at(e))})),e.healthCoords.forEach((e=>{this.grid.tile.at(e.coord).freeHealth=e.health}))}get currentOperator(){return(0,m.__classPrivateFieldGet)(this,D)}setCurrentOperator(e){const t=this.operators[e];if(void 0===t)throw new Error("never");this.currentOperator!==t&&(t._notifyWillBecomeCurrent(),(0,m.__classPrivateFieldSet)(this,D,t))}get status(){return(0,m.__classPrivateFieldGet)(this,z)}statusBecomePlaying(){if(this.status!==u.Status.PLAYING){if(this.status!==u.Status.PAUSED)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((e=>{e._notifyGameNowPlaying()})),(0,m.__classPrivateFieldSet)(this,z,u.Status.PLAYING)}else console.info("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){this.status!==u.Status.PAUSED?this.status!==u.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowPaused()})),(0,m.__classPrivateFieldSet)(this,z,u.Status.PAUSED)):console.info("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){this.status!==u.Status.OVER&&(this.players.forEach((e=>{e._notifyGameNowOver()})),(0,m.__classPrivateFieldSet)(this,z,u.Status.OVER),(0,m.__classPrivateFieldGet)(this,G).call(this),console.info("game is over!"))}}G=new WeakMap,D=new WeakMap,z=new WeakMap,Object.freeze(X),Object.freeze(X.prototype);class Z extends X{constructor(e,t,r){super(e,t,r),Object.defineProperty(this,"eventRecordBitmap",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),H.set(this,void 0),this.eventRecordBitmap=[],d.R.propNoWrite(this,"eventRecordBitmap")}reset(){const e=super.reset();return this.eventRecordBitmap.fill(!1,0,u.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH),(0,m.__classPrivateFieldSet)(this,H,0),e}get nextUnusedEventId(){return(0,m.__classPrivateFieldGet)(this,H)}_recordEvent(e){const t=e.eventId,r=t%u.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH;this.eventRecordBitmap[r]=!0,this.eventRecordBitmap[(t+u.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH-u.K.EVENT_RECORD_FORWARD_WINDOW_LENGTH)%u.K.EVENT_RECORD_WRAPPING_BUFFER_LENGTH]=!1,(0,m.__classPrivateFieldSet)(this,H,+(0,m.__classPrivateFieldGet)(this,H)+1)}executeTileModEvent(e,t=!0){d.R.deepFreeze(e);const r=this.grid.tile.at(e.coord);return r.lastKnownUpdateId>e.lastKnownUpdateId||(e.newCharSeqPair&&(r.setLangCharSeqPair(e.newCharSeqPair),t&&this.operators.filter((e=>e.tile.destsFrom().get.includes(r))).forEach((e=>e.seqBufferAcceptKey("")))),r.lastKnownUpdateId=e.lastKnownUpdateId,r.freeHealth=e.newFreeHealth),r}executePlayerMoveEvent(e){var t;d.R.deepFreeze(e);const r=this.players[e.playerId],s=e.playerLastAcceptedRequestId-r.lastAcceptedRequestId;if(e.eventId===O.EVENT_ID_REJECT)return void(0===s&&(r.requestInFlight=!1));this._recordEvent(e);const i=this.executeTileModEvent(e.destModDesc,r!==this.currentOperator);if(null===(t=e.tileHealthModDescs)||void 0===t||t.forEach((e=>{this.executeTileModEvent(e)})),!(s>1)){if(r.requestInFlight=!1,!(r===this.currentOperator?1===s:s<=1))throw new RangeError("never");r.status.health=e.newPlayerHealth.health,r.moveTo(i),r.lastAcceptedRequestId=e.playerLastAcceptedRequestId}}executePlayerBubbleEvent(e){this.players[e.playerId].requestInFlight=!1,e.eventId!==O.EVENT_ID_REJECT&&this._recordEvent(e)}}H=new WeakMap,d.R.protoNoEnum(Z,"nextUnusedEventId","_recordEvent"),Object.freeze(Z),Object.freeze(Z.prototype),function(e){class t{constructor(e){Object.defineProperty(this,"x",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"y",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.x=e.x,this.y=e.y,Object.freeze(this)}_equals(e){return this.x===e.x&&this.y===e.y}round(){return new t({x:Math.round(this.x),y:Math.round(this.y)})}oneNorm(e){return this.sub(e).originOneNorm()}originOneNorm(){return Math.abs(this.x)+Math.abs(this.y)}infNorm(e){return this.sub(e).originInfNorm()}originInfNorm(){return Math.max(Math.abs(this.x),Math.abs(this.y))}axialAlignment(e){return this.sub(e).originAxialAlignment()}originAxialAlignment(){return Math.abs(Math.abs(this.x)-Math.abs(this.y))/(Math.abs(this.x)+Math.abs(this.y))}add(e){return new t({x:this.x+e.x,y:this.y+e.y})}sub(e){return new t({x:this.x-e.x,y:this.y-e.y})}mul(e){return new t({x:e*this.x,y:e*this.y})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class r extends M{constructor(e){super(e),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0});const r=[];for(let s=0;sMath.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){const r=this.tile.destsFrom(t).unoccupied.get;if(0===r.length)return this.tile.at(t);if(1===r.length)return r[0];r.sort(((t,r)=>t.coord.oneNorm(e)-r.coord.oneNorm(e))).sort(((t,r)=>t.coord.infNorm(e)-r.coord.infNorm(e)));const s=r[0];for(let t=1;ts.coord.infNorm(e)){r.splice(t);break}if(1===r.length)return r[0];if(s.coord.x-t.x==0||s.coord.y-t.y==0){if(t.axialAlignment(t.sub(e))-.5>0)return s;r.shift()}return r[Math.floor(r.length*Math.random())]}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}getRandomCoordAround(e,r){return new t({x:e.x+Math.trunc(2*r*(Math.random()-.5)),y:e.y+Math.trunc(2*r*(Math.random()-.5))})}_getTileAt(e){return this.grid[e.y][e.x]}_getTileDestsFrom(e,t=1){let r=e.y-t,s=e.y+t+1,i=e.x-t,a=e.x+t+1;return r>=this.dimensions.height||s<0||i>=this.dimensions.width||a<0?[]:this.grid.slice(Math.max(0,r),Math.min(this.dimensions.height,s)).flatMap((e=>e.slice(Math.max(0,i),Math.min(this.dimensions.width,a))))}_getTileSourcesTo(e,t=1){return this._getTileDestsFrom(e,t)}minMovesFromTo(e,t){return Math.min(Math.abs(t.x-e.x),Math.abs(t.y-e.y))}static getSpawnCoords(e,t){const s=[];return e.map((e=>{const i=[];for(;e>0;){let a;do{a=r.getRandomCoord(t)}while(s.find((e=>a._equals(e))));i.push(a),s.push(a),e--}return i}))}static getArea(e){return e.height*e.width}static getDiameterOfLatticePatchHavingArea(e){return Math.sqrt(e)}static getRandomCoord(e){const r=Math.floor(e.width*Math.random()),s=Math.floor(e.height*Math.random());return new t({x:r,y:s})}}Object.defineProperty(r,"SIZE_LIMITS",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({height:Object.freeze({min:11,max:51}),width:Object.freeze({min:11,max:51})})}),e.Grid=r,d.R.protoNoEnum(r,"_getTileAt","_getTileDestsFrom","_getTileSourcesTo"),Object.freeze(r),Object.freeze(r.prototype)}(k||(k={})),Object.freeze(k),function(e){class t{constructor(e){Object.defineProperty(this,"dash",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"bash",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.dash=e.dash,this.bash=e.bash,Object.freeze(this)}_equals(e){return this.dash===e.dash&&this.bash===e.bash}round(){const e=Math.floor(this.dash),r=Math.floor(this.bash),s=e-this.dash,i=r-this.bash;return s>2*i?new t({dash:e+1,bash:r}):s<.5*i?new t({dash:e,bash:r+1}):Math.min(s,i)>.5?new t({dash:e+1,bash:r+1}):new t({dash:e,bash:r})}add(e){return new t({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new t({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new t({dash:e*this.dash,bash:e*this.bash})}}e.Coord=t,Object.freeze(t),Object.freeze(t.prototype);class r extends M{constructor(e){super(e),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.grid=Object.freeze(void 0)}static getAmbiguityThreshold(){return 18}static getSizeLimits(){return this.SIZE_LIMITS}forEachTile(e){let t=0;for(const r of this.grid)for(const s of r)e(s,t++)}shuffledForEachTile(e){this.grid.flat().sort(((e,t)=>Math.random()-.5)).forEach((t=>e(t)))}getUntToward(e,t){}getUntAwayFrom(e,t){return this.getUntToward(t.add(t.sub(e)),t)}getRandomCoordAround(e,t){}_getTileAt(e){}_getTileDestsFrom(e,t=1){}_getTileSourcesTo(e,t=1){}minMovesFromTo(e,t){}getDestsFromSourcesTo(e){return this._getTileDestsFrom(e,2)}static getSpawnCoords(e,t){}static getArea(e){const t=Math.min(e.fslash,e.bslash),r=Math.max(e.fslash,e.bslash),s=-1+e.dash+t;let i=2*t*(e.dash+s);return i+=(r-t-1)*s,i}static getDiameterOfLatticePatchHavingArea(e){if(e<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-e)))/6*2}static getRandomCoord(e){return new t(void 0)}}Object.defineProperty(r,"SIZE_LIMITS",{enumerable:!0,configurable:!0,writable:!0,value:Object.freeze({dash:Object.freeze({min:10,max:50}),bslash:Object.freeze({min:10,max:50}),fslash:Object.freeze({min:10,max:50})})}),e.Grid=r,d.R.protoNoEnum(r,"_getTileAt","_getTileDestsFrom","_getTileSourcesTo"),Object.freeze(r),Object.freeze(r.prototype)}(U||(U={})),Object.freeze(U);class Q extends Y{constructor(e,t){super(e,t),Object.defineProperty(this,"threatProximity",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"targetProximity",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"behaviour",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"grid",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),q.set(this,void 0),this.behaviour=Object.freeze(Object.assign({},Q.Behaviour.DEFAULT,t.familyArgs)),this.grid=this.game.grid}_afterAllPlayersConstruction(){super._afterAllPlayersConstruction(),this.threatProximity=this.game.teams.filter((e=>e.id!==this.teamId)).flatMap((e=>e.members)),this.targetProximity=[...this.threatProximity],d.R.propNoWrite(this,"threatProximity","targetProximity","behaviour","grid")}reset(e){super.reset(e),(0,m.__classPrivateFieldSet)(this,q,this.coord)}moveTo(e){(0,m.__classPrivateFieldSet)(this,q,this.coord),super.moveTo(e)}computeDesiredDest(){this.threatProximity.sort(((e,t)=>this.grid.minMovesFromTo(e.coord,this.coord)-this.grid.minMovesFromTo(t.coord,this.coord)));for(const e of this.threatProximity){if(this.grid.minMovesFromTo(e.coord,this.coord)>this.behaviour.fearDistance)break;if(!e.status.isDowned&&e.status.health>this.status.health)return this.grid.getUntAwayFrom(e.coord,this.coord).coord}if(this.targetProximity.sort(((e,t)=>this.grid.minMovesFromTo(this.coord,e.coord)-this.grid.minMovesFromTo(this.coord,t.coord))),this.status.isDowned)for(const e of this.targetProximity){if(this.grid.minMovesFromTo(this.coord,e.coord)>this.behaviour.bloodThirstDistance)break;if(e.status.health{M._Constructors=Object.freeze({EUCLID2:k.Grid,BEEHIVE:U.Grid}),Object.freeze(M),Object.freeze(M.prototype);{const e=Y;e._Constructors=Object.freeze({CHASER:Q}),Object.freeze(e),Object.freeze(e.prototype)}})();class ee extends Z{constructor(e,t,s){super(e,t,s),Object.defineProperty(this,"averageFreeHealth",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"averageFreeHealthPerTile",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"healthCostOfBoost",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),B.set(this,void 0),W.set(this,void 0),Object.defineProperty(this,"lang",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),V.set(this,void 0),Object.defineProperty(this,"scoreInfo",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.averageFreeHealth=s.averageFreeHealthPerTile*this.grid.area,this.averageFreeHealthPerTile=s.averageFreeHealthPerTile,this.healthCostOfBoost=u.K.HEALTH_COST_OF_BOOST(this.averageFreeHealthPerTile,this.grid.static.getDiameterOfLatticePatchHavingArea),(0,m.__classPrivateFieldSet)(this,W,new Set),this.scoreInfo=new $(this.players.map((e=>e.playerId))),d.R.propNoWrite(this,"averageFreeHealth","averageFreeHealthPerTile","healthCostOfBoost","scoreInfo"),(0,m.__classPrivateFieldSet)(this,V,r(59)(`./${this.langFrontend.module}.ts`).then((e=>{const t=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),e[this.langFrontend.module]);return this.lang=new t(s.langWeightExaggeration),d.R.propNoWrite(this,"lang"),this.grid.static.getAmbiguityThreshold(),this.lang})))}reset(){const e=Object.create(null,{reset:{get:()=>super.reset}});return(0,m.__awaiter)(this,void 0,void 0,(function*(){yield e.reset.call(this),(0,m.__classPrivateFieldSet)(this,B,0),(0,m.__classPrivateFieldGet)(this,W).clear(),yield(0,m.__classPrivateFieldGet)(this,V),this.lang.reset(),this.grid.shuffledForEachTile((e=>{e.setLangCharSeqPair(this.dryRunShuffleLangCharSeqAt(e))})),this.teams.forEach((e=>e.reset()));const t=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((e,r)=>{e.members.forEach(((e,s)=>{e.reset(this.grid.tile.at(t[r][s]))}))})),this.scoreInfo.reset(),Promise.resolve()}))}_createArtifPlayer(e){return Y.of(this,e)}dryRunShuffleLangCharSeqAt(e,t=!1){e.setLangCharSeqPair(J.U.CharSeqPair.NULL);let r=this.grid.getDestsFromSourcesTo(e.coord).map((e=>e.langSeq));if(t){const e=J.U.CharSeqPair.NULL.seq;r=r.filter((t=>t!==e))}return Object.freeze(r),this.lang.getNonConflictingChar(r)}get currentFreeHealth(){return(0,m.__classPrivateFieldGet)(this,B)}get freeHealthTiles(){return(0,m.__classPrivateFieldGet)(this,W)}dryRunSpawnFreeHealth(e){var t;let r=this.averageFreeHealth-this.currentFreeHealth;if(r<=0)return;const s=[];for(;r>0;){let i;do{i=this.grid.tile.at(this.grid.getRandomCoord())}while(i.isOccupied||s.find((e=>x.equals(i.coord,e.coord))));const a=u.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random()x.equals(i.coord,e.coord))))?r.newFreeHealth=(null!==(t=r.newFreeHealth)&&void 0!==t?t:0)+a:s.push({coord:i.coord,lastKnownUpdateId:1+i.lastKnownUpdateId,newFreeHealth:i.freeHealth+a})}r-=a}return s}executeTileModEvent(e,t=!0){d.R.deepFreeze(e);const r=this.grid.tile.at(e.coord);return(0,m.__classPrivateFieldSet)(this,B,(0,m.__classPrivateFieldGet)(this,B)+(e.newFreeHealth-r.freeHealth)),0===e.newFreeHealth?(0,m.__classPrivateFieldGet)(this,W).delete(r):(0,m.__classPrivateFieldGet)(this,W).add(r),super.executeTileModEvent(e,t),r}managerCheckGamePlayingRequest(e){if(this.status!==u.Status.PLAYING)return;const t=this.players[e.playerId];if(!t)throw new Error("No such player exists.");if(e.playerLastAcceptedRequestId!==t.lastAcceptedRequestId)throw new RangeError(e.playerLastAcceptedRequestId{},tileClass:R,playerStatusCtor:F},e.gameDesc),Object.defineProperty(this,"namespace",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_groupHostClient",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"gameEvSocketListeners",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_deleteExternalRefs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"playerSockets",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this._groupHostClient=e.groupHostClient,this._deleteExternalRefs=e.deleteExternalRefs,d.R.instNoEnum(this,"operators","_deleteExternalRefs"),d.R.propNoWrite(this,"_groupHostClient","_deleteExternalRefs"),this.namespace=e.groupNsps.server.of(p.Nsps.GROUP_GAME_PREFIX+e.groupNsps.name.replace(p.Nsps.GROUP_LOBBY_PREFIX,"")),d.R.propNoWrite(this,"namespace"),this.gameEvSocketListeners=Object.freeze({[P.EVENT_NAME.MOVEMENT]:this.processMoveRequest.bind(this),[P.EVENT_NAME.BUBBLE]:this.processBubbleRequest.bind(this),[h.PAUSE]:this.statusBecomePaused.bind(this),[h.UNPAUSE]:this.statusBecomePlaying.bind(this)}),d.R.instNoEnum(this,"gameEvSocketListeners"),d.R.propNoWrite(this,"gameEvSocketListeners"),this._awaitGameSockets(e)}_getGridImplementation(e){return M.getImplementation(e)}_awaitGameSockets(e){const t=new Map,r=Array.from(e.groupNsps.sockets.values(),(e=>new Promise((r=>{t.set(e.client.id,r)}))));Promise.all(r).then((()=>{this.namespace.removeAllListeners("connect"),this._greetGameSockets(e.gameDesc)})).catch((e=>{setImmediate((()=>{throw e}))})),this.namespace.on("connect",(e=>{e.on("disconnect",(()=>{1===this.namespace.sockets.size&&this.terminate()})),t.get(e.client.id)()})),e.groupNsps.emit(c.CREATE_GAME)}_greetGameSockets(e){const t=e.playerDescs.filter((e=>e.familyId===L.Family.HUMAN));{const e=new Map(Array.from(this.namespace.sockets.values(),(e=>[e.client.id,e])));this.playerSockets=t.reduce(((t,r)=>{if(void 0===r.clientId)throw new Error("missing socket client for player with ID "+r.playerId);const s=e.get(r.clientId);if(void 0===s)throw new Error("never");return t.set(r.playerId,s),t}),new Map),d.R.propNoWrite(this,"playerSockets")}Promise.all(Array.from(this.namespace.sockets.values(),(e=>new Promise((t=>{e.once(h.RESET,(()=>{t()}))}))))).then((()=>{this.reset()}));for(const e of this.namespace.sockets.values())e.on(h.RETURN_TO_LOBBY,(()=>{e.client===this._groupHostClient?(this.statusBecomeOver(),e.broadcast.emit(h.RETURN_TO_LOBBY),this.terminate()):e.broadcast.emit(h.RETURN_TO_LOBBY,e.id)})),Object.entries(this.gameEvSocketListeners).forEach((([t,r])=>{e.on(t,r)}));for(const r of this.namespace.sockets.values())t.forEach((e=>{e.isALocalOperator=e.clientId===r.client.id})),r.emit(h.CREATE_GAME,e)}async reset(){Promise.all(Array.from(this.namespace.sockets.values(),(e=>new Promise((t=>{e.once(h.UNPAUSE,(()=>{t()}))}))))).then((()=>{this.statusBecomePlaying()}));const e=super.reset();return await e,this.namespace.emit(h.RESET,this.serializeResetState()),e}_createOperatorPlayer(e){throw new TypeError("This should never be called for a ServerGame.")}setCurrentOperator(e){}setTimeout(e,t,...r){return setTimeout(e,t,r).unref()}cancelTimeout(e){clearTimeout(e)}statusBecomePlaying(){super.statusBecomePlaying(),this.namespace.emit(h.UNPAUSE)}statusBecomePaused(){super.statusBecomePaused(),this.namespace.emit(h.PAUSE)}executePlayerMoveEvent(e){super.executePlayerMoveEvent(e),e.eventId===O.EVENT_ID_REJECT?this.playerSockets.get(e.playerId).emit(P.EVENT_NAME.MOVEMENT,e):this.namespace.emit(P.EVENT_NAME.MOVEMENT,e)}executePlayerBubbleEvent(e){super.executePlayerBubbleEvent(e),e.eventId===O.EVENT_ID_REJECT?this.playerSockets.get(e.playerId).emit(P.EVENT_NAME.BUBBLE,e):this.namespace.emit(P.EVENT_NAME.BUBBLE,e)}terminate(){for(const e of this.namespace.sockets.values())e.disconnect(),e.removeAllListeners();this.namespace.removeAllListeners(),this._deleteExternalRefs()}}d.R.protoNoEnum(te,"_awaitGameSockets","_greetGameSockets","_getGridImplementation","_createOperatorPlayer","setCurrentOperator"),Object.freeze(te),Object.freeze(te.prototype);class re extends f{constructor(e){super(),Object.defineProperty(this,"namespace",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"name",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"passphrase",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),K.set(this,void 0),Object.defineProperty(this,"_sessionHost",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"socketListeners",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_initialTtlTimeout",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_deleteExternalRefs",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.namespace=e.namespace,this.name=e.name,this.passphrase=e.passphrase,(0,m.__classPrivateFieldSet)(this,K,void 0),this._deleteExternalRefs=e.deleteExternalRefs,this._initialTtlTimeout=setTimeout((()=>{0===this.namespace.sockets.size&&this.terminate()}),1e3*re.DEFAULT_TTL).unref(),this.socketListeners=Object.freeze({disconnect:(e,t)=>{if(e===this._sessionHost)return void this.terminate();if(1===this.namespace.sockets.size)return void this.terminate();const r={[e.id]:void 0};e.nsp.emit(re.Socket.UserInfoChange.EVENT_NAME,r)},[re.Socket.UserInfoChange.EVENT_NAME]:(e,t)=>{if("string"!=typeof t.username||"number"!=typeof t.teamId||"string"!=typeof t.avatar)return void console.log(`bad format: username: \`${t.username}\`, teamId: \`${t.teamId}\`, avatar: \`${t.avatar}\`.`);e.userInfo=t;const r={[e.id]:t};e.nsp.emit(re.Socket.UserInfoChange.EVENT_NAME,r)}}),d.R.instNoEnum(this,"socketListeners"),d.R.propNoWrite(this,"socketListeners"),this.namespace.use(((e,t)=>{e.handshake.auth.passphrase!==this.passphrase&&t(new Error("Incorrect passphrase"));const r=e.handshake.auth.userInfo;return void 0!==r&&0===r.teamId||t(new Error(`a socket attempted to connect to group \`${this.name}\` without providing userInfo.`)),t()})).on("connection",this.onConnection.bind(this))}onConnection(e){console.info(`socket connect (group): ${e.id}`),(0,m.__classPrivateFieldGet)(this,K)&&e.disconnect(),e.userInfo=e.handshake.auth.userInfo;{const t=re.Socket.UserInfoChange.EVENT_NAME;e.nsp.emit(t,{[e.id]:e.userInfo});const r={};for(const[e,t]of this.sockets.entries())r[e]=t.userInfo;e.emit(t,r)}1===e.nsp.sockets.size&&(clearTimeout(this._initialTtlTimeout),this._initialTtlTimeout=void 0,this._sessionHost=e,this.namespace.server.of(p.Nsps.GROUP_JOINER).emit(re.Exist.EVENT_NAME,{[this.name]:re.Exist.Status.IN_LOBBY}),e.on(c.CREATE_GAME,this._socketOnHostCreateGame.bind(this))),Object.entries(this.socketListeners).forEach((([t,r])=>{e.on(t,r.bind(this,e))}))}_socketOnHostCreateGame(e){const t=this._createGameInstance(e);t.length?console.info(t):(this.namespace.server.of(p.Nsps.GROUP_JOINER).emit(re.Exist.EVENT_NAME,{[this.name]:re.Exist.Status.IN_GAME}),console.info(`group ${this.name} new game`))}get isCurrentlyPlayingAGame(){return void 0!==(0,m.__classPrivateFieldGet)(this,K)}terminate(){function e(e){e.removeAllListeners("connect"),e.removeAllListeners("connection");for(const t of e.sockets.values())t.disconnect(!1),t.removeAllListeners();e.removeAllListeners(),e.server._nsps.delete(e.name)}void 0!==(0,m.__classPrivateFieldGet)(this,K)&&(e((0,m.__classPrivateFieldGet)(this,K).namespace),(0,m.__classPrivateFieldSet)(this,K,void 0));const t=this.namespace.server;e(this.namespace),this.namespace=void 0,this._deleteExternalRefs(),t.of(p.Nsps.GROUP_JOINER).emit(re.Exist.EVENT_NAME,{[this.name]:re.Exist.Status.DELETE}),console.info(`terminated group: \`${this.name}\``)}_createGameInstance(e){const t=[];return this.isCurrentlyPlayingAGame?(t.push("a game is already in session for this group"),t):(t.push(...ee.CHECK_VALID_CTOR_ARGS(e)),t.length?t:(e.playerDescs=[...e.playerDescs,...Array.from(this.sockets.values(),(e=>Object.freeze({isALocalOperator:!1,familyId:"HUMAN",teamId:e.userInfo.teamId,clientId:e.client.id,username:e.userInfo.username,avatar:e.userInfo.avatar,noCheckGameOver:!1,familyArgs:{}})))],(0,m.__classPrivateFieldSet)(this,K,new te({groupNsps:this.namespace,groupHostClient:this._sessionHost.client,deleteExternalRefs:()=>{(0,m.__classPrivateFieldSet)(this,K,void 0)},gameDesc:e})),[]))}get sockets(){return this.namespace.sockets}}K=new WeakMap,d.R.protoNoEnum(re,"_socketOnHostCreateGame"),Object.freeze(re),Object.freeze(re.prototype);class se extends p{constructor(e,t){var r;void 0===e&&(e=Number.parseInt(null!==(r=process.env.PORT)&&void 0!==r?r:se.DEFAULT_PORT.toString())),void 0===t&&(t=void 0),super(),Object.defineProperty(this,"http",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"app",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"io",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"allGroups",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),Object.defineProperty(this,"_joinerSocketListeners",{enumerable:!0,configurable:!0,writable:!0,value:void 0}),this.app=o(),this.http=a.createServer({},this.app),this.io=new l.Server(this.http,{}),this.allGroups=new Map,d.R.propNoWrite(this,"http","app","io","allGroups");const s=i.resolve(__dirname,"../client");this.app.disable("x-powered-by"),this.app.use("/",n(s,{enableBrotli:!0,serveStatic:{setHeaders:(e,t,r)=>{e.setHeader("X-Content-Type-Options","nosniff"),"text/html"===o.static.mime.lookup(t)&&e.setHeader("Cache-Control","public, max-age=0")}}})),this.http.listen({port:e,host:t},(()=>{const t=this.http.address();console.info(`\n\nServer mounted to: \`${t.address}${t.port}\` using ${t.family}.\n`),console.info("This host can be reached at any of the following addresses:\n"),se.chooseIPAddress().sort().forEach((t=>{console.info(`${t}:${e}`)})),console.info("")})),this._joinerSocketListeners=Object.freeze({[re.Exist.EVENT_NAME]:(e,t)=>{!t.groupName||this.allGroups.has(t.groupName)||t.groupName.length>re.Name.MaxLength||!t.groupName.match(re.Name.REGEXP)||t.passphrase.length>re.Passphrase.MaxLength||!t.passphrase.match(re.Passphrase.REGEXP)?e.emit(re.Exist.EVENT_NAME,re.Exist.RequestCreate.Response.NOPE):(this.allGroups.set(t.groupName,new re(Object.freeze({namespace:this.io.of(se.Nsps.GROUP_LOBBY_PREFIX+t.groupName),name:t.groupName,passphrase:t.passphrase,deleteExternalRefs:()=>this.allGroups.delete(t.groupName)}))),e.emit(re.Exist.EVENT_NAME,re.Exist.RequestCreate.Response.OKAY))}}),d.R.instNoEnum(this,"_joinerSocketListeners"),d.R.propNoWrite(this,"_joinerSocketListeners"),this.io.of(se.Nsps.GROUP_JOINER).on("connection",this.onJoinerNspsConnection.bind(this))}onJoinerNspsConnection(e){console.info(`socket connect (server): ${e.id}`),e.emit(re.Exist.EVENT_NAME,(()=>{const e={};for(const[t,r]of this.allGroups)e[t]=r.isCurrentlyPlayingAGame?re.Exist.Status.IN_GAME:re.Exist.Status.IN_LOBBY;return e})()),Object.entries(this._joinerSocketListeners).forEach((([t,r])=>{e.on(t,r.bind(this,e))}))}}!function(e){e.chooseIPAddress=()=>Object.values(s.networkInterfaces()).flat().filter((e=>!e.internal)).map((e=>"IPv6"===e.family?`[${e.address}]`:e.address))}(se||(se={})),Object.freeze(se),Object.freeze(se.prototype);const ie=new se},59:(e,t,r)=>{var s={"./Chinese.ts":[216,7,330],"./Emote.ts":[655,9,858],"./English.ts":[891,9,184],"./Japanese.ts":[800,9,410],"./Korean.ts":[3,9,227],"./Ngrams.ts":[492,9,273],"./Numpad.ts":[193,9,683],"./Shell.ts":[521,9,159],"./defs/Chinese.ts":[958,7,704],"./defs/English100.ts":[213,9,885]};function i(e){if(!r.o(s,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=s[e],i=t[0];return r.e(t[2]).then((()=>r.t(i,16|t[1])))}i.keys=()=>Object.keys(s),i.id=59,e.exports=i},780:e=>{"use strict";e.exports=require("tslib")}},i={};function a(e){if(i[e])return i[e].exports;var t=i[e]={exports:{}};return s[e](t,t.exports,a),t.exports}return a.m=s,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,a.t=function(r,s){if(1&s&&(r=this(r)),8&s)return r;if("object"==typeof r&&r){if(4&s&&r.__esModule)return r;if(16&s&&"function"==typeof r.then)return r}var i=Object.create(null);a.r(i);var o={};e=e||[null,t({}),t([]),t(t)];for(var n=2&s&&r;"object"==typeof n&&!~e.indexOf(n);n=t(n))Object.getOwnPropertyNames(n).forEach((e=>o[e]=()=>r[e]));return o.default=()=>r,a.d(i,o),i},a.d=(e,t)=>{for(var r in t)a.o(t,r)&&!a.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},a.f={},a.e=e=>Promise.all(Object.keys(a.f).reduce(((t,r)=>(a.f[r](e,t),t)),[])),a.u=e=>"chunk/"+{159:"lang/Shell-ts",184:"lang/English-ts",227:"lang/Korean-ts",273:"lang/Ngrams-ts",330:"lang/Chinese-ts",410:"lang/Japanese-ts",683:"lang/Numpad-ts",704:"lang/defs-Chinese-ts",858:"lang/Emote-ts",885:"lang/defs-English100-ts"}[e]+".js",a.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),a.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r={826:1},a.f.require=function(e,t){r[e]||(e=>{var t=e.modules,s=e.ids,i=e.runtime;for(var o in t)a.o(t,o)&&(a.m[o]=t[o]);i&&i(a);for(var n=0;n{var e,t,s,r={164:(e,t,s)=>{"use strict";s.d(t,{R:()=>i});const r=Object.freeze({enumerable:!1}),o=Object.freeze({writable:!1});var i;!function(e){function t(e){for(const s of Object.getOwnPropertyNames(e)){const r=e[s];null!==r&&"object"==typeof r&&t(r)}Object.freeze(e)}function s(e,t,...s){for(const r of s)Object.defineProperty(t,r,e)}let i;var a;e.deepFreeze=function(e){return t(e),e},e.hasProp=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},e.protoNoEnum=function(e,...t){Object.getOwnPropertyNames(e.prototype).freeze(),t.forEach((t=>{Object.defineProperty(e.prototype,t,r)}))},e.instNoEnum=s.bind(null,r),e.propNoWrite=s.bind(null,o),e.camelCaseTransforms=function(e){const t=e.replace(/[A-Z]/g,(e=>" "+e.toLowerCase()));return Object.freeze({spaceyLowercase:t,spaceyUppercase:t.toUpperCase(),spaceyCapitalized:t.split(" ").map((e=>e.charAt(0).toUpperCase()+e.substring(1))).join(" ")})},(a=i=e.Web||(e.Web={})).prependComment=function(e,t){e.parentNode.insertBefore(document.createComment(" "+t+" "),e)},a.adoptStyleSheet=function(t,s){t.appendChild(e.html("link",[],{rel:"stylesheet",href:s}))},a._makeSmartStorage=function(e,t,s){const r={};return Object.keys(s).forEach((e=>{const s=""+e;Object.defineProperty(r,e,{enumerable:!0,get:()=>{const e=t.getItem(s);return null===e?void 0:JSON.parse(e)},set:e=>{t.setItem(s,JSON.stringify(e))}})})),r},e.html=function(e,t,s){const r=document.createElement(e);try{Object.seal(r)}catch(e){}return(null==t?void 0:t.length)&&r.classList.add(...t),"button"===e?r.type="button":"a"===e&&(r.rel="noopener"),void 0!==s&&Object.assign(r,s),r},e.svg=function(e,t,s){const r=document.createElementNS("http://www.w3.org/2000/svg",e);return Object.seal(r),(null==t?void 0:t.length)&&r.classList.add(...t),void 0!==s&&Object.assign(r,s),r}}(i||(i={})),Object.freeze(i)},387:()=>{Object.defineProperties(Array.prototype,{freeze:{value:function(){return Object.freeze(this)},enumerable:!0},seal:{value:function(){return Object.seal(this)},enumerable:!0}}),["Object","String","Number","RegExp","Date","Array","Map","Set","WeakMap","WeakSet"].forEach((e=>{Object.defineProperty(globalThis,e,{enumerable:!0,writable:!1,configurable:!1}),Object.freeze(globalThis[e]),Object.freeze(globalThis[e].prototype)}))},139:(e,t,s)=>{"use strict";s.d(t,{Uo:()=>h,J5:()=>n});var r=s(164);const o=Object.freeze({IDENT:e=>e,LOWER:e=>e.toLowerCase()}),i={"engl-low":{module:"English",export:"Lowercase",isolatedMinOpts:25,remapFunc:o.LOWER,displayName:"English Lowercase (qwerty)",blurb:""},"engl-mix":{module:"English",export:"MixedCase",isolatedMinOpts:51,remapFunc:o.IDENT,displayName:"English Mixed-Case (Querty)",blurb:""},"japn-hir":{module:"Japanese",export:"Hiragana",isolatedMinOpts:70,remapFunc:o.LOWER,displayName:"Japanese Hiragana",blurb:""},"japn-kat":{module:"Japanese",export:"Katakana",isolatedMinOpts:68,remapFunc:o.LOWER,displayName:"Japanese Katakana",blurb:""},"kore-dub":{module:"Korean",export:"Dubeolsik",isolatedMinOpts:8690,remapFunc:o.IDENT,displayName:"Korean Dubeolsik (두벌식 키보드)",blurb:"The most common keyboard layout, and South Korea's only Hangul standard since 1969. Consonants are on the left, and vowels on the right."},"kore-sub":{module:"Korean",export:"Sebeolsik",isolatedMinOpts:10179,remapFunc:o.IDENT,displayName:"Korean Sebeolsik (세벌식 최종 키보드)",blurb:"Another Hangul keyboard layout used in South Korea, and the final Sebeolsik layout designed by Dr. Kong Byung Woo, hence the name. Syllable-initial consonants are on the right, final consonants on the left, and vowels in the middle. It is more ergonomic than the dubeolsik, but not widely used."},"kore-rom":{module:"Korean",export:"Romanization",isolatedMinOpts:3960,remapFunc:o.LOWER,displayName:"Korean Revised Romanization",blurb:"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字 表記法) is the official South Korean language romanization system. It was developed by the National Academy of the Korean Language from 1995, and was released on 7 July 2000 by South Korea's Ministry of Culture and Tourism"},"engl-cell-enc":{module:"English",export:"OldCellphone.Encode",isolatedMinOpts:7,remapFunc:o.IDENT,displayName:"Old Cellphone Keyboard",blurb:""},"mors-enc":{module:"English",export:"Morse.Encode",isolatedMinOpts:10,remapFunc:e=>e,displayName:"Morse Encoder",blurb:""},"mors-dec":{module:"English",export:"Morse.Decode",isolatedMinOpts:40,remapFunc:o.LOWER,displayName:"Morse Decoder",blurb:""},ngram2:{module:"Ngrams",export:"Ngram2",isolatedMinOpts:199,remapFunc:o.LOWER,displayName:"English Bigrams",blurb:""},ngram3:{module:"Ngrams",export:"Ngram3",isolatedMinOpts:400,remapFunc:o.LOWER,displayName:"English Trigrams",blurb:""},numpad:{module:"Numpad",export:"Numpad",isolatedMinOpts:100,remapFunc:o.LOWER,displayName:"Number Pad",blurb:""}};Object.entries(i).forEach((([e,t])=>{t.id=e})),r.R.deepFreeze(i);const a=i;Object.freeze({behavior:"smooth",block:"center",inline:"center"});class n{}!function(e){let t,s;var r;let o;e.Family=Object.freeze({HUMAN:"HUMAN",CHASER:"CHASER"}),e.Family,(t=e.Id||(e.Id={})).NULL=-1,(r=s=e.Username||(e.Username={})).REGEXP=/[ a-zA-Z0-9:-]+/,r.MAX_LENGTH=15,(o=e.Avatar||(e.Avatar={})).LOREM_IPSUM="lorem-ipsum",function(e){const t=Object.values(e).filter((e=>"string"==typeof e));e.GET_RANDOM=function(){return t[Math.floor(Math.random()*t.length)]}}(o=e.Avatar||(e.Avatar={}))}(n||(n={})),Object.freeze(n);class h{}!function(e){let t,s,r;(t=e.Seq||(e.Seq={})).REGEXP=new RegExp("^[a-zA-Z0-9!@#$%^&*()-_=+;:'\"\\|,.<>/?]+$"),(s=e.CharSeqPair||(e.CharSeqPair={})).NULL=Object.freeze({char:"",seq:""}),(r=e.WeightExaggeration||(e.WeightExaggeration={})).MAX=4,e.CHAR_HIT_COUNT_SEED_CEILING=5,e.FrontendDescs=a,e.GET_FRONTEND_DESC_BY_ID=function(t){return e.FrontendDescs[t]}}(h||(h={})),Object.freeze(h),Object.freeze(h.prototype)},208:(e,t,s)=>{"use strict";s.d(t,{U:()=>c});var r,o=s(164),i=s(139),a=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},n=(e,t,s)=>(a(e,t,"read from private field"),s?s.call(e):t.get(e));!function(e){var t;const s=class{constructor(e,s="",r){var o,i,n;t.set(this,[]),this.carryHits=0,Object.defineProperty(this,"parent",{enumerable:!0,value:e}),Object.defineProperty(this,"seq",{enumerable:!0,value:s}),Object.defineProperty(this,"children",{enumerable:!0,value:[]}),o=this,i=t,n=Object.freeze(r),a(o,i,"write to private field"),i.set(o,n),Object.seal(this)}get ownHits(){var e,t;return this.carryHits-(null!=(t=null==(e=this.parent)?void 0:e.carryHits)?t:0)}reset(){this.carryHits=0;for(const e of this.children)e.reset();for(const e of n(this,t))e.reset(),this.incrHits(e,Math.random()*i.Uo.CHAR_HIT_COUNT_SEED_CEILING)}getLeaves(){const e=[];return this._rGetLeaves(e),e.freeze()}_rGetLeaves(e){if(this.children.length)for(const t of this.children)t._rGetLeaves(e);else e.push(this)}chooseOnePair(){let e=n(this,t)[0];for(const s of n(this,t))s.hits{const r=new h(e,o(s)),a=i.get(t);void 0!==a?a.push(r):i.set(t,[r])}));const a=[];let n;for(const[e,t]of Array.from(i).seal().sort((([e],[t])=>e1;if(1===e)return e=>e;const s=Object.values(t),r=s.reduce(((e,t)=>e+t.weight),0)/s.length;return t=>Math.pow(t/r,e)}t=new WeakMap,r.LEAF_CMP=(e,t)=>e.carryHits-t.carryHits,e.Node=r,o.R.protoNoEnum(r,"_rGetLeaves","_rIncrHits"),Object.freeze(r),Object.freeze(r.prototype),e.GET_SCALE_WEIGHT_FUNC=c,Object.freeze(c)}(r||(r={})),Object.freeze(r);class h{constructor(e,t){this.char=e,this.hits=0,this.char=e,Object.defineProperty(this,"weightInv",{enumerable:!0,value:1/t}),Object.seal(this)}reset(){this.hits=0}_incrementNumHits(){this.hits+=this.weightInv}}Object.freeze(h),Object.freeze(h.prototype);class c extends i.Uo{constructor(e,t){super(),this.frontendDesc=c.GET_FRONTEND_DESC_BY_ID(e),this.treeRoots=r.Node.CREATE_TREE_MAP(Object.getPrototypeOf(this).constructor.BUILD(),t);const s=this.treeRoots.map((e=>e.getLeaves()));this.leafNodes=s.flat(),this.isolatedMinOpts=s.map((e=>e.length)).sort().slice(0,-1).reduce(((e,t)=>e+t),0),o.R.propNoWrite(this,"frontendDesc","treeRoots","leafNodes","isolatedMinOpts"),Object.seal(this)}reset(){for(const e of this.treeRoots)e.reset()}getNonConflictingChar(e){this.leafNodes.sort(r.Node.LEAF_CMP);e:for(const t of this.leafNodes){let s=t;for(let r=t;void 0!==r;r=r.parent){const t=e.find((e=>e.startsWith(r.seq)));if(t){if(t.length>r.seq.length)break;continue e}r.ownHits(e[t]={seq:t,weight:s},e)),{})}}(c||(c={})),Object.freeze(c),Object.freeze(c.prototype)},59:(e,t,s)=>{var r={"./Chinese.ts":[83,7,330],"./Emote.ts":[985,9,858],"./English.ts":[825,9,184],"./Japanese.ts":[885,9,410],"./Korean.ts":[969,9,227],"./Ngrams.ts":[755,9,273],"./Numpad.ts":[444,9,683],"./Shell.ts":[25,9,159],"./defs/Chinese.ts":[711,7,704],"./defs/English100.ts":[589,9,885]};function o(e){if(!s.o(r,e))return Promise.resolve().then((()=>{var t=new Error("Cannot find module '"+e+"'");throw t.code="MODULE_NOT_FOUND",t}));var t=r[e],o=t[0];return s.e(t[2]).then((()=>s.t(o,16|t[1])))}o.keys=()=>Object.keys(r),o.id=59,e.exports=o}},o={};function i(e){if(o[e])return o[e].exports;var t=o[e]={exports:{}};return r[e](t,t.exports,i),t.exports}i.m=r,i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,i.t=function(s,r){if(1&r&&(s=this(s)),8&r)return s;if("object"==typeof s&&s){if(4&r&&s.__esModule)return s;if(16&r&&"function"==typeof s.then)return s}var o=Object.create(null);i.r(o);var a={};e=e||[null,t({}),t([]),t(t)];for(var n=2&r&&s;"object"==typeof n&&!~e.indexOf(n);n=t(n))Object.getOwnPropertyNames(n).forEach((e=>a[e]=()=>s[e]));return a.default=()=>s,i.d(o,a),o},i.d=(e,t)=>{for(var s in t)i.o(t,s)&&!i.o(e,s)&&Object.defineProperty(e,s,{enumerable:!0,get:t[s]})},i.f={},i.e=e=>Promise.all(Object.keys(i.f).reduce(((t,s)=>(i.f[s](e,t),t)),[])),i.u=e=>"chunk/"+{159:"lang/Shell-ts",184:"lang/English-ts",227:"lang/Korean-ts",273:"lang/Ngrams-ts",330:"lang/Chinese-ts",410:"lang/Japanese-ts",683:"lang/Numpad-ts",704:"lang/defs-Chinese-ts",858:"lang/Emote-ts",885:"lang/defs-English100-ts"}[e]+".js",i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s={826:1},i.f.require=function(e,t){s[e]||(e=>{var t=e.modules,r=e.ids,o=e.runtime;for(var a in t)i.o(t,a)&&(i.m[a]=t[a]);o&&o(i);for(var n=0;n{"use strict";i.r(a),i.d(a,{chooseIPAddress:()=>Le,wss:()=>ke}),i(387);const e=require("os");var t=i.n(e);const s=require("fs");var r=i.n(s);const o=require("path");var n=i.n(o);const h=require("http");var c=i.n(h);const d=require("express");var l=i.n(d);const u=require("express-static-gzip");var m=i.n(u);const p=require("ws");var f=i.n(p);function g(e){if(E.has(e))return E.get(e);throw new Error("never")}const E=new WeakMap;class O{}var y,b,v,N;!function(e){let t;var s;let r;var o;(s=t=e.Name||(e.Name={})).REGEXP=/^(?:[a-zA-Z0-9:-]+)$/,s.MaxLength=30,(o=r=e.Passphrase||(e.Passphrase={})).REGEXP=/^(?:[a-zA-Z0-9:-]*)$/,o.MaxLength=30,e.GameServerReconnectionAttempts=2,e.DEFAULT_TTL=20}(O||(O={})),Object.freeze(O),Object.freeze(O.prototype),function(e){let t,s,r;(t=e.Create||(e.Create={})).NAME="joiner/create",function(e){let t;var s;e.NAME="joiner/exist",(s=t=e.Status||(e.Status={})).IN_LOBBY="in-lobby",s.IN_GAME="in-game",s.DELETE="delete"}(s=e.Exist||(e.Exist={})),(r=e.TryJoin||(e.TryJoin={})).NAME="joiner/try-join"}(y||(y={})),Object.freeze(y),function(e){let t;(t=e.UserInfo||(e.UserInfo={})).NAME="group/user-info-change",e.CREATE_GAME="group/create-game"}(b||(b={})),Object.freeze(b),(N=v||(v={})).RESET="game/reset",N.UNPAUSE="game/unpause",N.PAUSE="game/pause",N.IN_GAME="game/ingame",N.RETURN_TO_LOBBY="game/return-to-lobby";var w,_=i(164),S=i(208);!function(e){let t;var s;(s=t=e.Status||(e.Status={})).PLAYING="PLAYING",s.PAUSED="PAUSED",s.OVER="OVER",Object.freeze(t),e.K=Object.freeze({_HEALTH_UPDATE_CHANCE:.1,AVERAGE_HEALTH_TO_SPAWN_ON_TILE:1,PORTION_OF_MOVES_THAT_ARE_BOOST:.4,_HEALTH_COST_OF_BOOST(e,t){const s=t(this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/e);return this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE/s/this.PORTION_OF_MOVES_THAT_ARE_BOOST},HEALTH_EFFECT_FOR_DOWNED_PLAYER:.6,_REQUEST_BUFFER_LENGTH:5,_ROBOT_PRIORITY_MAX_REUSES:4})}(w||(w={})),Object.freeze(w);var T,A=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},I=(e,t,s,r)=>(A(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);class j{constructor(){T.set(this,0),this.length=0}get lastRejectId(){return A(this,e=T,"read from private field"),e.get(this);var e}reset(e){I(this,T,0),this.length=0,this.predictedCoord=e}get isFull(){return this.length===w.K._REQUEST_BUFFER_LENGTH}signRequest(e){return this.length++,this.predictedCoord=e.moveDest,e}getNextRejectId(){return(this.lastRejectId+Math.floor(99*Math.random()))%100}reject(e,t){I(this,T,e),this.length=0,this.predictedCoord=t}acceptOldest(){this.length--}}T=new WeakMap,Object.freeze(j),Object.freeze(j.prototype);var M=i(139);class C{constructor(e,t){if(this.id=e,this.members=t,this.elimOrder=C.ElimOrder.STANDING,_.R.propNoWrite(this,"id","members"),Object.seal(this),0===t.length)throw new Error("Teams must have at least one member.")}reset(){this.elimOrder=C.ElimOrder.STANDING}}!function(e){let t;(t=e.ElimOrder||(e.ElimOrder={})).STANDING=0}(C||(C={})),Object.freeze(C),Object.freeze(C.prototype);var R,z,k=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},P=(e,t,s)=>(k(e,t,"read from private field"),s?s.call(e):t.get(e)),L=(e,t,s,r)=>(k(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);const D=class extends M.J5{constructor(e,t){super(),R.set(this,void 0),z.set(this,0),this.prevCoord=void 0,this.playerId=t.playerId,this.familyId=t.familyId,this.teamId=t.teamId,this.username=t.username,this.avatar=t.avatar,this.game=e,this.reqBuffer=new j,_.R.instNoEnum(this,"game"),_.R.propNoWrite(this,"game","playerId","familyId","teamId","username","avatar","reqBuffer"),new.target===D&&Object.seal(this)}get team(){return this.game.teams[this.teamId]}get coord(){return P(this,R)}get health(){return P(this,z)}get isDowned(){return this.health<0}isTeamedWith(e){return this.team.members.includes(e)}onTeamsBootstrapped(){}reset(e){L(this,R,e),this.prevCoord=e,this.game.grid.write(e,{occId:this.playerId}),L(this,z,0),this.reqBuffer.reset(e)}onGamePlaying(){}onGamePaused(){}onGameOver(){}makeMovementRequest(e,t){this.reqBuffer.isFull||this.game.processMoveRequest(this.reqBuffer.signRequest({initiator:this.playerId,lastRejectId:this.reqBuffer.lastRejectId,moveType:t,moveDest:e}))}setCoord(e){this.prevCoord=this.coord,L(this,R,e)}set health(e){const t=this.isDowned;if(L(this,z,e),t||!this.isDowned)return;const s=this.team,r=this.game.teams;if(s.elimOrder===C.ElimOrder.STANDING&&s.members.every((e=>e.isDowned))){const e=1+r.filter((e=>e.elimOrder!==C.ElimOrder.STANDING)).length;s.elimOrder=1+r.filter((e=>e.elimOrder!==C.ElimOrder.STANDING)).length,e===r.length&&this.game.statusBecomeOver()}}};let x=D;R=new WeakMap,z=new WeakMap,function(e){let t;e.MoveType=Object.freeze({NORMAL:"NORMAL",BOOST:"BOOST"}),e.MoveType,(t=e.CtorArgs||(e.CtorArgs={})).finalize=function(t){const s=t.players,r=Array.from(new Set(s.map((e=>e.teamId)))).sort(((e,t)=>e-t)).reduce(((e,t,s)=>(e[t]=s,e)),[]);t.players=s.slice().sort(((e,t)=>r[e.teamId]-r[t.teamId])).freeze().map(((t,s)=>{var o;return Object.assign({},t,{playerId:s,teamId:r[t.teamId],avatar:null!=(o=t.avatar)?o:e.Avatar.GET_RANDOM()})})).freeze()},Object.freeze(t)}(x||(x={})),_.R.protoNoEnum(x,"onGamePlaying","onGamePaused","onGameOver","onTeamsBootstrapped"),Object.freeze(x),Object.freeze(x.prototype);var H,U,G=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},B=(e,t,s)=>(G(e,t,"read from private field"),s?s.call(e):t.get(e)),F=(e,t,s,r)=>(G(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);class W{constructor(e,t){H.set(this,0),this.tiles=new Map;const s=w.K._HEALTH_COST_OF_BOOST(e.averageHealthPerTile,t.getLatticePatchDiameter);this.K=Object.freeze({avg:e.averageHealthPerTile*t.getArea(e.gridDimensions),avgPerTile:e.averageHealthPerTile,costOfBoost:e=>s/e.seq.length}),_.R.propNoWrite(this,"K"),Object.seal(this)}get currentAmount(){return B(this,H)}reset(){F(this,H,0),this.tiles.clear()}add(e){F(this,H,B(this,H)+e)}}H=new WeakMap,Object.freeze(W),Object.freeze(W.prototype);class q{constructor(e){const t=[];for(const s of e)t[s]=new q.Entry;this.entries=t,_.R.propNoWrite(this,"entries"),Object.seal(this)}reset(){for(const e of this.entries)e.reset()}}!function(e){class t{constructor(){this.moveCounts={}}reset(){this.totalHealthPickedUp=0,Object.getOwnPropertyNames(x.MoveType).forEach((e=>{this.moveCounts[e]=0}))}}e.Entry=t,Object.freeze(t),Object.freeze(t.prototype)}(q||(q={})),Object.freeze(q),Object.freeze(q.prototype);class J{constructor(e){Object.freeze(e),this.static=e.Grid,this.dimensions=e.dimensions,this.area=e.Grid.getArea(e.dimensions),_.R.propNoWrite(this,"static","dimensions")}reset(){this.forEach((e=>{this.write(e.coord,{occId:M.J5.Id.NULL,char:"",seq:"",health:0})}))}getAllAltDestsThan(e){return Array.from(new Set(this.tileSourcesTo(e).flatMap((e=>this.tileDestsFrom(e.coord)))))}getRandomCoord(){return this.static.getRandomCoord(this.dimensions)}static getSpawnCoords(e,t){const s=new Set;return e.map((e=>{const r=[];for(;e>0;){let o;do{o=this.getRandomCoord(t)}while(s.has(o));r.push(o),s.add(o),e--}return r.freeze()})).freeze()}}(U=J||(J={}))._Constructors={W_EUCLID2:void 0,BEEHIVE:void 0},U.getImplementation=e=>U._Constructors[e],Object.freeze(J),Object.freeze(J.prototype);var K,Y,$,X,V,Z=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},Q=(e,t,s)=>(Z(e,t,"read from private field"),s?s.call(e):t.get(e)),ee=(e,t,s,r)=>(Z(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);class te{constructor(e){K.set(this,void 0),Y.set(this,void 0),$.set(this,void 0);const{impl:t,desc:s,operatorIds:r}=e;Object.freeze(s),Object.freeze(s.players),s.players.forEach((e=>Object.freeze(e))),Object.freeze(r);const o=t.gridClassLookup(s.coordSys);this.grid=new o({Grid:o,system:s.coordSys,dimensions:s.gridDimensions,players:s.players}),ee(this,K,t.onGameBecomeOver),this.langFrontend=M.Uo.GET_FRONTEND_DESC_BY_ID(s.langId);const i=this._createPlayers(s,t,r);this.players=i.players,this.operators=i.operators;{const e=[];this.players.forEach((t=>{e[t.teamId]||(e[t.teamId]=[]),e[t.teamId].push(t)})),this.teams=e.map(((e,t)=>new C(t,e)))}_.R.propNoWrite(this,"grid","langFrontend","players","operators","teams"),this.players.forEach((e=>e.onTeamsBootstrapped())),this.setCurrentOperator(0)}reset(){this.grid.reset(),ee(this,$,w.Status.PAUSED)}_createPlayers(e,t,s){const r=e.players.map((e=>e.familyId===x.Family.HUMAN?s.includes(e.playerId)?new t.OperatorPlayer(this,e):new x(this,e):t.RobotPlayer(this,e))).freeze();return Object.freeze({players:r,operators:s.map((e=>r[e])).freeze()})}deserializeResetState(e){_.R.deepFreeze(e),this.grid.forEach(((t,s)=>{this.grid.write(t.coord,e.csps[s])})),e.playerCoords.forEach(((e,t)=>{this.players[t].reset(e)}))}get currentOperator(){return Q(this,Y)}setCurrentOperator(e){const t=this.operators[e];if(void 0===t)throw new Error("never");this.currentOperator!==t&&ee(this,Y,t)}get status(){return Q(this,$)}statusBecomePlaying(){if(this.status!==w.Status.PLAYING){if(this.status!==w.Status.PAUSED)throw new Error("Can only resume a game that is currently paused.");this.players.forEach((e=>{e.onGamePlaying()})),ee(this,$,w.Status.PLAYING)}else console.info("[statusBecomePlaying]: Game is already playing")}statusBecomePaused(){this.status!==w.Status.PAUSED?this.status!==w.Status.OVER&&(this.players.forEach((e=>{e.onGamePaused()})),ee(this,$,w.Status.PAUSED)):console.info("[statusBecomePaused]: Game is already paused")}statusBecomeOver(){this.status!==w.Status.OVER&&(this.players.forEach((e=>{e.onGameOver()})),ee(this,$,w.Status.OVER),Q(this,K).call(this),console.info("game is over!"))}commitTileMods(e,t,s=!0){const r=this.grid.tileAt(e);void 0!==t.seq&&s&&this.operators.forEach((e=>{this.grid.tileDestsFrom(e.coord).includes(r)&&e.seqBufferAcceptKey(void 0)})),this.grid.write(e,t)}commitStateChange(e,t){_.R.deepFreeze(e);const s=this.players[e.initiator];void 0===e.rejectId?(Object.entries(e.tiles).freeze().forEach((([e,t])=>{this.commitTileMods(parseInt(e),t)})),Object.entries(e.players).freeze().forEach((([e,t])=>{const s=this.players[parseInt(e)];s.reqBuffer.acceptOldest(),s.health=t.health,void 0!==t.coord&&(this.grid.write(s.coord,{occId:x.Id.NULL}),this.grid.write(t.coord,{occId:s.playerId}),s.setCoord(t.coord))}))):s.reqBuffer.reject(e.rejectId,s.coord)}}K=new WeakMap,Y=new WeakMap,$=new WeakMap,_.R.protoNoEnum(te,"_createPlayers"),Object.freeze(te),Object.freeze(te.prototype);class se{constructor(e,t){this.x=e,this.y=t,Object.freeze(this)}static from(e,t){return new se(t%e.width,Math.floor(t/e.width))}toCoord(e){return this.y*e.width+this.x}static distX(e,t,s){let r=Math.abs(t.x-s.x);return rMath.random()-.5)).freeze();for(const s of t)e(this._grid[s],s)}getUntToward(e,t){const s=this.tileDestsFrom(t).filter((e=>e.occId===M.J5.Id.NULL)).map((t=>{const s=this.iacCache[t.coord],r=this.iacCache[e];return{tile:t,iac:s,infNorm:se.infNorm(this.dimensions,s,r).norm,oneNorm:se.oneNorm(this.dimensions,s,r).norm}}));if(0===s.length)return this.tileAt(t);s.sort(((e,t)=>e.infNorm-t.infNorm)),s.length=3,s.sort(((e,t)=>e.oneNorm-t.oneNorm));const r=s[0];for(let e=1;er.infNorm){s.splice(e);break}if(1===s.length)return r.tile;if(r.infNorm===r.oneNorm){if(se.axialAlignment(this.dimensions,t,e)>.5)return r.tile;s.shift()}return s[Math.floor(s.length*Math.random())].tile}getUntAwayFrom(e,t){const s=this.iacCache[e],r=this.iacCache[t].iSub(s).mod(this.dimensions);return this._grid[r.toCoord(this.dimensions)]}getAllAltDestsThan(e){return this.tileDestsFrom(e,2)}getRandomCoordAround(e,t){const s=this.iacCache[e];return new se(s.x+Math.trunc(2*t*(Math.random()-.5)),s.y+Math.trunc(2*t*(Math.random()-.5))).mod(this.dimensions).toCoord(this.dimensions)}dist(e,t){return se.infNorm(this.dimensions,this.iacCache[e],this.iacCache[t]).norm}tileAt(e){return this._grid[e]}tileDestsFrom(e,t=1){const s=this.iacCache[e];let r=!1,o=!1;const i=this.dimensions.width,a=this.dimensions.height;let n=s.y-t;n<0&&(n+=a,o=!0);let h=s.x-t;h<0&&(h+=i,r=!0);let c=s.y+t+1;c>a&&(c-=a,o=!0);let d=s.x+t+1;d>i&&(d-=i,r=!0);const l=[];if(r){const e=n*i;l.push(...this._grid.slice(e,e+d)),o&&l.push(...this._grid.slice(0,d))}const u=o?a:c,m=2*t+1;for(let e=n;e2*r?new re({dash:e+1,bash:t}):s<.5*r?new re({dash:e,bash:t+1}):Math.min(s,r)>.5?new re({dash:e+1,bash:t+1}):new re({dash:e,bash:t})}add(e){return new re({dash:this.dash+e.dash,bash:this.bash+e.bash})}sub(e){return new re({dash:this.dash-e.dash,bash:this.bash-e.bash})}mul(e){return new re({dash:e*this.dash,bash:e*this.bash})}}Object.freeze(re),Object.freeze(re.prototype),function(e){const t=class extends J{constructor(e){super(e),this.grid=(void 0).freeze(),new.target===t&&Object.seal(this)}write(e,t){}forEach(e){let t=0;for(const s of this.grid)for(const r of s)e(r,t++)}forEachShuffled(e){}getUntToward(e,t){}getUntAwayFrom(e,t){}getAllAltDestsThan(e){return this.tileDestsFrom(e,2)}getRandomCoordAround(e,t){}dist(e,t){}tileAt(e){}tileDestsFrom(e,t=1){return[].freeze()}tileSourcesTo(e,t=1){}static getArea(e){const t=Math.min(e.fslash,e.bslash),s=Math.max(e.fslash,e.bslash),r=-1+e.dash+t;let o=2*t*(e.dash+r);return o+=(s-t-1)*r,o}static getLatticePatchDiameter(e){if(e<.25)throw new RangeError("determinant of a radical will be strictly negative.");return 1+(-3+Math.sqrt(9-12*(1-e)))/6*2}static getRandomCoord(e){return new re(void 0).toCoord()}};let s=t;s.ambiguityThreshold=18,s.SIZE_LIMITS=_.R.deepFreeze({dash:{min:10,max:50},bslash:{min:10,max:50},fslash:{min:10,max:50}}),s.sizeLimits=t.SIZE_LIMITS,e.Grid=s,_.R.protoNoEnum(s,"tileAt","tileDestsFrom","tileSourcesTo"),Object.freeze(s),Object.freeze(s.prototype)}(V||(V={})),Object.freeze(V);var oe=(e,t,s)=>(((e,t,s)=>{if(!t.has(e))throw TypeError("Cannot read from private field")})(e,t),s?s.call(e):t.get(e));class ie extends x{constructor(e,t){super(e,t),this._nextMovementTimerMultiplier=void 0,this._scheduledMovementCallbackId=void 0}onGamePlaying(){super.onGamePlaying(),this._delayedMovementContinue()}onGamePaused(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}onGameOver(){this.game.cancelTimeout(this._scheduledMovementCallbackId),this._scheduledMovementCallbackId=void 0}_movementContinue(){const e=this.computeDesiredDest();this._nextMovementTimerMultiplier=this.game.grid.tileAt(e).seq.length,this.makeMovementRequest(this.game.grid.getUntToward(e,this.coord).coord,this.getNextMoveType()),this._delayedMovementContinue()}_delayedMovementContinue(){this._scheduledMovementCallbackId=this.game.setTimeout(this._movementContinue.bind(this),this.computeNextMovementTimer()*this._nextMovementTimerMultiplier)}}!function(e){var t;e._Constructors={CHASER:void 0},e.of=(t,s)=>{const r=s.familyId;return new e._Constructors[r](t,s)};class s extends e{constructor(){super(...arguments),t.set(this,{which:0,reuses:0,target:void 0})}reset(e){super.reset(e),oe(this,t).which=0,oe(this,t).reuses=0,oe(this,t).target=void 0}computeDesiredDest(){const e=oe(this,t);if(void 0!==e.target&&e.reuses<=w.K._ROBOT_PRIORITY_MAX_REUSES){const t=this._behaviours[e.which].call(this,e.target);if(void 0!==t)return e.reuses++,t.dest}e.reuses=0;for(let t=0;te.id!==this.teamId)).flatMap((e=>e.members)).seal(),this.prey=[...this.pred].seal(),_.R.propNoWrite(this,"pred","prey")}_bhvrEvadePred(e){if(void 0!==e)return{dest:this.grid.getUntAwayFrom(this.game.players[e].coord,this.coord).coord};this.pred.sort(((e,t)=>this.grid.dist(e.coord,this.coord)-this.grid.dist(t.coord,this.coord)));for(const e of this.pred){if(this.grid.dist(e.coord,this.coord)>this.params.fearDistance)break;if(!e.isDowned&&e.health>this.health)return{dest:this.grid.getUntAwayFrom(e.coord,this.coord).coord,target:e.playerId}}}_bhvrChasePrey(e){if(void 0!==e)return{dest:this.game.players[e].coord};if(this.prey.sort(((e,t)=>this.grid.dist(this.coord,e.coord)-this.grid.dist(this.coord,t.coord))),this.isDowned)for(const e of this.prey){if(this.grid.dist(this.coord,e.coord)>this.params.bloodThirstDistance)break;if(e.health{if(!t.has(e))throw TypeError("Cannot "+s)};(()=>{Object.freeze(Object.assign(J._Constructors,{W_EUCLID2:X.Grid,BEEHIVE:V.Grid})),Object.freeze(J);{const e=ie;Object.freeze(Object.assign(e._Constructors,{CHASER:ae})),Object.freeze(e)}})();class de extends te{constructor(e){var t,s,r;super(e),this.lang=void 0,ne.set(this,void 0),this.health=new W(e.desc,this.grid.static),this.scoreInfo=new q(this.players.map((e=>e.playerId))),_.R.propNoWrite(this,"health","scoreInfo"),t=this,s=ne,r=i(59)(`./${this.langFrontend.module}.ts`).then((t=>{const s=this.langFrontend.export.split(".").reduce(((e,t)=>e[t]),t[this.langFrontend.module]);return this.lang=new s(e.desc.langWeightExaggeration),_.R.propNoWrite(this,"lang"),this.lang})),ce(t,s,"write to private field"),s.set(t,r)}async reset(){super.reset();const e=Object.freeze({playerCoords:[],csps:[]});var t,s;this.health.reset(),await(t=this,s=ne,ce(t,s,"read from private field"),s.get(t)),this.lang.reset(),this.grid.forEachShuffled(((t,s)=>{const r=this.dryRunShuffleLangCspAt(t.coord,!0);this.grid.write(t.coord,r),e.csps[s]=r})),this.teams.forEach((e=>e.reset()));const r=this.grid.static.getSpawnCoords(this.teams.map((e=>e.members.length)),this.grid.dimensions);return this.teams.forEach(((t,s)=>{t.members.forEach(((t,o)=>{const i=r[s][o];t.reset(i),e.playerCoords[t.playerId]=i}))})),this.scoreInfo.reset(),e}dryRunShuffleLangCspAt(e,t=!1){this.grid.write(e,S.U.CharSeqPair.NULL);let s=this.grid.getAllAltDestsThan(e).map((e=>e.seq)).freeze();if(t){const e=S.U.CharSeqPair.NULL.seq;s=s.filter((t=>t!==e)).freeze()}return this.lang.getNonConflictingChar(s)}dryRunSpawnHealth(e){var t;let s=this.health.K.avg-this.health.currentAmount;if(s<=0)return e;for(;s>0;){let r;do{r=this.grid.tileAt(this.grid.getRandomCoord())}while(r.occId!==x.Id.NULL);const o=w.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;if(Math.random(){if(!t.has(e))throw TypeError("Cannot "+s)},pe=(e,t,s)=>(me(e,t,"read from private field"),s?s.call(e):t.get(e)),fe=(e,t,s,r)=>(me(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);function ge(e){const[t,...s]=JSON.parse(e.data),r=e.target;switch(t){case v.IN_GAME:this.processMoveRequest(s[0],r);break;case v.PAUSE:this.statusBecomePaused();break;case v.UNPAUSE:this.statusBecomePlaying();break;case v.RETURN_TO_LOBBY:if(r===this.groupHostSocket){this.statusBecomeOver();const e=JSON.stringify([v.RETURN_TO_LOBBY]);this.sockets.forEach((t=>{t!==r&&t.send(e)})),this._terminate()}else{const e=JSON.stringify([v.RETURN_TO_LOBBY,g(r)]);this.sockets.forEach((t=>{t!==r&&t.send(e)}))}}}class Ee extends de{constructor(e){super({impl:{gridClassLookup:J.getImplementation,OperatorPlayer:void 0,RobotPlayer:(e,t)=>ie.of(e,t),onGameBecomeOver:()=>{}},desc:(x.CtorArgs.finalize(e.gameDesc),e.gameDesc),operatorIds:[]}),le.set(this,void 0),ue.set(this,void 0),this.sockets=new Set(e.sockets),this.groupHostSocket=e.groupHostSocket,fe(this,le,e.deleteExternalRefs),_.R.instNoEnum(this,"operators"),_.R.propNoWrite(this,"groupHostSocket","sockets"),fe(this,ue,ge.bind(this)),Object.seal(this),this.sockets.forEach((e=>{e.addEventListener("message",pe(this,ue)),e.addEventListener("close",(()=>{1===this.sockets.size&&this._terminate()}),{once:!0})})),this._greetGameSockets(e.gameDesc)}get currentOperator(){throw new Error("never")}_greetGameSockets(e){const t=e.players.filter((e=>"HUMAN"===e.familyId)).freeze();Promise.all(Array.from(this.sockets,(e=>new Promise((t=>{e.addEventListener("message",(e=>{JSON.parse(e.data)[0]===v.RESET&&t()}),{once:!0})}))))).then((()=>this.reset())),this.sockets.forEach((s=>{const r=t.filter((e=>e.socket===s)).map((e=>e.playerId)).freeze(),o=JSON.stringify([b.CREATE_GAME,e,r]);s.send(o)}))}async reset(){Promise.all(Array.from(this.sockets,(e=>new Promise((t=>{e.addEventListener("message",(e=>{JSON.parse(e.data)[0]===v.UNPAUSE&&t()}),{once:!0})}))))).then((()=>{this.statusBecomePlaying()}));const e=await super.reset(),t=JSON.stringify([v.RESET,e]);return this.sockets.forEach((e=>e.send(t))),e}setCurrentOperator(e){}setTimeout(e,t,...s){return setTimeout(e,t,s).unref()}cancelTimeout(e){clearTimeout(e)}statusBecomePlaying(){super.statusBecomePlaying();const e=JSON.stringify([v.UNPAUSE]);this.sockets.forEach((t=>t.send(e)))}statusBecomePaused(){super.statusBecomePaused();const e=JSON.stringify([v.PAUSE]);this.sockets.forEach((t=>t.send(e)))}commitStateChange(e,t){if(super.commitStateChange(e),e.rejectId){const s=JSON.stringify([v.IN_GAME,e]);null==t||t.send(s)}else{const t=JSON.stringify([v.IN_GAME,e]);this.sockets.forEach((e=>e.send(t)))}}_terminate(){this.sockets.forEach((e=>{e.removeEventListener("message",pe(this,ue))})),pe(this,le).call(this)}}le=new WeakMap,ue=new WeakMap,_.R.protoNoEnum(Ee,"_greetGameSockets","setCurrentOperator","_terminate"),Object.freeze(Ee),Object.freeze(Ee.prototype);var Oe,ye,be,ve,Ne,we=(e,t,s)=>{if(!t.has(e))throw TypeError("Cannot "+s)},_e=(e,t,s)=>(we(e,t,"read from private field"),s?s.call(e):t.get(e)),Se=(e,t,s,r)=>(we(e,t,"write to private field"),r?r.call(e,s):t.set(e,s),s);const Te=class extends O{constructor(e){super(),Oe.set(this,void 0),this.sockets=new Map,ye.set(this,void 0),be.set(this,void 0),ve.set(this,void 0),Ne.set(this,void 0),Object.defineProperty(this,"wssBroadcast",{value:e.wssBroadcast}),this.name=e.name,this.passphrase=e.passphrase,_.R.propNoWrite(this,"name","passphrase"),Se(this,Oe,void 0),Se(this,be,e.deleteExternalRefs),Se(this,ye,setTimeout((()=>{0===this.sockets.size&&this.terminate()}),1e3*Te.DEFAULT_TTL).unref()),Se(this,ve,(e=>{const[t,...s]=JSON.parse(e.data);switch(t){case b.UserInfo.NAME:this._wsOnUserInfoChange(e.target,s[0]);break;case b.CREATE_GAME:e.target===this.groupHostSocket&&this._wsOnHostCreateGame(s[0])}})),Se(this,Ne,(e=>{if(e.target===this.groupHostSocket||1===this.sockets.size)return void this.terminate();this.sockets.delete(e.target);const t=JSON.stringify([b.UserInfo.NAME,{[g(e.target)]:null}]);this.sockets.forEach(((e,s)=>s.send(t)))}))}get isCurrentlyPlayingAGame(){return void 0!==_e(this,Oe)}admitSocket(e,t){if(!this.sockets.has(e)){console.info(`socket connect (group): ${g(e)}`),_e(this,Oe);{const s=b.UserInfo.NAME;{const r=JSON.stringify([s,{[g(e)]:t}]);this.sockets.forEach(((e,t)=>t.send(r)))}const r={};this.sockets.forEach(((e,t)=>{r[g(t)]=e})),e.send(JSON.stringify([s,r]))}0===this.sockets.size&&(clearTimeout(_e(this,ye)),Se(this,ye,void 0),this.groupHostSocket=e,this.wssBroadcast(y.Exist.NAME,{[this.name]:y.Exist.Status.IN_LOBBY})),e.addEventListener("close",_e(this,Ne)),e.addEventListener("message",_e(this,ve)),this.sockets.set(e,t)}}kickSocket(e){return!!this.sockets.delete(e)&&(e.removeEventListener("close",_e(this,Ne)),e.removeEventListener("message",_e(this,ve)),!0)}_wsOnUserInfoChange(e,t){if("string"!=typeof t.username||"number"!=typeof t.teamId||"string"!=typeof t.avatar)return void console.log(`bad format: username: \`${t.username}\`, teamId: \`${t.teamId}\`, avatar: \`${t.avatar}\`.`);this.sockets.set(e,t);const s=JSON.stringify([b.UserInfo.NAME,{[g(e)]:t}]);this.sockets.forEach(((e,t)=>t.send(s)))}_wsOnHostCreateGame(e){const t=this._createGameInstance(e);t.length?console.info(t):(this.wssBroadcast(y.Exist.NAME,{[this.name]:y.Exist.Status.IN_GAME}),console.info(`group ${this.name} new game`))}_createGameInstance(e){const t=[];return this.isCurrentlyPlayingAGame?(t.push("a game is already in session for this group"),t):(t.push(...de.CHECK_VALID_CTOR_ARGS(e)),t.length?t:(e.players=[...e.players,...Array.from(this.sockets.keys(),(e=>{const t=this.sockets.get(e);return Object.freeze({socket:e,familyId:"HUMAN",username:t.username,teamId:t.teamId,avatar:t.avatar,familyArgs:{}})}))].freeze(),Se(this,Oe,new Ee({sockets:this.sockets.keys(),groupHostSocket:this.groupHostSocket,deleteExternalRefs:()=>{Se(this,Oe,void 0)},gameDesc:e})),[]))}terminate(){for(const e of this.sockets.keys())e.removeEventListener("close",_e(this,Ne)),e.removeEventListener("message",_e(this,ve));void 0!==_e(this,Oe)&&Se(this,Oe,void 0),_e(this,be).call(this),this.wssBroadcast(y.Exist.NAME,{[this.name]:y.Exist.Status.DELETE}),console.info(`terminated group: \`${this.name}\``)}};let Ae=Te;Oe=new WeakMap,ye=new WeakMap,be=new WeakMap,ve=new WeakMap,Ne=new WeakMap,_.R.protoNoEnum(Ae,"_wsOnUserInfoChange","_wsOnHostCreateGame"),Object.freeze(Ae),Object.freeze(Ae.prototype);const Ie=new Map;function je(e){Ie.delete(e)}function Me(e,t){const s=JSON.stringify([e,t]);ke.clients.forEach((e=>e.send(s)))}function Ce(e){const[t,...s]=JSON.parse(e.data);switch(t){case y.Create.NAME:{let t=function(t){e.target.send(JSON.stringify([y.Create.NAME,t]))};const r=s[0];if(!function(e){return void 0!==e.groupName&&e.groupName.length<=Ae.Name.MaxLength&&Ae.Name.REGEXP.test(e.groupName)&&e.passphrase.length<=Ae.Passphrase.MaxLength&&Ae.Passphrase.REGEXP.test(e.passphrase)}(r)||Ie.has(r.groupName))return void t(!1);Ie.set(r.groupName,new Ae(Object.freeze({wssBroadcast:Me,name:r.groupName,passphrase:r.passphrase,deleteExternalRefs:je.bind(null,r.groupName)}))),t(!0);break}case y.TryJoin.NAME:{let t=function(t){e.target.send(JSON.stringify([y.TryJoin.NAME,t]))};const r=s[0],o=Ie.get(r.groupName);if(void 0===o||r.passphrase!==o.passphrase)return void t(!1);const i=r.userInfo;if(void 0===i||0!==i.teamId)throw new Error(`a socket attempted to connect to group \`${o.name}\` without providing userInfo.`);for(const t of Ie.values())if(t.kickSocket(e.target))break;o.admitSocket(e.target,i),t(!0);break}}}process.on("uncaughtException",(function(e){const t=n().resolve(__dirname,"../..");console.error("\n\n"),void 0!==e.stack&&(e.stack=e.stack.replace(new RegExp(t.replace(/\\/g,"\\\\"),"g"),":").split("\n").map((e=>{const t=e.indexOf("(");return t<0?e:e.substring(0,t)+" ".repeat(Math.max(0,35-t))+e.substring(t)})).join("\n"),r().writeSync(process.stderr.fd,e.stack)),console.error("\n\n"),process.exit(1)}));const Re=l()(),ze=c().createServer({},Re),ke=new(f().Server)({server:ze}),Pe=n().resolve(__dirname,"../client");Re.disable("x-powered-by").use("/",m()(Pe,{enableBrotli:!0,serveStatic:{setHeaders:(e,t,s)=>{e.setHeader("X-Content-Type-Options","nosniff"),"text/html"===l().static.mime.lookup(t)&&e.setHeader("Cache-Control","public, max-age=0")}}})),ke.on("connection",(function(e){const t=JSON.stringify([y.Exist.NAME,(()=>{const e={};for(const[t,s]of Ie)e[t]=s.isCurrentlyPlayingAGame?y.Exist.Status.IN_GAME:y.Exist.Status.IN_LOBBY;return e})()]);var s,r;s=e,r=`${Date.now().toString()}_${100*Math.random()%100}`,E.set(s,r),console.info(`socket connect (server): ${g(e)}`),e.send(t),e.addEventListener("message",Ce)})),ze.listen({port:443,host:"0.0.0.0"},(function(){const e=ze.address();console.info(`\n\nServer mounted to: \`${e.address}:${e.port}\` using ${e.family}.\nThis host can be reached at any of the following addresses:\n`),Le().sort().forEach((t=>{console.info(`${t}:${e.port}`)})),console.info("")}));const Le=()=>Object.values(t().networkInterfaces()).flat().filter((e=>!e.internal)).map((e=>"IPv6"===e.family?`[${e.address}]`:e.address))})(),capswalk=a})(); //# sourceMappingURL=index.js.map \ No newline at end of file diff --git a/server/index.js.map b/server/index.js.map index 86e92824..487107d1 100644 --- a/server/index.js.map +++ b/server/index.js.map @@ -1 +1 @@ -{"version":3,"file":"index.js","sources":["../index.js?"],"mappings":"AAAA","sourceRoot":""} \ No newline at end of file +{"version":3,"sources":["../webpack/runtime/create fake namespace object?","../webpack/runtime/require chunk loading?",".././src/base/defs/JsUtils.ts?",".././src/base/defs/NodePlatformMods.ts?",".././src/base/defs/LangDefs.ts?",".././src/base/defs/TypeDefs.ts?",".././src/base/lang/LangSeqTreeNode.ts?",".././src/base/lang/Lang.ts?",".././src/base/lang/impl|lazy|/^/.*/.ts$/|chunkName: lang/[request]|groupOptions: {}|namespace object?","../webpack/bootstrap?","../webpack/runtime/compat get default export?","../webpack/runtime/define property getters?","../webpack/runtime/ensure chunk?","../webpack/runtime/get javascript chunk filename?","../webpack/runtime/hasOwnProperty shorthand?","../webpack/runtime/make namespace object?","../external \"os\"?","../external \"fs\"?","../external \"path\"?","../external \"http\"?","../external \"express\"?","../external \"express-static-gzip\"?","../external \"ws\"?",".././src/base/defs/OnlineDefs.ts?",".././src/base/game/Game.ts?",".././src/base/game/player/RequestBuffer.ts?",".././src/base/game/player/Team.ts?",".././src/base/game/player/Player.ts?",".././src/base/game/gameparts/HealthInfo.ts?",".././src/base/floor/Grid.ts?",".././src/base/game/gameparts/ScoreInfo.ts?",".././src/base/game/gameparts/GameMirror.ts?",".././src/base/floor/impl/Euclid2/System.ts?",".././src/base/floor/impl/Beehive/System.ts?",".././src/base/game/player/RobotPlayer.ts?",".././src/base/game/player/robots/Chaser.ts?",".././src/base/game/gameparts/GameManager.ts?",".././src/base/game/ctormaps/CmapManager.ts?",".././src/server/ServerGame.ts?",".././src/server/Group.ts?",".././src/server/joinerCb.ts?",".././src/server/index.ts?"],"names":["leafPrototypes","getProto","installedChunks","NO_ENUM","Object","freeze","enumerable","NO_WRITE","writable","JsUtils","obj","key","getOwnPropertyNames","val","_deepFreeze","descriptor","inst","propNames","propName","defineProperty","Web","deepFreeze","hasProp","prototype","hasOwnProperty","call","protoNoEnum","ctor","forEach","instNoEnum","_configProp","bind","propNoWrite","camelCaseTransforms","camelCaseName","spaceyLowercase","replace","letter","toLowerCase","spaceyUppercase","toUpperCase","spaceyCapitalized","split","map","word","charAt","substring","join","prependComment","node","commentStr","parentNode","insertBefore","document","createComment","adoptStyleSheet","root","href","appendChild","html","rel","_makeSmartStorage","localPrefix","storage","example","smart","keys","internalKey","get","getItem","JSON","parse","set","setItem","stringify","tagName","classNames","domProps","el","createElement","seal","e","length","classList","add","type","assign","svg","createElementNS","defineProperties","Array","value","this","globalThis","configurable","REMAP","IDENT","input","LOWER","Descs","module","export","isolatedMinOpts","remapFunc","displayName","blurb","entries","id","desc","behavior","block","inline","Id","Username","Avatar","Family","HUMAN","CHASER","NULL","REGEXP","MAX_LENGTH","_values","values","filter","GET_RANDOM","Math","floor","random","Player","Seq","CharSeqPair","WeightExaggeration","RegExp","char","seq","MAX","CHAR_HIT_COUNT_SEED_CEILING","FrontendDescs","GET_FRONTEND_DESC_BY_ID","langId","Lang","LangSeqTree","parent","characters","carryHits","child","children","reset","incrHits","leafNodes","_rGetLeaves","push","wgtChar","wc","hits","pair","wCharToHit","numTimes","_incrementNumHits","_rIncrHits","weightInv","forwardDict","weightScaling","scaleWeight","GET_SCALE_WEIGHT_FUNC","reverseDict","Map","weight","weightedChar","WeightedLangChar","chars","roots","from","sort","seqA","seqB","startsWith","newNode","ogWgt","averageWeight","reduce","sum","next","originalWeight","pow","LEAF_CMP","a","b","Node","frontendDescId","weightExaggeration","super","frontendDesc","treeRoots","CREATE_TREE_MAP","getPrototypeOf","constructor","BUILD","leaves","getLeaves","flat","l","slice","s","n","avoid","search_branch","leaf","hitNode","superSeq","find","avoidSeq","ownHits","chooseOnePair","Error","BuildUtils","WORD_FOR_WORD","seq2Weight","accumulator","webpackAsyncContext","req","__webpack_require__","o","Promise","resolve","then","code","ids","t","exports","__webpack_module_cache__","moduleId","__webpack_modules__","m","getter","__esModule","d","mode","ns","create","r","def","current","indexOf","definition","f","chunkId","all","promises","u","prop","Symbol","toStringTag","826","require","chunk","moreModules","modules","chunkIds","runtime","i","installChunk","SOCKET_ID","socket","_socketIds","has","WeakMap","JoinerEv","GroupEv","GameEv","Name","Passphrase","MaxLength","GameServerReconnectionAttempts","DEFAULT_TTL","Group","Create","Exist","TryJoin","NAME","Status","UserInfo","CREATE_GAME","Game","K","_HEALTH_UPDATE_CHANCE","averageHealthPerTile","gridGetDiameter","patchDiameter","AVERAGE_HEALTH_TO_SPAWN_ON_TILE","PORTION_OF_MOVES_THAT_ARE_BOOST","_REQUEST_BUFFER_LENGTH","_ROBOT_PRIORITY_MAX_REUSES","RequestBuffer","coord","predictedCoord","moveDest","lastRejectId","rejectId","realCoord","Team","members","elimOrder","ElimOrder","STANDING","game","prevCoord","playerId","familyId","teamId","username","avatar","reqBuffer","teams","health","other","team","includes","grid","write","occId","dest","isFull","processMoveRequest","signRequest","initiator","moveType","newHealth","oldIsDowned","isDowned","every","player","numNonStandingTeams","statusBecomeOver","CtorArgs","MoveType","NORMAL","BOOST","finalize","gameDesc","playerDescs","players","teamIdCleaner","Set","prev","originalId","squashedId","pda","pdb","playerDesc","index","HealthInfo","gridStatic","tiles","baseCostOfBoost","_HEALTH_COST_OF_BOOST","getLatticePatchDiameter","avg","getArea","gridDimensions","avgPerTile","costOfBoost","clear","amount","ScoreInfo","playerIds","Entry","entry","moveCounts","totalHealthPickedUp","static","Grid","dimensions","area","tile","originCoord","tileSourcesTo","flatMap","sourceToTarget","tileDestsFrom","getRandomCoord","teamSizes","avoidSet","numMembers","teamSpawnCoords","_Constructors","getImplementation","coordSys","WrappedEuclid2","Beehive","args","impl","operatorIds","gridClass","gridClassLookup","system","onGameBecomeOver","langFrontend","_createPlayers","operators","teammateArray","onTeamsBootstrapped","setCurrentOperator","PAUSED","implArgs","pDesc","OperatorPlayer","RobotPlayer","ser","csps","playerCoords","nextOperatorIndex","nextOperator","currentOperator","status","PLAYING","onGamePlaying","console","info","OVER","onGamePaused","onGameOver","changes","doCheckOperatorSeqBuffer","tileAt","op","seqBufferAcceptKey","commitTileMods","parseInt","pid","acceptOldest","setCoord","reject","GameMirror","IAC","x","y","width","dim","i1","i2","dist","abs","wrap","height","dX","distX","dY","distY","norm","wrapX","wrapY","max","_i1","_i2","sub","scalar","_grid","iacCache","consumer","indices","intendedDest","sourceCoord","options","tileIac","destIac","iac","infNorm","oneNorm","ta","tb","best","splice","axialAlignment","shift","_avoidCoord","_sourceCoord","iSub","mod","toCoord","_origin","radius","origin","trunc","source","W","H","dests","_t","b1","sliceLength","begin","sqrt","ambiguityThreshold","SIZE_LIMITS","min","sizeLimits","dash","bash","floorDash","floorBash","row","shorterSide","fslash","bslash","longerSide","RangeError","_nextMovementTimerMultiplier","_scheduledMovementCallbackId","_delayedMovementContinue","cancelTimeout","desiredDest","computeDesiredDest","makeMovementRequest","getUntToward","getNextMoveType","setTimeout","_movementContinue","computeNextMovementTimer","of","which","reuses","target","c","_behaviours","Decisive","Chaser","pred","prey","params","Behaviour","DEFAULT","familyArgs","iterator","cachedPred","getUntAwayFrom","pa","pb","fearDistance","cachedPrey","bloodThirstDistance","healthReserve","cachedHealthCoord","size","wanderingAimlessness","getRandomCoordAround","awayFunc","closestFht","closestFhtDistance","Infinity","fht","distance","keyPressesPerSecond","Robot","lang","scoreInfo","langModule","LangConstructor","nsps","langWeightExaggeration","resetSer","forEachShuffled","csp","dryRunShuffleLangCspAt","spawnPoints","getSpawnCoords","teamIndex","member","memberIndex","doCheckEmptyTiles","getAllAltDestsThan","nullSeq","getNonConflictingChar","healthToSpawn","currentAmount","healthToAdd","otherDesc","reqDest","commitStateChange","getNextRejectId","moveIsBoost","newPlayerHealthValue","HEALTH_EFFECT_FOR_DOWNED_PLAYER","dryRunSpawnHealth","delete","GameManager","CHECK_VALID_CTOR_ARGS","bad","requiredFields","missingFields","fieldName","field","langDesc","NaN","parseFloat","gameOnSocketMessage","ev","evName","data","IN_GAME","PAUSE","statusBecomePaused","UNPAUSE","statusBecomePlaying","RETURN_TO_LOBBY","groupHostSocket","sockets","send","_terminate","ServerGame","deleteExternalRefs","addEventListener","once","_greetGameSockets","humans","RESET","callback","millis","unref","handle","clearTimeout","removeEventListener","wssBroadcast","name","passphrase","terminate","_wsOnUserInfoChange","_wsOnHostCreateGame","ws","userInfo","EVENT_NAME","res","IN_LOBBY","log","ctorArgs","failureReasons","_createGameInstance","isCurrentlyPlayingAGame","DELETE","groups","eraseGroup","groupName","_data","wss","wsMessageCb","_res","_isReqValid","group","kickSocket","admitSocket","process","on","err","ROOT","__dirname","error","stack","frame","fn","repeat","stderr","fd","exit","app","server","CLIENT_ROOT","disable","use","enableBrotli","serveStatic","setHeaders","stat","setHeader","build","Date","now","toString","listen","port","host","address","family","chooseIPAddress","internal"],"mappings":"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","file":"index.js","sourcesContent":["var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(key => def[key] = () => value[key]);\n\t}\n\tdef['default'] = () => value;\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// no baseURI\n\n// object to store loaded chunks\n// \"1\" means \"loaded\", otherwise not loaded yet\nvar installedChunks = {\n\t826: 1\n};\n\nvar installChunk = (chunk) => {\n\tvar moreModules = chunk.modules, chunkIds = chunk.ids, runtime = chunk.runtime;\n\tfor(var moduleId in moreModules) {\n\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t}\n\t}\n\tif(runtime) runtime(__webpack_require__);\n\tfor(var i = 0; i < chunkIds.length; i++)\n\t\tinstalledChunks[chunkIds[i]] = 1;\n};\n\n// require() chunk loading for javascript\n__webpack_require__.f.require = function(chunkId, promises) {\n\n\t// \"1\" is the signal for \"already loaded\"\n\tif(!installedChunks[chunkId]) {\n\t\tif(true) { // all chunks have JS\n\t\t\tinstallChunk(require(\"./\" + __webpack_require__.u(chunkId)));\n\t\t} else installedChunks[chunkId] = 1;\n\t}\n};\n\n// no external install chunk\n\n// no HMR\n\n// no HMR manifest","\r\nconst NO_ENUM = Object.freeze({ enumerable: false });\r\nconst NO_WRITE = Object.freeze({ writable: false });\r\n\r\nexport namespace JsUtils {\r\n\r\n\t/** @requires obj must not contain cycles (circular references). */\r\n\texport function deepFreeze(obj: T): TU.DeepRo {\r\n\t\t_deepFreeze(obj);\r\n\t\treturn obj as TU.DeepRo;\r\n\t}\r\n\tfunction _deepFreeze(obj: any): void {\r\n\t\tfor (const key of Object.getOwnPropertyNames(obj)) {\r\n\t\t\tconst val = obj[key];\r\n\t\t\tif (val !== null && typeof val === \"object\") {\r\n\t\t\t\t_deepFreeze(val);\r\n\t\t\t}\r\n\t\t}\r\n\t\tObject.freeze(obj);\r\n\t}\r\n\r\n\t/** */\r\n\texport function hasProp(obj: T, key: K): boolean {\r\n\t\treturn Object.prototype.hasOwnProperty.call(obj, key);\r\n\t}\r\n\r\n\t/** */\r\n\texport function protoNoEnum(\r\n\t\tctor: {new(...args: any[]): T} | Function, // <- allow abstract classes\r\n\t\t...propNames: TU.RoArr | TU.RoArr\r\n\t): void {\r\n\t\tconst hasProps = Object.getOwnPropertyNames(ctor.prototype).freeze();\r\n\t\tpropNames.forEach((propName) => {\r\n\t\t\tif (DEF.DevAssert) {\r\n\t\t\t\tif (!hasProps.includes(propName as string)) {\r\n\t\t\t\t\tconst msg = `\\`${ctor.name}\\` prototype has no property named \\\"${propName}\\\"`;\r\n\t\t\t\t\tthrow new TypeError(msg); // Mismatched property name.\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tObject.defineProperty(ctor.prototype, propName, NO_ENUM);\r\n\t\t});\r\n\t}\r\n\r\n\texport const instNoEnum = _configProp.bind(null, NO_ENUM) as _configProp;\r\n\texport const propNoWrite = _configProp.bind(null, NO_WRITE) as _configProp;\r\n\r\n\ttype _configProp = (inst: T, ...propNames: TU.RoArr | TU.RoArr) => void;\r\n\tfunction _configProp(\r\n\t\tdescriptor: PropertyDescriptor,\r\n\t\tinst: T, ...propNames: TU.RoArr\r\n\t): void {\r\n\t\tfor (const propName of propNames) {\r\n\t\t\tif (DEF.DevAssert) {\r\n\t\t\t\tconst hasProps = Object.getOwnPropertyNames(inst).freeze();\r\n\t\t\t\tif (!hasProps.includes(propName as string)) {\r\n\t\t\t\t\tconst msg = `\\`${(inst as any).__proto__.constructor.name}\\``\r\n\t\t\t\t\t+ ` instance has no property named \\\"${propName}\\\"`;\r\n\t\t\t\t\tthrow new TypeError(msg); // Mismatched property name.\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tObject.defineProperty(inst, propName, descriptor);\r\n\t\t}\r\n\t}\r\n\r\n\texport type CamelCaseNameTransforms = Readonly<{\r\n\t\tspaceyLowercase: string;\r\n\t\tspaceyUppercase: string;\r\n\t\tspaceyCapitalized: string;\r\n\t}>;\r\n\t/**\r\n\t * Nothing ultra fancy. Does not handle Acronyms.\r\n\t */\r\n\texport function camelCaseTransforms(camelCaseName: string): CamelCaseNameTransforms {\r\n\t\tconst spaceyLowercase = camelCaseName.replace(/[A-Z]/g, (letter) => \" \" + letter.toLowerCase());\r\n\t\treturn Object.freeze({\r\n\t\t\tspaceyLowercase,\r\n\t\t\tspaceyUppercase: spaceyLowercase.toUpperCase(),\r\n\t\t\tspaceyCapitalized: spaceyLowercase.split(' ').map((word) =>\r\n\t\t\t\tword.charAt(0).toUpperCase() + word.substring(1)\r\n\t\t\t).join(' '),\r\n\t\t});\r\n\t}\r\n\r\n\texport namespace Web {\r\n\r\n\t\t/** A non-user-facing markup utility. */\r\n\t\texport function prependComment(node: HTMLElement, commentStr: string): void {\r\n\t\t\tnode.parentNode!.insertBefore(document.createComment(\" \" + commentStr + \" \"), node);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * This is dependant on the HtmlWebpackPlugin config.\r\n\t\t */\r\n\t\texport function adoptStyleSheet(root: Document | ShadowRoot, href: string): void {\r\n\t\t\t// if (\"adoptedStyleSheets\" in root) {\r\n\t\t\t// \tconst sheet = Array.from(document.styleSheets).find((sheet) => sheet.href?.endsWith(href));\r\n\t\t\t// \tif (sheet !== undefined) {\r\n\t\t\t// \t\t// TODO.build remove this any-casting when adoptedStyleSheets\r\n\t\t\t// \t\t// stops being experimental and makes it into the DOM spec.\r\n\t\t\t// \t\t(root as any).adoptedStyleSheets = [sheet];\r\n\t\t\t// \t\treturn;\r\n\t\t\t// \t}\r\n\t\t\t// }\r\n\t\t\t// The client's browser does not support adoptedStyleSheets :(\r\n\t\t\troot.appendChild(JsUtils.html(\"link\", [], {\r\n\t\t\t\trel: \"stylesheet\",\r\n\t\t\t\thref: href,\r\n\t\t\t}));\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @param localPrefix\r\n\t\t * Prefixes the storage keys on non-production builds. This is\r\n\t\t * to prevent key collisions on null origins such as `file://`.\r\n\t\t */\r\n\t\texport function _makeSmartStorage<\r\n\t\t\tT extends {[key : string]: string | number},\r\n\t\t>(\r\n\t\t\tlocalPrefix: string,\r\n\t\t\tstorage: Storage,\r\n\t\t\texample: T,\r\n\t\t): Partial {\r\n\t\t\tconst smart: T = {} as T;\r\n\t\t\t(Object.keys(example)).forEach((key) => {\r\n\t\t\t\tconst internalKey = (DEF.PRODUCTION ? \"\" : localPrefix + \".\") + key;\r\n\t\t\t\t// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/defineProperty\r\n\t\t\t\tObject.defineProperty(smart, key, {\r\n\t\t\t\t\tenumerable: true,\r\n\t\t\t\t\tget: () => {\r\n\t\t\t\t\t\tconst val = storage.getItem(internalKey);\r\n\t\t\t\t\t\treturn (val === null) ? undefined : JSON.parse(val);\r\n\t\t\t\t\t},\r\n\t\t\t\t\tset: (val: boolean): void => {\r\n\t\t\t\t\t\tstorage.setItem(internalKey, JSON.stringify(val));\r\n\t\t\t\t\t},\r\n\t\t\t\t});\r\n\t\t\t});\r\n\t\t\t// Sealing the object causes an error. Not sure why.\r\n\t\t\treturn smart;\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * A combiner for common operations surrounding `document.createElement`\r\n\t * with some custom HTML attribute defaults.\r\n\t *\r\n\t * - Calls `Object.seal` immediately on the created HTMLElement.\r\n\t * - If making a button, defaults the `type` to `button` instead of `submit`.\r\n\t * - If making an anchor, defaults the rel to `noopener`.\r\n\t */\r\n\texport function html(\r\n\t\ttagName: K,\r\n\t\tclassNames?: string[],\r\n\t\tdomProps?: Readonly>,\r\n\t): HTMLElementTagNameMap[K] {\r\n\t\tconst el = document.createElement(tagName);\r\n\t\ttry { Object.seal(el); } catch (e) {};\r\n\t\tif (classNames?.length) {\r\n\t\t\tel.classList.add(...classNames);\r\n\t\t}\r\n\r\n\t\tif (tagName === \"button\") {\r\n\t\t\t(el as HTMLButtonElement).type = \"button\"; // instead of \"submit\".\r\n\t\t} else if (tagName === \"a\") {\r\n\t\t\t(el as HTMLAnchorElement).rel = \"noopener\";\r\n\t\t\t// ^ Should already be the default on modern browsers when\r\n\t\t\t// `target === \"_blank\"`, but it doesn't hurt to set it\r\n\t\t\t// anyway. We're going stricter too.\r\n\t\t}\r\n\r\n\t\tif (domProps !== undefined) {\r\n\t\t\tObject.assign(el, domProps);\r\n\t\t}\r\n\t\treturn el;\r\n\t}\r\n\r\n\t/** */\r\n\texport function svg(\r\n\t\ttagName: K,\r\n\t\tclassNames?: string[],\r\n\t\tdomProps?: Readonly>,\r\n\t): SVGElementTagNameMap[K] {\r\n\t\tconst el = document.createElementNS(\"http://www.w3.org/2000/svg\", tagName);\r\n\t\tObject.seal(el);\r\n\t\tif (classNames?.length) {\r\n\t\t\tel.classList.add(...classNames);\r\n\t\t}\r\n\t\tif (domProps !== undefined) {\r\n\t\t\tObject.assign(el, domProps);\r\n\t\t}\r\n\t\treturn el;\r\n\t}\r\n}\r\nObject.freeze(JsUtils);","Object.defineProperties(Array.prototype, {\r\n\tfreeze: { value: function freeze() { return Object.freeze(this); }, enumerable: true, },\r\n\tseal: { value: function seal() { return Object.seal(this); }, enumerable: true },\r\n});\r\n// In-House `--frozen-intrinsics`:\r\n(<(keyof typeof globalThis)[]>[\r\n\t\"Object\", \"String\", \"Number\", \"RegExp\", \"Date\",\r\n\t\"Array\", \"Map\", \"Set\", \"WeakMap\", \"WeakSet\",\r\n])\r\n.forEach((key) => {\r\n\tObject.defineProperty(globalThis, key, {\r\n\t\tenumerable: true,\r\n\t\twritable: false,\r\n\t\tconfigurable: false,\r\n\t});\r\n\tObject.freeze((globalThis as any)[key]);\r\n\tObject.freeze((globalThis as any)[key].prototype);\r\n});","import { JsUtils } from \"defs/JsUtils\";\r\n\r\n/**\r\n *\r\n * This can be used, for example, for basic practical purposes like\r\n * changing all letters to lowercase for the English language, or for\r\n * more interesting things like mapping halves of the keyboard to a\r\n * binary-like value like the dots and dashes in morse, or zeros and\r\n * ones in binary. It could even be used for some crazy challenges like\r\n * remapping the alphabet by barrel-shifting it so that pressing \"a\"\r\n * produces \"b\", and \"b\" produces \"c\", and so on.\r\n *\r\n * The output should either equal the input (in cases that the input\r\n * is already relevant to the `Lang` at hand and is intended to be\r\n * taken as-is (ex. typing \"a\" produces / corresponds to \"a\" in\r\n * regular English), or in cases where the input is completely\r\n * irrelevant before and after remapping), or be a translation to\r\n * some character that is relevant to the `Lang` and hand, and that\r\n * matches against {@link SEQ_REGEXP}. This behaviour is mandated\r\n * by {@link OperatorPlayer#seqBufferAcceptKey}.\r\n *\r\n * @param input -\r\n * @returns\r\n */\r\nconst REMAP = Object.freeze({\r\n\tIDENT: (input: string): string => input,\r\n\tLOWER: (input: string): string => input.toLowerCase(),\r\n});\r\nREMAP as Readonly>;\r\n\r\nexport type Info = {\r\n\tid?: string;\r\n\t/** Pretty much a file name. */\r\n\tmodule: string;\r\n\t/** A property-access chain. */\r\n\texport: string;\r\n\tremapFunc: {(input: string): string};\r\n\t/** */\r\n\tisolatedMinOpts: number;\r\n\tdisplayName:string;\r\n\tblurb: string;\r\n};\r\n\r\n/**\r\n *\r\n */\r\nconst Descs = {\r\n\t\"engl-low\": {\r\n\t\tmodule: \"English\", export: \"Lowercase\", isolatedMinOpts: 25,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"English Lowercase (qwerty)\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"engl-mix\": {\r\n\t\tmodule: \"English\", export: \"MixedCase\", isolatedMinOpts: 51,\r\n\t\tremapFunc: REMAP.IDENT,\r\n\t\tdisplayName: \"English Mixed-Case (Querty)\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"japn-hir\": {\r\n\t\tmodule: \"Japanese\", export: \"Hiragana\", isolatedMinOpts: 70,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"Japanese Hiragana\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"japn-kat\": {\r\n\t\tmodule: \"Japanese\", export: \"Katakana\", isolatedMinOpts: 68,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"Japanese Katakana\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"kore-dub\": {\r\n\t\tmodule: \"Korean\", export: \"Dubeolsik\", isolatedMinOpts: 8690,\r\n\t\tremapFunc: REMAP.IDENT,\r\n\t\tdisplayName: \"Korean Dubeolsik (두벌식 키보드)\",\r\n\t\tblurb: \"The most common keyboard layout, and South Korea's only Hangul\"\r\n\t\t+ \" standard since 1969. Consonants are on the left, and vowels on\"\r\n\t\t+ \" the right.\",\r\n\t},\r\n\t\"kore-sub\": {\r\n\t\tmodule: \"Korean\", export: \"Sebeolsik\", isolatedMinOpts: 10179,\r\n\t\tremapFunc: REMAP.IDENT,\r\n\t\tdisplayName: \"Korean Sebeolsik (세벌식 최종 키보드)\",\r\n\t\tblurb: \"Another Hangul keyboard layout used in South Korea, and the\"\r\n\t\t+ \" final Sebeolsik layout designed by Dr. Kong Byung Woo, hence\"\r\n\t\t+ \" the name. Syllable-initial consonants are on the right, final\"\r\n\t\t+ \" consonants on the left, and vowels in the middle. It is more\"\r\n\t\t+ \" ergonomic than the dubeolsik, but not widely used.\",\r\n\t},\r\n\t\"kore-rom\": {\r\n\t\tmodule: \"Korean\", export: \"Romanization\", isolatedMinOpts: 3960,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"Korean Revised Romanization\",\r\n\t\tblurb: \"The Revised Romanization of Korean (국어의 로마자 표기법; 國語의 로마字\"\r\n\t\t+ \" 表記法) is the official South Korean language romanization system. It\"\r\n\t\t+ \" was developed by the National Academy of the Korean Language from 1995,\"\r\n\t\t+ \" and was released on 7 July 2000 by South Korea's Ministry of Culture\"\r\n\t\t+ \" and Tourism\",\r\n\t},\r\n\t\"engl-cell-enc\": {\r\n\t\tmodule: \"English\", export: \"OldCellphone.Encode\", isolatedMinOpts: 7,\r\n\t\tremapFunc: REMAP.IDENT,\r\n\t\tdisplayName: \"Old Cellphone Keyboard\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"mors-enc\": {\r\n\t\tmodule: \"English\", export: \"Morse.Encode\", isolatedMinOpts: 10,\r\n\t\tremapFunc: (input) => { return input; }, // TODO.impl\r\n\t\tdisplayName: \"Morse Encoder\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"mors-dec\": {\r\n\t\tmodule: \"English\", export: \"Morse.Decode\", isolatedMinOpts: 40,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"Morse Decoder\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"ngram2\": {\r\n\t\tmodule: \"Ngrams\", export: \"Ngram2\", isolatedMinOpts: 199,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"English Bigrams\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"ngram3\": {\r\n\t\tmodule: \"Ngrams\", export: \"Ngram3\", isolatedMinOpts: 400,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"English Trigrams\",\r\n\t\tblurb: \"\",\r\n\t},\r\n\t\"numpad\": {\r\n\t\tmodule: \"Numpad\", export: \"Numpad\", isolatedMinOpts: 100,\r\n\t\tremapFunc: REMAP.LOWER,\r\n\t\tdisplayName: \"Number Pad\",\r\n\t\tblurb: \"\",\r\n\t},\r\n};\r\nObject.entries(Descs).forEach(([id,desc]) => {\r\n\tdesc.id = id;\r\n});\r\nJsUtils.deepFreeze(Descs);\r\nexport default Descs;","import LangDescs from \"./LangDefs\";\r\nimport type { Info as LangInfo } from \"./LangDefs\";\r\n\r\nexport const SCROLL_INTO_CENTER = Object.freeze({\r\n\tbehavior: \"smooth\",\r\n\tblock: \"center\",\r\n\tinline: \"center\",\r\n});\r\nSCROLL_INTO_CENTER as ScrollIntoViewOptions;\r\n\r\n\r\n/**\r\n */\r\nexport abstract class Player { }\r\nexport namespace Player {\r\n\r\n\t/**\r\n\t * @enum\r\n\t * Each implementation of the {@link RobotPlayer} class must\r\n\t * have an entry here.\r\n\t */\r\n\texport type Family = keyof typeof Family;\r\n\texport const Family = Object.freeze({\r\n\t\tHUMAN: \"HUMAN\",\r\n\t\tCHASER: \"CHASER\",\r\n\t});\r\n\tFamily as {\r\n\t\t[ key in Family ]: key;\r\n\t};\r\n\r\n\t/**\r\n\t * See the main documentation in game/player/Player.\r\n\t */\r\n\texport type Id = number;\r\n\texport namespace Id {\r\n\t\texport const NULL = (-1);\r\n\t}\r\n\r\n\texport type Username = string;\r\n\texport namespace Username {\r\n\t\texport const REGEXP = /[ a-zA-Z0-9:-]+/;\r\n\t\texport const MAX_LENGTH = 15; // rather arbitrary choice.\r\n\t}\r\n\r\n\texport enum Avatar {\r\n\t\tLOREM_IPSUM = \"lorem-ipsum\",\r\n\t}\r\n\texport namespace Avatar {\r\n\t\tconst _values = Object.values(Avatar).filter((e) => typeof e === \"string\") as Avatar[];\r\n\t\t/**\r\n\t\t */\r\n\t\texport function GET_RANDOM(): Avatar {\r\n\t\t\treturn _values[Math.floor(Math.random() * _values.length)]!;\r\n\t\t}\r\n\t}\r\n\r\n\texport interface UserInfo {\r\n\t\treadonly username: Username;\r\n\t\treadonly teamId: number;\r\n\t\treadonly avatar: Avatar;\r\n\t}\r\n\r\n\t/**\r\n\t * See the main documentation in game/player/Player.\r\n\t */\r\n\texport type Health = number;\r\n}\r\nObject.freeze(Player);\r\n\r\n\r\n/**\r\n */\r\nexport abstract class Lang {}\r\nexport namespace Lang {\r\n\t/**\r\n\t * See the main documentation in game/lang/Lang\r\n\t */\r\n\texport type Char = string;\r\n\t/**\r\n\t * See the main documentation in game/lang/Lang\r\n\t */\r\n\texport type Seq = string;\r\n\texport namespace Seq {\r\n\t\t/**\r\n\t\t * The choice of this pattern is not out of necessity, but following\r\n\t\t * the mindset of spec designers when they mark something as reserved:\r\n\t\t * For the language implementations I have in mind, I don't see the\r\n\t\t * need to include characters other than these.\r\n\t\t *\r\n\t\t * Characters that must never be unmarked as reserved (state reason):\r\n\t\t * (currently none. update as needed)\r\n\t\t */\r\n\t\texport const REGEXP = new RegExp(\"^[a-zA-Z0-9!@#$%^&*()\\-_=+;:'\\\"\\\\|,.<>/?]+$\");\r\n\t}\r\n\t/**\r\n\t * See the main documentation in game/lang/Lang\r\n\t */\r\n\texport type CharSeqPair = {\r\n\t\treadonly char: Lang.Char,\r\n\t\treadonly seq: Lang.Seq,\r\n\t};\r\n\texport namespace CharSeqPair {\r\n\t\t/**\r\n\t\t * Used at the beginning of the shuffling operation.\r\n\t\t */\r\n\t\texport const NULL = Object.freeze({\r\n\t\t\tchar: \"\",\r\n\t\t\tseq: \"\",\r\n\t\t});\r\n\t}\r\n\t/**\r\n\t * See the main documentation in game/lang/Lang\r\n\t */\r\n\texport type WeightExaggeration = number;\r\n\texport namespace WeightExaggeration {\r\n\t\t/**\r\n\t\t * The choice of this value is somewhat up to taste.\r\n\t\t * It must be greater than one.\r\n\t\t */\r\n\t\texport const MAX = 4;\r\n\t}\r\n\t/**\r\n\t * The choice of the upper bound on the number of times\r\n\t * is rather arbitrary, but it should not be too small.\r\n\t */\r\n\texport const CHAR_HIT_COUNT_SEED_CEILING = 5;\r\n\r\n\t/**\r\n\t */\r\n\texport const FrontendDescs = LangDescs as Record;\r\n\r\n\texport type FrontendDesc = Readonly<{\r\n\t\tid: keyof typeof LangDescs;\r\n\t} & LangInfo>;\r\n\r\n\t/**\r\n\t * @returns `undefined` if no such language descriptor is found.\r\n\t */\r\n\texport function GET_FRONTEND_DESC_BY_ID(langId: FrontendDesc[\"id\"]): FrontendDesc | undefined {\r\n\t\treturn FrontendDescs[langId];\r\n\t}\r\n}\r\nObject.freeze(Lang);\r\nObject.freeze(Lang.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Lang as _Lang } from \"defs/TypeDefs\";\r\nimport type { Lang } from \"./Lang\";\r\ntype LangSorter = (a: T, b: T) => number;\r\n\r\n/** */\r\nexport namespace LangSeqTree {\r\n\r\n\t/** */\r\n\texport class Node {\r\n\r\n\t\tdeclare public readonly parent: Node | undefined;\r\n\t\tdeclare public readonly seq: Lang.Seq;\r\n\t\tdeclare protected readonly children: TU.RoArr;\r\n\t\treadonly #characters: TU.RoArr = [];\r\n\t\t/**\r\n\t\t * Equals this node's own weighted hit count plus all its ancestors'\r\n\t\t * weighted hit counts.\r\n\t\t */\r\n\t\tprotected carryHits: number = 0.0;\r\n\t\tpublic get ownHits(): number {\r\n\t\t\treturn this.carryHits - (this.parent?.carryHits ?? 0);\r\n\t\t}\r\n\r\n\t\t/** */\r\n\t\tprotected constructor(\r\n\t\t\tparent: Node | undefined,\r\n\t\t\tseq: Lang.Seq = \"\",\r\n\t\t\tcharacters: TU.RoArr,\r\n\t\t) {\r\n\t\t\tObject.defineProperty(this, \"parent\", { enumerable: true, value: parent });\r\n\t\t\tObject.defineProperty(this, \"seq\", { enumerable: true, value: seq });\r\n\t\t\tObject.defineProperty(this, \"children\", { enumerable: true, value: [] });\r\n\t\t\tthis.#characters = Object.freeze(characters);\r\n\t\t\tObject.seal(this); //🧊\r\n\t\t}\r\n\r\n\t\tpublic reset(): void {\r\n\t\t\t// Reset hit-counters on the way down.\r\n\t\t\tthis.carryHits = 0.0;\r\n\t\t\tfor (const child of this.children) child.reset();\r\n\r\n\t\t\t// On the way up, seed hit-counters (which get inherited downwards).\r\n\t\t\tfor (const char of this.#characters) {\r\n\t\t\t\tchar.reset();\r\n\t\t\t\tthis.incrHits(char, Math.random() * _Lang.CHAR_HIT_COUNT_SEED_CEILING);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic getLeaves(): TU.RoArr {\r\n\t\t\tconst leafNodes: Array = [];\r\n\t\t\tthis._rGetLeaves(leafNodes);\r\n\t\t\treturn leafNodes.freeze();\r\n\t\t}\r\n\t\tprotected _rGetLeaves(leafNodes: Array): void {\r\n\t\t\tif (this.children.length) {\r\n\t\t\t\tfor (const child of this.children) child._rGetLeaves(leafNodes);\r\n\t\t\t} else {\r\n\t\t\t\tleafNodes.push(this as Node);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @description\r\n\t\t * Incrementing the hit-count makes this node less likely to be\r\n\t\t * used for a shuffle-in. Shuffle-in option searching is easy to\r\n\t\t * taking the viewpoint of leaf-nodes, so this implementation is\r\n\t\t * geared toward indicating hit-count through leaf-nodes, hence\r\n\t\t * the bubble-down of hit-count incrementation.\r\n\t\t *\r\n\t\t * @returns\r\n\t\t * A character / sequence pair from this node that has been\r\n\t\t * selected the least according to the specified scheme.\r\n\t\t */\r\n\t\tpublic chooseOnePair(): Lang.CharSeqPair {\r\n\t\t\tlet wgtChar = this.#characters[0]!;\r\n\t\t\tfor (const wc of this.#characters) {\r\n\t\t\t\tif (wc.hits < wgtChar.hits) {\r\n\t\t\t\t\twgtChar = wc;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tconst pair: Lang.CharSeqPair = {\r\n\t\t\t\tchar: wgtChar.char,\r\n\t\t\t\tseq: this.seq,\r\n\t\t\t};\r\n\t\t\tthis.incrHits(wgtChar);\r\n\t\t\treturn pair;\r\n\t\t}\r\n\t\tprivate incrHits(wCharToHit: WeightedLangChar, numTimes: number = 1): void {\r\n\t\t\twCharToHit._incrementNumHits();\r\n\t\t\tthis._rIncrHits(wCharToHit.weightInv * numTimes);\r\n\t\t}\r\n\t\tprivate _rIncrHits(weightInv: number): void {\r\n\t\t\tthis.carryHits += weightInv;\r\n\t\t\tfor (const child of this.children) child._rIncrHits(weightInv);\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @returns The root node of a new tree map.\r\n\t\t */\r\n\t\tpublic static CREATE_TREE_MAP(\r\n\t\t\tforwardDict: Lang.WeightedForwardMap,\r\n\t\t\tweightScaling: Lang.WeightExaggeration,\r\n\t\t): readonly Node[] {\r\n\t\t\tconst scaleWeight = LangSeqTree.GET_SCALE_WEIGHT_FUNC(weightScaling, forwardDict);\r\n\r\n\t\t\t// Reverse the map:\r\n\t\t\tconst reverseDict = new Map();\r\n\t\t\tObject.entries(forwardDict).freeze().forEach(([char, {seq, weight}]) => {\r\n\t\t\t\tconst weightedChar = new WeightedLangChar(\r\n\t\t\t\t\tchar, scaleWeight(weight),\r\n\t\t\t\t);\r\n\t\t\t\tconst chars = reverseDict.get(seq);\r\n\t\t\t\tif (chars !== undefined) {\r\n\t\t\t\t\t// The entry was already made:\r\n\t\t\t\t\tchars.push(weightedChar);\r\n\t\t\t\t} else {\r\n\t\t\t\t\treverseDict.set(seq, [weightedChar]);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\r\n\t\t\tconst roots: Node[] = [];\r\n\t\t\tlet parent: Node | undefined = undefined; // a DFS cursor.\r\n\t\t\tfor (const [seq, chars] of\r\n\t\t\t\t// Sorting alphabetically enables DFS-ordered tree construction.\r\n\t\t\t\tArray.from(reverseDict).seal().sort(([seqA], [seqB]) => (seqA < seqB) ? -1 : 1).freeze()\r\n\t\t\t) /* no breaks */ {\r\n\t\t\t\twhile (parent !== undefined && !seq.startsWith(parent.seq)) {\r\n\t\t\t\t\tparent = parent.parent;\r\n\t\t\t\t}\r\n\t\t\t\tconst newNode: Node = new Node(parent, seq, chars);\r\n\t\t\t\tif (parent !== undefined) {\r\n\t\t\t\t\t(parent.children as Node[]).push(newNode);\r\n\t\t\t\t} else {\r\n\t\t\t\t\troots.push(newNode);\r\n\t\t\t\t}\r\n\t\t\t\tparent = newNode;\r\n\t\t\t}\r\n\t\t\treturn roots.freeze();\r\n\t\t}\r\n\r\n\t\tpublic static readonly LEAF_CMP: LangSorter = (a, b) => {\r\n\t\t\treturn a.carryHits - b.carryHits;\r\n\t\t};\r\n\t}\r\n\tJsUtils.protoNoEnum(Node, \"_rGetLeaves\", \"_rIncrHits\");\r\n\tObject.freeze(Node);\r\n\tObject.freeze(Node.prototype);\r\n\r\n\r\n\t/** */\r\n\texport function GET_SCALE_WEIGHT_FUNC(\r\n\t\tweightScaling: Lang.WeightExaggeration,\r\n\t\tforwardDict: Lang.WeightedForwardMap,\r\n\t): (ogWeight: number) => number {\r\n\t\tif (weightScaling === 0) return () => 1;\r\n\t\tif (weightScaling === 1) return (ogWgt: number) => ogWgt;\r\n\t\tconst values = Object.values(forwardDict);\r\n\t\tconst averageWeight = values.reduce((sum, next) => sum += next.weight, 0) / values.length;\r\n\t\treturn (originalWeight: number) => Math.pow(originalWeight / averageWeight, weightScaling);\r\n\t};\r\n\tObject.freeze(GET_SCALE_WEIGHT_FUNC);\r\n}\r\nObject.freeze(LangSeqTree);\r\n\r\n\r\n/**\r\n * Has no concept of an associated typeable sequence. Used to associate\r\n * a written character to a relative frequency of occurrence in samples\r\n * of writing, and to keep a counter for how many times this character\r\n * has been shuffled-in in the current game session.\r\n *\r\n * Not exported.\r\n */\r\nclass WeightedLangChar {\r\n\r\n\t/**\r\n\t * A weight is relative to weights of other unique characters in\r\n\t * the contextual language. Characters with relatively higher\r\n\t * weights will have relatively higher shuffle-in frequencies.\r\n\t *\r\n\t * Specifically, a character A with a weight N times that of some\r\n\t * other character B will, on average, be returned N times more\r\n\t * often by the `chooseOnePair` method than B.\r\n\t */\r\n\tdeclare public readonly weightInv: number;\r\n\r\n\t/** This value is weighted according to `weightInv`. */\r\n\tpublic hits: number = 0.0;\r\n\r\n\tpublic constructor(\r\n\t\tpublic readonly char: Lang.Char,\r\n\t\tweight: number,\r\n\t) {\r\n\t\tthis.char = char;\r\n\t\tObject.defineProperty(this, \"weightInv\", { enumerable: true, value: 1.0 / weight });\r\n\t\t// The above choice of a numerator is not behaviourally significant.\r\n\t\t// All that is required is that all single-mappings in a `Lang` use\r\n\t\t// a consistent value.\r\n\t\tObject.seal(this); //🧊\r\n\t}\r\n\tpublic reset(): void {\r\n\t\tthis.hits = 0.0;\r\n\t}\r\n\tpublic _incrementNumHits(): void {\r\n\t\tthis.hits += this.weightInv;\r\n\t}\r\n};\r\nObject.freeze(WeightedLangChar);\r\nObject.freeze(WeightedLangChar.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Lang as _Lang } from \"defs/TypeDefs\";\r\n\r\nimport { LangSeqTree } from \"./LangSeqTreeNode\";\r\n\r\n/**\r\n * A language is a map from a collection of unique characters to\r\n * corresponding key-sequences. the key-sequences may be non-unique.\r\n * (try searching up \"Chinese riddle where each syllable is pronounced\r\n * 'shi'\"). A character may have more than one corresponding sequence,\r\n * representing alternate \"spellings\" (ways of typing it).\r\n *\r\n * ### From Typeable Sequences to Written Characters\r\n *\r\n * To the game internals, the reverse thinking is more important: As\r\n * a map from typeable key-sequences to sets of language-unique written\r\n * characters (no character is mapped by multiple key-sequences). We\r\n * do not require support for retrieving the sequence corresponding to\r\n * a written character.\r\n *\r\n * ### Implementation Guide\r\n *\r\n * See the readme in [the implementations folder](./impl/readme.md)\r\n * for a guide on writing implementations of this class.\r\n */\r\nexport abstract class Lang extends _Lang {\r\n\r\n\tpublic readonly frontendDesc: Lang.FrontendDesc;\r\n\r\n\t/** A \"reverse\" map from `LangSeq`s to `LangChar`s. */\r\n\tprivate readonly treeRoots: readonly LangSeqTree.Node[];\r\n\r\n\t/**\r\n\t * A list of leaf nodes in `treeRoots` sorted in ascending order by\r\n\t * hit-count. Entries should never be removed or added. They will\r\n\t * always be sorted in ascending order of `carryHits`.\r\n\t */\r\n\tprivate readonly leafNodes: LangSeqTree.Node[];\r\n\r\n\t/**\r\n\t * The total number of leaf noes of all root nodes except the\r\n\t * root node with the most leaf nodes.\r\n\t */\r\n\tpublic readonly isolatedMinOpts: number;\r\n\r\n\t/** */\r\n\tprotected constructor(\r\n\t\tfrontendDescId: Lang.FrontendDesc[\"id\"],\r\n\t\tweightExaggeration: Lang.WeightExaggeration,\r\n\t) {\r\n\t\tsuper();\r\n\t\tthis.frontendDesc = Lang.GET_FRONTEND_DESC_BY_ID(frontendDescId)!;\r\n\t\tthis.treeRoots = LangSeqTree.Node.CREATE_TREE_MAP(\r\n\t\t\t(Object.getPrototypeOf(this).constructor as Lang.ClassIf).BUILD(),\r\n\t\t\tweightExaggeration,\r\n\t\t);\r\n\t\tconst leaves = this.treeRoots.map((root) => root.getLeaves());\r\n\t\tthis.leafNodes = leaves.flat();\r\n\t\tthis.isolatedMinOpts = leaves.map((l) => l.length).sort().slice(0,-1).reduce((s,n) => s+n, 0);\r\n\t\tJsUtils.propNoWrite(this as Lang, \"frontendDesc\", \"treeRoots\", \"leafNodes\", \"isolatedMinOpts\");\r\n\t\tObject.seal(this); //🧊\r\n\r\n\t\tif (DEF.DevAssert && this.isolatedMinOpts !== this.frontendDesc.isolatedMinOpts) {\r\n\t\t\tthrow new Error(`maintenance required: the frontend constant`\r\n\t\t\t+` for the language \"${this.frontendDesc.id}\" needs to`\r\n\t\t\t+` be updated to the correct, computed value, which is`\r\n\t\t\t+` \\`${this.isolatedMinOpts}\\`.`);\r\n\t\t}\r\n\t}\r\n\r\n\t/** */\r\n\tpublic reset(): void {\r\n\t\tfor (const root of this.treeRoots) {\r\n\t\t\troot.reset();\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * @returns\r\n\t * A random char in this language whose corresponding sequence is\r\n\t * not a prefix of any `Lang.Seq` in `avoid`, and vice versa. Ie.\r\n\t * They may share a common prefix as long as they are both longer\r\n\t * than the shared prefix.\r\n\t *\r\n\t * @description\r\n\t * This method is called to shuffle the char-seq pair at some tile\r\n\t * A. `avoid` should contain the lang-sequences from all tiles\r\n\t * reachable by a player occupying any tile B from which they can\r\n\t * also reach A (except for A itself).\r\n\t *\r\n\t * @param avoid\r\n\t * A collection of `Lang.Seq`s to avoid conflicts with when choosing\r\n\t * a `Lang.Char` to return. Empty-string entries are ignored. Freezing\r\n\t * may result in better performance.\r\n\t *\r\n\t * @requires\r\n\t * The number of leaves in an implementation's tree-structure must\r\n\t * be greater than the number of non-empty entries in\r\n\t * `avoid` for all expected combinations of internal state and\r\n\t * passed-arguments under which it could be called.\r\n\t */\r\n\tpublic getNonConflictingChar(\r\n\t\tavoid: TU.RoArr,\r\n\t): Lang.CharSeqPair {\r\n\t\t// Internal explainer: We must find characters from nodes that\r\n\t\t// are not descendants or ancestors of nodes in `avoid`. This\r\n\t\t// means that none of the ancestors or descendants of nodes in\r\n\t\t// `avoid` are also in `avoid`.\r\n\r\n\t\t// Start by sorting according to the desired balancing scheme:\r\n\t\tthis.leafNodes.sort(LangSeqTree.Node.LEAF_CMP);\r\n\r\n\t\tsearch_branch:\r\n\t\tfor (const leaf of this.leafNodes) {\r\n\t\t\tlet hitNode = leaf;\r\n\t\t\tfor (\r\n\t\t\t\tlet node: LangSeqTree.Node | undefined = leaf;\r\n\t\t\t\tnode !== undefined;\r\n\t\t\t\tnode = node.parent\r\n\t\t\t) {\r\n\t\t\t\tconst superSeq = avoid.find((avoidSeq) => avoidSeq.startsWith(node!.seq));\r\n\t\t\t\t// ^Using `find` is fine. There can only ever be one or none.\r\n\t\t\t\tif (superSeq) {\r\n\t\t\t\t\tif (superSeq.length > node.seq.length) {\r\n\t\t\t\t\t\t// Nothing shorter/upstream will work.\r\n\t\t\t\t\t\tbreak;\r\n\t\t\t\t\t} else {\r\n\t\t\t\t\t\t// Branch contains an avoid node.\r\n\t\t\t\t\t\tcontinue search_branch;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t\t// Find the node with the lowest personal hit-count:\r\n\t\t\t\tif (node.ownHits < hitNode.ownHits) {\r\n\t\t\t\t\thitNode = node;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\treturn hitNode.chooseOnePair();\r\n\t\t}\r\n\t\t// Enforced by UI and server:\r\n\t\tthrow new Error(\"never\");\r\n\t}\r\n}\r\nexport namespace Lang {\r\n\t/**\r\n\t * Every constructor function (class literal) implementing the\r\n\t * `Lang` class must implement this interface.\r\n\t */\r\n\texport interface ClassIf {\r\n\t\tnew (weightScaling: Lang.WeightExaggeration): Lang;\r\n\t\tBUILD(): WeightedForwardMap;\r\n\t};\r\n\t/**\r\n\t * Utility functions for implementations to use in their static\r\n\t * `.BUILD` function.\r\n\t */\r\n\texport namespace BuildUtils {\r\n\t\texport function WORD_FOR_WORD(seq2Weight: Record): Lang.WeightedForwardMap {\r\n\t\t\treturn Object.entries(seq2Weight).freeze().reduce(\r\n\t\t\t\t(accumulator, [char,weight]) => {\r\n\t\t\t\t\taccumulator[char] = { seq: char, weight };\r\n\t\t\t\t\treturn accumulator;\r\n\t\t\t\t}, {},\r\n\t\t\t);\r\n\t\t}\r\n\t}\r\n\r\n\t/**\r\n\t * An atomic unit in a written language that constitutes a single\r\n\t * character. It is completely unique in its language, and has a\r\n\t * single corresponding sequence (string) typeable on a keyboard.\r\n\t */\r\n\texport type Char = _Lang.Char;\r\n\r\n\t/**\r\n\t * A sequence of characters each matching {@link SEQ_REGEXP}\r\n\t * that represent the intermediate interface between an Operator\r\n\t * and a `LangChar`. The immediate interface is through the `Lang`\r\n\t * implementation's {@link Lang#remapKey} method.\r\n\t */\r\n\texport type Seq = _Lang.Seq;\r\n\r\n\t/**\r\n\t * A key-value pair containing a `LangChar` and its corresponding\r\n\t * `LangSeq`.\r\n\t */\r\n\texport type CharSeqPair = _Lang.CharSeqPair;\r\n\r\n\t/**\r\n\t * A map from written characters to their corresponding typeable\r\n\t * keyboard sequence and relative spawn weight.\r\n\t *\r\n\t * Shape that must be passed in to the static tree producer. The\r\n\t * `Record` type enforces the invariant that {@link Lang.Char}s are\r\n\t * unique in a {@link Lang}. \"CSP\" is short for {@link Lang.CharSeqPair}.\r\n\t */\r\n\texport type WeightedForwardMap = Record<\r\n\t\tLang.Char,\r\n\t\tReadonly<{seq: Lang.Seq, weight: number,}>\r\n\t>/* | Readonly> */;\r\n\r\n\t/**\r\n\t * A value used to scale the variance in weights. Passing zero will\r\n\t * cause all weights to be adjusted to equal the average weight.\r\n\t * Passing `1` will cause no adjustment to be made to the weights.\r\n\t * Passing a value greater than one will cause an exaggeration of\r\n\t * the weight distribution.\r\n\t */\r\n\texport type WeightExaggeration = _Lang.WeightExaggeration;\r\n\r\n\texport type FrontendDesc = _Lang.FrontendDesc;\r\n}\r\nObject.freeze(Lang);\r\nObject.freeze(Lang.prototype);","var map = {\n\t\"./Chinese.ts\": [\n\t\t83,\n\t\t7,\n\t\t330\n\t],\n\t\"./Emote.ts\": [\n\t\t985,\n\t\t9,\n\t\t858\n\t],\n\t\"./English.ts\": [\n\t\t825,\n\t\t9,\n\t\t184\n\t],\n\t\"./Japanese.ts\": [\n\t\t885,\n\t\t9,\n\t\t410\n\t],\n\t\"./Korean.ts\": [\n\t\t969,\n\t\t9,\n\t\t227\n\t],\n\t\"./Ngrams.ts\": [\n\t\t755,\n\t\t9,\n\t\t273\n\t],\n\t\"./Numpad.ts\": [\n\t\t444,\n\t\t9,\n\t\t683\n\t],\n\t\"./Shell.ts\": [\n\t\t25,\n\t\t9,\n\t\t159\n\t],\n\t\"./defs/Chinese.ts\": [\n\t\t711,\n\t\t7,\n\t\t704\n\t],\n\t\"./defs/English100.ts\": [\n\t\t589,\n\t\t9,\n\t\t885\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(() => {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn __webpack_require__.e(ids[2]).then(() => {\n\t\treturn __webpack_require__.t(id, ids[1] | 16)\n\t});\n}\nwebpackAsyncContext.keys = () => (Object.keys(map));\nwebpackAsyncContext.id = 59;\nmodule.exports = webpackAsyncContext;","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tif(__webpack_module_cache__[moduleId]) {\n\t\treturn __webpack_module_cache__[moduleId].exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"chunk/\" + {\"159\":\"lang/Shell-ts\",\"184\":\"lang/English-ts\",\"227\":\"lang/Korean-ts\",\"273\":\"lang/Ngrams-ts\",\"330\":\"lang/Chinese-ts\",\"410\":\"lang/Japanese-ts\",\"683\":\"lang/Numpad-ts\",\"704\":\"lang/defs-Chinese-ts\",\"858\":\"lang/Emote-ts\",\"885\":\"lang/defs-English100-ts\"}[chunkId] + \".js\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"os\");;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"fs\");;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"path\");;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"http\");;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"express\");;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"express-static-gzip\");;","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"ws\");;","import type { Player } from \"defs/TypeDefs\";\r\nimport type NodeWebSocket from \"ws\";\r\n\r\n/** Serverside-only. */\r\nexport function SOCKET_ID(socket: NodeWebSocket): string | never {\r\n\t// What has it got it its socketses?\r\n\t// STRING!? or NOTHING!\r\n\tif (_socketIds.has(socket)) {\r\n\t\treturn _socketIds.get(socket)!;\r\n\t} else {\r\n\t\tthrow new Error(\"never\");\r\n\t}\r\n}\r\nexport function SET_SOCKET_ID(socket: NodeWebSocket, id: string): void {\r\n\t_socketIds.set(socket, id);\r\n}\r\nconst _socketIds = new WeakMap();\r\n\r\n\r\n/** */\r\nexport abstract class Group { }\r\nexport namespace Group {\r\n\texport type Name = string;\r\n\texport namespace Name {\r\n\t\texport const REGEXP = /^(?:[a-zA-Z0-9:-]+)$/;\r\n\t\texport const MaxLength = 30;\r\n\t}\r\n\texport type Passphrase = string;\r\n\texport namespace Passphrase {\r\n\t\texport const REGEXP = /^(?:[a-zA-Z0-9:-]*)$/;\r\n\t\texport const MaxLength = 30;\r\n\t}\r\n\texport const GameServerReconnectionAttempts = 2;\r\n\texport const DEFAULT_TTL = 20; // seconds\r\n}\r\nObject.freeze(Group);\r\nObject.freeze(Group.prototype);\r\n\r\n\r\n/** */\r\nexport namespace JoinerEv {\r\n\t/** */\r\n\texport namespace Create {\r\n\t\texport const NAME = \"joiner/create\";\r\n\t\texport interface Req {\r\n\t\t\treadonly groupName: Group.Name,\r\n\t\t\treadonly passphrase: Group.Passphrase,\r\n\t\t}\r\n\t\texport type Res = boolean;\r\n\t}\r\n\t/** */\r\n\texport namespace Exist {\r\n\t\texport const NAME = \"joiner/exist\";\r\n\t\t/** Downstream only. */\r\n\t\texport type Sse = {\r\n\t\t\treadonly [groupName : string]: Status;\r\n\t\t};\r\n\t\texport const enum Status {\r\n\t\t\tIN_LOBBY = \"in-lobby\",\r\n\t\t\tIN_GAME = \"in-game\",\r\n\t\t\tDELETE = \"delete\",\r\n\t\t};\r\n\t}\r\n\t/** */\r\n\texport namespace TryJoin {\r\n\t\texport const NAME = \"joiner/try-join\";\r\n\t\texport interface Req {\r\n\t\t\treadonly groupName: Group.Name;\r\n\t\t\treadonly passphrase: Group.Passphrase;\r\n\t\t\treadonly userInfo: Player.UserInfo;\r\n\t\t}\r\n\t\texport type Res = boolean;\r\n\t}\r\n}\r\nObject.freeze(JoinerEv);\r\n\r\n\r\n/** */\r\nexport namespace GroupEv {\r\n\t/** */\r\n\texport namespace UserInfo {\r\n\t\texport const NAME = \"group/user-info-change\";\r\n\t\texport type Req = Player.UserInfo;\r\n\t\texport type Res = Record;\r\n\t}\r\n\r\n\t/** A broadcast originating from the group host. */\r\n\texport const CREATE_GAME = \"group/create-game\";\r\n}\r\nObject.freeze(GroupEv);\r\n\r\n\r\n/** */\r\nexport const enum GameEv {\r\n\t/**\r\n\t * Upon constructing a _new_ game, the server waits for all clients\r\n\t * to send this event to indicate that they have finished building\r\n\t * any necessary HTML, and are now ready to receive the serialized\r\n\t * reset-state.\r\n\t */\r\n\tRESET = \"game/reset\",\r\n\r\n\t/**\r\n\t * Client uses this event during reset procedure after receiving\r\n\t * the serialized reset-state to indicate that it is ready for\r\n\t * the game to be un-paused.\r\n\t */\r\n\tUNPAUSE = \"game/unpause\",\r\n\r\n\t/** */\r\n\tPAUSE = \"game/pause\",\r\n\r\n\t/** */\r\n\tIN_GAME = \"game/ingame\",\r\n\r\n\t/**\r\n\t * The server will send this event with no arguments to indicate\r\n\t * that everyone must now return to the lobby, or with a socket\r\n\t * ID as an argument to indicate that all players operated by\r\n\t * a client with that socket ID are out of the game.\r\n\t */\r\n\tRETURN_TO_LOBBY = \"game/return-to-lobby\",\r\n};","import type { Lang } from \"defs/TypeDefs\";\r\nimport type { Coord } from \"floor/Tile\";\r\nimport type { Grid } from \"floor/Grid\";\r\nimport type { Player } from \"./player/Player\";\r\nimport type { OperatorPlayer } from \"./player/OperatorPlayer\";\r\nimport type { GameMirror } from \"./gameparts/GameMirror\";\r\n\r\n/**\r\n * **Important** To be properly disposed of, a game must first have\r\n * either naturally ended, or be paused- both operations of which will\r\n * properly cancel all internal scheduled callbacks (the callbacks\r\n * refer to players, which refer to their game, which refers to a\r\n * whole lot of other things such as the language dictionary, which\r\n * in some cases may be quite large.)\r\n *\r\n * These classes perform the majority of management over {@link Tile}\r\n * and {@link Player} objects. As a design choice, players can only join\r\n * a game before it starts, and actions such as changing the language or\r\n * difficulty require a restart. These actions that require a restart will\r\n * all be exposed through a pre-game page.\r\n *\r\n * There are overlaps between what each implementation needs to do:\r\n * - Offline and Server games maintain and control the master-game-state.\r\n * - Offline and Client games display the game-state to an operator via browser and HTML.\r\n * - Client and Server games use network operations to communicate.\r\n */\r\nexport namespace Game {\r\n\r\n\t/**\r\n\t * Unlike CtorArgs, these are not passed as no-prototype objects\r\n\t * (possibly over the network) from the game manager to clients.\r\n\t * These are abstract handles to game-implementation-dependant\r\n\t * components.\r\n\t */\r\n\texport type ImplArgs = {\r\n\t\tgridClassLookup(coordSys: S): Grid.ClassIf;\r\n\t\tOperatorPlayer: typeof OperatorPlayer | undefined;\r\n\t\tRobotPlayer: (_this: GameMirror, desc: Player._CtorArgs[Player.RobotFamily]) => Player;\r\n\t\tonGameBecomeOver: () => void;\r\n\t};\r\n\r\n\tinterface _CtorArgsBase {\r\n\t\treadonly coordSys: S;\r\n\t\treadonly gridDimensions: Grid.Dimensions[S];\r\n\t\treadonly averageHealthPerTile: Player.Health;\r\n\t\treadonly langId: Lang.FrontendDesc[\"id\"];\r\n\t\treadonly langWeightExaggeration: Lang.WeightExaggeration;\r\n\t}\r\n\r\n\t/**\r\n\t * Game Constructor Arguments\r\n\t *\r\n\t * Important internal note: Upon modification, make appropriate\r\n\t * changes to GameManager's function for verifying validity of\r\n\t * client input on the server side.\r\n\t *\r\n\t * @template S\r\n\t * The coordinate system to use. The literal value must also be\r\n\t * passed as the field `coordSys`.\r\n\t */\r\n\texport interface CtorArgs extends _CtorArgsBase {\r\n\t\treadonly players: readonly Player.CtorArgs[];\r\n\t};\r\n\texport namespace CtorArgs {\r\n\t\texport interface UnFin extends _CtorArgsBase {\r\n\t\t\treadonly players: readonly Player.CtorArgs.UnFin[];\r\n\t\t}\r\n\t\t/** */\r\n\t\texport type FailureReasons = {\r\n\t\t\tmissingFields: Array>;\r\n\t\t};\r\n\t}\r\n\r\n\t/**\r\n\t * Serialization of the Game State after a reset.\r\n\t *\r\n\t * Only contains state information that would not be known by a\r\n\t * non-Game Manager.\r\n\t */\r\n\texport interface ResetSer {\r\n\t\t/**\r\n\t\t * Indexed by index according to `Grid.forEach` - not by the\r\n\t\t * `Tile.coord`s of `Grid.forEach` (they may differ).\r\n\t\t */\r\n\t\treadonly csps: readonly Lang.CharSeqPair[];\r\n\t\t/**\r\n\t\t * A map from player ID's to their starting coordinates.\r\n\t\t */\r\n\t\treadonly playerCoords: readonly Coord[];\r\n\t};\r\n\r\n\t/**\r\n\t * - **`PLAYING`** can go to:\r\n\t * - `PAUSED`: when a pause request initiated by a player is accepted.\r\n\t * - `OVER`: when certain conditions of players being downed are met.\r\n\t * - **`PAUSED`** can go to:\r\n\t * - `PLAYING`: similar to PLAYING->PAUSED.\r\n\t * - **`OVER`** can go to:\r\n\t * - `PLAYING`: via resetting the game.\r\n\t */\r\n\texport enum Status {\r\n\t\tPLAYING = \"PLAYING\",\r\n\t\tPAUSED = \"PAUSED\",\r\n\t\tOVER = \"OVER\",\r\n\t}\r\n\tObject.freeze(Status);\r\n\r\n\t/**\r\n\t * Global, Game-Setup-Agnostic constants for tuning game behaviour.\r\n\t *\r\n\t * Keys beginning with an underscore are probably of no interest to\r\n\t * people playing the game.\r\n\t */\r\n\texport const K = Object.freeze({\r\n\t\t/**\r\n\t\t * A value in `(0,1]`. If `1`, then new health will be spawned\r\n\t\t * the next time `dryRunSpawnFreeHealth` is called. This is the\r\n\t\t * reciprocal of the average number of calls that must be to\r\n\t\t * `dryRunSpawnFreeHealth` before a unit of health will be\r\n\t\t * re-spawned after being consumed.\r\n\t\t */\r\n\t\t_HEALTH_UPDATE_CHANCE: 0.1,\r\n\r\n\t\t/**\r\n\t\t * Affects the distribution of health across the grid: \"How\r\n\t\t * concentrated or how diluted the average amount of health on\r\n\t\t * the grid will be\". Higher values cause concentration; lower\r\n\t\t * values result in dilution.\r\n\t\t */\r\n\t\t\"AVERAGE_HEALTH_TO_SPAWN_ON_TILE\": 1.0,\r\n\r\n\t\t/**\r\n\t\t * A value in `(0,1]`. If `1`, then players can (on average),\r\n\t\t * boost indefinitely. If close to zero, then players virtually\r\n\t\t * cannot boost, no matter how much health they have. If `0.3`,\r\n\t\t * players can boost for roughly 30% of the movements they make.\r\n\t\t *\r\n\t\t * This value assumes that the player moves around aimlessly\r\n\t\t * and randomly. Adjustments for more rational assumptions are\r\n\t\t * not to be made _here_.\r\n\t\t */\r\n\t\t\"PORTION_OF_MOVES_THAT_ARE_BOOST\": 0.4,\r\n\r\n\t\t/**\r\n\t\t * Takes into consideration all contributing factors to determine\r\n\t\t * how much health it should cost to perform a single boost.\r\n\t\t *\r\n\t\t * It calculates for the following behaviour: Assuming that a\r\n\t\t * player is only trying to collect health and always takes the\r\n\t\t * optimal route, how much health should it cost them to boost\r\n\t\t * such that they can only only boost for a determined percentage\r\n\t\t * of all their movement actions?\r\n\t\t */\r\n\t\t_HEALTH_COST_OF_BOOST(\r\n\t\t\taverageHealthPerTile: Player.Health,\r\n\t\t\tgridGetDiameter: (area: number) => number,\r\n\t\t): Player.Health {\r\n\t\t\t// First, assume that a player has just landed on a tile\r\n\t\t\t// with free health, and now plans to take the optimal\r\n\t\t\t// route to the nearest tile with free health. Assume that\r\n\t\t\t// Health is distributed uniformly, and spaced evenly apart.\r\n\t\t\t// Then the grid/floor can be nicely divided into similar\r\n\t\t\t// patches each with one tile with free health in the center.\r\n\t\t\t// Find the diameter of a patch:\r\n\t\t\tconst patchArea = this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE / averageHealthPerTile;\r\n\t\t\tconst patchDiameter = gridGetDiameter(patchArea);\r\n\r\n\t\t\t// The patch diameter is the average optimal distance to\r\n\t\t\t// the nearest tile with health (the center of the nearest\r\n\t\t\t// patch). We know how much health awaits there, so we can\r\n\t\t\t// find the average rate of health gain per movement on an\r\n\t\t\t// optimal health-seeking path.\r\n\t\t\tconst healthGainedPerOptimalMove\r\n\t\t\t\t= this.AVERAGE_HEALTH_TO_SPAWN_ON_TILE / patchDiameter;\r\n\r\n\t\t\t// Since the portion of moves that can be boosts equals\r\n\t\t\t// the rate of health gain divided by the health cost of\r\n\t\t\t// boosting, (rearrange terms to solve):\r\n\t\t\treturn healthGainedPerOptimalMove / this.PORTION_OF_MOVES_THAT_ARE_BOOST;\r\n\t\t},\r\n\r\n\t\t/**\r\n\t\t * A value in `(0,1]` (values greater than one are legal from\r\n\t\t * a mathematical standpoint, but not from one of game-design).\r\n\t\t * Scales the health received from picking up free health for\r\n\t\t * a player who is downed.\r\n\t\t *\r\n\t\t * This value exists to dampen the ability for team members to\r\n\t\t * regenerate health when downed so that it takes a (subjectively)\r\n\t\t * \"reasonable\" amount of effort to eliminate an entire team-\r\n\t\t * not too much, not too little.\r\n\t\t */\r\n\t\t\"HEALTH_EFFECT_FOR_DOWNED_PLAYER\": 0.6,\r\n\r\n\t\t/**\r\n\t\t * A strictly-positive integer. Indicates the maximum number\r\n\t\t * of requests which a clientside player can buffer.\r\n\t\t */\r\n\t\t_REQUEST_BUFFER_LENGTH: 5,\r\n\r\n\t\t/**\r\n\t\t * How many times a Decisive RobotPlayer can reuse its cached\r\n\t\t * target before it will do another cold analysis of its\r\n\t\t * surroundings.\r\n\t\t */\r\n\t\t_ROBOT_PRIORITY_MAX_REUSES: 4,\r\n\t});\r\n}\r\nObject.freeze(Game);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Game } from \"game/Game\";\r\n\r\nimport type { Coord } from \"floor/Tile\";\r\nimport type { StateChange } from \"game/StateChange\";\r\nimport { Player as _Player } from \"defs/TypeDefs\";\r\n\r\n/**\r\n * Used to buffer requests when there is network delay.\r\n *\r\n * This allows for the client to pipeline a certain number of\r\n * requests. If a request is rejected, all following requests are\r\n * invalid, and the server can\r\n */\r\nexport class RequestBuffer {\r\n\r\n\t#lastRejectId = 0; public get lastRejectId(): number { return this.#lastRejectId; };\r\n\tprivate length = 0;\r\n\tpublic predictedCoord: Coord;\r\n\r\n\tpublic reset(coord: Coord): void {\r\n\t\tthis.#lastRejectId = 0;\r\n\t\tthis.length = 0;\r\n\t\tthis.predictedCoord = coord;\r\n\t}\r\n\r\n\tpublic get isFull(): boolean {\r\n\t\treturn this.length === Game.K._REQUEST_BUFFER_LENGTH;\r\n\t}\r\n\r\n\t/** @requires `!this.isFull` */\r\n\tpublic signRequest(req: StateChange.Req): StateChange.Req {\r\n\t\tif (DEF.DevAssert && this.isFull) {\r\n\t\t\tthrow new Error(\"never\");\r\n\t\t}\r\n\t\tthis.length++;\r\n\t\tthis.predictedCoord = req.moveDest;\r\n\t\treturn req;\r\n\t}\r\n\r\n\tpublic getNextRejectId(): number {\r\n\t\t// return (this.lastRejectId === 0) ? 1 : 0;\r\n\t\t// Above option returns an \"elegant\" value.\r\n\t\t// Below returns a hard-to-guess value.\r\n\t\treturn (this.lastRejectId + Math.floor(99 * Math.random())) % 100;\r\n\t}\r\n\t/**\r\n\t * Every request signed with the previous rejectId will be\r\n\t * silently dropped by the game manager.\r\n\t */\r\n\tpublic reject(rejectId: number, realCoord: number): void {\r\n\t\tthis.#lastRejectId = rejectId;\r\n\t\tthis.length = 0;\r\n\t\tthis.predictedCoord = realCoord;\r\n\t}\r\n\tpublic acceptOldest(): void {\r\n\t\t// TODO.design this is technically invalid for artificial players\r\n\t\t// on the client side of an online game... Can we move reqBuffer\r\n\t\t// to be just for OperatorPlayers?\r\n\r\n\t\t// if (DEF.DevAssert && this.length === 0) {\r\n\t\t// \tthrow new Error(\"never\");\r\n\t\t// }\r\n\t\tthis.length--;\r\n\t}\r\n}\r\nObject.freeze(RequestBuffer);\r\nObject.freeze(RequestBuffer.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport type { Player } from \"./Player\";\r\n\r\n/**\r\n * @final\r\n */\r\nexport class Team {\r\n\r\n\t/**\r\n\t * @returns\r\n\t * Indicates the order (relative to other teams) in which this\r\n\t * team was to have all its members downed at the same time at\r\n\t * least once. Once a team is soft-eliminated, they can continue\r\n\t * playing as normal, but there is no going back. The game ends\r\n\t * when all teams but one have been eliminated.\r\n\t *\r\n\t * ### Semantics\r\n\t *\r\n\t * A comparatively smaller value denotes having been\r\n\t * eliminated at an earlier point in the game. **The value zero\r\n\t * denotes _not-having-been-eliminated-yet_**.\r\n\t */\r\n\tpublic elimOrder: number = Team.ElimOrder.STANDING;\r\n\r\n\tpublic constructor(\r\n\t\tpublic readonly id: Team.Id,\r\n\t\tpublic readonly members: TU.RoArr,\r\n\t) {\r\n\t\tJsUtils.propNoWrite(this as Team, \"id\", \"members\");\r\n\t\tObject.seal(this); //🧊\r\n\t\tif (members.length === 0) {\r\n\t\t\tthrow new Error(\"Teams must have at least one member.\");\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tpublic reset(): void {\r\n\t\tthis.elimOrder = Team.ElimOrder.STANDING;\r\n\t}\r\n}\r\nexport namespace Team {\r\n\r\n\texport type Id = number;\r\n\r\n\texport type ElimOrder = number;\r\n\r\n\t// Special values:\r\n\texport namespace ElimOrder {\r\n\t\t/**\r\n\t\t * A team that is not invincible starts off with such a value.\r\n\t\t */\r\n\t\texport const STANDING = 0;\r\n\t}\r\n}\r\nObject.freeze(Team);\r\nObject.freeze(Team.prototype);","import type * as WebSocket from \"ws\";\r\nimport { JsUtils } from \"defs/JsUtils\";\r\nimport { Game } from \"game/Game\";\r\n\r\nimport type { Coord } from \"floor/Tile\";\r\nimport type { RobotPlayer } from \"./RobotPlayer\";\r\nimport type { GameMirror } from \"game/gameparts/GameMirror\";\r\n\r\nimport { RequestBuffer } from \"./RequestBuffer\";\r\nimport { Player as _Player } from \"defs/TypeDefs\";\r\nimport { Team } from \"./Team\";\r\n\r\n/** */\r\nexport class Player extends _Player implements _Player.UserInfo {\r\n\r\n\tpublic readonly playerId: Player.Id;\r\n\tpublic readonly familyId: Player.Family;\r\n\tpublic readonly teamId: Team.Id;\r\n\tpublic readonly username: Player.Username;\r\n\tpublic readonly avatar: Player.Avatar;\r\n\r\n\tprotected readonly game: GameMirror;\r\n\tpublic readonly reqBuffer: RequestBuffer;\r\n\t#coord: Coord;\r\n\t#health: Player.Health = 0.0;\r\n\r\n\tpublic prevCoord: Coord = undefined!;\r\n\r\n\tpublic get team(): Team { return this.game.teams[this.teamId]!; }\r\n\tpublic get coord(): Coord { return this.#coord; }\r\n\tpublic get health(): number { return this.#health; }\r\n\tpublic get isDowned(): boolean { return this.health < 0.0; }\r\n\r\n\tpublic isTeamedWith(other: Player): boolean {\r\n\t\treturn this.team.members.includes(other);\r\n\t}\r\n\r\n\t/** */\r\n\tpublic constructor(game: GameMirror, desc: Player.CtorArgs) {\r\n\t\tsuper();\r\n\r\n\t\tthis.playerId = desc.playerId;\r\n\t\tthis.familyId = desc.familyId;\r\n\t\tthis.teamId = desc.teamId;\r\n\t\tthis.username = desc.username;\r\n\t\tthis.avatar = desc.avatar;\r\n\r\n\t\tthis.game = game;\r\n\t\tthis.reqBuffer = new RequestBuffer();\r\n\r\n\t\tJsUtils.instNoEnum (this as Player, \"game\");\r\n\t\tJsUtils.propNoWrite(this as Player, \"game\",\r\n\t\t\t\"playerId\", \"familyId\", \"teamId\",\r\n\t\t\t\"username\", \"avatar\", \"reqBuffer\",\r\n\t\t);\r\n\t\tif (new.target === Player) {\r\n\t\t\tObject.seal(this); //🧊\r\n\t\t}\r\n\t}\r\n\r\n\t/** @virtual */\r\n\tpublic onTeamsBootstrapped(): void { }\r\n\r\n\t/** Must be called _after_ the grid has been reset. */\r\n\tpublic reset(coord: Coord): void {\r\n\t\tthis.#coord = coord;\r\n\t\tthis.prevCoord = coord;\r\n\t\tthis.game.grid.write(coord, {\r\n\t\t\toccId: this.playerId,\r\n\t\t});\r\n\t\tthis.#health = 0.0;\r\n\t\tthis.reqBuffer.reset(coord);\r\n\t}\r\n\r\n\t/** @virtual Overrides must call super. */\r\n\tpublic onGamePlaying(): void { }\r\n\r\n\t/** @virtual The default implementation does nothing. */\r\n\tpublic onGamePaused(): void { }\r\n\r\n\t/** @virtual The default implementation does nothing. */\r\n\tpublic onGameOver(): void { }\r\n\r\n\t/** @final */\r\n\tprotected makeMovementRequest(dest: Coord, type: Player.MoveType): void {\r\n\t\tif (DEF.DevAssert) {\r\n\t\t\tif (this.game.status !== Game.Status.PLAYING) {\r\n\t\t\t\t// This is not a necessary precondition, but we're doing it anyway.\r\n\t\t\t\tthrow new Error(\"never\");\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (this.reqBuffer.isFull) return; //⚡\r\n\r\n\t\tthis.game.processMoveRequest(this.reqBuffer.signRequest({\r\n\t\t\tinitiator: this.playerId,\r\n\t\t\tlastRejectId: this.reqBuffer.lastRejectId,\r\n\t\t\tmoveType: type,\r\n\t\t\tmoveDest: dest,\r\n\t\t}));\r\n\t}\r\n\r\n\t/**\r\n\t * Notify this Player.\r\n\t *\r\n\t * Causes this Player to update its internal state.\r\n\t * @virtual\r\n\t */\r\n\tpublic setCoord(dest: Coord): void {\r\n\t\tthis.prevCoord = this.coord;\r\n\t\tthis.#coord = dest;\r\n\t}\r\n\r\n\tpublic set health(newHealth: Player.Health) {\r\n\t\tconst oldIsDowned = this.isDowned;\r\n\t\tthis.#health = newHealth;\r\n\r\n\t\tif (oldIsDowned || !this.isDowned) return;\r\n\t\tconst team = this.team;\r\n\t\tconst teams = this.game.teams;\r\n\t\tif (team.elimOrder !== Team.ElimOrder.STANDING) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\t// Right before this downing event, the team has not been\r\n\t\t// soft-eliminated yet, but it might be now. Check it:\r\n\t\tif (team.members.every((player) => player.isDowned)) {\r\n\t\t\t// All players are downed! The team is now eliminated:\r\n\t\t\tconst numNonStandingTeams\r\n\t\t\t\t= 1 + teams.filter((team) => {\r\n\t\t\t\treturn team.elimOrder !== Team.ElimOrder.STANDING;\r\n\t\t\t}).length;\r\n\r\n\t\t\tteam.elimOrder = 1 + teams.filter((team) => {\r\n\t\t\t\treturn team.elimOrder !== Team.ElimOrder.STANDING;\r\n\t\t\t}).length;\r\n\t\t\t// Now that a team is newly-eliminated, check if the\r\n\t\t\t// game should end:\r\n\t\t\tif (numNonStandingTeams === teams.length) {\r\n\t\t\t\tthis.game.statusBecomeOver();\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\nexport namespace Player {\r\n\r\n\texport type Family = _Player.Family;\r\n\texport type RobotFamily = TU.Xcld;\r\n\r\n\texport type Id = _Player.Id;\r\n\r\n\t/**\r\n\t * Health be picked up from the floor where it is randomly spawned\r\n\t * by the game manager. It can be used to attack enemy players, or\r\n\t * to heal teammates.\r\n\t */\r\n\texport type Health = _Player.Health;\r\n\texport type Username = _Player.Username;\r\n\texport type Avatar = _Player.Avatar;\r\n\texport type UserInfo = _Player.UserInfo;\r\n\r\n\t/** @enum */\r\n\texport type MoveType = keyof typeof MoveType;\r\n\texport const MoveType = Object.freeze({\r\n\t\tNORMAL: \"NORMAL\",\r\n\t\tBOOST: \"BOOST\",\r\n\t});\r\n\tMoveType as { [ key in MoveType ]: key };\r\n\r\n\texport type Changes = {\r\n\t\treadonly coord?: Coord,\r\n\t\treadonly health: Player.Health,\r\n\t};\r\n\r\n\t/**\r\n\t * Player Constructor Arguments\r\n\t */\r\n\texport type CtorArgs = _CtorArgs[Player.Family];\r\n\texport type _CtorArgs = {\r\n\t\t[F in Player.Family]: _PreIdAssignmentDict[F] & Readonly<{\r\n\t\t\tplayerId: Player.Id;\r\n\t\t\tavatar: Avatar;\r\n\t\t}>;\r\n\t};\r\n\r\n\ttype _PreIdAssignmentDict = {\r\n\t\t[F in Player.Family]: F extends typeof Player.Family.HUMAN\r\n\t\t? _PreIdAssignmentConditional & {\r\n\t\t\treadonly socket: WebSocket | undefined;\r\n\t\t}\r\n\t\t: _PreIdAssignmentConditional;\r\n\t};\r\n\tinterface _PreIdAssignmentConditional extends UserInfo {\r\n\t\treadonly familyId: F;\r\n\t\treadonly familyArgs: CtorArgs.FamilySpecificPart[F];\r\n\t};\r\n\r\n\texport namespace CtorArgs {\r\n\r\n\t\texport type UnFin = _PreIdAssignmentDict[Player.Family];\r\n\r\n\t\texport interface FamilySpecificPart extends RobotPlayer.FamilySpecificPart {\r\n\t\t\t[Player.Family.HUMAN]: {};\r\n\t\t}\r\n\r\n\t\t/**\r\n\t\t * @returns\r\n\t\t * Squashes teamId fields to be suitable for array indices.\r\n\t\t */\r\n\t\texport function finalize(\r\n\t\t\tgameDesc: Game.CtorArgs.UnFin,\r\n\t\t): asserts gameDesc is Game.CtorArgs\r\n\t\t{\r\n\t\t\tconst playerDescs: TU.RoArr = gameDesc.players;\r\n\t\t\t// Map team ID's to consecutive numbers\r\n\t\t\t// (to play nice with array representations):\r\n\t\t\tconst teamIdCleaner: TU.RoArr\r\n\t\t\t\t= Array.from(new Set(playerDescs.map((player) => player.teamId)))\r\n\t\t\t\t.sort((a, b) => a - b) // This is not a representation requirement.\r\n\t\t\t\t.reduce((prev, originalId, squashedId) => {\r\n\t\t\t\t\tprev[originalId] = squashedId;\r\n\t\t\t\t\treturn prev;\r\n\t\t\t\t}, [] as Array);\r\n\r\n\t\t\t// @ts-expect-error : RO=\r\n\t\t\tgameDesc.players = playerDescs.slice()\r\n\t\t\t\t.sort((pda, pdb) => teamIdCleaner[pda.teamId]! - teamIdCleaner[pdb.teamId]!)\r\n\t\t\t\t.freeze()\r\n\t\t\t\t.map((playerDesc, index) => Object.assign({}, playerDesc, {\r\n\t\t\t\t\tplayerId: index,\r\n\t\t\t\t\tteamId: teamIdCleaner[playerDesc.teamId]!,\r\n\t\t\t\t\tavatar: playerDesc.avatar ?? Player.Avatar.GET_RANDOM(),\r\n\t\t\t\t}))\r\n\t\t\t\t.freeze();\r\n\t\t};\r\n\t}\r\n\tObject.freeze(CtorArgs);\r\n}\r\nJsUtils.protoNoEnum(Player,\r\n\t\"onGamePlaying\", \"onGamePaused\", \"onGameOver\",\r\n\t\"onTeamsBootstrapped\",\r\n);\r\nObject.freeze(Player);\r\nObject.freeze(Player.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Game } from \"../Game\";\r\nimport type { Coord, Tile } from \"floor/Tile\";\r\nimport type { Grid } from \"floor/Grid\";\r\n\r\n/**\r\n * @final\r\n */\r\nexport class HealthInfo {\r\n\r\n\tpublic readonly K: HealthInfo.K;\r\n\t#currentAmount: number = 0.0;\r\n\tpublic readonly tiles = new Map();\r\n\r\n\tpublic get currentAmount(): number { return this.#currentAmount; }\r\n\r\n\tpublic constructor(\r\n\t\tdesc: Game.CtorArgs,\r\n\t\tgridStatic: Grid.ClassIf,\r\n\t) {\r\n\t\tconst baseCostOfBoost = Game.K._HEALTH_COST_OF_BOOST(\r\n\t\t\tdesc.averageHealthPerTile,\r\n\t\t\tgridStatic.getLatticePatchDiameter,\r\n\t\t);\r\n\t\tthis.K = Object.freeze({\r\n\t\t\tavg: desc.averageHealthPerTile * gridStatic.getArea(desc.gridDimensions),\r\n\t\t\tavgPerTile: desc.averageHealthPerTile,\r\n\t\t\tcostOfBoost: (dest: Tile) => baseCostOfBoost / dest.seq.length,\r\n\t\t});\r\n\t\tJsUtils.propNoWrite(this as HealthInfo, \"K\");\r\n\t\tObject.seal(this); //🧊\r\n\t}\r\n\r\n\tpublic reset(): void {\r\n\t\tthis.#currentAmount = 0.0;\r\n\t\tthis.tiles.clear();\r\n\t}\r\n\r\n\tpublic add(amount: number): void {\r\n\t\tthis.#currentAmount += amount;\r\n\t}\r\n}\r\nexport namespace HealthInfo {\r\n\texport interface K {\r\n\t\treadonly avg: number;\r\n\t\treadonly avgPerTile: number;\r\n\t\treadonly costOfBoost: (dest: Tile) => number;\r\n\t}\r\n}\r\nObject.freeze(HealthInfo);\r\nObject.freeze(HealthInfo.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport type { Coord, Tile } from \"./Tile\";\r\nimport { Player } from \"defs/TypeDefs\";\r\n\r\nimport type { WrappedEuclid2 } from \"./impl/Euclid2/System\";\r\nimport type { Beehive } from \"./impl/Beehive/System\";\r\n\r\n/**\r\n * A Collection of Tiles.\r\n */\r\nexport abstract class Grid {\r\n\r\n\t// A type-annotated alias to this.constructor.\r\n\tpublic readonly static: Grid.ClassIf;\r\n\r\n\tpublic readonly dimensions: Grid.Dimensions[S];\r\n\r\n\tpublic readonly area: number;\r\n\r\n\t/**\r\n\t * Protected. See `Grid.getImplementation` for how to access class\r\n\t * literals for construction.\r\n\t */\r\n\tprotected constructor(desc: Grid.CtorArgs) {\r\n\t\tObject.freeze(desc);\r\n\t\tthis.static = desc.Grid;\r\n\t\tthis.dimensions = desc.dimensions;\r\n\t\tthis.area = desc.Grid.getArea(desc.dimensions);\r\n\t\tJsUtils.propNoWrite(this as Grid, \"static\", \"dimensions\");\r\n\t}\r\n\r\n\t/** @virtual */\r\n\tpublic reset(): void {\r\n\t\tthis.forEach((tile) => {\r\n\t\t\tthis.write(tile.coord, {\r\n\t\t\t\toccId: Player.Id.NULL,\r\n\t\t\t\tchar: \"\", seq: \"\", health: 0,\r\n\t\t\t});\r\n\t\t});\r\n\t}\r\n\r\n\t/** */\r\n\tpublic abstract write(coord: Coord, changes: Readonly): void;\r\n\r\n\t/**\r\n\t * For BaseGame's implementation of SER/DES to work, the traversal\r\n\t * order taken by an implementation of this method must depend\r\n\t * only on the dimensions of the instance. The index is not required\r\n\t * to equal the tile's coord.\r\n\t */\r\n\tpublic abstract forEach(callback: (tile: Tile, index: number) => void): void;\r\n\r\n\tpublic abstract forEachShuffled(callback: (tile: Tile, index: number) => void): void;\r\n\r\n\t/**\r\n\t * @returns\r\n\t * One of the closest unoccupied neighbouring tiles toward the\r\n\t * direction of `intendedDest`. When possible, ties are encouraged\r\n\t * to be broken in such a way that imitates movement in a straight\r\n\t * path (visually speaking).\r\n\t *\r\n\t * **Important:** If All destinations from sourceCoord are occupied\r\n\t * (which includes `sourceCoord` itself), the implementation must\r\n\t * return `sourceCoord`.\r\n\t *\r\n\t * @param intendedDest\r\n\t *\r\n\t * @param sourceCoord\r\n\t * The coordinate from which to find the next hop.\r\n\t */\r\n\tpublic abstract getUntToward(intendedDest: Coord, sourceCoord: Coord): Tile;\r\n\r\n\t/**\r\n\t * The opposite of `getUntToward`.\r\n\t *\r\n\t * Behaviour is undefined when both arguments are the same.\r\n\t */\r\n\tpublic abstract getUntAwayFrom(avoidCoord: Coord, sourceCoord: Coord): Tile;\r\n\r\n\t/**\r\n\t * The returned array should be assumed to be a shallow copy of\r\n\t * the corresponding Tile objects.\r\n\t *\r\n\t * This action is commonly performed by the GameManager when\r\n\t * shuffling in new CSP's to its grid.\r\n\t *\r\n\t * Implementations with wrapping edges must make sure that the\r\n\t * return value does not contain duplicate tile entries.\r\n\t *\r\n\t * @virtual\r\n\t * Grid implementations are encouraged to override this if they\r\n\t * have a more efficient way to produce the same result.\r\n\t */\r\n\tpublic getAllAltDestsThan(originCoord: Coord): TU.RoArr {\r\n\t\treturn Array.from(new Set(\r\n\t\t\tthis.tileSourcesTo(originCoord)\r\n\t\t\t\t.flatMap((sourceToTarget) => this.tileDestsFrom(sourceToTarget.coord))\r\n\t\t));\r\n\t}\r\n\r\n\tpublic getRandomCoord(): Coord {\r\n\t\treturn this.static.getRandomCoord(this.dimensions);\r\n\t}\r\n\r\n\t/**\r\n\t * A coord that is at most `radius` movements away from `origin`.\r\n\t * The returned value does not necessarily need to be within this\r\n\t * grid's dimensions as long as the returned coordinate can be\r\n\t * meaningfully truncated by `getUntToward` when passing `origin`\r\n\t * as the `sourceCoord` argument.\r\n\t *\r\n\t * The returned value should follow a uniform distribution.\r\n\t */\r\n\tpublic abstract getRandomCoordAround(origin: Coord, radius: number): Coord;\r\n\r\n\t/** Treat the result as a shallow copy. */\r\n\tpublic abstract tileAt(coord: Coord): Tile;\r\n\t/** Treat the result as a shallow copy. */\r\n\tpublic abstract tileDestsFrom(coord: Coord): TU.RoArr;\r\n\t/** Treat the result as a shallow copy. */\r\n\tpublic abstract tileSourcesTo(coord: Coord): TU.RoArr;\r\n\r\n\t/**\r\n\t * The returned value must be consistent with results from the\r\n\t * methods `_getTileDestsFrom` and `_getTileSourcesTo`.\r\n\t */\r\n\tpublic abstract dist(source: Coord, dest: Coord): number;\r\n\r\n\t/**\r\n\t * @virtual\r\n\t * Implementations are free to override this to spawn players in\r\n\t * pretty patterns.\r\n\t */\r\n\tpublic static getSpawnCoords(\r\n\t\tteamSizes: TU.RoArr,\r\n\t\tdimensions: Grid.Dimensions[Coord.System],\r\n\t): TU.RoArr> {\r\n\t\tconst avoidSet = new Set();\r\n\t\treturn teamSizes.map((numMembers: number) => {\r\n\t\t\tconst teamSpawnCoords: Array = [];\r\n\t\t\twhile (numMembers > 0) {\r\n\t\t\t\tlet coord: Coord;\r\n\t\t\t\tdo {\r\n\t\t\t\t\tcoord = (this as unknown as Grid.ClassIf).getRandomCoord(dimensions);\r\n\t\t\t\t} while (avoidSet.has(coord));\r\n\t\t\t\tteamSpawnCoords.push(coord);\r\n\t\t\t\tavoidSet.add(coord);\r\n\t\t\t\tnumMembers--;\r\n\t\t\t}\r\n\t\t\treturn teamSpawnCoords.freeze();\r\n\t\t}).freeze();\r\n\t}\r\n}\r\nexport namespace Grid {\r\n\r\n\t/** */\r\n\texport interface Dimensions {\r\n\t\t[Coord.System.W_EUCLID2]: WrappedEuclid2.Grid.Dimensions;\r\n\t\t[Coord.System.BEEHIVE]: Beehive.Grid.Dimensions;\r\n\t};\r\n\r\n\t// ==============================================================\r\n\t// Note: The below exports do not require any modifications with\r\n\t// the additions of new coordinate systems.\r\n\t// ==============================================================\r\n\r\n\texport type CtorArgs = Readonly<{\r\n\t\tGrid: Grid.ClassIf;\r\n\t\tsystem: S;\r\n\t\tdimensions: Dimensions[S];\r\n\t\tplayers: any; // TODO.design\r\n\t}>;\r\n\r\n\t/**\r\n\t * Used to simulate abstract static methods.\r\n\t */\r\n\texport interface ClassIf {\r\n\r\n\t\t/** Constructor */\r\n\t\tnew(desc: CtorArgs): Grid;\r\n\r\n\t\t/**\r\n\t\t * @returns\r\n\t\t * The minimum number of leaf nodes a language must have to be\r\n\t\t * playable with this coordinate system's grid.\r\n\t\t *\r\n\t\t * Definition: The maximum possible number- for any tile in the\r\n\t\t * grid- of all destinations from sources to itself, excluding\r\n\t\t * itself.\r\n\t\t */\r\n\t\tambiguityThreshold: number;\r\n\r\n\t\t/**\r\n\t\t * @see Grid.DimensionBounds\r\n\t\t */\r\n\t\tsizeLimits: Grid.DimensionBounds;\r\n\r\n\t\t/**\r\n\t\t * @returns\r\n\t\t * The number of Tiles that could fit in a Grid of such bounds.\r\n\t\t */\r\n\t\tgetArea(bounds: Dimensions[S]): number;\r\n\r\n\t\t/**\r\n\t\t * \\*Assuming the grid is lattice-like and is partitioned into\r\n\t\t * highly similar patches where each patch has a center, and\r\n\t\t * all tiles in the patch are closer to that center tile than\r\n\t\t * to any other patch's center tile. Returns the minimum number\r\n\t\t * of tiles that must be visited to get from the center of one\r\n\t\t * patch to any neighbouring patch.\r\n\t\t */\r\n\t\tgetLatticePatchDiameter(area: number): number;\r\n\r\n\t\t/**\r\n\t\t * @returns\r\n\t\t * A coordinate with random, integer-valued fields within the\r\n\t\t * specified upper limits\r\n\t\t */\r\n\t\tgetRandomCoord(bounds: Dimensions[S]): Coord;\r\n\r\n\t\t/**\r\n\t\t * Return values do not need to be the same for repeated calls\r\n\t\t * with identical arguments. None of the returned coordinates\r\n\t\t * should be the same.\r\n\t\t */\r\n\t\tgetSpawnCoords(\r\n\t\t\tteamSizes: TU.RoArr,\r\n\t\t\tdimensions: Dimensions[S],\r\n\t\t): TU.RoArr>;\r\n\t};\r\n\r\n\t// Each implementation must register itself into this dictionary.\r\n\t// See CmapManager.ts.\r\n\texport const _Constructors: {\r\n\t\treadonly [ S in Coord.System ]: Grid.ClassIf\r\n\t} = {\r\n\t\t// These are initialized later to avoid bootstrapping issues.\r\n\t\t[\"W_EUCLID2\"]: undefined!,\r\n\t\t[\"BEEHIVE\"]: undefined!,\r\n\t};\r\n\r\n\t/**\r\n\t * @returns\r\n\t * A Grid class for the specified coordinate system.\r\n\t */\r\n\texport const getImplementation = (coordSys: S): ClassIf => {\r\n\t\t// Note: At the time of writing this, separating this into\r\n\t\t// two lines is necessary (otherwise Typescript will feel\r\n\t\t// overwhelmed)\r\n\t\tconst ctor = _Constructors[coordSys];\r\n\t\treturn ctor as unknown as ClassIf;\r\n\t};\r\n\r\n\t/**\r\n\t * Bounds are inclusive. Ie. the specified values are _just_ allowed.\r\n\t *\r\n\t * Upper and lower bounds must be strictly positive integer values.\r\n\t */\r\n\texport type DimensionBounds = Readonly<{\r\n\t\t[P in keyof Dimensions[S]]: {\r\n\t\t\treadonly min: number;\r\n\t\t\treadonly max: number;\r\n\t\t};\r\n\t}>;\r\n}\r\n// Grid gets frozen in PostInit after _Constructors get initialized.\r\nObject.freeze(Grid);\r\nObject.freeze(Grid.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Player } from \"../player/Player\";\r\n\r\n\r\n/**\r\n * Information about each Player's scores and statistics since the\r\n * last Game reset. This is separated from Player instances since\r\n * non-GameManagers have no need to maintain such records throughout\r\n * the game.\r\n *\r\n * @final\r\n */\r\nexport class ScoreInfo {\r\n\r\n\t/**\r\n\t * A map from player ID's to information about their scores.\r\n\t */\r\n\tpublic readonly entries: TU.RoArr;\r\n\r\n\tpublic constructor(playerIds: TU.RoArr) {\r\n\t\tconst entries: Array = [];\r\n\t\tfor (const id of playerIds) {\r\n\t\t\tentries[id] = new ScoreInfo.Entry();\r\n\t\t}\r\n\t\tthis.entries = entries;\r\n\t\tJsUtils.propNoWrite(this as ScoreInfo, \"entries\");\r\n\t\tObject.seal(this); //🧊\r\n\t}\r\n\r\n\tpublic reset(): void {\r\n\t\tfor (const entry of this.entries) {\r\n\t\t\tentry.reset();\r\n\t\t}\r\n\t}\r\n}\r\nexport namespace ScoreInfo {\r\n\t/**\r\n\t */\r\n\texport class Entry {\r\n\r\n\t\tpublic readonly moveCounts: {[M in Player.MoveType]: number};\r\n\r\n\t\t// TODO.design how to send this info to the game manager?\r\n\t\t// It is currently checked on the client side.\r\n\t\t//public invalidKeyPresses\r\n\r\n\t\tpublic totalHealthPickedUp: Player.Health;\r\n\r\n\t\tpublic constructor() {\r\n\t\t\tthis.moveCounts = {} as any; // This will be initialized during reset.\r\n\t\t}\r\n\r\n\t\tpublic reset(): void {\r\n\t\t\tthis.totalHealthPickedUp = 0.0;\r\n\t\t\t(Object.getOwnPropertyNames(Player.MoveType) as\r\n\t\t\t\tArray).forEach((key) => {\r\n\t\t\t\tthis.moveCounts[key] = 0;\r\n\t\t\t});\r\n\t\t}\r\n\t}\r\n\tObject.freeze(Entry);\r\n\tObject.freeze(Entry.prototype);\r\n}\r\nObject.freeze(ScoreInfo);\r\nObject.freeze(ScoreInfo.prototype);","import { JsUtils} from \"defs/JsUtils\";\r\nimport { Game } from \"../Game\";\r\nimport { Lang } from \"defs/TypeDefs\";\r\n\r\nimport type { Coord, Tile } from \"floor/Tile\";\r\nimport type { StateChange } from \"../StateChange\";\r\nimport type { Grid } from \"floor/Grid\";\r\nimport type { OperatorPlayer } from \"../player/OperatorPlayer\";\r\n\r\nimport { Player } from \"../player/Player\";\r\nimport { Team } from \"../player/Team\";\r\n\r\n/** */\r\nexport abstract class GameMirror {\r\n\r\n\tpublic readonly grid: Grid;\r\n\treadonly #onGameBecomeOver: () => void;\r\n\tpublic readonly langFrontend: Lang.FrontendDesc;\r\n\r\n\tpublic readonly players: TU.RoArr;\r\n\tpublic readonly operators: TU.RoArr;\r\n\t#currentOperator: OperatorPlayer;\r\n\t/** Indexable by team ID's. */\r\n\tpublic readonly teams: TU.RoArr;\r\n\r\n\t#status: Game.Status;\r\n\r\n\t/** */\r\n\tpublic constructor(args: {\r\n\t\treadonly impl: Game.ImplArgs,\r\n\t\treadonly desc: Game.CtorArgs,\r\n\t\treadonly operatorIds: TU.RoArr,\r\n\t}) {\r\n\t\tconst { impl, desc, operatorIds } = args;\r\n\t\tObject.freeze(desc);\r\n\t\tObject.freeze(desc.players);\r\n\t\tdesc.players.forEach((desc) => Object.freeze(desc));\r\n\t\tObject.freeze(operatorIds);\r\n\r\n\t\tconst gridClass = impl.gridClassLookup(desc.coordSys);\r\n\t\tthis.grid = new (gridClass)({\r\n\t\t\tGrid: gridClass,\r\n\t\t\tsystem: desc.coordSys,\r\n\t\t\tdimensions: desc.gridDimensions,\r\n\t\t\tplayers: desc.players,\r\n\t\t}) as GameMirror[\"grid\"];\r\n\r\n\t\tthis.#onGameBecomeOver = impl.onGameBecomeOver;\r\n\t\tthis.langFrontend = Lang.GET_FRONTEND_DESC_BY_ID(desc.langId)!;\r\n\r\n\t\t// Construct players:\r\n\t\tconst players = this._createPlayers(desc, impl, operatorIds);\r\n\t\tthis.players = players.players;\r\n\t\tthis.operators = players.operators;\r\n\t\t{\r\n\t\t\tconst teams: Player[][] = [];\r\n\t\t\tthis.players.forEach((player) => {\r\n\t\t\t\tif (!teams[player.teamId]) {\r\n\t\t\t\t\tteams[player.teamId] = [];\r\n\t\t\t\t}\r\n\t\t\t\tteams[player.teamId]!.push(player);\r\n\t\t\t});\r\n\t\t\tthis.teams = teams.map((teammateArray, teamId) => {\r\n\t\t\t\treturn new Team(teamId, teammateArray);\r\n\t\t\t});\r\n\t\t}\r\n\t\tJsUtils.propNoWrite(this as GameMirror,\r\n\t\t\t\"grid\", \"langFrontend\",\r\n\t\t\t\"players\", \"operators\", \"teams\",\r\n\t\t);\r\n\t\tthis.players.forEach((player) => player.onTeamsBootstrapped());\r\n\t\tthis.setCurrentOperator(0);\r\n\t}\r\n\r\n\t/** */\r\n\tpublic reset(): void {\r\n\t\tthis.grid.reset();\r\n\r\n\t\t// We must reset status to PAUSED to pass a state-transition\r\n\t\t// assertion when changing status later to PLAYING.\r\n\t\tthis.#status = Game.Status.PAUSED;\r\n\t}\r\n\r\n\r\n\t/** Helper for the constructor. */\r\n\tprivate _createPlayers(\r\n\t\tgameDesc: Game.CtorArgs,\r\n\t\timplArgs: Game.ImplArgs,\r\n\t\toperatorIds: TU.RoArr,\r\n\t): {\r\n\t\tplayers: TU.RoArr,\r\n\t\toperators: TU.RoArr,\r\n\t} {\r\n\t\tconst players = gameDesc.players.map((pDesc) => {\r\n\t\t\tif (pDesc.familyId === Player.Family.HUMAN) {\r\n\t\t\t\treturn (operatorIds.includes(pDesc.playerId))\r\n\t\t\t\t\t? new implArgs.OperatorPlayer!(this, pDesc)\r\n\t\t\t\t\t: new Player(this, pDesc);\r\n\t\t\t} else {\r\n\t\t\t\treturn implArgs.RobotPlayer(\r\n\t\t\t\t\tthis as GameMirror,\r\n\t\t\t\t\tpDesc,\r\n\t\t\t\t);\r\n\t\t\t}\r\n\t\t}).freeze();\r\n\t\treturn Object.freeze({\r\n\t\t\tplayers,\r\n\t\t\toperators: operatorIds.map((playerId) => players[playerId] as OperatorPlayer).freeze(),\r\n\t\t});\r\n\t}\r\n\r\n\t/** @final */\r\n\tpublic deserializeResetState(ser: Game.ResetSer): void {\r\n\t\tJsUtils.deepFreeze(ser);\r\n\r\n\t\tthis.grid.forEach((tile, index) => {\r\n\t\t\tthis.grid.write(tile.coord, ser.csps[index]!);\r\n\t\t});\r\n\t\tser.playerCoords.forEach((coord, playerId) => {\r\n\t\t\tthis.players[playerId]!.reset(coord);\r\n\t\t});\r\n\t}\r\n\r\n\tpublic get currentOperator(): OperatorPlayer {\r\n\t\treturn this.#currentOperator;\r\n\t}\r\n\tpublic setCurrentOperator(nextOperatorIndex: number): void {\r\n\t\tconst nextOperator = this.operators[nextOperatorIndex]!;\r\n\t\tif (!DEF.DevAssert && nextOperator === undefined) throw new Error(\"never\");\r\n\t\tif (this.currentOperator !== nextOperator)\r\n\t\t{\r\n\t\t\tthis.#currentOperator = nextOperator;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\tpublic get status(): Game.Status {\r\n\t\treturn this.#status;\r\n\t}\r\n\r\n\t/**\r\n\t * On the client side, this should only be accessed through a\r\n\t * wrapper function that also makes UI-related changes.\r\n\t *\r\n\t * If the game is already playing, this does nothing.\r\n\t */\r\n\tpublic statusBecomePlaying(): void {\r\n\t\tif (this.status === Game.Status.PLAYING) {\r\n\t\t\tconsole.info(\"[statusBecomePlaying]: Game is already playing\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.status !== Game.Status.PAUSED) {\r\n\t\t\tthrow new Error(\"Can only resume a game that is currently paused.\");\r\n\t\t}\r\n\t\tthis.players.forEach((player) => {\r\n\t\t\tplayer.onGamePlaying();\r\n\t\t});\r\n\t\tthis.#status = Game.Status.PLAYING;\r\n\t}\r\n\r\n\t/**\r\n\t * On the client side, this should only be accessed through a\r\n\t * wrapper function that also makes UI-related changes.\r\n\t *\r\n\t * If the game is already paused, this does nothing.\r\n\t */\r\n\tpublic statusBecomePaused(): void {\r\n\t\tif (this.status === Game.Status.PAUSED) {\r\n\t\t\tconsole.info(\"[statusBecomePaused]: Game is already paused\");\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tif (this.status === Game.Status.OVER) {\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.players.forEach((player) => {\r\n\t\t\tplayer.onGamePaused();\r\n\t\t});\r\n\t\tthis.#status = Game.Status.PAUSED;\r\n\t}\r\n\r\n\t/**\r\n\t * This should be called when all teams have been eliminated.\r\n\t * A team becomes (and subsequently and unconditionally stays)\r\n\t * eliminated when all their members are in a downed state at\r\n\t * the same time.\r\n\t *\r\n\t * This should not be controllable by UI input elements. Instead,\r\n\t * The UI layer can pass a callback to the constructor.\r\n\t */\r\n\tpublic statusBecomeOver(): void {\r\n\t\tif (this.status === Game.Status.OVER) return;\r\n\t\tthis.players.forEach((player) => {\r\n\t\t\tplayer.onGameOver();\r\n\t\t});\r\n\t\tthis.#status = Game.Status.OVER;\r\n\t\tthis.#onGameBecomeOver();\r\n\t\tconsole.info(\"game is over!\");\r\n\t}\r\n\r\n\tpublic abstract processMoveRequest(desc: StateChange.Req, socket?: any): void;\r\n\r\n\t/** @virtual */\r\n\tprotected commitTileMods(\r\n\t\tcoord: Coord,\r\n\t\tchanges: Tile.Changes,\r\n\t\tdoCheckOperatorSeqBuffer: boolean = true,\r\n\t): void {\r\n\t\t// JsUtils.deepFreeze(changes); // <- already done by caller.\r\n\t\tconst tile = this.grid.tileAt(coord);\r\n\r\n\t\tif (changes.seq !== undefined) {\r\n\t\t\t// Refresh the operator's `seqBuffer` (maintain invariant) for new CSP:\r\n\t\t\tif (doCheckOperatorSeqBuffer) {\r\n\t\t\t\t// ^Do this when non-operator moves into the the operator's vicinity.\r\n\t\t\t\tthis.operators.forEach((op) => {\r\n\t\t\t\t\tif (this.grid.tileDestsFrom(op.coord).includes(tile)) {\r\n\t\t\t\t\t\top.seqBufferAcceptKey(undefined);\r\n\t\t\t\t\t}\r\n\t\t\t\t});\r\n\t\t\t}\r\n\t\t}\r\n\t\tthis.grid.write(coord, changes);\r\n\t}\r\n\r\n\t/** @virtual */\r\n\tprotected commitStateChange(desc: StateChange.Res, socket?: any): void {\r\n\t\tJsUtils.deepFreeze(desc);\r\n\t\tconst player = this.players[desc.initiator]!;\r\n\r\n\t\tif (desc.rejectId !== undefined) {\r\n\t\t\tplayer.reqBuffer.reject(desc.rejectId, player.coord);\r\n\t\t\treturn; //⚡\r\n\t\t}\r\n\r\n\t\tObject.entries(desc.tiles).freeze().forEach(([coord, changes]) => {\r\n\t\t\tthis.commitTileMods(parseInt(coord), changes);\r\n\t\t});\r\n\t\tObject.entries(desc.players).freeze().forEach(([pid, changes]) => {\r\n\t\t\tconst player = this.players[parseInt(pid)]!;\r\n\t\t\tplayer.reqBuffer.acceptOldest();\r\n\t\t\tplayer.health = changes.health;\r\n\r\n\t\t\tif (changes.coord !== undefined) {\r\n\t\t\t\tthis.grid.write(player.coord, {occId: Player.Id.NULL});\r\n\t\t\t\tthis.grid.write(changes.coord, {occId: player.playerId});\r\n\t\t\t\t// === order matters ===\r\n\t\t\t\tplayer.setCoord(changes.coord);\r\n\t\t\t}\r\n\t\t});\r\n\t}\r\n}\r\nJsUtils.protoNoEnum(GameMirror, \"_createPlayers\");\r\nObject.freeze(GameMirror);\r\nObject.freeze(GameMirror.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport type { Coord as BaseCoord, Coord, Tile } from \"floor/Tile\";\r\nimport { Grid as AbstractGrid } from \"floor/Grid\";\r\nimport { Player } from \"defs/TypeDefs\";\r\ntype S = BaseCoord.System.W_EUCLID2;\r\n\r\nexport type Dim = {\r\n\treadonly height: number,\r\n\treadonly width: number,\r\n};\r\n\r\n/**\r\n * Euclid2 Internal Augmented Coord\r\n *\r\n * Immutable.\r\n */\r\nclass IAC {\r\n\t//#region\r\n\tpublic constructor(\r\n\t\tpublic readonly x: number,\r\n\t\tpublic readonly y: number,\r\n\t) {\r\n\t\tObject.freeze(this);\r\n\t}\r\n\tpublic static from(dimensions: Dim, coord: Coord): IAC {\r\n\t\treturn new IAC(coord % dimensions.width, Math.floor(coord / dimensions.width));\r\n\t}\r\n\tpublic toCoord(dimensions: Dim): Coord {\r\n\t\treturn (this.y * dimensions.width) + this.x;\r\n\t}\r\n\r\n\tpublic static distX(dim: Dim, i1: IAC.Bare, i2: IAC.Bare): {\r\n\t\tdist: number, wrap: boolean,\r\n\t} {\r\n\t\tlet dist = Math.abs(i1.x - i2.x);\r\n\t\tif (dist < dim.width / 2) return { dist, wrap: false };\r\n\t\treturn { dist: dim.width - dist, wrap: true };\r\n\t}\r\n\tpublic static distY(dim: Dim, i1: IAC.Bare, i2: IAC.Bare): {\r\n\t\tdist: number, wrap: boolean,\r\n\t} {\r\n\t\tlet dist = Math.abs(i1.y - i2.y);\r\n\t\tif (dist < dim.height / 2) return { dist, wrap: false };\r\n\t\treturn { dist: dim.height - dist, wrap: true };\r\n\t}\r\n\tpublic static oneNorm(dim: Dim, i1: IAC.Bare, i2: IAC.Bare): {\r\n\t\tnorm: number, wrapX: boolean, wrapY: boolean,\r\n\t} {\r\n\t\tconst dX = IAC.distX(dim,i1,i2), dY = IAC.distY(dim,i1,i2);\r\n\t\treturn { norm: dX.dist + dY.dist, wrapX: dX.wrap, wrapY: dY.wrap };\r\n\t}\r\n\tpublic static infNorm(dim: Dim, i1: IAC.Bare, i2: IAC.Bare): {\r\n\t\tnorm: number, wrapX: boolean, wrapY: boolean,\r\n\t} {\r\n\t\tconst dX = IAC.distX(dim,i1,i2), dY = IAC.distY(dim,i1,i2);\r\n\t\treturn { norm: Math.max(dX.dist, dY.dist), wrapX: dX.wrap, wrapY: dY.wrap };\r\n\t}\r\n\t/**\r\n\t * @returns\r\n\t * A number in the range (0, 1). `One` means the x and y\r\n\t * coordinates align to the x or y axis, and `Zero` means they\r\n\t * are 45 degrees from the x or y axis.\r\n\t *\r\n\t * ```latex\r\n\t * \\frac{\\left|\\left|x\\right|-\\left|y\\right|\\right|}{\\left|x\\right|+\\left|y\\right|}=a\r\n\t * ```\r\n\t */\r\n\tpublic static axialAlignment(dim: Dim, _i1: Coord, _i2: Coord): number {\r\n\t\tconst i1 = IAC.from(dim, _i1), i2 = IAC.from(dim, _i2);\r\n\t\tconst dX = IAC.distX(dim,i1,i2), dY = IAC.distY(dim,i1,i2);\r\n\t\treturn (Math.abs(dX.dist - dY.dist)) / (dX.dist + dY.dist);\r\n\t}\r\n\r\n\tpublic add(other: IAC.Bare): IAC {\r\n\t\treturn new IAC(\r\n\t\t\tthis.x + other.x,\r\n\t\t\tthis.y + other.y,\r\n\t\t);\r\n\t}\r\n\tpublic sub(other: IAC.Bare): IAC {\r\n\t\treturn new IAC(\r\n\t\t\tthis.x - other.x,\r\n\t\t\tthis.y - other.y,\r\n\t\t);\r\n\t}\r\n\tpublic iSub(other: IAC.Bare): IAC {\r\n\t\treturn this.add(this.sub(other));\r\n\t}\r\n\tpublic mul(scalar: number): IAC {\r\n\t\treturn new IAC(\r\n\t\t\tscalar * this.x,\r\n\t\t\tscalar * this.y,\r\n\t\t);\r\n\t}\r\n\tpublic mod(dim: Dim): IAC {\r\n\t\tlet {x,y} = this;\r\n\t\twhile (x < 0) x += dim.width;\r\n\t\twhile (y < 0) y += dim.height;\r\n\t\tx %= dim.width;\r\n\t\ty %= dim.height;\r\n\t\treturn new IAC(x,y);\r\n\t}\r\n\t//#endregion\r\n}\r\nexport namespace IAC {\r\n\texport type Bare = {\r\n\t\treadonly x: number;\r\n\t\treadonly y: number;\r\n\t};\r\n}\r\nObject.freeze(IAC);\r\nObject.freeze(IAC.prototype);\r\n\r\n\r\n/**\r\n * Edges are wrapped.\r\n */\r\nexport namespace WrappedEuclid2 {\r\n\r\n\t/**\r\n\t * Euclid2 Grid\r\n\t */\r\n\texport class Grid extends AbstractGrid {\r\n\r\n\t\tpublic static ambiguityThreshold = 24;\r\n\r\n\t\tprivate static readonly SIZE_LIMITS = JsUtils.deepFreeze({\r\n\t\t\theight: { min: 10, max: 51 },\r\n\t\t\twidth: { min: 10, max: 51 },\r\n\t\t});\r\n\t\tpublic static sizeLimits: AbstractGrid.DimensionBounds = Grid.SIZE_LIMITS;\r\n\r\n\t\tprivate readonly _grid: SealedArray;\r\n\r\n\t\tprotected readonly iacCache: TU.RoArr;\r\n\r\n\t\tpublic constructor(desc: AbstractGrid.CtorArgs) {\r\n\t\t\tsuper(desc);\r\n\r\n\t\t\tconst grid: Array = [];\r\n\t\t\tfor (let y = 0; y < this.dimensions.height; y++) {\r\n\t\t\t\tfor (let x = 0; x < this.dimensions.width; x++) {\r\n\t\t\t\t\tconst tile: Tile = {\r\n\t\t\t\t\t\tcoord: (y * this.dimensions.width) + x,\r\n\t\t\t\t\t\toccId: Player.Id.NULL,\r\n\t\t\t\t\t\thealth: 0, seq: \"\",\r\n\t\t\t\t\t};\r\n\t\t\t\t\tgrid.push(tile);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis._grid = grid.seal();\r\n\r\n\t\t\tconst iacCache = [];\r\n\t\t\tfor (let y = 0; y < desc.dimensions.height; y++) {\r\n\t\t\t\tfor (let x = 0; x < desc.dimensions.width; x++) {\r\n\t\t\t\t\tiacCache.push(new IAC(x,y));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthis.iacCache = iacCache.freeze();\r\n\t\t\tJsUtils.instNoEnum(this as Grid, \"iacCache\");\r\n\t\t\tJsUtils.propNoWrite(this as Grid, \"_grid\", \"iacCache\");\r\n\t\t\tif (new.target === Grid) {\r\n\t\t\t\tObject.seal(this); //🧊\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic write(coord: Coord, changes: Tile.Changes): void {\r\n\t\t\tthis._grid[coord] = Object.freeze(Object.assign(\r\n\t\t\t\tObject.create(null), this._grid[coord], changes,\r\n\t\t\t));\r\n\t\t}\r\n\r\n\t\tpublic forEach(consumer: (tile: Tile, index: number) => void): void {\r\n\t\t\tthis._grid.forEach(consumer);\r\n\t\t}\r\n\t\tpublic forEachShuffled(consumer: (tile: Tile, index: number) => void): void {\r\n\t\t\tconst indices: Array = new Array(this.area);\r\n\t\t\tfor (let i = 0; i < this.area; i++) {\r\n\t\t\t\tindices[i] = i;\r\n\t\t\t}\r\n\t\t\tindices.sort((a,b) => Math.random() - 0.5).freeze();\r\n\t\t\tfor (const index of indices) {\r\n\t\t\t\tconsumer(this._grid[index]!, index);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic getUntToward(intendedDest: Coord, sourceCoord: Coord): Tile {\r\n\t\t\tconst options = this.tileDestsFrom(sourceCoord)\r\n\t\t\t.filter((tile) => tile.occId === Player.Id.NULL)\r\n\t\t\t.map((tile) => {\r\n\t\t\t\tconst tileIac = this.iacCache[tile.coord]!;\r\n\t\t\t\tconst destIac = this.iacCache[intendedDest]!;\r\n\t\t\t\treturn {\r\n\t\t\t\t\ttile, iac: tileIac,\r\n\t\t\t\t\tinfNorm: IAC.infNorm(this.dimensions, tileIac, destIac).norm,\r\n\t\t\t\t\toneNorm: IAC.oneNorm(this.dimensions, tileIac, destIac).norm,\r\n\t\t\t\t};\r\n\t\t\t});\r\n\t\t\tif (options.length === 0) {\r\n\t\t\t\treturn this.tileAt(sourceCoord);\r\n\t\t\t}\r\n\t\t\toptions.sort((ta, tb) => ta.infNorm - tb.infNorm);\r\n\t\t\toptions.length = 3;\r\n\t\t\toptions.sort((ta, tb) => ta.oneNorm - tb.oneNorm);\r\n\t\t\tconst best = options[0]!;\r\n\t\t\t// Filter out non-optimal options:\r\n\t\t\tfor (let i = 1; i < options.length; i++) {\r\n\t\t\t\tif (options[i]!.infNorm > best.infNorm) {\r\n\t\t\t\t\toptions.splice(i);\r\n\t\t\t\t\tbreak;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tif (options.length === 1) {\r\n\t\t\t\t// Minor optimization:\r\n\t\t\t\treturn best.tile;\r\n\t\t\t}\r\n\t\t\t// Choose one of the most favourable using some randomness\r\n\t\t\t// weighted to follow a straight-looking path of movement.\r\n\t\t\tif (best.infNorm === best.oneNorm) {\r\n\t\t\t\t// (the axial option (if it exists) should be the first\r\n\t\t\t\t// due to the previous sort's tie-breaker.\r\n\t\t\t\tif (IAC.axialAlignment(this.dimensions, sourceCoord, intendedDest) > 0.5) {\r\n\t\t\t\t\t// The path to the intended destination is aligned more\r\n\t\t\t\t\t// with the x or y axis than they are with those axes\r\n\t\t\t\t\t// rotated 45 degrees.\r\n\t\t\t\t\treturn best.tile;\r\n\t\t\t\t} else {\r\n\t\t\t\t\t// Ignore the axial option in further computations:\r\n\t\t\t\t\toptions.shift();\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\t// Choose a random non-axial option:\r\n\t\t\treturn options[Math.floor(options.length * Math.random())]!.tile;\r\n\t\t}\r\n\t\tpublic getUntAwayFrom(_avoidCoord: Coord, _sourceCoord: Coord): Tile {\r\n\t\t\tconst avoid = this.iacCache[_avoidCoord]!;\r\n\t\t\tconst src = this.iacCache[_sourceCoord]!;\r\n\t\t\tconst dest = src.iSub(avoid).mod(this.dimensions);\r\n\t\t\treturn this._grid[dest.toCoord(this.dimensions)]!;\r\n\t\t}\r\n\r\n\t\tpublic getAllAltDestsThan(originCoord: Coord): TU.RoArr {\r\n\t\t\treturn this.tileDestsFrom(originCoord, 2);\r\n\t\t}\r\n\r\n\t\tpublic getRandomCoordAround(_origin: Coord, radius: number): Coord {\r\n\t\t\tconst origin = this.iacCache[_origin]!;\r\n\t\t\treturn new IAC(\r\n\t\t\t\torigin.x + Math.trunc(2 * radius * (Math.random() - 0.5)),\r\n\t\t\t\torigin.y + Math.trunc(2 * radius * (Math.random() - 0.5)),\r\n\t\t\t).mod(this.dimensions).toCoord(this.dimensions);\r\n\t\t}\r\n\r\n\t\tpublic dist(source: Coord, dest: Coord): number {\r\n\t\t\treturn IAC.infNorm(this.dimensions,\r\n\t\t\t\tthis.iacCache[source]!,\r\n\t\t\t\tthis.iacCache[dest]!,\r\n\t\t\t).norm;\r\n\t\t}\r\n\r\n\t\tpublic tileAt(coord: Coord): Tile {\r\n\t\t\treturn this._grid[coord]!;\r\n\t\t}\r\n\t\tpublic tileDestsFrom(coord: Coord, radius: number = 1): TU.RoArr {\r\n\t\t\tconst iac = this.iacCache[coord]!;\r\n\t\t\tlet wrapX = false, wrapY = false;\r\n\t\t\tconst W = this.dimensions.width, H = this.dimensions.height;\r\n\t\t\tlet t = (iac.y - radius); if (t < 0) { t += H; wrapY = true; }\r\n\t\t\tlet l = (iac.x - radius); if (l < 0) { l += W; wrapX = true; }\r\n\t\t\tlet b = (iac.y + radius +1); if (b > H) { b -= H; wrapY = true; }\r\n\t\t\tlet r = (iac.x + radius +1); if (r > W) { r -= W; wrapX = true; }\r\n\t\t\tconst dests: Array = [];\r\n\t\t\tif (wrapX) {\r\n\t\t\t\tconst _t = t * W;\r\n\t\t\t\tdests.push(...this._grid.slice(_t, _t+r));\r\n\t\t\t\tif (wrapY) {\r\n\t\t\t\t\tdests.push(...this._grid.slice(0, r));\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tconst b1 = wrapY ? H : b;\r\n\t\t\tconst sliceLength = (radius * 2) + 1;\r\n\t\t\tfor (let y = t; y < b1; y++) {\r\n\t\t\t\tconst begin = (y * W) + l;\r\n\t\t\t\tdests.push(...this._grid.slice(begin, begin+sliceLength));\r\n\t\t\t}\r\n\t\t\tif (wrapX && !wrapY) { dests.length -= r; }\r\n\t\t\tif (wrapY) {\r\n\t\t\t\tfor (let y = 0; y < b; y++) {\r\n\t\t\t\t\tconst begin = (y * W) + l;\r\n\t\t\t\t\tdests.push(...this._grid.slice(begin, begin+sliceLength));\r\n\t\t\t\t}\r\n\t\t\t\tif (wrapX) { dests.length -= r; }\r\n\t\t\t}\r\n\t\t\t// TODO.impl use a set when radius > 2 to prevent duplicate entries?\r\n\t\t\treturn dests.freeze();\r\n\t\t}\r\n\t\tpublic tileSourcesTo(coord: Coord, radius: number = 1): TU.RoArr {\r\n\t\t\treturn this.tileDestsFrom(coord, radius);\r\n\t\t}\r\n\r\n\t\tdeclare public static getSpawnCoords: AbstractGrid.ClassIf[\"getSpawnCoords\"];\r\n\r\n\t\tpublic static getArea(dim: Grid.Dimensions): number {\r\n\t\t\treturn dim.height * dim.width;\r\n\t\t}\r\n\r\n\t\tpublic static getLatticePatchDiameter(area: number): number {\r\n\t\t\treturn Math.sqrt(area);\r\n\t\t}\r\n\r\n\t\tpublic static getRandomCoord(dimensions: Grid.Dimensions): Coord {\r\n\t\t\tconst x = Math.floor(dimensions.width * Math.random());\r\n\t\t\tconst y = Math.floor(dimensions.height * Math.random());\r\n\t\t\treturn (y * dimensions.width) + x;\r\n\t\t}\r\n\t}\r\n\texport namespace Grid {\r\n\t\t/**\r\n\t\t * If `width` is not specified, `height` is taken as its default value.\r\n\t\t */\r\n\t\texport type Dimensions = Dim;\r\n\t}\r\n\tGrid.prototype.tileSourcesTo = Grid.prototype.tileDestsFrom;\r\n\tJsUtils.protoNoEnum(Grid, \"tileAt\", \"tileDestsFrom\", \"tileSourcesTo\");\r\n\tObject.freeze(Grid);\r\n\tObject.freeze(Grid.prototype);\r\n}\r\nObject.freeze(WrappedEuclid2);","import { JsUtils } from \"defs/JsUtils\";\r\nimport type { Coord, Tile } from \"floor/Tile\";\r\nimport { Grid as AbstractGrid } from \"floor/Grid\";\r\ntype S = Coord.System.BEEHIVE;\r\n\r\n/**\r\n * Beehive Internal Augmented Coord\r\n */\r\nexport class IAC {\r\n\r\n\t/** 🕒 3'o'clock direction */\r\n\tpublic readonly dash: number;\r\n\r\n\t/** 🕔 5'o'clock direction */\r\n\tpublic readonly bash: number;\r\n\r\n\tpublic constructor(desc: IAC.Bare) {\r\n\t\tthis.dash = desc.dash;\r\n\t\tthis.bash = desc.bash;\r\n\t\tObject.freeze(this); //🧊\r\n\t}\r\n\tpublic toCoord(): Coord {\r\n\t\t// TODO.impl\r\n\t\treturn undefined!;\r\n\t}\r\n\r\n\tpublic round(): IAC {\r\n\t\t// I'm pretty proud of this despite the fact that I don't\r\n\t\t// think there's anything very impressive about it.\r\n\t\tconst floorDash = Math.floor(this.dash);\r\n\t\tconst floorBash = Math.floor(this.bash);\r\n\t\tconst d = floorDash - this.dash;\r\n\t\tconst b = floorBash - this.bash;\r\n\t\tif (d > 2 * b) {\r\n\t\t\treturn new IAC({ dash: floorDash+1, bash: floorBash });\r\n\t\t} else if (d < 0.5 * b) {\r\n\t\t\treturn new IAC({ dash: floorDash , bash: floorBash+1 });\r\n\t\t} else if (Math.min(d, b) > 0.5) {\r\n\t\t\treturn new IAC({ dash: floorDash+1, bash: floorBash+1 });\r\n\t\t} else {\r\n\t\t\treturn new IAC({ dash: floorDash , bash: floorBash });\r\n\t\t}\r\n\t}\r\n\tpublic add(other: IAC.Bare): IAC {\r\n\t\treturn new IAC({\r\n\t\t\tdash: this.dash + other.dash,\r\n\t\t\tbash: this.bash + other.bash,\r\n\t\t});\r\n\t}\r\n\tpublic sub(other: IAC.Bare): IAC {\r\n\t\treturn new IAC({\r\n\t\t\tdash: this.dash - other.dash,\r\n\t\t\tbash: this.bash - other.bash,\r\n\t\t});\r\n\t}\r\n\tpublic mul(scalar: number): IAC {\r\n\t\treturn new IAC({\r\n\t\t\tdash: scalar * this.dash,\r\n\t\t\tbash: scalar * this.bash,\r\n\t\t});\r\n\t}\r\n}\r\nexport namespace IAC {\r\n\texport type Bare = Readonly<{\r\n\t\tdash: number;\r\n\t\tbash: number;\r\n\t}>;\r\n}\r\nObject.freeze(IAC);\r\nObject.freeze(IAC.prototype);\r\n\r\n\r\n/**\r\n * ### 🐝 BEES !\r\n *\r\n * ## 🐝 BEES !\r\n *\r\n * # 🐝 BEES !\r\n *\r\n * ```text\r\n * ___ ___\r\n * // \\_// \\__\r\n * \\\\__/ \\__/ \\\r\n * \\\\__/ \\\\__/\r\n * ```\r\n *\r\n * [(bees)](https://giphy.com/gifs/oprah-bees-VhFps32TlNgsg)\r\n * [(Hexagons)](https://www.youtube.com/watch?v=thOifuHs6eY)\r\n */\r\nexport namespace Beehive {\r\n\t/**\r\n\t * Beehive Grid\r\n\t */\r\n\texport class Grid extends AbstractGrid {\r\n\r\n\t\tpublic static ambiguityThreshold = 18;\r\n\r\n\t\tprivate static readonly SIZE_LIMITS = JsUtils.deepFreeze({\r\n\t\t\tdash: { min: 10, max: 50 },\r\n\t\t\tbslash: { min: 10, max: 50 },\r\n\t\t\tfslash: { min: 10, max: 50 },\r\n\t\t});\r\n\t\tpublic static sizeLimits: AbstractGrid.DimensionBounds = Grid.SIZE_LIMITS;\r\n\r\n\t\t/**\r\n\t\t */\r\n\t\t// TODO.design determine spec for indexing\r\n\t\t// Then initialize the field in the constructor\r\n\t\t// Also design HTML representation and initialize in Grid.Visible\r\n\t\tprivate readonly grid: TU.RoArr>;\r\n\r\n\t\tpublic constructor(desc: AbstractGrid.CtorArgs) {\r\n\t\t\tsuper(desc);\r\n\r\n\t\t\t// Initialize `grid`:\r\n\t\t\tconst grid: any[] = undefined!;\r\n\t\t\tthis.grid = grid.freeze();\r\n\t\t\tif (new.target === Grid) {\r\n\t\t\t\tObject.seal(this); //🧊\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tpublic write(coord: Coord, changes: Tile.Changes): void {\r\n\t\t\t// TODO.impl\r\n\t\t}\r\n\r\n\t\tpublic forEach(consumer: (tile: Tile, index: number) => void): void {\r\n\t\t\tlet i = 0;\r\n\t\t\tfor (const row of this.grid) {\r\n\t\t\t\tfor (const tile of row) {\r\n\t\t\t\t\tconsumer(tile, i++);\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\tpublic forEachShuffled(consumer: (tile: Tile, index: number) => void): void {\r\n\t\t\t// const indices: Array = new Array(this.area);\r\n\t\t\t// for (let i = 0; i < this.area; i++) {\r\n\t\t\t// \tindices[i] = i;\r\n\t\t\t// }\r\n\t\t\t// indices.sort((a,b) => Math.random() - 0.5);\r\n\t\t\t// Object.freeze(indices);\r\n\t\t\t// for (const index of indices) {\r\n\t\t\t// \tconsumer(this.grid[index]!, index);\r\n\t\t\t// }\r\n\t\t}\r\n\r\n\t\tpublic getUntToward(intendedDest: Coord, sourceCoord: Coord): Tile {\r\n\t\t\treturn undefined!;\r\n\t\t}\r\n\t\tpublic getUntAwayFrom(_avoidCoord: Coord, _sourceCoord: Coord): Tile {\r\n\t\t\t// return this.getUntToward(\r\n\t\t\t// \tsourceCoord.add(sourceCoord.sub(avoidCoord)),\r\n\t\t\t// \tsourceCoord,\r\n\t\t\t// );\r\n\t\t\treturn undefined!;\r\n\t\t}\r\n\r\n\t\tpublic getAllAltDestsThan(originCoord: Coord): TU.RoArr {\r\n\t\t\treturn this.tileDestsFrom(originCoord, 2);\r\n\t\t}\r\n\r\n\t\tpublic getRandomCoordAround(origin: Coord, radius: number): Coord {\r\n\t\t\t// Note to self when I implement this:\r\n\t\t\t// Be careful about getting proper uniform random distribution!\r\n\t\t\treturn undefined!;\r\n\t\t}\r\n\r\n\t\tpublic dist(source: Coord, dest: Coord): number {\r\n\t\t\treturn undefined!;\r\n\t\t}\r\n\r\n\t\tpublic tileAt(coord: Coord): Tile {\r\n\t\t\treturn undefined!;\r\n\t\t}\r\n\r\n\t\tpublic tileDestsFrom(coord: Coord, radius: number = 1): TU.RoArr {\r\n\t\t\tconst result: Array = [];\r\n\t\t\treturn result.freeze();\r\n\t\t}\r\n\r\n\t\tpublic tileSourcesTo(coord: Coord, radius: number = 1): TU.RoArr {\r\n\t\t\treturn undefined!;\r\n\t\t}\r\n\r\n\t\tdeclare public static getSpawnCoords: AbstractGrid.ClassIf[\"getSpawnCoords\"];\r\n\r\n\t\tpublic static getArea(dim: Grid.Dimensions): number {\r\n\t\t\tconst shorterSide = Math.min(dim.fslash, dim.bslash);\r\n\t\t\tconst longerSide = Math.max(dim.fslash, dim.bslash);\r\n\t\t\tconst width = (-1) + dim.dash + shorterSide;\r\n\t\t\tlet area = 2 * shorterSide * (dim.dash + width);\r\n\t\t\tarea += (longerSide - shorterSide - 1) * width;\r\n\t\t\treturn area;\r\n\t\t}\r\n\r\n\t\tpublic static getLatticePatchDiameter(area: number): number {\r\n\t\t\tif (area < 0.25) {\r\n\t\t\t\tthrow new RangeError(\"determinant of a radical will be strictly negative.\");\r\n\t\t\t}\r\n\t\t\t// Given radius `r` and diameter = `1 + 2*r`, the area is\r\n\t\t\t// `1 + 6*r*(1+r)/2`. Rearrange to solve for `d` given the\r\n\t\t\t// area: `0 = 3r^2 + 3r + (1-a)`. Use quadratic formula.\r\n\t\t\tconst radius = ((-3) + Math.sqrt(9 - (12 * (1 - area)))) / 6;\r\n\t\t\treturn 1 + (2 * radius);\r\n\t\t}\r\n\r\n\t\tpublic static getRandomCoord(dimensions: Grid.Dimensions): Coord {\r\n\t\t\treturn new IAC(undefined!).toCoord();\r\n\t\t}\r\n\t}\r\n\texport namespace Grid {\r\n\t\texport type Dimensions = {\r\n\t\t\tdash: number;\r\n\t\t\tbslash: number;\r\n\t\t\tfslash: number;\r\n\t\t};\r\n\t}\r\n\tJsUtils.protoNoEnum(Grid, \"tileAt\", \"tileDestsFrom\", \"tileSourcesTo\");\r\n\tObject.freeze(Grid);\r\n\tObject.freeze(Grid.prototype);\r\n}\r\nObject.freeze(Beehive);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Game } from \"game/Game\";\r\nimport type { Coord, Tile } from \"floor/Tile\";\r\nimport type { GameManager } from \"game/gameparts/GameManager\";\r\n\r\nexport { JsUtils };\r\nexport type { Coord, Tile };\r\nexport type { GameManager };\r\n\r\n// Implementations:\r\nimport type { Chaser } from \"./robots/Chaser\";\r\n\r\nimport { Player } from \"./Player\";\r\nexport { Player };\r\n\r\n\r\n/**\r\n * Unlike {@link OperatorPlayer}s, these are not guided by human input.\r\n * Instead, they are essentially defined by how often they move, and\r\n * where they decide to move toward each time they move.\r\n *\r\n * Can be paused and un-paused by the Game Manager.\r\n */\r\nexport abstract class RobotPlayer extends Player {\r\n\r\n\t/** @override */\r\n\tdeclare public readonly game: GameManager;\r\n\r\n\tprivate _nextMovementTimerMultiplier: number = undefined!;\r\n\r\n\tprivate _scheduledMovementCallbackId: number = undefined!;\r\n\r\n\t/**\r\n\t * @see RobotPlayer.of for the public, non-abstract interface.\r\n\t */\r\n\tprotected constructor(game: GameManager, desc: Player.CtorArgs) {\r\n\t\tsuper(game, desc);\r\n\t}\r\n\r\n\t/**\r\n\t * Returns a {@link Pos} representing an absolute coordinate (ie.\r\n\t * one that is relative to the {@link Game}'s origin position')\r\n\t * that this `RobotPlayer` intends to move toward in its next\r\n\t * movement request. Pos may contain non-integer coordinate values,\r\n\t * and it does not have to be inside the bounds of the {@link Grid}.\r\n\t */\r\n\tprotected abstract computeDesiredDest(): Coord;\r\n\r\n\tprotected abstract getNextMoveType(): Player.MoveType;\r\n\r\n\t/**\r\n\t * Units are in milliseconds.\r\n\t */\r\n\tprotected abstract computeNextMovementTimer(): number;\r\n\r\n\t/** @override */\r\n\tpublic onGamePlaying(): void {\r\n\t\tsuper.onGamePlaying();\r\n\t\t/*@__INLINE__*/this._delayedMovementContinue();\r\n\t}\r\n\t/** @override */\r\n\tpublic onGamePaused(): void {\r\n\t\tthis.game.cancelTimeout(this._scheduledMovementCallbackId);\r\n\t\tthis._scheduledMovementCallbackId = undefined!;\r\n\t}\r\n\t/** @override */\r\n\tpublic onGameOver(): void {\r\n\t\tthis.game.cancelTimeout(this._scheduledMovementCallbackId);\r\n\t\tthis._scheduledMovementCallbackId = undefined!;\r\n\t}\r\n\r\n\t/**\r\n\t * Executes a single movement and then calls `delayedMovementContinue`.\r\n\t */\r\n\tprivate _movementContinue(): void {\r\n\t\tconst desiredDest = this.computeDesiredDest();\r\n\t\t// This is a little different than how human players experience\r\n\t\t// \"penalties\" when moving to tiles with long language-sequences-\r\n\t\t// humans must pay the penalty before landing on the tile, but\r\n\t\t// in the implementation here, it's much easier to simulate such\r\n\t\t// a penalty if it applies _after_ landing on the tile.\r\n\t\tthis._nextMovementTimerMultiplier = this.game.grid.tileAt(desiredDest).seq.length;\r\n\r\n\t\tthis.makeMovementRequest(\r\n\t\t\tthis.game.grid.getUntToward(desiredDest, this.coord).coord,\r\n\t\t\tthis.getNextMoveType(),\r\n\t\t);\r\n\t\t// Schedule a task to do this again:\r\n\t\t/*@__INLINE__*/this._delayedMovementContinue();\r\n\t}\r\n\r\n\t/**\r\n\t * Schedules a call to `movementContinue`.\r\n\t */\r\n\tprivate _delayedMovementContinue(): void {\r\n\t\t// Schedule the next movement.\r\n\t\tthis._scheduledMovementCallbackId = this.game.setTimeout(\r\n\t\t\tthis._movementContinue.bind(this),\r\n\t\t\tthis.computeNextMovementTimer() * this._nextMovementTimerMultiplier,\r\n\t\t\t// * Callback function arguments go here.\r\n\t\t);\r\n\t\treturn;\r\n\t}\r\n}\r\nexport namespace RobotPlayer {\r\n\r\n\texport const _Constructors: {\r\n\t\treadonly [ F in Player.RobotFamily ]: {\r\n\t\t\tnew(\r\n\t\t\t\tgame: GameManager,\r\n\t\t\t\tdesc: Player._CtorArgs[F]\r\n\t\t\t): RobotPlayer;\r\n\t\t};\r\n\t} = {\r\n\t\t// These are initialized later to avoid bootstrapping issues.\r\n\t\t[\"CHASER\"]: undefined!,\r\n\t};\r\n\r\n\texport interface FamilySpecificPart {\r\n\t\t[Player.Family.CHASER]: Partial;\r\n\t}\r\n\r\n\texport const of = (\r\n\t\tgame: GameManager,\r\n\t\tplayerDesc: Player._CtorArgs[Player.RobotFamily],\r\n\t): RobotPlayer => {\r\n\t\tconst familyId = playerDesc.familyId as Player.RobotFamily;\r\n\t\tif (DEF.DevAssert) {\r\n\t\t\t// Enforced By: Caller adherence to contract.\r\n\t\t\tif (!Object.getOwnPropertyNames(_Constructors).includes(familyId)) {\r\n\t\t\t\tthrow new RangeError(familyId + \" is not a valid robot player family id.\");\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn new (_Constructors[familyId])(game, playerDesc);\r\n\t};\r\n\r\n\t/**\r\n\t * Provides slightly higher level abstractions for computing the\r\n\t * desired destination for the next movement.\r\n\t */\r\n\texport abstract class Decisive extends RobotPlayer {\r\n\r\n\t\t/**\r\n\t\t * Entries may return undefined to indicate that the condition\r\n\t\t * for using that behaviour was not met, and the next behaviour\r\n\t\t * should be tried.\r\n\t\t *\r\n\t\t * @requires\r\n\t\t * The last behaviour must never return `undefined`.\r\n\t\t */\r\n\t\tprotected abstract get _behaviours(): TU.RoArr;\r\n\r\n\t\treadonly #cache = {\r\n\t\t\twhich: 0,\r\n\t\t\treuses: 0,\r\n\t\t\ttarget: undefined as number | undefined,\r\n\t\t};\r\n\r\n\t\t/** @override */\r\n\t\tpublic reset(coord: Coord): void {\r\n\t\t\tsuper.reset(coord);\r\n\t\t\tthis.#cache.which = 0;\r\n\t\t\tthis.#cache.reuses = 0;\r\n\t\t\tthis.#cache.target = undefined;\r\n\t\t}\r\n\r\n\t\t/** @final */\r\n\t\tprotected computeDesiredDest(): Coord {\r\n\t\t\tconst c = this.#cache;\r\n\t\t\tif (c.target !== undefined && c.reuses <= Game.K._ROBOT_PRIORITY_MAX_REUSES) {\r\n\t\t\t\tconst next = this._behaviours[c.which]!.call(this, c.target);\r\n\t\t\t\tif (next !== undefined) {\r\n\t\t\t\t\tc.reuses++;\r\n\t\t\t\t\treturn next.dest; //⚡\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tc.reuses = 0;\r\n\t\t\tfor (let i = 0; i < this._behaviours.length; i++) {\r\n\t\t\t\tconst next = this._behaviours[i]!.call(this);\r\n\t\t\t\tif (next !== undefined) {\r\n\t\t\t\t\tc.which = i;\r\n\t\t\t\t\tc.target = next.target;\r\n\t\t\t\t\treturn next.dest;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\tthrow new Error(\"never\");\r\n\t\t}\r\n\t}\r\n\texport namespace Decisive {\r\n\t\texport type Next = undefined | {\r\n\t\t\tdest: Coord;\r\n\t\t\t/**\r\n\t\t\t * This could be anything a behaviour wants. Ex. A player\r\n\t\t\t * ID, a coord, etc.\r\n\t\t\t *\r\n\t\t\t * It is assumed to be unchanged when successfully reusing\r\n\t\t\t * a behaviour.\r\n\t\t\t * */\r\n\t\t\ttarget?: number;\r\n\t\t};\r\n\t\texport type Behaviour = (target?: number) => Next;\r\n\t}\r\n\tObject.freeze(Decisive);\r\n\tObject.freeze(Decisive.prototype);\r\n}\r\nJsUtils.protoNoEnum(RobotPlayer, \"_movementContinue\");\r\n// RobotPlayer is frozen in PostInit after _Constructors get initialized.\r\nObject.seal(RobotPlayer);\r\nObject.freeze(RobotPlayer.prototype);","import {\r\n\tJsUtils, Coord, Tile,\r\n\tGameManager, Player, RobotPlayer,\r\n} from \"../RobotPlayer\";\r\n\r\n/**\r\n * @final\r\n */\r\nexport class Chaser extends RobotPlayer.Decisive {\r\n\r\n\tprivate readonly pred: SealedArray = [];\r\n\tprivate readonly prey: Array = [];\r\n\r\n\tprivate readonly params: Readonly;\r\n\tdeclare protected readonly _behaviours: TU.RoArr;\r\n\r\n\tprivate readonly grid: Chaser[\"game\"][\"grid\"];\r\n\r\n\tpublic constructor(game: GameManager, desc: Player._CtorArgs[\"CHASER\"]) {\r\n\t\tsuper(game, desc);\r\n\t\tthis.params = Object.freeze(Object.assign(\r\n\t\t\t{},\r\n\t\t\tChaser.Behaviour.DEFAULT,\r\n\t\t\tdesc.familyArgs,\r\n\t\t));\r\n\t\tthis.grid = this.game.grid;\r\n\t\tObject.seal(this); //🧊\r\n\t\tJsUtils.propNoWrite(this as Chaser,\r\n\t\t\t\"params\", \"grid\",\r\n\t\t);\r\n\t\tthis.prey[Symbol.iterator]\r\n\t\tthis.pred.keys\r\n\t}\r\n\r\n\tpublic onTeamsBootstrapped(): void {\r\n\t\tsuper.onTeamsBootstrapped();\r\n\t\t// We need to cast off read-only-ness below.\r\n\t\t// @ts-expect-error : RO=\r\n\t\tthis.pred = this.game.teams\r\n\t\t\t.filter((team) => team.id !== this.teamId)\r\n\t\t\t.flatMap((team) => team.members)\r\n\t\t\t.seal();\r\n\r\n\t\t// @ts-expect-error : RO=\r\n\t\tthis.prey = [...this.pred].seal();\r\n\r\n\t\tJsUtils.propNoWrite(this as Chaser,\r\n\t\t\t\"pred\", \"prey\",\r\n\t\t);\r\n\t}\r\n\r\n\tprivate _bhvrEvadePred(cachedPred?: Player.Id): RobotPlayer.Decisive.Next {\r\n\t\tif (cachedPred !== undefined) { return {\r\n\t\t\tdest: this.grid.getUntAwayFrom(this.game.players[cachedPred]!.coord, this.coord).coord,\r\n\t\t};}\r\n\t\t// Check if there is anyone to run away from:\r\n\t\tthis.pred.sort((pa,pb) => {\r\n\t\t\treturn this.grid.dist(pa.coord, this.coord)\r\n\t\t\t\t- this.grid.dist(pb.coord, this.coord);\r\n\t\t});\r\n\t\tfor (const pred of this.pred) {\r\n\t\t\tif (this.grid.dist(pred.coord, this.coord)\r\n\t\t\t\t> this.params.fearDistance) break;\r\n\t\t\tif (pred.isDowned) continue;\r\n\t\t\tif (pred.health > this.health) {\r\n\t\t\t\t// TODO.design Something that avoids getting cornered.\r\n\t\t\t\treturn {\r\n\t\t\t\t\tdest: this.grid.getUntAwayFrom(pred.coord, this.coord).coord,\r\n\t\t\t\t\ttarget: pred.playerId,\r\n\t\t\t\t};\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\tprivate _bhvrChasePrey(cachedPrey?: Player.Id): RobotPlayer.Decisive.Next {\r\n\t\tif (cachedPrey !== undefined) { return {\r\n\t\t\tdest: this.game.players[cachedPrey]!.coord,\r\n\t\t};}\r\n\t\t// If there is nobody to run away from,\r\n\t\t// Check if there is anyone we want to attack:\r\n\t\tthis.prey.sort((pa,pb) => {\r\n\t\t\treturn this.grid.dist(this.coord, pa.coord)\r\n\t\t\t\t- this.grid.dist(this.coord, pb.coord);\r\n\t\t});\r\n\t\tif (this.isDowned) { // TODO.design <-- what's this? I think I meant to check that the prey is not downed.\r\n\t\t\tfor (const prey of this.prey) {\r\n\t\t\t\tif (this.grid.dist(this.coord, prey.coord)\r\n\t\t\t\t\t> this.params.bloodThirstDistance) break;\r\n\t\t\t\tif (prey.health < this.health - this.params.healthReserve) {\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdest: prey.coord,\r\n\t\t\t\t\t\ttarget: prey.playerId,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn undefined;\r\n\t}\r\n\tprivate _bhvrGotoHealthElseWander(cachedHealthCoord?: Coord): RobotPlayer.Decisive.Next {\r\n\t\tif (cachedHealthCoord !== undefined && this.game.health.tiles.has(cachedHealthCoord)) {\r\n\t\t\treturn { dest: cachedHealthCoord };\r\n\t\t}\r\n\t\t// If there is nobody we want to chase after to attack,\r\n\t\t// Head toward the nearest free health if it exists.\r\n\t\tif (this.game.health.tiles.size === 0) {\r\n\t\t\t// No tiles close by. Wander around:\r\n\t\t\tif (Math.random() < this.params.wanderingAimlessness) {\r\n\t\t\t\t// Big direction change:\r\n\t\t\t\treturn { dest: this.grid.getRandomCoordAround(this.coord, 3) };\r\n\t\t\t} else {\r\n\t\t\t\t// Continue wandering with a subtle, random direction:\r\n\t\t\t\tconst awayFunc = this.grid.getUntAwayFrom.bind(this.grid, this.prevCoord);\r\n\t\t\t\treturn { dest: this.grid.getRandomCoordAround(\r\n\t\t\t\t\tawayFunc(awayFunc(this.coord).coord).coord, 1,\r\n\t\t\t\t)};\r\n\t\t\t}\r\n\t\t}\r\n\t\tlet closestFht: Tile = undefined!;\r\n\t\tlet closestFhtDistance = Infinity;\r\n\t\tfor (const fht of this.game.health.tiles.values()) {\r\n\t\t\tconst distance = this.grid.dist(this.coord, fht.coord);\r\n\t\t\tif (distance < closestFhtDistance) {\r\n\t\t\t\tclosestFht = fht;\r\n\t\t\t\tclosestFhtDistance = distance;\r\n\t\t\t}\r\n\t\t}\r\n\t\treturn { dest: closestFht.coord, target: closestFht.coord };\r\n\t}\r\n\r\n\tprotected getNextMoveType(): Player.MoveType {\r\n\t\treturn Player.MoveType.NORMAL;\r\n\t}\r\n\r\n\tprotected computeNextMovementTimer(): number {\r\n\t\treturn 1000 / this.params.keyPressesPerSecond;\r\n\t}\r\n}\r\nexport namespace Chaser {\r\n\t/**\r\n\t */\r\n\texport type Behaviour = {\r\n\t\t/**\r\n\t\t * If the number of moves it would take for an opponent with\r\n\t\t * more health than this player to reach this player is less\r\n\t\t * than or equal to this value, then this player will try to\r\n\t\t * run away to safety.\r\n\t\t */\r\n\t\tfearDistance: number;\r\n\t\t/**\r\n\t\t * If the number of moves it would take for this player to reach\r\n\t\t * an opponent with less health is greater than this value,\r\n\t\t * this player will not even consider pursuing them in attack.\r\n\t\t */\r\n\t\tbloodThirstDistance: number;\r\n\t\t/**\r\n\t\t * The minimum amount of leftover health this player would try\r\n\t\t * to ensure having before going after an opponent. Negative\r\n\t\t * values are allowed, in which case, the player will go after\r\n\t\t * opponents even if they would end up being downed as a result.\r\n\t\t */\r\n\t\thealthReserve: number;\r\n\t\t/**\r\n\t\t * How often this player moves in units of moves-per-second.\r\n\t\t */\r\n\t\tkeyPressesPerSecond: number;\r\n\t\t/**\r\n\t\t * A value between zero and one. How often this player will\r\n\t\t * make a drastic random change in direction when wandering.\r\n\t\t */\r\n\t\twanderingAimlessness: number;\r\n\t};\r\n\texport namespace Behaviour {\r\n\t\texport const DEFAULT: Readonly = Object.freeze({\r\n\t\t\tfearDistance: 5,\r\n\t\t\tbloodThirstDistance: 7,\r\n\t\t\thealthReserve: 3.0,\r\n\t\t\tkeyPressesPerSecond: 2.0,\r\n\t\t\twanderingAimlessness: 0.2,\r\n\t\t});\r\n\t}\r\n}\r\n// @ts-expect-error : RO=\r\nChaser.prototype._behaviours\r\n= Object.freeze([\r\n\tChaser.prototype[\"_bhvrEvadePred\"],\r\n\tChaser.prototype[\"_bhvrChasePrey\"],\r\n\tChaser.prototype[\"_bhvrGotoHealthElseWander\"],\r\n]);\r\nJsUtils.protoNoEnum(Chaser, \"onTeamsBootstrapped\");\r\nObject.freeze(Chaser);\r\nObject.freeze(Chaser.prototype);","import { JsUtils } from \"defs/JsUtils\";\r\nimport { Lang } from \"lang/Lang\";\r\nimport { Game } from \"../Game\";\r\n\r\nimport type { Coord, Tile } from \"floor/Tile\";\r\nimport type { StateChange } from \"../StateChange\";\r\nimport { Player } from \"../player/Player\";\r\nimport { HealthInfo } from \"./HealthInfo\";\r\nimport { ScoreInfo } from \"./ScoreInfo\";\r\nimport { Grid } from \"floor/Grid\";\r\n\r\nimport { GameMirror } from \"./GameMirror\";\r\n\r\nimport InitGameManagerCtorMaps from \"../ctormaps/CmapManager\";\r\nInitGameManagerCtorMaps();\r\n\r\n/** */\r\nexport abstract class GameManager<\r\n\tS extends Coord.System = Coord.System,\r\n> extends GameMirror {\r\n\r\n\tpublic readonly health: HealthInfo;\r\n\r\n\tpublic readonly lang: Lang = undefined!;\r\n\treadonly #langImportPromise: Promise;\r\n\r\n\tprivate readonly scoreInfo: ScoreInfo;\r\n\r\n\t/** */\r\n\tpublic constructor(args: {\r\n\t\treadonly impl: Game.ImplArgs,\r\n\t\treadonly desc: Game.CtorArgs,\r\n\t\treadonly operatorIds: TU.RoArr,\r\n\t}) {\r\n\t\tsuper(args);\r\n\r\n\t\tthis.health = new HealthInfo(args.desc, this.grid.static as Grid.ClassIf);\r\n\t\tthis.scoreInfo = new ScoreInfo(this.players.map((player) => player.playerId));\r\n\t\tJsUtils.propNoWrite(this as GameManager,\r\n\t\t\t\"health\", \"scoreInfo\",\r\n\t\t);\r\n\r\n\t\t// https://webpack.js.org/api/module-methods/#dynamic-expressions-in-import\r\n\t\tthis.#langImportPromise = (import(\r\n\t\t\t/* webpackChunkName: \"lang/[request]\" */\r\n\t\t\t`lang/impl/${this.langFrontend.module}.ts`\r\n\t\t)).then((langModule) => {\r\n\t\t\tconst LangConstructor = this.langFrontend.export.split(\".\").reduce(\r\n\t\t\t\t(nsps, propName) => nsps[propName],\r\n\t\t\t\tlangModule[this.langFrontend.module],\r\n\t\t\t) as Lang.ClassIf;\r\n\t\t\t// @ts-expect-error : RO=\r\n\t\t\tthis.lang = new LangConstructor(args.desc.langWeightExaggeration);\r\n\t\t\tJsUtils.propNoWrite(this as GameManager, \"lang\");\r\n\r\n\t\t\tif (DEF.DevAssert && (this.lang.isolatedMinOpts < this.grid.static.ambiguityThreshold)) {\r\n\t\t\t\t// Enforced By: clientside UI and `CHECK_VALID_CTOR_ARGS`.\r\n\t\t\t\tthrow new Error(\"never\");\r\n\t\t\t}\r\n\t\t\treturn this.lang;\r\n\t\t});\r\n\t}\r\n\r\n\t/** */\r\n\tpublic async reset(): Promise {\r\n\t\t// Reset the grid and event record:\r\n\t\tsuper.reset();\r\n\t\tconst resetSer = Object.freeze({\r\n\t\t\tplayerCoords: [] as Coord[],\r\n\t\t\tcsps: [] as Lang.CharSeqPair[],\r\n\t\t});\r\n\r\n\t\tthis.health.reset();\r\n\r\n\t\t// Reset hit-counters in the current language:\r\n\t\t// This must be done before shuffling so that the previous\r\n\t\t// history of shuffle-ins has no effects on the new pairs.\r\n\t\tawait this.#langImportPromise;\r\n\t\tthis.lang.reset();\r\n\t\tthis.grid.forEachShuffled((tile, index) => {\r\n\t\t\tconst csp = this.dryRunShuffleLangCspAt(tile.coord, true);\r\n\t\t\tthis.grid.write(tile.coord, csp);\r\n\t\t\tresetSer.csps[index] = csp;\r\n\t\t});\r\n\r\n\t\t// Reset and spawn players:\r\n\t\tthis.teams.forEach((team) => team.reset());\r\n\t\tconst spawnPoints = this.grid.static.getSpawnCoords(\r\n\t\t\tthis.teams.map((team) => team.members.length),\r\n\t\t\tthis.grid.dimensions,\r\n\t\t);\r\n\t\tthis.teams.forEach((team, teamIndex) => {\r\n\t\t\tteam.members.forEach((member, memberIndex) => {\r\n\t\t\t\tconst coord = spawnPoints[teamIndex]![memberIndex]!;\r\n\t\t\t\tmember.reset(coord);\r\n\t\t\t\tresetSer.playerCoords[member.playerId] = coord;\r\n\t\t\t});\r\n\t\t});\r\n\t\tthis.scoreInfo.reset();\r\n\r\n\t\treturn resetSer;\r\n\t}\r\n\r\n\r\n\t/**\r\n\t * **Important:** Nullifies the existing values at `tile` and does\r\n\t * not consume the returned values, which must be done externally.\r\n\t *\r\n\t * @param coord\r\n\t *\r\n\t * @param doCheckEmptyTiles\r\n\t * Pass `true` when populating a grid which has been reset. This\r\n\t * is for performance optimization purposes. It can be safely\r\n\t * ignored.\r\n\t *\r\n\t * @returns\r\n\t * A {@link Lang.CharSeqPair} that can be used as a replacement\r\n\t * for that currently being used by `tile`.\r\n\t */\r\n\tprivate dryRunShuffleLangCspAt(coord: Coord, doCheckEmptyTiles: boolean = false): Lang.CharSeqPair {\r\n\t\t// First, clear values for the target tile so its current\r\n\t\t// (to-be-previous) values don't get unnecessarily avoided.\r\n\t\tthis.grid.write(coord, Lang.CharSeqPair.NULL);\r\n\r\n\t\tlet avoid = this.grid\r\n\t\t\t.getAllAltDestsThan(coord)\r\n\t\t\t.map((tile) => tile.seq)\r\n\t\t\t.freeze();\r\n\t\t// ^ Note: An array of CharSeq from unique Tiles. It is okay\r\n\t\t// for those tiles to include `coord`\r\n\t\tif (doCheckEmptyTiles) {\r\n\t\t\tconst nullSeq = Lang.CharSeqPair.NULL.seq;\r\n\t\t\tavoid = avoid.filter((seq) => seq !== nullSeq).freeze();\r\n\t\t}\r\n\t\treturn this.lang.getNonConflictingChar(avoid);\r\n\t}\r\n\r\n\t/**\r\n\t * @returns\r\n\t * A descriptor of changes to make to tiles regarding health spawning.\r\n\t *\r\n\t * Note that this will seem to have a one-movement-event delay in\r\n\t * specifying changes to be made because `this.currentFreeHealth`\r\n\t * does not update until after the movement request has been\r\n\t * executed.\r\n\t */\r\n\tprivate dryRunSpawnHealth(changes: Record): Record {\r\n\t\tlet healthToSpawn = this.health.K.avg - this.health.currentAmount;\r\n\t\tif (healthToSpawn <= 0) {\r\n\t\t\treturn changes;\r\n\t\t}\r\n\t\twhile (healthToSpawn > 0) {\r\n\t\t\tlet tile: Tile;\r\n\t\t\tdo {\r\n\t\t\t\ttile = this.grid.tileAt(this.grid.getRandomCoord());\r\n\t\t\t} while (\r\n\t\t\t\ttile.occId !== Player.Id.NULL\r\n\t\t\t\t// TODO.design add other checks to improve distribution and reduce\r\n\t\t\t\t// crowding of freeHealth. Make sure it is sensitive to\r\n\t\t\t\t// `this.averageFreeHealthPerTile`.\r\n\t\t\t);\r\n\t\t\tconst healthToAdd = Game.K.AVERAGE_HEALTH_TO_SPAWN_ON_TILE;\r\n\t\t\tif ((Math.random() < Game.K._HEALTH_UPDATE_CHANCE)) {\r\n\t\t\t\tlet otherDesc = changes[tile.coord];\r\n\t\t\t\tif (otherDesc !== undefined) {\r\n\t\t\t\t\t// @ts-expect-error : RO=\r\n\t\t\t\t\totherDesc.health = (otherDesc.health ?? 0) + healthToAdd;\r\n\t\t\t\t} else {\r\n\t\t\t\t\tchanges[tile.coord] = {\r\n\t\t\t\t\t\thealth: tile.health + healthToAdd,\r\n\t\t\t\t\t};\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t\thealthToSpawn -= healthToAdd;\r\n\t\t}\r\n\t\treturn changes;\r\n\t}\r\n\r\n\r\n\t/** @override */\r\n\tpublic processMoveRequest(req: StateChange.Req, socket?: any): void {\r\n\t\tconst initiator = this.players[req.initiator]!;\r\n\t\tif (req.lastRejectId !== initiator.reqBuffer.lastRejectId) {\r\n\t\t\treturn; //⚡\r\n\t\t}\r\n\t\tconst reqDest = this.grid.tileAt(req.moveDest);\r\n\t\tif ( this.status !== Game.Status.PLAYING\r\n\t\t || reqDest.occId !== Player.Id.NULL\r\n\t\t) {\r\n\t\t\tthis.commitStateChange({\r\n\t\t\t\trejectId: initiator.reqBuffer.getNextRejectId(),\r\n\t\t\t\tinitiator: req.initiator,\r\n\t\t\t}, socket);\r\n\t\t\treturn; //⚡\r\n\t\t}\r\n\t\tconst moveIsBoost = (req.moveType === Player.MoveType.BOOST);\r\n\t\tconst newPlayerHealthValue\r\n\t\t\t= initiator.health\r\n\t\t\t+ (reqDest.health * (initiator.isDowned ? Game.K.HEALTH_EFFECT_FOR_DOWNED_PLAYER : 1.0))\r\n\t\t\t- (moveIsBoost ? this.health.K.costOfBoost(reqDest) : 0);\r\n\t\tif (moveIsBoost && newPlayerHealthValue < 0) {\r\n\t\t\t// Reject a boost-type movement request if it would make\r\n\t\t\t// the player become downed (or if they are already downed):\r\n\t\t\tthis.commitStateChange({\r\n\t\t\t\trejectId: initiator.reqBuffer.getNextRejectId(),\r\n\t\t\t\tinitiator: req.initiator,\r\n\t\t\t}, socket);\r\n\t\t\treturn; //⚡\r\n\t\t}\r\n\r\n\t\t// Update stats records:\r\n\t\tconst scoreInfo = this.scoreInfo.entries[initiator.playerId]!;\r\n\t\tscoreInfo.totalHealthPickedUp += reqDest.health;\r\n\t\tscoreInfo.moveCounts[req.moveType] += 1;\r\n\r\n\t\t// Set response fields according to spec in `PlayerMovementEvent`:\r\n\t\tthis.commitStateChange({\r\n\t\t\tinitiator: req.initiator,\r\n\t\t\tmoveType: req.moveType,\r\n\t\t\tplayers: {\r\n\t\t\t\t[initiator.playerId]: {\r\n\t\t\t\t\thealth: newPlayerHealthValue,\r\n\t\t\t\t\tcoord: reqDest.coord,\r\n\t\t\t\t},\r\n\t\t\t},\r\n\t\t\ttiles: this.dryRunSpawnHealth({\r\n\t\t\t\t[req.moveDest]: {\r\n\t\t\t\t\thealth: 0,\r\n\t\t\t\t\t...this.dryRunShuffleLangCspAt(reqDest.coord),\r\n\t\t\t\t},\r\n\t\t\t}),\r\n\t\t}, socket);\r\n\t}\r\n\r\n\t/** @override */\r\n\tprotected commitTileMods(\r\n\t\tcoord: Coord, changes: Tile.Changes,\r\n\t\tdoCheckOperatorSeqBuffer: boolean = true,\r\n\t): void {\r\n\t\t// JsUtils.deepFreeze(changes); // <- already done by caller.\r\n\t\tconst tile = this.grid.tileAt(coord);\r\n\t\tif (changes.health !== undefined) {\r\n\t\t\tthis.health.add(changes.health - tile.health);\r\n\t\t\tif (changes.health <= 0) {\r\n\t\t\t\tthis.health.tiles.delete(coord);\r\n\t\t\t} else {\r\n\t\t\t\tthis.health.tiles.set(coord, tile);\r\n\t\t\t}\r\n\t\t}\r\n\t\tsuper.commitTileMods(coord, changes, doCheckOperatorSeqBuffer);\r\n\t}\r\n\r\n\tpublic abstract setTimeout(callback: Function, millis: number, ...args: any[]): number;\r\n\tpublic abstract cancelTimeout(handle: number): void;\r\n}\r\nexport namespace GameManager {\r\n\t/**\r\n\t * If cleaning can be appropriately performed, this function will\r\n\t * do so. If not, it will indicate invalidities in its return value.\r\n\t */\r\n\texport function CHECK_VALID_CTOR_ARGS(\r\n\t\targs: TU.NoRo,\r\n\t): string[] {\r\n\t\t//#region\r\n\t\tconst bad: string[] = [];\r\n\t\ttype Keys = keyof Game.CtorArgs.UnFin;\r\n\t\tconst requiredFields: {[K in Keys]: any} = Object.freeze({\r\n\t\t\tcoordSys: 0, gridDimensions: 0, averageHealthPerTile: 0,\r\n\t\t\tlangId: 0, langWeightExaggeration: 0, players: 0,\r\n\t\t});\r\n\t\tconst missingFields: Keys[] = [];\r\n\t\tfor (const fieldName in requiredFields) {\r\n\t\t\tconst field = args[fieldName as Keys];\r\n\t\t\tif (field === undefined || field === null) {\r\n\t\t\t\tmissingFields.push(fieldName as Keys);\r\n\t\t\t}\r\n\t\t}\r\n\t\tif (missingFields.length) {\r\n\t\t\tbad.push(\"Missing the following arguments: \" + missingFields);\r\n\t\t}\r\n\r\n\t\tconst langDesc = Lang.GET_FRONTEND_DESC_BY_ID(args.langId);\r\n\t\tconst gridClass = Grid._Constructors[args.coordSys];\r\n\t\tif (langDesc === undefined) {\r\n\t\t\tbad.push(`No language with the ID \\`${args.langId}\\` exists.`);\r\n\t\t} else if (gridClass === undefined) {\r\n\t\t\tbad.push(`No grid with the system ID \\`${args.coordSys}\\` exists.`);\r\n\t\t} else {\r\n\t\t\tif (langDesc.isolatedMinOpts < gridClass.ambiguityThreshold) {\r\n\t\t\t\tbad.push(\"The provided language does not have enough sequences\"\r\n\t\t\t\t+\"\\nto ensure that a shuffling operation will always succeed when\"\r\n\t\t\t\t+\"\\npaired with the provided grid system.\");\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tif (parseInt(args.langWeightExaggeration as any) === NaN) {\r\n\t\t\tbad.push(`Language Weight Exaggeration expected a number, but`\r\n\t\t\t+ `\\`${args.langWeightExaggeration}\\` is not a number.`);\r\n\t\t} else {\r\n\t\t\targs.langWeightExaggeration = Math.max(0, parseFloat(\r\n\t\t\t\targs.langWeightExaggeration as any\r\n\t\t\t));\r\n\t\t}\r\n\t\t// TODO.impl check all the rest of the things.\r\n\t\t// if (!(Player.Username.REGEXP.test(desc.username))) {\r\n\t\t// throw new RangeError(`Username \\\"${desc.username}\\\"`\r\n\t\t// + ` does not match the required regular expression,`\r\n\t\t// + ` \\\"${Player.Username.REGEXP.source}\\\".`\r\n\t\t// );\r\n\t\t// }\r\n\t\treturn bad;\r\n\t\t//#endregion\r\n\t}\r\n}\r\nObject.freeze(GameManager);\r\nObject.freeze(GameManager.prototype);","import { Grid } from \"floor/Grid\";\r\nimport { WrappedEuclid2 } from \"floor/impl/Euclid2/System\";\r\nimport { Beehive } from \"floor/impl/Beehive/System\";\r\n\r\nimport { RobotPlayer } from \"game/player/RobotPlayer\";\r\nimport { Chaser } from \"game/player/robots/Chaser\";\r\n\r\nexport default (): void => {{\r\n\t// Non-Visible Grid Implementation Registry:\r\n\tObject.freeze(Object.assign(Grid._Constructors, {\r\n\t\t[\"W_EUCLID2\"]: WrappedEuclid2.Grid,\r\n\t\t[\"BEEHIVE\"]: Beehive.Grid,\r\n\t}));\r\n\tObject.freeze(Grid);\r\n}{\r\n\tconst Robot = RobotPlayer;\r\n\tObject.freeze(Object.assign(Robot._Constructors, {\r\n\t\t[\"CHASER\"]: Chaser,\r\n\t}));\r\n\tObject.freeze(Robot);\r\n}};","import type WebSocket from \"ws\";\r\n\r\nimport { JsUtils } from \"defs/JsUtils\";\r\nimport { SOCKET_ID, GroupEv, GameEv } from \"defs/OnlineDefs\";\r\nimport type { Game } from \"game/Game\";\r\nimport type { Coord } from \"floor/Tile\";\r\nimport type { StateChange } from \"game/StateChange\";\r\nimport { Player } from \"game/player/Player\";\r\nimport { Grid } from \"floor/Grid\";\r\n\r\nimport { GameManager } from \"game/gameparts/GameManager\";\r\nimport { RobotPlayer } from \"base/game/player/RobotPlayer\";\r\n\r\n/** */\r\nfunction gameOnSocketMessage(this: ServerGame, ev: WebSocket.MessageEvent): void {\r\n\tconst [evName, ...args] = JSON.parse(ev.data as string) as [string, ...any[]];\r\n\tconst socket = ev.target;\r\n\tswitch (evName) {\r\n\t\tcase GameEv.IN_GAME: this.processMoveRequest(args[0], socket); break;\r\n\t\tcase GameEv.PAUSE: this.statusBecomePaused(); break;\r\n\t\tcase GameEv.UNPAUSE: this.statusBecomePlaying(); break;\r\n\t\tcase GameEv.RETURN_TO_LOBBY:\r\n\t\t\tif (socket === this.groupHostSocket) {\r\n\t\t\t\tthis.statusBecomeOver();\r\n\t\t\t\tconst data = JSON.stringify([GameEv.RETURN_TO_LOBBY]);\r\n\t\t\t\tthis.sockets.forEach((s) => { if (s !== socket) s.send(data); });\r\n\t\t\t\tthis._terminate();\r\n\t\t\t} else {\r\n\t\t\t\tconst data = JSON.stringify([GameEv.RETURN_TO_LOBBY, SOCKET_ID(socket)]);\r\n\t\t\t\tthis.sockets.forEach((s) => { if (s !== socket) s.send(data); });\r\n\t\t\t}\r\n\t\t\tbreak;\r\n\t\tdefault: break;\r\n\t}\r\n};\r\n\r\n/**\r\n * Handles game-related events and attaches listeners to each client\r\n * socket.\r\n * @final\r\n */\r\nexport class ServerGame extends GameManager {\r\n\r\n\treadonly #deleteExternalRefs: () => void;\r\n\treadonly #wsMessageCb: (ev: WebSocket.MessageEvent) => void;\r\n\r\n\tpublic readonly sockets: Set;\r\n\tprotected readonly groupHostSocket: WebSocket;\r\n\r\n\t/** @override */\r\n\tpublic get currentOperator(): never {\r\n\t\tthrow new Error(\"never\");\r\n\t}\r\n\r\n\t/** */\r\n\tpublic constructor(args: Readonly<{\r\n\t\tsockets: IterableIterator,\r\n\t\tgroupHostSocket: WebSocket,\r\n\t\tdeleteExternalRefs: () => void,\r\n\t\tgameDesc: Game.CtorArgs.UnFin,\r\n\t}>) {\r\n\t\tsuper({\r\n\t\t\timpl: {\r\n\t\t\t\tgridClassLookup: Grid.getImplementation,\r\n\t\t\t\tOperatorPlayer: undefined,\r\n\t\t\t\tRobotPlayer: (game, desc) => RobotPlayer.of(game as GameManager, desc),\r\n\t\t\t\tonGameBecomeOver: () => {},\r\n\t\t\t},\r\n\t\t\tdesc: (() => {\r\n\t\t\t\tPlayer.CtorArgs.finalize(args.gameDesc);\r\n\t\t\t\treturn args.gameDesc;\r\n\t\t\t})(),\r\n\t\t\toperatorIds: [],\r\n\t\t});\r\n\t\tthis.sockets = new Set(args.sockets); // shallow copy\r\n\t\tthis.groupHostSocket = args.groupHostSocket;\r\n\t\tthis.#deleteExternalRefs = args.deleteExternalRefs;\r\n\t\tJsUtils.instNoEnum (this as ServerGame, \"operators\");\r\n\t\tJsUtils.propNoWrite(this as ServerGame, \"groupHostSocket\", \"sockets\");\r\n\t\tthis.#wsMessageCb = gameOnSocketMessage.bind(this as ServerGame);\r\n\t\tObject.seal(this); //🧊\r\n\r\n\t\tthis.sockets.forEach((s) => {\r\n\t\t\ts.addEventListener(\"message\", this.#wsMessageCb);\r\n\t\t\ts.addEventListener(\"close\", () => {\r\n\t\t\t\tif (this.sockets.size === 1) {\r\n\t\t\t\t\tthis._terminate();\r\n\t\t\t\t}\r\n\t\t\t}, { once: true });\r\n\t\t});\r\n\t\tthis._greetGameSockets(args.gameDesc);\r\n\t}\r\n\r\n\t/** Helper for the constructor */\r\n\tprivate _greetGameSockets(gameDesc: Game.CtorArgs): void {\r\n\t\t// The below cast is safe because GamepartBase reassigns\r\n\t\t// `gameDesc.playerDescs` the result of `Player.finalize`.\r\n\t\tconst humans = (\r\n\t\t\t(gameDesc.players).filter((player) => player.familyId === \"HUMAN\") as Player._CtorArgs[\"HUMAN\"][]\r\n\t\t).freeze();\r\n\t\t// Pass on Game constructor arguments to each client:\r\n\t\tPromise.all(Array.from(this.sockets, (s) =>\r\n\t\t\tnew Promise((resolve) => {\r\n\t\t\t\t// TODO.impl timeouts to handle edge-cases of users leaving. Also in reset().\r\n\t\t\t\ts.addEventListener(\"message\", (ev) => {\r\n\t\t\t\t\tif (JSON.parse(ev.data)[0] === GameEv.RESET) {\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t}, { once: true });\r\n\t\t\t})\r\n\t\t)).then(() =>\r\n\t\t\tthis.reset() //👂 \"reset time!\"\r\n\t\t);\r\n\t\tthis.sockets.forEach((s) => {\r\n\t\t\tconst operatorIds = humans\r\n\t\t\t\t.filter((desc) => desc.socket === s)\r\n\t\t\t\t.map((desc) => desc.playerId).freeze();\r\n\t\t\tconst data = JSON.stringify([GroupEv.CREATE_GAME, gameDesc, operatorIds]);\r\n\t\t\ts.send(data); //📢 \"get ready for reset\"\r\n\t\t});\r\n\t}\r\n\r\n\t/** @override */\r\n\tpublic async reset(): Promise {\r\n\t\t// Be ready for clients to indicate readiness to unpause.\r\n\t\tPromise.all(Array.from(this.sockets, (s) =>\r\n\t\t\tnew Promise((resolve) => {\r\n\t\t\t\ts.addEventListener(\"message\", (ev) => {\r\n\t\t\t\t\tif (JSON.parse(ev.data)[0] === GameEv.UNPAUSE) { // <- clients send this upon receiving resetSer\r\n\t\t\t\t\t\tresolve();\r\n\t\t\t\t\t}\r\n\t\t\t\t}, { once: true });\r\n\t\t\t})\r\n\t\t)).then(() => {\r\n\t\t\tthis.statusBecomePlaying(); //👂 \"play time!\"\r\n\t\t});\r\n\r\n\t\tconst resetSer = await super.reset();\r\n\t\tconst data = JSON.stringify([GameEv.RESET, resetSer]);\r\n\t\tthis.sockets.forEach((s) => s.send(data)); //📢 \"get ready for playing!\"\r\n\t\treturn resetSer;\r\n\t}\r\n\r\n\t/** @override */\r\n\tpublic setCurrentOperator(nextOperatorIndex: number): void {\r\n\t\t// no-op\r\n\t}\r\n\r\n\r\n\t/** @override */\r\n\tpublic setTimeout(callback: () => void, millis: number, ...args: any[]): number {\r\n\t\treturn setTimeout(callback, millis, args).unref() as unknown as number;\r\n\t}\r\n\r\n\t/** @override */\r\n\tpublic cancelTimeout(handle: number): void {\r\n\t\tclearTimeout(handle as unknown as NodeJS.Timer);\r\n\t}\r\n\r\n\t/** @override */\r\n\tpublic statusBecomePlaying(): void {\r\n\t\tsuper.statusBecomePlaying();\r\n\t\tconst data = JSON.stringify([GameEv.UNPAUSE]);\r\n\t\tthis.sockets.forEach((s) => s.send(data));\r\n\t}\r\n\r\n\t/** @override */\r\n\tpublic statusBecomePaused(): void {\r\n\t\tsuper.statusBecomePaused();\r\n\t\tconst data = JSON.stringify([GameEv.PAUSE]);\r\n\t\tthis.sockets.forEach((s) => s.send(data));\r\n\t}\r\n\r\n\t/** @override */\r\n\tpublic commitStateChange(desc: StateChange.Res, socket?: any): void {\r\n\t\tsuper.commitStateChange(desc);\r\n\r\n\t\tif (desc.rejectId) {\r\n\t\t\t// The request was rejected- Notify the requester.\r\n\t\t\tconst data = JSON.stringify([GameEv.IN_GAME, desc]);\r\n\t\t\tsocket?.send(data);\r\n\t\t} else {\r\n\t\t\tconst data = JSON.stringify([GameEv.IN_GAME, desc]);\r\n\t\t\tthis.sockets.forEach((s) => s.send(data));\r\n\t\t}\r\n\t}\r\n\r\n\tprotected _terminate(): void {\r\n\t\tthis.sockets.forEach((s) => {\r\n\t\t\ts.removeEventListener(\"message\", this.#wsMessageCb);\r\n\t\t});\r\n\t\tthis.#deleteExternalRefs();\r\n\t}\r\n}\r\nJsUtils.protoNoEnum(ServerGame,\r\n\t\"_greetGameSockets\",\r\n\t\"setCurrentOperator\", \"_terminate\",\r\n);\r\nObject.freeze(ServerGame);\r\nObject.freeze(ServerGame.prototype);","import type WebSocket from \"ws\";\r\nimport { JsUtils } from \"defs/JsUtils\";\r\nimport { SOCKET_ID, JoinerEv, GroupEv } from \"defs/OnlineDefs\";\r\n\r\nimport type { Game } from \"game/Game\";\r\nimport type { Coord } from \"floor/Tile\";\r\nimport type { Player } from \"game/player/Player\";\r\nimport { GameManager } from \"game/gameparts/GameManager\";\r\nimport { ServerGame } from \"./ServerGame\";\r\n\r\nimport { Group as _Group } from \"defs/OnlineDefs\";\r\n\r\n/**\r\n * Manages communication between the server, and clients who play in\r\n * the same game together.\r\n */\r\nexport class Group extends _Group {\r\n\r\n\tpublic readonly name: _Group.Name;\r\n\tpublic readonly passphrase: _Group.Passphrase;\r\n\r\n\t#currentGame: ServerGame | undefined;\r\n\tpublic get isCurrentlyPlayingAGame(): boolean {\r\n\t\treturn this.#currentGame !== undefined;\r\n\t}\r\n\r\n\tdeclare private readonly wssBroadcast: (evName: string, ...data: any[]) => void;\r\n\tprivate readonly sockets = new Map();\r\n\tprivate groupHostSocket: WebSocket;\r\n\r\n\treadonly #initialTtlTimeout: NodeJS.Timeout;\r\n\treadonly #deleteExternalRefs: () => void;\r\n\treadonly #wsMessageCb: (ev: WebSocket.MessageEvent) => void;\r\n\treadonly #wsLeaveCb: (ev: WebSocket.CloseEvent) => void;\r\n\r\n\t/** */\r\n\tpublic constructor(args: Readonly<{\r\n\t\twssBroadcast: (evName: string, ...data: any[]) => void,\r\n\t\tname: _Group.Name,\r\n\t\tpassphrase: _Group.Passphrase,\r\n\t\tdeleteExternalRefs: () => void,\r\n\t}>) {\r\n\t\tsuper();\r\n\t\tObject.defineProperty(this, \"wssBroadcast\", { value: args.wssBroadcast });\r\n\t\tthis.name = args.name;\r\n\t\tthis.passphrase = args.passphrase;\r\n\t\tJsUtils.propNoWrite(this as Group, \"name\", \"passphrase\");\r\n\t\tthis.#currentGame = undefined;\r\n\r\n\t\tthis.#deleteExternalRefs = args.deleteExternalRefs;\r\n\t\tthis.#initialTtlTimeout = setTimeout(() => {\r\n\t\t\tif (this.sockets.size === 0) {\r\n\t\t\t\tthis.terminate();\r\n\t\t\t}\r\n\t\t}, (Group.DEFAULT_TTL * 1000)).unref();\r\n\r\n\t\tthis.#wsMessageCb = (ev: WebSocket.MessageEvent): void => {\r\n\t\t\tconst [evName, ...args] = JSON.parse(ev.data as string) as [string, ...any[]];\r\n\t\t\tswitch (evName) {\r\n\t\t\t\tcase GroupEv.UserInfo.NAME: this._wsOnUserInfoChange(ev.target, args[0]); break;\r\n\t\t\t\tcase GroupEv.CREATE_GAME: if (ev.target === this.groupHostSocket) this._wsOnHostCreateGame(args[0]); break;\r\n\t\t\t\tdefault: break;\r\n\t\t\t}\r\n\t\t};\r\n\t\tthis.#wsLeaveCb = (ev: WebSocket.CloseEvent): void => {\r\n\t\t\tif (ev.target === this.groupHostSocket || this.sockets.size === 1) {\r\n\t\t\t\t// If the host disconnects, end the session.\r\n\t\t\t\tthis.terminate(); // TODO.design\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\tthis.sockets.delete(ev.target);\r\n\t\t\tconst data = JSON.stringify([GroupEv.UserInfo.NAME, {\r\n\t\t\t\t[SOCKET_ID(ev.target)]: null,\r\n\t\t\t}]);\r\n\t\t\tthis.sockets.forEach((u,s) => s.send(data));\r\n\t\t};\r\n\t}\r\n\r\n\t/** Let someone into this group */\r\n\tpublic admitSocket(ws: WebSocket, userInfo: Player.UserInfo): void {\r\n\t\tif (this.sockets.has(ws)) {\r\n\t\t\treturn; //⚡\r\n\t\t}\r\n\t\tconsole.info(`socket connect (group): ${SOCKET_ID(ws)}`);\r\n\t\tif (this.#currentGame) {\r\n\t\t\t// no-op\r\n\t\t}\r\n\t\t{\r\n\t\t\ttype Res = GroupEv.UserInfo.Res;\r\n\t\t\tconst EVENT_NAME = GroupEv.UserInfo.NAME;\r\n\t\t\t{\r\n\t\t\t\t// Notify all other clients in this group of the new player:\r\n\t\t\t\t// NOTE: broadcast modifier not used since socket is not yet in this.sockets.\r\n\t\t\t\tconst data = JSON.stringify([EVENT_NAME, {[SOCKET_ID(ws)]: userInfo}]);\r\n\t\t\t\tthis.sockets.forEach((u,s) => s.send(data));\r\n\t\t\t}\r\n\t\t\t// Notify the new player of all other players:\r\n\t\t\tconst res: Res = {};\r\n\t\t\tthis.sockets.forEach((u,s) => {\r\n\t\t\t\tres[SOCKET_ID(s)] = u;\r\n\t\t\t});\r\n\t\t\tws.send(JSON.stringify([EVENT_NAME, res]));\r\n\t\t}\r\n\r\n\t\t/** The first socket becomes the session host. */\r\n\t\tif (this.sockets.size === 0) {\r\n\t\t\tclearTimeout(this.#initialTtlTimeout);\r\n\t\t\t// @ts-expect-error : RO=\r\n\t\t\tthis.#initialTtlTimeout = undefined!;\r\n\t\t\tthis.groupHostSocket = ws;\r\n\t\t\tthis.wssBroadcast(JoinerEv.Exist.NAME, {\r\n\t\t\t\t[this.name]: JoinerEv.Exist.Status.IN_LOBBY,\r\n\t\t\t});\r\n\t\t}\r\n\t\tws.addEventListener(\"close\", this.#wsLeaveCb);\r\n\t\tws.addEventListener(\"message\", this.#wsMessageCb);\r\n\t\tthis.sockets.set(ws, userInfo);\r\n\t}\r\n\r\n\t/** Kick someone from this group. */\r\n\tpublic kickSocket(ws: WebSocket): boolean {\r\n\t\tif (this.sockets.delete(ws)) {\r\n\t\t\tws.removeEventListener(\"close\", this.#wsLeaveCb);\r\n\t\t\tws.removeEventListener(\"message\", this.#wsMessageCb);\r\n\t\t\treturn true;\r\n\t\t}\r\n\t\treturn false;\r\n\t}\r\n\r\n\t/** */\r\n\tprivate _wsOnUserInfoChange(ws: WebSocket, req: GroupEv.UserInfo.Req): void {\r\n\t\tif (typeof req.username !== \"string\"\r\n\t\t || typeof req.teamId !== \"number\"\r\n\t\t || typeof req.avatar !== \"string\") {\r\n\t\t\t// User arguments did not match expected format.\r\n\t\t\tconsole.log(`bad format: username: \\`${req.username}\\``\r\n\t\t\t+ `, teamId: \\`${req.teamId}\\`, avatar: \\`${req.avatar}\\`.`);\r\n\t\t\treturn;\r\n\t\t}\r\n\t\tthis.sockets.set(ws, req);\r\n\t\tconst data = JSON.stringify([GroupEv.UserInfo.NAME, {\r\n\t\t\t[SOCKET_ID(ws)]: req,\r\n\t\t}]);\r\n\t\tthis.sockets.forEach((u,s) => s.send(data));\r\n\t}\r\n\r\n\t/** */\r\n\tprivate _wsOnHostCreateGame(\r\n\t\tctorArgs: Game.CtorArgs.UnFin\r\n\t): void {\r\n\t\tconst failureReasons = this._createGameInstance(ctorArgs);\r\n\t\tif (failureReasons.length) {\r\n\t\t\t// TODO.impl handle failure reasons.\r\n\t\t\tconsole.info(failureReasons);\r\n\t\t} else {\r\n\t\t\t// Broadcast to the joiner namespace of this group's change in state:\r\n\t\t\tthis.wssBroadcast(JoinerEv.Exist.NAME, {\r\n\t\t\t\t[this.name]: JoinerEv.Exist.Status.IN_GAME,\r\n\t\t\t});\r\n\t\t\tconsole.info(`group ${this.name} new game`);\r\n\t\t}\r\n\t}\r\n\t/**\r\n\t * @param ctorArgs\r\n\t * The `playerDescs` field only contains descriptors for artificial\r\n\t * players. Those for operated players are included by this method.\r\n\t *\r\n\t * @returns\r\n\t * An array of any failure reasons. Empty if none.\r\n\t */\r\n\tprivate _createGameInstance(\r\n\t\tctorArgs: Game.CtorArgs.UnFin,\r\n\t): readonly string[] {\r\n\t\tconst failureReasons = [];\r\n\t\tif (this.isCurrentlyPlayingAGame) {\r\n\t\t\tfailureReasons.push(\"a game is already in session for this group\");\r\n\t\t\treturn failureReasons;\r\n\t\t}\r\n\t\tfailureReasons.push(...GameManager.CHECK_VALID_CTOR_ARGS(ctorArgs));\r\n\t\tif (failureReasons.length) {\r\n\t\t\treturn failureReasons;\r\n\t\t}\r\n\t\t// Everything needed to create a game exists. Let's do it!\r\n\t\t// @ts-expect-error : RO=\r\n\t\tctorArgs.players = [\r\n\t\t\t...ctorArgs.players,\r\n\t\t\t...Array.from(this.sockets.keys(), (ws) => {\r\n\t\t\t\tconst userInfo = this.sockets.get(ws)!;\r\n\t\t\t\treturn Object.freeze({\r\n\t\t\t\t\tsocket: ws,\r\n\t\t\t\t\tfamilyId: \"HUMAN\",\r\n\t\t\t\t\tusername: userInfo.username,\r\n\t\t\t\t\tteamId: userInfo.teamId,\r\n\t\t\t\t\tavatar: userInfo.avatar,\r\n\t\t\t\t\tfamilyArgs: {},\r\n\t\t\t\t});\r\n\t\t\t}),\r\n\t\t].freeze();\r\n\t\tthis.#currentGame = new ServerGame({\r\n\t\t\tsockets: this.sockets.keys(),\r\n\t\t\tgroupHostSocket: this.groupHostSocket,\r\n\t\t\tdeleteExternalRefs: () => { this.#currentGame = undefined; },\r\n\t\t\tgameDesc: ctorArgs,\r\n\t\t});\r\n\t\treturn [];\r\n\t}\r\n\r\n\t/**\r\n\t * - Deletes its own reference to its game (if it exists).\r\n\t * - Disconnects each client.\r\n\t * - Removes all listeners from this namespace.\r\n\t * - Deletes the enclosed Socket.IO namespace from the Server.\r\n\t * - Deletes the only external reference so this can be garbage collected.\r\n\t */\r\n\tprotected terminate(): void {\r\n\t\tfor (const ws of this.sockets.keys()) {\r\n\t\t\tws.removeEventListener(\"close\", this.#wsLeaveCb);\r\n\t\t\tws.removeEventListener(\"message\", this.#wsMessageCb);\r\n\t\t}\r\n\t\tif (this.#currentGame !== undefined) {\r\n\t\t\t// TODO.design need to terminate game?\r\n\t\t\tthis.#currentGame = undefined;\r\n\t\t}\r\n\t\tthis.#deleteExternalRefs();\r\n\r\n\t\tthis.wssBroadcast(JoinerEv.Exist.NAME, {\r\n\t\t\t[this.name]: JoinerEv.Exist.Status.DELETE,\r\n\t\t});\r\n\t\tconsole.info(`terminated group: \\`${this.name}\\``);\r\n\t}\r\n}\r\nJsUtils.protoNoEnum(Group, \"_wsOnUserInfoChange\", \"_wsOnHostCreateGame\");\r\nObject.freeze(Group);\r\nObject.freeze(Group.prototype);","import type WebSocket from \"ws\";\r\nimport { GroupEv, JoinerEv } from \"defs/OnlineDefs\";\r\nimport { Group } from \"./Group\";\r\nimport { wss } from \"./index\";\r\n\r\n/** */\r\nexport const groups = new Map();\r\nfunction eraseGroup(groupName: string) { groups.delete(groupName); }\r\n\r\n/** */\r\nfunction _isReqValid(desc: JoinerEv.Create.Req): boolean {\r\n\treturn (desc.groupName !== undefined)\r\n\t&& desc.groupName.length <= Group.Name.MaxLength\r\n\t&& Group.Name.REGEXP.test(desc.groupName)\r\n\t&& desc.passphrase.length <= Group.Passphrase.MaxLength\r\n\t&& Group.Passphrase.REGEXP.test(desc.passphrase);\r\n}\r\n/** */\r\nfunction wssBroadcast(evName: string, _data: any): void {\r\n\tconst data = JSON.stringify([evName, _data]);\r\n\twss.clients.forEach((s) => s.send(data));\r\n}\r\n/** */\r\nexport function wsMessageCb(ev: WebSocket.MessageEvent): void {\r\n\tconst [evName, ...args] = JSON.parse(ev.data as string) as [string, ...any[]];\r\n\tswitch (evName) {\r\n\t/** */\r\n\tcase JoinerEv.Create.NAME: {\r\n\t\tfunction _res(val: JoinerEv.Create.Res): void {\r\n\t\t\tev.target.send(JSON.stringify([JoinerEv.Create.NAME, val]));\r\n\t\t};\r\n\t\tconst desc = args[0] as JoinerEv.Create.Req;\r\n\t\tif (!_isReqValid(desc) || groups.has(desc.groupName)) {\r\n\t\t\t_res(false); return; //⚡\r\n\t\t}\r\n\t\tgroups.set(\r\n\t\t\tdesc.groupName,\r\n\t\t\tnew Group(Object.freeze({\r\n\t\t\t\twssBroadcast: wssBroadcast,\r\n\t\t\t\tname: desc.groupName,\r\n\t\t\t\tpassphrase: desc.passphrase,\r\n\t\t\t\tdeleteExternalRefs: eraseGroup.bind(null, desc.groupName),\r\n\t\t\t})),\r\n\t\t);\r\n\t\t// Note that existence of the new group is broadcasted only\r\n\t\t// once the creator of thr group has joined it.\r\n\t\t_res(true); break;\r\n\t}\r\n\t/** */\r\n\tcase JoinerEv.TryJoin.NAME: {\r\n\t\tfunction _res(val: JoinerEv.TryJoin.Res): void {\r\n\t\t\tev.target.send(JSON.stringify([JoinerEv.TryJoin.NAME, val]));\r\n\t\t}\r\n\t\tconst req = args[0] as JoinerEv.TryJoin.Req;\r\n\t\tconst group = groups.get(req.groupName);\r\n\t\tif (\r\n\t\t\tgroup === undefined\r\n\t\t\t|| req.passphrase !== group.passphrase\r\n\t\t) {\r\n\t\t\t_res(false); return; //⚡\r\n\t\t}\r\n\t\tconst userInfo = req.userInfo;\r\n\t\tif (userInfo === undefined || userInfo.teamId !== 0) {\r\n\t\t\tthrow new Error(`a socket attempted to connect to group`\r\n\t\t\t+` \\`${group.name}\\` without providing userInfo.`);\r\n\t\t}\r\n\t\t// NOTE: I could make a WeakMap from sockets to their groups,\r\n\t\t// but that would be another global state to manage. Checking\r\n\t\t// every group is kind of stupid, but it's simple and it works.\r\n\t\tfor (const group of groups.values()) {\r\n\t\t\tif (group.kickSocket(ev.target)) break;\r\n\t\t}\r\n\t\tgroup.admitSocket(ev.target, userInfo);\r\n\t\t_res(true); break;\r\n\t}\r\n\t/** */\r\n\tdefault: break;\r\n\t}\r\n}","import \"../base/defs/NodePlatformMods\";\r\n\r\n// Override stack trace to shorten file paths:\r\nprocess.on(\"uncaughtException\", function processOnUncaughtException(err) {\r\n\tconst ROOT = path.resolve(__dirname, \"../..\");\r\n\tconsole.error(\"\\n\\n\");\r\n\tif (err.stack !== undefined) {\r\n\t\terr.stack = err.stack.replace(new RegExp(ROOT.replace(/\\\\/g, \"\\\\\\\\\"), \"g\"), \":\")\r\n\t\t\t.split(\"\\n\").map(frame => {\r\n\t\t\t\tconst fn = frame.indexOf(\"(\");\r\n\t\t\t\treturn fn < 0 ? frame : frame.substring(0, fn) + \" \".repeat(Math.max(0, 35-fn)) + frame.substring(fn);\r\n\t\t\t}).join(\"\\n\");\r\n\t\tfs.writeSync(process.stderr.fd, err.stack);\r\n\t}\r\n\tconsole.error(\"\\n\\n\");\r\n\tprocess.exit(1);\r\n});\r\n\r\n// =========================================\r\nimport os from \"os\";\r\nimport fs from \"fs\";\r\nimport path from \"path\";\r\nimport http from \"http\";\r\nimport express from \"express\";\r\nimport expressStaticGzip from \"express-static-gzip\";\r\nimport WebSocket from \"ws\";\r\nimport type net from \"net\";\r\nimport { SET_SOCKET_ID, SOCKET_ID, JoinerEv } from \"defs/OnlineDefs\";\r\n\r\nconst app = express();\r\nconst server = http.createServer({}, app);\r\nexport const wss = new WebSocket.Server({\r\n\tserver: server,\r\n});\r\nimport { groups, wsMessageCb } from \"./joinerCb\";\r\n\r\n\r\n/** EXPRESS ROOT */\r\n// At runtime, __dirname resolves to \":/dist/server/\"\r\nconst CLIENT_ROOT = path.resolve(__dirname, \"../client\");\r\napp\r\n.disable(\"x-powered-by\")\r\n.use(\"/\", expressStaticGzip(CLIENT_ROOT, {\r\n\tenableBrotli: DEF.PRODUCTION, //🚩 This must match the value in the webpack config.\r\n\tserveStatic: {\r\n\t\tsetHeaders: (res, path, stat): void => {\r\n\t\t\tres.setHeader(\"X-Content-Type-Options\", \"nosniff\");\r\n\t\t\tconst mime = express.static.mime.lookup(path);\r\n\t\t\tif (mime === \"text/html\" /* xhtml? */) {\r\n\t\t\t\tres.setHeader(\"Cache-Control\", \"public, max-age=0\");\r\n\t\t\t}\r\n\t\t},\r\n\t\t// TODO.build enable this when lang term caching is configured for webpack.\r\n\t\t//immutable: DEF.PRODUCTION,\r\n\t\t//maxAge: 31536000000, // 1 year.\r\n\t},\r\n}));\r\n\r\n\r\n/** WSS ON_CONNECTION */\r\nwss.on(\"connection\", function onWsConnect(ws): void {\r\n\t// Upon connection, immediately send a list of existing groups:\r\n\tconst data = JSON.stringify([\r\n\t\tJoinerEv.Exist.NAME,\r\n\t\t(() => {\r\n\t\t\t// TODO.design current implementation may suffer when there are many many groups.\r\n\t\t\tconst build: TU.NoRo = {};\r\n\t\t\tfor (const [groupName, group] of groups) {\r\n\t\t\t\tbuild[groupName] = (group.isCurrentlyPlayingAGame)\r\n\t\t\t\t? JoinerEv.Exist.Status.IN_GAME\r\n\t\t\t\t: JoinerEv.Exist.Status.IN_LOBBY;\r\n\t\t\t}\r\n\t\t\treturn build;\r\n\t\t})(),\r\n\t]);\r\n\tSET_SOCKET_ID(ws, `${Date.now().toString()}_${(Math.random() * 100) % 100}`);\r\n\tconsole.info(`socket connect (server): ${SOCKET_ID(ws)}`);\r\n\tws.send(data);\r\n\tws.addEventListener(\"message\", wsMessageCb);\r\n});\r\n\r\n\r\n/** HTTP LISTEN */\r\nserver.listen({\r\n\tport: DEF.PRODUCTION ? 443 : 80, // TODO.impl there must be a smarter way to do this.\r\n\thost: \"0.0.0.0\",\r\n}, function onServerListening(): void {\r\n\tconst info = server.address();\r\n\tconsole.info(\r\n\t\t`\\n\\nServer mounted to: \\`${info.address}:${info.port}\\` using ${info.family}.\\n`\r\n\t\t+\"This host can be reached at any of the following addresses:\\n\"\r\n\t);\r\n\tchooseIPAddress().sort().forEach((address) => {\r\n\t\tconsole.info(/* ${SkServer.PROTOCOL} */`${address}:${info.port}`);\r\n\t\t// ^We can exclude the protocol since it will get defaulted by the client side.\r\n\t});\r\n\tconsole.info(\"\");\r\n});\r\n\r\n\r\n/**\r\n * @returns An array of non-internal IP addresses from any of the\r\n * local host's network interfaces.\r\n *\r\n * https://en.wikipedia.org/wiki/Private_network\r\n */\r\n// TODO: change to return a map from each of \"public\" and \"private\" to a list of addresses\r\nexport const chooseIPAddress = (): Array => {\r\n\treturn (Object.values(os.networkInterfaces()).flat() as os.NetworkInterfaceInfo[])\r\n\t.filter((info) => {\r\n\t\treturn !(info.internal); /* && info.family === \"IPv4\" */\r\n\t})\r\n\t.map((info) => {\r\n\t\tif (info.family === \"IPv6\") {\r\n\t\t\treturn `[${info.address}]`;\r\n\t\t} else {\r\n\t\t\treturn info.address;\r\n\t\t}\r\n\t});\r\n};"],"sourceRoot":""} \ No newline at end of file