aboutsummaryrefslogtreecommitdiff
path: root/docs/bqn.js
diff options
context:
space:
mode:
authorMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-03 12:26:52 -0400
committerMarshall Lochbaum <mwlochbaum@gmail.com>2020-09-03 12:26:52 -0400
commitc0970253b650961ea519d053536eaf923726bb6b (patch)
tree034e6defc1a5ca80dcaed2749e223a9c5fd6da70 /docs/bqn.js
parent7c00f3d8cebd01591dbb913b084d8494d42a2dd2 (diff)
Use affine characters for + and -
Diffstat (limited to 'docs/bqn.js')
-rw-r--r--docs/bqn.js30
1 files changed, 26 insertions, 4 deletions
diff --git a/docs/bqn.js b/docs/bqn.js
index d1d9fe1a..8fe6bee4 100644
--- a/docs/bqn.js
+++ b/docs/bqn.js
@@ -1,3 +1,4 @@
+"use strict";
// Virtual machine
let err = () => { throw Error(); }
let assert = x => { if (!x) throw Error(); }
@@ -83,6 +84,27 @@ let str = s => list(Array.from(s));
let unstr = a => has(a)?a.join(""):a;
let m1 = m => {m.m=1;return m;}
let m2 = m => {m.m=2;return m;}
+let ctrans = (c,t) => String.fromCodePoint(c.codePointAt(0)+t);
+let plus = (x,w) => {
+ if (!has(w)) return x;
+ let s=typeof w, t=typeof x;
+ if (s==="number" && t==="number") return w+x;
+ if (s==="number" && t==="string") return ctrans(x,w);
+ if (s==="string" && t==="number") return ctrans(w,x);
+ if (s==="string" && t==="string") throw Error("Cannot add two characters");
+ throw Error("Cannot add non-data values");
+}
+let minus = (x,w) => {
+ if (typeof x!=="number") {
+ if (has(w)&&typeof w==="string") return w.codePointAt(0)-x.codePointAt(0);
+ throw Error("Can only negate numbers");
+ }
+ if (!has(w)) return -x;
+ let s=typeof w;
+ if (s==="number") return w-x;
+ if (s==="string") return ctrans(w,-x);
+ throw Error("Cannot subtract from non-data value");
+}
let lesseq = (x,w) => {
let s=typeof w, t=typeof x;
return +(s!==t ? s<=t : w<=x);
@@ -121,8 +143,8 @@ let provide = [
,group_len // GroupLen
,group_ord // GroupOrd
,(x,w) => {if(x!==1)throw Error(unstr(w)); return x;} // !
- ,(x,w) => has(w)?w+x:x // +
- ,(x,w) => (has(w)?w:0)-x // -
+ ,plus // +
+ ,minus // -
,(x,w) => w*x // ×
,(x,w) => (has(w)?w:1)/x // ÷
,(x,w) => has(w)?Math.pow(w,x):Math.exp(x) // ⋆
@@ -150,9 +172,9 @@ runtime.map((r,i) => {
// Compiler
let compile = run(
- new Uint8Array([0,72,22,0,0,11,14,0,73,22,0,1,11,14,0,74,22,0,2,11,14,0,75,22,0,3,11,14,0,76,22,0,4,11,14,0,77,22,0,5,11,0,78,0,79,0,80,0,21,21,0,1,17,0,81,0,82,0,83,0,84,0,85,21,0,2,0,86,0,87,0,21,21,0,3,17,0,21,21,0,4,17,21,0,0,0,21,0,88,17,3,13,22,0,6,11,0,21,16,22,0,7,11,14,15,1,22,0,8,11,14,15,2,21,0,7,7,22,0,9,11,14,21,0,6,0,39,0,13,7,16,0,19,0,21,0,53,19,0,23,0,13,19,0,44,0,0,7,9,0,48,0,37,0,39,0,22,7,7,8,16,22,0,10,22,0,11,22,0,12,22,0,13,22,0,14,22,0,15,22,0,16,22,0,17,22,0,18,22,0,19,22,0,20,22,0,21,22,0,22,4,13,11,14,21,0,21,0,30,16,0,0,0,54,17,22,0,23,11,14,0,30,0,48,0,1,8,0,12,0,9,0,15,0,47,0,53,8,19,0,30,0,47,0,52,8,19,22,0,24,11,14,21,0,6,0,23,0,55,17,0,39,0,13,7,16,0,42,0,0,7,16,22,0,25,11,14,0,53,0,21,0,58,0,25,16,0,26,16,0,27,0,57,17,17,0,21,21,0,6,0,23,0,56,17,0,39,0,13,7,16,0,21,0,53,17,0,27,16,0,23,21,0,18,0,30,0,52,17,0,1,21,0,25,17,17,17,22,0,26,11,14,0,56,0,53,3,2,0,40,0,1,7,0,56,0,57,0,59,3,3,17,0,20,16,22,0,27,11,14,15,3,22,0,28,11,14,15,4,22,0,29,11,14,0,30,0,47,0,52,8,0,24,0,47,0,52,8,21,0,29,3,3,0,50,0,29,0,31,0,91,0,21,0,96,17,19,0,30,9,8,22,0,30,11,14,15,5,22,0,31,11,14,15,6,22,0,32,11,14,15,7,22,0,33,11,14,15,8,22,0,34,11,14,15,9,22,0,35,11,25,21,0,1,0,33,0,90,0,91,3,2,17,0,42,0,10,7,16,0,8,16,0,36,0,89,17,14,0,53,0,36,0,47,0,21,8,0,92,21,0,1,0,13,16,0,11,0,52,17,0,37,0,27,7,0,93,17,0,94,21,0,1,3,4,17,25,21,0,1,0,48,0,29,8,0,48,0,17,0,51,0,18,0,27,0,13,19,0,45,21,1,8,8,8,8,0,18,0,19,19,22,0,2,11,14,21,0,1,0,28,16,22,0,3,11,14,0,19,0,28,21,0,1,0,29,21,0,3,17,19,0,6,0,52,19,0,37,0,1,7,0,52,19,0,37,0,29,7,21,0,3,19,21,0,2,0,19,19,25,0,95,0,14,21,0,1,17,22,0,3,11,14,0,90,0,14,21,0,1,17,0,9,0,47,0,24,0,47,0,58,8,0,23,0,13,19,8,16,0,27,16,22,0,4,11,14,0,91,0,14,21,0,1,17,22,0,5,11,0,27,16,22,0,6,11,14,21,0,4,21,0,6,0,24,0,60,17,21,0,3,0,27,16,3,3,0,21,16,22,0,7,11,0,28,16,22,0,8,11,14,21,0,7,0,29,21,0,8,17,22,0,7,12,14,21,0,4,0,0,0,58,17,21,0,6,0,24,0,52,17,0,52,0,21,21,1,1,0,14,21,0,1,17,17,0,27,16,0,27,0,47,21,0,3,0,44,0,0,7,16,0,21,0,53,17,0,48,0,29,0,45,0,19,0,21,0,53,19,0,24,0,60,19,0,1,0,19,19,8,8,8,16,3,3,0,21,16,0,29,21,0,8,17,22,0,9,11,14,15,10,0,51,15,11,8,22,0,10,11,14,21,0,9,0,28,21,0,7,17,0,13,0,48,0,21,8,16,0,13,0,37,0,23,7,0,52,19,0,48,21,0,10,8,16,0,24,0,60,17,22,0,11,11,14,21,0,9,0,38,0,21,7,21,0,7,17,0,27,21,0,11,17,22,0,12,11,14,0,20,0,37,0,21,7,21,0,1,0,13,16,19,0,41,0,27,7,9,0,24,0,60,19,22,0,13,11,14,21,0,12,21,0,13,16,22,0,14,11,0,44,0,13,7,16,0,8,16,22,0,15,11,14,21,0,5,0,9,0,47,0,19,0,37,0,21,7,0,53,19,0,24,0,52,19,8,16,0,9,21,0,14,17,0,9,21,0,15,17,22,0,16,11,0,8,16,0,9,22,0,15,13,14,21,0,12,0,27,21,0,3,0,29,21,0,7,0,27,21,0,11,17,17,0,8,16,17,22,0,17,11,14,21,0,17,21,0,13,16,0,44,0,13,7,16,0,2,21,0,17,0,38,0,30,7,16,21,0,13,16,0,37,0,1,7,21,0,16,17,0,44,0,0,7,16,17,0,37,0,1,7,0,52,17,0,37,0,35,7,21,0,1,17,22,0,18,11,0,34,16,22,0,19,11,14,21,0,17,0,38,0,26,0,45,0,30,8,7,16,21,0,13,16,0,27,21,0,15,17,22,0,20,11,14,21,0,1,0,27,21,0,15,17,0,27,0,47,21,0,20,0,8,16,8,0,49,21,1,9,8,16,22,0,21,11,14,21,1,19,21,1,20,21,1,21,3,3,0,39,0,30,7,0,52,17,0,42,0,0,7,16,0,22,21,1,19,0,30,16,17,21,1,24,21,0,21,17,22,0,22,11,0,11,0,47,0,19,0,21,0,53,19,0,23,0,13,19,8,16,22,0,23,11,14,21,1,3,0,13,16,22,0,24,11,14,21,1,21,0,42,0,0,7,16,0,0,0,60,17,0,14,21,0,21,17,22,0,25,11,14,21,0,21,0,15,0,47,21,1,21,0,30,16,0,48,0,0,8,8,0,2,0,18,19,0,1,0,19,19,21,0,24,17,0,35,21,0,23,0,44,0,0,7,16,0,2,21,0,22,0,11,21,0,25,17,17,0,37,0,1,7,0,52,17,17,22,0,26,11,14,21,0,21,0,27,21,0,23,17,0,37,0,1,7,21,1,21,0,30,16,17,0,37,0,3,0,45,0,5,8,7,21,0,24,17,22,0,27,11,14,21,0,26,0,31,16,22,0,28,11,0,11,0,47,0,44,0,6,7,0,21,0,60,19,0,23,0,13,19,8,16,22,0,29,11,14,21,0,27,0,27,21,0,29,17,0,12,0,53,17,22,0,30,11,0,13,16,22,0,31,11,14,21,0,27,0,6,0,53,17,0,14,0,47,0,58,8,0,48,0,9,8,0,0,0,19,19,21,0,22,0,11,0,47,0,19,0,37,0,21,7,0,53,19,0,24,0,52,19,8,16,0,37,0,27,7,21,0,25,17,17,22,0,27,12,14,21,0,21,0,27,0,47,21,0,20,8,0,49,21,0,18,0,31,21,0,19,17,0,0,21,0,31,17,0,0,21,1,25,17,8,16,0,27,0,47,21,0,23,8,0,49,21,0,30,0,28,16,0,28,16,0,29,21,0,28,17,0,0,21,1,25,17,8,16,0,27,21,1,22,21,1,24,21,0,21,17,0,10,21,0,22,17,0,8,16,0,10,21,0,23,17,17,22,0,21,12,14,21,1,13,21,1,24,21,0,21,17,0,9,0,47,0,19,0,10,21,1,15,0,30,16,0,0,0,58,0,54,3,2,17,0,33,21,0,21,17,19,0,21,0,52,19,0,23,0,13,19,8,16,0,8,16,0,37,0,27,7,22,0,21,13,14,21,1,13,21,1,24,21,0,21,17,0,9,21,1,15,0,30,16,0,0,0,56,0,57,3,2,17,0,33,21,0,21,17,0,37,0,21,7,0,52,17,0,24,0,52,17,17,0,8,16,0,37,0,27,7,22,0,21,13,14,21,1,25,0,1,21,0,21,17,21,0,31,0,48,0,11,8,0,9,0,15,0,47,0,53,8,19,16,22,0,32,11,14,21,1,26,0,29,21,0,21,0,5,21,1,25,17,17,0,27,0,47,21,0,32,8,0,49,21,0,27,8,16,22,0,33,11,14,21,1,18,0,30,16,0,37,0,22,7,0,57,17,21,1,24,21,0,21,17,0,2,0,57,17,0,0,22,0,21,13,14,21,0,21,21,0,33,21,0,30,0,8,16,0,42,0,0,7,16,21,0,19,0,21,21,0,26,0,29,21,0,29,0,27,16,0,27,21,0,30,17,17,17,3,4,25,21,1,20,0,30,16,0,0,0,47,0,25,8,0,54,17,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,1,19,0,30,16,0,48,0,1,8,0,26,0,45,0,42,0,2,0,47,0,61,8,0,48,0,0,8,7,8,9,22,0,7,11,14,21,0,7,0,24,0,47,0,52,8,21,0,7,9,0,1,9,3,2,0,50,0,30,0,14,21,0,3,19,8,22,0,8,11,14,0,24,0,47,0,52,0,48,0,0,8,8,0,53,0,13,0,4,0,61,19,0,3,21,0,7,19,3,2,0,50,0,13,0,11,0,53,19,8,9,0,0,0,23,0,45,21,0,7,8,19,0,47,21,0,4,0,11,16,0,48,0,31,8,8,22,0,9,11,14,0,62,0,63,21,0,9,3,3,0,50,0,29,0,31,21,0,5,21,0,6,3,2,19,0,30,9,8,22,0,10,11,14,21,1,23,0,31,21,0,1,17,0,30,16,22,0,11,11,14,21,0,1,0,23,21,0,11,17,21,0,10,0,24,0,47,0,52,8,21,0,10,9,0,1,9,3,2,0,50,0,30,0,14,21,0,3,19,8,16,22,0,12,11,14,21,0,12,21,0,1,0,13,16,0,11,21,0,11,17,0,51,0,37,0,18,0,24,0,52,0,0,21,0,11,17,19,21,0,8,9,0,4,0,61,19,0,48,0,2,8,7,8,21,0,1,17,25,0,64,22,0,3,11,14,21,0,1,0,6,0,52,17,0,41,0,4,7,21,0,3,17,0,5,16,22,0,4,11,14,21,0,4,0,0,0,52,17,0,44,0,0,7,0,48,0,19,0,21,0,53,19,0,23,0,13,19,0,48,0,27,8,0,1,0,19,0,30,0,60,19,0,25,9,19,8,16,0,28,16,0,28,16,22,0,5,11,14,21,0,1,15,12,21,0,4,17,0,29,21,0,5,17,25,0,40,0,14,7,0,43,15,13,7,0,19,0,45,0,38,0,53,7,8,19,0,30,0,60,19,22,0,3,11,14,15,14,22,0,4,11,14,0,53,21,0,4,0,98,8,0,37,0,52,21,0,4,0,99,8,7,3,2,0,50,0,13,0,46,0,12,8,8,22,0,5,11,14,21,0,1,21,0,5,0,100,3,2,0,50,0,13,0,46,0,5,8,0,11,21,0,3,19,8,21,0,2,17,0,37,0,36,7,0,53,17,25,0,93,0,27,21,0,1,0,13,16,0,11,0,52,17,17,0,21,0,101,17,0,37,0,36,7,0,53,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,21,1,15,0,30,0,48,0,1,8,0,7,0,58,19,0,4,0,60,19,0,2,21,1,24,19,21,0,1,17,22,0,5,11,0,44,0,0,7,16,22,0,6,11,0,28,16,22,0,7,11,14,21,1,15,0,30,16,0,0,0,58,17,0,37,0,22,7,0,58,17,21,1,24,21,0,1,17,0,2,21,0,5,17,22,0,8,11,14,21,0,1,0,29,0,47,21,0,7,8,0,46,0,27,0,47,0,60,0,48,0,14,8,8,0,37,0,1,7,0,52,19,0,17,0,51,21,1,32,8,0,27,0,47,0,52,0,48,0,14,8,8,19,8,21,0,5,17,14,21,0,6,0,30,21,0,7,0,30,16,17,0,15,0,53,17,0,36,0,102,17,14,21,1,16,21,1,24,21,0,1,17,0,10,0,47,0,26,0,47,0,52,8,8,16,22,0,9,11,14,21,0,9,0,29,0,47,21,0,7,8,0,49,0,26,0,47,0,60,8,8,16,22,0,10,11,14,21,0,10,0,10,21,0,9,17,22,0,11,11,14,21,0,9,0,29,21,0,7,17,0,28,16,0,37,0,29,7,22,0,7,13,14,21,0,11,0,8,16,0,2,22,0,4,13,14,0,53,0,12,21,0,5,17,22,0,12,11,14,21,0,4,0,15,0,52,17,0,10,21,0,4,0,14,0,56,17,0,29,0,47,21,0,7,8,0,49,0,26,0,47,0,60,8,8,16,17,0,19,0,2,0,47,0,13,0,45,0,25,8,0,0,0,52,19,8,0,44,0,6,7,9,0,46,0,14,8,0,10,0,47,0,8,8,19,0,9,0,18,19,21,1,15,0,30,16,0,0,0,52,17,0,14,21,0,1,17,0,11,21,0,11,17,17,0,0,22,0,4,13,14,21,1,13,21,1,24,21,0,1,17,0,10,21,0,9,17,0,10,21,0,12,17,0,29,0,37,0,21,7,0,1,0,21,0,45,0,44,0,0,7,8,19,0,52,19,0,28,0,48,0,28,0,48,0,37,0,29,7,8,0,1,0,37,0,29,7,19,0,29,0,47,0,28,8,0,18,19,8,0,18,0,21,0,60,19,19,21,0,7,17,0,24,0,60,17,0,0,0,52,17,0,44,0,0,7,16,0,28,16,22,0,13,11,14,21,0,8,0,29,21,0,13,17,0,44,0,0,7,16,22,0,14,11,0,28,16,22,0,15,11,14,21,0,15,0,37,0,29,7,22,0,13,13,14,21,0,15,0,37,0,29,7,22,0,14,13,14,21,0,13,0,37,0,29,7,22,0,1,13,14,21,0,8,0,29,21,0,13,17,22,0,16,11,14,0,53,0,11,21,0,16,17,0,27,16,22,0,17,11,14,0,53,0,12,21,0,16,17,22,0,18,11,0,44,0,0,7,16,22,0,19,11,14,0,53,0,48,0,21,8,0,44,0,0,7,9,0,27,0,52,0,21,21,0,18,17,19,0,19,0,21,0,53,19,0,23,0,13,19,0,48,0,1,8,9,22,0,20,11,14,0,14,0,45,21,0,20,8,0,24,0,52,19,0,11,0,53,19,22,0,21,11,14,21,0,1,0,28,21,1,18,0,30,16,0,0,0,57,17,0,0,0,53,0,56,0,54,0,57,3,4,17,17,21,0,21,0,47,0,56,8,0,2,0,58,19,0,6,21,0,21,0,47,0,58,8,19,0,2,0,58,19,0,0,21,0,21,0,47,0,52,8,19,0,21,0,53,19,16,22,0,22,11,14,21,1,27,0,29,21,0,22,17,22,0,23,11,14,21,0,4,0,29,21,0,13,17,0,29,0,47,21,0,17,8,0,49,0,54,0,25,16,0,27,0,47,0,15,0,47,0,58,8,0,0,0,52,19,8,16,0,29,21,0,22,0,24,0,52,17,17,8,16,22,0,4,12,14,21,1,25,0,1,21,0,1,17,22,0,24,11,21,0,3,0,48,0,11,8,0,9,0,15,0,47,0,53,8,19,16,22,0,25,11,0,27,16,22,0,26,11,14,21,0,1,0,29,21,0,26,17,22,0,27,11,14,21,1,18,21,1,24,21,0,1,17,0,27,16,22,0,28,11,14,21,1,14,0,30,16,0,14,21,0,1,17,0,29,21,1,14,21,1,24,21,0,1,17,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,17,22,0,29,11,14,21,0,8,0,1,21,0,5,17,0,29,21,0,13,17,0,44,0,0,7,16,0,28,16,22,0,7,12,14,21,0,13,0,29,21,0,7,17,22,0,30,11,14,21,0,9,0,1,21,0,10,17,0,29,21,0,30,17,0,12,0,27,0,46,0,1,8,0,11,19,0,53,17,0,37,0,3,7,0,58,17,0,0,0,52,17,22,0,31,11,14,21,1,15,0,30,16,0,0,0,57,17,0,14,21,0,1,17,0,29,21,0,7,17,0,27,16,22,0,32,11,14,21,0,9,0,29,21,0,30,17,0,28,16,22,0,33,11,0,37,0,29,7,22,0,7,13,14,21,0,13,0,29,21,0,7,17,22,0,30,12,14,21,0,7,0,37,0,29,7,22,0,1,13,14,21,0,7,0,37,0,29,7,22,0,4,13,14,21,0,30,0,37,0,29,7,22,0,12,13,14,21,0,9,0,12,21,0,10,17,0,29,21,0,30,17,0,27,16,22,0,34,11,14,21,0,7,0,28,16,22,0,35,11,14,21,0,33,0,28,16,0,29,22,0,32,13,14,21,1,13,21,1,24,21,0,1,17,22,0,36,11,14,21,0,9,0,29,21,0,30,17,0,10,21,0,12,17,0,10,21,0,36,17,22,0,37,11,14,21,1,14,0,30,16,0,37,0,22,7,0,58,17,21,1,24,21,0,1,17,22,0,38,11,14,21,0,38,0,10,21,0,37,17,0,1,22,0,4,13,14,0,58,0,16,21,0,4,17,22,0,39,11,14,0,56,0,14,21,0,4,17,0,26,0,52,17,0,10,0,52,0,16,21,0,4,17,17,22,0,40,11,14,21,0,40,0,29,21,0,37,0,26,0,60,17,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,17,22,0,41,11,14,21,0,40,0,26,0,52,17,0,9,21,1,14,0,30,16,0,0,0,52,17,0,14,21,0,1,17,17,0,11,21,0,41,17,22,0,42,11,14,0,56,0,14,21,0,4,17,0,26,0,52,17,0,11,21,0,38,17,0,10,21,0,39,17,22,0,43,11,14,21,0,42,0,10,21,0,43,17,0,8,16,0,26,16,0,2,0,45,0,44,0,6,7,8,0,1,0,18,19,0,47,0,13,0,45,0,25,8,8,16,0,26,16,22,0,44,11,14,21,0,38,0,27,16,21,0,44,0,48,0,29,8,0,0,0,52,19,0,0,0,19,19,16,22,0,45,11,14,0,52,0,1,21,0,45,17,0,37,0,21,7,21,0,1,0,13,16,17,0,41,0,27,7,16,0,24,0,60,17,0,19,0,21,0,53,19,0,23,0,13,19,0,48,0,1,8,16,0,29,21,0,35,17,0,44,0,0,7,16,0,26,0,60,17,22,0,46,11,0,29,21,0,7,17,22,0,47,11,14,21,0,4,0,27,0,47,21,0,47,8,0,49,0,39,0,60,7,8,16,22,0,4,12,14,21,0,43,0,8,16,0,44,0,0,7,0,2,0,45,0,44,0,6,7,8,0,1,0,19,19,21,0,37,19,0,15,0,11,0,7,19,0,58,19,0,9,0,19,19,16,0,9,21,0,37,0,2,0,47,0,13,0,45,0,25,8,0,0,0,52,19,8,0,44,0,6,7,9,0,46,0,15,8,21,0,38,17,17,22,0,48,11,14,21,0,38,0,10,21,0,37,17,0,37,0,21,7,0,53,17,0,24,0,52,17,0,12,21,0,39,17,22,0,49,11,14,21,0,49,0,27,16,0,26,16,22,0,50,11,14,21,0,49,0,26,0,60,17,0,11,21,0,39,17,0,10,0,52,0,14,21,0,4,17,17,0,11,21,0,49,0,26,0,52,17,0,9,21,0,43,17,17,0,9,21,0,41,0,8,16,0,10,21,0,48,17,17,0,11,21,0,47,0,26,0,52,17,17,0,27,16,22,0,51,11,14,0,53,0,14,21,0,4,17,0,11,21,0,43,17,0,10,0,53,0,16,21,0,4,17,0,9,21,0,41,17,17,0,9,21,1,17,0,30,16,0,13,21,0,1,17,17,0,37,0,21,7,0,53,17,0,24,0,52,17,0,29,21,0,51,17,22,0,52,11,14,21,0,3,0,0,21,1,25,17,0,16,21,0,1,17,22,0,53,11,14,21,1,12,0,42,0,0,7,16,0,0,0,60,17,0,15,21,0,1,17,0,10,21,0,53,17,0,27,16,22,0,54,11,14,21,0,1,0,29,21,0,54,17,22,0,55,11,0,34,16,0,9,16,22,0,56,11,14,21,1,15,0,30,16,0,0,0,54,17,0,14,21,0,1,0,27,21,0,12,17,17,22,0,57,11,14,0,52,0,21,21,0,37,17,0,9,21,0,12,0,21,0,52,17,17,0,1,0,53,0,21,21,0,36,17,17,0,44,0,0,7,16,0,27,0,52,0,21,21,0,12,17,17,0,24,0,47,0,1,8,0,1,0,24,19,0,52,17,0,27,21,0,57,17,0,0,0,52,17,22,0,58,11,14,21,0,57,0,21,0,53,17,0,29,0,47,0,44,0,0,7,8,21,0,12,17,0,12,21,0,36,17,0,27,16,22,0,59,11,14,21,1,15,0,30,16,0,0,0,58,17,0,14,21,0,1,17,0,27,16,22,0,60,11,14,21,0,46,0,9,21,0,29,17,0,9,21,0,25,17,22,0,61,11,0,29,21,0,26,17,22,0,62,11,14,21,0,61,21,0,20,16,22,0,63,11,14,21,0,19,0,29,21,0,26,17,0,37,21,0,15,0,29,21,0,17,17,0,21,21,0,1,0,13,16,17,7,0,29,0,27,0,47,21,0,62,8,19,0,21,21,0,15,0,27,21,0,18,17,0,21,0,60,17,0,48,0,29,8,19,16,22,0,64,11,14,21,0,64,0,28,16,0,29,0,47,21,0,27,0,27,0,47,21,0,62,8,0,48,0,21,8,16,22,0,65,11,0,48,0,29,8,0,28,9,8,16,22,0,66,11,14,21,0,64,0,19,0,29,21,0,66,0,27,0,47,0,15,0,47,21,0,26,0,13,16,8,8,16,19,0,13,0,47,0,19,0,21,0,53,19,0,23,0,13,19,8,9,0,46,0,10,8,21,0,65,17,0,42,0,9,7,0,52,17,0,36,0,103,17,14,21,0,66,0,29,0,47,21,0,62,0,37,0,27,7,16,0,1,16,0,21,21,0,62,17,0,48,0,29,0,45,0,44,0,0,7,8,8,0,28,9,8,16,0,27,0,47,21,0,26,0,13,16,0,48,0,11,8,8,16,22,0,66,12,14,21,0,66,0,37,0,29,7,22,0,62,13,14,21,0,27,0,29,21,0,66,17,0,13,0,47,0,19,0,21,0,53,19,0,23,0,13,19,8,0,11,21,0,62,19,0,48,0,19,0,42,0,10,7,0,53,19,0,51,0,37,0,27,0,45,21,1,33,8,7,8,8,16,14,21,0,26,0,29,0,47,21,0,66,8,0,49,0,29,0,47,21,0,62,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,8,8,16,22,0,67,11,14,21,0,24,0,29,21,0,28,17,0,0,0,58,17,0,15,0,47,0,53,8,0,48,0,0,8,16,0,0,21,0,22,0,7,0,58,17,0,2,0,56,17,0,29,21,0,19,0,29,21,0,28,17,17,17,0,21,21,0,61,0,44,0,0,7,16,0,8,0,47,0,2,0,47,21,0,18,8,0,44,0,6,7,9,8,16,0,1,21,0,23,0,29,21,0,19,17,17,0,29,21,0,67,17,17,22,0,68,11,14,21,0,28,0,21,21,0,26,17,22,0,69,11,0,11,16,0,20,0,56,17,0,21,16,22,0,70,11,14,21,0,46,0,29,21,0,69,17,0,0,0,65,17,21,0,28,0,39,0,53,7,16,0,21,21,0,67,21,0,14,0,48,0,29,8,0,46,0,1,8,21,0,26,17,17,21,0,68,3,3,22,0,71,11,14,21,0,35,0,29,22,0,17,13,14,21,0,54,21,0,54,21,0,17,21,0,17,21,0,60,21,0,59,21,0,32,21,0,32,21,0,34,21,0,34,21,0,45,21,0,44,0,29,21,0,50,17,0,6,0,52,17,0,0,21,0,50,17,21,0,52,0,0,21,0,51,17,0,0,0,47,21,0,44,0,48,0,29,8,0,2,21,0,52,19,8,16,3,13,0,21,16,0,37,0,29,7,21,0,7,17,0,21,21,0,70,17,0,28,16,22,0,72,11,14,21,0,54,0,39,0,53,7,16,21,0,55,0,31,21,0,56,17,21,0,17,0,39,0,66,7,16,21,0,17,0,13,16,0,25,16,0,0,0,52,17,3,4,0,21,21,0,71,17,0,21,16,22,0,73,11,14,21,0,60,0,39,0,67,7,16,21,0,59,0,39,0,68,7,16,21,0,47,0,29,21,0,32,17,0,0,0,56,17,21,0,58,21,0,47,0,29,21,0,34,17,0,0,0,56,17,21,0,31,21,0,1,0,0,21,0,42,17,0,27,21,0,38,17,0,0,21,1,14,0,30,16,0,1,0,69,17,17,21,0,4,0,29,21,0,50,17,0,0,0,57,17,21,0,41,0,29,21,0,51,17,0,2,0,71,17,0,1,21,0,52,17,0,0,0,70,17,0,14,0,47,0,61,8,0,2,0,55,19,0,0,0,19,19,16,3,9,0,21,16,0,21,21,0,73,17,0,29,21,0,72,17,22,0,74,11,14,21,0,23,0,0,21,0,63,17,0,39,0,11,0,46,0,22,8,7,21,0,60,0,13,0,46,0,22,8,21,0,73,17,21,1,24,21,0,72,17,0,21,0,52,17,0,27,16,0,37,0,29,7,21,0,74,0,6,0,52,17,0,41,0,4,7,0,64,17,0,5,16,0,0,0,52,17,0,21,0,53,17,0,44,0,0,7,16,17,17,0,39,0,21,7,0,58,0,25,0,46,0,26,0,48,0,40,0,22,7,8,8,0,56,17,0,20,16,0,29,21,0,22,17,17,22,0,75,11,14,0,67,0,21,21,0,74,17,21,1,31,16,21,0,56,21,0,75,3,3,25,21,0,1,21,1,28,16,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,0,3,21,1,34,21,0,5,21,0,4,3,2,17,22,0,7,22,0,8,22,0,9,4,3,11,14,21,0,6,0,39,21,1,30,7,16,0,21,21,0,2,17,0,29,21,1,25,0,16,21,0,8,17,0,2,21,0,2,0,13,16,0,1,21,0,5,17,0,0,21,1,25,17,17,0,1,21,0,8,17,17,22,0,10,11,14,21,0,7,21,0,10,21,0,9,3,3,25,21,0,1,0,26,16,0,30,16,0,14,0,53,17,25,21,0,1,0,29,0,47,21,0,2,0,27,21,0,1,17,8,0,49,0,39,0,52,7,8,16,21,1,10,21,0,2,0,37,0,29,7,16,17,25,21,0,2,0,2,16,22,0,3,11,14,21,0,1,21,0,3,0,42,0,10,7,16,0,51,0,27,0,47,21,0,3,8,0,46,21,1,3,0,48,0,3,8,0,5,9,0,48,21,0,0,8,8,0,21,0,7,0,0,21,0,3,0,48,0,2,8,19,0,47,21,1,3,8,19,8,0,52,0,1,21,0,2,17,17,25,21,0,1,0,24,0,52,17,0,37,0,21,7,0,53,17,0,0,21,0,2,17,0,44,0,6,7,16,0,6,21,0,1,17,25,0,32,0,14,0,18,0,45,0,13,8,19,0,37,0,27,7,0,19,19,0,0,21,0,2,19,0,37,0,29,7,21,2,7,19,0,21,0,88,19,0,21,21,0,1,19,0,21,0,97,19,25])
+ new Uint8Array([0,72,22,0,0,11,14,0,73,22,0,1,11,14,0,74,22,0,2,11,14,0,75,22,0,3,11,14,0,76,22,0,4,11,14,0,77,22,0,5,11,0,78,0,79,0,80,0,21,21,0,1,17,0,81,0,82,0,83,0,84,0,85,21,0,2,0,86,0,87,0,21,21,0,3,17,0,21,21,0,4,17,21,0,0,0,21,0,88,17,3,13,22,0,6,11,0,21,16,22,0,7,11,14,15,1,22,0,8,11,14,15,2,21,0,7,7,22,0,9,11,14,21,0,6,0,39,0,13,7,16,0,19,0,21,0,53,19,0,23,0,13,19,0,44,0,0,7,9,0,48,0,37,0,39,0,22,7,7,8,16,22,0,10,22,0,11,22,0,12,22,0,13,22,0,14,22,0,15,22,0,16,22,0,17,22,0,18,22,0,19,22,0,20,22,0,21,22,0,22,4,13,11,14,21,0,21,0,30,16,0,0,0,54,17,22,0,23,11,14,0,30,0,48,0,1,8,0,12,0,9,0,15,0,47,0,53,8,19,0,30,0,47,0,52,8,19,22,0,24,11,14,21,0,6,0,23,0,55,17,0,39,0,13,7,16,0,42,0,0,7,16,22,0,25,11,14,0,53,0,21,0,58,0,25,16,0,26,16,0,27,0,57,17,17,0,21,21,0,6,0,23,0,56,17,0,39,0,13,7,16,0,21,0,53,17,0,27,16,0,23,21,0,18,0,30,0,52,17,0,1,21,0,25,17,17,17,22,0,26,11,14,0,56,0,53,3,2,0,40,0,1,7,0,56,0,57,0,59,3,3,17,0,20,16,22,0,27,11,14,15,3,22,0,28,11,14,15,4,22,0,29,11,14,0,30,0,47,0,52,8,0,24,0,47,0,52,8,21,0,29,3,3,0,50,0,29,0,31,0,91,0,21,0,96,17,19,0,30,9,8,22,0,30,11,14,15,5,22,0,31,11,14,15,6,22,0,32,11,14,15,7,22,0,33,11,14,15,8,22,0,34,11,14,15,9,22,0,35,11,25,21,0,1,0,33,0,90,0,91,3,2,17,0,42,0,10,7,16,0,8,16,0,36,0,89,17,14,0,53,0,36,0,47,0,21,8,0,92,21,0,1,0,13,16,0,11,0,52,17,0,37,0,27,7,0,93,17,0,94,21,0,1,3,4,17,25,21,0,1,0,48,0,29,8,0,48,0,17,0,51,0,18,0,27,0,13,19,0,45,21,1,8,8,8,8,0,18,0,19,19,22,0,2,11,14,21,0,1,0,28,16,22,0,3,11,14,0,19,0,28,21,0,1,0,29,21,0,3,17,19,0,6,0,52,19,0,37,0,1,7,0,52,19,0,37,0,29,7,21,0,3,19,21,0,2,0,19,19,25,0,95,0,14,21,0,1,17,22,0,3,11,14,0,90,0,14,21,0,1,17,0,9,0,47,0,24,0,47,0,58,8,0,23,0,13,19,8,16,0,27,16,22,0,4,11,14,0,91,0,14,21,0,1,17,22,0,5,11,0,27,16,22,0,6,11,14,21,0,4,21,0,6,0,24,0,60,17,21,0,3,0,27,16,3,3,0,21,16,22,0,7,11,0,28,16,22,0,8,11,14,21,0,7,0,29,21,0,8,17,22,0,7,12,14,21,0,4,0,0,0,58,17,21,0,6,0,24,0,52,17,0,52,0,21,21,1,1,0,14,21,0,1,17,17,0,27,16,0,27,0,47,21,0,3,0,44,0,0,7,16,0,21,0,53,17,0,48,0,29,0,45,0,19,0,21,0,53,19,0,24,0,60,19,0,1,0,19,19,8,8,8,16,3,3,0,21,16,0,29,21,0,8,17,22,0,9,11,14,15,10,0,51,15,11,8,22,0,10,11,14,21,0,9,0,28,21,0,7,17,0,13,0,48,0,21,8,16,0,13,0,37,0,23,7,0,52,19,0,48,21,0,10,8,16,0,24,0,60,17,22,0,11,11,14,21,0,9,0,38,0,21,7,21,0,7,17,0,27,21,0,11,17,22,0,12,11,14,0,20,0,37,0,21,7,21,0,1,0,13,16,19,0,41,0,27,7,9,0,24,0,60,19,22,0,13,11,14,21,0,12,21,0,13,16,22,0,14,11,0,44,0,13,7,16,0,8,16,22,0,15,11,14,21,0,5,0,9,0,47,0,19,0,37,0,21,7,0,53,19,0,24,0,52,19,8,16,0,9,21,0,14,17,0,9,21,0,15,17,22,0,16,11,0,8,16,0,9,22,0,15,13,14,21,0,12,0,27,21,0,3,0,29,21,0,7,0,27,21,0,11,17,17,0,8,16,17,22,0,17,11,14,21,0,17,21,0,13,16,0,44,0,13,7,16,0,2,21,0,17,0,38,0,30,7,16,21,0,13,16,0,37,0,1,7,21,0,16,17,0,44,0,0,7,16,17,0,37,0,1,7,0,52,17,0,37,0,35,7,21,0,1,17,22,0,18,11,0,34,16,22,0,19,11,14,21,0,17,0,38,0,26,0,45,0,30,8,7,16,21,0,13,16,0,27,21,0,15,17,22,0,20,11,14,21,0,1,0,27,21,0,15,17,0,27,0,47,21,0,20,8,0,49,0,39,21,1,7,0,30,16,7,8,16,21,1,9,16,0,37,0,1,7,21,0,20,17,22,0,21,11,14,21,1,19,21,1,20,21,1,21,3,3,0,39,0,30,7,0,52,17,0,42,0,0,7,16,0,22,21,1,19,0,30,16,17,21,1,24,21,0,21,17,22,0,22,11,0,11,0,47,0,19,0,21,0,53,19,0,23,0,13,19,8,16,22,0,23,11,14,21,1,3,0,13,16,22,0,24,11,14,21,1,21,0,42,0,0,7,16,0,0,0,60,17,0,14,21,0,21,17,22,0,25,11,14,21,0,21,0,15,0,47,21,1,21,0,30,16,0,48,0,0,8,8,0,2,0,18,19,0,1,0,19,19,21,0,24,17,0,35,21,0,23,0,44,0,0,7,16,0,2,21,0,22,0,11,21,0,25,17,17,0,37,0,1,7,0,52,17,17,22,0,26,11,14,21,0,21,0,27,21,0,23,17,0,37,0,1,7,21,1,21,0,30,16,17,0,37,0,3,0,45,0,5,8,7,21,0,24,17,22,0,27,11,14,21,0,26,0,31,16,22,0,28,11,0,11,0,47,0,44,0,6,7,0,21,0,60,19,0,23,0,13,19,8,16,22,0,29,11,14,21,0,27,0,27,21,0,29,17,0,12,0,53,17,22,0,30,11,0,13,16,22,0,31,11,14,21,0,27,0,6,0,53,17,0,14,0,47,0,58,8,0,48,0,9,8,0,0,0,19,19,21,0,22,0,11,0,47,0,19,0,37,0,21,7,0,53,19,0,24,0,52,19,8,16,0,37,0,27,7,21,0,25,17,17,22,0,27,12,14,21,0,21,0,27,0,47,21,0,20,8,0,49,21,0,18,0,31,21,0,19,17,0,0,21,0,31,17,0,0,21,1,25,17,8,16,0,27,0,47,21,0,23,8,0,49,21,0,30,0,28,16,0,28,16,0,29,21,0,28,17,0,0,21,1,25,17,8,16,0,27,21,1,22,21,1,24,21,0,21,17,0,10,21,0,22,17,0,8,16,0,10,21,0,23,17,17,22,0,21,12,14,21,1,13,21,1,24,21,0,21,17,0,9,0,47,0,19,0,10,21,1,15,0,30,16,0,0,0,58,0,54,3,2,17,0,33,21,0,21,17,19,0,21,0,52,19,0,23,0,13,19,8,16,0,8,16,0,37,0,27,7,22,0,21,13,14,21,1,13,21,1,24,21,0,21,17,0,9,21,1,15,0,30,16,0,0,0,56,0,57,3,2,17,0,33,21,0,21,17,0,37,0,21,7,0,52,17,0,24,0,52,17,17,0,8,16,0,37,0,27,7,22,0,21,13,14,21,1,25,0,1,21,0,21,17,21,0,31,0,48,0,11,8,0,9,0,15,0,47,0,53,8,19,16,22,0,32,11,14,21,1,26,0,29,21,0,21,0,5,21,1,25,17,17,0,27,0,47,21,0,32,8,0,49,21,0,27,8,16,22,0,33,11,14,21,1,18,0,30,16,0,37,0,22,7,0,57,17,21,1,24,21,0,21,17,0,2,0,57,17,0,0,22,0,21,13,14,21,0,21,21,0,33,21,0,30,0,8,16,0,42,0,0,7,16,21,0,19,0,21,21,0,26,0,29,21,0,29,0,27,16,0,27,21,0,30,17,17,17,3,4,25,21,1,20,0,30,16,0,0,0,47,0,25,8,0,54,17,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,1,19,0,30,16,0,48,0,1,8,0,26,0,45,0,42,0,2,0,47,0,61,8,0,48,0,0,8,7,8,9,22,0,7,11,14,21,0,7,0,24,0,47,0,52,8,21,0,7,9,0,1,9,3,2,0,50,0,30,0,14,21,0,3,19,8,22,0,8,11,14,0,24,0,47,0,52,0,48,0,0,8,8,0,53,0,13,0,4,0,61,19,0,3,21,0,7,19,3,2,0,50,0,13,0,11,0,53,19,8,9,0,0,0,23,0,45,21,0,7,8,19,0,47,21,0,4,0,11,16,0,48,0,31,8,8,22,0,9,11,14,0,62,0,63,21,0,9,3,3,0,50,0,29,0,31,21,0,5,21,0,6,3,2,19,0,30,9,8,22,0,10,11,14,21,1,23,0,31,21,0,1,17,0,30,16,22,0,11,11,14,21,0,1,0,23,21,0,11,17,21,0,10,0,24,0,47,0,52,8,21,0,10,9,0,1,9,3,2,0,50,0,30,0,14,21,0,3,19,8,16,22,0,12,11,14,21,0,12,21,0,1,0,13,16,0,11,21,0,11,17,0,51,0,37,0,18,0,24,0,52,0,0,21,0,11,17,19,21,0,8,9,0,4,0,61,19,0,48,0,2,8,7,8,21,0,1,17,25,0,64,22,0,3,11,14,21,0,1,0,6,0,52,17,0,41,0,4,7,21,0,3,17,0,5,16,22,0,4,11,14,21,0,4,0,0,0,52,17,0,44,0,0,7,0,48,0,19,0,21,0,53,19,0,23,0,13,19,0,48,0,27,8,0,1,0,19,0,30,0,60,19,0,25,9,19,8,16,0,28,16,0,28,16,22,0,5,11,14,21,0,1,15,12,21,0,4,17,0,29,21,0,5,17,25,0,40,0,14,7,0,43,15,13,7,0,19,0,45,0,38,0,53,7,8,19,0,30,0,60,19,22,0,3,11,14,15,14,22,0,4,11,14,0,53,21,0,4,0,98,8,0,37,0,52,21,0,4,0,99,8,7,3,2,0,50,0,13,0,46,0,12,8,8,22,0,5,11,14,21,0,1,21,0,5,0,100,3,2,0,50,0,13,0,46,0,5,8,0,11,21,0,3,19,8,21,0,2,17,0,37,0,36,7,0,53,17,25,0,93,0,27,21,0,1,0,13,16,0,11,0,52,17,17,0,21,0,101,17,0,37,0,36,7,0,53,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,21,1,15,0,30,0,48,0,1,8,0,7,0,58,19,0,4,0,60,19,0,2,21,1,24,19,21,0,1,17,22,0,5,11,0,44,0,0,7,16,22,0,6,11,0,28,16,22,0,7,11,14,21,1,15,0,30,16,0,0,0,58,17,0,37,0,22,7,0,58,17,21,1,24,21,0,1,17,0,2,21,0,5,17,22,0,8,11,14,21,0,1,0,29,0,47,21,0,7,8,0,46,0,27,0,47,0,60,0,48,0,14,8,8,0,37,0,1,7,0,52,19,0,17,0,51,21,1,32,8,0,27,0,47,0,52,0,48,0,14,8,8,19,8,21,0,5,17,14,21,0,6,0,30,21,0,7,0,30,16,17,0,15,0,53,17,0,36,0,102,17,14,21,1,16,21,1,24,21,0,1,17,0,10,0,47,0,26,0,47,0,52,8,8,16,22,0,9,11,14,21,0,9,0,29,0,47,21,0,7,8,0,49,0,26,0,47,0,60,8,8,16,22,0,10,11,14,21,0,10,0,10,21,0,9,17,22,0,11,11,14,21,0,9,0,29,21,0,7,17,0,28,16,0,37,0,29,7,22,0,7,13,14,21,0,11,0,8,16,0,2,22,0,4,13,14,0,53,0,12,21,0,5,17,22,0,12,11,14,21,0,4,0,15,0,52,17,0,10,21,0,4,0,14,0,56,17,0,29,0,47,21,0,7,8,0,49,0,26,0,47,0,60,8,8,16,17,0,19,0,2,0,47,0,13,0,45,0,25,8,0,0,0,52,19,8,0,44,0,6,7,9,0,46,0,14,8,0,10,0,47,0,8,8,19,0,9,0,18,19,21,1,15,0,30,16,0,0,0,52,17,0,14,21,0,1,17,0,11,21,0,11,17,17,0,0,22,0,4,13,14,21,1,13,21,1,24,21,0,1,17,0,10,21,0,9,17,0,10,21,0,12,17,0,29,0,37,0,21,7,0,1,0,21,0,45,0,44,0,0,7,8,19,0,52,19,0,28,0,48,0,28,0,48,0,37,0,29,7,8,0,1,0,37,0,29,7,19,0,29,0,47,0,28,8,0,18,19,8,0,18,0,21,0,60,19,19,21,0,7,17,0,24,0,60,17,0,0,0,52,17,0,44,0,0,7,16,0,28,16,22,0,13,11,14,21,0,8,0,29,21,0,13,17,0,44,0,0,7,16,22,0,14,11,0,28,16,22,0,15,11,14,21,0,15,0,37,0,29,7,22,0,13,13,14,21,0,15,0,37,0,29,7,22,0,14,13,14,21,0,13,0,37,0,29,7,22,0,1,13,14,21,0,8,0,29,21,0,13,17,22,0,16,11,14,0,53,0,11,21,0,16,17,0,27,16,22,0,17,11,14,0,53,0,12,21,0,16,17,22,0,18,11,0,44,0,0,7,16,22,0,19,11,14,0,53,0,48,0,21,8,0,44,0,0,7,9,0,27,0,52,0,21,21,0,18,17,19,0,19,0,21,0,53,19,0,23,0,13,19,0,48,0,1,8,9,22,0,20,11,14,0,14,0,45,21,0,20,8,0,24,0,52,19,0,11,0,53,19,22,0,21,11,14,21,0,1,0,28,21,1,18,0,30,16,0,0,0,57,17,0,0,0,53,0,56,0,54,0,57,3,4,17,17,21,0,21,0,47,0,56,8,0,2,0,58,19,0,6,21,0,21,0,47,0,58,8,19,0,2,0,58,19,0,0,21,0,21,0,47,0,52,8,19,0,21,0,53,19,16,22,0,22,11,14,21,1,27,0,29,21,0,22,17,22,0,23,11,14,21,0,4,0,29,21,0,13,17,0,29,0,47,21,0,17,8,0,49,0,54,0,25,16,0,27,0,47,0,15,0,47,0,58,8,0,0,0,52,19,8,16,0,29,21,0,22,0,24,0,52,17,17,8,16,22,0,4,12,14,21,1,25,0,1,21,0,1,17,22,0,24,11,21,0,3,0,48,0,11,8,0,9,0,15,0,47,0,53,8,19,16,22,0,25,11,0,27,16,22,0,26,11,14,21,0,1,0,29,21,0,26,17,22,0,27,11,14,21,1,18,21,1,24,21,0,1,17,0,27,16,22,0,28,11,14,21,1,14,0,30,16,0,14,21,0,1,17,0,29,21,1,14,21,1,24,21,0,1,17,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,17,22,0,29,11,14,21,0,8,0,1,21,0,5,17,0,29,21,0,13,17,0,44,0,0,7,16,0,28,16,22,0,7,12,14,21,0,13,0,29,21,0,7,17,22,0,30,11,14,21,0,9,0,1,21,0,10,17,0,29,21,0,30,17,0,12,0,27,0,46,0,1,8,0,11,19,0,53,17,0,37,0,3,7,0,58,17,0,0,0,52,17,22,0,31,11,14,21,1,15,0,30,16,0,0,0,57,17,0,14,21,0,1,17,0,29,21,0,7,17,0,27,16,22,0,32,11,14,21,0,9,0,29,21,0,30,17,0,28,16,22,0,33,11,0,37,0,29,7,22,0,7,13,14,21,0,13,0,29,21,0,7,17,22,0,30,12,14,21,0,7,0,37,0,29,7,22,0,1,13,14,21,0,7,0,37,0,29,7,22,0,4,13,14,21,0,30,0,37,0,29,7,22,0,12,13,14,21,0,9,0,12,21,0,10,17,0,29,21,0,30,17,0,27,16,22,0,34,11,14,21,0,7,0,28,16,22,0,35,11,14,21,0,33,0,28,16,0,29,22,0,32,13,14,21,1,13,21,1,24,21,0,1,17,22,0,36,11,14,21,0,9,0,29,21,0,30,17,0,10,21,0,12,17,0,10,21,0,36,17,22,0,37,11,14,21,1,14,0,30,16,0,37,0,22,7,0,58,17,21,1,24,21,0,1,17,22,0,38,11,14,21,0,38,0,10,21,0,37,17,0,1,22,0,4,13,14,0,58,0,16,21,0,4,17,22,0,39,11,14,0,56,0,14,21,0,4,17,0,26,0,52,17,0,10,0,52,0,16,21,0,4,17,17,22,0,40,11,14,21,0,40,0,29,21,0,37,0,26,0,60,17,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,17,22,0,41,11,14,21,0,40,0,26,0,52,17,0,9,21,1,14,0,30,16,0,0,0,52,17,0,14,21,0,1,17,17,0,11,21,0,41,17,22,0,42,11,14,0,56,0,14,21,0,4,17,0,26,0,52,17,0,11,21,0,38,17,0,10,21,0,39,17,22,0,43,11,14,21,0,42,0,10,21,0,43,17,0,8,16,0,26,16,0,2,0,45,0,44,0,6,7,8,0,1,0,18,19,0,47,0,13,0,45,0,25,8,8,16,0,26,16,22,0,44,11,14,21,0,38,0,27,16,21,0,44,0,48,0,29,8,0,0,0,52,19,0,0,0,19,19,16,22,0,45,11,14,0,52,0,1,21,0,45,17,0,37,0,21,7,21,0,1,0,13,16,17,0,41,0,27,7,16,0,24,0,60,17,0,19,0,21,0,53,19,0,23,0,13,19,0,48,0,1,8,16,0,29,21,0,35,17,0,44,0,0,7,16,0,26,0,60,17,22,0,46,11,0,29,21,0,7,17,22,0,47,11,14,21,0,4,0,27,0,47,21,0,47,8,0,49,0,39,0,60,7,8,16,22,0,4,12,14,21,0,43,0,8,16,0,44,0,0,7,0,2,0,45,0,44,0,6,7,8,0,1,0,19,19,21,0,37,19,0,15,0,11,0,7,19,0,58,19,0,9,0,19,19,16,0,9,21,0,37,0,2,0,47,0,13,0,45,0,25,8,0,0,0,52,19,8,0,44,0,6,7,9,0,46,0,15,8,21,0,38,17,17,22,0,48,11,14,21,0,38,0,10,21,0,37,17,0,37,0,21,7,0,53,17,0,24,0,52,17,0,12,21,0,39,17,22,0,49,11,14,21,0,49,0,27,16,0,26,16,22,0,50,11,14,21,0,49,0,26,0,60,17,0,11,21,0,39,17,0,10,0,52,0,14,21,0,4,17,17,0,11,21,0,49,0,26,0,52,17,0,9,21,0,43,17,17,0,9,21,0,41,0,8,16,0,10,21,0,48,17,17,0,11,21,0,47,0,26,0,52,17,17,0,27,16,22,0,51,11,14,0,53,0,14,21,0,4,17,0,11,21,0,43,17,0,10,0,53,0,16,21,0,4,17,0,9,21,0,41,17,17,0,9,21,1,17,0,30,16,0,13,21,0,1,17,17,0,37,0,21,7,0,53,17,0,24,0,52,17,0,29,21,0,51,17,22,0,52,11,14,21,0,3,0,0,21,1,25,17,0,16,21,0,1,17,22,0,53,11,14,21,1,12,0,42,0,0,7,16,0,0,0,60,17,0,15,21,0,1,17,0,10,21,0,53,17,0,27,16,22,0,54,11,14,21,0,1,0,29,21,0,54,17,22,0,55,11,0,34,16,0,9,16,22,0,56,11,14,21,1,15,0,30,16,0,0,0,54,17,0,14,21,0,1,0,27,21,0,12,17,17,22,0,57,11,14,0,52,0,21,21,0,37,17,0,9,21,0,12,0,21,0,52,17,17,0,1,0,53,0,21,21,0,36,17,17,0,44,0,0,7,16,0,27,0,52,0,21,21,0,12,17,17,0,24,0,47,0,1,8,0,1,0,24,19,0,52,17,0,27,21,0,57,17,0,0,0,52,17,22,0,58,11,14,21,0,57,0,21,0,53,17,0,29,0,47,0,44,0,0,7,8,21,0,12,17,0,12,21,0,36,17,0,27,16,22,0,59,11,14,21,1,15,0,30,16,0,0,0,58,17,0,14,21,0,1,17,0,27,16,22,0,60,11,14,21,0,46,0,9,21,0,29,17,0,9,21,0,25,17,22,0,61,11,0,29,21,0,26,17,22,0,62,11,14,21,0,61,21,0,20,16,22,0,63,11,14,21,0,19,0,29,21,0,26,17,0,37,21,0,15,0,29,21,0,17,17,0,21,21,0,1,0,13,16,17,7,0,29,0,27,0,47,21,0,62,8,19,0,21,21,0,15,0,27,21,0,18,17,0,21,0,60,17,0,48,0,29,8,19,16,22,0,64,11,14,21,0,64,0,28,16,0,29,0,47,21,0,27,0,27,0,47,21,0,62,8,0,48,0,21,8,16,22,0,65,11,0,48,0,29,8,0,28,9,8,16,22,0,66,11,14,21,0,64,0,19,0,29,21,0,66,0,27,0,47,0,15,0,47,21,0,26,0,13,16,8,8,16,19,0,13,0,47,0,19,0,21,0,53,19,0,23,0,13,19,8,9,0,46,0,10,8,21,0,65,17,0,42,0,9,7,0,52,17,0,36,0,103,17,14,21,0,66,0,29,0,47,21,0,62,0,37,0,27,7,16,0,1,16,0,21,21,0,62,17,0,48,0,29,0,45,0,44,0,0,7,8,8,0,28,9,8,16,0,27,0,47,21,0,26,0,13,16,0,48,0,11,8,8,16,22,0,66,12,14,21,0,66,0,37,0,29,7,22,0,62,13,14,21,0,27,0,29,21,0,66,17,0,13,0,47,0,19,0,21,0,53,19,0,23,0,13,19,8,0,11,21,0,62,19,0,48,0,19,0,42,0,10,7,0,53,19,0,51,0,37,0,27,0,45,21,1,33,8,7,8,8,16,14,21,0,26,0,29,0,47,21,0,66,8,0,49,0,29,0,47,21,0,62,0,2,0,47,0,13,0,45,0,25,8,8,16,0,44,0,6,7,16,8,8,16,22,0,67,11,14,21,0,24,0,29,21,0,28,17,0,0,0,58,17,0,15,0,47,0,53,8,0,48,0,0,8,16,0,0,21,0,22,0,7,0,58,17,0,2,0,56,17,0,29,21,0,19,0,29,21,0,28,17,17,17,0,21,21,0,61,0,44,0,0,7,16,0,8,0,47,0,2,0,47,21,0,18,8,0,44,0,6,7,9,8,16,0,1,21,0,23,0,29,21,0,19,17,17,0,29,21,0,67,17,17,22,0,68,11,14,21,0,28,0,21,21,0,26,17,22,0,69,11,0,11,16,0,20,0,56,17,0,21,16,22,0,70,11,14,21,0,46,0,29,21,0,69,17,0,0,0,65,17,21,0,28,0,39,0,53,7,16,0,21,21,0,67,21,0,14,0,48,0,29,8,0,46,0,1,8,21,0,26,17,17,21,0,68,3,3,22,0,71,11,14,21,0,35,0,29,22,0,17,13,14,21,0,54,21,0,54,21,0,17,21,0,17,21,0,60,21,0,59,21,0,32,21,0,32,21,0,34,21,0,34,21,0,45,21,0,44,0,29,21,0,50,17,0,6,0,52,17,0,0,21,0,50,17,21,0,52,0,0,21,0,51,17,0,0,0,47,21,0,44,0,48,0,29,8,0,2,21,0,52,19,8,16,3,13,0,21,16,0,37,0,29,7,21,0,7,17,0,21,21,0,70,17,0,28,16,22,0,72,11,14,21,0,54,0,39,0,53,7,16,21,0,55,0,31,21,0,56,17,21,0,17,0,39,0,66,7,16,21,0,17,0,13,16,0,25,16,0,0,0,52,17,3,4,0,21,21,0,71,17,0,21,16,22,0,73,11,14,21,0,60,0,39,0,67,7,16,21,0,59,0,39,0,68,7,16,21,0,47,0,29,21,0,32,17,0,0,0,56,17,21,0,58,21,0,47,0,29,21,0,34,17,0,0,0,56,17,21,0,31,21,0,1,0,0,21,0,42,17,0,27,21,0,38,17,0,0,21,1,14,0,30,16,0,1,0,69,17,17,21,0,4,0,29,21,0,50,17,0,0,0,57,17,21,0,41,0,29,21,0,51,17,0,2,0,71,17,0,1,21,0,52,17,0,0,0,70,17,0,14,0,47,0,61,8,0,2,0,55,19,0,0,0,19,19,16,3,9,0,21,16,0,21,21,0,73,17,0,29,21,0,72,17,22,0,74,11,14,21,0,23,0,0,21,0,63,17,0,39,0,11,0,46,0,22,8,7,21,0,60,0,13,0,46,0,22,8,21,0,73,17,21,1,24,21,0,72,17,0,21,0,52,17,0,27,16,0,37,0,29,7,21,0,74,0,6,0,52,17,0,41,0,4,7,0,64,17,0,5,16,0,0,0,52,17,0,21,0,53,17,0,44,0,0,7,16,17,17,0,39,0,21,7,0,58,0,25,0,46,0,26,0,48,0,40,0,22,7,8,8,0,56,17,0,20,16,0,29,21,0,22,17,17,22,0,75,11,14,0,67,0,21,21,0,74,17,21,1,31,16,21,0,56,21,0,75,3,3,25,21,0,1,21,1,28,16,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,0,3,21,1,34,21,0,5,21,0,4,3,2,17,22,0,7,22,0,8,22,0,9,4,3,11,14,21,0,6,0,39,21,1,30,7,16,0,21,21,0,2,17,0,29,21,1,25,0,16,21,0,8,17,0,2,21,0,2,0,13,16,0,1,21,0,5,17,0,0,21,1,25,17,17,0,1,21,0,8,17,17,22,0,10,11,14,21,0,7,21,0,10,21,0,9,3,3,25,21,0,1,0,26,16,0,30,16,0,14,0,53,17,25,21,0,1,0,29,0,47,21,0,2,0,27,21,0,1,17,8,0,49,0,39,0,52,7,8,16,21,1,10,21,0,2,0,37,0,29,7,16,17,25,21,0,2,0,2,16,22,0,3,11,14,21,0,1,21,0,3,0,42,0,10,7,16,0,51,0,27,0,47,21,0,3,8,0,46,21,1,3,0,48,0,3,8,0,5,9,0,48,21,0,0,8,8,0,21,0,7,0,0,21,0,3,0,48,0,2,8,19,0,47,21,1,3,8,19,8,0,52,0,1,21,0,2,17,17,25,21,0,1,0,24,0,52,17,0,37,0,21,7,0,53,17,0,0,21,0,2,17,0,44,0,6,7,16,0,6,21,0,1,17,25,0,32,0,14,0,18,0,45,0,13,8,19,0,37,0,27,7,0,19,19,0,0,21,0,2,19,0,37,0,29,7,21,2,7,19,0,21,0,88,19,0,21,21,0,1,19,0,21,0,97,19,25])
,[runtime[0],runtime[1],runtime[2],runtime[3],runtime[4],runtime[6],runtime[7],runtime[8],runtime[9],runtime[10],runtime[11],runtime[12],runtime[13],runtime[14],runtime[15],runtime[16],runtime[17],runtime[19],runtime[20],runtime[21],runtime[22],runtime[23],runtime[24],runtime[25],runtime[26],runtime[27],runtime[28],runtime[30],runtime[31],runtime[33],runtime[34],runtime[35],runtime[36],runtime[37],runtime[38],runtime[39],runtime[40],runtime[42],runtime[43],runtime[44],runtime[45],runtime[46],runtime[47],runtime[48],runtime[49],runtime[50],runtime[51],runtime[52],runtime[53],runtime[54],runtime[56],runtime[59],1,0,4,9,3,5,2,6,-1,10,3.14159265358979,Infinity,128,21,15,25,14,11,16,7,'\t','\n',str("0123456789"),str("ABCDEFGHIJKLMNOPQRSTUVWXYZ"),str("abcdefghijklmnopqrstuvwxyz"),str("+-×÷⋆√⌊⌈|¬∧∨<>≠=≤≥≡≢⊣⊢⥊∾≍↑↓↕⌽⍉/⍋⍒⊏⊑⊐⊒∊⍷⊔!"),str("˙˜˘¨⌜⁼´˝`"),str("∘○⊸⟜⌾⊘◶⎉⚇⍟"),str("⋄,"),str("←↩→"),str("(){}⟨⟩"),str("‿"),str("·"),str("𝕊𝕏𝕎𝔽𝔾𝕤𝕩𝕨𝕗𝕘"),str("¯.π∞"),str("_"),str(" "),str("Unclosed quote"),'\'','"',str("Unknown character"),str("s"),str(": "),'#',str("\'"),str("Missing "),str("opening"),str("closing"),str("Malformed bracket nesting"),str("Undefined identifier"),str("Swapped open and closed brackets"),str("Multiple definitions")]
- ,[[0,1,0,36],[0,0,461,3],[1,1,527,4],[0,0,620,34],[0,0,1889,13],[0,0,2211,6],[0,0,2317,6],[0,0,2430,3],[0,0,2460,76],[0,0,5744,11],[0,0,5867,3],[0,0,5882,3],[0,0,5922,4],[0,0,6008,3],[2,1,6043,3]]
+ ,[[0,1,0,36],[0,0,461,3],[1,1,527,4],[0,0,620,34],[0,0,1905,13],[0,0,2227,6],[0,0,2333,6],[0,0,2446,3],[0,0,2476,76],[0,0,5760,11],[0,0,5883,3],[0,0,5898,3],[0,0,5938,4],[0,0,6024,3],[2,1,6059,3]]
);
let bqn = src => run.apply(null,compile(str(src),runtime));