(("undefined"!=typeof self?self:this).wpChessCom_9fM6=("undefined"!=typeof self?self:this).wpChessCom_9fM6||[]).push([[6893],{394:function(e){/*! * Chess.com (c) 2020 | all rights reserved *//*! * A distant fork of chess.js - BSD (c) 2014, Jeff Hlywa (jhlywa@gmail.com) */!function(){"use strict";var n=function(){var e=[[0x9d39247e,0x33776d41],[0x2af73980,0x5aaa5c7],[0x44db0150,0x24623547],[0x9c15f73e,0x62a76ae2],[0x75834465,0x489c0c89],[0x3290ac3a,0x203001bf],[0xfbbad1f,0x61042279],[0xe83a908f,0xf2fb60ca],[0xd7e765d,0x58755c10],[0x1a083822,0xceafe02d],[0x9605d5f0,0xe25ec3b0],[0xd021ff5c,0xd13a2ed5],[0x40bdf15d,0x4a672e32],[0x1135514,0x6fd56395],[0x5db48320,0x46f3d9e5],[0x239f8b2d,0x7ff719cc],[0x5d1a1ae,0x85b49aa1],[0x679f848f,0x6e8fc971],[0x7449bbff,0x801fed0b],[0x7d11cdb1,0xc3b7adf0],[0x82c7709e,0x781eb7cc],[0xf3218f1c,0x9510786c],[0x331478f3,0xaf51bbe6],[0x4bb38de5,0xe7219443],[0xaa649c6e,0xbcfd50fc],[0x8dbd98a3,0x52afd40b],[0x87d2074b,0x81d79217],[0x19f3c751,0xd3e92ae1],[0xb4ab30f0,0x62b19abf],[0x7b0500ac,0x42047ac4],[0xc9452ca8,0x1a09d85d],[0x24aa6c51,0x4da27500],[0x4c9f3442,0x7501b447],[0x14a68fd7,0x3c910841],[0xa71b9b83,0x461cbd93],[0x3488b95,0xb0f1850f],[0x637b2b34,0xff93c040],[0x9d1bc9a,0x3dd90a94],[0x35756683,0x34a1dd3b],[0x735e2b97,0xa4c45a23],[0x18727070,0xf1bd400b],[0x1fcbacd2,0x59bf02e7],[0xd310a7c2,0xce9b6555],[0xbf983fe0,0xfe5d8244],[0x9f74d14f,0x7454a824],[0x51ebdc4a,0xb9ba3035],[0x5c82c505,0xdb9ab0fa],[0xfcf7fe8a,0x3430b241],[0x3253a729,0xb9ba3dde],[0x8c74c368,0x81b3075],[0xb9bc6c87,0x167c33e7],[0x7ef48f2b,0x83024e20],[0x11d505d4,0xc351bd7f],[0x6568fca9,0x2c76a243],[0x4de0b0f4,0xf32a7b8],[0x96d69346,0xcc37e5d],[0x42e240cb,0x63689f2f],[0x6d2bdcda,0xe2919661],[0x42880b02,0x36e4d951],[0x5f0f4a58,0x98171bb6],[0x39f890f5,0x79f92f88],[0x93c5b5f4,0x7356388b],[0x63dc359d,0x8d231b78],[0xec16ca8a,0xea98ad76],[0x5355f900,0xc2a82dc7],[0x7fb9f85,0x5a997142],[0x5093417a,0xa8a7ed5e],[0x7bcbc38d,0xa25a7f3c],[0x19fc8a76,0x8cf4b6d4],[0x637a7780,0xdecfc0d9],[0x8249a47a,0xee0e41f7],[0x79ad6955,0x1e7d1e8],[0x14acbaf4,0x777d5776],[0xf145b6be,0xccdea195],[0xdabf2ac8,0x201752fc],[0x24c3c94d,0xf9c8d3f6],[0xbb6e2924,0xf03912ea],[0xce26c0b,0x95c980d9],[0xa49cd132,0xbfbf7cc4],[0xe99d662a,0xf4243939],[0x27e6ad78,0x91165c3f],[0x8535f040,0xb9744ff1],[0x54b3f4fa,0x5f40d873],[0x72b12c32,0x127fed2b],[0xee954d3c,0x7b411f47],[0x9a85ac90,0x9a24eaa1],[0x70ac4cd9,0xf04f21f5],[0xf9b89d3e,0x99a075c2],[0x87b3e2b2,0xb5c907b1],[0xa366e5b8,0xc54f48b8],[0xae4a9346,0xcc3f7cf2],[0x1920c04d,0x47267bbd],[0x87bf02c6,0xb49e2ae9],[0x92237ac,0x237f3859],[0xff07f64e,0xf8ed14d0],[0x8de8dca9,0xf03cc54e],[0x9c163326,0x4db49c89],[0xb3f22c3d,0xb0b38ed],[0x390e5fb4,0x4d01144b],[0x5bfea5b4,0x712768e9],[0x1e103291,0x1fa78984],[0x9a74acb9,0x64e78cb3],[0x4f80f7a0,0x35dafb04],[0x6304d09a,0xb3738c4],[0x2171e646,0x83023a08],[0x5b9b63eb,0x9ceff80c],[0x506aacf4,0x89889342],[0x1881afc9,0xa3a701d6],[0x65030804,0x40750644],[0xdfd39533,0x9cdbf4a7],[0xef927dbc,0xf00c20f2],[0x7b32f7d1,0xe03680ec],[0xb9fd7620,0xe7316243],[0x5a7e8a5,0x7db91b77],[0xb5889c6e,0x15630a75],[0x4a750a09,0xce9573f7],[0xcf464cec,0x899a2f8a],[0xf538639c,0xe705b824],[0x3c79a0ff,0x5580ef7f],[0xede6c87f,0x8477609d],[0x799e81f0,0x5bc93f31],[0x86536b8c,0xf3428a8c],[0x97d7374c,0x60087b73],[0xa246637c,0xff328532],[0x43fcae6,0xcc0eba0],[0x920e4495,0x35dd359e],[0x70eb093b,0x15b290cc],[0x73a19219,0x16591cbd],[0x56436c9f,0xe1a1aa8d],[0xefac4b70,0x633b8f81],[0xbb215798,0xd45df7af],[0x45f20042,0xf24f1768],[0x930f80f4,0xe8eb7462],[0xff6712ff,0xcfd75ea1],[0xae623fd6,0x7468aa70],[0xdd2c5bc8,0x4bc8d8fc],[0x7eed120d,0x54cf2dd9],[0x22fe5454,0x1165f1c],[0xc91800e9,0x8fb99929],[0x808bd68e,0x6ac10365],[0xdec46814,0x5b7605f6],[0x1bede3a3,0xaef53302],[0x43539603,0xd6c55602],[0xaa969b5c,0x691ccb7a],[0xa87832d3,0x92efee56],[0x65942c7b,0x3c7e11ae],[0xded2d633,0xcad004f6],[0x21f08570,0xf420e565],[0xb415938d,0x7da94e3c],[0x91b859e5,0x9ecb6350],[0x10cff333,0xe0ed804a],[0x28aed140,0xbe0bb7dd],[0xc5cc1d89,0x724fa456],[0x5648f680,0xf11a2741],[0x2d255069,0xf0b7dab3],[0x9bc5a38e,0xf729abd4],[0xef2f0543,0x8f6a2bc],[0xaf2042f5,0xcc5c2858],[0x480412ba,0xb7f5be2a],[0xaef3af4a,0x563dfe43],[0x19afe59a,0xe451497f],[0x52593803,0xdff1e840],[0xf4f076e6,0x5f2ce6f0],[0x11379625,0x747d5af3],[0xbce5d224,0x8682c115],[0x9da4243d,0xe836994f],[0x66f70b3,0x3fe09017],[0x4dc4de18,0x9b671a1c],[0x51039ab7,0x712457c3],[0xc07a3f80,0xc31fb4b4],[0xb46ee9c5,0xe64a6e7c],[0xb3819a42,0xabe61c87],[0x21a00793,0x3a522a20],[0x2df16f76,0x1598aa4f],[0x763c4a13,0x71b368fd],[0xf793c467,0x2e086a0],[0xd7288e01,0x2aeb8d31],[0xde336a2a,0x4bc1c44b],[0xbf692b3,0x8d079f23],[0x2c604a7a,0x177326b3],[0x4850e73e,0x3eb6064],[0xcfc447f1,0xe53c8e1b],[0xb05ca3f5,0x64268d99],[0x9ae182c8,0xbc9474e8],[0xa4fc4bd4,0xfc5558ca],[0xe755178d,0x58fc4e76],[0x69b97db1,0xa4c03dfe],[0xf9b5b7c4,0xacc67c96],[0xfc6a82d6,0x4b8655fb],[0x9c684cb6,0xc4d24417],[0x8ec97d29,0x17456ed0],[0x6703df9d,0x2924e97e],[0xc547f57e,0x42a7444e],[0x78e37644,0xe7cad29e],[0xfe9a44e9,0x362f05fa],[0x8bd35cc,0x38336615],[0x9315e5eb,0x3a129ace],[0x94061b87,0x1e04df75],[0xdf1d9f9d,0x784ba010],[0x3bba57b6,0x8871b59d],[0xd2b7adee,0xded1f73f],[0xf7a255d8,0x3bc373f8],[0xd7f4f244,0x8c0ceb81],[0xd95be88c,0xd210ffa7],[0x336f52f8,0xff4728e7],[0xa74049da,0xc312ac71],[0xa2f61bb6,0xe437fdb5],[0x4f2a5cb0,0x7f6a35b3],[0x87d380bd,0xa5bf7859],[0x16b9f7e0,0x6c453a21],[0x7ba2484c,0x8a0fd54e],[0xf3a678ca,0xd9a2e38c],[0x39b0bf7d,0xde437ba2],[0xfcaf55c1,0xbf8a4424],[0x18fcf680,0x573fa594],[0x4c0563b8,0x9f495ac3],[0x40e08793,0x1a00930d],[0x8cffa941,0x2eb642c1],[0x68ca3905,0x3261169f],[0x7a1ee967,0xd27579e2],[0x9d1d60e5,0x76f5b6f],[0x3810e399,0xb6f65ba2],[0x32095b6d,0x4ab5f9b1],[0x35cab621,0x9dd038a],[0xa90b2449,0x9fcfafb1],[0x77a225a0,0x7cc2c6bd],[0x513e5e63,0x4c70e331],[0x4361c0ca,0x3f692f12],[0xd941aca4,0x4b20a45b],[0x528f7c86,0x2c5807b],[0x52ab92be,0xb9613989],[0x9d1dfa2e,0xfc557f73],[0x722ff175,0xf572c348],[0x1d1260a5,0x1107fe97],[0x7a249a57,0xec0c9ba2],[0x4208fe9,0xe8f7f2d6],[0x5a110c60,0x58b920a0],[0xcd9a497,0x658a5698],[0x56fd23c8,0xf9715a4c],[0x284c847b,0x9d887aae],[0x4feabfb,0xbdb619cb],[0x742e1e65,0x1c60ba83],[0x9a9632e6,0x5904ad3c],[0x881b82a1,0x3b51b9e2],[0x506e6744,0xcd974924],[0xb0183db5,0x6ffc6a79],[0xed9b915,0xc66ed37e],[0x5e11e86d,0x5873d484],[0xf678647e,0x3519ac6e],[0x1b85d488,0xd0f20cc5],[0xdab9fe65,0x25d89021],[0xd151d86,0xadb73615],[0xa865a54e,0xdcc0f019],[0x93c42566,0xaef98ffb],[0x99e7afea,0xbe000731],[0x48cbff08,0x6ddf285a],[0x7f9b6af1,0xebf78baf],[0x58627e1a,0x149bba21],[0x2cd16e2a,0xbd791e33],[0xd363eff5,0xf0977996],[0xce2a38c,0x344a6eed],[0x1a804aad,0xb9cfa741],[0x907f3042,0x1d78c5de],[0x501f65ed,0xb3034d07],[0x37624ae5,0xa48fa6e9],[0x957baf61,0x700cff4e],[0x3a6c2793,0x4e31188a],[0xd4950353,0x6abca345],[0x88e0495,0x89c432e0],[0xf943aee7,0xfebf21b8],[0x6c3b8e3e,0x336139d3],[0x364f6ffa,0x464ee52e],[0xd60f6dce,0xdc314222],[0x56963b0d,0xca418fc0],[0x16f50edf,0x91e513af],[0xef195591,0x4b609f93],[0x565601c0,0x364e3228],[0xecb53939,0x887e8175],[0xbac7a9a1,0x8531294b],[0xb344c470,0x397bba52],[0x65d34954,0xdaf3cebd],[0xb4b81b3f,0xa97511e2],[0xb4220611,0x93d6f6a7],[0x7158240,0x1c38434d],[0x7a13f18b,0xbedc4ff5],[0xbc4097b1,0x16c524d2],[0x59b97885,0xe2f2ea28],[0x99170a5d,0xc3115544],[0x6f423357,0xe7c6a9f9],[0x325928ee,0x6e6f8794],[0xd0e43662,0x28b03343],[0x565c31f7,0xde89ea27],[0x30f56114,0x84119414],[0xd873db39,0x1292ed4f],[0x7bd94e1d,0x8e17debc],[0xc7d9f168,0x64a76e94],[0x947ae053,0xee56e63c],[0xc8c93882,0xf9475f5f],[0x3a9bf55b,0xa91f81ca],[0xd9a11fbb,0x3d9808e4],[0xfd22063,0xedc29fca],[0xb3f256d8,0xaca0b0b9],[0xb03031a8,0xb4516e84],[0x35dd37d5,0x871448af],[0xe9f6082b,0x5542e4e],[0xebfafa33,0xd7254b59],[0x9255abb5,0xd532280],[0xb9ab4ce5,0x7f2d34f3],[0x693501d6,0x28297551],[0xc62c58f9,0x7dd949bf],[0xcd454f8f,0x19c5126a],[0xbbe83f4e,0xcc2bdecb],[0xdc842b7e,0x2819e230],[0xba89142e,7668664],[0xa3bc941d,0xa5061cb],[0xe9f6760e,0x32cd8021],[0x9c7e552,0xbc76492f],[0x852f5493,0x4da55cc9],[0x8107fccf,0x64fcf56],[0x98954d5,0x1fff6580],[0x23b70edb,0x1955c4bf],[0xc330de42,0x6430f69d],[0x4715ed43,0xe8a45c0a],[0xa8d7e4da,0xb780a08d],[0x572b974,0xf03ce0bb],[0xb57d2e98,0x5e1419c7],[0xe8d9ecbe,0x2cf3d73f],[0x2fe4b171,0x70e59750],[0x11317ba8,0x7905e790],[0x7fbf21ec,0x8a1f45ec],[0x1725cabf,0xcb045b00],[0x964e915c,0xd5e2b207],[0x3e2b8bcb,0xf016d66d],[0xbe7444e3,0x9328a0ac],[0xf85b2b4f,0xbcde44b7],[0x49353fea,0x39ba63b1],[0x1dd01aaf,0xcd53486a],[0x1fca8a92,0xfd719f85],[0xfc7c95d8,0x27357afa],[0x18a6a990,0xc8b35ebd],[0xcccb7005,0xc6b9c28d],[0x3bdbb92c,0x43b17f26],[0xaa70b5b4,0xf89695a2],[0xe94c39a5,0x4a98307f],[0xb7a0b174,0xcff6f36e],[0xd4dba847,0x29af48ad],[0x2e18bc1a,0xd9704a68],[0x2de0966d,0xaf2f8b1c],[0xb9c11d5b,0x1e43a07e],[0x64972d68,0xdee33360],[0x94628d38,0xd0c20584],[0xdbc0d2b6,0xab90a559],[0xd2733c43,0x35c6a72f],[0x7e75d99d,0x94a70f4d],[0x6ced1983,0x376fa72b],[0x97fcaacb,0xf030bc24],[0x7b77497b,0x32503b12],[0x8547eddf,0xb81ccb94],[0x79999cdf,0xf70902cb],[0xcffe1939,0x438e9b24],[0x829626e3,0x892d95d7],[0x92fae242,0x91f2b3f1],[0x63e22c14,0x7b9c3403],[0xc678b6d8,0x60284a1c],[0x58738888,0x50659ae7],[0x981dcd2,0x96a8736d],[0x9f65789a,0x6509a440],[0x9ff38fed,0x72e9052f],[0xe479ee5b,0x9930578c],[0xe7f28ecd,0x2d49eecd],[0x56c074a5,0x81ea17fe],[0x5544f7d7,0x74b14aef],[0x7b3f0195,0xfc6f290f],[0x12153635,0xb2c0cf57],[0x7f5126db,0xba5e0ca7],[0x7a76956c,0x3eafb413],[0x3d5774a1,0x1d31ab39],[0x8a1b0838,0x21f40cb4],[0x7b4a38e3,0x2537df62],[0x95011364,0x6d1d6e03],[0x4da8979a,4319401],[0x3bc36e07,0x8f7515d7],[0x5d0a12f2,0x7ad310d1],[0x7f9d1a2e,0x1ebe1327],[0xda3a361b,0x1c5157b1],[0xdcdd7d20,0x903d0c25],[0x36833336,0xd068f707],[0xce68341f,0x79893389],[0xab909016,0x8dd05f34],[0x43954b32,0x52dc25e5],[0xb438c2b6,0x7f98e5e9],[0x10dcd78e,0x3851a492],[0xdbc27ab5,0x447822bf],[0x9b3cdb65,0xf82ca382],[0xb67b7896,0x167b4c84],[0xbfced1b0,0x48eac50],[0xa9119b60,0x369ffebd],[0x1fff7ac8,0x904bf45],[0xac12fb17,0x1817eee7],[0xaf08da91,0x77dda93d],[0x1b0cab93,0x6e65c744],[0xb559eb1d,0x4e5e932],[0xc37b45b3,0xf8d6f2ba],[0xc3a9dc22,0x8caac9e9],[0xf3b8b667,0x5a6507ff],[0x9fc477de,0x4ed681da],[0x67378d8e,0xccef96cb],[0x6dd856d9,0x4d259236],[0xa319ce15,0xb0b4db31],[0x7397375,0x1f12dd5e],[0x8a8e849e,0xb32781a5],[0xe1925c71,0x285279f5],[0x74c04bf1,0x790c0efe],[0x4dda4815,0x3c94938a],[0x9d266d6a,0x1cc0542c],[0x7440fb81,0x6508c4fe],[0x13328503,0xdf48229f],[0xd6bf7bae,0xe43cac40],[0x4838d65f,0x6ef6748f],[0x1e152328,0xf3318dea],[0x8f8419a3,0x48f296bf],[0x72c8834a,0x5957b511],[0xd7a023a7,0x3260b45c],[0x94ebc8ab,0xcfb56dae],[0x9fc10d0f,0x989993e0],[0xde68a235,0x5b93cae6],[0xa44cfe79,0xae538bbe],[0x9d1d84fc,0xce371425],[0x51d2b1ab,0x2ddfb636],[0x2fd7e4b9,0xe72cd38c],[0x65ca5b96,0xb7552210],[0xdd69a0d8,0xab3b546d],[0x604d51b2,0x5fbf70e2],[0x73aa8a56,0x4fb7ac9e],[0x1a8c1e99,0x2b941148],[0xaac40a27,0x3d9bea0],[0x764dbeae,0x7fa4f3a6],[0x1e99b96e,0x70a9be8b],[0x2c5e9deb,0x57ef4743],[0x3a938fee,0x32d29981],[0x26e6db8f,0xfdf5adfe],[0x469356c5,0x4ec9f9d],[0xc8763c5b,0x8d1908c],[0x3f6c6af8,0x59d80055],[0x7f7cc394,0x20a3a545],[0x9bfb227e,0xbdf4c5ce],[0x89039d79,0xd6fc5c5c],[0x8fe88b57,0x305e2ab6],[0xa09e8c8c,0x35ab96de],[0xfa7e3939,0x83325753],[0xd6b6d0ec,0xc617c699],[0xdfea21ea,0x9e7557e3],[0xb67c1fa4,0x81680af8],[0xca1e3785,0xa9e724e5],[0x1cfc8bed,0xd681639],[0xd18d8549,0xd140caea],[0x4ed0fe7e,0x9dc91335],[0xe4dbf063,0x4473f5d2],[0x1761f93a,0x44d5aefe],[0x53898e4c,0x3910da55],[0x734de818,0x1f6ec39a],[0x2680b122,0xbaa28d97],[0x298af231,0xc85bafab],[0x7983eed3,0x740847d5],[0x66c1a2a1,0xa60cd889],[0x9e17e496,0x42a3e4c1],[0xedb454e7,0xbadc0805],[0x50b704ca,0xb602c329],[0x4cc317fb,0x9cddd023],[0x66b4835d,0x9eafea22],[0x219b97e2,0x6ffc81bd],[0x261e4e4c,0xa333a9d],[0x1fe2cca7,0x6517db90],[0xd7504dfa,0x8816edbb],[0xb9571fa0,0x4dc089c8],[0x1ddc0325,0x259b27de],[0xcf3f4688,0x801eb9aa],[0xf4f5d05c,0x10cab243],[0x38b6525c,0x21a42b0e],[0x36f60e2b,0xa4fa6800],[0xeb359380,0x3173e0ce],[0x9c4cd625,0x7c5a3603],[0xaf0c317d,0x32adaa8a],[0x258e5a80,0xc7204c4b],[0x8b889d62,0x4d44885d],[0xf4d14597,0xe660f855],[0xd4347f66,0xec8941c3],[0xe699ed85,0xb0dfb40d],[0x2472f620,0x7c2d0484],[0xc2a1e7b5,0xb459aeb5],[0xab4f6451,0xcc1d45ec],[0x63767572,0xae3d6174],[0xa59e0bd1,0x1731a28],[0x116d0016,0xcb948f09],[0x2cf9c8ca,0x52f6e9f],[0xb090a75,0x60a968e3],[0xabeeddb2,0xdde06ff1],[0x58efc10b,0x6a2068d],[0xc6e57a78,0xfbd986e0],[0x2eab8ca6,0x3ce802d7],[0x14a19564,0x116f336],[0x7c0828dd,0x624ec390],[0xd74bbe77,0xe6116ac7],[0x804456af,0x10f5fb53],[0xebe9ea2a,0xdf4321c7],[0x3219a39,0xee587a30],[0x49787fef,0x17af9924],[0xa1e9300c,0xd8520548],[0x5b45e522,0xe4b1b4ef],[0xb49c3b39,0x95091a36],[0xd4490ad5,0x26f14431],[0x12a8f216,0xaf9418c2],[2065276,0xc7350524],[0x1877b51e,0x57a764d5],[0xa2853b80,0xf17f58ee],[0x993e1de7,0x2d36d310],[0xb3598080,0xce64a656],[0x252f59cf,0xd9f04bb],[0xd23c8e17,0x6d113600],[0x1bda0492,0xe7e4586e],[0x21e0bd50,0x26c619bf],[0x3b097ada,0xf088f94e],[0x8d14dedb,0x30be846e],[0xf95cffa2,0x3af5f6f4],[0x38717007,0x61b3f743],[0xca672b91,0xe9e4fa16],[0x64c8e531,0xbff53b55],[0x241260ed,0x4ad1e87d],[0x106c09b9,0x72d2e822],[0x7fba1954,0x10e5ca30],[0x7884d9bc,0x6cb569d8],[0x647dfed,0xcd894a29],[0x63573ff0,0x3e224774],[0x4fc8e956,0xf91b123],[0x1db956e4,0x50275779],[0xb8d91274,0xb9e9d4fb],[0xa2ebee47,0xe2fbfce1],[0xd9f1f30c,0xcd97fb09],[0xefed53d7,0x5fd64e6b],[0x2e6d02c3,0x6017f67f],[0xa9aa4d20,0xdb084e9b],[0xb64be8d8,0xb25396c1],[0x70cb6af7,0xc2d5bcf0],[0x98f076a4,0xf7a2322e],[0xbf844708,0x5e69b5f],[0x94c3251f,0x6f90cf3],[0x3e003e61,0x6a6591e9],[0xb925a6cd,0x421aff3],[0x61bdd130,0x7c66e300],[0xbf8d5108,0xe27e0d48],[0x240ab57a,0x8b888b20],[0xfc87614b,0xaf287e07],[0xef02cdd0,0x6ffdb432],[0xa1082c04,0x66df6c0a],[0x8215e577,1258184],[0xd39bb9c3,0xa48db6cf],[0x27382596,0x34305c14],[0x61cf4f94,0xc97df93d],[0x1b6baca2,0xae4e125b],[0x758f450c,0x88572e0b],[0x959f587d,0x507a8359],[0xb063e962,0xe045f54d],[0x60e8ed72,0xc0dff5d1],[0x7b649785,0x55326f9f],[0xfd080d23,0x6da814ba],[0x8c90fd9b,0x83f4558],[0x106f72fe,0x81e2c590],[0x7976033a,0x39f7d952],[0xa4ec0132,0x764ca04b],[0x733ea705,0xfae4fa77],[0xb4d8f77b,0xc3e56167],[0x9e21f4f9,0x3b33fd9],[0x9d765e41,0x9fb69f6d],[0xd30c088b,0xa61ea5ef],[0x5d94337f,0xbfaf7f5b],[0x1a4e4822,0xeb4d7a59],[0x6ffe73e8,0x1b637fb3],[0xddf957bc,0x36d8b9ca],[0x64d0e29e,0xea8838b3],[0x8dd9bdf,0xd96b9f63],[0x87e79e5,0xa57d1d13],[0xe328e230,0xe3e2b3fb],[0x1c2559e3,0xf0946be],[0x720bf5f2,0x6f4d2eaa],[0xb0774d26,0x1cc609db],[0x443f64ec,0x5a371195],[0x4112cf68,0x649a260e],[0xd813f2fa,0xb7f5c5ca],[0x660d3257,0x380841ee],[0x59ac2c78,0x73f910a3],[0xe8469638,0x77671a17],[0x93b633ab,4197739e3],[0xc0c0f5a6,0xef4cdcf],[0xcaf21ecd,0x4377b28c],[0x57277707,0x199b8175],[0x506c11b9,0xd90e8b1d],[0xd83cc268,0x7a19255f],[0x4a29c646,0x5a314cd1],[0xed2df212,0x16235097],[0xb5635c95,0xff7296e2],[0x22af003a,0xb672e811],[0x52e76259,0x6bf68235],[0x9aeba33a,0xc6ecc6b0],[0x944f6de0,0x9134dfb6],[0x6c47bec8,0x83a7de39],[0x6ad047c4,0x30a12104],[0xa5b1cfdb,0xa0ab4067],[0x7c45d833,0xaff07862],[0x5092ef95,0xa16da0b],[0x9338e69c,0x52b8e7b],[0x455a4b4c,0xfe30e3f5],[0x6b02e631,0x95ad0cf8],[0x6b17b224,0xbad6bf27],[0xd1e0ccd2,0x5bb9c169],[0xde0c89a5,0x56b9ae70],[0x50065e53,0x5a213cf6],[0x9c1169fa,0x2777b874],[0x78edefd6,0x94af1eed],[0x6dc93d95,0x26a50e68],[0xee97f453,0xf06791ed],[0x32ab0edb,0x696703d3],[0x3a6853c7,0xe70757a7],[0x31865ced,0x6120f37d],[0x67fef95d,0x92607890],[0x1f2b1d1f,0x15f6dc9c],[0xb69e38a8,0x965c6b65],[0xaa9119ff,0x184cccf4],[0xf43c7328,0x73f24c13],[0xfb4a3d79,0x4a9a80d2],[0x3550c232,0x1fd6109c],[0x371f77e7,0x6bb8417e],[0x6bfa9aae,0x5ec05779],[0xcd04f3ff,1722232],[0xe3273522,0x64480ca],[0x9f91508b,0xffcfc14a],[0x49a7f41,0x61a9e60],[0xfcb6be43,0xa9f2fe9b],[0x8de8a1c,0x7797da9b],[0x8f9887e6,0x78735a1],[0xb5b4071d,0xbfc73a66],[0x230e343d,0xfba08d33],[0x43ed7f5a,0xfae657d],[0x3a88a0fb,0xbcb05c63],[0x21874b8b,0x4d2dbc4f],[0x1bdea12e,0x35f6a8c9],[0x53c065c6,0xc8e63528],[0xe34a1d25,0xe7a8d6b],[0xd6b04d3b,0x7651dd7e],[0x5e90277e,0x7cb39e2d],[0x2c046f22,0x62dc67d],[0xb10bb459,0x132d0a26],[0x3fa9ddfb,0x67e2f199],[0xe09b88e,0x1914f7af],[0x10e8b35a,0xf3eeab37],[0x9eedeca8,0xe272b933],[0xd4c718bc,0x4ae8ae5f],[0x81536d60,0x1170fc20],[0x91b534f8,0x85818a06],[0xec8177f8,0x3f900978],[0x190e714f,0xada5156e],[0xb592bf39,0xb0364963],[0x89c350c8,0x93ae7dc1],[0xac042e70,0xf8b383f2],[0xb49b52e5,0x87a1ee60],[0xfb152fe3,0xff26da89],[0x3e666e6f,0x69ae2c15],[0x3b544ebe,0x544c19f9],[0xe805a1e2,0x90cf2456],[0x24b33c9d,0x7ed25117],[0xe7473342,0x7b72f0c1],[0xa804d18,0xb7097475],[0x57e3306d,0x881edb4f],[0x4ae7d6a3,0x6eb5dbcb],[0x2d8d5432,0x157064c8],[0xd1e649de,0x1e7f268b],[0x8a328a1c,0xedfe552c],[0x7a3aec7,0x9624c7da],[0x84547ddc,0x3e203c94],[0x990a98fd,0x5071d263],[0x1a4ff126,0x16eefc89],[0xf6f7fd14,0x31714200],[0x30c05b1b,0xa332f41c],[0x8d2636b8,0x1555a786],[0x46c9feb5,0x5d120902],[0xccec0a73,0xb49c9921],[0x4e9d2827,0x355fc492],[0x19ebb029,0x435dcb0f],[0x4659d2b7,0x43848a2c],[0x963ef2c9,0x6b33be31],[0x74f85198,0xb05a2e7d],[0x5a0f544d,0xd2b1fb18],[0x3727073,0xc2e134b1],[0xc7f6aa2d,0xe59aea61],[0x352787ba,0xa0d7c22f],[0x9853eab6,0x3b5e0b35],[0xabbdcdd7,0xed5c0860],[0xcf05daf5,0xac8d77b0],[0x49cad48c,0xebf4a71e],[0x7a4c10ec,0x2158c4a6],[0xd9e92aa2,0x46bf719e],[0x13ae978d,0x9fe5557],[0x730499af,0x921549ff],[0x4e4b705b,0x92903ba4],[0xff577222,0xc14f0a3a],[0x55b6344c,0xf97aafae],[0xb862225b,0x55b6960],[0xcac09afb,0xddd2cdb4],[0xdaf8e982,0x9fe96b5f],[0xb5fdfc5d,0x3132c498],[0x310cb380,0xdb6f7503],[0xe87fbb46,0x217a360e],[0x2102ae46,0x6ebb1148],[0xf8549e1a,0x3aa5e00d],[0x7a69afd,0xcc42261a],[0xc4c118bf,0xe78feaae],[0xf9f4892e,0xd96bd438],[0x1af3dbe2,0x5d8f45da],[0xf5b4b0b0,0xd2deeeb4],[0x962aceef,0xa82e1c84],[0x46e3eca,0xaf453ce9],[0xf05d1296,0x81949a4c],[0x964781ce,0x734b3c84],[0x9c2ed440,0x81ce5fbd],[0x522e23f3,0x925e319e],[0x177e00f9,0xfc32f791],[0x2bc60a63,0xa6f3b3f2],[0x222bbfae,0x61725606],[0x486289dd,0xcc3d6780],[0x7dc7785b,0x8efdfc80],[0x8af38731,0xc02ba980],[0x1fab64ea,0x29a2ddf7],[0xe4d94293,0x22cd065a],[0x9da058c6,0x7844f20c],[0x24c0e332,0xb70019b0],[0x233003b5,0xa6cfe6ad],[0xd586bd01,0xc5c217f6],[0x5e563788,0x5f29bc2b],[0x7eba726d,0x8c94094b],[0xa56a5f0,0xbfe39272],[0xd79476a8,0x4ee20d06],[0x9e4c1269,0xbaa4bf37],[0x17efee45,0xb0dee640],[0x1d95b0a5,0xfcf90bc6],[0x93cbe0b6,0x99c2585d],[0x65fa4f22,0x7a2b6d79],[0xd5f9e858,0x292504d5],[0xc2b5a03f,0x71471a6f],[0x59300222,0xb4561e00],[0xce2f8642,0xca0712dc],[0x7ca9723f,0xbb2e8988],[0x27853383,0x47f2ba08],[0xc61bb3a1,0x41e50e8c],[0x150f361d,0xab9dec26],[0x9f6a419d,0x382595f4],[0x64a53dc9,0x24fe7ac9],[0x142de49f,0xff7a7c3d],[0xc335248,0x857fa9e7],[0xa9c32d5,0xeae45305],[0xe6c42178,0xc4bbb92e],[0x71f1ce24,0x90d20b07],[0xf1bcc3d2,0x75afe51a],[0xe728e8c8,0x3c334074],[0x96fbf83a,0x12884624],[0x81a1549f,0xd6573da5],[0x5fa7867c,0xaf35e149],[0x56986e2e,0xf3ed091b],[0x917f1dd5,0xf8886c61],[0xd20d8c88,0xc8ffe65f]],n=[[0x31d71dce,0x64b2c310],[0xa57e6339,0xdd2cf3a0],[0xf165b587,0xdf898190],[0x1ef6e6db,0xb1961ec9]],t=[[0x70cc73d9,0xbc26e24],[0xe21a6b35,0xdf0c3ad7],[3838936,0xb2806962],[0x1c99ded3,0x3cb890a1],[0xcf3145de,0xadd4289],[0xd0e4427a,0x5514fb72],[0x77c621cc,0x9fb3a483],[0x67a34dac,0x4356550b]],o=[0xf8d626aa,0xaf278509],a={p:0,P:1,n:2,N:3,b:4,B:5,r:6,R:7,q:8,Q:9,k:10,K:11},r=[];r[5]=1;r[6]=0;r[9]=3;r[10]=2;r[17]=5;r[18]=4;r[33]=7;r[34]=6;r[65]=9;r[66]=8;r[129]=11;r[130]=10;var i=[2,5,10,20,40,80,160,64],s=["","0000000","000000","00000","0000","000","00","0",""];function to32BitHex(e){var n=e.toString(16);return s[n.length]+n}function to64BitHex(e){return to32BitHex(e[0])+to32BitHex(e[1])}function hex64ToDec(e){return[parseInt(e.substr(0,8),16),parseInt(e.substr(8),16)]}function hash(r,s){var f,c,d,u,l,x,p,m,b,h,_,v,g=r.split(" "),y=g[0].split("/"),k="w"===g[1],A=0,S=Number(k),C=S?3:4;for(d=7;d>=0;d-=1){u=0;p=(l=y[d]).length;for(x=0;x=0){f=(f^(b=e[64*_+8*(7-d)+u])[0])>>>0;c=(c^b[1])>>>0;_===S&&d===C&&(A|=1<-1){f=(f^(b=n[0])[0])>>>0;c=(c^b[1])>>>0}if(h.indexOf("Q")>-1){f=(f^(b=n[2])[0])>>>0;c=(c^b[1])>>>0}if(h.indexOf("k")>-1){f=(f^(b=n[1])[0])>>>0;c=(c^b[1])>>>0}if(h.indexOf("q")>-1){f=(f^(b=n[3])[0])>>>0;c=(c^b[1])>>>0}}if(g[3]&&"-"!==g[3]){v=g[3].charCodeAt(0)-97;if(i[v]&A){f=(f^(b=t[v])[0])>>>0;c=(c^b[1])>>>0}}if(k){f=(f^o[0])>>>0;c=(c^o[1])>>>0}return s&&"hex"===s?to64BitHex([f,c]):[f,c]}function ajaxLoad(e,n){var t=new XMLHttpRequest,o=e.toLowerCase().indexOf(".json")>-1;function onload(){if(t.status>=200&&t.status<300||304===t.status||0===t.status||1223===t.status){if(o)try{n(null,JSON.parse(t.response))}catch(e){n(e)}else n(null,new DataView(t.response))}else n(Error("Error code: "+t.status))}t.open("GET",e,!0);o||(t.responseType="arraybuffer");t.onload=onload;t.onerror=onload;t.send()}function wrap(e){var n,t,o,a,r={};function parseBook(e,n){var o,a,r,i,s,f,c=t.getUint16(e+8),d=t.getUint16(e+10);return a=c>>9&7,r=c>>6&7,i=c>>3&7,s=7&c,f=c>>12&7,4===r&&n&&a===i&&"-"!==n&&(7===s&&(0===a&&n.indexOf("K")>-1||7===a&&n.indexOf("k")>-1)?s-=1:0===s&&(0===a&&n.indexOf("Q")>-1||7===a&&n.indexOf("q")>-1)&&(s+=2)),o=String.fromCharCode(r+97)+(a+1)+String.fromCharCode(s+97)+(i+1),f&&(o+="nbrq"[f-1]),{move:o,weight:d}}function sortMoves(e){e.sort(function sorter(e,n){return n.weight-e.weight})}function query(e){return"string"==typeof e&&(e={fen:e}),n(e)}function pick(e){var n,t,o,a,r,i=0;sortMoves(n=(e=e||{}).moves||query(e));o=n.length;if(o){if(!e.type||1===o||"best"===e.type)return n[0].move;if("random"===e.type){a=Math.floor(Math.random()*n.sum)+1;for(r=0;ro&&(t=o),n[t-1].move)}}function bufferBookFind(e){var n,o,a,r,i,s=t.length||t.byteLength||0,f=e.offset||0,c=e.fen,d=e.chess960,u=e.checkAll,l=[],x=0;e.hash?"string"==typeof(n=e.hash)&&(n=hex64ToDec(n)):n=hash(c);!d&&c&&(i=c.split(" ")[2]);for(f=0;f=0;r-=1)l[r].relative=Math.round(l[r].weight/x*1e4);return l}function decompressMoves(e){var n,t=[],o=e.b.length;for(n=0;n=0;t-=1)(s=n[t].move.match(/e([18])([ah])\1/))&&("h"===s[2]&&("1"===s[1]&&f.indexOf("K")>-1||"8"===s[1]&&f.indexOf("k")>-1)?n[t]={move:"e"+s[1]+"g"+s[1],weight:n[t].weight}:"a"===s[2]&&("1"===s[1]&&f.indexOf("Q")>-1||"8"===s[1]&&f.indexOf("q")>-1)&&(n[t]={move:"e"+s[1]+"c"+s[1],weight:n[t].weight}))}}}if(n)for(t=n.length-1;t>=0;t-=1)c+=Number(n[t].weight);else n=[];return n.sum=c,n}r={query:query,pick:pick};if(e.getUint32){n=bufferBookFind;t=e;r.buffer=t}else{n=jsonBookFind;o=e;r.json=o;for(a in o){r.useFen=a.indexOf(" ")>-1;break}}return r}function getBook(e,n){ajaxLoad(e,function onload(e,t){var o;t&&(o=wrap(t));if(n)return n(e,o);if(e)throw e;return o})}return{hash:hash,loadBook:function(){var e={};return function loadBook(n,t){if(e[n]){e[n].book?setTimeout(function(){t(null,e[n].book)},0):e[n].cbs.push(t);return}e[n]={cbs:[t]};getBook(n,function onload(t,o){var a=e[n].cbs;if(t)delete e[n];else{e[n].book=o;e[n].cbs=void 0}a.forEach(function(e){setTimeout(function(){e(t,o)},0)})})}}(),to64BitHex:to64BitHex,zobristPiece:e,zobristCastle:n,zobristEnPassant:t,zobristTurn:o,zobristPieceValue:a,zobristPieceValueNumbers:r}}(),t=function init(){var e,t,o,a,r={Chess:0,Chess960:1,Crazyhouse:2,"3-check":3,"King of the Hill":4,Bughouse:5,chess960:1,fischerandom:1,fischerrandom:1,fischer:1,chess9lx:1,960:1,crazyhouse:2,"three-check":3,threecheck:3,"3check":3,kingofthehill:4,koth:4,bughouse:5},i=["Chess","Chess960","Crazyhouse","3-check","King of the Hill","Bughouse"],s={a8:0,b8:1,c8:2,d8:3,e8:4,f8:5,g8:6,h8:7,a7:16,b7:17,c7:18,d7:19,e7:20,f7:21,g7:22,h7:23,a6:32,b6:33,c6:34,d6:35,e6:36,f6:37,g6:38,h6:39,a5:48,b5:49,c5:50,d5:51,e5:52,f5:53,g5:54,h5:55,a4:64,b4:65,c4:66,d4:67,e4:68,f4:69,g4:70,h4:71,a3:80,b3:81,c3:82,d3:83,e3:84,f3:85,g3:86,h3:87,a2:96,b2:97,c2:98,d2:99,e2:100,f2:101,g2:102,h2:103,a1:112,b1:113,c1:114,d1:115,e1:116,f1:117,g1:118,h1:119},f=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],c=0,d=0,u=0,l=-1,x=1,p=2,m=4,b=8,h=16,_=32,v=64,g=128,y=3,k=252,A=255,S=512,C=112,T=1,E=2,w=4,P=3,M=7,O=14,I=21,B=127,L="pnbrqkPNBRQK",N="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",D=[];D[5]=[-16,-17,-15];D[6]=[16,17,15];D[8]=[-18,-33,-31,-14,18,33,31,14];D[16]=[-17,-15,17,15];D[32]=[-16,1,16,-1];D[64]=[-17,-16,-15,1,17,16,15,-1];D[128]=[-17,-16,-15,1,17,16,15,-1];var F={P:5,p:6,N:9,n:10,B:17,b:18,R:33,r:34,Q:65,q:66,K:129,k:130},R={P:4,p:4,N:8,n:8,B:16,b:16,R:32,r:32,Q:64,q:64,K:128,k:128},H={5:"P",6:"p",9:"N",10:"n",17:"B",18:"b",33:"R",34:"r",65:"Q",66:"q",129:"K",130:"k"},V={9:"N",10:"N",17:"B",18:"B",33:"R",34:"R",65:"Q",66:"Q",129:"K",130:"K"},G=[80,0,0,0,0,0,0,96,0,0,0,0,0,0,80,0,0,80,0,0,0,0,0,96,0,0,0,0,0,80,0,0,0,0,80,0,0,0,0,96,0,0,0,0,80,0,0,0,0,0,0,80,0,0,0,96,0,0,0,80,0,0,0,0,0,0,0,0,80,0,0,96,0,0,80,0,0,0,0,0,0,0,0,0,0,80,8,96,8,80,0,0,0,0,0,0,0,0,0,0,0,8,212,224,212,8,0,0,0,0,0,0,96,96,96,96,96,96,224,0,224,96,96,96,96,96,96,0,0,0,0,0,0,8,212,224,212,8,0,0,0,0,0,0,0,0,0,0,0,80,8,96,8,80,0,0,0,0,0,0,0,0,0,0,80,0,0,96,0,0,80,0,0,0,0,0,0,0,0,80,0,0,0,96,0,0,0,80,0,0,0,0,0,0,80,0,0,0,0,96,0,0,0,0,80,0,0,0,0,80,0,0,0,0,0,96,0,0,0,0,0,80,0,0,80,0,0,0,0,0,0,96,0,0,0,0,0,0,80],z=[336,80,80,0,0,0,96,352,96,0,0,0,80,80,336,0,80,336,80,80,0,0,96,352,96,0,0,80,80,336,80,0,80,80,336,80,80,0,96,352,96,0,80,80,336,80,80,0,0,80,80,336,80,80,96,352,96,80,80,336,80,80,0,0,0,0,80,80,336,88,120,360,120,88,336,80,80,0,0,0,0,0,0,80,88,476,252,508,252,476,88,80,0,0,0,0,96,96,96,96,120,252,252,252,252,252,120,96,96,96,96,0,352,352,352,352,360,508,252,0,252,508,360,352,352,352,352,0,96,96,96,96,120,252,252,252,252,252,120,96,96,96,96,0,0,0,0,80,88,476,252,508,252,476,88,80,0,0,0,0,0,0,80,80,336,88,120,360,120,88,336,80,80,0,0,0,0,80,80,336,80,80,96,352,96,80,80,336,80,80,0,0,80,80,336,80,80,0,96,352,96,0,80,80,336,80,80,0,80,336,80,80,0,0,96,352,96,0,0,80,80,336,80,0,336,80,80,0,0,0,96,352,96,0,0,0,80,80,336],W=[336,80,80,0,0,0,96,352,96,96,0,0,80,80,336,0,80,336,80,80,0,0,96,352,96,96,0,80,80,336,80,0,80,80,336,80,80,0,96,352,96,96,80,80,336,80,80,0,0,80,80,336,80,80,96,352,96,112,80,336,80,80,0,0,0,0,80,80,336,88,120,360,120,120,336,80,80,0,0,0,0,0,0,80,88,476,252,508,252,508,88,80,0,0,0,0,96,96,96,96,120,252,252,252,252,252,252,104,96,96,96,0,352,352,352,352,360,508,252,0,252,508,488,352,352,352,352,0,96,96,96,96,120,252,252,252,252,252,252,104,96,96,96,0,0,0,0,80,88,476,252,508,252,508,88,80,0,0,0,0,0,0,80,80,336,88,120,360,120,120,336,80,80,0,0,0,0,80,80,336,80,80,96,352,96,112,80,336,80,80,0,0,80,80,336,80,80,0,96,352,96,96,80,80,336,80,80,0,80,336,80,80,0,0,96,352,96,96,0,80,80,336,80,0,336,80,80,0,0,0,96,352,96,96,0,0,80,80,336],j=[336,80,80,0,0,96,96,352,96,0,0,0,80,80,336,0,80,336,80,80,0,96,96,352,96,0,0,80,80,336,80,0,80,80,336,80,80,96,96,352,96,0,80,80,336,80,80,0,0,80,80,336,80,112,96,352,96,80,80,336,80,80,0,0,0,0,80,80,336,120,120,360,120,88,336,80,80,0,0,0,0,0,0,80,88,508,252,508,252,476,88,80,0,0,0,0,96,96,96,104,252,252,252,252,252,252,120,96,96,96,96,0,352,352,352,352,488,508,252,0,252,508,360,352,352,352,352,0,96,96,96,104,252,252,252,252,252,252,120,96,96,96,96,0,0,0,0,80,88,508,252,508,252,476,88,80,0,0,0,0,0,0,80,80,336,120,120,360,120,88,336,80,80,0,0,0,0,80,80,336,80,112,96,352,96,80,80,336,80,80,0,0,80,80,336,80,80,96,96,352,96,0,80,80,336,80,80,0,80,336,80,80,0,96,96,352,96,0,0,80,80,336,80,0,336,80,80,0,0,96,96,352,96,0,0,0,80,80,336],q=[336,80,80,0,0,96,96,352,96,96,0,0,80,80,336,0,80,336,80,80,0,96,96,352,96,96,0,80,80,336,80,0,80,80,336,80,80,96,96,352,96,96,80,80,336,80,80,0,0,80,80,336,80,112,96,352,96,112,80,336,80,80,0,0,0,0,80,80,336,120,120,360,120,120,336,80,80,0,0,0,0,0,0,80,88,508,252,508,252,508,88,80,0,0,0,0,96,96,96,104,252,252,252,252,252,252,252,104,96,96,96,0,352,352,352,352,488,508,252,0,252,508,488,352,352,352,352,0,96,96,96,104,252,252,252,252,252,252,252,104,96,96,96,0,0,0,0,80,88,508,252,508,252,508,88,80,0,0,0,0,0,0,80,80,336,120,120,360,120,120,336,80,80,0,0,0,0,80,80,336,80,112,96,352,96,112,80,336,80,80,0,0,80,80,336,80,80,96,96,352,96,96,80,80,336,80,80,0,80,336,80,80,0,96,96,352,96,96,0,80,80,336,80,0,336,80,80,0,0,96,96,352,96,96,0,0,80,80,336],Q=[336,80,80,112,112,112,96,352,96,96,112,112,112,80,336,0,80,336,80,112,112,112,112,352,96,112,112,112,112,336,80,0,80,80,336,112,112,112,112,368,112,112,112,112,368,80,80,0,80,80,80,368,112,112,112,368,112,112,112,368,112,80,80,0,80,80,80,112,368,120,120,376,120,120,368,112,112,80,80,0,0,80,88,120,120,508,252,508,252,508,120,120,120,88,80,0,96,104,252,252,252,252,252,252,252,252,252,252,252,252,104,0,352,352,480,480,488,508,252,0,252,508,488,480,480,480,352,0,96,104,252,252,252,252,252,252,252,252,252,252,252,252,104,0,0,80,88,120,120,508,252,508,252,508,120,120,120,88,80,0,80,80,80,112,368,120,120,376,120,120,368,112,112,80,80,0,80,80,80,368,112,112,112,368,112,112,112,368,112,80,80,0,80,80,336,112,112,112,112,368,112,112,112,112,368,80,80,0,80,336,80,112,112,112,112,352,96,112,112,112,112,336,80,0,336,80,80,112,112,112,96,352,96,96,112,112,112,80,336],K=[17,0,0,0,0,0,0,16,0,0,0,0,0,0,15,0,0,17,0,0,0,0,0,16,0,0,0,0,0,15,0,0,0,0,17,0,0,0,0,16,0,0,0,0,15,0,0,0,0,0,0,17,0,0,0,16,0,0,0,15,0,0,0,0,0,0,0,0,17,0,0,16,0,0,15,0,0,0,0,0,0,0,0,0,0,17,33,16,31,15,0,0,0,0,0,0,0,0,0,0,0,18,17,16,15,14,0,0,0,0,0,0,1,1,1,1,1,1,1,0,-1,-1,-1,-1,-1,-1,-1,0,0,0,0,0,0,-14,-15,-16,-17,-18,0,0,0,0,0,0,0,0,0,0,0,-15,-31,-16,-33,-17,0,0,0,0,0,0,0,0,0,0,-15,0,0,-16,0,0,-17,0,0,0,0,0,0,0,0,-15,0,0,0,-16,0,0,0,-17,0,0,0,0,0,0,-15,0,0,0,0,-16,0,0,0,0,-17,0,0,0,0,-15,0,0,0,0,0,-16,0,0,0,0,0,-17,0,0,-15,0,0,0,0,0,0,-16,0,0,0,0,0,0,-17],U=[0,5,8,11,14],$=[31,7,7,7,63],X={P:0,p:0,N:5,n:5,B:8,b:8,R:11,r:11,Q:14,q:14},Z=[m,b,h,_,v],Y=["","N","B","R","Q"],J={CAPTURE:1,BIG_PAWN:2,EP_CAPTURE:4,ANY_CAPTURE:5,PROMOTION:8,KSIDE_CASTLE:16,QSIDE_CASTLE:32,KQSIDE_CASTLE:48,DROP:64,DROP_OR_PROMOTE:72},ee=[0,6,1],en={K:119,Q:112,k:7,q:0,A:112,B:113,C:114,D:115,E:116,F:117,G:118,H:119,a:0,b:1,c:2,d:3,e:4,f:5,g:6,h:7},et=["Event","Site","Date","Round","White","Black","Result"],eo=["Event","Site","Date","Round","White","Black","Result","Variant","SetUp","FEN","WhiteA","WhiteB","BlackA","BlackB"];function rank(e){return e>>4}function file(e){return 7&e}function algebraic(e){return String.fromCharCode(file(e)+97)+(8-rank(e))}function swapColor(e){return 3-e}function hashNum(e,n){e[0]=(e[0]^n[0])>>>0;e[1]=(e[1]^n[1])>>>0}function wordWrap(e,n,t){return n<1?e:(n="number"==typeof n?n:80,e.replace(RegExp("(.{1,"+n+"})(?: |$|\r?\n)","g"),"$1"+t).slice(0,-t.length))}function completeFen(e){var n,t;n=[""," w - - 0 1"," - - 0 1"," - 0 1"," 0 1"," 1"][(t=(e=e.trim()).split(" ")).length];if(n&&e)e+=n;else if("0"===t[5]){t[5]=1;e=t.join(" ")}return e}function formatTimestamp(e){var n=Math.floor(e%36e3/600),t=Math.floor(e%36e3%600)/10;return Math.floor(e/36e3)+":"+(n<10?"0":"")+n+":"+(t<10?"0":"")+t}function timestampToTime(e){var n=e.split(":");return(3600*n[0]+60*n[1]+1*n[2])*10}function createVariantZobristNumbers(){n.zobristCheck=[[0x1a4cef14,0x144412b0],[0x3e08bd8c,0x128a2662],[0x60a76bdf,0x6843fe2e],[0x3c03989c,0x60e3f813],[0x74756ef3,0x17c4439],[0x99c80b2,0x735e13b1]]}function fixFenPieces(e,n){var t,o,a=e.length,i=0,s=0,f=n&&(n===r.Crazyhouse||n===r.Bughouse);for(t=0;t7){if(!f&&t8)return!1}else if("~"!==o)return!1;else if(!f||!t||!/[nbrq]/i.test(e[t-1])){e=e.substr(0,t)+e.substr(t+1);--t;--a}}else{s+=1*o;if(s>8){e=e.substr(0,t)+(o-(s-8))+e.substr(t+1);s=8}}}return e}function validateFen(e,n){var t,o,a,i,s,f,c,d,u,l,x,p,m,b,h,_,v,g,y,k,A=/^(?:[A-H]{1,2}[a-h]{0,2}|[A-H]{0,2}[a-h]{1,2}|KQ?k?q?|Qk?q?|kq?|q|-)$/,S=r[n]||1*n||r[String(n).replace(/\s/g,"").toLowerCase()],C=S===r.Crazyhouse||S===r.Bughouse,T=0,E=0,w=!0,P="",M={0:0,7:0},O={0:0,7:0},I={0:"k",7:"K"},B={0:"r",7:"R"},N=S===r.Chess960;if(!e)return 1;if(S===r.Bughouse){s=e.split(" | ");if(2===s.length)return 0===(f=validateFen(s[0],n))&&(f=validateFen(s[1],n)),f}s=e.split(/\s+/);if(S===r["3-check"]&&7===s.length){i=s.pop();if(!/^\+[0-3]\+[0-3]$/.test(i)||"+3+3"===i)return 14}if(6!==s.length)return 1;if(/\D|.{7,}|^0|^$/.test(s[5]))return 2;if(/\D|.{7,}|^0.|^$/.test(s[4]))return 3;if(!/^(?:-|[abcdefgh][36])$/.test(s[3]))return 4;l=s[2];if(N){if(!A.test(l))return 12}else if(!/^(?:KQ?k?q?|Qk?q?|kq?|q|-)$/.test(l)){if(void 0!==n||!A.test(l))return 5;N=!0}if("w"!==s[1]&&"b"!==s[1])return 6;C&&(s[0]=s[0].replace(/~(?=.*\/)/g,""));o=s[0].split("/");if(C&&9===o.length){i=o.pop();if(!/^[pnbrq]{0,63}$/i.test(i))return 13}if(8!==o.length)return 7;if("3"===s[3][1]&&"w"===s[1]||"6"===s[3][1]&&"b"===s[1])return 11;if("-"!==s[3]){c=4==(E="3"===s[3][1]?4:3)?5:2;T=s[3].charCodeAt(0)-97;w=!1;P=4===E?"P":"p"}for(t=0;t=0;--t){h=l.charCodeAt(t);if(_&&_>h&&_-h<8)return 15;if(75===h)m=M[b=7]&p[O[b]];else if(81===h)m=M[b=7]&x[O[b]];else if(107===h)m=M[b=0]&p[O[b]];else if(113===h)m=M[b=0]&x[O[b]];else{b=h>=97?0:7;m=1<64||(m&M[b])!==m||++v[b][(O[b]1)return 15}}else{d=(l.indexOf("K")>-1?128:0)|(l.indexOf("Q")>-1?1:0);if(d&&(16!==O[7]||(d&M[7])!==d))return 15;u=(l.indexOf("k")>-1?128:0)|(l.indexOf("q")>-1?1:0);if(u&&(16!==O[0]||(u&M[0])!==u))return 15}}return 0}function handToString(e,n){var t,o,a="",r=0,i=n?6:0;if(e)for(;r<5;){t=e>>U[r]&$[r];for(o=0;o>U[r]&$[r];for(f=0;f>>0,17*c[1]>>>0]);++r}}d=315}}function hashEP(e,t,o,a){(e[o+1]===a||e[o-1]===a)&&hashNum(t,n.zobristEnPassant[file(o)])}function getPieces(e,n){var t,o,a=[];for(t=0;t<120;++t){136&t&&(t+=8);o=e[t];if(o&&(o&n)===n){a.push(t);continue}}return a}function addPawnMove(e,n,o,a){var r;if(0===t||e[o+8]&E){if(rank(o)%7==0){r=a|J.PROMOTION|n<n%8?1:-1;for(i=n+f;i!==s;i+=f)if(e[i])return!1;r=(a=o===x?1===f?118:114:1===f?6:2)-f;if(e[a+8]||e[a]&&a!==n&&a!==s||e[r]&&r!==n&&r!==s)return!1;if(a!==n){f=a>n?1:-1;for(i=n+f;i!==a;i+=f)if(i!==s&&e[i]||e[i+8])return!1}return!0}var ea=function(){function createLine(e,n,t,o,a,i,s){var f,c,d,u,l,m,b,h,_=[],v="",g=!0,y=n[t],k=y.length,A="";if(y.commands)for(u in y.commands)(!i||i.indexOf(u)>-1)&&(A+="[%"+u+" "+y.commands[u]+"]");y.initComment&&!s&&(A=(A+" "+y.initComment.replace(/(\"|\}|\%|\\)/g,"\\$1")).trim());A&&_.push("{"+A+"}");for(c=0;c-1)&&(A+="[%"+u+" "+f.commands[u]+"]");f.comment&&!s&&(A=(A+" "+f.comment.replace(/(\"|\}|\%|\\)/g,"\\$1")).trim());if(A){v+=" {"+A+"}";g=!0}_.push(v);if(f.lines){b=f.lines.length;for(d=0;da.bughouseOrder[0]){a.bughouseOrder.shift();s.push("B")}else{n.bughouseOrder.shift();s.push("A")}return n=[],s.forEach(function(s){var f,c,d,u="";if("A"===s){f=o;++r;c=r;d=e.startingMoveNumber()}else{f=a;++i;c=i;d=e.siblingGame.startingMoveNumber()}u=String(Math.floor((c+1)/2)+d-1);(f.blackCountOffset+c)%2?u+=s:u+=s.toLowerCase();u+="."+(t?" ":"")+f.shift();n.push(u)}),n}function createHeader(e,n){return"["+e+' "'+String(n).replace(/(\"|\\)/g,"\\$1")+'"]'}return function generatePgn(e,n,t,o,a,i){var s,f,c="string"==typeof e.newline?e.newline:"\n",d=void 0===e.spaceAfterPeriods||e.spaceAfterPeriods,u="";u+=createHeader("Event",n.Event)+c;u+=createHeader("Site",n.Site)+c;u+=createHeader("Date",n.Date)+c;u+=createHeader("Round",n.Round)+c;if(a===r.Bughouse){u+=createHeader("WhiteA",n.WhiteA||"?")+c;u+=createHeader("BlackA",n.BlackA||"?")+c;u+=createHeader("WhiteB",n.WhiteB||"?")+c;u+=createHeader("BlackB",n.BlackB||"?")+c}else{u+=createHeader("White",n.White)+c;u+=createHeader("Black",n.Black)+c}u+=createHeader("Result",n.Result)+c;a&&(u+=createHeader("Variant",n.Variant)+c);if(n.FEN&&n.FEN!==N){u+=createHeader("SetUp","1")+c;u+=createHeader("FEN",n.FEN)+c}for(s in n)-1===eo.indexOf(s)&&(u+=createHeader(s,n[s])+c);u+=c;f=createLine(o,t,0,a,d,e.hideCommands?[]:e.restrictCommands,e.hideComments);if(a===r.Bughouse){if(i.isDependent)return f;f=makeBugHousePgn(i,f,d)}return f.push(n.Result),u+wordWrap(f.join(" "),e.maxWidth,c)}}(),er=function(){var e="!?‼⁇⁉⁈□∇Δ∞⩲⩱\xb1∓⨀⟳→↑⇆∆⌓⇔⇗⟫⟪✕⊥⊕○⇄↻⊙☒~",n=/\[%(\S+)\s([^\]]+)\]/,t=/^(?:[+=~\/\-\u2212]+|T?N|RR|D)$/;function extractCommands(e){for(var t,o=e.commands||{};t=n.exec(e.value);){e.value=e.value.replace(t[0],"").trim();o[t[1]]=t[2];e.commands=o}}function isSplitGame(e,n,t,o){for(var a;++n0&&(x.value+=d)}}else{if("]"!==d){if(!d.trim())continue;--f}x={type:u="tags",value:""}}}for(;f-1){if("!"===d||"?"===d||6>e.indexOf(d)&&(d=["!!","??","!?","?!"][e.indexOf(d)-2])){x.value&&l.push(x);x={type:"a",value:d};("!"===i[f+1]||"?"===i[f+1])&&(x.value+=i[++f]);l.push(x);x={type:"san",value:""}}else{if("∞"===d&&"=/"===x.value){x.type="aa";x.value+=d}else{if(x.value){t.test(x.value)&&("--"!==x.value||o.rejectNullMoves)&&(x.type="aa");l.push(x)}x={type:"aa",value:d};if("↑"===d&&"↑"===i[f+1]){x.value="↻";++f}}l.push(x);x={type:"san",value:""}}}else if(" "===d||" "===d||"\r"===d||"{"===d||"("===d||")"===d){if(x.value){if("$"===x.value[0])x.type="nag";else if("*"===x.value||"1-0"===x.value||"0-1"===x.value||"1/2-1/2"===x.value||"\xbd-\xbd"===x.value){if(p||f+1-1&&extractCommands(x);l.push(x);x={type:u="san",value:""}}}}}else if(l.length){if("tags"===u){u="san";b=!1}else if("tagValueStart"!==u&&isSplitGame(a,r,s,p||"comment"===u)){"comment"===u&&l.push(x);if("tagValue"!==l[l.length-1].type){m.push(l);l=[];o.recordErrorInfo&&(l.push=m._trackTokenInfo)}u="tags";b=!0;p=0}}}}return x.value&&l.push(x),(l.length||!m.length)&&m.push(l),m}}();function Chess(eo,ei){var es,ef,ec=0,ed=!0,eu=[],el=x,ex=[],ep=l,em=0,eb=1,eh=1,e_=[],ev=[e_],eg=0;e_.id=eg;var ey={},ek=[],eA=!1,eS=!1,eC=makeMoveChess,moveToSan=function(e,n){var t,o,a,r,i,s,f="";if(e&J.KQSIDE_CASTLE)f=e&J.KSIDE_CASTLE?"O-O":"O-O-O";else if(e&J.DROP){a=e>>O&B;(t=e>>I)&&(f+=Y[t]);f+="@"+algebraic(a)}else{a=e>>O&B;r=ef[o=e>>M&B];if(r&m){e&J.ANY_CAPTURE&&(f+=String.fromCharCode(file(o)+97)+"x");f+=algebraic(a);e&J.PROMOTION&&(f+="="+Y[t=e>>I])}else{f+=V[r&A];u>1&&(f+=getDisambiguator(r,o,a));e&J.ANY_CAPTURE&&(f+="x");f+=algebraic(a)}}if(!n){if(e&J.KQSIDE_CASTLE){o=e>>M&B;a=e>>O&B}else e&J.DROP_OR_PROMOTE&&(r=Z[t]+el);if(inCheckAfterMove(r,o,a,e)){eC(e,o,a,t);i=c;c=d;s=u;ec&&isVariantWin()||generateMoves()===c?f+="#":f+="+";d=c;c=i;u=s;reverseMove(e_.pop())}}return f};function hashPosition(){var e,t,o,a=el===x?[0xf8d626aa,0xaf278509]:[0,0];for(o=0;o<120;++o){136&o&&(o+=8);(e=ef[o])&&hashNum(a,n.zobristPiece[64*n.zobristPieceValueNumbers[e&A]+8*(7-rank(o))+file(o)])}if(eS){for(t=1;t<3;++t)if(ex[t]){if((ex[t]&ex[t]-1)!=0){hashNum(a,n.zobristCastle[t-1]);hashNum(a,n.zobristCastle[t+1])}else ex[t]>1<7?x:p;!(136&e);){t=ef[e];if(t&a){if(t&_){if(o)return;o=e%8+(a===x?65:97)}else if(t&g)return o}e+=n}}function clear(e,n,t){ef=[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0];el=x;eu[x]=l;eu[p]=l;ex[x]=0;ex[p]=0;es._hand[x]=0;es._hand[p]=0;ek[x]=0;ek[p]=0;ep=l;em=0;eb=1;if(!n){ev=[e_=[]];eg=0;e_.id=eg;ey={Event:"?",Site:"?",Date:"????.??.??",Round:"?",White:"?",Black:"?",Result:"*"};e?setHeader(["Variant",e]):setVariant(!1,t);t||updateSetup(generateFen())}}function reset(){clear(0,!1,!0);e_.hash=[0x463b9618,0x1691fc9c];ef=[34,10,18,66,130,18,10,34,0,0,0,0,0,0,0,0,6,6,6,6,6,6,6,6,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,5,5,5,5,5,5,5,5,0,0,0,0,0,0,0,0,33,9,17,65,129,17,9,33,0,0,0,0,0,0,0,0];eh=1;eu[x]=116;eu[p]=4;ex[x]=48;ex[p]=48}function load(e,n,t,o){var a,f,c,d,u,b,h,v,k,A,C,T,E=0;if(o){T=(a=e.split(" "))[3];C=a[2]}else{T=(a=e.trim().split(/\s+/))[3]||"-";C=a[2]||"-"}void 0===n?(31&C.charCodeAt(0))<9&&setVariant(r.Chess960,!0):setVariant(n,!0);f=a[0];if(!o&&!(f=fixFenPieces(f,ec)))return!1;d=f.length;clear(i[ec],t,!0);if(eA){if(ec===r.Bughouse&&!es.isDependent){b=e.split(" | ");if(!es.siblingGame.load(1===b.length?e:b[1],n,t,o))return reset(),!1}for(u=0;u111){for(++u;u>>0}break}E+=8}else{ef[E]=F[h];if("~"===f[u+1]){++u;ef[E]|=S}ef[E]&g&&(eu[ef[E]&y]=E);++E}}else E+=1*h}}else for(u=0;u=0;--u){75===(c=C.charCodeAt(u))?c=disambiguate960Rook(119,-1):81===c?c=disambiguate960Rook(112,1):107===c?c=disambiguate960Rook(7,-1):113===c&&(c=disambiguate960Rook(0,1));v=c<97?x:p;A=en[String.fromCharCode(c)];if(o||ef[A]===(_|v)){c>=97?eu[v]>=1&&eu[v]<=6&&(ex[v]|=1<=113&&eu[v]<=118&&(ex[v]|=1<1||k[x][1]>1)&&(ex[x]=0);(k[p][0]>1||k[p][1]>1)&&(ex[p]=0)}else{if(!o)for(u=C.length-1;u>=0;--u){v=97>C.charCodeAt(u)?x:p;(ef[en[C[u]]]!==(_|v)||eu[v]!==(v===x?116:4))&&(C=C.substr(0,u)+C.substr(u+1))}for(u=C.length-1;u>=0;--u)switch(C[u]){case"K":ex[x]|=J.KSIDE_CASTLE;break;case"Q":ex[x]|=J.QSIDE_CASTLE;break;case"k":ex[p]|=J.KSIDE_CASTLE;break;case"q":ex[p]|=J.QSIDE_CASTLE}}}!o&&(2!==T.length||el===x&&"6"!==T[1]||el===p&&"3"!==T[1]||ef[T.charCodeAt(0)-97+(8-("3"===T[1]?4:5))*16]!==(m|swapColor(el))||ef[s[T]])&&(T="-");ep="-"===T?l:s[T];em=1*a[4]||0;eb=1*a[5]||1;if(ec===r["3-check"]){a[6]&&"+3+3"!==a[6]&&(b=a[6].match(/^\+([0-3])\+([0-3])$/));b=b||[0,0,0];ek[x]=1*b[1];ek[p]=1*b[2]}if(!t){eh=eb;updateSetup(generateFen())}return!0}function generateStandardFen(){var e,n,t=0,o="",a="";for(e=0;e<120;++e){if(136&e){t&&(o+=t);o+="/";t=0;e+=8}n=ef[e];if(n){if(t){o+=t;t=0}o+=H[n&A]}else++t}return t&&(o+=t),ex[x]&J.KSIDE_CASTLE&&(a+="K"),ex[x]&J.QSIDE_CASTLE&&(a+="Q"),ex[p]&J.KSIDE_CASTLE&&(a+="k"),ex[p]&J.QSIDE_CASTLE&&(a+="q"),o+=" "+(el===x?"w":"b")+" "+(a||"-")+" "+(ep===l?"-":algebraic(ep))+" "+em+" "+eb}function generateVariantFen(){var e,n,t,o=0,a="",i="";for(e=0;e<120;++e){if(136&e){o&&(a+=o);a+="/";o=0;e+=8}t=ef[e];if(t){if(o){a+=o;o=0}a+=H[t&A];eA&&t&S&&(a+="~")}else++o}o&&(a+=o);eA&&(a+="/"+handToString(es._hand[x],!0)+handToString(es._hand[p]));if(eS){n=ex[p];e=0;for(;n;){1&n&&(i=String.fromCharCode(e+97)+i);n>>=1;++e}n=ex[x];e=0;for(;n;){1&n&&(i=String.fromCharCode(e+65)+i);n>>=1;++e}}else{ex[x]&J.KSIDE_CASTLE&&(i+="K");ex[x]&J.QSIDE_CASTLE&&(i+="Q");ex[p]&J.KSIDE_CASTLE&&(i+="k");ex[p]&J.QSIDE_CASTLE&&(i+="q")}return a+=" "+(el===x?"w":"b")+" "+(i||"-")+" "+(ep===l?"-":algebraic(ep))+" "+em+" "+eb,ec===r["3-check"]?a+=" +"+ek[x]+"+"+ek[p]:ec!==r.Bughouse||es.isDependent||(a+=" | "+es.siblingGame.fen()),a}function generateFen(){return ec?generateVariantFen():generateStandardFen()}function setHeader(e){var n,t,o;for(n=0;n-1?"Date"===t?ey[t]="????.??.??":ey[t]="?":delete ey[t]}}return ey}function updateSetup(e){if(!(e_.length>0)&&!eg){if(e!==N){ey.SetUp="1";ey.FEN=e;e_.hash=null}else{delete ey.SetUp;delete ey.FEN;e_.hash=[0x463b9618,0x1691fc9c]}}}function get(e){var n=ef[s[e]];return n?{type:H[n&k|p],color:n&y,promoted:(n&S)!=0}:null}function chooseKingThreats(e,n){return eS&&ex[e]?Q:!(ex[e]&J.KSIDE_CASTLE)||ef[n+1]||ef[n+2]?!(ex[e]&J.QSIDE_CASTLE)||ef[n-1]||ef[n-2]||ef[n-3]?z:(a=J.QSIDE_CASTLE,j):!(ex[e]&J.QSIDE_CASTLE)||ef[n-1]||ef[n-2]||ef[n-3]?(a=J.KSIDE_CASTLE,W):(a=J.KQSIDE_CASTLE,q)}function calculateLegalMoveInfo(n,r){var i,s,f,c,d,u,x,p,b,h,_,v,g,y=el,A=ef;e=[];t=0;o=0;a=0;A[8]=A[9]=A[10]=A[11]=A[12]=A[13]=A[14]=A[15]=A[24]=A[25]=A[26]=A[27]=A[28]=A[29]=A[30]=A[31]=A[40]=A[41]=A[42]=A[43]=A[44]=A[45]=A[46]=A[47]=A[56]=A[57]=A[58]=A[59]=A[60]=A[61]=A[62]=A[63]=A[72]=A[73]=A[74]=A[75]=A[76]=A[77]=A[78]=A[79]=A[88]=A[89]=A[90]=A[91]=A[92]=A[93]=A[94]=A[95]=A[104]=A[105]=A[106]=A[107]=A[108]=A[109]=A[110]=A[111]=A[120]=A[121]=A[122]=A[123]=A[124]=A[125]=A[126]=A[127]=0;if(r===l){e=getPieces(ef,y|n);return}v=chooseKingThreats(y,r);for(i=0;i<120;++i){136&i&&(i+=8);c=ef[i];if(c){if(c&y){(!n||(0|c)&n)&&e.push(i);continue}g=v[i-r+119];if((g&c)!=0){if(c&m){b=D[c];for(s=1;s<3;++s){x=i+b[s];if(!(136&x)){A[x+8]|=T;if(x===r){++t;A[i+8]|=E}}}}else{p=(b=D[c&k]).length;_=c&C;n:for(s=0;sx)||!(h<0)||!(r-x>16))&&(!(r0)||!(x-r>16)))for(;(136&(x+=h))==0;){A[x+8]|=T;d=ef[x];if(d){if(d&y){if(x===r){for(f=x-h;f!==i;f-=h)A[f+8]|=E;A[i+8]|=E;++t;_&&(136&(x+=h))==0&&(A[x+8]|=T)}else if(_&&256&g){u=x;for(;(u+=h)!==r;)if(136&u||ef[u])continue n;A[x+8]|=w+(Math.abs(h)<1&&(e=[r])}function validateEnPassant(e,n){var o,a,r,i=n+16*(el===x?1:-1);return(1!==t||(ef[n+8]&E)!=0||(ef[i+8]&E)!=0)&&(o=ef[e],ef[n]=o,ef[e]=0,a=ef[i],ef[i]=0,r=inCheck(),ef[e]=o,ef[n]=0,ef[i]=a,!r)}function addCastlingMoves(e){var n,t,o;if(eS){if(ex[e]){t=(n=eu[e])%8;for(o=0;o<8;++o)if(ex[e]&1<t?J.KSIDE_CASTLE:J.QSIDE_CASTLE)+(n<>=26);for(s=0;s<5;++s)if((!n||(0|n)==1<>P==16){x=r+p[0];if(0===ef[x]){addPawnMove(ef,r,x,0);ee[y]!==rank(r)||ef[x+=p[0]]||addPawnMove(ef,r,x,J.BIG_PAWN)}}for(i=1;i<3;++i)!(136&(x=r+(h=p[i])))&&(!o||!(ef[r+8]&w)||ef[r+8]>>P===Math.abs(h))&&(ef[x]&A?addPawnMove(ef,r,x,J.CAPTURE):x===ep&&validateEnPassant(r,x)&&(f[d++]=J.EP_CAPTURE|r<>P,-h]}else p=D[l&k];g=r<0)return!0;break}return!0}if(c!==n&&ef[c]||!d)break;c+=f}}}if(!b){s=G[n-a+119];if(s&C){f=K[n-a+119];if(f!==K[t-a+119]){c=a-f;for(;(136&c)==0;){if(c!==n){u=ef[c];if(u){if(u&el&&s&u&&u&C)return!0;break}}c-=f}}}if(o&J.EP_CAPTURE){s=G[(p=t+16*(el===x?1:-1))-a+119];if(s&C){f=K[p-a+119];c=a-f;for(;(136&c)==0;){if(c!==n&&c!==p){if(c===t)break;u=ef[c];if(u){if(u&el&&s&u&&u&C)return!0;break}}c-=f}}}}return!1}function attacked(e,n){var t,o,a,r,i=D[b],s=b|e;for(t=0;t<8;++t){a=n+i[t];if((136&a)==0){o=ef[a];if((o&s)===s)return!0}}i=D[g];for(t=0;t<8;++t){a=n+(r=i[t]);for(;(136&a)==0;){o=ef[a];if(o){if(o&e&&G[n-a+119]&o&&(!(o&m)||(e===x?n-a<0:n-a>0)))return!0;break}a+=r}}return!1}function kingAttacked(e){return eu[e]!==l&&attacked(swapColor(e),eu[e])}function inCheck(){return kingAttacked(el)}function checkIsPotentiallyBlockable(){var e,n,t,o=16384;return es._hand[el]+=o,e=c,c=d,n=u,t=generateMoves()!==c,d=c,c=e,u=n,es._hand[el]-=o,t}function inCheckmate(){return inCheck()&&(f[0]=0)===generateMoves()&&!f[0]&&(ec!==r.Bughouse||!checkIsPotentiallyBlockable())}function inStalemate(){var e=!inCheck()&&(f[0]=0)===generateMoves()&&!f[0];return e&&ec===r.Bughouse&&!es.isDependent&&(e=es.siblingGame.inStalemate()),e&&eu[el]!==l}function insufficientMaterial(e){var n,t,o=0,a=0,r=0;for(t=0;t<120;++t){136&t&&(t+=8);n=ef[t];if(n){if(e&&(n&e)==0)continue;if(100&n)return!1;if(n&b){if(a||o++)return!1}else if(n&h){if(o)return!1;++a;(rank(t)+t)%2&&++r;if(r&&a!==r)return!1}}}return eu[x]!==l&&eu[p]!==l}function inThreefoldRepetition(){if(em<8)return!1;for(var e,n=getCurrentHash(),t=!1,o=em,a=!1,r=e_,i=r.length-1;;){i-=2;if(i<0){if(r.id){i=r.atMoveNode+i+2;r=ev[r.parentId];continue}if(-2===i)return!1;e=r.hash;a=!0}else{e=r[i].hash;r[i].halfMoves>o||o<2?a=!0:o=r[i].halfMoves}if(e[0]===n[0]&&e[1]===n[1]){if(t)return!0;t=!0}if(a)return!1}}function modifyHand(e){var t,o,a,i,s,f,c,d,u,l,p=e.move;if(ec===r.Crazyhouse||p&J.DROP){o=es._hand;f=e.hash;l=e.color}else{o=es.siblingGame._hand;e.handSibling=!0;if(ed){c=es.siblingGame._history();if(c.length)f=c[c.length-1].hash;else{c.hash||(c.hash=es.siblingGame._hashPosition());f=c.hash}}l=swapColor(e.color)}if(e.captured){a=e.captured&S?m:e.captured&k;switch(a&k){case m:d=0;break;case b:d=1;break;case h:d=2;break;case _:d=3;break;default:d=4}t=1<>U[d]&$[d];u=n.zobristPiece[s+63*d+(l===x?0:315)]}}else{t=-1<>I];if(ed){s=o[l]>>U[i]&$[i];u=n.zobristPiece[s-1+63*i+(l===x?0:315)]}}o[l]+=t;e.handChange=t;ed&&hashNum(f,[31*u[0]>>>0,17*u[1]>>>0])}function makeMoveChess(e,t,o,a){var r,i,s,f,c,d,u,b,h=el,v=swapColor(h),y={move:e,epSquare:ep,halfMoves:em,castlingW:ex[x],castlingB:ex[p],color:h},k=h===x;if(ed){f=getCurrentHash();y.hash=f;hashNum(f,n.zobristTurn);ep!==l&&hashEP(ef,f,ep+(k?16:-16),m|h)}if((e&J.KQSIDE_CASTLE)==0){if(eA&&e&J.DROP){ef[o]=Z[a]|h;ed&&hashNum(f,n.zobristPiece[64*n.zobristPieceValueNumbers[ef[o]]+8*(7-rank(o))+file(o)]);modifyHand(y);u=0}else{u=ef[t];b=ef[o];if(b){y.captured=b;ed&&hashNum(f,n.zobristPiece[64*n.zobristPieceValueNumbers[ef[o]&A]+8*(7-rank(o))+file(o)]);if(b&_&&ex[v]){if(eS){if(rank(o)===(k?0:7)){s=1<1<1<1<>O&B,f=i>>M&B;el=a;ex[p]=e.castlingB;ex[x]=e.castlingW;ep=e.epSquare;em=e.halfMoves;if(ec){if(eS&&i&J.KQSIDE_CASTLE){if(i&J.KSIDE_CASTLE){if(a===x){t=118;n=117}else{t=6;n=5}}else if(a===x){t=114;n=115}else{t=2;n=3}ef[t]=0;ef[n]=0;ef[f]=a|g;ef[s]=a|_;eu[a]=f;return}e.handChange&&(ec!==r.Crazyhouse&&e.handSibling?es.siblingGame._hand[swapColor(a)]-=e.handChange:es._hand[a]-=e.handChange);if(i&J.DROP){ef[s]=0;return}e.checked&&--ek[a]}if(i&J.PROMOTION){ef[f]=m|a;i&J.CAPTURE?ef[s]=e.captured:ef[s]=0}else{ef[f]=ef[s];if(i&J.KQSIDE_CASTLE){ef[s]=0;if(i&J.KSIDE_CASTLE){n=s+1;t=s-1}else{n=s-2;t=s+1}ef[n]=a|_;ef[t]=0;eu[a]=f}else{s===eu[a]&&(eu[a]=f);if(i&J.CAPTURE)ef[s]=e.captured;else{ef[s]=0;i&J.EP_CAPTURE&&(ef[s-(a===x?-16:16)]=m|o)}}}}function getDisambiguator(e,n,t){var o,a,r,i,s,c,u,l;if(d<2)return"";e&=k;for(l=0;l>O;if(t===u){i=o>>M&B;if(i!==n){a=ef[i];if(a&e){r=!0;if(rank(n)===rank(i)){if(s)return algebraic(n);c=!0}if(file(n)===file(i)){if(c)return algebraic(n);s=!0}}}}}return r?s?String(8-rank(n)):String.fromCharCode(file(n)+97):""}function beautifyMove(e,n,t){var o,a,r=e>>O&B,i={color:el,to:algebraic(r),flags:e&B};if(eA&&(e&J.DROP)!=0){a=e>>I;i.drop=a;i.piece=Z[a]+el}else{o=e>>M&B;i.from=algebraic(o);i.piece=ef[o];if(e&J.PROMOTION){a=e>>I;i.promotion=Z[a]+el}e&J.CAPTURE?i.captured=ef[r]:e&J.EP_CAPTURE&&(i.captured=m|swapColor(el))}return n?i.san=n:i.san=moveToSan(e,t),i}function isVariantWin(){return ec===r["3-check"]?3===ek[swapColor(el)]:ec===r["King of the Hill"]?kingOfTheHillWin(eu[swapColor(el)]):void 0}function isBughouseWin(){if(ec===r.Bughouse)return es.siblingGame.inCheckmate()}function isBughouseDraw(){if(ec===r.Bughouse)return es.siblingGame.in50MoveRule()||es.siblingGame.inThreefoldRepetition()}function createVariation(){var e=[],n=generateFen(),t=e_.length-1,o=e_[t];if(!o)return!1;e.parentId=eg;e.id=ev.length;e_.curFen=n;o.lines||(o.lines=[]);o.lines.push(e.id);if(o.move)reverseMove(o);else{ep=o.epSquare;--em;el=swapColor(el)}return el===p&&--eb,e.atMoveNode=t,t?e.hash=e_[t-1].hash:e.hash=e_.hash,eg=e.id,ev.push(e),e_=e,!0}function selectLine(e){var n=generateFen();e_.curFen=n;e_=ev[e];eg=e;load(e_.curFen,ec,!0,!0)}return es={WHITE:x,BLACK:p,PAWN:m,KNIGHT:b,BISHOP:h,ROOK:_,QUEEN:v,KING:g,FLAGS:J,load:load,reset:reset,moves:function(e){var n,t,o,a=[],r=moveToSan;if(e){e.verbose&&(r=beautifyMove);e.type&&(t=e.type|e.type<<24);o=e.noDrop}generateMoves(t,o);for(n=0;n=100},inDraw:function(){return em>=100||inStalemate()||insufficientMaterial()||inThreefoldRepetition()||!!isBughouseDraw()},insufficientMaterial:insufficientMaterial,inThreefoldRepetition:inThreefoldRepetition,isVariantWin:isVariantWin,gameOver:function(){return es.inDraw()||inCheckmate()||!!isVariantWin()||!!isBughouseWin()},isPositionValid:function(e){var n,t,o,a=0;e=e||{};if(!1!==e.pawns){n=0;for(;n<=119;){o=ef[n];if(o&m)return!1;8==++n&&(n=112)}}if(!1!==e.kings){for(n=0;n<=119;++n){136&n&&(n+=8);o=ef[n];if(o&g){if(++a>2||t&&t&o)return!1;t=o&y}}if(2!==a)return!1}return!(!1!==e.check&&!(!1===e.kings&&eu[swapColor(el)]===l)&&kingAttacked(swapColor(el)))},validateFen:validateFen,fen:generateFen,pgn:function(e){return(e=e||{}).useResultHeader||eg||(isVariantWin()||inCheckmate()?ey.Result=el===p?"1-0":"0-1":es.inStalemate()?ey.Result="1/2-1/2":isBughouseWin()&&(ey.Result=es.siblingGame.turn()===x?"1-0":"0-1")),ea(e,ey,ev,eh,ec,es)},loadPgn:function(e,n,t){var o,a,r,i,s,f,c,d,u={},l=0;if("number"!=typeof n){t=t||n;n=0}t=t||{};if("string"==typeof e){t.singleGame&&(e=e.replace(/(?:\r?\n\s*){2,}/g,"\n"));e=es.tokenizePgn(e,t)}t.recordErrorInfo&&(d=function(e,o){var a={reason:e,token:o,lineStart:r._lineStart,colStart:r._colStart,lineEnd:r._lineEnd,colEnd:r._colEnd,pgnIndex:n};return t.errors||(t.errors=[]),t.errors.push(a),!1});n<0&&(n=e.length+n);i=e[n];if(!i)return!1;reset();a=i.length;for(o=0;o"!==r.value||t.rejectNullMoves||!s.move("--"))){d&&d("Invalid SAN move",r.value);if(t.commentErrors)f.length?f[f.length-1].comment=((f[f.length-1].comment||"")+" "+r.value).trim():f.initComment=((f.initComment||"")+" "+r.value).trim();else if(t.skipBadLines&&(0!==eg||e_.length&&t.allowBadMainLine))l=1;else{reset();return!1}}}else if("result"===r.type&&"*"===ey.Result)setHeader(["Result",r.value]);else if("a"===r.type&&0===l&&f[f.length-1])f[f.length-1].annotation=r.value;else if(("nag"===r.type||"aa"===r.type)&&0===l&&f[f.length-1]){f[f.length-1].additionalAnnotation||(f[f.length-1].additionalAnnotation=[]);-1===f[f.length-1].additionalAnnotation.indexOf(r.value)&&f[f.length-1].additionalAnnotation.push(r.value)}else if("comment"===r.type&&0===l){if(f.length){r.value&&(f[f.length-1].comment=r.value);if(r.commands){f[f.length-1].commands=r.commands;r.commands.clk?f[f.length-1].time=timestampToTime(r.commands.clk):r.commands.emt&&(r.commands.timestamp=String(timestampToTime(r.commands.emt)))}}else{f.initComment=String(r.value);r.commands&&(f.commands=r.commands)}}else if("variationStart"===r.type){if(l>0)++l;else if(!createVariation()){reset();return!!d&&d("Invalid variation start","(")}f=s._history()}else if("variationEnd"===r.type){l>0&&--l;if(0===l){selectLine(f.parentId);f=s._history()}}else if("number"===r.type){s=/b/i.test(r.value.slice(-1))?es.siblingGame:es;if(!s)return!!d&&d("Invalid Bughouse move number",r.value);f=s._history()}else"cont"===r.type&&eg&&!f.length&&s.move(s._lines()[f.parentId][f.atMoveNode].san)}return!0},header:function(e){return Array.isArray(e)?setHeader(e):("object"==typeof e&&Object.keys(e).forEach(function(n){setHeader([n,e[n]])}),ey)},turn:function(e){return(e===x||e===p)&&(el=e),el},move:function playMove(e){var n,t,o,a,r,i,c,u,l,p,b,h,_;if("string"==typeof e){a=e.length-1;switch(e[a]){case"+":case"#":e=e.substr(0,a)}l=L.indexOf(e[0])>6?R[e[0]]:"O"===e[0]?g:m;if(eA){if(-1===e.indexOf("@"))p=!0;else{p=!1;l<<=24}}generateMoves(l,p);for(a=0;a>M&B;u=t>>O&B;o=t>>I}else{if("--"===e)return makeNullMove();if(e=es.fixMove(e))try{return playMove(e)}catch(e){}return null}}else{if(e.drop){switch(e.drop){case"p":o=0;break;case"n":o=1;break;case"b":o=2;break;case"r":o=3;break;case"q":o=4;break;default:return null}l=1<<26+o}else{if(e.promotion)switch(e.promotion){case"q":o=4;break;case"n":o=1;break;case"r":o=3;break;case"b":o=2;break;default:return null}c=s[e.from];p=!0;l=ef[c]&k}n=((o?o<>M|c;generateMoves(l,p);for(a=0;a>M===n){t=f[a];break}if(!t)return(e=es.fixMove(e))?playMove(e):null}return _=t&J.DROP_OR_PROMOTE?Z[o]+el:ef[c],r=beautifyMove(t,i,!0),b=inCheckAfterMove(_,c,u,t),eC(t,c,u,o),b&&(ec&&isVariantWin()||0===generateMoves()?r.san+="#":r.san+="+"),(h=e_[e_.length-1]).san=r.san,r.piece&S&&(h.promoted=!0),el===x&&++eb,r},undo:function(e){var n=e_.pop();return n?(el===x&&--eb,n.move)?(reverseMove(n),!!e||beautifyMove(n.move,n.san)):(ep=n.epSquare,--em,el=swapColor(el),!!e||{san:"--",color:n.color}):null},clear:function(e){clear(e)},put:function(e,n,t){var o,a=s[n],r=!1,i=ef[a],f=i&y,c=e.color;if(isNaN(a)||!e.type||!c||-1===L.indexOf(e.type))return!1;ef[a]=R[e.type]|c|(e.promoted?S:0);ef[a]&g&&(eu[c]=a);if(i&&ef[eu[f]]&&ef[eu[f]]!==(g|f)){for(o=0;o<120;++o){136&o&&(o+=8);if(ef[o]===(g|f)){eu[f]=o;r=!0}}r||(eu[f]=l)}return t||load(generateFen(),ec,!1,!1),!0},get:get,remove:function(e,n){var t,o=ef[s[e]],a=get(e),r=o&y;ef[s[e]]=0;if(o&g){eu[r]=l;ex[r]=0;for(t=0;t<120;++t){136&t&&(t+=8);if(ef[t]===(g|r)){eu[o.color]=t;break}}}return n||load(generateFen(),ec,!0,!1),a},history:function(e,n){for(var t,o=[],a=e_,r=a.length;;){if(-1==--r){if(a.id&&!n){r=a.atMoveNode;a=ev[a.parentId];continue}break}if(e){(t=beautifyMove(a[r].move,a[r].san)).color=a[r].color;!r&&a.initComment&&(t.firstComment=a.initComment);void 0!==a[r].comment&&(t.comment=a[r].comment);void 0!==a[r].time&&(t.time=a[r].time);void 0!==a[r].annotation&&(t.annotation=a[r].annotation);void 0!==a[r].additionalAnnotation&&(t.additionalAnnotation=a[r].additionalAnnotation);void 0!==a[r].commands&&(t.commands=a[r].commands);void 0!==a[r].captured&&(t.captured=a[r].captured);void 0!==a[r].promoted&&(t.promoted=a[r].promoted);void 0!==a[r].lines&&(t.lines=a[r].lines);void 0!==a[r].bughouseOrder&&(t.bughouseOrder=a[r].bughouseOrder);L.indexOf(a[r].san[0])>6?t.piece=R[a[r].san[0]]:"O"===a[r].san[0]?t.piece=g:t.piece=m;t.piece|=t.color;o.unshift(t)}else o.unshift(a[r].san)}return o},hashes:function(){for(var e=[],n=e_,t=n.length;;){if(-1==--t){if(n.id){t=n.atMoveNode;n=ev[n.parentId];continue}n.hash||getCurrentHash();e.unshift(n.hash);break}e.unshift(n[t].hash)}return e},moveCount:function(){return e_.length},startingMoveNumber:function(){return eh},completeFen:completeFen,createVariation:createVariation,selectLine:selectLine,hash:function(){var e=getCurrentHash();return ec!==r.Bughouse||es.isDependent?e:[e,es.siblingGame.hash()]},hashing:function(e){ed=e;ec!==r.Bughouse||es.isDependent||es.siblingGame.hashing(ed)},hand:function(){if(eA)return handToString(es._hand[x],!0)+handToString(es._hand[p])},checks:function(){if(ec===r["3-check"])return[ek[x],ek[p]]},threats:function(){var e,n,a,r,i,s,u,x=el,p=swapColor(x),m=[],b=[],h=[],_=[],v=[],g=ep;calculateLegalMoveInfo(0,eu[x]);if(t||o)for(e=0;e<120;++e){136&e&&(e+=8);ef[e+8]&E&&ef[e]?h.push(algebraic(e)):ef[e+8]&w&&m.push(algebraic(e))}el=p;ep=l;generateMoves();for(e=d;e--;){i=(n=f[e])>>O&B;s=n>>M&B;if(n&J.DROP_OR_PROMOTE){r=Z[u=n>>I]|p;if(n&J.PROMOTION&&u%3!=1)continue}else{r=ef[s];u=0}if(inCheckAfterMove(r,s,i,n)){eC(n,s,i,u);c=e;(ec&&isVariantWin()||generateMoves()===e)&&b.push((n&J.DROP?H[r].toLowerCase()+"@":algebraic(s))+algebraic(i));reverseMove(e_.pop());if(n&J.CAPTURE){a=0;for(e=d;e>c;)if((f[--e]>>O&B)===i){a=1;e=c;break}if(!a){_.push(algebraic(s)+algebraic(i));continue}}}n&J.CAPTURE&&1!==u&&(a=124&ef[i])&&(attacked(x,i)?a>(r=ef[s]&k)&&a-r!=8&&v.push(algebraic(s)+algebraic(i)):_.push(algebraic(s)+algebraic(i)))}return c=0,el=x,ep=g,{pins:m,checkers:h,mates:b,undefended:_,underdefended:v}},tokenizePgn:er,fixMove:function(e){var n,t,o;if("string"==typeof e){if(/0|[?!+#]$|[18][QNRB]$|^P/i.test(e))return e.replace(/[?!+#]+$/,"").replace(/0/g,"O").replace(/([18])([QNRB])$/i,"$1=$2").replace(/^P+/i,"");t=e.indexOf("=")>0?-4:-2;n=s[e.substr(t,2)];if("number"==typeof n){if(ef[n]&swapColor(el)||/^[a-h]x?[a-h][36]$/.test(e)){if(-1===e.indexOf("x"))return e.slice(0,t)+"x"+e.substr(t)}else if(e.indexOf("x")>-1)return e.replace(/x/g,"");if(o=e.match(/^([KQNRB]?)([a-h][1-8]?|[1-8])x?([a-h][1-8])=?(.?)$/)){if(ef[s[o[2]]])return{from:o[2],to:o[3],promotion:o[4].toLowerCase()};if(/^\d$/.test(o[2])){e=0;generateMoves(R[o[1]],!0);for(t=0;t>O===n&&rank(f[t]>>M&B)===8-o[2]){if(e)return;e=f[t]}if(e)return moveToSan(e,!0)}return o[1]+o[3]+o[4]}}}else if(ef[s[e.from]]===(g|el)&&e.to&&e.from[1]===e.to[1]){if(e.frome.to)return"O-O-O"}},_hand:[],_history:function(e){return e&&(eg=(e_=e).id),e_},_lines:function(){return ev},_hashPosition:hashPosition,_board:function(){return ef}},eo&&load(eo,ei)||reset(),es}return Chess.variants=i,Chess}(),ENGINE_MANAGER=function(e){var t=["bench","d","eval","flip","isready","ponderhit","stop","uci","ucinewgame"],o=[{cmd:"position",args:["fen","startpos","moves","continuation"]},{cmd:"go",args:["binc","btime","confidence","depth","infinite","mate","mindepth","mintime","maxdepth","maxtime","movestogo","movetime","ponder","searchmoves","shallow","winc","wtime"]}],a=["moves","searchmoves"],r=["ponder","infinite","startpos"],i={depth:1,seldepth:1,time:1,nodes:1,multipv:1,cp:1,mate:1,currmovenumber:1,hashfull:1,nps:1,tbhits:1,sbhits:1,cpuload:1,bmc:1,score:2,lowerbound:2,upperbound:2,bestmove:3,ponder:3,baseTurn:3,bestmoveSan:3,ponderSan:3,pv:4,pvSan:4,string:4,refutation:4,currline:4},s=/(?:Total|Final) Evaluation[\s\S]+\n$/i;function fakeWorker(e){var n,t=[],o=[],a={},r={isFakeWorker:!0},i=e.replace(/^[^#]*#/,"");function runAsync(e){setTimeout(e,1)}function flushMessages(e,t){var o;if(!n){if(e.onmessage){o=t.concat();t.length=0;o.forEach(function(n){try{e.onmessage({data:n})}catch(e){console.error(e)}})}else setTimeout(flushMessages,5,e,t)}}return function asyncImport(e,t){var o=document.createElement("script");o.setAttribute("src",e);o.onload=function onload(){o.remove();t(o._exports)};o.onerror=function onError(e){n=!0;o.remove();a.onerror(e)};document.head.appendChild(o)}(e,function(t){var o=e.replace(/[?#].*/,""),s=o.replace(/\/[^\/]+$/,"/"),f={locateFile:function(e){return e.indexOf(".wasm")>-1&&i?i:e.indexOf(".worker.js")>-1?o+"#"+i+",worker":s+e}};t(f).then(function(){t=null;function onBeforeunload(){f=null;n=!0}window.addEventListener("beforeunload",onBeforeunload,{once:!0});r.onmessage=function onmessage(e){var t=e.data;(f.onSpecialMessage||f.onCustomMessage)(t);if("quit"===t){f=null;n=!0;window.removeEventListener("beforeunload",onBeforeunload)}};f.addMessageListener(r.postMessage)}).catch(function(e){t=null;n=!0;a.onerror(e)})}),a.postMessage=function(e){t.push(e);runAsync(function(){flushMessages(r,t)})},r.postMessage=function(e){o.push(e);runAsync(function(){flushMessages(a,o)})},a.terminate=function(){},a}function requeue(e,n){var t=n.concat();n.length=0;t.forEach(function onEachCmd(n){if(n.cmd)"go"!==n.cmd.substr(0,2)&&e.send(n.cmd,n.cb,n.stream);else{clearTimeout(n.timer);e.getBestMove(n.args,n.cb,n.stream)}})}function createWebWorker(e,n,t){var o=e&&e.loader?e.loader+(e.engine?"#"+e.engine:""):"stockfish.js",a=n.useFakeWorker&&n.useFakeWorker[o.replace(/[?#].*$/,"")]?fakeWorker(o):new Worker(o),r={terminate:terminate,postMessage:postMessage};function postMessage(e){a.postMessage(e)}function terminate(){a.terminate()}return a.onmessage=function(e){"string"==typeof e.data&&r.onmessage(e.data)},a.onerror=function(e){var o,i=!0;t.availableEngines.shift();if(t.availableEngines.length){i=!1;try{e.preventDefault()}catch(e){}try{a.terminate()}catch(e){}(o=createWebWorker(t.availableEngines[0],n,t))._origWorker=r._origWorker||r;o.onmessage=function(e){o._origWorker.onmessage(e)};o._origWorker.postMessage=o.postMessage;o._origWorker.terminate=o.terminate;requeue(t,t._activeCommands());requeue(t,t._bestMoveQueue())}n.onError&&n.onError(e,i);i&&t.quit()},r}function getAvailableEngines(n){var t=[];if(n.engines){n.engines.multiThreaded&&e.supportsMultithreading()&&e.supportsSIMD()&&t.push(n.engines.multiThreaded);n.engines.multiThreadedNoSIMD&&e.supportsMultithreading()&&t.push(n.engines.multiThreadedNoSIMD);n.engines.singleThreaded&&t.push(n.engines.singleThreaded);n.engines.asm&&t.push({loader:n.engines.asm})}return(n.enginePath||n.pathToEngineWorker)&&t.push({loader:n.enginePath||n.pathToEngineWorker,engine:n.pathToWasmEngine}),(n.fallbackPath||n.pathToNonWasmEngine)&&t.push({loader:n.fallbackPath||n.pathToNonWasmEngine}),t}function createWorker(e,n){return n.availableEngines=getAvailableEngines(e),createWebWorker(n.availableEngines[0],e,n)}function parseSearchLine(e){for(var n,t,o=e.split(" "),a=o.length,r="info"===o[0]?1:0,s={mtype:o[0]};r=0?"fetch":"bestmove"===i||"info"===i?"go":"other";r=n.length;for(a=0;a-1){a=n.split("\n");for(r=0;r=0;--t)if(_[e][t].func===n){_[e][t].removed=!0;_[e].splice(t,1);return}}};l.emit=function(e,n){var t,o,a,r,i;if(_[e]){r=(a=_[e].slice(0)).length;for(t=0;t-1){if(!n[e]||!n[e].length)return;Array.isArray(n[e])&&(n[e]=n[e].join(" "))}i.push(e);-1===r.indexOf(e)&&i.push(n[e])}});l.send(i.join(" "),t,o)}});l.setoption=function(e,n){l.send("setoption name "+e+" value "+n)};l.setVariant=function(e){var n;if(e!==u){n=String(e).toLowerCase().replace(/ |-/g,"");if(e&&"chess"!==n){if("chess960"===n){l.setoption("UCI_Variant","chess");l.setoption("UCI_Chess960","true")}else{"threecheck"===n&&(n="3check");l.setoption("UCI_Variant",n);l.setoption("UCI_Chess960","false")}}else{n=void 0;l.setoption("UCI_Variant","chess");l.setoption("UCI_Chess960","false")}u=n}};l.loadBook=function(e,t){l.pathToBook=e;n.loadBook(e,function onload(e,n){if(e){console.error("Error loading opening book.");console.error(e);l.pathToBook=null;l.bookLoaded=!1}else{l.book=n;l.rawBook=n.json;l.bookLoaded=!0}t()})};l.getBookMove=function(n){var t=e.createGame(n),o=l.book.pick({fen:t.fen(),type:void 0!==n.bookPick?n.bookPick:"random",chess960:"Chess960"===t.header().Variant}),a=o&&t.move(o);if(a)return{moveSan:a.san,moveLan:o,move:{from:a.from,to:a.to,promotion:a.promotion||null},baseTurn:1===t.turn()?"b":"w",pv:[{moveSan:a.san,moveLan:o}],depth:null,score:null,mateIn:null,isBookMove:!0}};function getCEE(n,t){var o=n.loader,a=b[o]=b[o]||[],r=h[o]=h[o]||[];return n.maxEngines&&(t%=n.maxEngines),a[t]&&void 0!==a[t].ready||(a[t]=e({enginePath:o,pathToWasmEngine:n.engine,ceeMode:!0})),clearTimeout(r[t]),r[t]=setTimeout(function(){try{a[t].quit()}catch(e){}a[t]=null},n.killDelay||1e4),a[t]}function classifyStream(t,o,a,r,i,s){var f,c=[],d=[],u=o.minDepth||14,x=[],p=[];function getClassification(i,s,c){var d={cp:s[i].cp,mateIn:s[i].mateIn,pv:s[i].pv.slice(1)},u=getCEE(o,i),m={moveLan:s[i].pv[0]},b=o.book||l.rawBook;function streamCEEData(e){x[i]=!1;if(!f&&l.ready){e.mtype="classification";e.depth=c;e.multipv=i+1;t(e);p[i]&&getClassification(i,p[i].evals,p[i].depth)}}if(x[i]){p[i]={evals:s,depth:c};return}b&&(m.isBook=!!b[n.to64BitHex(e.createGame({fen:a,moves:m.moveLan,variant:r}).hash())]);x[i]=!0;p[i]=null;u.fetch({action:"analysis",variant:r,startFen:a,moves:[m],evals:[s,[d]],options:{WhiteElo:o.whiteElo,BlackElo:o.blackElo,ScoreWhiteToMove:!0}},function onDone(e){streamCEEData(e.positions[1])},function onError(e){e||(e={});e.err=!0;streamCEEData(e);u.quit()})}return function stream(e){var n;if("bestmove"===e.mtype)f=!0;else if(e.depth>=u){n=e.multipv-1;if("info"===e.mtype&&e.pv&&e.multipv>0&&(e.pv.length>1||1===e.mate)&&d[n]!==e.depth){c[n]=e;d[n]=e.depth;if(n<=1&&d[0]===d[1]){getClassification(0,c,e.depth);s||getClassification(1,c,e.depth)}else(i||d[0]===d[1])&&getClassification(n,c,e.depth)}}s&&e.multipv&&(1!==e.multipv||!t)||t(e)}}function bestMoveSearch(){var n,t,o,a,r,i=1,s=[],f=[],c=null,u=p[0].args,x=p[0].cb,m=p[0].stream,b=1,h=[],_=14,v=loadEngine._previousCP;p[0].started=!0;loadEngine._previousCP=null;function convertpv(e){var n=[],t=f[e]||createSanPv(s[e]);return s[e].forEach(function oneach(e,o){n.push({moveSan:t[o],moveLan:e})}),n}function getpv(e,n,t,o){var a;for(a=s.length-1;a>=0;a-=1)if(s[a][0]===e)return convertpv(a);return t?[{moveSan:n,moveLan:e},{moveSan:o,moveLan:t}]:n?[{moveSan:n,moveLan:e}]:[]}function normalize(e){var n=.03*Math.pow(32,e.depth/_);e.cp=v+(e.cp-v)*n}function convertScore(e){if(0===e.mate){e.mateIn=0;e.cp=-31800*b}else{e.mateIn=Number(e.mate*b)||null;if("number"!=typeof e.mateIn||isNaN(e.mateIn)||"number"==typeof e.cp){e.cp*=b;9===Math.abs(e.cp)&&(e.cp=0);u.normalize&&e.depth<=_&&"number"==typeof v&&1===e.multipv&&normalize(e)}else e.cp=31800*b*(e.mate/Math.abs(e.mate))}e.score=e.cp/100}function returnBestMove(e){var t=parseSearchLine(e);addBestMoveProps(t);i>_&&n<5e3&&n>-5e3&&(loadEngine._previousCP=n);t.pv=getpv(t.moveLan,t.moveSan);1===t.pv.length&&t.ponder&&(t.pv=getpv(t.moveLan,t.moveSan,t.ponder,t.ponderSan));if(h.length>1){h.splice(h.indexOf(t.moveLan),1);u.searchmoves=h;u.getNextBest=0;queueBestMoveSearch(u,function done(){x(t)},function streamer(e){if(m){e.multipv=2;m(e)}})}else if(x)try{x(t)}catch(e){console.error(e)}p.shift();clearTimeout(d);p.length>0&&bestMoveSearch()}function addBestMoveProps(r){var s;r.baseTurn=o;void 0===n&&(a.inCheckmate()?streamInfo("info depth 0 score mate 0"):a.inStalemate()&&streamInfo("info depth 0 score cp 0"));r.cp=n;r.score=n/100;r.mate=t;r.mateIn=c;r.depth=i;r.moveLan=r.bestmove;if(r.moveLan){r.move=e.uciToObj(r.moveLan)[0];s=a.move(r.move);if(s){r.moveSan=r.bestmoveSan=s.san;if(r.ponder){s=a.move(e.uciToObj(r.ponder)[0]);if(s){r.ponderSan=s.san;a.undo(!0)}}a.undo(!0)}}}function createSanPv(n){var t,o,r=n.length,i=[];for(t=0;t0;--t)a.undo(!0);return i}function streamInfo(e){var a=parseSearchLine(e);if(a.score){a.baseTurn=o;convertScore(a);!a.multipv&&a.depth&&(a.multipv=1);if(1===a.multipv||0===a.depth){n=a.cp;t=a.mate;c=a.mateIn}}a.pv&&m&&(a.pvSan=createSanPv(a.pv));if(a.pv&&!(a.lowerbound||a.upperbound)){s.push(a.pv);m&&f.push(a.pvSan)}a.depth>i?i=a.depth:"bestmove"===a.mtype&&addBestMoveProps(a);m&&!(0===a.mateIn&&a.pv)&&m(a);createTimeout()}function createTimeout(){if(u.timeout){clearTimeout(d);p[0].timer=d=setTimeout(function(){l.stop();if(x){x();x=void 0}},u.timeout)}}if(u.difficulty>=0&&u.difficulty<20){l.setoption("Skill Level",u.difficulty);u.maximumError>=0&&u.maximumError<=4999&&l.setoption("Skill Level Maximum Error",u.maximumError);u.errorProbability>=1&&u.errorProbability<=128&&l.setoption("Skill Level Probability",u.errorProbability)}else l.setoption("Skill Level",20);void 0!==u.contempt?l.setoption("Contempt",u.contempt):l.setoption("Contempt","0");u.multiPv>1?l.setoption("MultiPV",u.multiPv):l.setoption("MultiPV",1);if(!u.movetime&&(!u.wtime||!u.btime)&&!u.depth&&!u.infinite){u.btime=u.btime||72e3;u.wtime=u.wtime||72e3}if(!u.startpos&&u.fen||u.moves||u.variant){a=e.createGame({fen:u.fen?convertStandardVariantFen(u.fen):"rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",moves:u.moves,variant:u.variant,disableHashing:!0});if(a.turn()===a.WHITE)o="w";else{o="b";b=-1}}else{o="w";a=e.createGame({disableHashing:!0})}if(u.cee&&m){if(2>(Number(u.multiPv)||1)){r=!0;l.setoption("MultiPV",2)}m=classifyStream(m,u.cee,a.fen(),u.variant,1===a.moves().length,r)}l.setVariant(u.variant);l.position(u);l.go(u,returnBestMove,streamInfo);u.getNextBest&&x&&a.moves({verbose:!0}).forEach(function toLan(n){n=e.normalizeMoveObj(n);h.push(n.from+n.to+(n.promotion||""))});createTimeout()}function queueBestMoveSearch(e,n,t){p.push({args:e,cb:n,stream:t});1===p.length&&l.ready&&bestMoveSearch()}l.getBestMove=function(e,n,t){var o;(e=e||{}).fen=e.fen||e.baseFen;e.is960&&(e.variant="Chess960");if(l.bookLoaded&&e.useBook){o=l.getBookMove(e);if(o)return setTimeout(function(){o.mtype="bestmove";n(o)},0)}queueBestMoveSearch(e,n,t)};l.stopAll=function(n){var t,o=x.length,a=0;function ondiscard(){0==(a-=1)&&n()}p=[];for(t=0;t=0?handleError({msg:"CEE crashed with error code",code:e.ERROR_CODES.ERROR,log:t.match(/info string CEEError\s*(.*)/)[1],err:Error(t.match(/info string CEEError\s*(.*)/)[1])}):n.ceeDebug&&t.indexOf("not recognized")>=0&&handleError({msg:"CEE received unknown UCI option (engine.ceeDebug mode on)",option:t,code:e.ERROR_CODES.NONFATAL_ERROR,err:Error(t)})})}n.fetch=function(t,o,a){var r,i;r=(t=t||[]).action||"analysis";if(Array.isArray(t))i=t;else{i=t.uciCommands?t.uciCommands.map(function(e){return e}):[];if(t.startFen){t.options=t.options||{};void 0===t.options.ScoreWhiteToMove&&(t.options.ScoreWhiteToMove=!0);void 0===t.options.SerializeLikeCEAC&&(t.options.SerializeLikeCEAC=!0);e.CEE_LIB.addOptions(i,t.options);e.CEE_LIB.addVariant(i,t.variant);e.CEE_LIB.addPosition(i,t.startFen)}e.CEE_LIB.addVariations(i,t.evals&&t.evals[0]);e.CEE_LIB.addVariations(i,t.threats&&t.threats[0],"threat-variation");(t.moves||[]).forEach(function(n,o){var a=o+1;e.CEE_LIB.addPush(i,n);e.CEE_LIB.addClock(i,t.clocks&&t.clocks[o]);e.CEE_LIB.addVariations(i,t.evals&&t.evals[a]);e.CEE_LIB.addVariations(i,t.threats&&t.threats[a],"threat-variation")})}if(n.ready)analyze(i,r,o,a);else{n.once("quit",a);n.isready(function onReady(){n.off("quit",a);analyze(i,r,o,a)})}};n.fetch.setTimeout=function(e){r=e};e.ERROR_CODES={TIMEOUT:1,CRASH:2,ERROR:3,NONFATAL_ERROR:4}}return loadEngine},o=function(){var e,o=t(),a="rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1",r=252,i={4:"p",5:"P",6:"p",8:"n",9:"N",10:"n",16:"b",17:"B",18:"b",32:"r",33:"R",34:"r",64:"q",65:"Q",66:"q",128:"k",129:"K",130:"k"},s=512,f="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!?{~}(^)[_]@#$,./&-*++=",c="qnrbkp";function decodeTCN(e){var n,t,o,a,r=e.length,i=[];for(n=0;n63){a.promotion=c[Math.floor((o-64)/3)];o=t+(t<16?-8:8)+(o-1)%3-1}t>75?a.drop=c[t-79]:a.from=f[t%8]+(Math.floor(t/8)+1);a.to=f[o%8]+(Math.floor(o/8)+1);i.push(a)}return i}function encodeTCN(e){var n,t,o,a,r="";Array.isArray(e)||(e=[e]);t=e.length;for(n=0;n=0;--t){a=c[t];if(isSameMove(a,n)){r=!0;break}}if(r){if(a.drop)e.put({type:a.drop,color:d},a.to);else{i=e.remove(a.from,!0);if(a.flags===o.FLAGS.KSIDE_CASTLE){s=e.remove("Chess960"===f?a.to:"h"+a.from[1],!0);e.put(i,"g"+a.from[1],!0);e.put(s,"f"+a.from[1])}else if(a.flags===o.FLAGS.QSIDE_CASTLE){s=e.remove("Chess960"===f?a.to:"a"+a.from[1],!0);e.put(i,"c"+a.from[1],!0);e.put(s,"d"+a.from[1])}else{if(a.promotion){i.type=a.promotion;i.promoted=!0}s=e.get(a.to);e.put(i,a.to,"k"!==i.type&&"r"!==i.type&&(!s||s.color!==d||"r"!==s.type))}}return a}if(n.from){e.turn(d);n=e.fixMove(n);e.turn(3-d);if(n)return makePremove(e,{san:n,from:n.from})}}function getPieces(e,n){var t,o,a,c=n?{}:[],d=e._board();if(n)for(t=112;t>=0;++t){136&t&&(t-=24);(o=d[t])&&(c[a=f[7&t]+(8-(t>>4))]={type:i[o&r],color:3&o,promoted:(o&s)!=0,square:a})}else for(t=112;t>=0;++t){136&t&&(t-=24);(o=d[t])&&c.push({type:i[o&r],color:3&o,promoted:(o&s)!=0,rank:8-(t>>4),file:(7&t)+1})}return c}function predict(e,n){var t=Math.min(Math.max(.20773843*Math.atan(2.49085889*e/100-2.47841945*n/100)+.02262979*e/100-.02256839*n/100+.52239679,0),1),o=Math.min(Math.max(-.20720905*Math.atan(2.49626837*e/100-2.48220286*n/100)+-.02352551*e/100+.02172627*n/100+.49443923,0),1),a=Math.min(Math.max(Math.exp(.037043456*e/100+.178106427*n/100+-8.069742932)+.004823544*Math.exp(-1.364136591*Math.pow(e/100-n/100,2))+-.001625539,0),1),r=t+o+a;return{w:t/r,b:o/r,d:a/r}}function getPositionDetails(e,n){var t,o,a,r;(e=e||{}).disableHashing=!0;t=createGame(e);if(!t)return null;if(n){a=t.move(n);if(!a)return null;t.extended||normalizeMoveObj(a)}return(r=t.fen(),e.skipValidation||t.isPositionValid(e))?(o=r.split(" "),{fen:r,pieces:getPieces(t),sideToMove:t.turn(),castling:o[2],epSquare:"-"===o[3]?null:o[3],halfMoves:+o[4],moveNumber:+o[5],move:a,hand:t.hand(),checks:t.checks()}):null}function gameFingerprints(e){var t,o,r,i,s,f,c,d,u,l=createGame(e),x=[""],p=[];if(!l)return!1;u=(d=l.header()).Variant||"";f=l.hashes();t="function"==typeof l.origHistory?l.origHistory(!0):l.history(!0);s=f.length;o=[f[0][0],f[0][1]];p.push(n.to64BitHex(o)+u);f[0]=n.to64BitHex(f[0]);for(r=1;r>>0;o[1]=(o[1]^f[r][1]*(r+984))>>>0;f[r]=n.to64BitHex(f[r]);p.push(n.to64BitHex(o)+u);normalizeMoveObj(t[i=r-1]);c=(t[i].from?t[i].from:t[i].drop.toUpperCase()+"@")+t[i].to+(t[i].promotion||"");i&&(c=x[i]+" "+c);x.push(c)}return{startingFen:d.FEN||a,hashes:f,fingerprints:p,moves:x,variant:d.Variant}}function makeMoves(e,n,t,o){var a,r,i,s,f,c,d,u,l,x,p;t=t||{};"string"==typeof n&&(n=n.trim().split(" "));i=n.length;for(a=0;a)+$/.test(c.to||n[a]))f.move("--");else if(t.autoPromote){!0===t.autoPromote?c.promotion="q":c.promotion=t.autoPromote;if(!f.move(c)){if(t.skipBadLines)break;return!1}}else{if(t.skipBadLines)break;return!1}}u=(d=f._history())[d.length-1];o&&(l=parseInt(o[a],10));("number"!=typeof l||isNaN(l))&&(l=parseInt(n[a].time,10));if("number"==typeof l&&!isNaN(l)){u.time=l;l=void 0}n[a].firstComment&&(d.initComment=n[a].firstComment);n[a].comment&&(u.comment=n[a].comment);n[a].annotation&&(u.annotation=n[a].annotation);n[a].additionalAnnotation&&(u.additionalAnnotation=n[a].additionalAnnotation);n[a].commands&&(u.commands=n[a].commands);if(n[a].lines){s=n[a].lines.length;for(r=0;r=0;--n){if(1===a[n].color){t=r.white;o=r.black}else{t=r.black;o=r.white}o[a[n].type]&&--o[a[n].type];t.count+=i[a[n].type]}return r.imbalance=r.white.count-r.black.count,r};e.origHistory=e.history;e.history=function(n,t){var o,a,r,i=[],s=e._history(),f=s.length,c=e._lines();"boolean"==typeof n&&(n={verbose:n});n=n||{};t&&(n.noParentLines=t);n.toCurrent&&(f=e.ids().move+1);for(;;){if(-1==--f){if(s.id&&!n.noParentLines){f=s.atMoveNode;s=c[s.parentId];continue}break}if(n.verbose){o={};for(a in s[f])if(s[f][a]&&"object"==typeof s[f][a]){o[a]=s[f][a].constructor===Array?[]:{};for(r in s[f][a])o[a][r]=s[f][a][r]}else o[a]=s[f][a];i.unshift(o)}else i.unshift(s[f].san)}return i};e._getPos=function(t,o,r){var f,c,d;return("number"!=typeof t&&(t=i),"number"!=typeof o&&(o=s),f=(c=e._lines())[o],t>=0)?f[t]:r?f:f.id?f.atMoveNode?c[f.parentId][f.atMoveNode-1]:e._getPos(f.atMoveNode-1,f.parentId):(d={fen:n.header().FEN||a,hash:f.hash,initial:!0,ids:{move:-1,line:0},moveNumber:-1},e.siblingGame&&(d.bughouseOrder=-1),d)};e.move=function(n,t){var o,a,r,f,c=e._history();if(n&&("string"==typeof n||n.to&&(n.from||n.drop))){if(s===c.id&&i0;--n)if(!o[n].length){o[n]=void 0;t=!0}t&&e.reorderLines()};e.loadPgn=function(t,o,a){var r=n.loadPgn(t,o,a),f=e._history();return e.removeEmptyLines(),i=f.length-1,(s=f.id)&&e.selectLine(0),r};e.ids=function(){return{move:i,line:s}};e.selectLine=function(n){e.selectPosition(null,n)};e.curBughouseMove=function(){return Math.max(e._getPos().bughouseOrder,e.siblingGame._getPos().bughouseOrder)};e.deleteBughouseMove=function(n){var t,o,a,r=e.curBughouseMove(),i=!1,s=e;if(n>=0){r>=n&&e.selectBughouseMove(n-1);for(;;){o=(t=s._history()).length;for(a=0;a=n){t.length=a;i=!0;break}if(s===e.siblingGame)break;s=e.siblingGame}}return i};e.selectBughouseMove=function(n){var t,o,a=e.isDependent?e.siblingGame:e,r=a;if(-1===n)return r.selectPosition(-1,0,!0),r.siblingGame.selectPosition(-1,0,!0),a.load(a.header().FEN,"Bughouse",!0,!0);for(;;){t=r._history();for(o=t.length-1;o>=0;--o)if(t[o].bughouseOrder===n){r.selectPosition(t[o].ids.move,0,!0);r.siblingGame.selectPosition(t[o].siblingIds.move,0,!0);return a.load(t[o].fen,"Bughouse",!0,!0)}if(r===a.siblingGame)return!1;r=a.siblingGame}};e.moveBackward=function(n){var t,o,a;if(e.siblingGame)return e.selectBughouseMove(e.curBughouseMove()-1);if(-1===i&&0===s)return!1;if(i>1||0===s)e.selectPosition(i-1);else{t=e._getPos();o=e._getPos(t.previous.move,t.previous.line);for(;o.isContinuation&&!n;){a=e._lines()[o.ids.line];o=e._getPos(a.atMoveNode,a.parentId)}e.selectPosition(o.ids.move,o.ids.line)}return!0};e.moveForward=function(n,t){var o,a,r,f,c,d,u=e._lines();if(e.siblingGame)return e.selectBughouseMove(e.curBughouseMove()+1);o=u[s][i+1];"string"==typeof t&&(t={san:t});if(!o||t&&!isSameMove(t,o)){if(t&&o&&o.lines){c=o.lines.length;for(f=0;f1&&(t=e.fixMove(t)))return e.moveForward(n,t)}catch(e){}return!1}}return e.selectPosition(o.ids.move,o.ids.line)};e.moveVariation=function(n,t){var o,a,r,i=e._lines(),s=i[n];if(s&&s.id){o=i[s.parentId][s.atMoveNode].lines;for(a=o.length-1;a>=0;--a)if(o[a]===n){r=a-(t?1:-1);if(o[r]){o[a]=o[r];o[r]=n;e.reorderLines();return!0}}}return!1};e.promoteVariation=function(n,t){for(var o,a,r,f,c,d,u=e._lines(),l=u[n];l&&l[0]&&l.id&&(-1!==t||l.parentId);){o=u[r=l.parentId];f=l.atMoveNode;l[0].lines=o[f].lines.concat(l[0].lines||[]);o[f].lines=void 0;d=o.length-f;a=o.splice(f,d);for(c=0;c=f){s=n;i-=f}if(1===t)break;l=u[n=r]}return void 0!==o&&(e._history(u[s]),e.reorderLines(),!i&&u[s][0].isContinuation&&e.selectPosition(u[s].atMoveNode,u[s].parentId),!0)};e.reorderLines=function(n,t){var o,a,i,f,c,d,u,l,x,p,m=e._lines(),b=!1;if(n)x=t.length-1;else{n=0;t=[m[0]];x=0;r=!1}i=(o=m[n]).length;for(a=0;a1||1===i&&!e._getPos(0).isContinuation)n=e._history();else{t=e._getPos(-1);n=e._lines()[t.ids.line]}return e.selectPosition(n.id?n[1]&&n[0].isContinuation?1:0:-1,n.id)};e.selectPosition=function(t,o,a){var r=e._lines(),f=e._history();if("number"==typeof o&&(o!==s||a)){if(o<0||o>=r.length)return!1;f=r[o];if("number"!=typeof t)t=f.length-1;else if(t<-1||t>=f.length)return!1;s=o;e._history(f);a=!0}if("number"==typeof t&&(t!==i||a)){if(t<-1||t>=f.length)return!1;n.load(e._getPos(t).fen,n.header().Variant,!0,!0);i=t}return!0};e.resetToMainLine=function(){var n=e._lines();e.selectLineEnd(0);if(n.length>1){n.length=1;e.reorderLines()}};e.updateNode=function(n,t,o){var a,r,f=e._lines();o="number"==typeof o?o:s;t="number"==typeof t?t:i;a=f[o][t]||f[o];for(r in n)a[r]=n[r]};e.updateLineComment=function(n,t){e.updateNode({initComment:n},-1,t)};e.saveLines=function(n,t){var o,a,r,i=e._lines(),s=n.length;n!==i&&(i.length=0);for(a=0;a0&&t!==s?!1!==(o=descendsFromMove(r,s,t))&&o>=n:t===s&&n<=i;if(a){if(n>1)e.selectPosition(n-1,t);else{e.selectPosition((r[t][0].isContinuation||1===n)&&r[t][1]?1:0,t);e.moveBackward()}}return n>0?r[t].length=n:t?r[t]=null:r[0].length=0,e.reorderLines(),e.ids()};e.mark=function(n,t,o,a){var r=e._getPos(o,a,!0),i=n.type,s=1;n.color&&("arrow"===i?e.mark({key:n.color+n.key,type:"cal"},t,o,a):"square"===i&&e.mark({key:n.color+n.key,type:"csl"},t,o,a));if("cal"!==i&&"csl"!==i){i="c_"+i;s=0}if(r.commands&&r.commands[i]){r.commands[i]=r.commands[i].split(",").filter(function rm(e){return e.slice(s).split(";")[0]!==n.key.slice(s)}).join(",");r.commands[i]||delete r.commands[i]}if(!t){r.commands||(r.commands={});r.commands[i]=(r.commands[i]?r.commands[i]+",":"")+n.key+(n.data?";"+n.data.join(";"):"")}};e.markings=function(n,t){var o,a,r,i,s,f,c,d,u={},l=e._getPos(n,t,!0),x={cal:"arrow",csl:"square"};for(a in l.commands){r=l.commands[a];if(x[a]){a=x[a];i=0}else{if("c_"!==a.substr(0,2))continue;a=a.slice(2);i=1}u[a]=u[a]||{};f=(s=r.split(",")).length;for(o=0;o=0;--o)if(1===c[o].length&&c[o][0].isContinuation){swapMoveAttributes(c[o][0],c[c[o].parentId][c[o].atMoveNode]);c[o].length=0}e.removeEmptyLines()}}else"merge"!==t.method&&e.deletePosition(i+1,s)}return!0}}}function createGame(e){var n,o;e=e||{};if(e.game)return e.game;n=t();e.analysis&&extendChess(n);e.disableHashing&&n.hashing(!1);if(e.pgn){if(!n.loadPgn(e.pgn,e.index,e.options)&&("detect"!==e.variant||!t.variants.some(function(t){return e.options=e.options||{},e.options.variant=t,n.loadPgn(e.pgn,e.index,e.options)})))return!1}else{if(e.headers){e.variant=e.headers.Variant||e.variant;e.fen||(e.fen=e.headers.FEN)}"detect"===e.variant&&e.fen&&(e.fen.indexOf("|")>-1?e.variant="Bughouse":9===e.fen.split("/").length?e.variant="Crazyhouse":e.fen.indexOf("+")>-1?e.variant="3-check":e.variant=void 0);if((e.fen||e.variant)&&!n.load(e.fen||a,e.variant))return!1;e.headers&&"object"==typeof e.headers&&!Array.isArray(e.headers)&&n.header(e.headers)}if(e.tcn){if("object"==typeof e.tcn){if(!playBughouseTCN(n,e.tcn,e.timestamps||[[],[]]))return!1}else o=decodeTCN(e.tcn)}else o=e.moves;return(!o||!!makeMoves(n,o,e,e.timestamps))&&n}function generatePgn(e){var n;return(e=e||{}).disableHashing=!0,!!(n=createGame(e))&&n.pgn(e)}function pgnToFen(e,n){var t,a,r=[];o.reset();if(!o.loadPgn(e))return!1;t=o.moveCount();if("number"==typeof n){n<0&&(n=t+n+1);for(a=t-1;a>=n&&a>=0;a-=1)o.undo();return o.fen()}for(a=0;a<=t;a+=1){r.unshift(o.fen());o.undo()}return r}function normalizeMoveObj(e){if(e){e.piece&s&&(e.promoted=!0);e.piece=i[e.piece&r];if(e.captured){e.captured&s&&(e.capturedPromotedPawn=!0);e.captured=i[255&e.captured]}e.promotion&&(e.promotion=i[e.promotion&r]);void 0!==e.drop&&(e.drop="pnbrq"[e.drop])}return e}function normalizeHistory(e){var n,t,o,a,r,i,s,f=e.history(!0,!0);if(e.siblingGame){n=e.siblingGame.history(!0,!0);o=f.length+n.length;t=[];for(a=0;a=0;--s){e.selectLine(i.lines[s]);i.lines[s]=normalizeHistory(e).moves}}return{moves:f}}function pgnToJson(e,n,t){var a,r=[],i=o;if("number"!=typeof n){t=n;n=void 0}return a=i.tokenizePgn(e,t),n<0&&(n=a.length+n),!!a&&((t&&t.includeFen&&(i=createGame({analysis:!0})),a.forEach(function(e,o){void 0===n||o===n?i.loadPgn([e],0,t)?r.push({headers:i.header(),moves:normalizeHistory(i).moves}):r.push(!1):r.push(void 0)}),"number"==typeof n)?r[n]:r)}function sanToObj(e,n,t){return o.reset(),!!o.load(n,t)&&normalizeMoveObj(o.move(e))}function shortenFen(e,n){return o.completeFen(e).split(" ").slice(0,n||4).join(" ")}function getFenFromMoves(e,n,t,a){return o.reset(),o.load(e,t),(!n||!!makeMoves(o,n,a))&&o.fen()}function getLegalMoves(e,n){var t,a,r,i;if("string"==typeof e){(a=o).reset();if(!a.load(e,n))return null}else a=createGame(e);i=(t=a.moves({verbose:!0})).length;for(r=0;r=0;--d)if(!d||-1!==s[d].m.indexOf(f.m)){(u=s[d]).e=s[0].e;u.s=s[0].s;u.mate=s[0].mate;u.v=s[0].v;u.h=s[0].h;u.n=u.n||s[0].n;u.u=u.u||s[0].u;u.c=u.c||s[0].c;break}}else u=s[0]}else u=s;(u.n||e.allowNameless)&&(f=u)}else e.mustEndInBook&&(f=void 0)}if(f){c={name:f.n};f.m&&(c.moves=f.m);void 0!==f.d&&(c.sdiff=f.d/100);if(f.c){c.code=f.c;c.url=f.u||f.n.replace(/[\u00e1-\u00e5]/g,"a").replace(/[\u0107\u010d]/g,"c").replace(/[\u00e9\u00e8\u0117\u0113]/g,"e").replace(/[\u00f3\u00f6\u00f8]/g,"o").replace(/[\u016f\u00fc]/g,"u").replace(/['+,]/g,"").replace(/[^a-z0-9.]+/ig,"-").replace(/(with-\d|St)\.+-?/,"$1-")}if(f.e){c.eval=f.e;c.depth=f.h;c.score=f.e[0].cp/100;void 0!==f.e[0].mate&&(c.mate=f.e[0].mate)}else{c.score=f.s/100;void 0!==f.mate&&(c.mate=f.mate)}return f.v&&(c.bad=!0),c}},o.json)})}function jce(n,t){return(e=e||ENGINE_MANAGER(jce))(n,t)}return jce.supportsMultithreading=function(){var e,n=!!jce._hasThreads;if("boolean"!=typeof jce._hasThreads){try{(e=new Worker("data:application/javascript,")).postMessage(new SharedArrayBuffer(1));n=!0}catch(e){}try{e.terminate()}catch(e){}jce._hasThreads=n}return n},jce.supportsSIMD=function(){return"boolean"==typeof jce._hasSIMD?jce._hasSIMD:jce._hasSIMD=WebAssembly.validate(new Uint8Array([0,97,115,109,1,0,0,0,1,5,1,96,0,1,123,3,2,1,0,10,10,1,8,0,65,0,253,15,253,98,11]))},jce.gameFingerprints=gameFingerprints,jce.getFenFromMoves=getFenFromMoves,jce.getLegalMoves=getLegalMoves,jce.getPositionInfo=getPositionInfo,jce.isFenValid=isFenValid,jce.encodeTCN=encodeTCN,jce.decodeTCN=decodeTCN,jce.uciToObj=uciToObj,jce.generatePgn=generatePgn,jce.pgnToFen=pgnToFen,jce.pgnToJson=pgnToJson,jce.sanToObj=sanToObj,jce.completeFen=o.completeFen,jce.shortenFen=shortenFen,jce.createGame=createGame,jce.getPositionDetails=getPositionDetails,jce.predict=predict,jce.normalizeMoveObj=normalizeMoveObj,jce.FLAGS=o.FLAGS,jce.loadECO=loadECO,jce.CEE_LIB=function(){var e={};return e.addOptions=function(e,n){for(var t in n)void 0!==n[t]&&e.push("setoption name "+t+" value "+n[t]);return e},e.addVariations=function(e,n,t){n=n||[];t=t||"variation";for(var o,a,r=0;r=0&&e<=1){n._volume=e;if(n._muted)return n;n.usingWebAudio&&n.masterGain.gain.setValueAtTime(e,a.ctx.currentTime);for(var t=0;t=0;n--)e._howls[n].unload();if(e.usingWebAudio&&e.ctx&&void 0!==e.ctx.close){e.ctx.close();e.ctx=null;setupAudioContext()}return e},codecs:function(e){return(this||a)._codecs[e.replace(/^x-/,"")]},_setup:function(){var e=this||a;e.state=e.ctx&&e.ctx.state||"suspended";e._autoSuspend();if(!e.usingWebAudio){if("undefined"!=typeof Audio)try{var n=new Audio;void 0===n.oncanplaythrough&&(e._canPlayEvent="canplay")}catch(n){e.noAudio=!0}else e.noAudio=!0}try{var n=new Audio;n.muted&&(e.noAudio=!0)}catch(e){}return e.noAudio||e._setupCodecs(),e},_setupCodecs:function(){var e=this||a,n=null;try{n="undefined"!=typeof Audio?new Audio:null}catch(n){return e}if(!n||"function"!=typeof n.canPlayType)return e;var t=n.canPlayType("audio/mpeg;").replace(/^no$/,""),o=e._navigator&&e._navigator.userAgent.match(/OPR\/([0-6].)/g),r=o&&33>parseInt(o[0].split("/")[1],10);return e._codecs={mp3:!!(!r&&(t||n.canPlayType("audio/mp3;").replace(/^no$/,""))),mpeg:!!t,opus:!!n.canPlayType('audio/ogg; codecs="opus"').replace(/^no$/,""),ogg:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),oga:!!n.canPlayType('audio/ogg; codecs="vorbis"').replace(/^no$/,""),wav:!!(n.canPlayType('audio/wav; codecs="1"')||n.canPlayType("audio/wav")).replace(/^no$/,""),aac:!!n.canPlayType("audio/aac;").replace(/^no$/,""),caf:!!n.canPlayType("audio/x-caf;").replace(/^no$/,""),m4a:!!(n.canPlayType("audio/x-m4a;")||n.canPlayType("audio/m4a;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),m4b:!!(n.canPlayType("audio/x-m4b;")||n.canPlayType("audio/m4b;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),mp4:!!(n.canPlayType("audio/x-mp4;")||n.canPlayType("audio/mp4;")||n.canPlayType("audio/aac;")).replace(/^no$/,""),weba:!!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),webm:!!n.canPlayType('audio/webm; codecs="vorbis"').replace(/^no$/,""),dolby:!!n.canPlayType('audio/mp4; codecs="ec-3"').replace(/^no$/,""),flac:!!(n.canPlayType("audio/x-flac;")||n.canPlayType("audio/flac;")).replace(/^no$/,"")},e},_unlockAudio:function(){var e=this||a;if(!e._audioUnlocked&&e.ctx){e._audioUnlocked=!1;e.autoUnlock=!1;if(!e._mobileUnloaded&&44100!==e.ctx.sampleRate){e._mobileUnloaded=!0;e.unload()}e._scratchBuffer=e.ctx.createBuffer(1,1,22050);var unlock=function(n){for(;e._html5AudioPool.length0?s._seek:t._sprite[e][0]/1e3),d=Math.max(0,(t._sprite[e][0]+t._sprite[e][1])/1e3-c),u=1e3*d/Math.abs(s._rate),l=t._sprite[e][0]/1e3,x=(t._sprite[e][0]+t._sprite[e][1])/1e3;s._sprite=e;s._ended=!1;var setParams=function(){s._paused=!1;s._seek=c;s._start=l;s._stop=x;s._loop=!!(s._loop||t._sprite[e][2])};if(c>=x){t._ended(s);return}var p=s._node;if(t._webAudio){var playWebAudio=function(){t._playLock=!1;setParams();t._refreshBuffer(s);var e=s._muted||t._muted?0:s._volume;p.gain.setValueAtTime(e,a.ctx.currentTime);s._playStart=a.ctx.currentTime;void 0===p.bufferSource.start?s._loop?p.bufferSource.noteGrainOn(0,c,86400):p.bufferSource.noteGrainOn(0,c,d):s._loop?p.bufferSource.start(0,c,86400):p.bufferSource.start(0,c,d);u!==1/0&&(t._endTimers[s._id]=setTimeout(t._ended.bind(t,s),u));n||setTimeout(function(){t._emit("play",s._id);t._loadQueue()},0)};if("running"===a.state&&"interrupted"!==a.ctx.state)playWebAudio();else{t._playLock=!0;t.once("resume",playWebAudio);t._clearTimer(s._id)}}else{var playHtml5=function(){p.currentTime=c;p.muted=s._muted||t._muted||a._muted||p.muted;p.volume=s._volume*a.volume();p.playbackRate=s._rate;try{var o=p.play();if(o&&"undefined"!=typeof Promise&&(o instanceof Promise||"function"==typeof o.then)){t._playLock=!0;setParams();o.then(function(){t._playLock=!1;p._unlocked=!0;if(!n){t._emit("play",s._id);t._loadQueue()}}).catch(function(){t._playLock=!1;t._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");s._ended=!0;s._paused=!0})}else if(!n){t._playLock=!1;setParams();t._emit("play",s._id);t._loadQueue()}p.playbackRate=s._rate;if(p.paused){t._emit("playerror",s._id,"Playback was unable to start. This is most commonly an issue on mobile devices and Chrome where playback was not within a user interaction.");return}if("__default"!==e||s._loop)t._endTimers[s._id]=setTimeout(t._ended.bind(t,s),u);else{t._endTimers[s._id]=function(){t._ended(s);p.removeEventListener("ended",t._endTimers[s._id],!1)};p.addEventListener("ended",t._endTimers[s._id],!1)}}catch(e){t._emit("playerror",s._id,e)}};if("data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA"===p.src){p.src=t._src;p.load()}var m=window&&window.ejecta||!p.readyState&&a._navigator.isCocoonJS;if(p.readyState>=3||m)playHtml5();else{t._playLock=!0;var listener=function(){playHtml5();p.removeEventListener(a._canPlayEvent,listener,!1)};p.addEventListener(a._canPlayEvent,listener,!1);t._clearTimer(s._id)}}return s._id},pause:function(e){var n=this;if("loaded"!==n._state||n._playLock)return n._queue.push({event:"pause",action:function(){n.pause(e)}}),n;for(var t=n._getSoundIds(e),o=0;o=0?n=parseInt(r[0],10):e=parseFloat(r[0]);else if(r.length>=2){e=parseFloat(r[0]);n=parseInt(r[1],10)}if(void 0===e||!(e>=0)||!(e<=1))return(t=n?o._soundById(n):o._sounds[0])?t._volume:0;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"volume",action:function(){o.volume.apply(o,r)}}),o;void 0===n&&(o._volume=e);n=o._getSoundIds(n);for(var i=0;i0?o/c:o),u=Date.now();e._fadeTo=t;e._interval=setInterval(function(){var a=(Date.now()-u)/o;u=Date.now();s+=f*a;s=Math.round(100*s)/100;s=f<0?Math.max(t,s):Math.min(t,s);i._webAudio?e._volume=s:i.volume(s,e._id,!0);r&&(i._volume=s);if(tn&&s>=t){clearInterval(e._interval);e._interval=null;e._fadeTo=null;i.volume(t,e._id);i._emit("fade",e._id)}},d)},_stopFade:function(e){var n=this,t=n._soundById(e);if(t&&t._interval){n._webAudio&&t._node.gain.cancelScheduledValues(a.ctx.currentTime);clearInterval(t._interval);t._interval=null;n.volume(t._fadeTo,e);t._fadeTo=null;n._emit("fade",e)}return n},loop:function(){var e,n,t,o=this,a=arguments;if(0===a.length)return o._loop;if(1===a.length){if("boolean"!=typeof a[0])return!!(t=o._soundById(parseInt(a[0],10)))&&t._loop;e=a[0];o._loop=e}else if(2===a.length){e=a[0];n=parseInt(a[1],10)}for(var r=o._getSoundIds(n),i=0;i=0?n=parseInt(r[0],10):e=parseFloat(r[0]);else if(2===r.length){e=parseFloat(r[0]);n=parseInt(r[1],10)}if("number"!=typeof e)return(t=o._soundById(n))?t._rate:o._rate;if("loaded"!==o._state||o._playLock)return o._queue.push({event:"rate",action:function(){o.rate.apply(o,r)}}),o;void 0===n&&(o._rate=e);n=o._getSoundIds(n);for(var i=0;i=0)n=parseInt(o[0],10);else if(t._sounds.length){n=t._sounds[0]._id;e=parseFloat(o[0])}}else if(2===o.length){e=parseFloat(o[0]);n=parseInt(o[1],10)}if(void 0===n)return t;if("number"==typeof e&&("loaded"!==t._state||t._playLock))return t._queue.push({event:"seek",action:function(){t.seek.apply(t,o)}}),t;var i=t._soundById(n);if(i){if("number"==typeof e&&e>=0){var s=t.playing(n);s&&t.pause(n,!0);i._seek=e;i._ended=!1;t._clearTimer(n);t._webAudio||!i._node||isNaN(i._node.duration)||(i._node.currentTime=e);var seekAndEmit=function(){t._emit("seek",n);s&&t.play(n,!0)};if(s&&!t._webAudio){var emitSeek=function(){t._playLock?setTimeout(emitSeek,0):seekAndEmit()};setTimeout(emitSeek,0)}else seekAndEmit()}else{if(!t._webAudio)return i._node.currentTime;var f=t.playing(n)?a.ctx.currentTime-i._playStart:0,c=i._rateSeek?i._rateSeek-i._seek:0;return i._seek+(c+f*Math.abs(i._rate))}}return t},playing:function(e){var n=this;if("number"==typeof e){var t=n._soundById(e);return!!t&&!t._paused}for(var o=0;o=0&&a._howls.splice(o,1);var i=!0;for(t=0;t=0){i=!1;break}return r&&i&&delete r[e._src],a.noAudio=!1,e._state="unloaded",e._sounds=[],e=null,null},on:function(e,n,t,o){var a=this,r=a["_on"+e];return"function"==typeof n&&r.push(o?{id:t,fn:n,once:o}:{id:t,fn:n}),a},off:function(e,n,t){var o=this,a=o["_on"+e],r=0;if("number"==typeof n){t=n;n=null}if(n||t)for(r=0;r=0;r--)if(!a[r].id||a[r].id===n||"load"===e){setTimeout((function(e){e.call(this,n,t)}).bind(o,a[r].fn),0);a[r].once&&o.off(e,a[r].fn,a[r].id)}return o._loadQueue(e),o},_loadQueue:function(e){var n=this;if(n._queue.length>0){var t=n._queue[0];if(t.event===e){n._queue.shift();n._loadQueue()}e||t.action()}return n},_ended:function(e){var n=this,t=e._sprite;if(!n._webAudio&&e._node&&!e._node.paused&&!e._node.ended&&e._node.currentTime=0;o--){if(t<=n)return;if(e._sounds[o]._ended){e._webAudio&&e._sounds[o]._node&&e._sounds[o]._node.disconnect(0);e._sounds.splice(o,1);t--}}}},_getSoundIds:function(e){var n=this;if(void 0!==e)return[e];for(var t=[],o=0;o=0;if(a._scratchBuffer&&e.bufferSource){e.bufferSource.onended=null;e.bufferSource.disconnect(0);if(n)try{e.bufferSource.buffer=a._scratchBuffer}catch(e){}}return e.bufferSource=null,this},_clearSound:function(e){/MSIE |Trident\//.test(a._navigator&&a._navigator.userAgent)||(e.src="data:audio/wav;base64,UklGRigAAABXQVZFZm10IBIAAAABAAEARKwAAIhYAQACABAAAABkYXRhAgAAAAEA")}};var Sound=function(e){this._parent=e;this.init()};Sound.prototype={init:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++a._counter,n._sounds.push(e),e.create(),e},create:function(){var e=this,n=e._parent,t=a._muted||e._muted||e._parent._muted?0:e._volume;if(n._webAudio){e._node=void 0===a.ctx.createGain?a.ctx.createGainNode():a.ctx.createGain();e._node.gain.setValueAtTime(t,a.ctx.currentTime);e._node.paused=!0;e._node.connect(a.masterGain)}else if(!a.noAudio){e._node=a._obtainHtml5Audio();e._errorFn=e._errorListener.bind(e);e._node.addEventListener("error",e._errorFn,!1);e._loadFn=e._loadListener.bind(e);e._node.addEventListener(a._canPlayEvent,e._loadFn,!1);e._endFn=e._endListener.bind(e);e._node.addEventListener("ended",e._endFn,!1);e._node.src=n._src;e._node.preload=!0===n._preload?"auto":n._preload;e._node.volume=t*a.volume();e._node.load()}return e},reset:function(){var e=this,n=e._parent;return e._muted=n._muted,e._loop=n._loop,e._volume=n._volume,e._rate=n._rate,e._seek=0,e._rateSeek=0,e._paused=!0,e._ended=!0,e._sprite="__default",e._id=++a._counter,e},_errorListener:function(){var e=this;e._parent._emit("loaderror",e._id,e._node.error?e._node.error.code:0);e._node.removeEventListener("error",e._errorFn,!1)},_loadListener:function(){var e=this,n=e._parent;n._duration=Math.ceil(10*e._node.duration)/10;0===Object.keys(n._sprite).length&&(n._sprite={__default:[0,1e3*n._duration]});if("loaded"!==n._state){n._state="loaded";n._emit("load");n._loadQueue()}e._node.removeEventListener(a._canPlayEvent,e._loadFn,!1)},_endListener:function(){var e=this,n=e._parent;if(n._duration===1/0){n._duration=Math.ceil(10*e._node.duration)/10;n._sprite.__default[1]===1/0&&(n._sprite.__default[1]=1e3*n._duration);n._ended(e)}e._node.removeEventListener("ended",e._endFn,!1)}};var r={},loadBuffer=function(e){var n=e._src;if(r[n]){e._duration=r[n].duration;loadSound(e);return}if(/^data:[^;]+;base64,/.test(n)){for(var t=atob(n.split(",")[1]),o=new Uint8Array(t.length),a=0;a0){r[n._src]=e;loadSound(n,e)}else error()};"undefined"!=typeof Promise&&1===a.ctx.decodeAudioData.length?a.ctx.decodeAudioData(e).then(success).catch(error):a.ctx.decodeAudioData(e,success,error)},loadSound=function(e,n){n&&!e._duration&&(e._duration=n.duration);0===Object.keys(e._sprite).length&&(e._sprite={__default:[0,1e3*e._duration]});if("loaded"!==e._state){e._state="loaded";e._emit("load");e._loadQueue()}},setupAudioContext=function(){if(a.usingWebAudio){try{"undefined"!=typeof AudioContext?a.ctx=new AudioContext:"undefined"!=typeof webkitAudioContext?a.ctx=new webkitAudioContext:a.usingWebAudio=!1}catch(e){a.usingWebAudio=!1}a.ctx||(a.usingWebAudio=!1);var e=/iP(hone|od|ad)/.test(a._navigator&&a._navigator.platform),n=a._navigator&&a._navigator.appVersion.match(/OS (\d+)_(\d+)_?(\d+)?/),t=n?parseInt(n[1],10):null;if(e&&t&&t<9){var o=/safari/.test(a._navigator&&a._navigator.userAgent.toLowerCase());a._navigator&&!o&&(a.usingWebAudio=!1)}if(a.usingWebAudio){a.masterGain=void 0===a.ctx.createGain?a.ctx.createGainNode():a.ctx.createGain();a.masterGain.gain.setValueAtTime(a._muted?0:a._volume,a.ctx.currentTime);a.masterGain.connect(a.ctx.destination)}a._setup()}};void 0!==(o=(function(){return{Howler:a,Howl:Howl}}).apply(n,[]))&&(e.exports=o);n.Howler=a;n.Howl=Howl;if(void 0!==t.g){t.g.HowlerGlobal=HowlerGlobal;t.g.Howler=a;t.g.Howl=Howl;t.g.Sound=Sound}else if("undefined"!=typeof window){window.HowlerGlobal=HowlerGlobal;window.Howler=a;window.Howl=Howl;window.Sound=Sound}}();!/*! * Spatial Plugin - Adds support for stereo and 3D audio where Web Audio is supported. * * howler.js v2.2.1 * howlerjs.com * * (c) 2013-2020, James Simpson of GoldFire Studios * goldfirestudios.com * * MIT License */function(){"use strict";HowlerGlobal.prototype._pos=[0,0,0];HowlerGlobal.prototype._orientation=[0,0,-1,0,1,0];HowlerGlobal.prototype.stereo=function(e){var n=this;if(!n.ctx||!n.ctx.listener)return n;for(var t=n._howls.length-1;t>=0;t--)n._howls[t].stereo(e);return n};HowlerGlobal.prototype.pos=function(e,n,t){var o=this;if(!o.ctx||!o.ctx.listener)return o;n="number"!=typeof n?o._pos[1]:n;t="number"!=typeof t?o._pos[2]:t;if("number"!=typeof e)return o._pos;o._pos=[e,n,t];if(void 0!==o.ctx.listener.positionX){o.ctx.listener.positionX.setTargetAtTime(o._pos[0],Howler.ctx.currentTime,.1);o.ctx.listener.positionY.setTargetAtTime(o._pos[1],Howler.ctx.currentTime,.1);o.ctx.listener.positionZ.setTargetAtTime(o._pos[2],Howler.ctx.currentTime,.1)}else o.ctx.listener.setPosition(o._pos[0],o._pos[1],o._pos[2]);return o};HowlerGlobal.prototype.orientation=function(e,n,t,o,a,r){var i=this;if(!i.ctx||!i.ctx.listener)return i;var s=i._orientation;n="number"!=typeof n?s[1]:n;t="number"!=typeof t?s[2]:t;o="number"!=typeof o?s[3]:o;a="number"!=typeof a?s[4]:a;r="number"!=typeof r?s[5]:r;if("number"!=typeof e)return s;i._orientation=[e,n,t,o,a,r];if(void 0!==i.ctx.listener.forwardX){i.ctx.listener.forwardX.setTargetAtTime(e,Howler.ctx.currentTime,.1);i.ctx.listener.forwardY.setTargetAtTime(n,Howler.ctx.currentTime,.1);i.ctx.listener.forwardZ.setTargetAtTime(t,Howler.ctx.currentTime,.1);i.ctx.listener.upX.setTargetAtTime(o,Howler.ctx.currentTime,.1);i.ctx.listener.upY.setTargetAtTime(a,Howler.ctx.currentTime,.1);i.ctx.listener.upZ.setTargetAtTime(r,Howler.ctx.currentTime,.1)}else i.ctx.listener.setOrientation(e,n,t,o,a,r);return i};Howl.prototype.init=function(e){return function(n){var t=this;return t._orientation=n.orientation||[1,0,0],t._stereo=n.stereo||null,t._pos=n.pos||null,t._pannerAttr={coneInnerAngle:void 0!==n.coneInnerAngle?n.coneInnerAngle:360,coneOuterAngle:void 0!==n.coneOuterAngle?n.coneOuterAngle:360,coneOuterGain:void 0!==n.coneOuterGain?n.coneOuterGain:0,distanceModel:void 0!==n.distanceModel?n.distanceModel:"inverse",maxDistance:void 0!==n.maxDistance?n.maxDistance:1e4,panningModel:void 0!==n.panningModel?n.panningModel:"HRTF",refDistance:void 0!==n.refDistance?n.refDistance:1,rolloffFactor:void 0!==n.rolloffFactor?n.rolloffFactor:1},t._onstereo=n.onstereo?[{fn:n.onstereo}]:[],t._onpos=n.onpos?[{fn:n.onpos}]:[],t._onorientation=n.onorientation?[{fn:n.onorientation}]:[],e.call(this,n)}}(Howl.prototype.init);Howl.prototype.stereo=function(e,n){var t=this;if(!t._webAudio)return t;if("loaded"!==t._state)return t._queue.push({event:"stereo",action:function(){t.stereo(e,n)}}),t;var o=void 0===Howler.ctx.createStereoPanner?"spatial":"stereo";if(void 0===n){if("number"!=typeof e)return t._stereo;t._stereo=e;t._pos=[e,0,0]}for(var a=t._getSoundIds(n),r=0;r