Skip to content

Instantly share code, notes, and snippets.

@dzaima

dzaima/.ps1 Secret

Last active October 27, 2020 08:59
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save dzaima/df3832a8bd87ad56093e9e64576a557a to your computer and use it in GitHub Desktop.
Save dzaima/df3832a8bd87ad56093e9e64576a557a to your computer and use it in GitHub Desktop.
rv * -ea 0;$erroractionpreference='stop'
# Virtual machine # Virtual machine
$assert = {param($x,$m="") if ($null-eq$x) { throw "assert failed ($m)" } } # let assert = x => { if (!x) throw Error(); }
#$has = {param($x) !((Test-Path "variable:\x") -or (test-path "function:\x")) } # let has = x => x!==undefined;
function log($x){write-host "$x ($($x.Count)) ($($x.GetType().Name))" -fore mag }
$call = {param($f, $x, $w) # let call = (f,x,w) => {
if ($null -eq $x) {return $x} # if (x===undefined) return x;
if (-not (($f -is [Management.Automation.CommandInfo]) -or ($f -is [scriptblock]))) { return $f } # if (typeof f !== "function") return f;
$null=& $assert ((!$f.m1) -and (!$f.m2)) "line 8" # assert(!f.m1&&!f.m2);
return ,(&$f $x $w); # return f(x, w);
} # }
$get1 = {param($i) $r=$i[0][$i[1]]; $null=&$assert $r; $r} # let get1= i => (v=>(assert(v!==null),v))(i[0][i[1]]);
$get = {param($i) if ($i.psobject.properties.Item('sh')){&$arr ($i.foreach{&$get $_}) $i.sh}else{&$get1 $i}} # let get = i => i.sh ? arr(i.map(get),i.sh) : get1(i);
$set = {param($d,$id,$v) # let set = (d,id,v) => {
$eq={param($a,$b) ($a.Count-eq$b.Count)-and$($res=$true;for($i=0;$i-lt$a.Count;$i++){if(!($a[$i]-eq$b[$i])){$res=$false}};$res)} # let eq = (a,b) => a.length===b.length && a.every((e,i)=>e===b[i]);
if ($id.psobject.properties.Item('sh')) { # if (id.sh) {
$null=&$assert (($v.psobject.properties.Item('sh'))-and(&$eq $id.sh $v.sh)) "Line17";
$j=0;$null=$id.foreach{&$set $d $_ $v[$j++]} # assert(v.sh&&eq(id.sh,v.sh)); id.map((n,j)=>set(d,n,v[j]));
} else { # } else {
$a,$i=$id;
#$null=&$assert (($null-eq$a[$i])-eq$d) "Line19"; # this interpreter can't tell undefined from null, this assert can't work. # d is whether the assignment is a definition/declaration (←) rather than a modification (↩). The variable needs to be undefined iff (===) d is true. Then id is the assignment target and v are the values to set it to.
$a[$i]=$v # let [a,i]=id; assert((a[i]===null)==d); a[i]=v;
} # }
,$v # return v;
} # }
function run($B,$O,$Sb){ # Bytecode, Objects, Sections/blocks # let run = (B,O,S) => { # Bytecode, Objects, Sections/blocks
$ge = {param($e, $i) if(0-lt$i){& $ge $e[1] ($i-1)}else{,$e[0]}}.GetNewClosure() # let ge = (e,i) => i?ge(e[1],i-1):e[0];
. $ge.Module {param($Xge) $ge=$Xge } $ge
# Execute # Execute
$vm = {param($p,$e) # Program counter, Environment # let vm = (p,e) => { # Program counter, Environment
$s = [System.Collections.Generic.Stack[psobject]]::new() # Stack # let s=[]; # Stack
$num = { # read LEB128 number # let num = () => {
$bb=128;$n=$B[$p++]; # let b=128,n=B[p++];
if ($n-lt$bb) {return $n} # if (n<b) return n;
$i=1;$t=0 # let i=1, t=0;
do { $t+=$i*($n-$bb); $i*=$bb; $n=$B[$p++]; } while ($n -ge $bb) # do { t+=i*(n-b); i*=b; n=B[p++]; } while (n>=b);
return $t+($i*$n) # return t+i*n;
} # }
while($true) { $global:counter++; switch($(
$state=$B[$p++];
write-host "p: $($p-1); counter ${global:counter}; instr: $state; stack count: $($s.count)";
# $pk=$s.Peek(); if($s.count-gt 0 -and $s.Peek().count-gt 0) { write-host "{{$($s.Peek())}} {{$($s.Peek()[0])}} SH=$($s.peek().sh.count)";};
if($s.count-gt 0 -and "$($s.Peek())"-eq"1 0" -and $s.Peek().count-eq 1 -and $s.peek().psobject.properties.Item('sh')) {write-host "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";};
# if($s.count-gt 0 -and "$($s.Peek())"-eq"System.Object[]" -and "$($s.Peek()[0])"-eq"1 0") {write-host "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA";};
if ($e[0][2] -and $e[0][2].gettype().name -eq 'Stack`1') { write-host "HERE p: $p; counter ${global:counter}; state: $state; stack count: $($s.count)"; $null=read-host "OI OI";};
$state
)) { # while (1) switch(B[p++]) {
0 {$s.push($O[(.$num)])} # case 0: s.push(O[num()]);break;
{$_-in(3,4)} {$zn=.$num;if ($zn -eq 0){$s.push((&$list @()))}else{[array]$a=((1..$zn).foreach{,$s.pop()});[array]::reverse($a);$s.push((&$list $a))}} # case 3: case 4: {let a=s.splice(s.length-num());s.push(list(a));break;}
{$_-in(5,16)}{$f=$s.pop();$x=$s.pop();if($x.count-and$x.psobject.properties.Item('sh')){write-host "has-sh";}; $s.push((&$call $f $x ))} # case 5: case 16:{let[x,f] =s.splice(-2);s.push(call(f,x ));break;}
{$_-in(6,17)}{$w=$s.pop();$f=$s.pop();$x=$s.pop();$s.push((&$call $f $x $w))} # case 6: case 17:{let[x,f,w]=s.splice(-3);s.push(call(f,x,w));break;}
7 {$f=$s.pop();$m=$s.pop();$null=&$assert $m.m1 "Line53";$s.push((&$m $f))} # case 7: {let[m,f] =s.splice(-2);assert(m.m1);s.push(m(f ));break;}
8 {$f=$s.pop();$m=$s.pop();$g=$s.pop();$null=&$assert $m.m2 "Line42";$s.push((&$m $f $g))} # case 8: {let[g,m,f]=s.splice(-3);assert(m.m2);s.push(m(f,g));break;}
9 {$g=$s.pop();$h=$s.pop();$s.push({param($x,$w) &$call $g (&$call $h $x $w)}.GetNewClosure())} # case 9: {let[h,g] =s.splice(-2);s.push((x,w)=>call(g,call(h,x,w)));break;}
{$_-in(10,19)}{$f=$s.pop();$g=$s.pop();$h=$s.pop();$s.push({param($x,$w) $u=if($null-ne$f){&$call $f $x $w}else{$f}; (&$call $g (&$call $h $x $w) $u)}.GetNewClosure())} # case 10:case 19:{let[h,g,f]=s.splice(-3);s.push((x,w)=>call(g,call(h,x,w),has(f)?call(f,x,w):f));break;}
11 {$i=$s.pop();$v=$s.pop();$s.push((&$set 1 $i $v))} # case 11: {let[v, i]=s.splice(-2);s.push(set(1,i,v));break;}
12 {$i=$s.pop();$v=$s.pop();$s.push((&$set 0 $i $v))} # case 12: {let[v, i]=s.splice(-2);s.push(set(0,i,v));break;}
13 {$i=$s.pop();$f=$s.pop();$x=$s.pop();$s.push((&$set 0 $i (&$call $f $x (&$get $i))))} # case 13: {let[x,f,i]=s.splice(-3);s.push(set(0,i,call(f,x,get(i))));break;}
14 {$null=$s.pop()} # case 14:{s.pop();break;}
15 {$s.Push((& $D[(.$num)] $e))} # case 15:{s.push(D[num()](e));break;}
21 {
$v=(&$ge $e (.$num))[(.$num)];
#$null=&$assert ($null-ne$v) "Line50";
$null=$v
$s.push($v)} # case 21:{let v=ge(e,num())[num()];assert(v!==null);s.push(v);break;}
22 {$s.push(((&$ge $e (.$num)),(.$num)))} # case 22:{s.push([ge(e,num()),num()]);break;}
25 {$null=&$assert($s.Count-eq1) "Stack count -ne 1";return ,$s.Pop()} # case 25:assert(s.length===1);return s[0];
}} # }
}.GetNewClosure() # close over $B, $O, $D, $ge
#Turn each block into an environment=>pushable value map # Turn each block into an environment=>pushable value map
$D = $Sb.foreach{$t,$i,$st,$l=$_; {param($e) # let D = S.map(([t,i,st,l]) => e => {
$v=@($null)*$l # let v=Array(l).fill(null);
$c = {param($sv) &$vm $st @((@($sv)+$v),$e)}.GetNewClosure() # let c = sv => vm(st,[sv.concat(v),e]);
. $c.Module {param($Xvm, $Xst, $Xe) $vm,$st,$e = $Xvm,$Xst,$Xe} $vm $st $e
$c0 = {param($v) $r={param($x,$w) &$c (@($r,$x,$w)+$v)}; $r2=$r.GetNewClosure();. $r2.Module {param($Xc) $c=$Xc} $c; $r2}.GetNewClosure()
. $c0.Module {param($Xc) $c=$Xc} $c
(&@( # return [
{param($n) &$n @()}, # n => n([]),
{param($n) $r={param($f) (&$n @($r,$f ))}; $r=($r -as [psobject]).GetNewClosure(); $r.psobject.Properties.Add([psnoteproperty]::new('m1',1)); $r}, # n => {let r=(f )=>n([r,f ]);r.m1=1;return r;},
{param($n) $r={param($f,$g)(&$n @($r,$f,$g))}; $r=($r -as [psobject]).GetNewClosure(); $r.psobject.Properties.Add([psnoteproperty]::new('m2',1)); $r} # n => {let r=(f,g)=>n([r,f,g]);r.m2=1;return r;}
)[$t]( # ][t]([
$c0, # v => {let r=(x,w)=>c([r,x,w].concat(v));return r;},
$c # c
)[$i]) # ][i]);
}.getnewclosure()} # });
# inject $D scriptblock into $vm, so case 15 can work.
. $vm.Module {param($XD) $D=$XD } $D
#try { # try {
& $D[0] @() # return D[0]([]);
#} catch { # } catch (err) {
# "error" # return "error"
#} # }
}
# Runtime
$arr = {param($r,$sh) ($r=$r -as [psobject]).psobject.Properties.Add([psnoteproperty]::new('sh',$sh));,$r} #let arr = (r,sh) => {r.sh=sh;return r;}
$list = {param($l) & $arr $l @($l.Count)} # let list = l => arr(l,[l.length]);
$str = {param($sz) & $list ([string[]][char[]]$sz)} # let str = s => list(Array.from(s));
$m1 = {param($m) ($m=$m -as [psobject]).psobject.Properties.Add([psnoteproperty]::new('m1',1));$m } # let m1 = m => {m.m1=1;return m;}
$m2 = {param($m) ($m=$m -as [psobject]).psobject.Properties.Add([psnoteproperty]::new('m2',1));$m } # let m2 = m => {m.m2=1;return m;}
$lesseq = {param($x,$w) # let lesseq = (x,w) => {
write-host "lesseq" -fore cy
$t0=$w.gettype();$t=$x.GetType() # let s=typeof w, t=typeof x;
+$(if (!$t0.Equals($t)) {$t0.ToString()-le$t.ToString()}else{$w-le$x}) # return +(s!==t ? s<=t : w<=x);
} # }
$table = &$m1 {param($f) {param($x,$w)
write-host "table" -fore cy
$result = if ($null-eq$w) { # let table = m1(f => (x,w) => !has(w)
&$arr @($x.foreach{&$call $f $_}) $x.sh } else { # ? arr(x.map(e=>call(f,e)),x.sh)
$tmp = [System.Collections.ArrayList]::new(); $null=$tmp.AddRange(@($w.foreach{$d=$_;@($x.foreach{$e=$_;&$call $f $e $d})})); &$arr $tmp.ToArray() (@($w.sh)+$x.sh)}; # : arr([].concat.apply([],w.map(d=>x.map(e=>call(f,e,d)))),w.sh.concat(x.sh)));
,$result}.GetNewClosure()}
$scan = &$m1 {param($f) {param($x,$w) # let scan = m1(f => (x,w) => {
write-host "scan" -fore cy
$sh=$x.sh;$null=&$assert ((!$myinvocation.BoundParameters.ContainsKey('w'))-and$sh-and$sh.length-gt0) "Line89" # let s=x.sh;assert(!has(w)&&s&&s.length>0);
$l=$x.Count;$r=@($null)*$l # let l=x.length,r=Array(l);
if ($l-gt0) { # if (l>0) {
$c=1;for($i=1;$i-lt$sh.Count;$i++){$c*=$sh[$i]} # let c=1;for(let i=1;i<s.length;i++)c*=s[i];
$i=0; # let i=0;
for(;$i-lt$c;$i++){$r[$i]=$x[$i]} # for(;i<c;i++) r[i]=x[i];
for(;$i-lt$l;$i++){$r[$i]=(&$call $f $x[$i] $r[$i-$c])} # for(;i<l;i++) r[i]=call(f,x[i],r[i-c]);
} # }
&$arr $r $sh # return arr(r,s);
}.GetNewClosure()} # });
$group_len = {param($x,$w) # let group_len = (x,w) => { # β‰ Β¨βŠ” for a valid list argument
write-host "group_len" -fore cy
$l=$x[0];foreach($y in $x){if($y-gt$l){$l=$y}} # let l=x.reduce((a,b)=>Math.max(a,b),-1);
$r=,0*($l+1) # let r=Array(l+1).fill(0);
$null=$x.foreach{if($_-ge0){$r[$_]+=1}} # x.map(e=>{if(e>=0)r[e]+=1;});
&$list $r # return list(r);
} # }
$group_ord = {param($x,$w) # let group_ord = (x,w) => { # βˆΎβŠ”x assuming w=group_len(x)
write-host "group_ord" -fore cy
$l=0;$s=@($w.foreach{$n=$_;$l0=$l;$l+=$n;$l0}) # let l=0,s=w.map(n=>{let l0=l;l+=n;return l0;});
$r=@($null)*$l # let r=Array(l);
for($i=0;$i-lt$x.Count;$i++){if($x[$i]-ge0){$r[$s[$x[$i]]++]=$i}} # x.map((e,i)=>{if(e>=0)r[s[e]++]=i;});
&$list $r # return list(r);
} # }
$provide = @(
{param($x,$w) write-host "Is0 $x -- $w" -fore cy; +($null -ne $x.psobject.properties.Item('sh'))}, # (x,w) => x.sh?1:0 // IsArray
{param($x,$w) write-host "Ty1 $x -- $w" -fore cy; 0}, # ,(x,w) => 0 // Type
{param($x,$w) write-host "Lo2 $x -- $w" -fore cy; if($null-ne$w){[math]::Log($x)/[math]::Log($w)}else{[math]::Log($x)}}, # ,(x,w) => has(w)?Math.log(x)/Math.log(w):Math.log(x) // Log
$group_len, # ,group_len // GroupLen
$grop_ord, # ,group_ord // GroupOrd
{param($x,$w) write-host "!5 $x -- $w" -fore cy; $null=&$assert (1-eq$x)}, # ,assertFn("") // !
{param($x,$w) write-host "+6 $x -- $w" -fore cy; if($null-ne$w){$w+$x}else{$x}}, # ,plus // +
{param($x,$w) write-host "-7 $x -- $w" -fore cy; $(if($null-ne$w){$w}else{0})-$x}, # ,minus // -
{param($x,$w) write-host "Γ—8 $x -- $w" -fore cy; $w*$x}, # ,(x,w) => w*x // Γ—
{param($x,$w) write-host "Γ·9 $x -- $w" -fore cy; $(if($null-ne$w){$w}else{1})/$x}, # ,(x,w) => (has(w)?w:1)/x // Γ·
{param($x,$w) write-host "⋆10 $x -- $w" -fore cy; if($null-ne$w){[math]::pow($w,$x)}else{[Math]::Exp($x)}}, # ,(x,w) => has(w)?Math.pow(w,x):Math.exp(x) // ⋆
{param($x,$w) write-host "⌊11 $x -- $w" -fore cy; [Math]::Floor($x)}, # ,(x,w) => Math.floor(x) // ⌊
{param($x,$w) write-host "=12 $x -- $w" -fore cy; if($null-ne$w){+$x.Equals($w)}else{if($null-ne$x.psobject.properties.Item('sh')){$x.sh.Count}else{0}}}, # ,(x,w) => has(w)?+(x===w):x.sh?x.sh.length:0 // =
$lesseq, # ,lesseq // ≀
{param($x,$w) write-host "β‰’14 $x -- $w" -fore cy; &$list $x.sh}, # ,(x,w) => list(x.sh) // β‰’
{param($x,$w) write-host "β₯Š15 $x -- $w" -fore cy; &$arr ($x[0..($x.Count-1)]) $(if($null-ne$w){,$w}else{,@($x.Length)})}, # ,(x,w) => arr(x.slice(),has(w)?w:[x.length]) // β₯Š
{param($x,$w) write-host "βŠ‘16 $x -- $w" -fore cy; ,$x[$w] }, # ,(x,w) => x[w] // βŠ‘
{param($x,$w) write-host "↕17 $x -- $w" -fore cy; &$list @(0..($x-1))}, # ,(x,w) => list(Array(x).fill().map((_,i)=>i)) // ↕
$table, # ,table // ⌜
$scan, # ,scan // `
(&$m2({param($f,$g){param($x,$w) if($null-ne$w){&$call $g $x $w}else{&$call $f $x $w}}.GetNewClosure()})) # ,m2((f,g)=>(x,w)=>has(w)?call(g,x,w):call(f,x,w)) // ⊘
)
rv counter -ea 0
# $runtimeBytes = (&$list 0,0,0,1,0,2,3,3,14,3,0,0,1,3,2,15,1,0,0,8,25,21,0,1,15,2,21,0,5,0,2,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,25)
# $runtimeObjs = $provide
# $runtimeBlocks = ( (&$list 0,1,0,0),(&$list 2,0,21,6),(&$list 1,1,48,2))
#
#
#
# $qq=run $runtimeBytes $runtimeObjs $runtimeBlocks
# $qq
## full runtime
rv counter -ea 0
$runtimeBytes = (&$list 15,1,22,0,0,11,14,15,2,22,0,1,11,14,15,3,0,20,15,4,8,22,0,2,11,14,15,5,22,0,3,11,14,15,6,22,0,4,11,14,15,7,22,0,5,11,14,15,8,22,0,6,11,14,15,9,22,0,7,11,14,15,10,22,0,8,11,14,15,11,22,0,9,11,14,0,12,21,0,7,0,11,8,0,21,3,2,21,0,0,0,0,8,22,0,10,11,14,0,12,21,0,7,0,11,8,0,8,0,13,21,0,7,0,21,8,19,0,21,3,2,21,0,0,0,0,8,22,0,11,11,14,15,12,0,15,3,2,21,0,0,0,0,8,22,0,12,11,14,15,13,0,20,15,14,8,22,0,13,11,14,15,15,22,0,14,11,14,0,0,0,7,0,22,19,21,0,9,21,0,14,8,22,0,15,11,14,21,0,4,0,13,7,22,0,16,11,14,21,0,16,0,7,0,22,19,0,20,21,0,14,8,22,0,17,11,14,0,13,0,7,0,22,19,22,0,18,11,14,15,16,0,16,21,0,18,19,0,20,0,11,8,22,0,19,11,14,15,17,0,16,21,0,17,19,0,20,0,7,21,0,5,21,0,19,21,0,5,0,7,8,8,8,22,0,20,11,14,0,7,21,0,1,3,2,21,0,0,0,13,21,0,7,0,21,8,8,22,0,21,11,14,0,22,0,14,0,16,0,21,19,3,2,21,0,0,0,12,21,0,17,0,21,19,8,22,0,22,11,14,15,18,22,0,23,11,14,21,0,23,22,0,24,11,14,0,14,21,0,8,15,19,8,22,0,25,11,14,15,20,22,0,26,11,14,15,21,15,22,3,2,21,0,0,21,0,1,21,0,5,0,12,8,0,12,0,22,19,8,22,0,27,11,14,21,0,27,22,0,28,11,14,15,23,22,0,29,11,14,15,24,22,0,30,11,14,0,13,0,7,21,0,16,19,22,0,31,11,14,0,22,0,15,0,16,0,21,19,21,0,8,0,13,0,8,0,23,19,0,7,0,22,19,15,25,3,2,21,0,0,21,0,1,21,0,5,0,0,8,8,8,3,2,21,0,0,21,0,1,21,0,5,0,14,8,21,0,24,0,8,7,0,22,19,21,0,17,0,21,19,8,22,0,32,11,14,21,0,31,21,0,32,21,0,4,21,0,32,7,0,7,9,3,2,21,0,0,21,0,2,21,0,5,0,0,8,8,15,26,3,3,21,0,0,0,0,21,0,6,0,6,8,8,22,0,33,11,14,15,27,22,0,34,11,14,15,28,22,0,35,11,14,0,12,21,0,17,0,21,19,21,0,9,15,29,8,22,0,36,11,14,0,12,21,0,17,0,21,19,21,0,9,15,30,8,22,0,37,11,14,15,31,22,0,38,11,14,15,32,22,0,39,11,14,15,33,22,0,40,11,14,15,34,22,0,41,11,14,15,35,22,0,42,11,14,15,36,22,0,43,11,14,15,37,22,0,44,11,14,15,38,22,0,45,11,14,0,0,21,0,6,0,12,8,0,21,3,2,21,0,1,21,0,5,0,0,8,0,12,3,2,0,12,21,0,6,0,12,8,0,21,3,2,0,14,21,0,6,21,0,45,0,12,7,8,21,0,24,0,8,7,0,22,19,0,21,3,2,15,39,3,5,21,0,24,15,40,7,16,22,0,46,11,14,0,21,15,41,3,2,21,0,0,0,0,8,22,0,47,11,14,21,0,46,0,20,21,0,47,8,22,0,48,11,14,21,0,46,0,7,0,22,19,0,20,3,0,0,14,3,2,21,0,0,0,0,8,8,22,0,49,11,14,0,0,21,0,9,0,15,21,0,5,21,0,22,8,21,0,17,0,21,19,21,0,9,15,42,8,8,22,0,50,11,14,15,43,21,0,9,15,44,15,45,3,2,21,0,0,0,22,0,18,0,12,0,12,0,22,19,7,21,0,24,0,8,7,0,22,19,0,7,0,22,19,3,2,21,0,0,0,12,0,12,0,22,19,8,8,8,22,0,51,11,14,15,46,22,0,52,11,14,21,0,52,0,54,21,0,21,21,0,8,0,12,8,0,7,0,22,19,15,47,3,3,7,22,0,53,11,14,21,0,52,0,55,0,12,21,0,7,0,21,8,0,7,0,22,19,15,48,3,3,7,22,0,54,11,14,15,49,22,0,55,11,14,15,50,22,0,56,11,14,15,51,22,0,57,11,14,15,52,22,0,58,11,14,15,53,22,0,59,11,14,15,54,22,0,60,11,14,15,55,22,0,61,11,14,21,0,30,0,9,7,22,0,62,11,14,21,0,30,0,10,7,22,0,63,11,14,21,0,4,21,0,62,21,0,8,21,0,63,8,7,0,20,0,23,21,0,62,16,21,0,8,21,0,63,8,8,22,0,64,11,14,21,0,30,15,56,0,20,21,0,21,8,7,22,0,65,11,14,21,0,30,15,57,0,20,21,0,19,8,7,22,0,66,11,14,21,0,30,15,58,0,20,0,7,21,0,5,21,0,66,21,0,5,0,7,8,8,8,7,22,0,67,11,14,21,0,30,0,8,7,0,20,21,0,42,0,21,7,8,22,0,68,11,14,21,0,30,0,8,0,7,0,6,19,7,0,20,21,0,42,0,22,7,8,22,0,69,11,14,21,0,30,0,8,0,20,21,0,18,0,7,21,0,17,19,21,0,7,0,21,8,8,7,22,0,70,11,14,21,0,30,21,0,16,0,7,0,22,19,7,0,20,21,0,14,8,22,0,71,11,14,21,0,30,0,13,0,7,0,22,19,7,0,20,21,0,50,8,22,0,72,11,14,21,0,30,0,12,0,7,0,22,19,7,0,20,21,0,22,8,22,0,73,11,14,21,0,30,0,12,7,0,20,0,12,8,22,0,74,11,14,21,0,30,21,0,16,7,0,20,21,0,3,0,21,7,0,5,0,68,19,8,22,0,75,11,14,21,0,30,0,13,7,0,20,21,0,3,0,21,7,0,5,0,69,19,8,22,0,76,11,14,21,0,30,0,6,7,22,0,77,11,14,21,0,30,0,7,7,22,0,78,11,14,21,0,78,21,0,77,0,22,19,22,0,79,11,14,21,0,77,0,21,3,2,21,0,78,0,21,3,2,21,0,70,0,22,3,2,21,0,62,0,22,3,2,21,0,63,0,22,3,2,21,0,64,0,22,3,2,21,0,68,0,22,3,2,21,0,69,0,21,3,2,21,0,79,0,22,3,2,21,0,65,0,21,3,2,21,0,66,0,29,3,2,21,0,67,0,28,3,2,21,0,71,0,21,3,2,21,0,76,0,22,3,2,21,0,74,0,22,3,2,21,0,75,0,22,3,2,21,0,72,0,21,3,2,21,0,73,0,21,3,2,3,18,21,0,24,15,59,7,21,0,4,0,21,7,0,5,0,70,19,3,1,0,16,0,21,17,17,22,0,80,11,14,15,60,22,0,81,11,14,0,15,0,20,21,0,12,8,22,0,82,11,14,15,61,22,0,83,11,14,15,62,22,0,84,11,14,15,63,22,0,85,11,14,15,64,22,0,86,11,14,15,65,22,0,87,11,14,21,0,87,22,0,88,11,14,21,0,82,21,0,6,21,0,26,8,15,66,3,2,21,0,0,21,0,74,21,0,71,0,22,19,21,0,6,21,0,69,8,8,22,0,89,11,14,21,0,28,21,0,7,21,0,35,8,22,0,90,11,14,21,0,73,21,0,74,0,21,19,21,0,78,0,22,19,21,0,61,15,67,15,68,3,2,21,0,0,21,0,2,21,0,5,0,0,8,8,8,22,0,91,11,14,21,0,53,0,20,21,0,40,8,22,0,92,11,14,21,0,54,0,20,21,0,41,8,22,0,93,11,14,21,0,59,0,20,21,0,83,8,22,0,94,11,14,0,21,21,0,61,21,0,39,8,0,20,21,0,38,8,22,0,95,11,14,21,0,91,0,20,21,0,35,8,22,0,96,11,14,21,0,56,0,20,21,0,56,21,0,7,21,0,58,8,8,22,0,97,11,14,21,0,57,0,20,21,0,57,21,0,7,21,0,58,8,8,22,0,98,11,14,15,69,22,0,99,11,14,15,70,22,0,100,11,14,15,71,22,0,101,11,14,15,72,22,0,102,11,14,21,0,102,15,73,3,2,21,0,0,21,0,2,21,0,5,21,0,82,21,0,5,0,18,0,0,7,8,8,21,0,24,21,0,69,7,9,8,22,0,103,11,14,21,0,103,21,0,7,21,0,82,21,0,1,3,2,21,0,0,0,0,8,8,22,0,104,11,14,15,74,22,0,105,11,14,15,75,22,0,106,11,14,15,76,22,0,107,11,14,15,77,22,0,108,11,14,21,0,85,22,0,109,11,14,21,0,86,22,0,110,11,14,21,0,108,21,0,33,7,0,20,0,21,21,0,34,21,0,33,8,8,22,0,111,11,14,21,0,108,21,0,4,21,0,33,7,7,0,20,0,22,21,0,34,21,0,4,21,0,33,7,8,8,22,0,112,11,14,15,78,22,0,113,11,14,0,4,21,0,7,21,0,45,0,22,7,8,22,0,114,11,14,15,79,22,0,115,11,14,21,0,115,21,0,1,21,0,5,0,19,21,0,77,7,8,21,0,4,21,0,78,7,0,22,19,21,0,4,21,0,28,7,21,0,4,21,0,96,21,0,5,21,0,111,21,0,5,21,0,114,8,8,7,19,7,22,0,116,11,14,15,80,22,0,117,11,14,21,0,13,21,0,5,21,0,72,8,22,0,118,11,14,21,0,89,0,20,21,0,51,8,22,0,119,11,14,21,0,101,0,20,21,0,100,8,22,0,120,11,14,21,0,113,0,22,7,0,20,21,0,116,8,22,0,121,11,14,21,0,4,21,0,113,0,21,7,7,0,20,21,0,115,21,0,1,7,8,22,0,122,11,14,15,81,22,0,123,11,14,15,82,22,0,124,11,14,15,83,22,0,125,11,14,15,84,22,0,126,11,14,21,0,125,0,20,21,0,36,8,22,0,127,11,14,21,0,111,21,0,5,21,0,111,8,21,0,28,21,0,78,21,0,1,19,21,0,4,21,0,121,7,19,22,0,128,1,11,14,15,85,22,0,129,1,11,14,0,22,21,0,61,21,0,43,8,21,0,7,21,0,15,8,0,20,21,0,27,21,0,7,0,21,21,0,71,16,8,8,22,0,130,1,11,14,21,0,104,0,20,21,0,82,0,16,0,21,19,8,22,0,131,1,11,14,15,86,22,0,132,1,11,14,0,5,21,0,7,0,103,8,22,0,133,1,11,14,0,5,21,0,7,0,104,8,22,0,134,1,11,14,15,87,22,0,135,1,11,14,15,88,22,0,136,1,11,14,15,89,22,0,137,1,11,14,21,0,77,21,0,4,21,0,78,7,0,20,21,0,77,8,21,0,78,21,0,78,21,0,70,21,0,4,21,0,62,7,0,20,21,0,1,8,21,0,62,21,0,62,21,0,63,21,0,30,0,2,7,21,0,64,21,0,4,21,0,63,7,0,20,21,0,4,21,0,70,7,8,21,0,68,21,0,4,21,0,62,7,0,20,21,0,68,21,0,135,1,21,0,1,8,8,21,0,69,21,0,2,21,0,78,0,22,19,21,0,62,21,0,4,21,0,78,7,19,0,20,21,0,69,21,0,135,1,21,0,1,8,8,21,0,79,21,0,79,21,0,71,0,21,21,0,5,21,0,133,1,8,0,20,15,90,8,21,0,1,21,0,1,21,0,2,21,0,48,21,0,5,21,0,134,1,8,21,0,2,21,0,1,19,0,20,21,0,1,8,21,0,119,15,91,0,20,0,21,21,0,5,21,0,133,1,8,8,21,0,118,15,92,0,20,15,93,8,21,0,92,0,21,21,0,5,21,0,133,1,8,0,20,21,0,92,21,0,135,1,21,0,131,1,21,0,7,0,27,8,8,8,21,0,93,0,21,21,0,5,21,0,133,1,8,0,20,21,0,93,21,0,135,1,21,0,131,1,8,8,21,0,94,0,21,21,0,5,21,0,133,1,8,0,20,21,0,94,21,0,135,1,21,0,49,8,8,21,0,95,21,0,95,21,0,7,21,0,78,8,0,20,21,0,95,8,21,0,127,21,0,126,0,20,21,0,37,8,21,0,96,0,21,21,0,5,21,0,133,1,8,0,20,15,94,8,21,0,120,21,0,137,1,0,20,21,0,136,1,8,3,42,21,0,82,21,0,7,21,0,73,21,0,4,21,0,62,7,0,23,19,21,0,4,21,0,119,7,0,23,19,8,16,21,0,127,16,15,95,16,22,0,138,1,11,14,15,96,22,0,139,1,11,14,15,97,22,0,140,1,11,14,21,0,71,21,0,121,21,0,5,21,0,131,1,8,21,0,5,21,0,66,21,0,95,21,0,92,3,4,19,22,0,141,1,11,14,21,0,140,1,22,0,142,1,11,14,21,0,81,0,20,21,0,12,8,22,0,143,1,11,14,15,98,22,0,144,1,11,14,21,0,44,22,0,145,1,11,14,21,0,129,1,0,20,21,0,128,1,8,22,0,146,1,11,14,21,0,117,0,20,21,0,96,21,0,7,21,0,122,8,8,22,0,147,1,11,14,21,0,77,21,0,78,21,0,70,21,0,62,21,0,63,21,0,64,21,0,66,21,0,67,21,0,65,21,0,79,21,0,68,21,0,69,21,0,71,21,0,72,21,0,73,21,0,74,21,0,76,21,0,75,21,0,48,21,0,49,21,0,2,21,0,1,21,0,143,1,21,0,119,21,0,118,21,0,92,21,0,93,21,0,94,21,0,98,21,0,97,21,0,95,21,0,127,21,0,96,21,0,111,21,0,112,21,0,130,1,21,0,131,1,21,0,121,21,0,146,1,21,0,122,21,0,147,1,21,0,120,0,5,21,0,3,21,0,4,21,0,60,21,0,45,21,0,144,1,21,0,139,1,21,0,24,21,0,88,0,19,21,0,5,21,0,6,21,0,7,21,0,8,21,0,145,1,0,20,21,0,132,1,21,0,110,21,0,109,21,0,142,1,3,62,25,21,0,1,15,99,21,0,5,0,16,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,25,21,0,2,25,21,0,1,25,21,0,1,14,21,0,4,25,21,0,1,21,1,2,21,0,2,17,21,0,4,21,0,1,17,25,21,0,1,21,0,5,21,0,2,17,21,0,4,16,25,21,0,1,21,0,5,16,21,0,4,21,0,2,21,0,5,16,17,25,21,0,1,21,0,5,21,0,1,21,1,2,21,0,2,17,21,0,4,16,17,25,21,0,1,21,0,5,16,21,0,4,21,0,1,21,1,2,21,0,2,17,17,25,21,0,1,15,100,21,1,1,21,0,4,3,2,0,16,21,0,1,21,0,5,21,0,2,17,17,7,21,0,2,17,25,21,0,1,3,1,25,21,0,2,21,0,1,3,2,25,21,0,1,3,1,25,21,0,1,3,1,0,15,3,0,17,25,21,0,2,21,0,1,3,2,25,21,0,2,21,0,1,3,2,25,21,0,1,0,12,16,0,12,0,22,17,0,5,0,31,17,14,21,0,1,22,0,5,11,21,1,22,16,22,0,6,11,14,21,0,4,22,0,7,11,14,21,0,1,21,1,2,0,20,15,101,15,102,3,2,21,1,0,21,0,6,21,1,17,0,21,17,8,8,21,0,2,17,22,0,8,11,14,21,0,6,0,17,16,0,18,0,7,21,1,7,0,22,0,7,21,0,6,17,8,7,16,0,18,15,103,7,16,14,21,0,8,25,21,0,2,0,7,21,0,1,21,1,22,16,17,0,17,16,0,18,21,1,3,21,0,1,7,0,16,0,6,21,1,7,21,0,2,8,19,7,16,25,21,0,2,21,1,22,16,22,0,3,11,14,21,0,1,21,1,22,16,0,6,21,0,3,17,0,17,16,0,18,21,0,2,21,1,8,0,16,8,21,1,4,21,0,1,7,0,16,21,0,3,21,1,8,0,7,8,19,3,2,21,1,0,0,13,21,1,7,21,0,3,8,8,7,16,25,21,0,1,21,1,25,0,22,17,22,0,3,11,21,1,24,0,8,7,0,22,17,22,0,4,11,14,21,0,4,0,17,16,0,15,21,0,3,17,0,18,0,6,21,1,7,0,8,21,1,7,21,0,4,8,8,21,1,4,0,16,7,21,0,1,0,15,16,19,7,21,0,2,17,25,21,0,2,0,18,21,0,1,21,1,8,0,16,8,7,16,25,15,104,22,0,2,11,14,15,105,22,0,3,11,14,21,0,3,21,0,1,7,21,1,4,21,0,3,21,1,4,21,0,1,7,7,7,3,2,21,1,0,0,12,21,1,6,21,1,18,8,8,21,0,2,21,0,1,7,3,2,21,1,0,0,12,21,1,6,0,12,8,8,25,15,106,21,0,1,7,22,0,2,11,14,21,0,1,15,107,15,108,3,2,21,1,0,0,0,21,1,6,21,1,18,8,8,0,20,0,18,21,0,2,7,8,21,1,29,21,0,2,7,3,3,21,1,0,0,0,21,1,6,0,6,8,8,25,21,0,1,21,1,32,21,0,2,17,25,21,0,1,0,14,21,1,6,21,1,105,8,21,0,2,17,22,0,3,11,14,21,0,3,21,1,24,21,1,106,21,0,1,0,15,16,21,1,8,0,16,8,21,1,8,21,1,33,21,1,7,21,0,2,0,15,16,21,1,8,0,16,8,8,8,7,7,16,22,0,4,11,14,0,21,21,1,4,21,0,4,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,34,17,14,21,0,1,21,1,22,16,22,0,6,11,14,21,0,1,21,1,25,0,22,17,21,1,24,0,8,7,0,22,17,22,0,7,11,14,21,0,1,0,15,16,22,0,8,11,14,0,21,22,0,9,11,22,0,10,11,14,21,0,8,0,21,0,18,21,1,10,7,21,1,24,0,8,7,0,22,19,3,2,21,1,0,21,0,6,21,1,17,0,24,17,0,8,0,22,0,12,21,0,7,17,17,8,16,21,1,1,21,1,9,21,0,1,21,1,8,15,109,8,8,16,0,7,0,22,17,22,0,11,11,14,21,0,1,0,18,21,0,10,21,1,8,0,7,8,0,7,21,1,7,21,0,9,8,3,2,0,16,21,0,5,17,7,0,4,21,1,7,0,3,8,9,15,110,21,0,4,7,3,2,21,1,0,21,0,11,8,16,25,21,0,1,0,12,16,0,12,0,22,17,0,5,0,35,17,14,21,0,1,21,1,22,16,22,0,3,11,14,21,0,1,21,0,3,21,1,17,0,21,17,21,1,9,15,111,8,16,25,21,0,1,21,1,22,16,22,0,3,11,14,21,0,1,21,1,25,0,22,17,22,0,4,11,21,1,24,0,8,7,0,22,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,1,3,21,0,1,0,15,16,7,0,16,0,8,21,1,7,21,0,5,8,21,1,8,0,6,8,19,7,21,0,5,0,17,16,0,15,21,0,4,17,17,25,21,0,1,0,12,16,21,1,4,0,7,7,0,22,17,22,0,3,11,14,21,0,1,0,14,16,22,0,4,11,14,21,0,4,0,16,21,0,3,17,22,0,5,11,14,21,0,3,0,17,16,0,18,21,0,4,21,1,8,0,16,8,7,16,22,0,6,11,14,21,0,6,21,1,24,0,8,7,0,22,17,0,17,16,0,15,21,0,6,17,0,18,21,1,3,21,0,1,0,15,16,7,0,16,0,8,21,1,7,21,0,5,8,21,1,8,0,6,8,19,7,21,0,5,0,17,16,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,37,17,14,21,0,1,21,1,22,16,22,0,3,11,14,21,0,1,21,1,28,21,0,3,0,17,16,0,18,0,7,21,1,7,0,22,0,7,21,0,3,17,8,7,16,17,25,21,0,2,21,1,10,16,0,5,0,38,17,14,21,0,1,21,1,22,16,22,0,3,11,14,21,0,3,0,9,21,0,2,17,21,1,19,16,0,8,21,0,3,17,0,7,22,0,2,13,14,21,0,1,21,1,28,21,0,3,0,17,16,0,18,21,1,1,0,13,21,0,2,0,7,21,0,3,17,19,0,8,21,0,3,19,0,7,21,1,1,19,0,6,21,0,2,19,7,16,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,39,17,14,21,0,1,21,1,22,16,0,6,0,22,17,0,17,16,0,18,21,0,1,21,1,8,21,1,28,21,1,7,0,17,8,8,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,40,17,14,21,0,1,21,1,22,16,22,0,3,11,14,21,0,3,0,6,0,22,17,0,17,16,0,18,21,0,1,21,1,8,21,1,28,21,1,7,15,112,8,8,7,16,25,21,1,28,21,1,7,21,0,1,21,1,34,21,1,33,21,1,4,21,1,33,7,3,2,0,16,21,0,1,17,8,8,25,21,0,2,0,0,16,0,5,0,41,17,14,21,0,2,0,18,21,1,10,7,16,0,15,16,21,1,24,0,8,7,0,22,17,0,5,0,42,17,14,21,0,1,21,1,22,16,22,0,3,11,14,21,0,2,0,18,21,1,18,21,1,7,21,0,3,8,0,8,0,13,21,1,7,21,0,3,0,7,16,8,19,7,16,0,15,16,21,1,24,0,8,7,0,22,17,0,5,0,43,17,14,21,0,1,21,1,28,21,1,7,0,18,21,1,1,21,1,18,0,21,19,0,8,21,0,3,19,0,6,21,1,1,19,7,8,21,0,2,17,25,21,0,1,0,14,16,22,0,6,11,21,1,24,0,8,7,0,22,17,22,0,7,11,0,17,16,22,0,8,11,14,21,0,1,21,0,5,21,1,6,21,0,4,8,21,0,2,17,22,0,9,11,14,21,0,8,0,15,21,0,6,17,21,0,5,16,22,0,10,11,14,15,113,0,15,3,2,0,16,21,0,10,0,0,16,17,22,0,11,11,14,21,0,9,21,0,11,16,22,0,9,12,14,21,0,10,21,0,11,16,22,0,10,12,14,21,0,10,0,21,21,1,34,21,1,31,8,16,22,0,12,11,14,21,1,4,21,0,10,7,0,16,21,0,12,21,1,8,0,16,8,19,21,0,7,3,2,21,1,0,0,13,21,1,7,21,0,12,21,1,22,16,8,8,22,0,13,11,14,0,21,22,0,14,11,21,0,13,16,22,0,15,11,14,21,0,8,0,18,21,0,1,0,15,16,21,1,8,0,16,8,15,114,3,2,21,1,0,15,115,8,7,16,0,15,21,0,6,17,25,21,1,15,21,1,6,21,1,29,21,0,1,7,0,20,0,18,21,0,1,7,8,8,25,21,0,1,21,1,45,21,1,46,7,21,0,2,17,0,15,16,21,1,24,0,8,7,0,22,17,25,21,0,2,0,16,0,22,17,21,0,1,3,2,21,1,0,21,0,2,0,16,0,21,17,8,25,21,0,1,0,15,16,0,18,21,1,47,7,16,21,1,24,0,7,0,8,0,13,19,0,7,21,1,2,19,7,0,21,17,0,6,0,22,17,25,21,0,1,0,15,16,0,16,0,21,17,21,1,49,16,22,0,3,11,14,21,0,1,0,15,16,0,18,21,1,49,21,1,48,21,0,3,19,7,16,21,1,24,0,8,7,0,22,17,0,5,0,44,17,14,21,0,3,21,1,24,0,8,7,0,22,17,0,17,16,0,15,21,0,3,17,0,18,21,1,4,21,1,12,21,1,8,0,16,8,7,7,21,0,1,17,25,21,0,1,0,0,16,0,5,0,49,17,14,21,0,1,0,15,16,21,1,22,16,21,1,17,0,21,17,25,0,27,22,0,3,11,22,0,4,11,14,3,0,22,0,5,11,14,21,0,1,22,0,6,11,14,21,0,1,0,18,21,1,22,7,16,21,1,35,16,0,18,15,116,7,16,25,21,0,1,0,15,16,22,0,3,11,21,1,22,16,22,0,4,11,14,21,0,3,0,18,21,1,49,7,16,22,0,5,11,14,21,0,5,0,16,0,21,17,21,1,22,16,22,0,6,11,14,21,0,1,0,12,16,22,0,7,11,14,21,0,5,0,18,21,1,22,0,12,21,0,6,19,7,16,21,1,24,0,8,7,0,22,17,0,5,0,45,17,14,21,0,7,21,1,16,21,0,6,17,0,5,0,46,17,14,15,117,22,0,8,11,14,21,0,1,21,1,49,16,22,0,9,11,14,0,22,22,0,10,11,14,0,21,21,1,17,16,22,0,11,11,22,0,12,11,14,21,0,7,0,17,16,21,1,45,15,118,7,21,0,9,21,1,38,16,21,0,8,0,8,7,0,22,17,21,1,38,16,17,14,21,1,45,15,119,21,0,3,0,18,0,15,7,16,7,7,22,0,13,11,14,21,0,11,21,0,13,15,120,3,2,21,1,0,21,0,6,21,1,17,21,0,7,17,8,21,0,12,17,25,21,0,1,22,0,2,22,0,3,22,0,4,4,3,11,14,0,51,21,1,26,21,0,2,17,21,1,26,0,50,17,22,0,5,11,14,0,52,22,0,6,11,14,0,53,22,0,7,11,14,15,121,25,21,0,1,21,1,21,16,22,0,5,11,21,1,17,21,1,7,21,0,2,8,21,1,9,21,0,4,8,16,14,21,0,5,0,17,16,0,18,21,0,1,0,6,21,0,2,17,21,1,8,0,6,8,7,0,18,0,21,21,1,8,21,1,17,8,21,1,9,0,28,8,7,9,0,18,0,13,21,1,7,21,0,2,8,21,1,9,0,28,8,7,3,2,21,1,0,21,0,1,21,1,17,0,21,17,8,16,25,21,0,1,14,0,6,21,1,20,0,21,19,0,17,9,0,7,21,1,20,0,21,19,0,17,9,0,18,0,6,7,21,1,1,21,1,5,21,1,17,8,19,3,2,21,1,0,21,1,17,21,1,7,0,21,8,8,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,56,17,14,21,0,2,0,12,21,1,6,0,7,8,21,0,1,17,22,0,3,11,14,21,0,3,0,13,0,21,17,0,5,0,57,17,14,21,0,3,21,1,16,0,22,17,0,5,0,58,17,14,21,0,1,21,1,25,0,22,17,22,0,4,11,14,21,0,4,21,1,22,16,0,17,16,0,18,21,1,3,21,0,2,21,1,49,16,7,0,16,21,0,3,0,7,0,22,17,21,1,8,0,6,8,19,0,12,21,0,4,21,1,8,0,16,8,19,7,16,21,1,24,0,8,7,0,22,17,0,5,0,59,17,14,21,0,4,21,1,24,0,8,7,0,22,17,25,21,0,1,21,1,55,21,0,2,17,22,0,3,11,14,21,0,2,0,22,21,1,22,3,2,21,1,0,21,1,1,0,12,21,1,6,0,13,8,21,0,1,19,8,16,0,8,21,0,3,17,22,0,4,11,14,21,0,1,21,1,22,16,0,8,21,0,3,17,0,17,16,0,18,21,0,2,21,1,12,16,21,1,8,0,16,8,21,1,3,21,0,1,0,15,16,7,0,16,21,0,4,21,1,8,0,7,8,19,3,2,21,1,0,0,13,21,1,7,21,0,4,8,8,7,16,0,15,21,0,1,21,1,49,16,17,25,21,0,1,21,1,55,21,0,2,17,22,0,3,11,14,21,0,1,21,1,22,16,0,8,21,0,3,17,22,0,4,11,14,21,0,2,0,22,21,1,22,3,2,21,1,0,21,1,1,0,12,21,1,6,0,13,8,21,0,1,19,8,16,0,8,21,0,3,17,22,0,5,11,14,21,0,5,0,7,21,0,4,17,22,0,6,11,14,21,0,4,0,17,16,0,18,21,1,3,21,0,1,0,15,16,7,0,16,21,0,5,21,1,8,0,6,8,19,21,1,3,21,0,2,21,1,12,16,7,0,16,21,0,6,21,1,8,0,7,8,19,3,2,21,1,0,0,13,21,1,7,21,0,6,8,8,7,16,0,15,21,0,1,21,1,49,16,17,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,56,17,14,21,0,1,21,1,25,0,22,17,21,1,1,21,1,24,0,8,7,0,22,19,0,17,9,21,1,8,0,15,8,16,0,18,21,0,1,0,1,16,7,16,25,21,0,1,0,0,16,0,5,0,60,17,14,21,0,2,0,12,16,21,1,16,0,22,17,0,5,0,61,17,14,21,0,2,21,1,12,16,22,0,2,12,21,1,22,16,22,0,3,11,14,21,0,1,21,0,3,21,1,17,0,21,17,21,1,9,15,122,8,21,0,2,17,25,0,27,21,1,86,21,0,1,8,25,21,0,1,22,0,3,11,14,15,123,15,124,3,2,21,1,0,21,1,2,21,1,5,21,1,48,21,1,17,21,0,2,19,8,8,25,21,0,2,21,1,62,21,0,1,17,21,1,19,16,0,8,21,0,2,17,0,7,21,0,1,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,18,21,0,2,17,17,25,21,0,2,21,0,1,3,2,0,16,21,0,1,21,1,17,21,0,2,17,17,25,21,0,1,21,0,2,0,16,0,22,17,3,2,21,1,0,15,125,21,0,2,0,16,0,21,17,7,8,25,21,0,2,21,1,74,16,21,1,75,0,22,17,0,5,0,71,17,14,21,0,2,21,1,12,16,22,0,3,11,14,21,0,3,0,18,21,1,11,7,16,21,1,79,16,22,0,4,11,21,1,24,21,1,77,7,16,22,0,5,11,14,21,0,5,21,1,75,0,22,17,0,5,0,72,17,14,21,0,1,21,1,12,16,22,0,6,11,21,1,73,16,22,0,7,11,14,21,0,3,21,1,24,21,1,70,7,15,126,3,2,21,1,0,21,0,5,8,16,22,0,8,11,14,21,0,6,21,0,7,21,1,73,21,0,8,17,21,1,9,15,127,8,16,0,15,21,0,3,17,25,15,128,1,22,0,3,11,14,15,129,1,22,0,4,11,14,21,0,1,21,0,3,21,0,4,3,2,21,1,0,0,0,8,16,25,21,0,1,21,1,5,21,1,82,8,21,1,1,21,1,5,21,1,71,8,21,1,45,0,16,7,21,1,73,21,1,8,21,1,4,21,1,65,21,1,77,0,22,19,21,1,78,21,1,2,19,7,8,19,0,22,0,21,3,2,0,20,0,23,3,1,8,19,25,21,0,1,21,1,84,21,0,5,7,21,0,2,17,22,0,6,11,21,1,72,0,21,17,22,0,7,11,14,21,0,4,22,0,8,11,14,15,130,1,22,0,9,11,14,21,0,1,21,0,9,21,0,6,7,21,0,2,17,25,21,0,1,21,1,84,21,0,5,7,21,1,45,21,1,78,21,1,8,21,1,66,8,21,1,78,21,1,67,0,21,19,3,2,21,1,0,21,1,1,21,1,76,0,21,19,8,7,21,1,74,21,1,6,21,1,13,8,19,21,0,2,17,22,0,6,11,14,15,131,1,22,0,7,11,14,21,1,1,21,1,71,9,21,0,7,21,1,1,0,18,21,1,71,7,9,3,3,21,1,0,21,1,74,21,1,8,21,1,75,8,21,1,77,0,22,19,21,1,70,0,21,21,1,8,21,1,72,8,19,8,22,0,7,12,14,21,0,1,21,0,7,21,0,6,0,16,21,1,7,21,1,73,21,1,4,21,1,78,7,0,22,19,8,16,17,21,1,45,21,0,4,7,21,0,2,21,0,7,21,0,6,0,16,0,21,17,17,17,21,1,72,16,25,21,0,1,21,1,74,16,21,1,76,0,22,17,0,5,0,78,17,14,21,0,1,21,1,60,21,1,71,7,16,21,1,24,21,0,4,7,21,0,2,17,25,21,0,1,21,1,49,21,1,6,21,1,13,8,21,0,2,17,22,0,3,11,14,21,0,3,0,18,21,1,73,7,16,22,0,4,11,21,1,24,21,1,67,7,0,22,17,22,0,5,11,14,21,0,4,21,1,78,21,0,5,17,21,1,75,0,22,17,21,1,24,21,1,68,7,16,0,5,0,79,17,14,21,0,3,21,1,45,21,1,28,21,1,7,0,22,21,1,78,21,0,5,17,0,17,16,21,1,8,21,1,77,8,8,7,21,0,5,21,1,79,21,0,4,17,17,22,0,6,11,14,21,0,6,21,1,24,21,1,48,7,16,0,5,0,80,17,14,21,0,3,21,1,45,0,22,21,1,1,0,16,0,21,19,3,2,21,1,0,21,1,2,8,7,21,0,4,21,1,74,21,0,5,17,17,21,1,24,21,1,77,7,16,22,0,7,11,14,21,0,1,21,1,82,21,1,6,21,1,26,8,21,0,2,17,21,1,82,21,0,6,0,16,0,21,17,21,1,26,21,0,7,3,1,17,17,25,21,0,2,21,1,11,16,0,5,0,36,17,14,21,0,2,22,0,3,11,22,0,4,11,14,21,0,1,21,1,28,21,0,1,21,1,73,16,21,1,70,21,0,3,17,0,17,16,0,19,21,1,4,15,132,1,21,1,9,15,133,1,8,7,7,16,17,25,21,0,1,21,1,73,21,1,6,21,1,74,8,21,0,2,17,0,5,0,81,17,14,21,0,1,21,1,90,21,0,2,17,25,21,0,1,0,18,21,1,10,7,16,21,1,24,21,1,68,7,16,0,5,0,82,17,14,21,0,1,21,1,76,0,27,17,21,1,24,21,1,68,7,16,0,5,0,83,17,14,21,0,1,0,4,21,0,1,0,3,16,22,0,5,11,17,22,0,6,11,14,0,21,22,0,7,11,14,21,0,5,0,18,21,1,94,21,1,5,0,18,15,134,1,7,8,21,0,4,9,7,16,25,21,0,1,21,1,74,16,21,1,74,0,22,17,0,5,0,84,17,14,21,1,99,21,1,1,7,22,0,3,11,14,21,0,1,21,0,3,0,18,15,135,1,7,21,1,24,0,18,0,18,21,1,26,7,7,7,3,0,21,1,71,16,21,1,71,16,19,3,2,21,1,0,21,1,48,21,1,71,0,22,19,8,16,25,21,0,1,0,0,16,0,5,0,85,17,14,21,0,2,21,1,48,21,1,72,0,23,19,21,1,9,21,1,15,21,1,5,21,1,13,8,8,16,22,0,2,12,14,21,0,2,21,1,74,16,21,1,74,0,22,17,0,5,0,86,17,14,21,0,2,0,18,21,1,74,7,16,21,1,24,21,1,77,7,16,22,0,3,11,14,21,0,1,21,1,74,16,21,1,76,21,0,3,17,0,5,0,87,17,14,21,0,1,21,1,49,16,21,1,92,21,0,3,17,21,1,74,21,0,2,0,18,21,1,49,7,16,21,1,51,16,17,21,1,24,21,1,68,7,16,0,5,0,88,17,14,21,0,2,0,18,21,1,82,7,16,22,0,2,12,0,18,21,1,73,7,16,22,0,4,11,14,21,0,1,21,1,25,21,0,3,17,21,1,26,21,0,4,21,1,24,21,1,70,7,16,3,1,17,21,1,4,21,1,82,7,21,0,1,17,21,1,8,21,1,28,8,22,0,5,11,14,21,0,2,0,16,21,1,7,0,21,8,21,1,99,21,0,5,7,9,0,18,21,1,99,21,1,1,7,7,21,1,70,21,0,4,21,1,95,16,21,1,97,0,22,17,0,19,21,1,70,7,16,21,1,95,16,19,21,1,24,0,18,0,18,21,1,77,7,7,7,9,0,18,21,0,5,7,9,3,2,21,1,0,21,1,73,21,1,73,0,22,19,8,16,25,21,0,2,21,1,74,16,21,1,74,0,22,17,0,5,0,89,17,14,21,0,1,21,1,49,16,22,0,3,11,21,1,73,21,1,6,21,1,74,8,21,0,2,17,0,5,0,90,17,14,21,0,2,0,18,21,1,10,7,16,21,1,24,21,1,68,7,16,0,5,0,91,17,14,21,0,3,21,1,71,21,1,68,21,1,78,21,1,8,21,1,75,8,19,21,0,2,17,21,1,24,21,1,68,7,16,0,5,0,92,17,14,0,21,21,1,71,21,0,2,17,21,1,70,21,0,3,17,21,1,77,21,0,2,17,22,0,2,12,14,21,0,2,21,1,73,16,21,1,79,21,1,7,21,1,94,8,16,21,1,78,16,21,1,24,21,1,1,21,1,70,21,0,3,21,1,8,0,16,8,19,21,1,77,21,0,2,21,1,8,0,16,8,19,7,0,21,17,21,1,4,0,16,7,21,0,1,21,1,82,16,17,25,21,0,2,0,18,21,0,1,21,1,8,21,1,103,8,7,16,25,21,0,1,21,1,74,21,1,7,0,21,8,21,1,24,21,1,69,7,9,21,1,6,21,1,4,21,1,78,7,8,21,0,2,17,22,0,3,11,14,21,0,1,0,21,21,0,3,3,2,15,136,1,3,2,21,1,0,0,21,21,1,74,21,0,3,17,8,21,0,2,17,25,21,0,4,22,0,5,11,14,21,0,2,22,0,6,11,14,21,0,1,22,0,7,11,14,15,137,1,22,0,8,11,14,21,0,4,21,1,74,21,1,7,0,21,8,21,1,9,21,0,1,8,9,21,0,8,3,2,0,16,21,0,6,21,1,73,0,22,17,17,25,21,0,1,22,0,2,11,14,21,1,71,21,1,7,0,21,8,21,1,9,15,138,1,8,25,21,0,2,21,1,74,16,21,1,4,21,1,78,7,0,22,17,22,0,5,11,14,21,0,5,21,1,76,0,21,17,0,5,0,93,17,14,21,0,1,21,1,74,16,21,1,76,21,0,5,17,0,5,0,94,17,14,21,0,2,21,1,25,0,22,17,22,0,6,11,21,1,24,21,1,70,7,16,22,0,7,11,14,0,21,21,1,106,21,0,2,21,1,82,16,21,1,8,0,16,8,21,1,6,21,0,4,8,7,21,0,7,17,22,0,8,11,14,21,0,2,21,1,73,16,0,22,0,22,21,1,8,21,1,78,21,1,5,21,1,94,8,8,21,1,70,21,0,7,19,0,18,21,1,77,21,1,7,21,0,7,8,21,1,8,21,0,8,8,7,9,21,1,4,21,1,76,7,0,21,19,21,1,24,21,1,68,7,9,3,2,21,1,0,21,1,71,21,1,7,0,21,8,8,16,0,5,0,95,17,14,21,0,1,21,1,74,16,21,1,4,21,1,78,7,21,0,5,17,22,0,9,11,14,21,0,1,21,1,25,21,0,9,17,22,0,10,11,14,21,0,10,21,1,105,21,0,6,17,22,0,11,11,14,21,0,11,21,1,24,21,1,106,21,0,1,21,1,82,16,21,1,8,0,16,8,21,1,8,21,0,4,21,1,7,21,0,2,21,1,82,16,21,1,8,0,16,8,8,8,7,7,16,22,0,12,11,14,21,1,4,0,21,7,21,1,76,21,0,12,21,1,7,21,1,70,21,1,7,21,0,6,21,1,24,21,1,70,7,16,8,8,19,22,0,13,11,14,21,0,9,21,1,94,16,0,18,21,0,1,21,1,49,16,21,1,8,0,16,8,7,16,21,1,24,21,1,70,7,21,1,94,9,21,1,8,21,1,82,8,16,21,1,70,21,0,10,21,1,24,21,1,70,7,16,17,0,18,15,139,1,21,1,7,21,0,2,21,1,73,16,8,7,16,25,21,0,1,22,0,2,11,14,21,1,88,21,1,68,7,21,1,79,9,0,19,21,1,68,7,21,1,88,21,1,77,7,9,3,2,0,16,21,0,1,17,22,0,3,11,14,15,140,1,25,21,0,1,21,1,74,16,21,1,76,0,22,17,0,5,0,97,17,14,21,0,1,21,1,111,16,22,0,5,11,14,21,0,1,21,1,73,16,21,1,94,16,0,18,0,22,21,1,1,21,0,1,21,1,74,21,1,71,0,22,19,21,1,9,21,1,60,21,1,71,7,8,16,21,1,28,21,0,5,17,21,1,8,0,16,8,21,1,6,21,1,49,8,0,22,21,1,8,21,1,78,8,19,3,2,21,1,0,21,1,71,21,1,7,0,21,8,8,7,16,21,0,4,21,0,5,17,21,1,28,21,0,5,21,1,114,16,17,25,21,0,2,21,1,74,16,22,0,3,11,14,21,0,1,21,1,74,16,21,1,76,21,0,3,17,0,5,0,98,17,14,21,0,1,21,0,3,21,1,110,21,1,94,8,21,0,2,21,1,49,16,17,21,0,3,21,1,110,21,1,48,8,21,0,2,17,25,21,0,2,21,1,74,16,21,1,75,0,22,17,0,5,0,99,17,14,21,0,1,21,1,49,16,21,1,73,21,1,6,21,1,76,8,21,0,2,17,0,5,0,100,17,14,21,0,2,21,1,82,16,0,18,21,1,11,7,16,21,1,24,21,1,68,7,16,0,5,0,101,17,25,21,0,1,21,1,49,16,21,1,120,21,0,2,17,0,18,21,1,24,21,1,66,7,7,16,21,1,94,16,0,18,21,1,3,21,0,1,7,21,1,104,21,1,28,21,1,7,21,0,2,8,19,7,16,25,21,0,1,21,1,123,21,0,2,17,14,21,0,2,21,1,82,16,22,0,2,12,14,21,0,2,21,1,122,16,21,1,79,16,21,1,24,21,1,77,7,16,21,1,78,21,0,1,21,1,74,16,17,22,0,3,11,14,21,0,3,21,1,71,21,0,2,17,21,1,24,21,1,68,7,16,0,5,0,102,17,14,21,0,1,21,1,124,21,0,3,21,1,94,16,21,1,1,21,1,96,21,1,4,21,1,122,21,1,5,21,1,79,8,7,19,21,0,2,17,21,1,119,21,0,2,17,17,25,21,0,1,21,1,123,21,0,2,17,14,21,0,2,21,1,82,16,22,0,2,12,14,21,0,1,21,1,74,16,22,0,3,11,14,21,0,2,21,0,3,21,1,8,21,1,71,8,21,1,68,21,1,122,19,16,21,1,24,21,1,68,7,16,21,1,133,1,16,14,21,0,1,21,1,124,21,0,3,21,1,94,16,21,1,1,21,1,96,21,1,4,21,1,122,21,1,5,21,1,79,8,7,19,21,0,2,17,21,1,119,21,0,2,17,21,1,114,16,17,25,21,0,1,21,1,121,21,1,7,21,0,2,8,21,1,128,1,21,1,8,21,1,60,21,1,118,7,8,9,21,1,6,21,1,121,8,21,0,2,17,25,21,0,1,15,141,1,21,0,5,21,1,131,1,21,0,1,21,0,4,21,0,2,17,17,7,21,0,2,17,25,21,0,1,21,0,4,21,0,2,17,22,0,6,11,14,21,0,6,21,0,5,21,0,2,17,21,1,48,21,0,1,17,21,1,134,1,16,14,21,0,6,25,21,0,1,21,1,74,16,21,1,74,0,22,17,21,1,133,1,16,14,21,0,1,21,1,119,16,22,0,3,11,14,21,0,3,0,18,21,1,11,7,16,21,1,24,21,1,68,7,16,21,1,133,1,16,14,21,0,3,0,3,16,22,0,4,11,14,0,22,21,1,76,21,0,4,17,21,1,24,21,1,68,7,16,21,1,134,1,16,14,21,0,4,21,1,79,16,21,1,96,16,22,0,5,11,14,21,0,5,21,1,45,0,27,7,16,21,1,119,21,0,1,21,1,45,21,1,73,7,16,21,1,96,16,17,21,1,130,1,21,0,5,21,1,119,21,0,3,17,21,1,111,16,17,25,21,0,2,21,1,74,16,21,1,74,0,22,17,21,1,133,1,16,14,21,0,2,0,18,21,1,11,7,16,21,1,24,21,1,68,7,16,21,1,133,1,16,14,21,0,1,21,1,119,21,1,6,21,1,130,1,21,1,7,21,1,111,8,8,21,0,2,21,1,120,16,17,25,21,0,1,0,0,16,21,1,134,1,16,14,21,0,1,21,1,74,16,21,1,74,0,21,17,21,1,134,1,16,14,21,0,1,21,1,131,1,16,25,21,0,2,21,1,74,21,1,6,21,1,78,8,21,0,1,17,22,0,3,11,14,21,0,3,0,22,21,1,8,21,1,76,8,21,1,68,21,1,76,21,1,7,0,21,8,19,16,21,1,134,1,16,14,21,0,2,0,22,21,1,73,3,2,21,1,132,1,21,0,3,8,16,22,0,4,11,14,21,0,1,21,1,73,16,21,1,76,21,0,4,17,21,1,134,1,16,14,21,0,1,21,1,130,1,21,1,92,21,1,7,21,0,4,8,3,2,21,1,132,1,21,0,3,8,16,21,1,48,21,0,2,17,21,1,134,1,16,14,21,0,1,21,1,93,21,0,4,17,25,21,0,1,21,1,73,16,21,1,74,0,23,17,21,1,134,1,16,14,21,0,1,21,1,130,1,16,21,1,48,21,0,2,17,21,1,134,1,16,14,21,0,1,21,1,130,1,0,22,17,25,21,0,1,21,1,73,16,21,1,74,0,22,17,21,1,134,1,16,14,21,0,1,21,1,130,1,16,25,21,0,1,21,1,74,16,21,1,74,0,22,17,21,1,133,1,16,14,21,0,1,0,18,21,1,11,7,16,21,1,24,21,1,68,7,16,21,1,133,1,16,14,21,0,1,21,1,93,21,1,7,0,22,8,21,1,76,21,1,93,21,1,7,0,27,8,19,21,1,24,21,1,68,7,9,16,21,1,134,1,16,14,21,0,1,0,3,16,25,21,1,4,21,1,4,0,21,7,0,5,0,105,19,3,1,21,1,119,21,0,1,21,1,130,1,0,22,17,17,7,21,1,131,1,21,1,71,21,1,121,21,0,1,21,1,130,1,0,21,17,19,21,1,131,1,9,19,25,21,0,1,21,1,138,1,16,25,21,0,1,21,0,5,21,0,2,17,22,0,6,11,14,0,21,22,0,7,11,22,0,8,11,14,21,0,6,0,21,21,1,109,15,142,1,8,16,14,21,0,1,22,0,9,11,14,15,143,1,22,0,10,11,14,21,0,7,21,0,10,21,1,1,21,0,4,21,0,2,19,7,16,22,0,11,11,14,21,0,8,21,1,78,16,21,0,10,21,1,1,21,1,139,1,21,0,4,7,21,0,2,19,7,16,22,0,12,11,14,21,0,6,0,21,21,1,109,21,1,3,21,0,11,21,0,12,3,2,7,21,1,131,1,0,21,21,1,8,21,1,71,8,19,21,1,131,1,21,1,65,19,8,16,25,21,1,15,21,1,6,0,18,21,0,1,7,8,25,21,0,1,25,21,0,1,25,21,0,1,14,21,1,7,21,2,80,16,25,0,22,0,7,21,1,6,17,22,1,6,12,14,21,0,1,0,16,21,1,6,17,25,21,1,8,21,1,7,21,1,5,0,16,21,0,1,17,17,22,1,8,12,25,21,0,2,0,14,16,22,0,5,11,14,21,0,2,0,12,16,0,17,16,21,2,24,0,8,21,2,7,21,0,1,0,14,16,21,2,8,0,16,8,0,12,21,0,5,21,2,8,0,16,8,19,8,7,0,22,17,0,5,0,32,17,14,21,0,5,21,2,24,0,8,7,0,22,17,0,17,16,0,18,21,0,1,0,15,16,21,2,8,0,16,8,21,0,4,21,0,2,0,15,16,21,2,8,0,16,8,19,7,16,0,15,21,0,5,17,25,21,0,2,0,14,16,22,0,5,11,14,21,0,2,0,12,16,22,0,6,11,14,21,0,1,0,14,16,22,0,7,11,14,21,0,6,0,17,16,21,2,24,0,8,21,2,7,21,0,7,21,2,8,0,16,8,0,12,21,0,5,21,2,8,0,16,8,19,8,7,0,22,17,0,5,0,33,17,14,21,0,6,0,7,21,0,1,0,12,16,17,0,17,16,21,2,24,0,8,21,2,7,0,6,21,2,7,21,0,6,8,21,2,4,0,16,7,21,0,7,19,8,7,0,22,17,22,0,8,11,14,21,0,2,0,15,16,22,0,9,11,14,21,0,1,0,15,16,22,0,10,11,14,21,0,8,0,17,21,2,6,0,18,21,2,3,21,0,10,7,0,16,0,6,21,2,7,0,8,21,2,7,21,0,8,8,8,19,21,0,4,21,0,9,21,2,8,0,16,8,19,7,8,21,0,9,21,2,22,16,17,0,15,16,0,15,21,0,7,17,25,21,0,1,21,2,30,21,0,4,7,21,0,2,17,25,21,0,1,0,18,15,144,1,21,0,2,7,7,16,25,21,0,2,0,18,15,145,1,21,0,1,7,7,16,25,21,1,6,0,8,0,23,17,0,13,21,0,1,21,2,24,21,2,19,7,16,22,1,10,12,0,7,21,0,1,21,2,24,21,2,20,7,16,22,1,9,12,17,17,25,21,0,1,14,21,2,4,0,21,7,21,2,18,0,21,21,2,106,21,1,8,21,2,8,0,16,8,21,2,6,21,0,4,8,7,21,1,7,17,19,22,0,5,11,14,21,2,1,21,1,6,3,2,21,2,0,0,13,21,2,7,21,1,6,8,8,22,0,6,11,14,0,21,0,12,21,1,6,17,0,6,21,1,6,17,0,2,0,23,17,21,2,20,16,22,0,7,11,0,17,16,0,18,21,2,1,0,6,0,22,19,0,7,21,0,7,19,0,10,0,23,19,7,16,21,2,24,15,146,1,7,21,1,6,0,17,16,17,25,21,0,1,0,18,21,2,11,7,16,21,2,24,0,8,7,0,22,17,0,5,0,36,17,14,0,22,0,7,21,1,3,17,22,0,3,11,14,21,2,1,0,7,21,0,3,19,21,2,4,0,16,7,21,1,3,0,17,16,0,18,0,7,21,2,7,21,0,3,8,7,16,0,19,21,2,1,21,2,4,0,16,7,21,0,1,19,0,12,0,21,19,0,8,0,7,19,0,6,21,2,1,19,7,16,19,22,0,4,11,14,21,0,1,0,19,0,6,7,16,21,2,8,0,16,8,22,0,5,11,14,0,21,21,0,4,16,22,0,6,11,21,0,5,16,22,0,7,11,14,21,0,3,21,0,5,16,0,17,16,0,18,15,147,1,7,16,25,21,0,1,0,7,21,1,3,17,0,17,16,0,18,0,6,21,2,7,21,0,1,8,7,16,25,21,0,1,3,1,25,21,0,1,14,21,1,9,0,16,21,1,12,0,16,21,1,14,17,17,22,0,3,11,14,21,1,14,0,6,0,22,17,22,1,14,12,21,1,13,16,22,1,15,12,14,21,0,3,25,21,0,1,0,12,21,1,15,17,25,21,0,1,0,12,21,2,7,21,1,4,8,0,7,0,22,19,21,2,9,15,148,1,8,16,14,21,1,5,0,16,0,22,0,6,21,1,3,17,22,1,3,12,17,25,21,0,2,22,0,5,11,14,21,0,4,22,0,6,11,14,21,0,1,0,18,15,149,1,7,16,25,21,0,2,22,0,3,11,14,21,1,9,0,16,21,0,1,17,22,0,4,11,14,21,1,5,0,18,0,16,21,2,7,21,0,1,8,7,16,22,0,5,11,14,21,0,4,0,17,16,0,18,21,2,3,21,0,5,7,0,16,0,8,21,2,7,21,0,3,8,19,7,16,22,0,6,11,14,21,0,3,0,17,16,0,18,21,2,2,7,21,0,6,17,0,18,21,2,1,7,21,1,10,0,17,16,17,0,15,16,21,2,45,0,12,7,21,0,5,17,21,2,24,0,8,7,0,22,17,0,5,0,47,17,14,21,0,6,21,2,35,16,22,0,7,11,14,21,0,7,21,2,22,16,0,17,16,0,18,21,0,6,21,1,8,0,6,7,0,21,17,21,2,28,21,0,7,17,21,2,8,0,16,8,21,2,8,0,7,8,7,16,22,0,8,11,14,21,0,8,0,18,21,2,1,7,21,1,12,17,21,2,45,0,6,7,21,0,7,0,18,21,0,6,21,2,8,0,16,8,21,2,8,0,8,8,7,21,1,12,17,17,22,1,12,12,14,21,0,7,0,18,0,6,21,2,7,21,0,4,21,2,8,0,8,8,8,7,21,1,11,17,22,1,11,12,14,21,0,4,0,8,22,1,10,13,25,21,0,4,0,16,21,0,1,17,0,16,21,0,2,17,25,21,2,28,21,2,7,21,1,7,0,7,21,1,6,17,0,17,16,0,18,0,6,21,2,7,21,1,7,8,7,16,8,22,0,3,11,14,21,1,5,0,16,0,21,17,21,0,3,16,22,0,4,11,14,21,1,5,0,18,21,0,3,21,2,45,0,12,7,21,0,4,19,21,2,24,0,8,7,9,7,16,21,2,24,0,8,7,0,22,17,0,5,0,48,17,14,21,0,4,21,2,24,0,8,7,16,22,0,5,11,0,17,16,0,15,21,0,4,17,22,0,6,11,14,21,0,6,0,18,21,2,2,7,21,0,1,17,21,1,13,21,0,6,0,18,0,6,21,2,7,0,8,21,2,7,21,0,5,8,8,7,21,0,2,17,17,25,21,0,2,0,12,16,21,2,16,0,22,17,0,5,21,1,6,17,14,21,0,2,21,2,12,16,22,0,2,12,14,21,0,2,0,18,21,2,10,7,16,21,2,24,0,8,7,0,22,17,0,5,21,1,7,17,14,21,0,2,21,2,22,16,22,0,3,11,14,21,0,1,21,2,49,16,21,2,22,21,2,8,21,2,18,8,21,2,9,15,150,1,8,21,0,3,17,22,0,4,11,14,15,151,1,22,0,5,11,14,0,21,21,2,17,16,22,0,6,11,14,0,22,22,0,7,11,14,15,152,1,22,0,8,11,14,0,21,22,0,9,11,14,21,0,3,0,17,16,0,18,21,0,2,21,2,8,0,16,8,15,153,1,21,1,4,15,154,1,7,21,0,8,21,2,2,19,3,2,21,2,0,21,1,3,8,21,0,4,21,2,8,0,16,8,19,7,16,22,0,10,11,14,21,0,1,21,2,15,16,0,15,21,2,7,21,0,4,8,15,155,1,3,2,21,2,0,21,0,6,0,12,16,21,2,17,0,21,17,8,16,25,21,0,1,0,12,16,0,13,21,1,3,17,0,5,0,62,17,14,21,0,2,0,18,21,2,11,7,16,21,2,24,0,8,7,16,0,5,0,63,17,14,21,0,1,21,2,49,16,22,0,3,11,14,21,1,3,0,17,16,0,18,21,0,2,21,2,8,0,16,8,0,7,21,0,3,21,2,8,0,16,8,19,0,6,0,22,19,7,16,22,0,4,11,14,21,0,4,0,18,0,13,21,2,7,0,21,8,7,16,21,2,24,0,8,7,16,0,5,0,64,17,14,21,0,3,21,2,28,21,1,3,0,7,21,2,7,21,2,22,8,21,0,3,17,0,17,16,0,18,0,6,21,2,7,21,1,3,8,7,16,17,22,0,5,11,21,2,24,0,8,7,0,22,17,22,0,6,11,14,0,22,0,7,21,1,3,17,15,156,1,16,21,2,26,21,0,6,3,1,17,0,19,0,8,7,16,21,2,38,16,22,0,7,11,14,21,0,2,21,2,1,21,2,45,15,157,1,7,21,0,7,19,21,2,24,0,18,0,6,7,7,9,21,2,6,0,18,0,6,7,8,21,0,4,17,0,22,21,2,8,0,12,8,0,7,0,22,19,21,2,9,21,2,4,0,17,0,15,21,0,5,19,21,2,8,0,18,0,6,7,8,7,8,21,0,6,17,0,18,21,0,1,0,15,16,21,2,8,0,16,8,7,16,25,21,0,1,0,12,16,0,13,0,22,17,0,5,0,65,17,14,21,0,1,21,1,3,21,0,2,17,25,21,0,2,0,12,16,21,2,16,0,22,17,0,5,0,66,17,14,21,0,1,21,2,49,16,21,2,22,21,2,6,0,13,8,21,0,2,17,0,5,0,67,17,14,21,0,2,21,2,22,16,22,0,3,11,14,21,0,2,0,15,16,21,2,8,0,16,8,22,0,4,11,14,21,0,1,21,0,3,21,2,17,0,21,17,21,2,9,15,158,1,8,0,21,17,25,21,0,1,21,2,74,21,0,4,17,25,21,0,1,21,2,45,21,2,1,0,22,3,2,21,2,0,21,2,2,8,7,21,1,4,17,21,2,24,21,2,70,7,16,22,0,3,11,14,21,0,3,21,2,71,0,21,17,0,5,0,73,17,14,21,1,4,21,2,73,16,0,17,16,21,2,70,21,1,4,17,21,2,24,21,2,77,7,16,22,0,4,11,14,21,1,3,0,16,21,0,4,17,21,2,141,1,16,22,0,5,11,14,0,30,21,2,71,21,0,5,17,0,5,0,74,17,14,21,2,74,21,2,7,21,2,66,8,0,5,0,75,19,21,2,2,21,2,1,19,22,0,6,11,14,21,0,3,21,2,62,21,1,7,17,21,0,6,21,2,66,21,2,67,3,3,21,2,0,21,0,5,21,2,66,0,23,17,8,16,22,0,7,11,14,21,1,3,21,2,45,21,2,1,21,0,7,3,2,21,2,0,21,2,2,8,7,21,1,4,17,22,1,3,12,14,21,0,7,21,2,70,21,0,3,17,21,0,5,21,2,74,0,25,17,21,2,9,21,2,71,21,2,7,21,1,7,8,21,2,9,15,159,1,8,8,16,25,21,1,8,0,17,16,0,18,21,2,2,7,21,2,7,0,1,8,15,160,1,3,2,21,2,0,21,1,7,21,2,71,0,21,17,8,21,0,1,17,25,21,0,1,21,2,11,16,0,5,0,76,17,14,21,0,1,0,17,16,25,21,0,1,21,2,74,16,21,2,74,0,22,17,0,5,0,77,17,14,21,0,1,0,18,21,1,3,7,16,21,2,24,0,18,21,2,26,21,2,7,21,2,82,8,7,7,3,0,21,2,71,16,17,25,21,1,9,21,1,7,21,2,77,21,0,4,17,7,22,0,5,11,14,21,0,1,21,2,45,21,0,5,7,21,2,2,21,2,5,0,18,21,0,1,21,2,8,21,0,5,8,7,8,21,2,1,21,2,5,0,18,21,2,1,21,0,5,21,0,2,19,7,8,21,1,8,3,4,21,2,0,21,2,48,21,2,6,21,2,13,8,21,2,75,21,0,4,21,2,67,0,21,17,19,21,2,69,0,21,21,2,75,21,0,4,17,21,2,68,21,1,7,17,19,21,2,81,0,23,19,21,2,24,21,2,77,21,2,7,0,23,21,2,8,21,2,70,8,8,7,9,8,21,0,2,17,25,21,0,1,21,2,49,16,21,2,28,21,0,2,0,17,16,17,22,0,3,11,14,21,0,1,21,2,25,21,0,2,17,22,0,4,11,21,2,24,21,2,70,7,16,22,0,5,11,14,21,0,3,21,2,24,21,2,70,7,16,0,17,16,0,18,21,2,1,21,2,70,21,0,5,19,21,2,77,21,0,5,0,17,16,21,2,82,21,0,4,17,19,21,2,5,0,18,21,0,1,21,2,82,16,21,2,8,0,16,8,7,8,7,16,21,2,82,21,0,3,17,25,21,0,2,21,2,74,21,1,4,17,25,21,1,3,21,2,77,22,1,4,13,14,21,0,1,21,2,77,0,22,17,25,21,0,1,14,21,1,6,0,16,21,1,7,17,21,2,1,0,22,21,2,77,21,1,7,17,22,1,7,12,17,25,21,0,1,21,2,82,16,21,1,3,16,0,18,21,0,1,21,2,49,16,21,2,94,16,21,2,82,16,21,2,8,21,2,28,8,7,16,25,21,0,1,21,2,73,21,2,6,21,2,78,8,21,0,2,17,21,2,70,16,22,0,3,11,14,21,0,1,21,2,73,21,2,6,21,2,66,8,21,0,2,17,22,0,4,11,14,21,0,1,15,161,1,21,2,7,21,2,73,21,2,77,21,0,4,21,2,94,16,21,2,77,0,22,17,21,2,78,16,19,8,21,2,6,15,162,1,8,21,0,2,17,22,0,5,11,14,21,0,5,21,0,3,3,2,25,21,0,2,22,0,3,11,14,21,0,1,22,0,4,11,14,15,163,1,21,1,7,3,2,21,2,0,21,2,74,21,2,7,21,1,6,8,8,22,0,5,11,14,0,21,21,0,5,16,25,15,164,1,22,0,3,11,14,0,27,21,0,3,0,22,21,2,77,21,0,1,17,17,21,2,77,0,22,17,25,21,0,2,21,2,107,21,0,1,21,2,8,21,1,13,8,7,16,25,21,0,2,21,2,74,16,21,2,4,21,2,78,7,0,22,17,22,0,3,11,14,21,0,3,21,2,76,0,21,17,0,5,0,96,17,14,21,0,1,21,2,15,16,21,2,1,21,2,5,21,0,3,21,2,110,0,21,8,8,21,2,1,21,0,3,21,2,110,21,2,71,8,3,2,21,2,0,21,0,3,21,2,71,0,21,17,8,21,2,6,0,18,21,2,49,7,8,21,1,3,9,3,2,21,2,0,21,0,2,21,2,73,16,21,2,71,0,21,17,8,15,165,1,3,2,21,2,0,21,2,82,21,2,5,21,2,73,8,21,2,71,0,26,19,21,2,6,21,2,68,8,8,21,0,2,17,25,21,0,1,25,21,0,1,21,2,10,16,0,5,0,106,17,14,21,0,1,21,2,66,21,1,8,17,22,1,8,12,14,21,0,1,21,2,67,21,1,7,17,22,1,7,12,25,21,0,1,21,2,77,0,21,17,21,2,94,16,21,2,119,21,1,9,3,1,17,0,19,21,2,2,21,2,5,21,0,4,8,7,16,25,21,0,1,21,2,2,21,0,4,17,25,21,0,4,21,2,2,21,0,1,17,25,21,0,2,22,0,3,11,0,7,16,22,0,4,11,14,0,21,22,0,5,11,22,0,6,11,22,0,7,11,14,0,25,22,0,8,11,14,21,0,1,0,22,0,12,21,2,7,17,0,7,0,22,17,21,3,9,0,18,0,8,21,3,7,21,2,7,8,7,8,16,21,3,8,0,16,8,21,3,6,21,1,5,8,22,0,9,11,14,21,0,9,0,21,0,22,0,23,3,4,22,0,10,11,14,0,6,15,166,1,3,2,0,16,21,0,3,0,13,0,26,17,17,22,0,11,11,14,15,167,1,22,0,12,11,14,15,168,1,15,169,1,21,0,12,3,3,21,3,0,15,170,1,8,22,0,13,11,14,21,0,1,0,18,21,0,1,21,3,8,15,171,1,8,7,16,25,21,1,6,21,1,7,0,12,21,0,1,17,21,3,9,15,172,1,8,16,25,21,0,1,22,2,4,12,21,3,4,0,16,7,21,2,6,17,22,2,5,12,14,0,27,22,2,3,12,25,21,1,5,22,0,3,11,14,21,0,1,21,1,6,22,1,5,13,14,21,0,3,25,21,0,1,21,3,26,21,0,1,21,3,22,16,0,7,21,0,2,17,0,17,21,3,5,0,18,0,22,7,8,16,17,25,21,0,1,0,18,0,6,7,21,0,2,0,18,21,0,4,21,3,8,0,8,8,7,16,17,25,21,0,1,0,22,21,3,8,0,12,8,0,7,0,22,19,21,3,9,21,1,5,21,0,2,7,21,3,7,0,17,8,8,21,1,7,17,21,1,5,21,0,2,0,8,21,1,7,17,7,22,1,6,13,14,0,22,22,1,7,12,14,21,0,1,21,3,22,16,25,21,0,2,0,8,22,1,7,13,14,21,0,2,25,0,22,22,1,9,12,25,21,1,3,0,7,21,1,4,21,3,22,16,17,0,17,16,0,18,0,6,21,3,7,21,1,3,8,21,3,4,0,16,7,21,1,4,19,7,16,22,0,3,11,21,3,26,22,1,10,13,14,21,0,3,21,3,24,0,8,7,21,1,7,17,0,12,21,3,7,0,22,8,0,7,0,22,19,21,3,9,15,173,1,8,16,14,21,0,1,0,15,16,21,3,8,0,16,8,22,0,4,11,14,21,1,9,21,3,1,21,3,9,15,174,1,8,16,14,21,1,6,0,15,21,1,10,17,0,18,21,0,4,7,16,25,21,0,1,0,17,16,0,18,0,7,21,3,7,21,0,1,8,21,3,4,0,16,7,21,1,3,19,7,16,25,21,0,1,0,17,16,0,18,0,8,21,3,7,21,0,2,8,7,16,25,21,0,1,0,22,0,7,21,1,3,17,21,3,17,21,0,2,17,21,3,9,21,3,60,21,0,0,21,3,7,21,0,2,0,6,0,22,17,8,7,8,16,21,2,3,21,0,2,21,1,4,16,17,25,21,2,7,21,3,78,21,0,1,17,0,17,16,0,18,21,2,6,0,1,16,7,16,21,3,26,22,2,6,13,14,21,2,7,25,21,0,1,21,3,65,21,2,7,17,0,18,21,2,6,21,3,8,0,16,8,7,16,25,21,0,2,0,18,21,0,1,21,3,8,0,16,8,7,16,25,21,0,1,21,3,74,21,0,2,17,0,19,21,3,68,7,16,21,3,24,21,3,77,7,16,22,0,3,11,14,21,0,3,21,3,94,16,0,18,21,0,2,21,3,8,0,16,8,7,16,21,3,24,21,3,70,7,16,22,0,4,11,14,21,0,3,21,3,72,21,3,7,21,1,4,8,21,3,9,21,0,2,21,0,1,3,2,21,3,8,21,3,45,0,16,7,8,21,3,5,15,175,1,8,8,16,14,21,0,4,25,21,1,4,21,3,77,21,3,7,21,0,1,8,21,3,6,21,2,5,8,21,1,3,17,21,3,74,21,3,7,0,21,8,21,3,9,21,0,1,21,3,77,0,22,17,21,3,5,21,1,5,8,8,16,25,21,0,1,0,22,21,3,8,21,3,72,8,21,3,9,15,176,1,8,21,0,2,17,25,21,0,2,21,3,112,16,21,3,95,16,22,0,3,11,14,21,0,1,21,3,111,21,0,2,21,3,28,21,0,3,17,17,21,3,4,21,3,78,7,0,22,17,21,3,67,0,21,17,21,3,4,21,3,28,7,21,0,3,17,22,0,4,11,14,21,0,1,21,1,3,21,3,110,21,3,48,8,21,0,2,21,3,28,21,0,4,17,17,21,2,2,21,3,9,21,3,70,21,3,7,21,3,78,21,3,7,21,0,4,8,8,21,3,77,21,3,2,19,8,21,0,2,21,3,73,16,17,25,21,0,1,21,1,8,0,7,0,22,17,21,4,9,21,1,9,0,7,0,22,19,21,4,9,15,177,1,8,8,0,22,0,7,21,0,1,17,17,25,21,0,2,0,6,21,1,3,17,22,1,4,12,14,21,0,1,0,6,21,1,3,17,22,1,7,12,21,2,6,16,22,1,6,12,0,6,21,1,3,17,21,2,6,16,22,1,5,12,14,21,1,7,0,13,21,3,6,17,22,1,8,12,14,21,1,6,21,1,11,16,14,21,1,7,21,1,13,21,1,4,17,25,21,0,2,0,6,0,22,17,22,1,4,12,0,12,21,1,6,17,0,8,0,23,17,0,6,22,1,8,13,14,21,0,2,25,21,0,1,0,6,0,22,17,22,1,7,12,0,12,21,1,5,17,0,6,22,1,8,13,14,21,0,1,25,21,0,1,21,1,10,21,4,0,21,1,8,8,21,0,2,17,25,21,0,1,0,16,21,1,7,21,1,13,21,1,4,17,17,25,0,22,0,6,21,0,1,17,21,2,4,16,22,2,6,12,21,2,5,16,22,2,7,12,14,21,2,6,25,21,0,1,0,17,16,21,2,5,21,0,1,7,22,2,6,13,25,21,4,3,21,0,1,0,1,16,7,21,1,4,3,2,21,4,0,0,13,21,4,7,0,21,8,8,22,1,4,12,25,21,0,1,21,4,24,21,4,78,7,16,21,4,70,16,22,2,3,12,14,21,0,1,21,4,24,21,4,66,7,16,21,4,70,21,1,4,17,22,1,4,12,25,0,23,21,4,62,21,0,2,17,21,4,66,16,22,0,3,11,21,4,77,21,0,1,17,22,0,4,11,21,3,2,16,22,0,5,11,14,21,0,1,21,0,4,3,2,0,16,21,0,5,17,21,2,3,21,0,2,21,4,65,0,23,17,21,4,70,21,0,5,17,21,4,77,21,0,3,17,17,25,21,0,1,14,0,23,22,2,8,12,14,21,2,4,22,2,7,12,14,21,0,1,22,2,4,12,25)
$runtimeObjs = $provide + (&$list 0,1,2,32,3,8,-1,-[double]::PositiveInfinity,[double]::PositiveInfinity,4,(&$str "Β΄: 𝕩 must be a list"),(&$str "Mapping: Equal-rank argument shapes don\'t agree"),(&$str "Mapping: Argument shape prefixes don\'t agree"),(&$str "⍋𝕩: 𝕩 must have rank at least 1"),(&$str "/: Replication argument must have rank 1"),(&$str "/: Amounts to replicate must be natural numbers"),(&$str "βŒ½π•©: 𝕩 must have rank at least 1"),(&$str "π•¨βŒ½π•©: 𝕨 must consist of integers"),(&$str "↑𝕩: 𝕩 must have rank at least 1"),(&$str "↓𝕩: 𝕩 must have rank at least 1"),(&$str "π•¨βŠπ•©: 𝕩 must be an array"),(&$str "π•¨βŠπ•©: Indices in 𝕨 must be integers"),(&$str "π•¨βŠπ•©: Indices out of range"),(&$str ">𝕩: Elements of 𝕩 must have matching shapes"),(&$str "βˆΎπ•©: Elements of 𝕩 must all have the same rank"),(&$str "βˆΎπ•©: 𝕩 element rank must be at least argument rank"),(&$str "βˆΎπ•©: 𝕩 element shapes must be compatible"),(&$str "βˆΎπ•©: 𝕩 element trailing shapes must match"),(&$str "βˆΎπ•©: 𝕩 must be an array"),(&$str "𝕨"),(&$str "𝕩: 𝕨 must "),(&$str "have rank at most 1"),(&$str "consist of integers"),(&$str "↑"),(&$str "↓"),(&$str "Β« or Β»: 𝕩 must have rank at least 1"),(&$str "Β« or Β»: 𝕨 must not have higher rank than 𝕩"),(&$str "Β« or Β»: Rank of 𝕨 must be at least rank of 𝕩 minus 1"),(&$str "Β« or Β»: 𝕨 must share 𝕩\'s major cell shape"),(&$str "𝕨↕𝕩: 𝕩 must be an array"),(&$str "𝕨↕𝕩: 𝕨 must have rank at most 1"),(&$str "𝕨↕𝕩: Length of 𝕨 must be at most rank of 𝕩"),(&$str "𝕨↕𝕩: 𝕨 must consist of natural numbers"),(&$str "𝕨↕𝕩: Window length 𝕨 must be at most axis length plus one"),(&$str "First-axis primitive: 𝕩 must have rank at least 1"),(&$str "Multi-axis primitive: 𝕨 must have rank at most 1"),(&$str "Multi-axis primitive: Length of 𝕨 must be at most rank of 𝕩"),(&$str "β‰₯: No monadic form"),(&$str "≀: No monadic form"),(&$str "Β΄: Identity not found"),(&$str "𝕨β₯Šπ•©: 𝕨 must have rank at most 1"),(&$str "𝕨β₯Šπ•©: 𝕨 must consist of natural numbers"),(&$str "𝕨β₯Šπ•©: Can\'t compute axis length when rest of shape is empty"),(&$str "𝕨β₯Šπ•©: 𝕨 must consist of natural numbers or ∘ ⌊ ⌽ ↑"),(&$str "𝕨β₯Šπ•©: Shape must be exact when reshaping with ∘"),(&$str "↕𝕩: 𝕩 must consist of natural numbers"),(&$str "↕𝕩: 𝕩 must be a number or list"),(&$str "˝: 𝕩 must have rank at least 1"),(&$str "π•¨βˆΎπ•©: Rank of 𝕨 and 𝕩 must differ by at most 1"),(&$str "π•¨βˆΎπ•©: Cell shapes of 𝕨 and 𝕩 must match"),(&$str "𝕨/𝕩: Lengths of components of 𝕨 must match 𝕩"),(&$str "βŠ”: Grouping argument must consist of integers"),(&$str "βŠ”: Grouping argument values cannot be less than Β―1"),(&$str "βŠ”π•©: 𝕩 must be a list"),(&$str "π•¨βŠ”π•©: 𝕩 must be an array"),(&$str "π•¨βŠ”π•©: Compound 𝕨 must be a list"),(&$str "π•¨βŠ”π•©: Total rank of 𝕨 must be at most rank of 𝕩"),(&$str "π•¨βŠ”π•©: Lengths of components of 𝕨 must be compatible with 𝕩"),(&$str "π•¨βŠ‘π•©: Indices in compound 𝕨 must be lists"),(&$str "π•¨βŠ‘π•©: Index length in 𝕨 must match rank of 𝕩"),(&$str "π•¨βŠ‘π•©: Indices in 𝕨 must consist of integers"),(&$str "π•¨βŠ‘π•©: Index out of range"),(&$str "⍋ or ⍒: Rank of 𝕨 must be at least 1"),(&$str "⍋ or ⍒: Rank of 𝕩 must be at least cell rank of 𝕨"),(&$str "⍋ or ⍒: 𝕨 must be sorted"),(&$str "pβŠπ•© or π•¨βˆŠp: p must have rank at least 1"),(&$str "βˆŠπ•© or βŠπ•©: 𝕩 must have rank at least 1"),(&$str "⍷𝕩: Rank of 𝕨 cannot exceed rank of 𝕩"),(&$str "𝕨⍉𝕩: 𝕨 must have rank at most 1"),(&$str "𝕨⍉𝕩: Length of 𝕨 must not exceed rank of 𝕩"),(&$str "𝕨⍉𝕩: 𝕨 must consist of natural numbers"),(&$str "𝕨⍉𝕩: Skipped result axis"),(&$str "⁼: Inverse failed"),(&$str "⁼: Inverse does not exist"),(&$str "⁼: Inverse not found"),(&$str "⍟: Repetition numbers in 𝕨 must be integers"))
$runtimeBlocks = (&$list (&$list 0,1,0,148),(&$list 2,0,3136,6),(&$list 0,0,3163,3),(&$list 0,0,3167,3),(&$list 0,0,3171,3),(&$list 1,0,3175,5),(&$list 1,0,3183,5),(&$list 2,0,3201,6),(&$list 2,0,3216,6),(&$list 2,0,3235,6),(&$list 2,0,3257,6),(&$list 2,0,3279,6),(&$list 0,0,3311,3),(&$list 0,0,3317,3),(&$list 0,0,3326,3),(&$list 0,0,3332,3),(&$list 0,0,3343,3),(&$list 0,0,3352,3),(&$list 1,0,3361,9),(&$list 0,0,3474,3),(&$list 0,0,3514,4),(&$list 0,0,3590,5),(&$list 0,0,3665,3),(&$list 1,1,3682,4),(&$list 1,1,3755,3),(&$list 0,0,3819,3),(&$list 0,0,3830,5),(&$list 2,0,3914,12),(&$list 0,0,4120,4),(&$list 0,0,4169,6),(&$list 0,0,4259,7),(&$list 0,0,4388,4),(&$list 0,0,4449,4),(&$list 0,0,4551,3),(&$list 0,0,4604,4),(&$list 1,1,4665,2),(&$list 0,0,4698,4),(&$list 2,0,4839,16),(&$list 1,1,5069,2),(&$list 0,0,5093,3),(&$list 0,0,5120,3),(&$list 0,0,5146,3),(&$list 0,0,5185,4),(&$list 0,0,5282,3),(&$list 0,0,5311,7),(&$list 0,0,5358,14),(&$list 1,1,5592,8),(&$list 1,0,5645,6),(&$list 1,1,5753,2),(&$list 0,0,5811,5),(&$list 0,0,5973,5),(&$list 0,0,6110,7),(&$list 0,0,6279,3),(&$list 0,0,6338,4),(&$list 1,1,6411,2),(&$list 2,1,6421,4),(&$list 0,0,6457,3),(&$list 0,0,6484,3),(&$list 0,0,6506,3),(&$list 0,0,6528,3),(&$list 0,0,6557,9),(&$list 0,0,6708,5),(&$list 1,1,6743,2),(&$list 2,0,6812,10),(&$list 2,0,6872,8),(&$list 1,0,7066,5),(&$list 0,0,7108,8),(&$list 0,0,7344,5),(&$list 0,0,7412,3),(&$list 1,0,7446,8),(&$list 0,0,7546,4),(&$list 0,0,7630,6),(&$list 0,0,7953,4),(&$list 0,0,8166,3),(&$list 0,0,8184,4),(&$list 1,0,8257,9),(&$list 1,1,8327,3),(&$list 1,0,8352,14),(&$list 1,1,8787,4),(&$list 1,0,8837,6),(&$list 0,0,8976,4),(&$list 0,0,9044,3),(&$list 0,0,9118,3),(&$list 0,0,9173,4),(&$list 0,0,9302,4),(&$list 0,0,9423,3),(&$list 2,0,9464,6),(&$list 2,0,9494,7),(&$list 0,0,9536,6),(&$list 0,0,9690,3),(&$list 0,0,9763,3),(&$list 0,0,9803,5),(&$list 0,0,9953,3),(&$list 0,0,10004,3),(&$list 0,0,10032,3),(&$list 0,0,10122,3),(&$list 1,1,10181,2),(&$list 2,0,10190,13),(&$list 1,1,10346,2),(&$list 1,1,10360,2),(&$list 1,1,10364,2),(&$list 0,0,10368,3),(&$list 0,0,10380,3),(&$list 0,0,10403,3),(&$list 1,0,10424,6),(&$list 1,0,10541,11),(&$list 1,0,10762,5),(&$list 0,0,10777,3),(&$list 0,0,10792,3),(&$list 0,0,10807,3),(&$list 1,0,10852,8),(&$list 0,0,10991,8),(&$list 0,0,11159,3),(&$list 0,0,11185,3),(&$list 0,0,11191,4),(&$list 0,0,11240,3),(&$list 0,0,11250,3),(&$list 1,0,11295,7),(&$list 0,0,11322,9),(&$list 1,0,11608,5),(&$list 0,0,11624,7),(&$list 0,0,11791,11),(&$list 0,0,12033,8),(&$list 0,0,12347,3),(&$list 0,0,12375,5),(&$list 1,0,12471,5),(&$list 0,0,12482,8),(&$list 0,0,12739,3),(&$list 0,0,12780,3),(&$list 0,0,12800,3),(&$list 1,0,12854,6),(&$list 0,0,13007,6),(&$list 0,0,13129,3),(&$list 0,0,13140,3),(&$list 0,0,13161,3),(&$list 0,0,13192,3),(&$list 0,0,13230,6),(&$list 0,0,13337,6),(&$list 0,0,13387,4),(&$list 0,0,13417,3),(&$list 0,0,13436,4),(&$list 1,1,13594,2),(&$list 0,0,13598,3),(&$list 1,0,13641,5),(&$list 1,0,13678,5),(&$list 1,0,13689,5),(&$list 0,0,13700,14),(&$list 0,0,13876,3),(&$list 0,0,13897,3),(&$list 0,0,13926,4),(&$list 0,0,13949,3),(&$list 1,0,13982,5),(&$list 0,0,14008,3),(&$list 0,0,14078,3),(&$list 0,1,14092,0),(&$list 0,0,14099,5),(&$list 0,0,14234,3),(&$list 0,0,14264,3),(&$list 0,0,14284,3),(&$list 0,0,14338,3),(&$list 0,0,14373,3),(&$list 0,0,14397,3),(&$list 0,0,14414,5),(&$list 0,0,14525,3),(&$list 0,0,14580,3),(&$list 0,0,14604,5),(&$list 0,0,14733,3),(&$list 0,0,14773,3),(&$list 0,0,14856,3),(&$list 0,0,14890,3),(&$list 0,0,14919,3),(&$list 0,0,14937,3),(&$list 0,0,14954,3),(&$list 0,0,14983,3),(&$list 0,0,15001,3),(&$list 0,0,15033,3),(&$list 0,0,15076,6),(&$list 0,0,15155,3))
# $runtimeBytes = (&$list 0,2,0,3,3,2,3,1,0,1,3,0,17,0,0,16,25)
# $runtimeObjs = ($provide[14],1,2)
# $runtimeBlocks = ,(&$list 0,1,0,0)
$qq=run $runtimeBytes $runtimeObjs $runtimeBlocks
$qq
# Compiler nb. line continuation backticks # Compiler # let compile = run(
# $compile=run `
# ([byte[]](0,69,22,0,0,11,14,0,70,22,0,1,11,14,0,71,22,0,2,11,14,0,72,22,0,3,11,14,0,73,22,0,4,11,14,0,74,22,0,5,11,0,75,0,76,0,77,0,20,21,0,1,17,0,78,0,79,0,80,0,81,0,82,21,0,2,0,83,0,84,0,20,21,0,3,17,0,20,21,0,4,17,21,0,0,0,20,0,85,17,3,13,22,0,6,11,14,15,1,21,0,6,0,20,16,7,22,0,7,11,14,21,0,6,0,37,0,13,7,16,0,18,0,20,0,50,19,0,22,0,13,19,0,41,0,0,7,9,0,45,0,35,0,37,0,21,7,7,8,16,22,0,8,22,0,9,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,4,13,11,14,21,0,19,0,30,16,0,0,0,51,17,22,0,21,11,14,0,30,0,45,0,1,8,0,12,0,9,0,15,0,44,0,50,8,19,0,30,0,44,0,49,8,19,22,0,22,11,14,21,0,6,0,22,0,52,17,0,37,0,13,7,16,0,40,0,0,7,16,22,0,23,11,14,0,50,0,20,0,55,0,24,16,0,25,16,0,26,0,54,17,17,0,20,21,0,6,0,22,0,53,17,0,37,0,13,7,16,0,20,0,50,17,0,26,16,0,22,21,0,16,0,30,0,49,17,0,1,21,0,23,17,17,17,22,0,24,11,14,0,53,0,50,3,2,0,38,0,1,7,0,53,0,54,0,56,3,3,17,0,19,16,22,0,25,11,14,15,2,22,0,26,11,14,15,3,22,0,27,11,14,0,30,0,44,0,49,8,0,23,0,44,0,49,8,21,0,27,3,3,0,47,0,29,0,31,0,88,0,20,0,89,17,19,0,30,9,8,22,0,28,11,14,15,4,22,0,29,11,14,15,5,22,0,30,11,14,15,6,22,0,31,11,25,21,0,1,0,27,16,22,0,2,11,14,0,18,0,27,21,0,1,0,29,21,0,2,17,19,0,35,0,1,7,0,49,19,0,35,0,29,7,21,0,2,19,25,0,86,0,14,21,0,1,17,22,0,3,11,14,0,87,0,14,21,0,1,17,0,9,0,44,0,23,0,44,0,55,8,0,22,0,13,19,8,16,0,26,16,22,0,4,11,14,0,88,0,14,21,0,1,17,0,26,16,22,0,5,11,14,21,0,4,21,0,5,0,23,0,57,17,21,0,3,0,26,16,3,3,0,20,16,22,0,6,11,0,27,16,22,0,7,11,14,21,0,6,0,29,21,0,7,17,22,0,6,12,14,21,0,4,0,0,0,55,17,21,0,5,0,23,0,49,17,0,49,0,20,21,1,1,0,14,21,0,1,17,17,0,26,16,0,26,0,44,21,0,3,0,41,0,0,7,16,0,20,0,50,17,0,45,0,29,0,42,0,18,0,20,0,50,19,0,23,0,57,19,0,1,0,18,19,8,8,8,16,3,3,0,20,16,0,29,21,0,7,17,22,0,8,11,14,15,7,0,48,15,8,8,22,0,9,11,14,21,0,8,0,27,21,0,6,17,0,13,0,45,0,20,8,16,0,13,0,35,0,22,7,0,49,19,0,45,21,0,9,8,16,0,23,0,57,17,22,0,10,11,14,21,0,8,0,36,0,20,7,21,0,6,17,0,26,21,0,10,17,22,0,11,11,14,0,19,0,35,0,20,7,21,0,1,0,13,16,19,0,39,0,26,7,9,0,23,0,57,19,22,0,12,11,14,21,0,11,21,0,12,16,0,41,0,13,7,16,0,8,16,22,0,13,11,14,21,0,11,0,26,21,0,3,0,29,21,0,6,0,26,21,0,10,17,17,0,8,16,17,22,0,14,11,14,21,0,14,21,0,12,16,0,41,0,13,7,16,0,2,21,0,14,0,36,0,30,7,16,21,0,12,16,0,41,0,0,7,16,17,0,35,0,1,7,0,49,17,0,35,0,34,7,21,0,1,17,22,0,15,11,0,33,16,22,0,16,11,14,21,0,14,0,36,0,25,0,42,0,30,8,7,16,21,0,12,16,0,26,21,0,13,17,22,0,17,11,14,21,0,1,0,26,21,0,13,17,21,1,7,16,22,0,18,11,14,21,1,17,21,1,18,21,1,19,3,3,0,37,0,30,7,0,49,17,0,40,0,0,7,16,0,21,21,1,17,0,30,16,17,21,1,22,21,0,18,17,22,0,19,11,0,11,0,44,0,18,0,20,0,50,19,0,22,0,13,19,8,16,22,0,20,11,14,21,0,18,0,34,21,0,20,0,41,0,0,7,16,0,2,21,0,19,17,0,35,0,1,7,0,49,17,17,22,0,21,11,14,21,1,3,0,13,16,22,0,22,11,14,21,1,19,0,40,0,0,7,16,0,0,0,57,17,22,0,23,11,14,21,0,21,0,37,0,26,0,44,0,13,0,44,21,0,23,8,8,7,16,0,15,0,44,21,1,19,0,30,16,0,45,0,0,8,8,0,2,0,17,19,0,1,0,18,19,21,0,22,17,22,0,24,11,14,21,0,24,0,29,0,44,0,28,8,21,0,18,0,26,21,0,20,17,0,35,21,1,22,7,21,1,19,17,17,0,33,16,22,0,25,11,14,21,0,25,0,37,0,30,7,16,0,35,21,1,22,7,21,1,19,17,0,40,0,0,7,16,22,0,26,11,14,21,0,18,0,26,0,44,21,0,17,8,0,46,21,0,15,0,31,21,0,16,17,0,0,21,0,25,0,13,16,17,0,0,21,1,23,17,8,16,0,26,0,44,21,0,20,8,0,46,21,0,24,0,31,21,0,25,17,0,0,21,1,23,17,8,16,0,26,21,1,20,21,1,22,21,0,18,17,0,10,21,0,19,17,0,8,16,0,10,21,0,20,17,17,22,0,18,12,14,21,1,11,21,1,22,21,0,18,17,0,9,0,44,0,18,0,10,21,1,13,0,30,16,0,0,0,55,0,51,3,2,17,0,32,21,0,18,17,19,0,20,0,49,19,0,22,0,13,19,8,16,0,8,16,0,35,0,26,7,22,0,18,13,14,21,1,11,21,1,22,21,0,18,17,0,9,21,1,13,0,30,16,0,0,0,53,0,54,3,2,17,0,32,21,0,18,17,0,35,0,20,7,0,49,17,0,23,0,49,17,17,0,8,16,0,35,0,26,7,22,0,18,13,14,21,0,21,0,37,0,30,7,16,0,35,0,1,7,21,1,19,0,30,16,17,0,35,0,3,0,42,0,5,8,7,21,0,22,17,0,6,0,50,17,0,14,0,44,0,55,8,0,45,0,9,8,0,0,0,18,19,21,0,21,0,37,0,30,0,44,0,57,8,7,16,0,14,21,0,23,17,17,22,0,27,11,14,21,1,23,0,1,21,0,18,17,21,0,25,0,13,16,0,45,0,11,8,0,9,0,15,0,44,0,50,8,19,16,22,0,28,11,14,21,1,24,0,29,21,0,18,0,5,21,1,23,17,17,0,26,0,44,21,0,28,8,0,46,21,0,27,8,16,22,0,29,11,14,21,1,16,0,30,16,0,35,0,21,7,0,54,17,21,1,22,21,0,18,17,0,2,0,54,17,0,0,22,0,18,13,14,21,0,18,21,0,29,21,0,26,21,0,16,0,20,21,0,25,0,23,21,0,26,17,17,3,4,25,21,1,18,0,30,16,0,0,0,44,0,24,8,0,51,17,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,1,17,0,30,16,0,45,0,1,8,0,25,0,42,0,40,0,2,0,44,0,58,8,0,45,0,0,8,7,8,9,22,0,7,11,14,21,0,7,0,23,0,44,0,49,8,21,0,7,9,0,1,9,3,2,0,47,0,30,0,14,21,0,3,19,8,22,0,8,11,14,0,23,0,44,0,49,0,45,0,0,8,8,0,50,0,13,0,4,0,58,19,0,3,21,0,7,19,3,2,0,47,0,13,0,11,0,50,19,8,9,0,0,0,22,0,42,21,0,7,8,19,0,44,21,0,4,0,11,16,0,45,0,31,8,8,22,0,9,11,14,0,59,0,60,21,0,9,3,3,0,47,0,29,0,31,21,0,5,21,0,6,3,2,19,0,30,9,8,22,0,10,11,14,21,1,21,0,31,21,0,1,17,0,30,16,22,0,11,11,14,21,0,1,0,22,21,0,11,17,21,0,10,0,23,0,44,0,49,8,21,0,10,9,0,1,9,3,2,0,47,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,48,0,35,0,17,0,23,0,49,0,0,21,0,11,17,19,21,0,8,9,0,4,0,58,19,0,45,0,2,8,7,8,21,0,1,17,25,0,61,22,0,3,11,14,21,0,1,0,6,0,49,17,0,39,0,4,7,21,0,3,17,0,5,16,22,0,4,11,14,21,0,4,0,0,0,49,17,0,41,0,0,7,0,45,0,18,0,20,0,50,19,0,22,0,13,19,0,45,0,26,8,0,1,0,18,0,30,0,57,19,0,24,9,19,8,16,0,27,16,0,27,16,22,0,5,11,14,21,0,1,15,9,21,0,4,17,0,29,21,0,5,17,25,21,0,2,22,0,3,22,0,4,4,2,11,14,21,1,13,0,30,0,45,0,1,8,0,7,0,55,19,0,4,0,57,19,0,2,21,1,22,19,21,0,1,17,22,0,5,11,0,41,0,0,7,16,0,27,16,22,0,6,11,14,21,1,13,0,30,16,0,0,0,55,17,0,35,0,21,7,0,55,17,21,1,22,21,0,1,17,0,2,21,0,5,17,22,0,7,11,14,21,1,14,21,1,22,21,0,1,17,0,10,0,44,0,25,0,44,0,49,8,8,16,22,0,8,11,14,21,0,8,0,29,0,44,21,0,6,8,0,46,0,25,0,44,0,57,8,8,16,22,0,9,11,14,21,0,9,0,10,21,0,8,17,22,0,10,11,14,21,0,8,0,29,21,0,6,17,0,27,16,0,35,0,29,7,22,0,6,13,14,21,0,10,0,8,16,0,2,22,0,4,13,14,0,50,0,12,21,0,5,17,22,0,11,11,14,21,0,4,0,15,0,49,17,0,10,21,0,4,0,14,0,53,17,0,29,0,44,21,0,6,8,0,46,0,25,0,44,0,57,8,8,16,17,0,18,0,2,0,44,0,13,0,42,0,24,8,0,0,0,49,19,8,0,41,0,6,7,9,0,43,0,14,8,0,10,0,44,0,8,8,19,0,9,0,17,19,21,1,13,0,30,16,0,0,0,49,17,0,14,21,0,1,17,0,11,21,0,10,17,17,0,0,22,0,4,13,14,21,1,11,21,1,22,21,0,1,17,0,10,21,0,8,17,0,10,21,0,11,17,0,29,0,35,0,20,7,0,1,0,20,0,42,0,41,0,0,7,8,19,0,49,19,0,27,0,45,0,27,0,45,0,35,0,29,7,8,0,1,0,35,0,29,7,19,0,29,0,44,0,27,8,0,17,19,8,0,17,0,20,0,57,19,19,21,0,6,17,0,23,0,57,17,0,0,0,49,17,0,41,0,0,7,16,0,27,16,22,0,12,11,14,21,0,7,0,29,21,0,12,17,0,41,0,0,7,16,22,0,13,11,0,27,16,22,0,14,11,14,21,0,14,0,35,0,29,7,22,0,12,13,14,21,0,14,0,35,0,29,7,22,0,13,13,14,21,0,12,0,35,0,29,7,22,0,1,13,14,21,0,7,0,29,21,0,12,17,22,0,15,11,14,0,50,0,11,21,0,15,17,0,26,16,22,0,16,11,14,0,50,0,12,21,0,15,17,22,0,17,11,0,41,0,0,7,16,22,0,18,11,14,0,50,0,45,0,20,8,0,41,0,0,7,9,0,26,0,49,0,20,21,0,17,17,19,0,18,0,20,0,50,19,0,22,0,13,19,0,45,0,1,8,9,22,0,19,11,14,0,14,0,42,21,0,19,8,0,23,0,49,19,0,11,0,50,19,22,0,20,11,14,21,0,1,0,27,21,1,16,0,30,16,0,0,0,54,17,0,0,0,50,0,53,0,51,0,54,3,4,17,17,21,0,20,0,44,0,53,8,0,2,0,55,19,0,6,21,0,20,0,44,0,55,8,19,0,2,0,55,19,0,0,21,0,20,0,44,0,49,8,19,0,20,0,50,19,16,22,0,21,11,14,21,1,25,0,29,21,0,21,17,22,0,22,11,14,21,0,4,0,29,21,0,12,17,0,29,0,44,21,0,16,8,0,46,0,51,0,24,16,0,26,0,44,0,15,0,44,0,55,8,0,0,0,49,19,8,16,0,29,21,0,21,0,23,0,49,17,17,8,16,22,0,4,12,14,21,1,23,0,1,21,0,1,17,22,0,23,11,21,0,3,0,45,0,11,8,0,9,0,15,0,44,0,50,8,19,16,22,0,24,11,0,26,16,22,0,25,11,14,21,0,1,0,29,21,0,25,17,22,0,26,11,14,21,1,16,21,1,22,21,0,1,17,0,26,16,22,0,27,11,14,21,1,12,0,30,16,0,14,21,0,1,17,0,29,21,1,12,21,1,22,21,0,1,17,0,2,0,44,0,13,0,42,0,24,8,8,16,0,41,0,6,7,16,17,22,0,28,11,14,21,0,7,0,1,21,0,5,17,0,29,21,0,12,17,0,41,0,0,7,16,0,27,16,22,0,6,12,14,21,0,12,0,29,21,0,6,17,22,0,29,11,14,21,0,8,0,1,21,0,9,17,0,29,21,0,29,17,0,12,0,26,0,43,0,1,8,0,11,19,0,50,17,0,35,0,3,7,0,55,17,0,0,0,49,17,22,0,30,11,14,21,1,13,0,30,16,0,0,0,54,17,0,14,21,0,1,17,0,29,21,0,6,17,0,26,16,22,0,31,11,14,21,0,8,0,29,21,0,29,17,0,27,16,22,0,32,11,0,35,0,29,7,22,0,6,13,14,21,0,12,0,29,21,0,6,17,22,0,29,12,14,21,0,6,0,35,0,29,7,22,0,1,13,14,21,0,6,0,35,0,29,7,22,0,4,13,14,21,0,29,0,35,0,29,7,22,0,11,13,14,21,0,8,0,12,21,0,9,17,0,29,21,0,29,17,0,26,16,22,0,33,11,14,21,0,6,0,27,16,22,0,34,11,14,21,0,32,0,27,16,0,29,22,0,31,13,14,21,1,11,21,1,22,21,0,1,17,22,0,35,11,14,21,0,8,0,29,21,0,29,17,0,10,21,0,11,17,0,10,21,0,35,17,22,0,36,11,14,21,1,12,0,30,16,0,35,0,21,7,0,55,17,21,1,22,21,0,1,17,22,0,37,11,14,21,0,37,0,10,21,0,36,17,0,1,22,0,4,13,14,0,55,0,16,21,0,4,17,22,0,38,11,14,0,53,0,14,21,0,4,17,0,25,0,49,17,0,10,0,49,0,16,21,0,4,17,17,22,0,39,11,14,21,0,39,0,29,21,0,36,0,25,0,57,17,0,2,0,44,0,13,0,42,0,24,8,8,16,0,41,0,6,7,16,17,22,0,40,11,14,21,0,39,0,25,0,49,17,0,9,21,1,12,0,30,16,0,0,0,49,17,0,14,21,0,1,17,17,0,11,21,0,40,17,22,0,41,11,14,0,53,0,14,21,0,4,17,0,25,0,49,17,0,11,21,0,37,17,0,10,21,0,38,17,22,0,42,11,14,21,0,41,0,10,21,0,42,17,0,8,16,0,25,16,0,2,0,42,0,41,0,6,7,8,0,1,0,17,19,0,44,0,13,0,42,0,24,8,8,16,0,25,16,22,0,43,11,14,21,0,37,0,26,16,21,0,43,0,45,0,29,8,0,0,0,49,19,0,0,0,18,19,16,22,0,44,11,14,0,49,0,1,21,0,44,17,0,35,0,20,7,21,0,1,0,13,16,17,0,39,0,26,7,16,0,23,0,57,17,0,18,0,20,0,50,19,0,22,0,13,19,0,45,0,1,8,16,0,29,21,0,34,17,0,41,0,0,7,16,0,25,0,57,17,22,0,45,11,0,29,21,0,6,17,22,0,46,11,14,21,0,4,0,26,0,44,21,0,46,8,0,46,0,37,0,57,7,8,16,22,0,4,12,14,21,0,42,0,8,16,0,41,0,0,7,0,2,0,42,0,41,0,6,7,8,0,1,0,18,19,21,0,36,19,0,15,0,11,0,7,19,0,55,19,0,9,0,18,19,16,0,9,21,0,36,0,2,0,44,0,13,0,42,0,24,8,0,0,0,49,19,8,0,41,0,6,7,9,0,43,0,15,8,21,0,37,17,17,22,0,47,11,14,21,0,37,0,10,21,0,36,17,0,35,0,20,7,0,50,17,0,23,0,49,17,0,12,21,0,38,17,22,0,48,11,14,21,0,48,0,26,16,0,25,16,22,0,49,11,14,21,0,48,0,25,0,57,17,0,11,21,0,38,17,0,10,0,49,0,14,21,0,4,17,17,0,11,21,0,48,0,25,0,49,17,0,9,21,0,42,17,17,0,9,21,0,40,0,8,16,0,10,21,0,47,17,17,0,11,21,0,46,0,25,0,49,17,17,0,26,16,22,0,50,11,14,0,50,0,14,21,0,4,17,0,11,21,0,42,17,0,10,0,50,0,16,21,0,4,17,0,9,21,0,40,17,17,0,9,21,1,15,0,30,16,0,13,21,0,1,17,17,0,35,0,20,7,0,50,17,0,23,0,49,17,0,29,21,0,50,17,22,0,51,11,14,21,0,3,0,0,21,1,23,17,0,16,21,0,1,17,22,0,52,11,14,21,1,10,0,40,0,0,7,16,0,0,0,57,17,0,15,21,0,1,17,0,10,21,0,52,17,0,26,16,22,0,53,11,14,21,0,1,0,29,21,0,53,17,22,0,54,11,0,33,16,0,9,16,22,0,55,11,14,21,1,13,0,30,16,0,0,0,51,17,0,14,21,0,1,0,26,21,0,11,17,17,22,0,56,11,14,0,49,0,20,21,0,36,17,0,9,21,0,11,0,20,0,49,17,17,0,1,0,50,0,20,21,0,35,17,17,0,41,0,0,7,16,0,26,0,49,0,20,21,0,11,17,17,0,23,0,44,0,1,8,0,1,0,23,19,0,49,17,0,26,21,0,56,17,0,0,0,49,17,22,0,57,11,14,21,0,56,0,20,0,50,17,0,29,0,44,0,41,0,0,7,8,21,0,11,17,0,12,21,0,35,17,0,26,16,22,0,58,11,14,21,1,13,0,30,16,0,0,0,55,17,0,14,21,0,1,17,0,26,16,22,0,59,11,14,21,0,45,0,9,21,0,28,17,0,9,21,0,24,17,22,0,60,11,0,29,21,0,25,17,22,0,61,11,14,21,0,60,21,0,19,16,22,0,62,11,14,21,0,18,0,29,21,0,25,17,0,35,21,0,14,0,29,21,0,16,17,0,20,21,0,1,0,13,16,17,7,0,29,0,26,0,44,21,0,61,8,19,0,20,21,0,14,0,26,21,0,17,17,0,20,0,57,17,0,45,0,29,8,19,16,0,27,16,22,0,63,11,14,21,0,63,0,29,0,44,21,0,26,0,26,0,44,21,0,61,8,0,45,0,20,8,16,0,45,0,29,8,0,27,9,8,16,0,29,0,44,21,0,61,0,35,0,26,7,16,0,1,16,0,20,21,0,61,17,0,45,0,29,0,42,0,41,0,0,7,8,8,0,27,9,8,16,0,26,0,44,21,0,25,0,13,16,0,45,0,11,8,8,16,22,0,63,12,14,21,0,25,0,29,0,44,21,0,63,8,0,46,0,29,0,44,0,2,0,44,0,13,0,42,0,24,8,8,0,41,0,6,7,9,8,8,21,0,61,17,22,0,64,11,14,21,0,23,0,29,21,0,27,17,0,0,0,55,17,0,15,0,44,0,50,8,0,45,0,0,8,16,0,0,21,0,21,0,7,0,55,17,0,2,0,53,17,0,29,21,0,18,0,29,21,0,27,17,17,17,0,20,21,0,60,0,41,0,0,7,16,0,8,0,44,0,2,0,44,21,0,17,8,0,41,0,6,7,9,8,16,0,1,21,0,22,0,29,21,0,18,17,17,0,29,21,0,64,17,17,22,0,65,11,14,21,0,27,0,20,21,0,25,17,22,0,66,11,0,11,16,0,19,0,53,17,0,20,16,22,0,67,11,14,21,0,45,0,29,21,0,66,17,0,0,0,62,17,21,0,27,0,37,0,50,7,16,0,20,21,0,64,21,0,13,0,45,0,29,8,0,43,0,1,8,21,0,25,17,17,21,0,65,3,3,22,0,68,11,14,21,0,34,0,29,22,0,16,13,14,21,0,53,21,0,53,21,0,16,21,0,16,21,0,59,21,0,58,21,0,31,21,0,31,21,0,33,21,0,33,21,0,44,21,0,43,0,29,21,0,49,17,0,6,0,49,17,0,0,21,0,49,17,21,0,51,0,0,21,0,50,17,0,0,0,44,21,0,43,0,45,0,29,8,0,2,21,0,51,19,8,16,3,13,0,20,16,0,35,0,29,7,21,0,6,17,0,20,21,0,67,17,0,27,16,22,0,69,11,14,21,0,53,0,37,0,50,7,16,21,0,54,0,31,21,0,55,17,21,0,16,0,37,0,63,7,16,21,0,16,0,13,16,0,24,16,0,0,0,49,17,3,4,0,20,21,0,68,17,0,20,16,22,0,70,11,14,21,0,59,0,37,0,64,7,16,21,0,58,0,37,0,65,7,16,21,0,46,0,29,21,0,31,17,0,0,0,53,17,21,0,57,21,0,46,0,29,21,0,33,17,0,0,0,53,17,21,0,30,21,0,1,0,0,21,0,41,17,0,26,21,0,37,17,0,0,21,1,12,0,30,16,0,1,0,66,17,17,21,0,4,0,29,21,0,49,17,0,0,0,54,17,21,0,40,0,29,21,0,50,17,0,2,0,68,17,0,1,21,0,51,17,0,0,0,67,17,0,14,0,44,0,58,8,0,2,0,52,19,0,0,0,18,19,16,3,9,0,20,16,0,20,21,0,70,17,0,29,21,0,69,17,22,0,71,11,14,21,0,22,0,0,21,0,62,17,0,37,0,11,0,43,0,21,8,7,21,0,59,0,13,0,43,0,21,8,21,0,70,17,21,1,22,21,0,69,17,0,20,0,49,17,0,26,16,0,35,0,29,7,21,0,71,0,6,0,49,17,0,39,0,4,7,0,61,17,0,5,16,0,0,0,49,17,0,20,0,50,17,0,41,0,0,7,16,17,17,0,37,0,20,7,0,55,0,24,0,43,0,25,0,45,0,38,0,21,7,8,8,0,53,17,0,19,16,0,29,21,0,21,17,17,22,0,72,11,14,0,64,0,20,21,0,71,17,21,1,29,16,21,0,55,21,0,72,3,3,25,21,0,1,21,1,26,16,22,0,3,22,0,4,22,0,5,22,0,6,4,4,11,14,21,0,3,21,1,30,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,37,21,1,28,7,16,0,20,21,0,2,17,0,29,21,1,23,0,16,21,0,8,17,0,2,21,0,2,0,13,16,0,1,21,0,5,17,0,0,21,1,23,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,25,16,0,30,16,0,14,0,50,17,25,21,0,1,0,29,0,44,21,0,2,0,26,21,0,1,17,8,0,46,0,37,0,49,7,8,16,21,1,9,21,0,2,0,35,0,29,7,16,17,25,21,0,2,0,2,16,22,0,3,11,14,21,0,1,21,0,3,0,40,0,10,7,16,0,48,0,26,0,44,21,0,3,8,0,43,21,1,3,0,45,0,3,8,0,5,9,0,45,21,0,0,8,8,0,20,0,7,0,0,21,0,3,0,45,0,2,8,19,0,44,21,1,3,8,19,8,0,49,0,1,21,0,2,17,17,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[20],$runtime[21],$runtime[22],$runtime[23],$runtime[24],$runtime[25],$runtime[26],$runtime[27],$runtime[28],$runtime[30],$runtime[31],$runtime[32],$runtime[33],$runtime[34],$runtime[35],$runtime[37],$runtime[38],$runtime[39],$runtime[41],$runtime[42],$runtime[43],$runtime[44],$runtime[45],$runtime[46],$runtime[48],$runtime[49],$runtime[50],$runtime[51],$runtime[52],$runtime[53],$runtime[55],$runtime[58],1,0,4,9,3,5,2,6,-1,10,[math]::PI,[double]::PositiveInfinity,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 "'")) `
# ((0,1,0,32),(1,1,436,3),(0,0,479,30),(0,0,1647,13),(0,0,1969,6),(0,0,2075,73),(0,0,5116,11),(0,0,5239,3),(0,0,5254,3),(0,0,5294,4))
# # );
# function bqn($src) {$Bin,$Oin,$Sin = (&$compile (&$str $src) $runtime); run $bin $Oin $Sin} # let bqn = src => run.apply(null,compile(str(src),runtime));
#
# # if(typeof module!=='undefined'){module.exports=bqn;}
# bqn "1"
# +-Γ—Γ·β‹†βˆšβŒŠβŒˆ|¬∧∨<>β‰ =≀β‰₯β‰‘β‰’βŠ£βŠ’β₯ŠβˆΎβ‰β†‘β†“β†•βŒ½β‰/β‹β’βŠβŠ‘βŠβŠ’βˆŠβ·βŠ”!""˜˘¨⌜⁼´˝``"βˆ˜β—‹βŠΈβŸœβŒΎβŠ˜β—ΆβŽ‰βš‡βŸ β‹„ ←↩→ {}⟨⟩ β€Ώ Β· π•Šπ•π•Žπ”½π”Ύπ•€π•©π•¨π•—π•˜ Β―.Ο€βˆž _
#Import-Module -Name Pester
#
#function tests {
#Describe "Basic BQN Tests" {
# It "Handles basic numeric literal 1" {
# $result = run (&$arr 0,0,25 3) (&$arr @(1) 1) @(@(&$arr 0,1,0,0 4)) # "1"
# $result | should -BeExactly 1
# }
# It "Handles hard-coded monadic minus -1" {
# $result = run (&$arr 0,1,0,0,16,25 6) (&$arr @({param($x,$y)-$x}, 1) 2) @(@(&$arr 0,1,0,0 4)) # "-1"
# $result | should -BeExactly -1
# }
# It "Handles hard-coded dyadic addition with one literal 5+5" {
# $result = run (&$arr 0,1,0,0,0,1,17,25 8) (&$arr @({param($x,$y)$x+$y}, 5) 2) @(@(&$arr 0,1,0,0 4)) # "5+5"
# $result | should -BeExactly 10
# }
# It "Handles addition with two literals 5+27" {
# $result = run (&$arr 0,2,0,0,0,1,17,25 8) (&$arr @({param($x,$y)$x+$y}, 5, 27) 3) @(@(&$arr 0,1,0,0 4)) # "5+27"
# $result | should -BeExactly 32
# }
# It "Handles simple numeric array 77β€Ώ88β€Ώ99" {
# $result = run (&$arr 0,0,0,1,0,2,3,3,25 9) (&$arr @(77,88,99) 3) @(@(&$arr 0,1,0,0 4)) # "77β€Ώ88β€Ώ99" # change [array]::reverse and $zn slice calc
# $result | should -BeExactly @(77,88,99)
# }
# #It "Handles string literal addition" {
# # $result = run (&$arr 0,1,0,0,0,2,17,25 8) (&$arr @({param($x,$y)$x+$y},4,(&$str "ab")) 3) @(@(&$arr 0,1,0,0 4)) # "ab"+5 # ERROR
# # $result | should -BeExactly @("a5","b5")
# #}
# It "handles assignment to variable zz←4β‹„zz" {
# $result = run (&$arr 0,0,22,0,0,11,14,21,0,0,25 11) (&$arr @(4) 1) @(@(&$arr 0,1,0,1 4)) # "zz←4β‹„zz" # change ,$e[0] in $ge
# $result | should -BeExactly 4
# }
# It "Handles multiple assignment aβ€Ώb←1β€Ώ2" {
# $result = run (&$arr 0,0,0,1,3,2,22,0,0,22,0,1,4,2,11,25 16) (&$arr 77,88 2) @(@(&$arr 0,1,0,2 4)) # aβ€Ώb←77β€Ώ88 # the 21->42 bug test
# $result | should -BeExactly @(77,88)
# }
# It "* incorrectly Handles {a}β‹„a←6" {
# $result = run (&$arr 15,1,14,0,0,22,0,0,11,25,21,1,0,25 14) (&$arr @(6) 1) (&$arr (&$arr 0,1,0,1 4),(&$arr 0,1,10,0 4) 2)
# $result | should -BeExactly 6
# }
# run (&$arr 0,1,0,0,16,25 6) (&$arr @(4) 1) @(@(&$arr 0,1,0,0 4)) # ↕4
# run (&$arr 15,1,14,0,0,22,0,0,11,25,21,1,0,25 14) (&$arr @(6) 1) (&$arr (&$arr 0,1,0,1 4),(&$arr 0,1,10,0 4) 2) # x←{a} β‹„ a←6
# run (&$arr 15,1,22,0,0,11,14,0,0,22,0,1,11,14,21,0,0,25,21,1,1,25 22) (&$arr @(6) 1) (&$arr (&$arr 0,1,18,0 4),(&$arr 0,1,18,0 4) 2) # x←{a} β‹„ a←6 β‹„ x
# run (&$arr 0,0,22,0,0,11,14,15,1,25,21,1,0,25 14) (&$arr @(88) 1) (&$arr (&$arr 0,1,0,1 4),(&$arr 0,1,10,0 4) 2) # x←88β‹„{x}
# run (&$arr 0,0,22,0,0,11,14,15,1,14,15,2,25,0,1,22,1,0,12,25,21,1,0,25 24) (&$arr 88,9 2) (&$arr (&$arr 0,1,0,1 4),(&$arr 0,1,13,0 4),(&$arr 0,1,20,0 4) 3) # x←88β‹„{x↩9}β‹„{x}
# run (&$list 0,0,15,1,15,2,7,16,25,21,0,1,21,0,4,16,21,0,4,16,25,21,0,1,21,0,1,3,2,25 30) (&$arr @(1) 1) (&$arr (&$arr 0,1,0,0 4),(&$arr 1,0,9,5 4),(&$arr 0,0,21,3 4) 3) # {𝕩‿𝕩}{𝔽𝔽𝕩}1 # gives (1,1)(1,1) block execution
# run (&$arr 15,1,22,0,0,11,14,0,1,21,0,0,16,25,0,0,22,0,0,11,14,15,2,25,21,0,1,21,1,0,3,2,25 33) (&$arr (1,4) 2) (&$arr (&$arr 0,1,0,1 4),(&$arr 0,1,14,1 4),(&$arr 0,0,24,3 4) 3) # f←{x←1β‹„{𝕩‿x}} β‹„ F 4 # should be (1,1) closures
# run (&$arr 0,0,0,1,0,2,0,3,3,4,22,0,0,22,0,1,22,0,2,22,0,3,4,4,11,14,21,0,3,21,0,2,21,0,1,21,0,0,3,4,25 41) (&$arr (1,2,3,4) 4) (&$arr @(&$arr 0,1,0,4 4) 1) # "aβ€Ώbβ€Ώcβ€Ώd←1β€Ώ2β€Ώ3β€Ώ4 β‹„ dβ€Ώcβ€Ώbβ€Ώa" # 4,3,2,1
# run (&$arr 0,0,0,1,0,2,3,3,22,0,0,22,0,1,22,0,2,4,3,11,14,0,5,15,1,22,0,0,22,0,1,22,0,2,4,3,13,14,21,0,0,21,0,1,21,0,2,3,3,25,21,0,1,0,3,0,4,3,3,25 60) (&$arr (1,2,3,8,9,7) 4) (&$arr (&$arr 0,1,0,3 4),(&$arr 0,0,50,3 4) 2) # "aβ€Ώbβ€Ώc←1β€Ώ2β€Ώ3 β‹„ aβ€Ώbβ€Ώc{𝕩‿8β€Ώ9}↩7 β‹„ aβ€Ώbβ€Ώc" # 7 8 9
# run (&$arr 15,1,22,0,0,11,14,0,0,22,0,1,11,14,0,1,21,0,0,16,22,0,2,11,14,0,2,21,0,0,16,22,0,3,11,14,0,3,21,0,2,16,0,4,21,0,3,16,3,2,25,21,0,1,22,0,3,11,14,15,2,25,21,0,1,21,1,3,3,2,25 71) (&$arr (999,1,2,10,20) 5) (&$arr (&$arr 0,1,0,4 4),(&$arr 0,0,51,4 4),(&$arr 0,0,62,3 4) 3) #
# run (&$arr 15,1,22,0,0,11,14,0,0,22,0,1,11,14,0,1,21,0,0,16,22,0,2,11,14,0,2,21,0,2,16,25,21,0,1,22,0,3,11,14,15,2,25,21,0,1,21,1,3,3,2,25 52) (&$arr (999,1,10) 3) (&$arr (&$arr 0,1,0,3 4),(&$arr 0,0,32,4 4),(&$arr 0,0,43,3 4) 3) # F←{x←𝕩⋄{𝕩‿x}} β‹„ x←999 β‹„ a←F 1 β‹„ A 10 # 10,1
# run (&$arr 0,0,22,0,0,11,21,0,0,3,2,25 12) (&$arr @(1) 1) @(@(&$arr 0,1,0,1 4)) # "(a←1)β€Ώa"
# }
#
# }
# run (&$arr 21,0,0,25 4) (&$arr @() 0) @((&$arr 0,1,0,1 4)) # a
#[[0,0,22,0,0,11,21,0,0,3,2,25],[1],[[0,1,0,1]]]
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment