Go on, spam those arrow keys. See how well you do. Show off to your friends — can they spam keys on their computer to do as well? Maybe not!
xxxxxxxxxx
const board = new Array(16).fill(null);
const transitions = {};
const scaling = {};
const directions = new Set();
const numbers = {};
let font;
const table = {};
let toMake = 0;
function preload() {
font = loadFont("data:font/truetype;charset=utf-8;base64,AAEAAAASAQAABAAgRkZUTXzK5BgAAAEsAAAAHEdERUYAJwAkAAABSAAAAB5HUE9TejkltQAAAWgAAE8aR1NVQtgy3xYAAFCEAAAAME9TLzL2EIaPAABQtAAAAGBjbWFwYjFseQAAURQAAAGCY3Z0IBGfFioAAFKYAAAAQGZwZ21TtC+nAABS2AAAAmVnYXNwAAAAEAAAVUAAAAAIZ2x5ZgakctwAAFVIAAAHpGhlYWQKv+jCAABc7AAAADZoaGVhDU4DBwAAXSQAAAAkaG10eFcxBDUAAF1IAAAAeGxvY2EnIiUYAABdwAAAAD5tYXhwATkAswAAXgAAAAAgbmFtZQL5JbQAAF4gAAAKpnBvc3QrQm64AABoyAAAAOxwcmVww4TikwAAabQAAAE2AAAAAQAAAADV7UW4AAAAAMxlL5MAAAAA2nhuzAABAAAADAAAABYAAAACAAEAAQAdAAEABAAAAAIAAAAAAAEAAAAKADAAPgACY3lybAAObGF0bgAaAAQAAAAA//8AAQAAAAQAAAAA//8AAQAAAAFrZXJuAAgAAAABAAAAAQAEAAIAAAABAAgAAk7MAAQAAE68TsQAagBfAAD/7P/X/83/7P/s/9f/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9c/67/wwAA/4//hQApACn/7P/X/+EAH/9c/0j/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8P/1//X/9cAAP/NAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/4f/h/+H/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5r/CgAAAAAAAP/XAAAAAP8ZAAD/7AAA/+z/wwAAAAAAAP/s/9f/1//X/7j/w/+u/9f/1//X/67/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/83/1//X/9f/4f/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1//DAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9cAAP/h/83/zf/X/64AAAAAAAD/1//X/8MAAAAAAAAAAP/NAAD/w//X/9f/1//D/8P/zf/NAAD/mgAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/cf+a/5oAAP9x/uEAFAAp/+z/1//hAAD+4f64/rj/9gAAAAAAAAAA/+wAAAAA/8P/wwAA/5oAAAAA/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mv9c/+wACgAK/+wAAAAA/vYAAAAAAAAAAAAAAAAAAAAAABT/1//sAAAAAAAAAAAAAAAAAAAAAAAA/64AAAAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9cAAP/s/9f/1wAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/1//h/+H/7P/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/XP9xAAAAAAAA/+wAAAAA/0j/rv/NAAD/7P9kAFIAKQAp/9cAAP8z/9f/SP8z/zP/cf9I/0j/M/9x/0j/7P+aAAD/mv9x/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/zQAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/D/3EAAAAAAAD/7P/XAAD/cQAA/+wAAP/s/9cAAAAAAAD/9gAA/8MAAP/D/8P/w//DAAAAAP/h/+z/1//sAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/7P/sAAD/1wAAAAAAAP/X/9cAAAAAAAAAAAAA/+wAAAAAAAD/4f/DAAD/rv/X/9cAAAAAAAD/4f/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4//SAAA/9f/1//XAAAAAP8z/9f/wwAA/+H/mgAAAAAAAP/D/+z/hf/X/3v/cf+F/5r/rv+u/64AAP9x/+z/rgAAAAD/mgAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAA/8P/wwAAAAAAAAAAAAAAAAAAAAD/7AAA/+H/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA//b/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB7/9cAAAAAAAAAAAAAAKQAZgB7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAD/1//sAAD/7P/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+9gAAAAAAAAAAAAAAAAApACkAAAAA/+wAAAAA/9f/7AAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/X/9f/7AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAHwAAAAAAAAAAAAAAFAAAAAD/7AAA//b/9v/2AAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAAAAAAA//YAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9xAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAD/1//hAAD/7P/s/+EAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAp/64AAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAKf+uACn/1wApACn/rv/XAM0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAKf9I/3H/cQAA/zMAAAAAAAAAAAAAAAAAAAAA/1L/UgAAAAAAAAAAAAD/7AAAAAD/w//DAAAAAAA9AAAAAAAAAAAAAAAAAAAAAAApACn/SAAp/8MAKQAp/0j/MwAA/x3/cf+F/5r/hf+u/67/7P8d/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3EAAAAAAAAAAP/DAAABCgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/3EAAAAAAAD/mgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9cAAAAAAAAAAD/cf+aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+aAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mgAAAAAAAAAA/5oAAAAA/8MAAAAAAAAAAAAAAAAAAP/DAAAAKQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAzQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAALgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/0j/CgApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/48AAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAP9IAAAAAAAAAAAAAAAAAAAAAP9I/0gAAP8KACn/XP9IACkAAAEKAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAA/8P/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9I/woAKQAAAAAAAAAAAAD/UgAAAAAAAAAAAAAAAAAA/48AAAAAAAAAAAAA/8MAAAAAAAAAAAAAAAD/SAAAAAAAAAAAAAAAAAAAAAD/SP8zAAD/CgAp/1z/SAApAAABCgAAAAAAAAAAAAAAAAAA/8MAAAAAAAAAAP/D/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/hf8fAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAFIAPQAAAAD/rgAAAAD/rgAA/64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAogAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQApAAAAAAAAAAAAAP9I/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9c/48AAP+kAAAAAAAAAAD/7P/sAAD/cQAAAAAAAAAAAAD/7P/s/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+z/zf/DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8z/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mgAAAAAAAAAAAAAAAAAAAAAAAP+PAAAAAAAA/4UAAAAAAAAAAAAAAAD/cf+aAAAAAAAAAAAAAP/DAAAAAP/XAAD/7P97AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/DAAAAAAAAAAAAAAAAAAD/rgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+EAAAAAAAAAAAAA/+wAAP/X/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/X/80AAP/DAAAAAAAAAAAAAP/sAAD/wwAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/uH/SAAAAAAAAAAAAAAAKQApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/M/8K/zMAAAAAAAAAAAAAAAAAAAAA/ykAAAAAAAD+4QAAAAAAAAAAAAD+9v7s/0j+9gAAAAD+1/7DAAD/7P8AAAD/mgAA/uz/1//D/tf/1/7s/vYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAA/6QAAAAAAAAAAAAA/9f/1/+4/8MAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1//h/64AAP9cAAAAAAAAAAAAAP+u/9f/cf+FAAAAAP/XAAD/1//DAAD/1wAAAAD/1//X/8MAAP/XAAD/pAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5r/7AAAAAAACgAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAA/+wAAP/XAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5oAAAAAAAAAAAAA/67/1/+aAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/SP+uAAAAAAAAAAAAAAApACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+a/3H/wwAAAAAAAAAAAAAAAAAAAAD/XAAAAAAAAP9cAAAAAAAAAAAAAP9c/zP/XP8zAAAAAP8z/zP/zf/s/zP/7P+uAAD/SP/X/8P/MwAA/1L/KQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7P/XAAD/ewAAAAAAAAAAAAD/w//D/3v/rgAAAAD/1//X/9f/7P/XAAAAAAAA/+H/7P/XAAD/7P/h/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/64AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+aAAAAAAAAAAAAAP/X/+H/j//D/9cAAAAAAAAAAP/NAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAD/w//DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAAAAAAAAAD/7AAA/9f/1//sAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8P/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAP/s/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAP/s/+wAAP/s/+wAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAAAAAAAAAAAAAAA/+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAAAAAAAAAAP/X/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+uAAAAAAAAAAAAAP+u/67/wwAA/64AAAAA/8MAAAAA/64AAP/DAAD/1wAAAAD/w/+u/8P/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/rgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mgAAAAAAAAAAAAD/mv/D/3EAAAAAAAAAAP/XAAD/w//XAAAAAAAAAAAAAAAA/+EAAP/D/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/DAAAAAAAAAAAAAP/D/9f/1//X/8MAAAAAAAAAAAAA/+EAAAAAAAAAAAAAAAD/4f/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/hf+FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/XAAAAAAAAAAAAAD/pP/X/0j/mv+uAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAD/7P/sAAAAAAAAAAD/7AAAAAD/9gAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAA/+wAAAAA/+wAAAAAAAAAAP/XAAAAAAAAAAAAAAAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAP/DAAAAAP/XAAAAAAAAAAD/4QAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/4QAAAAD/7AAAAAAAAAAA/9cAAAAAAAAAAP/X/+wAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAA/+H/1wAAAAAAAAAAAAAAAAAAAAD/rgAAAAAAAAAAAAAAAAAAAAD/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/1//h/8P/1//DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1//DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9IAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1//DAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD+4f8zAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP8z/uH/MwAAAAD/Kf8AAAD+7AAU/poAAAAAAAAAAAAAAAD/Cv8A/s0AAAAAAAAAAAAAAAD/CgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9cAAP/h/vb+7P72/z3/4f+u/67+rP8K/s3+7P8z/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/67/zQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAAAAAAHwAfAAAAKQAAABQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD0AHwAKAAAAKQApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP7D/5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+a/0gAAP9IAAD/HwAAAAAAAAAAAAAAAP/D/5r/rgAAAAAAAAAAAAAAAP+FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAA/+H/cf+F/3H/XAAA/+wAAP8f/4X/SP+F/4X/mv/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP9I/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/1wAAP/DAAAAAAAAAAAAAAAAAAAAAP+u/5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/vYAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/5r/hf/s/1wAAP+FAAAAAAAAAAAAAAAUAAAACgAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+wAFP/sAAAAAP+uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACkAAAAAAAD/mgAAAAD/hQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/SP+uAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+a/1z/cQAAAAD/XP9cAAD/cQAA/uwAAAAAAAAAAAAAAAD/XP9c/0gAAAAAAAAAAAAAAAD/cQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/83/7P/X/zP/M/8z/3EAAP/s/8P/Kf9I/x//SP8z/0gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/XAAD/7AAA/8MAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/9f/1//XAAAAAAAAAAAAAAAAAAAAAP/XAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4QAAAAAAAAAAAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1//XAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/zMAKQAAAAAAAAAAAAAAPQApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/mgAAAAAAAAAAAAAAAAAAAAAAAP9xAAAAAAAAAAAAAAAAAD0AAAApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/X/9cAAAAAAAAAAAAA/3EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/4f/X/+wAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB8AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAMwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKQAUAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAA/5oAAP+FAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/8MAAAAAAAAAAAAA/5oAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+H/1//hAAAAAAAAAAAAAAAAAAAAAP/h/+wAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/4UAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+aAAAAAAAAAAAAAAAAACkAAAApAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA/+EAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/s/9cAAP/DAAD/wwAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/sAAAAAAAAAAD/wwAAAAAAAP+uAAAAAAAAAAAAAAAAAAAAAP+u/3EAAAAAAAD/7P/XAAD/cQAA/+wAAP/s/9cAAAAAAAD/9gAA/8MAAP/D/8P/w//DAAAAAP/h/+z/1//sAAAAAAAAAAAAAP/hAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/2AAAAAP/hAAAAAAAAAAAAAAAAAAD/1wAAAAAAAAAA/9f/7AAA/9cAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP/DAAAAAAAAAAAAAAAAAAAAAAAAAAD/7AAAAAD/7P/sAAAAAAAAAAD/9gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+u/3EAZgBmAFwASABSAAAAAAAAAAAAAAAAAAAAAAAAAAAAUgAzAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAPQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA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2QMAGgm6AEYAbwBuAHQAIABzAG8AZgB0AHcAYQByAGUAIABDAG8AcAB5AHIAaQBnAGgAdAAgAKkAIAAyADAAMQAyACAASQBuAHQAZQBsACAAQwBvAHIAcABvAHIAYQB0AGkAbwBuAC4AIABMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwAC4AIAAgAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAEMAbABlAGEAcgAgAFMAYQBuAHMAQgBvAGwAZABJAG4AdABlAGwAIABDAGwAZQBhAHIAIABTAGEAbgBzACAAQgBvAGwAZAAgAEIAdQBpAGwAZAAgADEAMAAwAEMAbABlAGEAcgAgAFMAYQBuAHMAIABCAG8AbABkAFYAZQByAHMAaQBvAG4AIAAxAC4AMAAwAEMAbABlAGEAcgBTAGEAbgBzAC0AQgBvAGwAZABJAG4AdABlAGwAIABDAG8AcgBwAG8AcgBhAHQAaQBvAG4AaAB0AHQAcAA6AC8ALwAwADEALgBvAHIAZwAvAGgAdAB0AHAAOgAvAC8AMAAxAC4AbwByAGcALwBjAGwAZQBhAHIAcwBhAG4AcwBMAGkAYwBlAG4AcwBlAGQAIAB1AG4AZABlAHIAIAB0AGgAZQAgAEEAcABhAGMAaABlACAATABpAGMAZQBuAHMAZQAsACAAVgBlAHIAcwBpAG8AbgAgADIALgAwACAAKAB0AGgAZQAgACIATABpAGMAZQBuAHMAZQAiACkAOwAgAHkAbwB1ACAAbQBhAHkAIABuAG8AdAAgAHUAcwBlACAAdABoAGkAcwAgAGYAaQBsAGUAIABlAHgAYwBlAHAAdAAgAGkAbgAgAGMAbwBtAHAAbABpAGEAbgBjAGUAIAB3AGkAdABoACAAdABoAGUAIABMAGkAYwBlAG4AcwBlAC4AIABZAG8AdQAgAG0AYQB5ACAAbwBiAHQAYQBpAG4AIABhACAAYwBvAHAAeQAgAG8AZgAgAHQAaABlACAATABpAGMAZQBuAHMAZQAgAGEAdAAgAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAC4AIABVAG4AbABlAHMAcwAgAHIAZQBxAHUAaQByAGUAZAAgAGIAeQAgAGEAcABwAGwAaQBjAGEAYgBsAGUAIABsAGEAdwAgAG8AcgAgAGEAZwByAGUAZQBkACAAdABvACAAaQBuACAAdwByAGkAdABpAG4AZwAsACAATABpAGMAZQBuAHMAbwByACAAcAByAG8AdgBpAGQAZQBzACAAdABoAGUAIABXAG8AcgBrACAAKABhAG4AZAAgAGUAYQBjAGgAIABDAG8AbgB0AHIAaQBiAHUAdABvAHIAIABwAHIAbwB2AGkAZABlAHMAIABpAHQAcwAgAEMAbwBuAHQAcgBpAGIAdQB0AGkAbwBuAHMAKQAgAG8AbgAgAGEAbgAgACIAQQBTACAASQBTACIAIABCAEEAUwBJAFMALAAgAFcASQBUAEgATwBVAFQAIABXAEEAUgBSAEEATgBUAEkARQBTACAATwBSACAAQwBPAE4ARABJAFQASQBPAE4AUwAgAE8ARgAgAEEATgBZACAASwBJAE4ARAAsACAAZQBpAHQAaABlAHIAIABlAHgAcAByAGUAcwBzACAAbwByACAAaQBtAHAAbABpAGUAZAAsACAAaQBuAGMAbAB1AGQAaQBuAGcALAAgAHcAaQB0AGgAbwB1AHQAIABsAGkAbQBpAHQAYQB0AGkAbwBuACwAIABhAG4AeQAgAHcAYQByAHIAYQBuAHQAaQBlAHMAIABvAHIAIABjAG8AbgBkAGkAdABpAG8AbgBzACAAbwBmACAAVABJAFQATABFACwAIABOAE8ATgAtAEkATgBGAFIASQBOAEcARQBNAEUATgBUACwAIABNAEUAUgBDAEgAQQBOAFQAQQBCAEkATABJAFQAWQAsACAAbwByACAARgBJAFQATgBFAFMAUwAgAEYATwBSACAAQQAgAFAAQQBSAFQASQBDAFUATABBAFIAIABQAFUAUgBQAE8AUwBFAC4AIABZAG8AdQAgAGEAcgBlACAAcwBvAGwAZQBsAHkAIAByAGUAcwBwAG8AbgBzAGkAYgBsAGUAIABmAG8AcgAgAGQAZQB0AGUAcgBtAGkAbgBpAG4AZwAgAHQAaABlACAAYQBwAHAAcgBvAHAAcgBpAGEAdABlAG4AZQBzAHMAIABvAGYAIAB1AHMAaQBuAGcAIABvAHIAIAByAGUAZABpAHMAdAByAGkAYgB1AHQAaQBuAGcAIAB0AGgAZQAgAFcAbwByAGsAIABhAG4AZAAgAGEAcwBzAHUAbQBlACAAYQBuAHkAIAByAGkAcwBrAHMAIABhAHMAcwBvAGMAaQBhAHQAZQBkACAAdwBpAHQAaAAgAFkAbwB1AHIAIABlAHgAZQByAGMAaQBzAGUAIABvAGYAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIAB1AG4AZABlAHIAIAB0AGgAaQBzACAATABpAGMAZQBuAHMAZQAuACAAUwBlAGUAIAB0AGgAZQAgAEwAaQBjAGUAbgBzAGUAIABmAG8AcgAgAHQAaABlACAAcwBwAGUAYwBpAGYAaQBjACAAbABhAG4AZwB1AGEAZwBlACAAZwBvAHYAZQByAG4AaQBuAGcAIABwAGUAcgBtAGkAcwBzAGkAbwBuAHMAIABhAG4AZAAgAGwAaQBtAGkAdABhAHQAaQBvAG4AcwAgAHUAbgBkAGUAcgAgAHQAaABlACAATABpAGMAZQBuAHMAZQAuAGgAdAB0AHAAOgAvAC8AdwB3AHcALgBhAHAAYQBjAGgAZQAuAG8AcgBnAC8AbABpAGMAZQBuAHMAZQBzAC8ATABJAEMARQBOAFMARQAtADIALgAwAC4AaAB0AG0AbABXAGUAYgBmAG8AbgB0ACAAMQAuADAAUwB1AG4AIABGAGUAYgAgADIAMwAgADEAMwA6ADAAMgA6ADUAMgAgADIAMAAyADAAZABlAGYAYQB1AGwAdABwAGUAcgBzAGUAdQBzAEYAbwBuAHQAIABTAHEAdQBpAHIAcgBlAGwAAAACAAAAAAAA/WgAZgAAAAAAAAAAAAAAAAAAAAAAAAAAAB4AAAECAQMBBAADABMAFAAVABYAFwAYABkAGgAbABwBBQEGAQcBCAEJAQoBCwEMAQ0BDgEPARABEQESARMGZ2x5cGgxB3VuaTAwMEQGZ2x5cGgzB3VuaTAwQTAHdW5pMjAwMAd1bmkyMDAxB3VuaTIwMDIHdW5pMjAwMwd1bmkyMDA0B3VuaTIwMDUHdW5pMjAwNgd1bmkyMDA3B3VuaTIwMDgHdW5pMjAwOQd1bmkyMDBBB3VuaTIwMkYHdW5pMjA1Rgd1bmkyNUZDuAH/hbABjQBLsAhQWLEBAY5ZsUYGK1ghsBBZS7AUUlghsIBZHbAGK1xYALADIEWwAytEsAcgRbIDcQIrsAMrRLAGIEWyB0QCK7ADK0SwBSBFsgYyAiuwAytEsAQgRbIFFwIrsAMrRLAIIEW6AAMBCgACK7ADK0SwCSBFsghDAiuwAytEsAogRbIJOgIrsAMrRLALIEWyCigCK7ADK0SwDCBFugALASkAAiuwAytEAbANIEWwAytEsA8gRbIN+gIrsQNGditEsA4gRbIPPAIrsQNGditEsBAgRboADX//AAIrsQNGditEsBEgRbIQmgIrsQNGditEsBIgRbIRUwIrsQNGditEsBMgRbISQwIrsQNGditEsBQgRbITMwIrsQNGditEsBUgRbIUKwIrsQNGditEWbAUKwAA");
}
function getMove() {
const d = [directions];
function playout(board) {
function makeRandomMove() {
shuffle(d, true);
for (const direction of d)
if (update(board, direction, transitionless=true))
return direction;
}
while (makeRandomMove());
// return board.reduce((a, b) => a + b);
return board.map(x => Math.pow(x, 1.2)).reduce((a, b) => a + b);
}
const scores = {};
for (const direction of directions) scores[direction] = 0;
let bestMove = null;
const startTime = millis();
// let runs = 0;
while (millis() - startTime < 70) {
// while (runs < 100) {
// runs ++;
for (const move of directions) {
const b = [board];
if (!update(b, move, transitionless=true)) continue;
scores[move] += playout(b);
if (bestMove === null || scores[move] > scores[bestMove]) bestMove = move;
}
}
// console.log(runs);
return bestMove;
}
function keyPressed() {
if (directions.has(keyCode)) {
// update(board, keyCode);
toMake ++;
loop();
}
}
function update(board, direction, transitionless=false) {
const moveFunc = transitionless ? moveTransitionless : move;
if (moveFunc(board, direction)) {
addTile(board, !transitionless);
loop();
return true;
}
return false;
}
function move(board, direction) {
function collapse(group) {
function collapseRecursive(a) {
if (Array.isArray(a) && a.length === 0) return a;
if (a[0][0] === null) return collapseRecursive(a.slice(1));
if (a.slice(1).every(x => x[0] === null)) return a;
if (a[1][0] === null) return collapseRecursive([a[0], a.slice(2)]);
if (a[0][0] === a[1][0]) return [[2 * a[0][0], a[1][1]], collapseRecursive(a.slice(2))];
return [a[0], collapseRecursive(a.slice(1))];
}
const pairs = group.map((x, i) => [x, i]);
const collapsed = [],
previous = [];
const out = collapseRecursive(pairs).filter(x => x[0] !== null);
out.map(x => {collapsed.push(x[0]); previous.push(x[1])});
return [collapsed, previous];
}
const oldBoard = [board];
if (direction === RIGHT_ARROW) {
for (let i = 0; i < 16; i += 4) {
const [collapsed, previous] = collapse([board[i + 3], board[i + 2], board[i + 1], board[i]]);
board[i + 3] = collapsed[0] || null;
board[i + 2] = collapsed[1] || null;
board[i + 1] = collapsed[2] || null;
board[i ] = collapsed[3] || null;
if (collapsed[0]) transitions[i + 3] = [i + 3 - previous[0], frameCount];
if (collapsed[1]) transitions[i + 2] = [i + 3 - previous[1], frameCount];
if (collapsed[2]) transitions[i + 1] = [i + 3 - previous[2], frameCount];
if (collapsed[3]) transitions[i ] = [i + 3 - previous[3], frameCount];
}
}
else if (direction === LEFT_ARROW) {
for (let i = 0; i < 16; i += 4) {
const [collapsed, previous] = collapse([board[i], board[i + 1], board[i + 2], board[i + 3]]);
board[i ] = collapsed[0] || null;
board[i + 1] = collapsed[1] || null;
board[i + 2] = collapsed[2] || null;
board[i + 3] = collapsed[3] || null;
if (collapsed[0]) transitions[i ] = [i + previous[0], frameCount];
if (collapsed[1]) transitions[i + 1] = [i + previous[1], frameCount];
if (collapsed[2]) transitions[i + 2] = [i + previous[2], frameCount];
if (collapsed[3]) transitions[i + 3] = [i + previous[3], frameCount];
}
}
else if (direction === DOWN_ARROW) {
for (let x = 0; x < 4; x ++) {
const [collapsed, previous] = collapse([board[12 + x], board[8 + x], board[4 + x], board[x]]);
board[12 + x] = collapsed[0] || null;
board[ 8 + x] = collapsed[1] || null;
board[ 4 + x] = collapsed[2] || null;
board[ x] = collapsed[3] || null;
if (collapsed[0]) transitions[x + 12] = [x + 12 - 4 * previous[0], frameCount];
if (collapsed[1]) transitions[x + 8] = [x + 12 - 4 * previous[1], frameCount];
if (collapsed[2]) transitions[x + 4] = [x + 12 - 4 * previous[2], frameCount];
if (collapsed[3]) transitions[x ] = [x + 12 - 4 * previous[3], frameCount];
}
}
else if (direction === UP_ARROW) {
for (let x = 0; x < 4; x ++) {
const [collapsed, previous] = collapse([board[x], board[4 + x], board[8 + x], board[12 + x]]);
board[ x] = collapsed[0] || null;
board[ 4 + x] = collapsed[1] || null;
board[ 8 + x] = collapsed[2] || null;
board[12 + x] = collapsed[3] || null;
if (collapsed[0]) transitions[x ] = [x + 4 * previous[0], frameCount];
if (collapsed[1]) transitions[x + 4] = [x + 4 * previous[1], frameCount];
if (collapsed[2]) transitions[x + 8] = [x + 4 * previous[2], frameCount];
if (collapsed[3]) transitions[x + 12] = [x + 4 * previous[3], frameCount];
}
}
// Did the board change?
return board.some((x, i) => x !== oldBoard[i]);
}
function generateTable() {
function collapse(group) {
function collapseRecursive(a) {
if (Array.isArray(a) && a.length === 0) return a;
if (a[0] === null) return collapseRecursive(a.slice(1));
if (a.slice(1).every(x => x === null)) return a;
if (a[1] === null) return collapseRecursive([a[0], a.slice(2)]);
if (a[0] === a[1]) return [2 * a[0], collapseRecursive(a.slice(2))];
return [a[0], collapseRecursive(a.slice(1))];
}
const collapsed = collapseRecursive(group).filter(x => x !== null);
while (collapsed.length < 4) collapsed.push(null);
return collapsed;
}
const z = new Array(18).fill().map((_, i) => i === 17 ? null : pow(2, i + 1));
for (const a of z) {
table[a] = {};
for (const b of z) {
table[a][b] = {};
for (const c of z) {
table[a][b][c] = {};
for (const d of z) {
const group = [a, b, c, d],
collapsed = collapse(group);
if (collapsed.some((x, i) => x !== group[i])) table[a][b][c][d] = collapsed;
}
}
}
}
}
function moveTransitionless(board, direction) {
if (direction === RIGHT_ARROW) {
for (let i = 0; i < 16; i += 4) {
const collapsed = table[board[i + 3]][board[i + 2]][board[i + 1]][board[i]];
if (collapsed) {
board[i + 3] = collapsed[0];
board[i + 2] = collapsed[1];
board[i + 1] = collapsed[2];
board[i ] = collapsed[3];
return true;
}
}
}
else if (direction === LEFT_ARROW) {
for (let i = 0; i < 16; i += 4) {
const collapsed = table[board[i]][board[i + 1]][board[i + 2]][board[i + 3]];
if (collapsed) {
board[i ] = collapsed[0];
board[i + 1] = collapsed[1];
board[i + 2] = collapsed[2];
board[i + 3] = collapsed[3];
return true;
}
}
}
else if (direction === DOWN_ARROW) {
for (let x = 0; x < 4; x ++) {
const collapsed = table[board[12 + x]][board[8 + x]][board[4 + x]][board[x]];
if (collapsed) {
board[12 + x] = collapsed[0];
board[ 8 + x] = collapsed[1];
board[ 4 + x] = collapsed[2];
board[ x] = collapsed[3];
return true;
}
}
}
else if (direction === UP_ARROW) {
for (let x = 0; x < 4; x ++) {
const collapsed = table[board[x]][board[4 + x]][board[8 + x]][board[12 + x]];
if (collapsed) {
board[ x] = collapsed[0];
board[ 4 + x] = collapsed[1];
board[ 8 + x] = collapsed[2];
board[12 + x] = collapsed[3];
return true;
}
}
}
}
function addTile(board, scale=false) {
const open = [];
for (let i = 0; i < 16; i ++)
if (!board[i]) open.push(i);
const i = open[Math.floor(Math.random() * open.length)];
board[i] = Math.random() < 0.1 ? 4 : 2;
if (scale) scaling[i] = frameCount;
}
function setup() {
createCanvas(500, 500);
noStroke();
textFont(font);
textAlign(CENTER, CENTER);
for (const direction of [RIGHT_ARROW, LEFT_ARROW, UP_ARROW, DOWN_ARROW]) directions.add(direction);
numbers[ 2] = ["#EEE4DA", "#776E65", 60, 44];
numbers[ 4] = ["#ECDFC4", "#776E65", 60, 44];
numbers[ 8] = ["#F2B179", "#F9F6F2", 60, 44];
numbers[ 16] = ["#F59563", "#F9F6F2", 60, 44];
numbers[ 32] = ["#F67C5F", "#F9F6F2", 60, 44];
numbers[ 64] = ["#F65E3B", "#F9F6F2", 60, 44];
numbers[ 128] = ["#EDCF72", "#F9F6F2", 45, 47];
numbers[ 256] = ["#EDCC61", "#F9F6F2", 45, 47];
numbers[ 512] = ["#EDC850", "#F9F6F2", 45, 47];
numbers[ 1024] = ["#EDC53F", "#F9F6F2", 38, 48];
numbers[ 2048] = ["#EDC22E", "#F9F6F2", 38, 48];
numbers[ 4096] = ["#3C3A32", "#F9F6F2", 38, 48];
numbers[ 8192] = ["#3C3A32", "#F9F6F2", 38, 48];
numbers[ 16384] = ["#3C3A32", "#F9F6F2", 32, 49];
numbers[ 32768] = ["#3C3A32", "#F9F6F2", 32, 49];
numbers[ 65536] = ["#3C3A32", "#F9F6F2", 32, 49];
numbers[131072] = ["#3C3A32", "#F9F6F2", 26, 52];
generateTable();
for (let i = 0; i < 2; i ++) addTile(board);
}
// const hist = [];
function draw() {
// board[0] = 2;
// for (let i = 1; i < 16; i ++) board[i] = null;
// hist.push(frameRate());
// if (hist.length > 100) hist.shift();
// console.log(hist.reduce((a, b) => a + b) / hist.length);
if (toMake > 0) {
update(board, getMove());
toMake --;
}
fill("#BBADA0");
rect(0, 0, width, height, 10);
fill("#CDC1B4");
for (let x = 0; x < 4; x ++)
for (let y = 0; y < 4; y ++)
rect(12 + 122 * x, 12 + 122 * y, 110, 110, 4);
for (let x = 0; x < 4; x ++) {
for (let y = 0; y < 4; y ++) {
const i = 4 * y + x,
value = board[i],
transition = transitions[i];
if (value) {
fill(numbers[value][0]);
let dx, dy;
if (transition) {
const t = min(frameCount - transition[1], 5) / 5;
dx = 12 + 122 * (t * x + (1 - t) * (transition[0] % 4)),
dy = 12 + 122 * (t * y + (1 - t) * Math.floor(transition[0] / 4));
} else {
dx = 12 + 122 * x,
dy = 12 + 122 * y;
}
if (scaling[i] !== undefined) {
push();
translate(dx + 55, dy + 55);
const t = min(frameCount - scaling[i], 5) / 5;
scale(Math.sqrt(t));
translate(-dx - 55, -dy - 55);
}
rect(dx, dy, 110, 110, 4);
if (value) {
fill(numbers[value][1]);
textSize(numbers[value][2]);
text(value, dx + 55, dy + numbers[value][3]);
}
if (scaling[i] !== undefined) pop();
}
}
}
for (const i in transitions)
if (frameCount === transitions[i][1] + 5) delete transitions[i];
for (const i in scaling)
if (frameCount === scaling[i] + 5) delete scaling[i];
if (Object.keys(transitions).length === 0 && Object.keys(scaling).length === 0) noLoop();
}