
================================================================
STATELESS MAPPERS

mlr cat ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat /dev/null

mlr cat -n ./reg_test/input/abixy
n=1,a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
n=2,a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
n=3,a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
n=4,a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
n=5,a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
n=6,a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
n=7,a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
n=8,a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
n=9,a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
n=10,a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cat -N counter ./reg_test/input/abixy
counter=1,a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
counter=2,a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
counter=3,a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
counter=4,a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
counter=5,a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
counter=6,a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
counter=7,a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
counter=8,a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
counter=9,a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
counter=10,a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr cut -f a,x ./reg_test/input/abixy
a=pan,x=0.3467901443380824
a=eks,x=0.7586799647899636
a=wye,x=0.20460330576630303
a=eks,x=0.38139939387114097
a=wye,x=0.5732889198020006
a=zee,x=0.5271261600918548
a=eks,x=0.6117840605678454
a=zee,x=0.5985540091064224
a=hat,x=0.03144187646093577
a=pan,x=0.5026260055412137

mlr cut --complement -f a,x ./reg_test/input/abixy
b=pan,i=1,y=0.7268028627434533
b=pan,i=2,y=0.5221511083334797
b=wye,i=3,y=0.33831852551664776
b=wye,i=4,y=0.13418874328430463
b=pan,i=5,y=0.8636244699032729
b=pan,i=6,y=0.49322128674835697
b=zee,i=7,y=0.1878849191181694
b=wye,i=8,y=0.976181385699006
b=wye,i=9,y=0.7495507603507059
b=wye,i=10,y=0.9526183602969864

mlr cut -r -f c,e ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11

abcd=3

abcde=5


mlr cut -r -f "C","E" ./reg_test/input/having-fields-regex.dkvp

ABC=2,DEF=12

ABCD=4

ABCDE=6

mlr cut -r -f "c"i,"e" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
ABC=2
abcd=3
ABCD=4
abcde=5
ABCDE=6

mlr cut -r -f "C"i,"E" ./reg_test/input/having-fields-regex.dkvp
abc=1
ABC=2,DEF=12
abcd=3
ABCD=4
abcde=5
ABCDE=6

mlr cut -r -x -f c,e ./reg_test/input/having-fields-regex.dkvp

ABC=2,DEF=12
ghi=13
ABCD=4,GHI=14
ghi=15
ABCDE=6,GHI=16

mlr cut -r -x -f "C","E" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11

abcd=3,ghi=13
GHI=14
abcde=5,ghi=15
GHI=16

mlr cut -r -x -f "C","E"i ./reg_test/input/having-fields-regex.dkvp
abc=1

abcd=3,ghi=13
GHI=14
ghi=15
GHI=16

mlr cut -r -x -f "c","e"i ./reg_test/input/having-fields-regex.dkvp

ABC=2
ghi=13
ABCD=4,GHI=14
ghi=15
GHI=16

mlr --csvlite cut -r -f ^Name$,^Date_[0-9].*$ ./reg_test/input/date1.csv ./reg_test/input/date2.csv
Name,Date_201505
Alice,2015-05-14
Bob,2015-05-11
Chuck,2015-05-28
Denise,2015-05-02

Name,Date_201506
Alice,2015-06-23
Denise,2015-06-17
Chuck,2015-06-19
Bob,2015-06-19

mlr having-fields --at-least a,b ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --at-least a,c ./reg_test/input/abixy

mlr having-fields --at-least a,b,i,x,y ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --which-are a,b,i,x ./reg_test/input/abixy

mlr having-fields --which-are a,b,i,x,y ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --which-are a,b,i,y,x ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --which-are a,b,i,x,w ./reg_test/input/abixy

mlr having-fields --which-are a,b,i,x,y,z ./reg_test/input/abixy

mlr having-fields --at-most a,c ./reg_test/input/abixy

mlr having-fields --at-most a,b,i,x,y ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --at-most a,b,i,x,y,z ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr having-fields --all-matching "^[a-z][a-z][a-z]$" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11

mlr having-fields --any-matching "^[a-z][a-z][a-z]$" ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
abcd=3,ghi=13
abcde=5,ghi=15

mlr having-fields --none-matching "^[a-z][a-z][a-z]$" ./reg_test/input/having-fields-regex.dkvp
ABC=2,DEF=12
ABCD=4,GHI=14
ABCDE=6,GHI=16

mlr having-fields --all-matching "^[a-z][a-z][a-z]$"i ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
ABC=2,DEF=12

mlr having-fields --any-matching "^[a-z][a-z][a-z]$"i ./reg_test/input/having-fields-regex.dkvp
abc=1,def=11
ABC=2,DEF=12
abcd=3,ghi=13
ABCD=4,GHI=14
abcde=5,ghi=15
ABCDE=6,GHI=16

mlr having-fields --none-matching "^[a-z][a-z][a-z]$"i ./reg_test/input/having-fields-regex.dkvp

mlr rename b,BEE,x,EKS ./reg_test/input/abixy
a=pan,BEE=pan,i=1,EKS=0.3467901443380824,y=0.7268028627434533
a=eks,BEE=pan,i=2,EKS=0.7586799647899636,y=0.5221511083334797
a=wye,BEE=wye,i=3,EKS=0.20460330576630303,y=0.33831852551664776
a=eks,BEE=wye,i=4,EKS=0.38139939387114097,y=0.13418874328430463
a=wye,BEE=pan,i=5,EKS=0.5732889198020006,y=0.8636244699032729
a=zee,BEE=pan,i=6,EKS=0.5271261600918548,y=0.49322128674835697
a=eks,BEE=zee,i=7,EKS=0.6117840605678454,y=0.1878849191181694
a=zee,BEE=wye,i=8,EKS=0.5985540091064224,y=0.976181385699006
a=hat,BEE=wye,i=9,EKS=0.03144187646093577,y=0.7495507603507059
a=pan,BEE=wye,i=10,EKS=0.5026260055412137,y=0.9526183602969864

mlr rename nonesuch,nonesuch,x,EKS ./reg_test/input/abixy
a=pan,b=pan,i=1,EKS=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,EKS=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,EKS=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,EKS=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,EKS=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,EKS=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,EKS=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,EKS=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,EKS=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,EKS=0.5026260055412137,y=0.9526183602969864

mlr --csvlite rename -r ^Date_[0-9].*$,Date ./reg_test/input/date1.csv ./reg_test/input/date2.csv
Name,Date,Extraneous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r (.*)e(.*),\1EEE\2 ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r "(.*)e(.*)"i,\1EEE\2 ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r -g "(.*)e(.*)"i,\1EEE\2 ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r "e",EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r -g "e",EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,ExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,ExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r "e"i,EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,EEExtraneous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,EEExtraneous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr --csvlite rename -r -g "e"i,EEE ./reg_test/input/date1.csv ./reg_test/input/date2.csv
NamEEE,DatEEE_201505,EEExtranEEEous
Alice,2015-05-14,foo
Bob,2015-05-11,bar
Chuck,2015-05-28,quux
Denise,2015-05-02,meep

NamEEE,DatEEE_201506,EEExtranEEEous
Alice,2015-06-23,cafe
Denise,2015-06-17,feed
Chuck,2015-06-19,beef
Bob,2015-06-19,d00d

mlr regularize ./reg_test/input/regularize.dkvp
a=1,c=2,b=3
e=4,d=5
a=6,c=7,b=8

mlr --opprint bar -f x,y --lo 0 --hi 1 ./reg_test/input/abixy
a   b   i  x                                        y
pan pan 1  *************........................... *****************************...........
eks pan 2  ******************************.......... ********************....................
wye wye 3  ********................................ *************...........................
eks wye 4  ***************......................... *****...................................
wye pan 5  **********************.................. **********************************......
zee pan 6  *********************................... *******************.....................
eks zee 7  ************************................ *******.................................
zee wye 8  ***********************................. ***************************************.
hat wye 9  *....................................... *****************************...........
pan wye 10 ********************.................... **************************************..

mlr --opprint bar -f x,y -c c -x x -b b --lo 0.1 --hi 0.9 -w 20 ./reg_test/input/abixy
a   b   i  x                    y
pan pan 1  ccccccbbbbbbbbbbbbbb cccccccccccccccbbbbb
eks pan 2  ccccccccccccccccbbbb ccccccccccbbbbbbbbbb
wye wye 3  ccbbbbbbbbbbbbbbbbbb cccccbbbbbbbbbbbbbbb
eks wye 4  cccccccbbbbbbbbbbbbb xbbbbbbbbbbbbbbbbbbb
wye pan 5  cccccccccccbbbbbbbbb cccccccccccccccccccb
zee pan 6  ccccccccccbbbbbbbbbb cccccccccbbbbbbbbbbb
eks zee 7  ccccccccccccbbbbbbbb ccbbbbbbbbbbbbbbbbbb
zee wye 8  ccccccccccccbbbbbbbb cccccccccccccccccccx
hat wye 9  xbbbbbbbbbbbbbbbbbbb ccccccccccccccccbbbb
pan wye 10 ccccccccccbbbbbbbbbb cccccccccccccccccccx

mlr --opprint bar --auto -f x,y -w 10 ./reg_test/input/abixy
a   b   i  x                              y
pan pan 1  [0.0314419]****......[0.75868] [0.134189]*******...[0.976181]
eks pan 2  [0.0314419]*********#[0.75868] [0.134189]****......[0.976181]
wye wye 3  [0.0314419]**........[0.75868] [0.134189]**........[0.976181]
eks wye 4  [0.0314419]****......[0.75868] [0.134189]#.........[0.976181]
wye pan 5  [0.0314419]*******...[0.75868] [0.134189]********..[0.976181]
zee pan 6  [0.0314419]******....[0.75868] [0.134189]****......[0.976181]
eks zee 7  [0.0314419]*******...[0.75868] [0.134189]#.........[0.976181]
zee wye 8  [0.0314419]*******...[0.75868] [0.134189]*********#[0.976181]
hat wye 9  [0.0314419]#.........[0.75868] [0.134189]*******...[0.976181]
pan wye 10 [0.0314419]******....[0.75868] [0.134189]*********.[0.976181]


================================================================
TRIVIAL RETAINERS

mlr group-by a ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr group-by a,b ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr group-like ./reg_test/input/het.dkvp
host=jupiter
host=saturn
host=mars
host=jupiter
host=mars
host=saturn
df/tmp=2.43MB,uptime=32345sec
df/tmp=1.34MB,uptime=234214132sec
df/tmp=4.97MB,uptime=345089805sec
df/tmp=0.04MB,uptime=890sec
df/tmp=8.55MB,uptime=787897777sec
df/tmp=9.47MB,uptime=234289080sec

mlr tac ./reg_test/input/abixy
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533

mlr tac /dev/null


================================================================
HEAD/TAIL/ETC.

mlr head -n 2 ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr head -n 2 -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr head -n 2 -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
Final NR is 3

mlr head -n 2 -g a then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
a=wye,b=cat,i=3,x=0.8150401717873625,y=0.07989551500795256,x2=0.6642904816271734,xy=0.06511805427712146,y2=0.006383293318385972
a=dog,b=hat,i=4,x=0.4488733555675044,y=0.5730530513123552,x2=0.20148728933843124,xy=0.25722824606077416,y2=0.32838979961840076
a=dog,b=pan,i=5,x=0.2946557960430134,y=0.6850437256584863,x2=0.08682203814174191,xy=0.20185210430817294,y2=0.46928490606405937
a=wye,b=cat,i=6,x=0.048709182664292916,y=0.5851879044762575,x2=0.0023725844758234536,xy=0.02850402453206882,y2=0.34244488354531344
a=pan,b=pan,i=8,x=0.616507208914765,y=0.25924335982487057,x2=0.38008113864387366,xy=0.15982540019531707,y2=0.06720711961328732
a=hat,b=hat,i=9,x=0.33786884067769307,y=0.6036735617015514,x2=0.11415535350088835,xy=0.203962486439877,y2=0.3644217690974368
a=cat,b=hat,i=12,x=0.6335445699880142,y=0.15467178563525052,x2=0.4013787221612979,xy=0.0979914699195631,y2=0.02392336127159689
a=hat,b=wye,i=13,x=0.35922068401384877,y=0.8502678133887914,x2=0.1290394998233774,xy=0.30543378552048117,y2=0.7229553544849566
Final NR is 2000

mlr cat then head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
Final NR is 3

mlr tac then head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide
Final NR is 2000
a=wye,b=cat,i=2000,x=0.10887569736363611,y=0.3480524315645718,x2=0.01185391747641808,xy=0.037894451205701986,y2=0.12114049511801092
a=hat,b=dog,i=1999,x=0.010819574860139292,y=0.8983779455002124,x2=0.00011706320015415817,xy=0.009720067434037685,y2=0.8070829329611827

mlr head -n 2 then put end{ print "Final NR is ".NR} ./reg_test/input/abixy-wide ./reg_test/input/abixy-wide ./reg_test/input/abixy-wide
a=cat,b=pan,i=1,x=0.5117389009583777,y=0.08295224980036853,x2=0.2618767027540883,xy=0.0424498931448654,y2=0.006881075746942741
a=pan,b=wye,i=2,x=0.5225940442098578,y=0.511678736087022,x2=0.27310453504361476,xy=0.2674002600279053,y2=0.26181512896361225
Final NR is 3

mlr tail -n 2 ./reg_test/input/abixy-het
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr tail -n 2 -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006

mlr tail -n 2 -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr top -f x,y -n 2 ./reg_test/input/abixy-het
top_idx=1,x_top=0.758680,y_top=0.952618
top_idx=2,x_top=0.611784,y_top=0.749551

mlr top -f x,y -n 2 -g a ./reg_test/input/abixy-het
a=pan,top_idx=1,x_top=0.502626,y_top=0.952618
a=pan,top_idx=2,x_top=0.346790,y_top=0.726803
a=eks,top_idx=1,x_top=0.758680,y_top=0.522151
a=eks,top_idx=2,x_top=0.611784,y_top=0.187885
a=zee,top_idx=1,x_top=0.527126,y_top=0.493221
a=zee,top_idx=2,x_top=,y_top=

mlr top -f x,y -n 2 -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,top_idx=1,x_top=0.346790,y_top=0.726803
a=pan,b=pan,top_idx=2,x_top=,y_top=
a=eks,b=pan,top_idx=1,x_top=0.758680,y_top=0.522151
a=eks,b=pan,top_idx=2,x_top=,y_top=
a=zee,b=pan,top_idx=1,x_top=0.527126,y_top=0.493221
a=zee,b=pan,top_idx=2,x_top=,y_top=
a=eks,b=zee,top_idx=1,x_top=0.611784,y_top=0.187885
a=eks,b=zee,top_idx=2,x_top=,y_top=
a=pan,b=wye,top_idx=1,x_top=0.502626,y_top=0.952618
a=pan,b=wye,top_idx=2,x_top=,y_top=

mlr top -f x,y -n 2 ./reg_test/input/ints.dkvp
top_idx=1,x_top=9,y_top=9
top_idx=2,x_top=8,y_top=9

mlr top -f x,y -n 2 -F ./reg_test/input/ints.dkvp
top_idx=1,x_top=9.000000,y_top=9.000000
top_idx=2,x_top=8.000000,y_top=9.000000

mlr top -n 4 -f x ./reg_test/input/abixy-wide
top_idx=1,x_top=0.999730
top_idx=2,x_top=0.999308
top_idx=3,x_top=0.997339
top_idx=4,x_top=0.997245

mlr top -n 1 -f x,y ./reg_test/input/abixy-wide
top_idx=1,x_top=0.999730,y_top=0.999522

mlr top -n 4 -f x -g a ./reg_test/input/abixy-wide
a=cat,top_idx=1,x_top=0.996359
a=cat,top_idx=2,x_top=0.990588
a=cat,top_idx=3,x_top=0.990160
a=cat,top_idx=4,x_top=0.986548
a=pan,top_idx=1,x_top=0.999730
a=pan,top_idx=2,x_top=0.999308
a=pan,top_idx=3,x_top=0.996583
a=pan,top_idx=4,x_top=0.990853
a=wye,top_idx=1,x_top=0.997339
a=wye,top_idx=2,x_top=0.996525
a=wye,top_idx=3,x_top=0.995414
a=wye,top_idx=4,x_top=0.994219
a=dog,top_idx=1,x_top=0.997245
a=dog,top_idx=2,x_top=0.988581
a=dog,top_idx=3,x_top=0.980266
a=dog,top_idx=4,x_top=0.977280
a=hat,top_idx=1,x_top=0.997014
a=hat,top_idx=2,x_top=0.995705
a=hat,top_idx=3,x_top=0.992879
a=hat,top_idx=4,x_top=0.989639

mlr top -n 1 -f x,y -g a ./reg_test/input/abixy-wide
a=cat,top_idx=1,x_top=0.996359,y_top=0.997929
a=pan,top_idx=1,x_top=0.999730,y_top=0.999319
a=wye,top_idx=1,x_top=0.997339,y_top=0.999450
a=dog,top_idx=1,x_top=0.997245,y_top=0.999522
a=hat,top_idx=1,x_top=0.997014,y_top=0.991400

mlr top -a -n 4 -f x ./reg_test/input/abixy-wide
a=pan,b=cat,i=1943,x=0.9997301774748071,y=0.8408385083267972,x2=0.9994604277538093,xy=0.8406116311572011,y2=0.7070093970852334
a=pan,b=dog,i=552,x=0.9993077485337599,y=0.10019859749555626,x2=0.9986159762796124,xy=0.10012923486952477,y2=0.010039758940076493
a=wye,b=pan,i=568,x=0.9973387930844961,y=0.5711453274816489,x2=0.9946846681912394,xy=0.569625391586397,y2=0.32620698510412
a=dog,b=pan,i=1613,x=0.997245171384539,y=0.8188847898688517,x2=0.9944979318497786,xy=0.8166289026169553,y2=0.6705722990785534

mlr top -a -n 4 -f x -g a ./reg_test/input/abixy-wide
a=cat,b=dog,i=901,x=0.9963591865818606,y=0.9423606044154952,x2=0.9927316286860669,xy=0.9389296452822133,y2=0.8880435087543374
a=cat,b=wye,i=135,x=0.9905881531288986,y=0.7789092765450115,x2=0.9812648891193222,xy=0.7715783017076895,y2=0.6066996610878732
a=cat,b=hat,i=975,x=0.9901595235021967,y=0.8592860989306361,x2=0.9804158819820973,xy=0.8508303142692202,y2=0.738372599815431
a=cat,b=dog,i=748,x=0.986548192318023,y=0.22327955924073406,x2=0.973277335765959,xy=0.2202760455505111,y2=0.04985376157473647
a=pan,b=cat,i=1943,x=0.9997301774748071,y=0.8408385083267972,x2=0.9994604277538093,xy=0.8406116311572011,y2=0.7070093970852334
a=pan,b=dog,i=552,x=0.9993077485337599,y=0.10019859749555626,x2=0.9986159762796124,xy=0.10012923486952477,y2=0.010039758940076493
a=pan,b=pan,i=756,x=0.9965826588776338,y=0.8864833103309704,x2=0.9931769959756142,xy=0.883453894460285,y2=0.7858526594953555
a=pan,b=wye,i=1876,x=0.9908531016291003,y=0.318873165751998,x2=0.9817898690080082,xy=0.3159564653116574,y2=0.10168009583670118
a=wye,b=pan,i=568,x=0.9973387930844961,y=0.5711453274816489,x2=0.9946846681912394,xy=0.569625391586397,y2=0.32620698510412
a=wye,b=dog,i=1772,x=0.9965249307670624,y=0.8078766237661098,x2=0.9930619376402985,xy=0.8050691965668507,y2=0.6526646392277285
a=wye,b=pan,i=450,x=0.9954136776717515,y=0.8564839236024028,x2=0.9908483896960015,xy=0.8525558122597992,y2=0.7335647113893665
a=wye,b=dog,i=882,x=0.9942189496990836,y=0.3298671968153588,x2=0.988471319940749,xy=0.32796021795794694,y2=0.10881236753482267
a=dog,b=pan,i=1613,x=0.997245171384539,y=0.8188847898688517,x2=0.9944979318497786,xy=0.8166289026169553,y2=0.6705722990785534
a=dog,b=hat,i=1680,x=0.9885812365291148,y=0.048768165346359305,x2=0.9772928612174336,xy=0.04821129320136021,y2=0.0023783339512498405
a=dog,b=wye,i=1331,x=0.9802656048578349,y=0.9431768957041479,x2=0.9609206560672968,xy=0.9245638701553616,y2=0.889582656590113
a=dog,b=pan,i=978,x=0.9772797759762182,y=0.5328687567382687,x2=0.9550757605321272,xy=0.5207618592099011,y2=0.2839491119077882
a=hat,b=dog,i=1894,x=0.9970136511026203,y=0.2054109087831395,x2=0.9940362204849775,xy=0.2047974801421852,y2=0.04219364144711526
a=hat,b=hat,i=818,x=0.9957052214494239,y=0.026702922142899044,x2=0.9914288880216462,xy=0.026588239005642018,y2=0.0007130460509697281
a=hat,b=hat,i=1513,x=0.9928788688650781,y=0.1805357299725343,x2=0.9858084482387971,xy=0.17925011136486105,y2=0.03259314979671582
a=hat,b=dog,i=1768,x=0.9896393441122658,y=0.5323182982465756,x2=0.9793860314149557,xy=0.5268031315356986,y2=0.2833627706481302

mlr top -n 3 -f x,y ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775807,y_top=-9223372036854775801
top_idx=2,x_top=9223372036854775806,y_top=-9223372036854775802
top_idx=3,x_top=9223372036854775805,y_top=-9223372036854775803

mlr top -n 3 -f x,y --min ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775801,y_top=-9223372036854775807
top_idx=2,x_top=9223372036854775802,y_top=-9223372036854775806
top_idx=3,x_top=9223372036854775803,y_top=-9223372036854775805

mlr top -F -n 3 -f x,y ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=2,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=3,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000

mlr top -F -n 3 -f x,y --min ./reg_test/input/near-ovf.dkvp
top_idx=1,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=2,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000
top_idx=3,x_top=9223372036854775808.000000,y_top=-9223372036854775808.000000

mlr --seed 12345 bootstrap ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694

mlr --seed 12345 bootstrap -n 2 ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463

mlr --seed 12345 bootstrap -n 20 ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006

mlr --seed 12345 sample -k 2 ./reg_test/input/abixy-het
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr --seed 12345 sample -k 2 -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006

mlr --seed 12345 sample -k 2 -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --seed 12345 shuffle ./reg_test/input/abixy-het
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr --seed 23456 shuffle ./reg_test/input/abixy-het
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr --seed 34567 shuffle ./reg_test/input/abixy-het
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr uniq -g a ./reg_test/input/abixy-het
a=pan
a=eks
a=wye
a=zee

mlr uniq -g a,b ./reg_test/input/abixy-het
a=pan,b=pan
a=eks,b=pan
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=pan,b=wye

mlr uniq -f a ./reg_test/input/abixy-het
a=pan
a=eks
a=wye
a=zee

mlr uniq -f a,b ./reg_test/input/abixy-het
a=pan,b=pan
a=eks,b=pan
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=pan,b=wye

mlr uniq -c -g a ./reg_test/input/abixy-het
a=pan,count=2
a=eks,count=3
a=wye,count=1
a=zee,count=2

mlr uniq -c -g a,b ./reg_test/input/abixy-het
a=pan,b=pan,count=1
a=eks,b=pan,count=1
a=wye,b=pan,count=1
a=zee,b=pan,count=1
a=eks,b=zee,count=1
a=zee,b=wye,count=1
a=pan,b=wye,count=1

mlr count-distinct -f a ./reg_test/input/small ./reg_test/input/abixy
a=pan,count=4
a=eks,count=6
a=wye,count=4
a=zee,count=4
a=hat,count=2

mlr count-distinct -f a,b ./reg_test/input/small ./reg_test/input/abixy
a=pan,b=pan,count=2
a=eks,b=pan,count=2
a=wye,b=wye,count=2
a=eks,b=wye,count=2
a=wye,b=pan,count=2
a=zee,b=pan,count=2
a=eks,b=zee,count=2
a=zee,b=wye,count=2
a=hat,b=wye,count=2
a=pan,b=wye,count=2

mlr count-distinct -f a -n ./reg_test/input/small ./reg_test/input/abixy
count=5

mlr count-distinct -f a,b -n ./reg_test/input/small ./reg_test/input/abixy
count=10

mlr grep pan ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr grep -v pan ./reg_test/input/abixy-het
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr decimate -n 4 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr decimate -b -n 4 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr decimate -e -n 4 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr decimate -g a -n 2 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr decimate -g a -b -n 2 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr decimate -g a -e -n 2 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
SORT

mlr sort -f a ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr sort -r a ./reg_test/input/abixy
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

mlr sort -f x ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -r x ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -nf x ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -nr x ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -f a,b ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr sort -r a,b ./reg_test/input/abixy
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -f x,y ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -r x,y ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -nf x,y ./reg_test/input/abixy
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797

mlr sort -nr x,y ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr sort -f a -nr x ./reg_test/input/abixy
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr sort -nr y -f a ./reg_test/input/abixy
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463

mlr sort -f a -r b -nf x -nr y ./reg_test/input/abixy
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697

mlr sort -f x ./reg_test/input/sort-het.dkvp
x=1
x=2
x=4
a=3

mlr sort -r x ./reg_test/input/sort-het.dkvp
x=4
x=2
x=1
a=3


================================================================
JOIN

mlr --opprint join -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

mlr --opprint join -u -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

mlr --opprint join --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

mlr --opprint join -u --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

mlr --opprint join --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

mlr --opprint join -u --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

mlr --opprint join --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

l x
4 g

r y
5 z

mlr --opprint join -u --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
o x y
1 a s
2 b t
2 c t
2 d t
2 b v
2 c v
2 d v
3 e w
3 f w
3 e x
3 f x
3 e y
3 f y

r y
5 z

l x
4 g

mlr --opprint join --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
l x
4 g

mlr --opprint join -u --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
l x
4 g

mlr --opprint join --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
5 z

mlr --opprint join -u --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
5 z

mlr --opprint join --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
l x
4 g

r y
5 z

mlr --opprint join -u --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
5 z

l x
4 g

mlr --opprint join -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -u -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -u --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --np --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join -u --np --ul -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp

mlr --opprint join --np --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --np --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join --np --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -u --np --ul --ur -f /dev/null -l l -r r -j o ./reg_test/input/joinb.dkvp
r y
1 s
2 t
2 v
3 w
3 x
3 y
5 z

mlr --opprint join -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -u -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -u --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --np --ul -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join -u --np --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null

mlr --opprint join --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --opprint join -u --np --ul --ur -f ./reg_test/input/joina.dkvp -l l -r r -j o /dev/null
l x
1 a
2 b
2 c
2 d
3 e
3 f
4 g

mlr --odkvp join -u -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --odkvp join -u -j a -f ./reg_test/input/abixy-het ./reg_test/input/join-het.dkvp
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,n=123
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,n=123
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,n=123
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,n=234
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,n=234
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,n=345
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,n=456
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,n=456

mlr --odkvp join -u --np --ul --ur -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
aye=bee,enn=emm

mlr --odkvp join -u --np --ul --ur -j a -f ./reg_test/input/abixy-het ./reg_test/input/join-het.dkvp
aye=bee,enn=emm
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
j=1,b=11
j=1,b=12
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
j=1,b=11
j=1,b=12
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
j=1,b=11
j=1,b=12
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
j=1,b=11
j=1,b=12

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
j=3,b=14
j=3,b=15
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
j=3,b=14
j=3,b=15
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
j=3,b=14
j=3,b=15

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
j=5,b=17
j=5,b=18
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
j=5,b=17
j=5,b=18

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6

mlr join -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
x=100,b=10
x=200,b=13
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
x=100,b=10
x=200,b=13
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
x=100,b=10
x=200,b=13
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
x=400,b=19
l=5,b=17
l=5,b=18

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19
l=5,b=17
l=5,b=18

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
x=100,b=10
x=200,b=13
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=300,b=16
l=5,b=17
l=5,b=18
x=400,b=19

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
y=111
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
y=111
y=222
r=2
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
y=111
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
y=111
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
y=111
r=2
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
y=111
r=2
y=222
r=2
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
y=111
r=2
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
y=111
r=2
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
y=111
r=2
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
y=111
r=2
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
y=111
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
y=111
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
y=111
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
y=111
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
y=111
r=4
y=222
r=4
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
y=111
r=4
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
y=111
r=4
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
y=111
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
y=111
y=222
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
y=111
y=222
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
y=111
r=6
y=333

mlr join --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
y=111
r=6
y=222
r=6
y=333

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
j=1,b=11
j=1,b=12

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
j=1,b=11
j=1,b=12
j=1,b=11
j=1,b=12

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
j=1,b=11
j=1,b=12

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
j=1,b=11
j=1,b=12
j=3,b=14
j=3,b=15

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
j=1,b=11
j=1,b=12

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
j=1,b=11
j=1,b=12
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
j=1,b=11
j=1,b=12

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
j=3,b=14
j=3,b=15

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
j=3,b=14
j=3,b=15

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
j=3,b=14
j=3,b=15
j=3,b=14
j=3,b=15

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
j=3,b=14
j=3,b=15

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
j=3,b=14
j=3,b=15
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
j=3,b=14
j=3,b=15

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
j=5,b=17
j=5,b=18
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
j=5,b=17
j=5,b=18

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6

mlr join -u -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
l=1,b=11
l=1,b=12
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
l=1,b=11
l=1,b=12
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ul -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
l=1,b=11
l=1,b=12
l=3,b=14
l=3,b=15
l=5,b=17
l=5,b=18
x=100,b=10
x=200,b=13
x=300,b=16
x=400,b=19

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r1
y=111
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r11
y=111
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r12
y=111
y=222
r=2
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r13
y=111
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r14
y=111
y=222
r=4
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r15
y=111
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r16
y=111
y=222
r=6
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r2
y=111
r=2
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r22
y=111
r=2
y=222
r=2
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r23
y=111
r=2
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r24
y=111
r=2
y=222
r=4
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r25
y=111
r=2
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r26
y=111
r=2
y=222
r=6
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r3
y=111
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r33
y=111
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r34
y=111
y=222
r=4
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r35
y=111
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r36
y=111
y=222
r=6
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r4
y=111
r=4
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r44
y=111
r=4
y=222
r=4
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r45
y=111
r=4
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r46
y=111
r=4
y=222
r=6
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r5
y=111
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r55
y=111
y=222
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r56
y=111
y=222
r=6
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r6
y=111
r=6
y=333

mlr join -u --np --ur -l l -r r -j j -f ./reg_test/input/het-join-left ./reg_test/input/het-join-right-r66
y=111
r=6
y=222
r=6
y=333


================================================================
JOIN PREPIPE

mlr --prepipe cat --odkvp join -u -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --odkvp join --prepipe cat -u -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --prepipe cat --odkvp join --prepipe cat -u -j a -f ./reg_test/input/join-het.dkvp ./reg_test/input/abixy-het
a=pan,n=234,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,n=123,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,n=123,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,n=345,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,n=456,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,n=123,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,n=456,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
a=pan,n=234,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
JOIN MIXED-FORMAT

mlr --json join -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --json join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --dkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --csvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --ijson --ojson join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --idkvp --ojson join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --icsvlite --ojson join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --ijson --ojson join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --idkvp --ojson join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --icsvlite --ojson join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --ijson --ojson join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --idkvp --ojson join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --icsvlite --ojson join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
{ "x": 1, "a": 2, "b": 20 }
{ "x": 2, "a": 3, "b": 30 }
{ "x": 3, "a": 4, "b": 40 }
{ "x": 4, "a": 5, "b": 50 }

mlr --ijson --odkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --idkvp --odkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --icsvlite --odkvp join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --ijson --odkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --idkvp --odkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --icsvlite --odkvp join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --ijson --odkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --idkvp --odkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --icsvlite --odkvp join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x=1,a=2,b=20
x=2,a=3,b=30
x=3,a=4,b=40
x=4,a=5,b=50

mlr --ijson --ocsvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.json
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --idkvp --ocsvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.dkvp
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --icsvlite --ocsvlite join -i csvlite -j x -f ./reg_test/input/multi-format-join-a.csv ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --ijson --ocsvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.json
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --idkvp --ocsvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.dkvp
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --icsvlite --ocsvlite join -i dkvp -j x -f ./reg_test/input/multi-format-join-a.dkvp ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --ijson --ocsvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.json
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --idkvp --ocsvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.dkvp
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50

mlr --icsvlite --ocsvlite join -i json -j x -f ./reg_test/input/multi-format-join-a.json ./reg_test/input/multi-format-join-b.csv
x,a,b
1,2,20
2,3,30
3,4,40
4,5,50


================================================================
REPEAT

mlr repeat -n 5 ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9

mlr repeat -f a ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9

mlr repeat -f b ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5

mlr repeat -f c ./reg_test/input/repeat-input.dat
a=1,b=2,c=3
a=1,b=2,c=3
a=1,b=2,c=3
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=3,b=4,c=5
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=6,b=,c=7
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9
a=8,x=,c=9


================================================================
RESHAPE

mlr --pprint reshape -i X,Y,Z -o item,price ./reg_test/input/reshape-wide.tbl
time       item price
2009-01-01 X    0.65473572
2009-01-01 Y    2.4520609
2009-01-01 Z    -1.46570942
2009-01-02 X    -0.89248112
2009-01-02 Y    0.2154713
2009-01-02 Z    -2.05357735
2009-01-03 X    0.98012375
2009-01-03 Y    1.3179287
2009-01-03 Z    4.64248357
2009-01-04 X    0.35397376
2009-01-04 Y    3.3765645
2009-01-04 Z    -0.25237774
2009-01-05 X    2.19357813
2009-01-05 Y    1.3477511
2009-01-05 Z    0.09719105

mlr --pprint reshape -i X,Z -o item,price ./reg_test/input/reshape-wide.tbl
time       Y         item price
2009-01-01 2.4520609 X    0.65473572
2009-01-01 2.4520609 Z    -1.46570942
2009-01-02 0.2154713 X    -0.89248112
2009-01-02 0.2154713 Z    -2.05357735
2009-01-03 1.3179287 X    0.98012375
2009-01-03 1.3179287 Z    4.64248357
2009-01-04 3.3765645 X    0.35397376
2009-01-04 3.3765645 Z    -0.25237774
2009-01-05 1.3477511 X    2.19357813
2009-01-05 1.3477511 Z    0.09719105

mlr --pprint reshape -r [X-Z] -o item,price ./reg_test/input/reshape-wide.tbl
time       item price
2009-01-01 X    0.65473572
2009-01-01 Y    2.4520609
2009-01-01 Z    -1.46570942
2009-01-02 X    -0.89248112
2009-01-02 Y    0.2154713
2009-01-02 Z    -2.05357735
2009-01-03 X    0.98012375
2009-01-03 Y    1.3179287
2009-01-03 Z    4.64248357
2009-01-04 X    0.35397376
2009-01-04 Y    3.3765645
2009-01-04 Z    -0.25237774
2009-01-05 X    2.19357813
2009-01-05 Y    1.3477511
2009-01-05 Z    0.09719105

mlr --pprint reshape -r [XZ] -o item,price ./reg_test/input/reshape-wide.tbl
time       Y         item price
2009-01-01 2.4520609 X    0.65473572
2009-01-01 2.4520609 Z    -1.46570942
2009-01-02 0.2154713 X    -0.89248112
2009-01-02 0.2154713 Z    -2.05357735
2009-01-03 1.3179287 X    0.98012375
2009-01-03 1.3179287 Z    4.64248357
2009-01-04 3.3765645 X    0.35397376
2009-01-04 3.3765645 Z    -0.25237774
2009-01-05 1.3477511 X    2.19357813
2009-01-05 1.3477511 Z    0.09719105

mlr --pprint reshape -s item,price ./reg_test/input/reshape-long.tbl
time       X           Y         Z
2009-01-01 0.65473572  2.4520609 -1.46570942
2009-01-02 -0.89248112 0.2154713 -2.05357735
2009-01-03 0.98012375  1.3179287 4.64248357
2009-01-04 0.35397376  3.3765645 -0.25237774
2009-01-05 2.19357813  1.3477511 0.09719105

mlr --pprint reshape -i X,Y,Z -o item,price then reshape -s item,price ./reg_test/input/reshape-wide.tbl
time       X           Y         Z
2009-01-01 0.65473572  2.4520609 -1.46570942
2009-01-02 -0.89248112 0.2154713 -2.05357735
2009-01-03 0.98012375  1.3179287 4.64248357
2009-01-04 0.35397376  3.3765645 -0.25237774
2009-01-05 2.19357813  1.3477511 0.09719105

mlr --pprint reshape -s item,price then reshape -i X,Y,Z -o item,price ./reg_test/input/reshape-long.tbl
time       item price
2009-01-01 X    0.65473572
2009-01-01 Y    2.4520609
2009-01-01 Z    -1.46570942
2009-01-02 X    -0.89248112
2009-01-02 Y    0.2154713
2009-01-02 Z    -2.05357735
2009-01-03 X    0.98012375
2009-01-03 Y    1.3179287
2009-01-03 Z    4.64248357
2009-01-04 X    0.35397376
2009-01-04 Y    3.3765645
2009-01-04 Z    -0.25237774
2009-01-05 X    2.19357813
2009-01-05 Y    1.3477511
2009-01-05 Z    0.09719105

mlr reshape -i X,Y,Z -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,item=X,price=0.65473572
time=2009-01-01,item=Y,price=2.4520609
time=2009-01-01,item=Z,price=-1.46570942
time=2009-01-02,item=X,price=-0.89248112
time=2009-01-02,item=Y,price=0.2154713
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -i X,Z -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,Y=2.4520609,item=X,price=0.65473572
time=2009-01-01,Y=2.4520609,item=Z,price=-1.46570942
time=2009-01-02,Y=0.2154713,item=X,price=-0.89248112
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -r [X-Z] -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,item=X,price=0.65473572
time=2009-01-01,item=Y,price=2.4520609
time=2009-01-01,item=Z,price=-1.46570942
time=2009-01-02,item=X,price=-0.89248112
time=2009-01-02,item=Y,price=0.2154713
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -r [XZ] -o item,price ./reg_test/input/reshape-wide-ragged.dkvp
time=2009-01-01,Y=2.4520609,item=X,price=0.65473572
time=2009-01-01,Y=2.4520609,item=Z,price=-1.46570942
time=2009-01-02,Y=0.2154713,item=X,price=-0.89248112
time=2009-01-03,item=X,price=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,price=2.19357813

mlr reshape -s item,price ./reg_test/input/reshape-long-ragged.dkvp
time=2009-01-01,item=X,value=0.65473572
time=2009-01-01,item=Y,value=2.4520609
time=2009-01-01,item=Z,value=-1.46570942
time=2009-01-02,item=X,value=-0.89248112
time=2009-01-02,item=Y,value=0.2154713
time=2009-01-03,item=X,value=0.98012375
time=2009-01-04
time=2009-01-05,U=1.3477511,V=0.09719105,item=X,value=2.19357813

mlr --json reshape -i x,y -o item,value ./reg_test/input/small-non-nested.json
{ "a": "pan", "b": "pan", "i": 1, "item": "x", "value": 0.3467901443380824 }
{ "a": "pan", "b": "pan", "i": 1, "item": "y", "value": 0.7268028627434533 }
{ "a": "eks", "b": "pan", "i": 2, "item": "x", "value": 0.7586799647899636 }
{ "a": "eks", "b": "pan", "i": 2, "item": "y", "value": 0.5221511083334797 }
{ "a": "wye", "b": "wye", "i": 3, "item": "x", "value": 0.20460330576630303 }
{ "a": "wye", "b": "wye", "i": 3, "item": "y", "value": 0.33831852551664776 }
{ "a": "eks", "b": "wye", "i": 4, "item": "x", "value": 0.38139939387114097 }
{ "a": "eks", "b": "wye", "i": 4, "item": "y", "value": 0.13418874328430463 }
{ "a": "wye", "b": "pan", "i": 5, "item": "x", "value": 0.5732889198020006 }
{ "a": "wye", "b": "pan", "i": 5, "item": "y", "value": 0.8636244699032729 }
{ "a": "zee", "b": "pan", "i": 6, "item": "x", "value": 0.5271261600918548 }
{ "a": "zee", "b": "pan", "i": 6, "item": "y", "value": 0.49322128674835697 }
{ "a": "eks", "b": "zee", "i": 7, "item": "x", "value": 0.6117840605678454 }
{ "a": "eks", "b": "zee", "i": 7, "item": "y", "value": 0.1878849191181694 }
{ "a": "zee", "b": "wye", "i": 8, "item": "x", "value": 0.5985540091064224 }
{ "a": "zee", "b": "wye", "i": 8, "item": "y", "value": 0.976181385699006 }
{ "a": "hat", "b": "wye", "i": 9, "item": "x", "value": 0.03144187646093577 }
{ "a": "hat", "b": "wye", "i": 9, "item": "y", "value": 0.7495507603507059 }
{ "a": "pan", "b": "wye", "i": 10, "item": "x", "value": 0.5026260055412137 }
{ "a": "pan", "b": "wye", "i": 10, "item": "y", "value": 0.9526183602969864 }


================================================================
NEST

mlr cat ./reg_test/input/nest-explode.dkvp
x=a:1;b:2;c:3,y=d:40
x=,y=d:50
u=100,y=d:60
x=a:4;b:5,y=d:70

mlr cat ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x=a=1|b=2|c=3,y=d=40
x=,y=d=50
u=100,y=d=60
x=a=4|b=5,y=d=70

mlr nest --explode --values --across-fields -f x ./reg_test/input/nest-explode.dkvp
x_1=a:1,x_2=b:2,x_3=c:3,y=d:40
y=d:50
u=100,y=d:60
x_1=a:4,x_2=b:5,y=d:70

mlr nest --explode --values --across-fields -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x_1=a=1,x_2=b=2,x_3=c=3,y=d=40
y=d=50
u=100,y=d=60
x_1=a=4,x_2=b=5,y=d=70

mlr nest --explode --values --across-fields -f x then nest --implode --values --across-fields -f x ./reg_test/input/nest-explode.dkvp
x=a:1;b:2;c:3,y=d:40
y=d:50
u=100,y=d:60
x=a:4;b:5,y=d:70

mlr nest --explode --values --across-fields -f x --nested-fs pipe --nested-ps = then nest --implode --values --across-fields -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x=a=1|b=2|c=3,y=d=40
y=d=50
u=100,y=d=60
x=a=4|b=5,y=d=70

mlr nest --explode --values --across-records -f x ./reg_test/input/nest-explode.dkvp
x=a:1,y=d:40
x=b:2,y=d:40
x=c:3,y=d:40
u=100,y=d:60
x=a:4,y=d:70
x=b:5,y=d:70

mlr nest --explode --values --across-records -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
x=a=1,y=d=40
x=b=2,y=d=40
x=c=3,y=d=40
u=100,y=d=60
x=a=4,y=d=70
x=b=5,y=d=70

mlr nest --explode --values --across-records -f x then nest --implode --values --across-records -f x ./reg_test/input/nest-explode.dkvp
u=100,y=d:60
x=a:1;b:2;c:3,y=d:40
x=a:4;b:5,y=d:70

mlr nest --explode --values --across-records -f x --nested-fs pipe --nested-ps = then nest --implode --values --across-records -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
u=100,y=d=60
x=a=1|b=2|c=3,y=d=40
x=a=4|b=5,y=d=70

mlr nest --explode --pairs --across-fields -f x ./reg_test/input/nest-explode.dkvp
a=1,b=2,c=3,y=d:40
y=d:50
u=100,y=d:60
a=4,b=5,y=d:70

mlr nest --explode --pairs --across-fields -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
a=1,b=2,c=3,y=d=40
y=d=50
u=100,y=d=60
a=4,b=5,y=d=70

mlr nest --explode --pairs --across-records -f x ./reg_test/input/nest-explode.dkvp
a=1,y=d:40
b=2,y=d:40
c=3,y=d:40
u=100,y=d:60
a=4,y=d:70
b=5,y=d:70

mlr nest --explode --pairs --across-records -f x --nested-fs pipe --nested-ps = ./reg_test/input/nest-explode-vary-fs-ps.dkvp
a=1,y=d=40
b=2,y=d=40
c=3,y=d=40
u=100,y=d=60
a=4,y=d=70
b=5,y=d=70


================================================================
STATS

mlr --opprint stats1 -a mean,sum,count,min,max,mode -f i,x,y ./reg_test/input/abixy
i_mean   i_sum i_count i_min i_max i_mode x_mean   x_sum    x_count x_min    x_max    x_mode             y_mean   y_sum    y_count y_min    y_max    y_mode
5.500000 55    10      1     10    1      0.453629 4.536294 10      0.031442 0.758680 0.3467901443380824 0.594454 5.944542 10      0.134189 0.976181 0.7268028627434533

mlr --opprint stats1 -a min,p10,p50,mode,p90,max -f i,x,y ./reg_test/input/abixy
i_min i_p10 i_p50 i_mode i_p90 i_max x_min    x_p10    x_p50    x_mode             x_p90    x_max    y_min    y_p10    y_p50    y_mode             y_p90    y_max
1     2     6     1      10    10    0.031442 0.204603 0.527126 0.3467901443380824 0.758680 0.758680 0.134189 0.187885 0.726803 0.7268028627434533 0.976181 0.976181

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y ./reg_test/input/abixy
i_mean   i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
5.500000 0.957427 3.027650 0.453629 0.068157 0.215531 0.594454 0.096968 0.306639

mlr --oxtab stats1 -s -a mean,sum,count,min,max,mode -f i,x,y ./reg_test/input/abixy
a       pan
b       pan
i       1
x       0.3467901443380824
y       0.7268028627434533
i_mean  1.000000
i_sum   1
i_count 1
i_min   1
i_max   1
i_mode  1
x_mean  0.346790
x_sum   0.346790
x_count 1
x_min   0.346790
x_max   0.346790
x_mode  0.3467901443380824
y_mean  0.726803
y_sum   0.726803
y_count 1
y_min   0.726803
y_max   0.726803
y_mode  0.7268028627434533

a       eks
b       pan
i       2
x       0.7586799647899636
y       0.5221511083334797
i_mean  1.500000
i_sum   3
i_count 2
i_min   1
i_max   2
i_mode  1
x_mean  0.552735
x_sum   1.105470
x_count 2
x_min   0.346790
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.624477
y_sum   1.248954
y_count 2
y_min   0.522151
y_max   0.726803
y_mode  0.7268028627434533

a       wye
b       wye
i       3
x       0.20460330576630303
y       0.33831852551664776
i_mean  2.000000
i_sum   6
i_count 3
i_min   1
i_max   3
i_mode  1
x_mean  0.436691
x_sum   1.310073
x_count 3
x_min   0.204603
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.529091
y_sum   1.587272
y_count 3
y_min   0.338319
y_max   0.726803
y_mode  0.7268028627434533

a       eks
b       wye
i       4
x       0.38139939387114097
y       0.13418874328430463
i_mean  2.500000
i_sum   10
i_count 4
i_min   1
i_max   4
i_mode  1
x_mean  0.422868
x_sum   1.691473
x_count 4
x_min   0.204603
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.430365
y_sum   1.721461
y_count 4
y_min   0.134189
y_max   0.726803
y_mode  0.7268028627434533

a       wye
b       pan
i       5
x       0.5732889198020006
y       0.8636244699032729
i_mean  3.000000
i_sum   15
i_count 5
i_min   1
i_max   5
i_mode  1
x_mean  0.452952
x_sum   2.264762
x_count 5
x_min   0.204603
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.517017
y_sum   2.585086
y_count 5
y_min   0.134189
y_max   0.863624
y_mode  0.7268028627434533

a       zee
b       pan
i       6
x       0.5271261600918548
y       0.49322128674835697
i_mean  3.500000
i_sum   21
i_count 6
i_min   1
i_max   6
i_mode  1
x_mean  0.465315
x_sum   2.791888
x_count 6
x_min   0.204603
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.513051
y_sum   3.078307
y_count 6
y_min   0.134189
y_max   0.863624
y_mode  0.7268028627434533

a       eks
b       zee
i       7
x       0.6117840605678454
y       0.1878849191181694
i_mean  4.000000
i_sum   28
i_count 7
i_min   1
i_max   7
i_mode  1
x_mean  0.486239
x_sum   3.403672
x_count 7
x_min   0.204603
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.466599
y_sum   3.266192
y_count 7
y_min   0.134189
y_max   0.863624
y_mode  0.7268028627434533

a       zee
b       wye
i       8
x       0.5985540091064224
y       0.976181385699006
i_mean  4.500000
i_sum   36
i_count 8
i_min   1
i_max   8
i_mode  1
x_mean  0.500278
x_sum   4.002226
x_count 8
x_min   0.204603
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.530297
y_sum   4.242373
y_count 8
y_min   0.134189
y_max   0.976181
y_mode  0.7268028627434533

a       hat
b       wye
i       9
x       0.03144187646093577
y       0.7495507603507059
i_mean  5.000000
i_sum   45
i_count 9
i_min   1
i_max   9
i_mode  1
x_mean  0.448185
x_sum   4.033668
x_count 9
x_min   0.031442
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.554658
y_sum   4.991924
y_count 9
y_min   0.134189
y_max   0.976181
y_mode  0.7268028627434533

a       pan
b       wye
i       10
x       0.5026260055412137
y       0.9526183602969864
i_mean  5.500000
i_sum   55
i_count 10
i_min   1
i_max   10
i_mode  1
x_mean  0.453629
x_sum   4.536294
x_count 10
x_min   0.031442
x_max   0.758680
x_mode  0.3467901443380824
y_mean  0.594454
y_sum   5.944542
y_count 10
y_min   0.134189
y_max   0.976181
y_mode  0.7268028627434533

mlr --opprint stats1 -a mean,sum,count,min,max,mode -f i,x,y -g a ./reg_test/input/abixy
a   i_mean   i_sum i_count i_min i_max i_mode x_mean   x_sum    x_count x_min    x_max    x_mode              y_mean   y_sum    y_count y_min    y_max    y_mode
pan 5.500000 11    2       1     10    1      0.424708 0.849416 2       0.346790 0.502626 0.3467901443380824  0.839711 1.679421 2       0.726803 0.952618 0.7268028627434533
eks 4.333333 13    3       2     7     2      0.583954 1.751863 3       0.381399 0.758680 0.7586799647899636  0.281408 0.844225 3       0.134189 0.522151 0.5221511083334797
wye 4.000000 8     2       3     5     3      0.388946 0.777892 2       0.204603 0.573289 0.20460330576630303 0.600971 1.201943 2       0.338319 0.863624 0.33831852551664776
zee 7.000000 14    2       6     8     6      0.562840 1.125680 2       0.527126 0.598554 0.5271261600918548  0.734701 1.469403 2       0.493221 0.976181 0.49322128674835697
hat 9.000000 9     1       9     9     9      0.031442 0.031442 1       0.031442 0.031442 0.03144187646093577 0.749551 0.749551 1       0.749551 0.749551 0.7495507603507059

mlr --opprint stats1 -a min,p10,p50,mode,p90,max -f i,x,y -g a ./reg_test/input/abixy
a   i_min i_p10 i_p50 i_mode i_p90 i_max x_min    x_p10    x_p50    x_mode              x_p90    x_max    y_min    y_p10    y_p50    y_mode              y_p90    y_max
pan 1     1     10    1      10    10    0.346790 0.346790 0.502626 0.3467901443380824  0.502626 0.502626 0.726803 0.726803 0.952618 0.7268028627434533  0.952618 0.952618
eks 2     2     4     2      7     7     0.381399 0.381399 0.611784 0.7586799647899636  0.758680 0.758680 0.134189 0.134189 0.187885 0.5221511083334797  0.522151 0.522151
wye 3     3     5     3      5     5     0.204603 0.204603 0.573289 0.20460330576630303 0.573289 0.573289 0.338319 0.338319 0.863624 0.33831852551664776 0.863624 0.863624
zee 6     6     8     6      8     8     0.527126 0.527126 0.598554 0.5271261600918548  0.598554 0.598554 0.493221 0.493221 0.976181 0.49322128674835697 0.976181 0.976181
hat 9     9     9     9      9     9     0.031442 0.031442 0.031442 0.03144187646093577 0.031442 0.031442 0.749551 0.749551 0.749551 0.7495507603507059  0.749551 0.749551

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y -g a ./reg_test/input/abixy
a   i_mean   i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
pan 5.500000 4.500000 6.363961 0.424708 0.077918 0.110193 0.839711 0.112908 0.159676
eks 4.333333 1.452966 2.516611 0.583954 0.109797 0.190174 0.281408 0.121365 0.210211
wye 4.000000 1.000000 1.414214 0.388946 0.184343 0.260700 0.600971 0.262653 0.371447
zee 7.000000 1.000000 1.414214 0.562840 0.035714 0.050507 0.734701 0.241480 0.341504
hat 9.000000 -        -        0.031442 -        -        0.749551 -        -

mlr --oxtab stats1 -s -a mean,sum,count,min,max,mode -f i,x,y -g a ./reg_test/input/abixy
a       pan
b       pan
i       1
x       0.3467901443380824
y       0.7268028627434533
i_mean  1.000000
i_sum   1
i_count 1
i_min   1
i_max   1
i_mode  1
x_mean  0.346790
x_sum   0.346790
x_count 1
x_min   0.346790
x_max   0.346790
x_mode  0.3467901443380824
y_mean  0.726803
y_sum   0.726803
y_count 1
y_min   0.726803
y_max   0.726803
y_mode  0.7268028627434533

a       eks
b       pan
i       2
x       0.7586799647899636
y       0.5221511083334797
i_mean  2.000000
i_sum   2
i_count 1
i_min   2
i_max   2
i_mode  2
x_mean  0.758680
x_sum   0.758680
x_count 1
x_min   0.758680
x_max   0.758680
x_mode  0.7586799647899636
y_mean  0.522151
y_sum   0.522151
y_count 1
y_min   0.522151
y_max   0.522151
y_mode  0.5221511083334797

a       wye
b       wye
i       3
x       0.20460330576630303
y       0.33831852551664776
i_mean  3.000000
i_sum   3
i_count 1
i_min   3
i_max   3
i_mode  3
x_mean  0.204603
x_sum   0.204603
x_count 1
x_min   0.204603
x_max   0.204603
x_mode  0.20460330576630303
y_mean  0.338319
y_sum   0.338319
y_count 1
y_min   0.338319
y_max   0.338319
y_mode  0.33831852551664776

a       eks
b       wye
i       4
x       0.38139939387114097
y       0.13418874328430463
i_mean  3.000000
i_sum   6
i_count 2
i_min   2
i_max   4
i_mode  2
x_mean  0.570040
x_sum   1.140079
x_count 2
x_min   0.381399
x_max   0.758680
x_mode  0.7586799647899636
y_mean  0.328170
y_sum   0.656340
y_count 2
y_min   0.134189
y_max   0.522151
y_mode  0.5221511083334797

a       wye
b       pan
i       5
x       0.5732889198020006
y       0.8636244699032729
i_mean  4.000000
i_sum   8
i_count 2
i_min   3
i_max   5
i_mode  3
x_mean  0.388946
x_sum   0.777892
x_count 2
x_min   0.204603
x_max   0.573289
x_mode  0.20460330576630303
y_mean  0.600971
y_sum   1.201943
y_count 2
y_min   0.338319
y_max   0.863624
y_mode  0.33831852551664776

a       zee
b       pan
i       6
x       0.5271261600918548
y       0.49322128674835697
i_mean  6.000000
i_sum   6
i_count 1
i_min   6
i_max   6
i_mode  6
x_mean  0.527126
x_sum   0.527126
x_count 1
x_min   0.527126
x_max   0.527126
x_mode  0.5271261600918548
y_mean  0.493221
y_sum   0.493221
y_count 1
y_min   0.493221
y_max   0.493221
y_mode  0.49322128674835697

a       eks
b       zee
i       7
x       0.6117840605678454
y       0.1878849191181694
i_mean  4.333333
i_sum   13
i_count 3
i_min   2
i_max   7
i_mode  2
x_mean  0.583954
x_sum   1.751863
x_count 3
x_min   0.381399
x_max   0.758680
x_mode  0.7586799647899636
y_mean  0.281408
y_sum   0.844225
y_count 3
y_min   0.134189
y_max   0.522151
y_mode  0.5221511083334797

a       zee
b       wye
i       8
x       0.5985540091064224
y       0.976181385699006
i_mean  7.000000
i_sum   14
i_count 2
i_min   6
i_max   8
i_mode  6
x_mean  0.562840
x_sum   1.125680
x_count 2
x_min   0.527126
x_max   0.598554
x_mode  0.5271261600918548
y_mean  0.734701
y_sum   1.469403
y_count 2
y_min   0.493221
y_max   0.976181
y_mode  0.49322128674835697

a       hat
b       wye
i       9
x       0.03144187646093577
y       0.7495507603507059
i_mean  9.000000
i_sum   9
i_count 1
i_min   9
i_max   9
i_mode  9
x_mean  0.031442
x_sum   0.031442
x_count 1
x_min   0.031442
x_max   0.031442
x_mode  0.03144187646093577
y_mean  0.749551
y_sum   0.749551
y_count 1
y_min   0.749551
y_max   0.749551
y_mode  0.7495507603507059

a       pan
b       wye
i       10
x       0.5026260055412137
y       0.9526183602969864
i_mean  5.500000
i_sum   11
i_count 2
i_min   1
i_max   10
i_mode  1
x_mean  0.424708
x_sum   0.849416
x_count 2
x_min   0.346790
x_max   0.502626
x_mode  0.3467901443380824
y_mean  0.839711
y_sum   1.679421
y_count 2
y_min   0.726803
y_max   0.952618
y_mode  0.7268028627434533

mlr --opprint stats1 -a mean,sum,count,min,max,mode -f i,x,y -g a,b ./reg_test/input/abixy
a   b   i_mean    i_sum i_count i_min i_max i_mode x_mean   x_sum    x_count x_min    x_max    x_mode              y_mean   y_sum    y_count y_min    y_max    y_mode
pan pan 1.000000  1     1       1     1     1      0.346790 0.346790 1       0.346790 0.346790 0.3467901443380824  0.726803 0.726803 1       0.726803 0.726803 0.7268028627434533
eks pan 2.000000  2     1       2     2     2      0.758680 0.758680 1       0.758680 0.758680 0.7586799647899636  0.522151 0.522151 1       0.522151 0.522151 0.5221511083334797
wye wye 3.000000  3     1       3     3     3      0.204603 0.204603 1       0.204603 0.204603 0.20460330576630303 0.338319 0.338319 1       0.338319 0.338319 0.33831852551664776
eks wye 4.000000  4     1       4     4     4      0.381399 0.381399 1       0.381399 0.381399 0.38139939387114097 0.134189 0.134189 1       0.134189 0.134189 0.13418874328430463
wye pan 5.000000  5     1       5     5     5      0.573289 0.573289 1       0.573289 0.573289 0.5732889198020006  0.863624 0.863624 1       0.863624 0.863624 0.8636244699032729
zee pan 6.000000  6     1       6     6     6      0.527126 0.527126 1       0.527126 0.527126 0.5271261600918548  0.493221 0.493221 1       0.493221 0.493221 0.49322128674835697
eks zee 7.000000  7     1       7     7     7      0.611784 0.611784 1       0.611784 0.611784 0.6117840605678454  0.187885 0.187885 1       0.187885 0.187885 0.1878849191181694
zee wye 8.000000  8     1       8     8     8      0.598554 0.598554 1       0.598554 0.598554 0.5985540091064224  0.976181 0.976181 1       0.976181 0.976181 0.976181385699006
hat wye 9.000000  9     1       9     9     9      0.031442 0.031442 1       0.031442 0.031442 0.03144187646093577 0.749551 0.749551 1       0.749551 0.749551 0.7495507603507059
pan wye 10.000000 10    1       10    10    10     0.502626 0.502626 1       0.502626 0.502626 0.5026260055412137  0.952618 0.952618 1       0.952618 0.952618 0.9526183602969864

mlr --opprint stats1 -a min,p10,p50,mode,p90,max -f i,x,y -g a,b ./reg_test/input/abixy
a   b   i_min i_p10 i_p50 i_mode i_p90 i_max x_min    x_p10    x_p50    x_mode              x_p90    x_max    y_min    y_p10    y_p50    y_mode              y_p90    y_max
pan pan 1     1     1     1      1     1     0.346790 0.346790 0.346790 0.3467901443380824  0.346790 0.346790 0.726803 0.726803 0.726803 0.7268028627434533  0.726803 0.726803
eks pan 2     2     2     2      2     2     0.758680 0.758680 0.758680 0.7586799647899636  0.758680 0.758680 0.522151 0.522151 0.522151 0.5221511083334797  0.522151 0.522151
wye wye 3     3     3     3      3     3     0.204603 0.204603 0.204603 0.20460330576630303 0.204603 0.204603 0.338319 0.338319 0.338319 0.33831852551664776 0.338319 0.338319
eks wye 4     4     4     4      4     4     0.381399 0.381399 0.381399 0.38139939387114097 0.381399 0.381399 0.134189 0.134189 0.134189 0.13418874328430463 0.134189 0.134189
wye pan 5     5     5     5      5     5     0.573289 0.573289 0.573289 0.5732889198020006  0.573289 0.573289 0.863624 0.863624 0.863624 0.8636244699032729  0.863624 0.863624
zee pan 6     6     6     6      6     6     0.527126 0.527126 0.527126 0.5271261600918548  0.527126 0.527126 0.493221 0.493221 0.493221 0.49322128674835697 0.493221 0.493221
eks zee 7     7     7     7      7     7     0.611784 0.611784 0.611784 0.6117840605678454  0.611784 0.611784 0.187885 0.187885 0.187885 0.1878849191181694  0.187885 0.187885
zee wye 8     8     8     8      8     8     0.598554 0.598554 0.598554 0.5985540091064224  0.598554 0.598554 0.976181 0.976181 0.976181 0.976181385699006   0.976181 0.976181
hat wye 9     9     9     9      9     9     0.031442 0.031442 0.031442 0.03144187646093577 0.031442 0.031442 0.749551 0.749551 0.749551 0.7495507603507059  0.749551 0.749551
pan wye 10    10    10    10     10    10    0.502626 0.502626 0.502626 0.5026260055412137  0.502626 0.502626 0.952618 0.952618 0.952618 0.9526183602969864  0.952618 0.952618

mlr --opprint stats1 -a mean,meaneb,stddev -f i,x,y -g a,b ./reg_test/input/abixy
a   b   i_mean    i_meaneb i_stddev x_mean   x_meaneb x_stddev y_mean   y_meaneb y_stddev
pan pan 1.000000  -        -        0.346790 -        -        0.726803 -        -
eks pan 2.000000  -        -        0.758680 -        -        0.522151 -        -
wye wye 3.000000  -        -        0.204603 -        -        0.338319 -        -
eks wye 4.000000  -        -        0.381399 -        -        0.134189 -        -
wye pan 5.000000  -        -        0.573289 -        -        0.863624 -        -
zee pan 6.000000  -        -        0.527126 -        -        0.493221 -        -
eks zee 7.000000  -        -        0.611784 -        -        0.187885 -        -
zee wye 8.000000  -        -        0.598554 -        -        0.976181 -        -
hat wye 9.000000  -        -        0.031442 -        -        0.749551 -        -
pan wye 10.000000 -        -        0.502626 -        -        0.952618 -        -

mlr --oxtab stats1 -s -a mean,sum,count,min,max,mode -f i,x,y -g a,b ./reg_test/input/abixy
a       pan
b       pan
i       1
x       0.3467901443380824
y       0.7268028627434533
i_mean  1.000000
i_sum   1
i_count 1
i_min   1
i_max   1
i_mode  1
x_mean  0.346790
x_sum   0.346790
x_count 1
x_min   0.346790
x_max   0.346790
x_mode  0.3467901443380824
y_mean  0.726803
y_sum   0.726803
y_count 1
y_min   0.726803
y_max   0.726803
y_mode  0.7268028627434533

a       eks
b       pan
i       2
x       0.7586799647899636
y       0.5221511083334797
i_mean  2.000000
i_sum   2
i_count 1
i_min   2
i_max   2
i_mode  2
x_mean  0.758680
x_sum   0.758680
x_count 1
x_min   0.758680
x_max   0.758680
x_mode  0.7586799647899636
y_mean  0.522151
y_sum   0.522151
y_count 1
y_min   0.522151
y_max   0.522151
y_mode  0.5221511083334797

a       wye
b       wye
i       3
x       0.20460330576630303
y       0.33831852551664776
i_mean  3.000000
i_sum   3
i_count 1
i_min   3
i_max   3
i_mode  3
x_mean  0.204603
x_sum   0.204603
x_count 1
x_min   0.204603
x_max   0.204603
x_mode  0.20460330576630303
y_mean  0.338319
y_sum   0.338319
y_count 1
y_min   0.338319
y_max   0.338319
y_mode  0.33831852551664776

a       eks
b       wye
i       4
x       0.38139939387114097
y       0.13418874328430463
i_mean  4.000000
i_sum   4
i_count 1
i_min   4
i_max   4
i_mode  4
x_mean  0.381399
x_sum   0.381399
x_count 1
x_min   0.381399
x_max   0.381399
x_mode  0.38139939387114097
y_mean  0.134189
y_sum   0.134189
y_count 1
y_min   0.134189
y_max   0.134189
y_mode  0.13418874328430463

a       wye
b       pan
i       5
x       0.5732889198020006
y       0.8636244699032729
i_mean  5.000000
i_sum   5
i_count 1
i_min   5
i_max   5
i_mode  5
x_mean  0.573289
x_sum   0.573289
x_count 1
x_min   0.573289
x_max   0.573289
x_mode  0.5732889198020006
y_mean  0.863624
y_sum   0.863624
y_count 1
y_min   0.863624
y_max   0.863624
y_mode  0.8636244699032729

a       zee
b       pan
i       6
x       0.5271261600918548
y       0.49322128674835697
i_mean  6.000000
i_sum   6
i_count 1
i_min   6
i_max   6
i_mode  6
x_mean  0.527126
x_sum   0.527126
x_count 1
x_min   0.527126
x_max   0.527126
x_mode  0.5271261600918548
y_mean  0.493221
y_sum   0.493221
y_count 1
y_min   0.493221
y_max   0.493221
y_mode  0.49322128674835697

a       eks
b       zee
i       7
x       0.6117840605678454
y       0.1878849191181694
i_mean  7.000000
i_sum   7
i_count 1
i_min   7
i_max   7
i_mode  7
x_mean  0.611784
x_sum   0.611784
x_count 1
x_min   0.611784
x_max   0.611784
x_mode  0.6117840605678454
y_mean  0.187885
y_sum   0.187885
y_count 1
y_min   0.187885
y_max   0.187885
y_mode  0.1878849191181694

a       zee
b       wye
i       8
x       0.5985540091064224
y       0.976181385699006
i_mean  8.000000
i_sum   8
i_count 1
i_min   8
i_max   8
i_mode  8
x_mean  0.598554
x_sum   0.598554
x_count 1
x_min   0.598554
x_max   0.598554
x_mode  0.5985540091064224
y_mean  0.976181
y_sum   0.976181
y_count 1
y_min   0.976181
y_max   0.976181
y_mode  0.976181385699006

a       hat
b       wye
i       9
x       0.03144187646093577
y       0.7495507603507059
i_mean  9.000000
i_sum   9
i_count 1
i_min   9
i_max   9
i_mode  9
x_mean  0.031442
x_sum   0.031442
x_count 1
x_min   0.031442
x_max   0.031442
x_mode  0.03144187646093577
y_mean  0.749551
y_sum   0.749551
y_count 1
y_min   0.749551
y_max   0.749551
y_mode  0.7495507603507059

a       pan
b       wye
i       10
x       0.5026260055412137
y       0.9526183602969864
i_mean  10.000000
i_sum   10
i_count 1
i_min   10
i_max   10
i_mode  10
x_mean  0.502626
x_sum   0.502626
x_count 1
x_min   0.502626
x_max   0.502626
x_mode  0.5026260055412137
y_mean  0.952618
y_sum   0.952618
y_count 1
y_min   0.952618
y_max   0.952618
y_mode  0.9526183602969864

mlr --oxtab stats1 -a mean -f x ./reg_test/input/abixy-het
x_mean 0.440334

mlr --oxtab stats1 -a mean -f x -g a ./reg_test/input/abixy-het
a      pan
x_mean 0.424708

a      eks
x_mean 0.583954

a      wye
x_mean 

a      zee
x_mean 0.562840

mlr --oxtab stats1 -a p0,p50,p100 -f x,y ./reg_test/input/near-ovf.dkvp
x_p0   9223372036854775801
x_p50  9223372036854775804
x_p100 9223372036854775807
y_p0   -9223372036854775807
y_p50  -9223372036854775804
y_p100 -9223372036854775801

mlr --oxtab stats1 -a p0,p50,p100 -f x,y -F ./reg_test/input/near-ovf.dkvp
x_p0   9223372036854775808.000000
x_p50  9223372036854775808.000000
x_p100 9223372036854775808.000000
y_p0   -9223372036854775808.000000
y_p50  -9223372036854775808.000000
y_p100 -9223372036854775808.000000

mlr --opprint stats2 -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 ./reg_test/input/abixy-wide
x_y_ols_m x_y_ols_b x_y_ols_n x_y_pca_m x_y_pca_b x_y_pca_n x_y_pca_quality x_y_r2   x_y_corr x_y_cov  xy_y2_ols_m xy_y2_ols_b xy_y2_ols_n xy_y2_pca_m xy_y2_pca_b xy_y2_pca_n xy_y2_pca_quality xy_y2_r2 xy_y2_corr xy_y2_cov
0.028351  0.487644  2000      1.332924  -0.170590 2000      0.056909        0.000791 0.028120 0.002330 0.893610    0.107060    2000        1.529534    -0.055477   2000        0.824336          0.447971 0.669306   0.045036

mlr --opprint stats2 -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 -g a,b ./reg_test/input/abixy-wide
a   b   x_y_ols_m x_y_ols_b x_y_ols_n x_y_pca_m x_y_pca_b x_y_pca_n x_y_pca_quality x_y_r2   x_y_corr  x_y_cov   xy_y2_ols_m xy_y2_ols_b xy_y2_ols_n xy_y2_pca_m xy_y2_pca_b xy_y2_pca_n xy_y2_pca_quality xy_y2_r2 xy_y2_corr xy_y2_cov
cat pan 0.054420  0.481777  89        3.636062  -1.221602 89        0.177683        0.002504 0.050036  0.003777  0.950908    0.105754    89          1.715574    -0.081719   89          0.830612          0.435336 0.659800   0.041616
pan wye -0.145486 0.584799  78        -1.340927 1.199920  78        0.254025        0.019479 -0.139568 -0.012683 0.908151    0.126628    78          1.595150    -0.045034   78          0.824114          0.438850 0.662457   0.046203
wye cat 0.185913  0.377639  74        1.135325  -0.145894 74        0.309499        0.033002 0.181665  0.014494  0.969266    0.040602    74          1.406365    -0.081379   74          0.868480          0.561236 0.749157   0.052090
dog hat 0.100096  0.448757  88        0.810749  0.097346  88        0.189256        0.010462 0.102283  0.008036  0.919149    0.090504    88          1.425774    -0.038344   88          0.846209          0.507155 0.712148   0.045034
dog pan -0.066834 0.590647  87        -0.254112 0.688837  87        0.275316        0.005924 -0.076969 -0.005709 0.726118    0.164937    87          1.566309    -0.075073   87          0.749025          0.315011 0.561259   0.034107
pan pan 0.094932  0.461566  77        0.672369  0.189898  77        0.192719        0.009768 0.098832  0.007175  0.822261    0.123441    77          1.312543    0.003200    77          0.820351          0.465390 0.682195   0.039784
hat hat 0.043668  0.405219  88        10.170494 -5.125282 88        0.310513        0.001324 0.036392  0.003037  1.128896    0.015188    88          1.414166    -0.052514   88          0.922308          0.708725 0.841858   0.060975
wye hat 0.043018  0.496029  87        0.254879  0.395780  87        0.177794        0.002197 0.046876  0.004023  0.720402    0.165623    87          1.376136    0.002792    87          0.760716          0.353558 0.594608   0.038763
pan hat 0.120797  0.448197  67        1.597359  -0.325695 67        0.225137        0.013060 0.114278  0.008987  0.962678    0.076920    67          1.285796    -0.012566   67          0.887704          0.622353 0.788893   0.054965
cat hat 0.172391  0.464384  90        0.959329  0.086790  90        0.296109        0.030150 0.173639  0.015030  0.904257    0.133482    90          1.415658    -0.008369   90          0.841567          0.498171 0.705812   0.055626
hat wye -0.022975 0.496361  70        -1.765884 1.344268  70        0.051493        0.000514 -0.022665 -0.002000 0.971929    0.096088    70          1.989422    -0.142072   70          0.825656          0.386354 0.621574   0.040126
dog dog 0.078397  0.489236  87        0.354494  0.351041  87        0.242210        0.007619 0.087288  0.008214  0.776967    0.150999    87          1.354405    -0.006432   87          0.792265          0.408257 0.638950   0.049648
wye dog 0.116403  0.425576  76        2.367821  -0.777734 76        0.254607        0.011048 0.105109  0.007867  0.925781    0.071192    76          1.453590    -0.070509   76          0.845204          0.501559 0.708208   0.046440
wye wye -0.188354 0.613934  67        -1.433772 1.217887  67        0.316070        0.031156 -0.176512 -0.015876 0.876717    0.159179    67          2.044493    -0.118503   67          0.795455          0.325193 0.570257   0.042026
dog wye 0.029527  0.502643  79        0.496713  0.282511  79        0.073039        0.000913 0.030211  0.002391  0.904925    0.120816    79          1.609123    -0.052245   79          0.821822          0.432413 0.657581   0.042857
cat dog 0.057573  0.408644  78        0.728479  0.071114  78        0.116103        0.003442 0.058671  0.005320  0.884325    0.079999    78          1.418207    -0.040344   78          0.832998          0.479596 0.692528   0.044762
hat pan -0.154393 0.564981  85        -0.845852 0.911026  85        0.276955        0.025143 -0.158566 -0.012756 0.911165    0.104362    85          1.763740    -0.092987   85          0.814584          0.397150 0.630199   0.035622
cat wye -0.014851 0.564875  77        -0.572708 0.892322  77        0.034146        0.000224 -0.014982 -0.000966 0.878820    0.086362    77          1.447244    -0.098657   77          0.827119          0.463961 0.681147   0.041096
hat cat -0.022859 0.498539  88        -0.156242 0.565723  88        0.149344        0.000610 -0.024689 -0.002116 0.840965    0.111121    88          1.663518    -0.088942   88          0.793883          0.373515 0.611158   0.036575
dog cat 0.104057  0.428559  83        2.712382  -1.005787 83        0.250036        0.008705 0.093300  0.007122  1.080443    0.023866    83          1.653922    -0.133367   83          0.875586          0.547103 0.739664   0.050357
hat dog 0.041849  0.427228  78        0.403977  0.254919  78        0.118494        0.001918 0.043789  0.003856  0.776135    0.114930    78          1.475403    -0.036508   78          0.779056          0.372058 0.609966   0.040583
pan dog 0.119510  0.467833  73        2.492496  -0.761490 73        0.266455        0.011427 0.106896  0.009302  0.948592    0.107556    73          1.408389    -0.022846   73          0.860243          0.541263 0.735706   0.056609
cat cat 0.016257  0.425410  79        0.432946  0.225535  79        0.044275        0.000273 0.016510  0.001350  0.930954    0.072476    79          1.624993    -0.072669   79          0.830029          0.446764 0.668404   0.036267
pan cat -0.188523 0.616919  89        -0.898665 0.953923  89        0.324264        0.037036 -0.192447 -0.016206 0.781770    0.176617    89          2.020454    -0.113587   89          0.762332          0.278739 0.527958   0.032984
wye pan 0.229443  0.444446  66        1.313689  -0.098124 66        0.365811        0.046722 0.216152  0.020367  0.887659    0.145052    66          1.471906    -0.030176   66          0.827911          0.462545 0.680107   0.064496

mlr --oxtab stats2 -s -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 ./reg_test/input/abixy-wide-short
a                 cat
b                 pan
i                 1
x                 0.5117389009583777
y                 0.08295224980036853
x2                0.2618767027540883
xy                0.0424498931448654
y2                0.006881075746942741
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 wye
i                 2
x                 0.5225940442098578
y                 0.511678736087022
x2                0.27310453504361476
xy                0.2674002600279053
y2                0.26181512896361225
x_y_ols_m         39.495240
x_y_ols_b         -20.128298
x_y_ols_n         2
x_y_pca_m         39.495240
x_y_pca_b         -20.128298
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          1.000000
x_y_cov           0.002327
xy_y2_ols_m       1.133290
xy_y2_ols_b       -0.041227
xy_y2_ols_n       2
xy_y2_pca_m       1.133290
xy_y2_pca_b       -0.041227
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.028674

a                 wye
b                 cat
i                 3
x                 0.8150401717873625
y                 0.07989551500795256
x2                0.6642904816271734
xy                0.06511805427712146
y2                0.006383293318385972
x_y_ols_m         -0.689881
x_y_ols_b         0.650125
x_y_ols_n         3
x_y_pca_m         -2.057762
x_y_pca_b         1.493365
x_y_pca_n         3
x_y_pca_quality   0.725269
x_y_r2            0.228338
x_y_corr          -0.477847
x_y_cov           -0.020424
xy_y2_ols_m       1.184397
xy_y2_ols_b       -0.056344
xy_y2_ols_n       3
xy_y2_pca_m       1.190469
xy_y2_pca_b       -0.057103
xy_y2_pca_n       3
xy_y2_pca_quality 0.997884
xy_y2_r2          0.991315
xy_y2_corr        0.995648
xy_y2_cov         0.018168

a                 dog
b                 hat
i                 4
x                 0.4488733555675044
y                 0.5730530513123552
x2                0.20148728933843124
xy                0.25722824606077416
y2                0.32838979961840076
x_y_ols_m         -1.054065
x_y_ols_b         0.917520
x_y_ols_n         4
x_y_pca_m         -2.068130
x_y_pca_b         1.500163
x_y_pca_n         4
x_y_pca_quality   0.845806
x_y_r2            0.416082
x_y_corr          -0.645044
x_y_cov           -0.028205
xy_y2_ols_m       1.365739
xy_y2_ols_b       -0.064987
xy_y2_ols_n       4
xy_y2_pca_m       1.406929
xy_y2_pca_b       -0.071497
xy_y2_pca_n       4
xy_y2_pca_quality 0.989979
xy_y2_r2          0.956155
xy_y2_corr        0.977832
xy_y2_cov         0.019937

a                 dog
b                 pan
i                 5
x                 0.2946557960430134
y                 0.6850437256584863
x2                0.08682203814174191
xy                0.20185210430817294
y2                0.46928490606405937
x_y_ols_m         -1.176419
x_y_ols_b         0.996592
x_y_ols_n         5
x_y_pca_m         -1.681618
x_y_pca_b         1.258579
x_y_pca_n         5
x_y_pca_quality   0.899128
x_y_r2            0.607344
x_y_corr          -0.779323
x_y_cov           -0.042043
xy_y2_ols_m       1.565652
xy_y2_ols_b       -0.046615
xy_y2_ols_n       5
xy_y2_pca_m       2.169036
xy_y2_pca_b       -0.147265
xy_y2_pca_n       5
xy_y2_pca_quality 0.936719
xy_y2_r2          0.667168
xy_y2_corr        0.816804
xy_y2_cov         0.017742

a                 wye
b                 cat
i                 6
x                 0.048709182664292916
y                 0.5851879044762575
x2                0.0023725844758234536
xy                0.02850402453206882
y2                0.34244488354531344
x_y_ols_m         -0.752322
x_y_ols_b         0.750859
x_y_ols_n         6
x_y_pca_m         -1.066519
x_y_pca_b         0.889190
x_y_pca_n         6
x_y_pca_quality   0.836548
x_y_r2            0.515958
x_y_corr          -0.718302
x_y_cov           -0.049192
xy_y2_ols_m       0.917730
xy_y2_ols_b       0.103935
xy_y2_ols_n       6
xy_y2_pca_m       2.512667
xy_y2_pca_b       -0.125351
xy_y2_pca_n       6
xy_y2_pca_quality 0.807995
xy_y2_r2          0.286403
xy_y2_corr        0.535166
xy_y2_cov         0.011246

a                 dog
b                 hat
i                 7
x                 0.8500003149528544
y                 0.2984098741712895
x2                0.7225005354199517
xy                0.25364848703063775
y2                0.08904845300292483
x_y_ols_m         -0.612818
x_y_ols_b         0.707992
x_y_ols_n         7
x_y_pca_m         -0.842190
x_y_pca_b         0.822403
x_y_pca_n         7
x_y_pca_quality   0.820362
x_y_r2            0.476303
x_y_corr          -0.690147
x_y_cov           -0.048089
xy_y2_ols_m       0.592008
xy_y2_ols_b       0.120493
xy_y2_ols_n       7
xy_y2_pca_m       3.299160
xy_y2_pca_b       -0.311183
xy_y2_pca_n       7
xy_y2_pca_quality 0.722139
xy_y2_r2          0.126356
xy_y2_corr        0.355466
xy_y2_cov         0.007067

a                 pan
b                 pan
i                 8
x                 0.616507208914765
y                 0.25924335982487057
x2                0.38008113864387366
xy                0.15982540019531707
y2                0.06720711961328732
x_y_ols_m         -0.627947
x_y_ols_b         0.706893
x_y_ols_n         8
x_y_pca_m         -0.857225
x_y_pca_b         0.824631
x_y_pca_n         8
x_y_pca_quality   0.826128
x_y_r2            0.489375
x_y_corr          -0.699554
x_y_cov           -0.043324
xy_y2_ols_m       0.591342
xy_y2_ols_b       0.102111
xy_y2_ols_n       8
xy_y2_pca_m       3.718931
xy_y2_pca_b       -0.396750
xy_y2_pca_n       8
xy_y2_pca_quality 0.737121
xy_y2_r2          0.115022
xy_y2_corr        0.339150
xy_y2_cov         0.006050

a                 hat
b                 hat
i                 9
x                 0.33786884067769307
y                 0.6036735617015514
x2                0.11415535350088835
xy                0.203962486439877
y2                0.3644217690974368
x_y_ols_m         -0.661274
x_y_ols_b         0.735462
x_y_ols_n         9
x_y_pca_m         -0.890432
x_y_pca_b         0.848665
x_y_pca_n         9
x_y_pca_quality   0.838021
x_y_r2            0.516776
x_y_corr          -0.718871
x_y_cov           -0.042188
xy_y2_ols_m       0.667659
xy_y2_ols_b       0.105305
xy_y2_ols_n       9
xy_y2_pca_m       3.726998
xy_y2_pca_b       -0.397782
xy_y2_pca_n       9
xy_y2_pca_quality 0.764687
xy_y2_r2          0.134705
xy_y2_corr        0.367022
xy_y2_cov         0.006124

a                 wye
b                 hat
i                 10
x                 0.3834648944206174
y                 0.4999709279216641
x2                0.14704532525301522
xy                0.19172129908885902
y2                0.24997092876684981
x_y_ols_m         -0.664725
x_y_ols_b         0.738937
x_y_ols_n         10
x_y_pca_m         -0.888643
x_y_pca_b         0.847077
x_y_pca_n         10
x_y_pca_quality   0.841594
x_y_r2            0.524349
x_y_corr          -0.724120
x_y_cov           -0.038508
xy_y2_ols_m       0.673183
xy_y2_ols_b       0.106048
xy_y2_ols_n       10
xy_y2_pca_m       3.679574
xy_y2_pca_b       -0.396534
xy_y2_pca_n       10
xy_y2_pca_quality 0.765015
xy_y2_r2          0.137573
xy_y2_corr        0.370908
xy_y2_cov         0.005539

a                 pan
b                 hat
i                 11
x                 0.025474999754416028
y                 0.7861954915044592
x2                0.0006489756124874967
xy                0.020028329952999087
y2                0.6181033508619382
x_y_ols_m         -0.702240
x_y_ols_b         0.761330
x_y_ols_n         11
x_y_pca_m         -0.861995
x_y_pca_b         0.831839
x_y_pca_n         11
x_y_pca_quality   0.884552
x_y_r2            0.623708
x_y_corr          -0.789752
x_y_cov           -0.049973
xy_y2_ols_m       -0.038359
xy_y2_ols_b       0.260804
xy_y2_ols_n       11
xy_y2_pca_m       -82.143959
xy_y2_pca_b       12.888187
xy_y2_pca_n       11
xy_y2_pca_quality 0.759203
xy_y2_r2          0.000355
xy_y2_corr        -0.018828
xy_y2_cov         -0.000360

a                 cat
b                 hat
i                 12
x                 0.6335445699880142
y                 0.15467178563525052
x2                0.4013787221612979
xy                0.0979914699195631
y2                0.02392336127159689
x_y_ols_m         -0.740466
x_y_ols_b         0.765334
x_y_ols_n         12
x_y_pca_m         -0.911766
x_y_pca_b         0.843681
x_y_pca_n         12
x_y_pca_quality   0.887843
x_y_r2            0.635324
x_y_corr          -0.797072
x_y_cov           -0.050182
xy_y2_ols_m       0.085108
xy_y2_ols_b       0.222963
xy_y2_ols_n       12
xy_y2_pca_m       41.549828
xy_y2_pca_b       -5.961259
xy_y2_pca_n       12
xy_y2_pca_quality 0.780003
xy_y2_r2          0.001597
xy_y2_corr        0.039969
xy_y2_cov         0.000747

a                 hat
b                 wye
i                 13
x                 0.35922068401384877
y                 0.8502678133887914
x2                0.1290394998233774
xy                0.30543378552048117
y2                0.7229553544849566
x_y_ols_m         -0.782612
x_y_ols_b         0.811286
x_y_ols_n         13
x_y_pca_m         -1.047326
x_y_pca_b         0.930360
x_y_pca_n         13
x_y_pca_quality   0.861099
x_y_r2            0.571131
x_y_corr          -0.755732
x_y_cov           -0.049199
xy_y2_ols_m       0.659118
xy_y2_ols_b       0.166913
xy_y2_ols_n       13
xy_y2_pca_m       6.994463
xy_y2_pca_b       -0.854132
xy_y2_pca_n       13
xy_y2_pca_quality 0.838549
xy_y2_r2          0.078760
xy_y2_corr        0.280642
xy_y2_cov         0.006543

a                 dog
b                 dog
i                 14
x                 0.5440047442770544
y                 0.933608851612059
x2                0.2959411617959433
xy                0.5078876445760125
y2                0.8716254878083876
x_y_ols_m         -0.719761
x_y_ols_b         0.821739
x_y_ols_n         14
x_y_pca_m         -1.259269
x_y_pca_b         1.068052
x_y_pca_n         14
x_y_pca_quality   0.775265
x_y_r2            0.388115
x_y_corr          -0.622988
x_y_cov           -0.042223
xy_y2_ols_m       1.175278
xy_y2_ols_b       0.097368
xy_y2_ols_n       14
xy_y2_pca_m       3.119062
xy_y2_pca_b       -0.264044
xy_y2_pca_n       14
xy_y2_pca_quality 0.866432
xy_y2_r2          0.322054
xy_y2_corr        0.567498
xy_y2_cov         0.020862

a                 wye
b                 dog
i                 15
x                 0.4689175303764642
y                 0.09048353045392021
x2                0.21988365029436224
xy                0.04242931364019586
y2                0.008187269283405506
x_y_ols_m         -0.725720
x_y_ols_b         0.798215
x_y_ols_n         15
x_y_pca_m         -1.432456
x_y_pca_b         1.121457
x_y_pca_n         15
x_y_pca_quality   0.758098
x_y_r2            0.343569
x_y_corr          -0.586148
x_y_cov           -0.039539
xy_y2_ols_m       1.249777
xy_y2_ols_b       0.074959
xy_y2_ols_n       15
xy_y2_pca_m       2.985574
xy_y2_pca_b       -0.231176
xy_y2_pca_n       15
xy_y2_pca_quality 0.877117
xy_y2_r2          0.362173
xy_y2_corr        0.601808
xy_y2_cov         0.022316

a                 pan
b                 pan
i                 16
x                 0.3959177828066379
y                 0.6339858483805666
x2                0.15675089074252413
xy                0.25100627142161924
y2                0.4019380559468268
x_y_ols_m         -0.734975
x_y_ols_b         0.810106
x_y_ols_n         16
x_y_pca_m         -1.451312
x_y_pca_b         1.134988
x_y_pca_n         16
x_y_pca_quality   0.761173
x_y_r2            0.346218
x_y_corr          -0.588403
x_y_cov           -0.037547
xy_y2_ols_m       1.253418
xy_y2_ols_b       0.075130
xy_y2_ols_n       16
xy_y2_pca_m       2.945315
xy_y2_pca_b       -0.231155
xy_y2_pca_n       16
xy_y2_pca_quality 0.877563
xy_y2_r2          0.368261
xy_y2_corr        0.606845
xy_y2_cov         0.021325

a                 dog
b                 hat
i                 17
x                 0.34033844788864975
y                 0.8845934733681523
x2                0.11583025911125516
xy                0.3010611697385466
y2                0.782505613125532
x_y_ols_m         -0.779408
x_y_ols_b         0.849058
x_y_ols_n         17
x_y_pca_m         -1.579107
x_y_pca_b         1.206423
x_y_pca_n         17
x_y_pca_quality   0.772982
x_y_r2            0.349689
x_y_corr          -0.591345
x_y_cov           -0.037916
xy_y2_ols_m       1.392136
xy_y2_ols_b       0.068451
xy_y2_ols_n       17
xy_y2_pca_m       3.095298
xy_y2_pca_b       -0.251899
xy_y2_pca_n       17
xy_y2_pca_quality 0.896358
xy_y2_r2          0.398830
xy_y2_corr        0.631530
xy_y2_cov         0.023385

a                 wye
b                 wye
i                 18
x                 0.6770613653962891
y                 0.896307226056897
x2                0.4584120925122874
xy                0.6068549942886431
y2                0.8033666434818095
x_y_ols_m         -0.628521
x_y_ols_b         0.811643
x_y_ols_n         18
x_y_pca_m         -1.834767
x_y_pca_b         1.366109
x_y_pca_n         18
x_y_pca_quality   0.694668
x_y_r2            0.218178
x_y_corr          -0.467095
x_y_cov           -0.030628
xy_y2_ols_m       1.292066
xy_y2_ols_b       0.083495
xy_y2_ols_n       18
xy_y2_pca_m       2.354328
xy_y2_pca_b       -0.141020
xy_y2_pca_n       18
xy_y2_pca_quality 0.888372
xy_y2_r2          0.477918
xy_y2_corr        0.691316
xy_y2_cov         0.033015

a                 dog
b                 wye
i                 19
x                 0.4865373244199632
y                 0.44117766146315884
x2                0.23671856805373653
xy                0.2146493990021416
y2                0.1946377289741016
x_y_ols_m         -0.630507
x_y_ols_b         0.809155
x_y_ols_n         19
x_y_pca_m         -1.839104
x_y_pca_b         1.366411
x_y_pca_n         19
x_y_pca_quality   0.695696
x_y_r2            0.218821
x_y_corr          -0.467783
x_y_cov           -0.029041
xy_y2_ols_m       1.290872
xy_y2_ols_b       0.075000
xy_y2_ols_n       19
xy_y2_pca_m       2.393419
xy_y2_pca_b       -0.158220
xy_y2_pca_n       19
xy_y2_pca_quality 0.887359
xy_y2_r2          0.469361
xy_y2_corr        0.685099
xy_y2_cov         0.031153

a                 dog
b                 dog
i                 20
x                 0.3223311725542929
y                 0.08115611029827985
x2                0.10389738480022534
xy                0.026159144192390068
y2                0.006586314238746564
x_y_ols_m         -0.548880
x_y_ols_b         0.745846
x_y_ols_n         20
x_y_pca_m         -2.251324
x_y_pca_b         1.518994
x_y_pca_n         20
x_y_pca_quality   0.661764
x_y_r2            0.151247
x_y_corr          -0.388905
x_y_cov           -0.024479
xy_y2_ols_m       1.329401
xy_y2_ols_b       0.062098
xy_y2_ols_n       20
xy_y2_pca_m       2.337844
xy_y2_pca_b       -0.141870
xy_y2_pca_n       20
xy_y2_pca_quality 0.894994
xy_y2_r2          0.499340
xy_y2_corr        0.706640
xy_y2_cov         0.032678

mlr --oxtab stats2 -s -a linreg-ols,linreg-pca,r2,corr,cov -f x,y,xy,y2 -g a,b ./reg_test/input/abixy-wide-short
a                 cat
b                 pan
i                 1
x                 0.5117389009583777
y                 0.08295224980036853
x2                0.2618767027540883
xy                0.0424498931448654
y2                0.006881075746942741
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 wye
i                 2
x                 0.5225940442098578
y                 0.511678736087022
x2                0.27310453504361476
xy                0.2674002600279053
y2                0.26181512896361225
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 cat
i                 3
x                 0.8150401717873625
y                 0.07989551500795256
x2                0.6642904816271734
xy                0.06511805427712146
y2                0.006383293318385972
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 hat
i                 4
x                 0.4488733555675044
y                 0.5730530513123552
x2                0.20148728933843124
xy                0.25722824606077416
y2                0.32838979961840076
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 pan
i                 5
x                 0.2946557960430134
y                 0.6850437256584863
x2                0.08682203814174191
xy                0.20185210430817294
y2                0.46928490606405937
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 cat
i                 6
x                 0.048709182664292916
y                 0.5851879044762575
x2                0.0023725844758234536
xy                0.02850402453206882
y2                0.34244488354531344
x_y_ols_m         -0.659366
x_y_ols_b         0.617305
x_y_ols_n         2
x_y_pca_m         -0.659366
x_y_pca_b         0.617305
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          -1.000000
x_y_cov           -0.193611
xy_y2_ols_m       -9.178492
xy_y2_ols_b       0.604069
xy_y2_ols_n       2
xy_y2_pca_m       -9.178492
xy_y2_pca_b       0.604069
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        -1.000000
xy_y2_cov         -0.006152

a                 dog
b                 hat
i                 7
x                 0.8500003149528544
y                 0.2984098741712895
x2                0.7225005354199517
xy                0.25364848703063775
y2                0.08904845300292483
x_y_ols_m         -0.684679
x_y_ols_b         0.880387
x_y_ols_n         2
x_y_pca_m         -0.684679
x_y_pca_b         0.880387
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          -1.000000
x_y_cov           -0.055083
xy_y2_ols_m       66.859625
xy_y2_ols_b       -16.869794
xy_y2_ols_n       2
xy_y2_pca_m       66.859625
xy_y2_pca_b       -16.869794
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.000428

a                 pan
b                 pan
i                 8
x                 0.616507208914765
y                 0.25924335982487057
x2                0.38008113864387366
xy                0.15982540019531707
y2                0.06720711961328732
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 hat
b                 hat
i                 9
x                 0.33786884067769307
y                 0.6036735617015514
x2                0.11415535350088835
xy                0.203962486439877
y2                0.3644217690974368
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 hat
i                 10
x                 0.3834648944206174
y                 0.4999709279216641
x2                0.14704532525301522
xy                0.19172129908885902
y2                0.24997092876684981
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 hat
i                 11
x                 0.025474999754416028
y                 0.7861954915044592
x2                0.0006489756124874967
xy                0.020028329952999087
y2                0.6181033508619382
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 cat
b                 hat
i                 12
x                 0.6335445699880142
y                 0.15467178563525052
x2                0.4013787221612979
xy                0.0979914699195631
y2                0.02392336127159689
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 hat
b                 wye
i                 13
x                 0.35922068401384877
y                 0.8502678133887914
x2                0.1290394998233774
xy                0.30543378552048117
y2                0.7229553544849566
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 dog
i                 14
x                 0.5440047442770544
y                 0.933608851612059
x2                0.2959411617959433
xy                0.5078876445760125
y2                0.8716254878083876
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 wye
b                 dog
i                 15
x                 0.4689175303764642
y                 0.09048353045392021
x2                0.21988365029436224
xy                0.04242931364019586
y2                0.008187269283405506
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 pan
b                 pan
i                 16
x                 0.3959177828066379
y                 0.6339858483805666
x2                0.15675089074252413
xy                0.25100627142161924
y2                0.4019380559468268
x_y_ols_m         -1.698823
x_y_ols_b         1.306580
x_y_ols_n         2
x_y_pca_m         -1.698823
x_y_pca_b         1.306580
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          -1.000000
x_y_cov           -0.041332
xy_y2_ols_m       3.671065
xy_y2_ols_b       -0.519522
xy_y2_ols_n       2
xy_y2_pca_m       3.671065
xy_y2_pca_b       -0.519522
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.015261

a                 dog
b                 hat
i                 17
x                 0.34033844788864975
y                 0.8845934733681523
x2                0.11583025911125516
xy                0.3010611697385466
y2                0.782505613125532
x_y_ols_m         -1.023812
x_y_ols_b         1.144767
x_y_ols_n         3
x_y_pca_m         -1.098934
x_y_pca_b         1.185814
x_y_pca_n         3
x_y_pca_quality   0.967833
x_y_r2            0.878279
x_y_corr          -0.937166
x_y_cov           -0.073789
xy_y2_ols_m       12.826246
xy_y2_ols_b       -3.071390
xy_y2_ols_n       3
xy_y2_pca_m       13.871436
xy_y2_pca_b       -3.354267
xy_y2_pca_n       3
xy_y2_pca_quality 0.999579
xy_y2_r2          0.924260
xy_y2_corr        0.961385
xy_y2_cov         0.008940

a                 wye
b                 wye
i                 18
x                 0.6770613653962891
y                 0.896307226056897
x2                0.4584120925122874
xy                0.6068549942886431
y2                0.8033666434818095
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 wye
i                 19
x                 0.4865373244199632
y                 0.44117766146315884
x2                0.23671856805373653
xy                0.2146493990021416
y2                0.1946377289741016
x_y_ols_m         
x_y_ols_b         
x_y_ols_n         1
x_y_pca_m         
x_y_pca_b         
x_y_pca_n         
x_y_pca_quality   
x_y_r2            
x_y_corr          
x_y_cov           
xy_y2_ols_m       
xy_y2_ols_b       
xy_y2_ols_n       1
xy_y2_pca_m       
xy_y2_pca_b       
xy_y2_pca_n       
xy_y2_pca_quality 
xy_y2_r2          
xy_y2_corr        
xy_y2_cov         

a                 dog
b                 dog
i                 20
x                 0.3223311725542929
y                 0.08115611029827985
x2                0.10389738480022534
xy                0.026159144192390068
y2                0.006586314238746564
x_y_ols_m         3.845532
x_y_ols_b         -1.158379
x_y_ols_n         2
x_y_pca_m         3.845532
x_y_pca_b         -1.158379
x_y_pca_n         2
x_y_pca_quality   1.000000
x_y_r2            1.000000
x_y_corr          1.000000
x_y_cov           0.094483
xy_y2_ols_m       1.795699
xy_y2_ols_b       -0.040388
xy_y2_ols_n       2
xy_y2_pca_m       1.795699
xy_y2_pca_b       -0.040388
xy_y2_pca_n       2
xy_y2_pca_quality 1.000000
xy_y2_r2          1.000000
xy_y2_corr        1.000000
xy_y2_cov         0.208357

mlr --opprint stats2 --fit -a linreg-ols,linreg-pca -f x,y,xy,y2 ./reg_test/input/abixy-wide-short
a   b   i  x                    y                   x2                    xy                   y2                   x_y_ols_fit x_y_pca_fit xy_y2_ols_fit xy_y2_pca_fit
cat pan 1  0.5117389009583777   0.08295224980036853 0.2618767027540883    0.0424498931448654   0.006881075746942741 0.464963    0.366904    0.118531      -0.042629
pan wye 2  0.5225940442098578   0.511678736087022   0.27310453504361476   0.2674002600279053   0.26181512896361225  0.459005    0.342466    0.417581      0.483270
wye cat 3  0.8150401717873625   0.07989551500795256 0.6642904816271734    0.06511805427712146  0.006383293318385972 0.298487    -0.315925   0.148666      0.010366
dog hat 4  0.4488733555675044   0.5730530513123552  0.20148728933843124   0.25722824606077416  0.32838979961840076  0.499469    0.508435    0.404058      0.459490
dog pan 5  0.2946557960430134   0.6850437256584863  0.08682203814174191   0.20185210430817294  0.46928490606405937  0.584116    0.855629    0.330441      0.330029
wye cat 6  0.048709182664292916 0.5851879044762575  0.0023725844758234536 0.02850402453206882  0.34244488354531344  0.719111    1.409334    0.099992      -0.075232
dog hat 7  0.8500003149528544   0.2984098741712895  0.7225005354199517    0.25364848703063775  0.08904845300292483  0.279298    -0.394632   0.399299      0.451121
pan pan 8  0.616507208914765    0.25924335982487057 0.38008113864387366   0.15982540019531707  0.06720711961328732  0.407458    0.131037    0.274570      0.231777
hat hat 9  0.33786884067769307  0.6036735617015514  0.11415535350088835   0.203962486439877    0.3644217690974368   0.560397    0.758342    0.333246      0.334963
wye hat 10 0.3834648944206174   0.4999709279216641  0.14704532525301522   0.19172129908885902  0.24997092876684981  0.535370    0.655691    0.316973      0.306345
pan hat 11 0.025474999754416028 0.7861954915044592  0.0006489756124874967 0.020028329952999087 0.6181033508619382   0.731863    1.461642    0.088724      -0.095047
cat hat 12 0.6335445699880142   0.15467178563525052 0.4013787221612979    0.0979914699195631   0.02392336127159689  0.398106    0.092680    0.192368      0.087219
hat wye 13 0.35922068401384877  0.8502678133887914  0.1290394998233774    0.30543378552048117  0.7229553544849566   0.548677    0.710272    0.468142      0.572187
dog dog 14 0.5440047442770544   0.933608851612059   0.2959411617959433    0.5078876445760125   0.8716254878083876   0.447253    0.294263    0.737285      1.045492
wye dog 15 0.4689175303764642   0.09048353045392021 0.21988365029436224   0.04242931364019586  0.008187269283405506 0.488467    0.463309    0.118504      -0.042677
pan pan 16 0.3959177828066379   0.6339858483805666  0.15675089074252413   0.25100627142161924  0.4019380559468268   0.528535    0.627655    0.395786      0.444944
dog hat 17 0.34033844788864975  0.8845934733681523  0.11583025911125516   0.3010611697385466   0.782505613125532    0.559041    0.752782    0.462329      0.561964
wye wye 18 0.6770613653962891   0.896307226056897   0.4584120925122874    0.6068549942886431   0.8033666434818095   0.374221    -0.005290   0.868852      1.276863
dog wye 19 0.4865373244199632   0.44117766146315884 0.23671856805373653   0.2146493990021416   0.1946377289741016   0.478796    0.423641    0.347454      0.359947
dog dog 20 0.3223311725542929   0.08115611029827985 0.10389738480022534   0.026159144192390068 0.006586314238746564 0.568925    0.793322    0.096874      -0.080714

mlr --opprint stats2 --fit -a linreg-ols,linreg-pca -f x,y,xy,y2 -g a ./reg_test/input/abixy-wide-short
a   b   i  x                    y                   x2                    xy                   y2                   x_y_ols_fit x_y_pca_fit xy_y2_ols_fit xy_y2_pca_fit
cat pan 1  0.5117389009583777   0.08295224980036853 0.2618767027540883    0.0424498931448654   0.006881075746942741 0.082952    0.082952    0.006881      0.006881
cat hat 12 0.6335445699880142   0.15467178563525052 0.4013787221612979    0.0979914699195631   0.02392336127159689  0.154672    0.154672    0.023923      0.023923
pan wye 2  0.5225940442098578   0.511678736087022   0.27310453504361476   0.2674002600279053   0.26181512896361225  0.445016    0.435835    0.237402      0.033364
pan pan 8  0.616507208914765    0.25924335982487057 0.38008113864387366   0.15982540019531707  0.06720711961328732  0.372165    0.356477    0.353122      0.385517
pan hat 11 0.025474999754416028 0.7861954915044592  0.0006489756124874967 0.020028329952999087 0.6181033508619382   0.830642    0.855912    0.503503      0.843152
pan pan 16 0.3959177828066379   0.6339858483805666  0.15675089074252413   0.25100627142161924  0.4019380559468268   0.543281    0.542880    0.255037      0.087031
wye cat 3  0.8150401717873625   0.07989551500795256 0.6642904816271734    0.06511805427712146  0.006383293318385972 0.337827    -0.227660   0.137066      0.112494
wye cat 6  0.048709182664292916 0.5851879044762575  0.0023725844758234536 0.02850402453206882  0.34244488354531344  0.548640    1.271347    0.093480      0.061521
wye hat 10 0.3834648944206174   0.4999709279216641  0.14704532525301522   0.19172129908885902  0.24997092876684981  0.456551    0.616537    0.287780      0.288747
wye dog 15 0.4689175303764642   0.09048353045392021 0.21988365029436224   0.04242931364019586  0.008187269283405506 0.433043    0.449384    0.110057      0.080907
wye wye 18 0.6770613653962891   0.896307226056897   0.4584120925122874    0.6068549942886431   0.8033666434818095   0.375784    0.042238    0.781971      0.866684
dog hat 4  0.4488733555675044   0.5730530513123552  0.20148728933843124   0.25722824606077416  0.32838979961840076  0.563043    0.668750    0.401991      0.406622
dog pan 5  0.2946557960430134   0.6850437256584863  0.08682203814174191   0.20185210430817294  0.46928490606405937  0.610235    1.504956    0.297579      0.255112
dog hat 7  0.8500003149528544   0.2984098741712895  0.7225005354199517    0.25364848703063775  0.08904845300292483  0.440294    -1.506261   0.395241      0.396827
dog dog 14 0.5440047442770544   0.933608851612059   0.2959411617959433    0.5078876445760125   0.8716254878083876   0.533932    0.152924    0.874610      1.092430
dog hat 17 0.34033844788864975  0.8845934733681523  0.11583025911125516   0.3010611697385466   0.782505613125532    0.596256    1.257254    0.484638      0.526549
dog wye 19 0.4865373244199632   0.44117766146315884 0.23671856805373653   0.2146493990021416   0.1946377289741016   0.551517    0.464527    0.321709      0.290125
dog dog 20 0.3223311725542929   0.08115611029827985 0.10389738480022534   0.026159144192390068 0.006586314238746564 0.601766    1.354893    -0.033690     -0.225587
hat hat 9  0.33786884067769307  0.6036735617015514  0.11415535350088835   0.203962486439877    0.3644217690974368   0.603674    0.603674    0.364422      0.364422
hat wye 13 0.35922068401384877  0.8502678133887914  0.1290394998233774    0.30543378552048117  0.7229553544849566   0.850268    0.850268    0.722955      0.722955

mlr --opprint stats2 -a logireg -f x,y ./reg_test/input/logi.dkvp
x_y_logistic_m x_y_logistic_b x_y_logistic_n
0.145457       0.145449       22

mlr --opprint stats2 -a logireg -f x,y -g g ./reg_test/input/logi.dkvp
g    x_y_logistic_m x_y_logistic_b x_y_logistic_n
red  0.145458       -0.036371      11
blue 0.145457       0.327269       11

mlr --oxtab stats2 -a cov -f x,y ./reg_test/input/abixy-het
x_y_cov -0.011481

mlr --oxtab stats2 -a cov -f x,y -g a ./reg_test/input/abixy-het
a       pan
x_y_cov 0.017595

a       eks
x_y_cov 0.034641

a wye

a       zee
x_y_cov 

mlr --opprint step -a rsum,shift,delta,counter -f x,y ./reg_test/input/abixy
a   b   i  x                   y                   x_rsum   x_shift             x_delta   x_counter y_rsum   y_shift             y_delta   y_counter
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790 -                   0         1         0.726803 -                   0         1
eks pan 2  0.7586799647899636  0.5221511083334797  1.105470 0.3467901443380824  0.411890  2         1.248954 0.7268028627434533  -0.204652 2
wye wye 3  0.20460330576630303 0.33831852551664776 1.310073 0.7586799647899636  -0.554077 3         1.587272 0.5221511083334797  -0.183833 3
eks wye 4  0.38139939387114097 0.13418874328430463 1.691473 0.20460330576630303 0.176796  4         1.721461 0.33831852551664776 -0.204130 4
wye pan 5  0.5732889198020006  0.8636244699032729  2.264762 0.38139939387114097 0.191890  5         2.585086 0.13418874328430463 0.729436  5
zee pan 6  0.5271261600918548  0.49322128674835697 2.791888 0.5732889198020006  -0.046163 6         3.078307 0.8636244699032729  -0.370403 6
eks zee 7  0.6117840605678454  0.1878849191181694  3.403672 0.5271261600918548  0.084658  7         3.266192 0.49322128674835697 -0.305336 7
zee wye 8  0.5985540091064224  0.976181385699006   4.002226 0.6117840605678454  -0.013230 8         4.242373 0.1878849191181694  0.788296  8
hat wye 9  0.03144187646093577 0.7495507603507059  4.033668 0.5985540091064224  -0.567112 9         4.991924 0.976181385699006   -0.226631 9
pan wye 10 0.5026260055412137  0.9526183602969864  4.536294 0.03144187646093577 0.471184  10        5.944542 0.7495507603507059  0.203068  10

mlr --opprint step -a rsum,shift,delta,counter -f x,y -g a ./reg_test/input/abixy
a   b   i  x                   y                   x_rsum   x_shift             x_delta   x_counter y_rsum   y_shift             y_delta   y_counter
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790 -                   0         1         0.726803 -                   0         1
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680 -                   0         1         0.522151 -                   0         1
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603 -                   0         1         0.338319 -                   0         1
eks wye 4  0.38139939387114097 0.13418874328430463 1.140079 0.7586799647899636  -0.377281 2         0.656340 0.5221511083334797  -0.387962 2
wye pan 5  0.5732889198020006  0.8636244699032729  0.777892 0.20460330576630303 0.368686  2         1.201943 0.33831852551664776 0.525306  2
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126 -                   0         1         0.493221 -                   0         1
eks zee 7  0.6117840605678454  0.1878849191181694  1.751863 0.38139939387114097 0.230385  3         0.844225 0.13418874328430463 0.053696  3
zee wye 8  0.5985540091064224  0.976181385699006   1.125680 0.5271261600918548  0.071428  2         1.469403 0.49322128674835697 0.482960  2
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442 -                   0         1         0.749551 -                   0         1
pan wye 10 0.5026260055412137  0.9526183602969864  0.849416 0.3467901443380824  0.155836  2         1.679421 0.7268028627434533  0.225815  2

mlr --opprint step -a ewma -d 0.1,0.9 -f x,y -g a ./reg_test/input/abixy
a   b   i  x                   y                   x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790   0.346790   0.726803   0.726803
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680   0.758680   0.522151   0.522151
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603   0.204603   0.338319   0.338319
eks wye 4  0.38139939387114097 0.13418874328430463 0.720952   0.419127   0.483355   0.172985
wye pan 5  0.5732889198020006  0.8636244699032729  0.241472   0.536420   0.390849   0.811094
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126   0.527126   0.493221   0.493221
eks zee 7  0.6117840605678454  0.1878849191181694  0.710035   0.592518   0.453808   0.186395
zee wye 8  0.5985540091064224  0.976181385699006   0.534269   0.591411   0.541517   0.927885
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442   0.031442   0.749551   0.749551
pan wye 10 0.5026260055412137  0.9526183602969864  0.362374   0.487042   0.749384   0.930037

mlr --opprint step -a ewma -d 0.1,0.9 -o smooth,rough -f x,y -g a ./reg_test/input/abixy
a   b   i  x                   y                   x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790      0.346790     0.726803      0.726803
eks pan 2  0.7586799647899636  0.5221511083334797  0.758680      0.758680     0.522151      0.522151
wye wye 3  0.20460330576630303 0.33831852551664776 0.204603      0.204603     0.338319      0.338319
eks wye 4  0.38139939387114097 0.13418874328430463 0.720952      0.419127     0.483355      0.172985
wye pan 5  0.5732889198020006  0.8636244699032729  0.241472      0.536420     0.390849      0.811094
zee pan 6  0.5271261600918548  0.49322128674835697 0.527126      0.527126     0.493221      0.493221
eks zee 7  0.6117840605678454  0.1878849191181694  0.710035      0.592518     0.453808      0.186395
zee wye 8  0.5985540091064224  0.976181385699006   0.534269      0.591411     0.541517      0.927885
hat wye 9  0.03144187646093577 0.7495507603507059  0.031442      0.031442     0.749551      0.749551
pan wye 10 0.5026260055412137  0.9526183602969864  0.362374      0.487042     0.749384      0.930037

mlr --odkvp step -a rsum,shift,delta,counter -f x,y ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_rsum=0.346790,x_shift=,x_delta=0,x_counter=1,y_rsum=0.726803,y_shift=,y_delta=0,y_counter=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_rsum=1.105470,x_shift=0.3467901443380824,x_delta=0.411890,x_counter=2,y_rsum=1.248954,y_shift=0.7268028627434533,y_delta=-0.204652,y_counter=2
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x_rsum=1.310073,x_shift=0.7586799647899636,x_delta=-0.554077,x_counter=3,y_rsum=1.587272,y_shift=0.5221511083334797,y_delta=-0.183833,y_counter=3
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_rsum=1.691473,x_shift=0.20460330576630303,x_delta=0.176796,x_counter=4,y_rsum=1.721461,y_shift=0.33831852551664776,y_delta=-0.204130,y_counter=4
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_rsum=2.585086,y_shift=0.13418874328430463,y_delta=0.729436,y_counter=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_rsum=2.218599,x_shift=0.38139939387114097,x_delta=0.145727,x_counter=5,y_rsum=3.078307,y_shift=0.8636244699032729,y_delta=-0.370403,y_counter=6
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_rsum=2.830383,x_shift=0.5271261600918548,x_delta=0.084658,x_counter=6,y_rsum=3.266192,y_shift=0.49322128674835697,y_delta=-0.305336,y_counter=7
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_rsum=3.428937,x_shift=0.6117840605678454,x_delta=-0.013230,x_counter=7
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x_rsum=3.460379,x_shift=0.5985540091064224,x_delta=-0.567112,x_counter=8,y_rsum=4.015743,y_shift=0.1878849191181694,y_delta=0.561666,y_counter=8
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_rsum=3.963005,x_shift=0.03144187646093577,x_delta=0.471184,x_counter=9,y_rsum=4.968361,y_shift=0.7495507603507059,y_delta=0.203068,y_counter=9

mlr --odkvp step -a rsum,shift,delta,counter -f x,y -g a ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x_rsum=0.346790,x_shift=,x_delta=0,x_counter=1,y_rsum=0.726803,y_shift=,y_delta=0,y_counter=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x_rsum=0.758680,x_shift=,x_delta=0,x_counter=1,y_rsum=0.522151,y_shift=,y_delta=0,y_counter=1
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x_rsum=1.140079,x_shift=0.7586799647899636,x_delta=-0.377281,x_counter=2,y_rsum=0.656340,y_shift=0.5221511083334797,y_delta=-0.387962,y_counter=2
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,y_rsum=0.863624,y_shift=,y_delta=0,y_counter=1
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x_rsum=0.527126,x_shift=,x_delta=0,x_counter=1,y_rsum=0.493221,y_shift=,y_delta=0,y_counter=1
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,x_rsum=1.751863,x_shift=0.38139939387114097,x_delta=0.230385,x_counter=3,y_rsum=0.844225,y_shift=0.13418874328430463,y_delta=0.053696,y_counter=3
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,x_rsum=1.125680,x_shift=0.5271261600918548,x_delta=0.071428,x_counter=2
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x_rsum=0.849416,x_shift=0.3467901443380824,x_delta=0.155836,x_counter=2,y_rsum=1.679421,y_shift=0.7268028627434533,y_delta=0.225815,y_counter=2

mlr --opprint step -a ewma -d 0.1,0.9 -f x,y -g a ./reg_test/input/abixy-het
a   b   i x                  y                  x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
pan pan 1 0.3467901443380824 0.7268028627434533 0.346790   0.346790   0.726803   0.726803
eks pan 2 0.7586799647899636 0.5221511083334797 0.758680   0.758680   0.522151   0.522151

aaa b   i x                   y
wye wye 3 0.20460330576630303 0.33831852551664776

a   bbb i x                   y                   x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
eks wye 4 0.38139939387114097 0.13418874328430463 0.720952   0.419127   0.483355   0.172985

a   b   i xxx                y                  y_ewma_0.1 y_ewma_0.9
wye pan 5 0.5732889198020006 0.8636244699032729 0.863624   0.863624

a   b   i x                  y                   x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
zee pan 6 0.5271261600918548 0.49322128674835697 0.527126   0.527126   0.493221   0.493221

a   b   iii x                  y                  x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
eks zee 7   0.6117840605678454 0.1878849191181694 0.710035   0.592518   0.453808   0.186395

a   b   i x                  yyy               x_ewma_0.1 x_ewma_0.9
zee wye 8 0.5985540091064224 0.976181385699006 0.534269   0.591411

aaa bbb i x                   y
hat wye 9 0.03144187646093577 0.7495507603507059

a   b   i  x                  y                  x_ewma_0.1 x_ewma_0.9 y_ewma_0.1 y_ewma_0.9
pan wye 10 0.5026260055412137 0.9526183602969864 0.362374   0.487042   0.749384   0.930037

mlr --opprint step -a ewma -d 0.1,0.9 -o smooth,rough -f x,y -g a ./reg_test/input/abixy-het
a   b   i x                  y                  x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
pan pan 1 0.3467901443380824 0.7268028627434533 0.346790      0.346790     0.726803      0.726803
eks pan 2 0.7586799647899636 0.5221511083334797 0.758680      0.758680     0.522151      0.522151

aaa b   i x                   y
wye wye 3 0.20460330576630303 0.33831852551664776

a   bbb i x                   y                   x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
eks wye 4 0.38139939387114097 0.13418874328430463 0.720952      0.419127     0.483355      0.172985

a   b   i xxx                y                  y_ewma_smooth y_ewma_rough
wye pan 5 0.5732889198020006 0.8636244699032729 0.863624      0.863624

a   b   i x                  y                   x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
zee pan 6 0.5271261600918548 0.49322128674835697 0.527126      0.527126     0.493221      0.493221

a   b   iii x                  y                  x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
eks zee 7   0.6117840605678454 0.1878849191181694 0.710035      0.592518     0.453808      0.186395

a   b   i x                  yyy               x_ewma_smooth x_ewma_rough
zee wye 8 0.5985540091064224 0.976181385699006 0.534269      0.591411

aaa bbb i x                   y
hat wye 9 0.03144187646093577 0.7495507603507059

a   b   i  x                  y                  x_ewma_smooth x_ewma_rough y_ewma_smooth y_ewma_rough
pan wye 10 0.5026260055412137 0.9526183602969864 0.362374      0.487042     0.749384      0.930037

mlr --icsvlite --opprint step -a from-first -f x ./reg_test/input/from-first.csv
x   g     x_from_first
100 red   0
203 red   103
101 green 1
307 red   207
209 green 109
314 green 214

mlr --icsvlite --opprint step -a from-first -f x -g g ./reg_test/input/from-first.csv
x   g     x_from_first
100 red   0
203 red   103
101 green 0
307 red   207
209 green 108
314 green 213

mlr --opprint histogram -f x,y --lo 0 --hi 1 --nbins 20 ./reg_test/input/small
bin_lo   bin_hi   x_count y_count
0.000000 0.050000 1       0
0.050000 0.100000 0       0
0.100000 0.150000 0       1
0.150000 0.200000 0       1
0.200000 0.250000 1       0
0.250000 0.300000 0       0
0.300000 0.350000 1       1
0.350000 0.400000 1       0
0.400000 0.450000 0       0
0.450000 0.500000 0       1
0.500000 0.550000 2       1
0.550000 0.600000 2       0
0.600000 0.650000 1       0
0.650000 0.700000 0       0
0.700000 0.750000 0       2
0.750000 0.800000 1       0
0.800000 0.850000 0       0
0.850000 0.900000 0       1
0.900000 0.950000 0       0
0.950000 1.000000 0       2

mlr --opprint histogram --nbins 9 --auto -f x,y ./reg_test/input/ints.dkvp
bin_lo   bin_hi   x_count y_count
0.000000 1.000000 8       1
1.000000 2.000000 2       2
2.000000 3.000000 5       5
3.000000 4.000000 4       1
4.000000 5.000000 3       2
5.000000 6.000000 1       4
6.000000 7.000000 3       4
7.000000 8.000000 2       4
8.000000 9.000000 2       7

mlr --csvlite --opprint merge-fields -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_p0 a_min a_p29 a_max a_p100 a_sum b_p0 b_min b_p29 b_max b_p100 b_sum
436  436   436   490   490    926   195  195   195   446   446    641
320  320   320   526   526    846   780  780   780   963   963    1743
220  220   220   888   888    1108  705  705   705   831   831    1536

mlr --csvlite --opprint merge-fields -k -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_in a_out b_in b_out a_p0 a_min a_p29 a_max a_p100 a_sum b_p0 b_min b_p29 b_max b_p100 b_sum
436  490   446  195   436  436   436   490   490    926   195  195   195   446   446    641
526  320   963  780   320  320   320   526   526    846   780  780   780   963   963    1743
220  888   705  831   220  220   220   888   888    1108  705  705   705   831   831    1536

mlr --csvlite --opprint merge-fields -i -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_p0       a_min a_p29      a_max a_p100 a_sum b_p0       b_min b_p29      b_max b_p100 b_sum
436.000000 436   451.660000 490   490    926   195.000000 195   267.790000 446   446    641
320.000000 320   379.740000 526   526    846   780.000000 780   833.070000 963   963    1743
220.000000 220   413.720000 888   888    1108  705.000000 705   741.540000 831   831    1536

mlr --csvlite --opprint merge-fields -i -k -a p0,min,p29,max,p100,sum -c _in,_out ./reg_test/input/merge-fields-in-out.csv
a_in a_out b_in b_out a_p0       a_min a_p29      a_max a_p100 a_sum b_p0       b_min b_p29      b_max b_p100 b_sum
436  490   446  195   436.000000 436   451.660000 490   490    926   195.000000 195   267.790000 446   446    641
526  320   963  780   320.000000 320   379.740000 526   526    846   780.000000 780   833.070000 963   963    1743
220  888   705  831   220.000000 220   413.720000 888   888    1108  705.000000 705   741.540000 831   831    1536

mlr --oxtab merge-fields -k -a p0,min,p29,max,p100,sum,count -f a_in_x,a_out_x -o foo ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         1
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         2
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         3
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

z         4
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

mlr --oxtab merge-fields -k -a p0,min,p29,max,p100,sum,count -r in_,out_ -o bar ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   2
bar_max   8
bar_p100  8
bar_sum   15
bar_count 4

z         1
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   8
bar_p100  8
bar_sum   14
bar_count 3

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   8
bar_p100  8
bar_sum   13
bar_count 3

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   8
bar_p100  8
bar_sum   11
bar_count 3

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   4
bar_p100  4
bar_sum   7
bar_count 3

z         2
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    4
bar_min   4
bar_p29   4
bar_max   8
bar_p100  8
bar_sum   12
bar_count 2

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   8
bar_p100  8
bar_sum   10
bar_count 2

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   4
bar_p100  4
bar_sum   6
bar_count 2

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   8
bar_p100  8
bar_sum   9
bar_count 2

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   4
bar_p100  4
bar_sum   5
bar_count 2

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   2
bar_p100  2
bar_sum   3
bar_count 2

z         3
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   1
bar_p100  1
bar_sum   1
bar_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   2
bar_p100  2
bar_sum   2
bar_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    4
bar_min   4
bar_p29   4
bar_max   4
bar_p100  4
bar_sum   4
bar_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    8
bar_min   8
bar_p29   8
bar_max   8
bar_p100  8
bar_sum   8
bar_count 1

z         4
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

mlr --oxtab merge-fields -k -a p0,min,p29,max,p100,sum,count -c in_,out_ ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 1

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

z 2

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2

z 3

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 4

a_on_x  1
a_oot_x 2
b_on_y  4
b_oot_x 8

mlr --oxtab merge-fields -i -k -a p0,min,p29,max,p100,sum,count -f a_in_x,a_out_x -o foo ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         1
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         2
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    1.000000
foo_min   1
foo_p29   1.290000
foo_max   2
foo_p100  2
foo_sum   3
foo_count 2

z         3
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    1
foo_min   1
foo_p29   1
foo_max   1
foo_p100  1
foo_sum   1
foo_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
foo_p0    2
foo_min   2
foo_p29   2
foo_max   2
foo_p100  2
foo_sum   2
foo_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

z         4
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
foo_p0    
foo_min   
foo_p29   
foo_max   
foo_p100  
foo_sum   0
foo_count 0

mlr --oxtab merge-fields -i -k -a p0,min,p29,max,p100,sum,count -r in_,out_ -o bar ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.870000
bar_max   8
bar_p100  8
bar_sum   15
bar_count 4

z         1
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
bar_p0    2.000000
bar_min   2
bar_p29   3.160000
bar_max   8
bar_p100  8
bar_sum   14
bar_count 3

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   2.740000
bar_max   8
bar_p100  8
bar_sum   13
bar_count 3

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.580000
bar_max   8
bar_p100  8
bar_sum   11
bar_count 3

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.580000
bar_max   4
bar_p100  4
bar_sum   7
bar_count 3

z         2
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
bar_p0    4.000000
bar_min   4
bar_p29   5.160000
bar_max   8
bar_p100  8
bar_sum   12
bar_count 2

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
bar_p0    2.000000
bar_min   2
bar_p29   3.740000
bar_max   8
bar_p100  8
bar_sum   10
bar_count 2

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
bar_p0    2.000000
bar_min   2
bar_p29   2.580000
bar_max   4
bar_p100  4
bar_sum   6
bar_count 2

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    1.000000
bar_min   1
bar_p29   3.030000
bar_max   8
bar_p100  8
bar_sum   9
bar_count 2

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.870000
bar_max   4
bar_p100  4
bar_sum   5
bar_count 2

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    1.000000
bar_min   1
bar_p29   1.290000
bar_max   2
bar_p100  2
bar_sum   3
bar_count 2

z         3
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    1
bar_min   1
bar_p29   1
bar_max   1
bar_p100  1
bar_sum   1
bar_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
bar_p0    2
bar_min   2
bar_p29   2
bar_max   2
bar_p100  2
bar_sum   2
bar_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
bar_p0    4
bar_min   4
bar_p29   4
bar_max   4
bar_p100  4
bar_sum   4
bar_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
bar_p0    8
bar_min   8
bar_p29   8
bar_max   8
bar_p100  8
bar_sum   8
bar_count 1

z         4
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

a_on_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
bar_p0    
bar_min   
bar_p29   
bar_max   
bar_p100  
bar_sum   0
bar_count 0

mlr --oxtab merge-fields -i -k -a p0,min,p29,max,p100,sum,count -c in_,out_ ./reg_test/input/merge-fields-abxy.dkvp
a_in_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 1

a_on_x    1
a_out_x   2
b_in_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

z 2

a_on_x    1
a_oot_x   2
b_in_y    4
b_out_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_out_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_on_x    1
a_out_x   2
b_in_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

a_in_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_in_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1.000000
a_x_min   1
a_x_p29   1.290000
a_x_max   2
a_x_p100  2
a_x_sum   3
a_x_count 2

z 3

a_in_x    1
a_oot_x   2
b_on_y    4
b_oot_x   8
a_x_p0    1
a_x_min   1
a_x_p29   1
a_x_max   1
a_x_p100  1
a_x_sum   1
a_x_count 1

a_on_x    1
a_out_x   2
b_on_y    4
b_oot_x   8
a_x_p0    2
a_x_min   2
a_x_p29   2
a_x_max   2
a_x_p100  2
a_x_sum   2
a_x_count 1

a_on_x    1
a_oot_x   2
b_in_y    4
b_oot_x   8
b_y_p0    4
b_y_min   4
b_y_p29   4
b_y_max   4
b_y_p100  4
b_y_sum   4
b_y_count 1

a_on_x    1
a_oot_x   2
b_on_y    4
b_out_x   8
b_x_p0    8
b_x_min   8
b_x_p29   8
b_x_max   8
b_x_p100  8
b_x_sum   8
b_x_count 1

z 4

a_on_x  1
a_oot_x 2
b_on_y  4
b_oot_x 8


================================================================
NON-INTERPOLATED AND INTERPOLATED PERCENTILES

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 1 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  0
x_p35  0
x_p36  0
x_p37  0
x_p38  0
x_p39  0
x_p40  0
x_p41  0
x_p42  0
x_p43  0
x_p44  0
x_p45  0
x_p46  0
x_p47  0
x_p48  0
x_p49  0
x_p50  0
x_p51  0
x_p52  0
x_p53  0
x_p54  0
x_p55  0
x_p56  0
x_p57  0
x_p58  0
x_p59  0
x_p60  0
x_p61  0
x_p62  0
x_p63  0
x_p64  0
x_p65  0
x_p66  0
x_p67  0
x_p68  0
x_p69  0
x_p70  0
x_p71  0
x_p72  0
x_p73  0
x_p74  0
x_p75  0
x_p76  0
x_p77  0
x_p78  0
x_p79  0
x_p80  0
x_p81  0
x_p82  0
x_p83  0
x_p84  0
x_p85  0
x_p86  0
x_p87  0
x_p88  0
x_p89  0
x_p90  0
x_p91  0
x_p92  0
x_p93  0
x_p94  0
x_p95  0
x_p96  0
x_p97  0
x_p98  0
x_p99  0
x_p100 0

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 2 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  0
x_p35  0
x_p36  0
x_p37  0
x_p38  0
x_p39  0
x_p40  0
x_p41  0
x_p42  0
x_p43  0
x_p44  0
x_p45  0
x_p46  0
x_p47  0
x_p48  0
x_p49  0
x_p50  1
x_p51  1
x_p52  1
x_p53  1
x_p54  1
x_p55  1
x_p56  1
x_p57  1
x_p58  1
x_p59  1
x_p60  1
x_p61  1
x_p62  1
x_p63  1
x_p64  1
x_p65  1
x_p66  1
x_p67  1
x_p68  1
x_p69  1
x_p70  1
x_p71  1
x_p72  1
x_p73  1
x_p74  1
x_p75  1
x_p76  1
x_p77  1
x_p78  1
x_p79  1
x_p80  1
x_p81  1
x_p82  1
x_p83  1
x_p84  1
x_p85  1
x_p86  1
x_p87  1
x_p88  1
x_p89  1
x_p90  1
x_p91  1
x_p92  1
x_p93  1
x_p94  1
x_p95  1
x_p96  1
x_p97  1
x_p98  1
x_p99  1
x_p100 1

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 3 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  1
x_p35  1
x_p36  1
x_p37  1
x_p38  1
x_p39  1
x_p40  1
x_p41  1
x_p42  1
x_p43  1
x_p44  1
x_p45  1
x_p46  1
x_p47  1
x_p48  1
x_p49  1
x_p50  1
x_p51  1
x_p52  1
x_p53  1
x_p54  1
x_p55  1
x_p56  1
x_p57  1
x_p58  1
x_p59  1
x_p60  1
x_p61  1
x_p62  1
x_p63  1
x_p64  1
x_p65  1
x_p66  1
x_p67  2
x_p68  2
x_p69  2
x_p70  2
x_p71  2
x_p72  2
x_p73  2
x_p74  2
x_p75  2
x_p76  2
x_p77  2
x_p78  2
x_p79  2
x_p80  2
x_p81  2
x_p82  2
x_p83  2
x_p84  2
x_p85  2
x_p86  2
x_p87  2
x_p88  2
x_p89  2
x_p90  2
x_p91  2
x_p92  2
x_p93  2
x_p94  2
x_p95  2
x_p96  2
x_p97  2
x_p98  2
x_p99  2
x_p100 2

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 4 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  1
x_p30  1
x_p31  1
x_p32  1
x_p33  1
x_p34  1
x_p35  1
x_p36  1
x_p37  1
x_p38  1
x_p39  1
x_p40  1
x_p41  1
x_p42  1
x_p43  1
x_p44  1
x_p45  1
x_p46  1
x_p47  1
x_p48  1
x_p49  1
x_p50  2
x_p51  2
x_p52  2
x_p53  2
x_p54  2
x_p55  2
x_p56  2
x_p57  2
x_p58  2
x_p59  2
x_p60  2
x_p61  2
x_p62  2
x_p63  2
x_p64  2
x_p65  2
x_p66  2
x_p67  2
x_p68  2
x_p69  2
x_p70  2
x_p71  2
x_p72  2
x_p73  2
x_p74  2
x_p75  3
x_p76  3
x_p77  3
x_p78  3
x_p79  3
x_p80  3
x_p81  3
x_p82  3
x_p83  3
x_p84  3
x_p85  3
x_p86  3
x_p87  3
x_p88  3
x_p89  3
x_p90  3
x_p91  3
x_p92  3
x_p93  3
x_p94  3
x_p95  3
x_p96  3
x_p97  3
x_p98  3
x_p99  3
x_p100 3

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 5 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  1
x_p30  1
x_p31  1
x_p32  1
x_p33  1
x_p34  1
x_p35  1
x_p36  1
x_p37  1
x_p38  1
x_p39  1
x_p40  2
x_p41  2
x_p42  2
x_p43  2
x_p44  2
x_p45  2
x_p46  2
x_p47  2
x_p48  2
x_p49  2
x_p50  2
x_p51  2
x_p52  2
x_p53  2
x_p54  2
x_p55  2
x_p56  2
x_p57  2
x_p58  2
x_p59  2
x_p60  3
x_p61  3
x_p62  3
x_p63  3
x_p64  3
x_p65  3
x_p66  3
x_p67  3
x_p68  3
x_p69  3
x_p70  3
x_p71  3
x_p72  3
x_p73  3
x_p74  3
x_p75  3
x_p76  3
x_p77  3
x_p78  3
x_p79  3
x_p80  4
x_p81  4
x_p82  4
x_p83  4
x_p84  4
x_p85  4
x_p86  4
x_p87  4
x_p88  4
x_p89  4
x_p90  4
x_p91  4
x_p92  4
x_p93  4
x_p94  4
x_p95  4
x_p96  4
x_p97  4
x_p98  4
x_p99  4
x_p100 4

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 6 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  1
x_p30  1
x_p31  1
x_p32  1
x_p33  1
x_p34  2
x_p35  2
x_p36  2
x_p37  2
x_p38  2
x_p39  2
x_p40  2
x_p41  2
x_p42  2
x_p43  2
x_p44  2
x_p45  2
x_p46  2
x_p47  2
x_p48  2
x_p49  2
x_p50  3
x_p51  3
x_p52  3
x_p53  3
x_p54  3
x_p55  3
x_p56  3
x_p57  3
x_p58  3
x_p59  3
x_p60  3
x_p61  3
x_p62  3
x_p63  3
x_p64  3
x_p65  3
x_p66  3
x_p67  4
x_p68  4
x_p69  4
x_p70  4
x_p71  4
x_p72  4
x_p73  4
x_p74  4
x_p75  4
x_p76  4
x_p77  4
x_p78  4
x_p79  4
x_p80  4
x_p81  4
x_p82  4
x_p83  4
x_p84  5
x_p85  5
x_p86  5
x_p87  5
x_p88  5
x_p89  5
x_p90  5
x_p91  5
x_p92  5
x_p93  5
x_p94  5
x_p95  5
x_p96  5
x_p97  5
x_p98  5
x_p99  5
x_p100 5

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 7 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  1
x_p26  1
x_p27  1
x_p28  1
x_p29  2
x_p30  2
x_p31  2
x_p32  2
x_p33  2
x_p34  2
x_p35  2
x_p36  2
x_p37  2
x_p38  2
x_p39  2
x_p40  2
x_p41  2
x_p42  2
x_p43  3
x_p44  3
x_p45  3
x_p46  3
x_p47  3
x_p48  3
x_p49  3
x_p50  3
x_p51  3
x_p52  3
x_p53  3
x_p54  3
x_p55  3
x_p56  3
x_p57  3
x_p58  4
x_p59  4
x_p60  4
x_p61  4
x_p62  4
x_p63  4
x_p64  4
x_p65  4
x_p66  4
x_p67  4
x_p68  4
x_p69  4
x_p70  4
x_p71  4
x_p72  5
x_p73  5
x_p74  5
x_p75  5
x_p76  5
x_p77  5
x_p78  5
x_p79  5
x_p80  5
x_p81  5
x_p82  5
x_p83  5
x_p84  5
x_p85  5
x_p86  6
x_p87  6
x_p88  6
x_p89  6
x_p90  6
x_p91  6
x_p92  6
x_p93  6
x_p94  6
x_p95  6
x_p96  6
x_p97  6
x_p98  6
x_p99  6
x_p100 6

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 8 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  1
x_p24  1
x_p25  2
x_p26  2
x_p27  2
x_p28  2
x_p29  2
x_p30  2
x_p31  2
x_p32  2
x_p33  2
x_p34  2
x_p35  2
x_p36  2
x_p37  2
x_p38  3
x_p39  3
x_p40  3
x_p41  3
x_p42  3
x_p43  3
x_p44  3
x_p45  3
x_p46  3
x_p47  3
x_p48  3
x_p49  3
x_p50  4
x_p51  4
x_p52  4
x_p53  4
x_p54  4
x_p55  4
x_p56  4
x_p57  4
x_p58  4
x_p59  4
x_p60  4
x_p61  4
x_p62  4
x_p63  5
x_p64  5
x_p65  5
x_p66  5
x_p67  5
x_p68  5
x_p69  5
x_p70  5
x_p71  5
x_p72  5
x_p73  5
x_p74  5
x_p75  6
x_p76  6
x_p77  6
x_p78  6
x_p79  6
x_p80  6
x_p81  6
x_p82  6
x_p83  6
x_p84  6
x_p85  6
x_p86  6
x_p87  6
x_p88  7
x_p89  7
x_p90  7
x_p91  7
x_p92  7
x_p93  7
x_p94  7
x_p95  7
x_p96  7
x_p97  7
x_p98  7
x_p99  7
x_p100 7

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 9 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  1
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  1
x_p21  1
x_p22  1
x_p23  2
x_p24  2
x_p25  2
x_p26  2
x_p27  2
x_p28  2
x_p29  2
x_p30  2
x_p31  2
x_p32  2
x_p33  2
x_p34  3
x_p35  3
x_p36  3
x_p37  3
x_p38  3
x_p39  3
x_p40  3
x_p41  3
x_p42  3
x_p43  3
x_p44  3
x_p45  4
x_p46  4
x_p47  4
x_p48  4
x_p49  4
x_p50  4
x_p51  4
x_p52  4
x_p53  4
x_p54  4
x_p55  4
x_p56  5
x_p57  5
x_p58  5
x_p59  5
x_p60  5
x_p61  5
x_p62  5
x_p63  5
x_p64  5
x_p65  5
x_p66  5
x_p67  6
x_p68  6
x_p69  6
x_p70  6
x_p71  6
x_p72  6
x_p73  6
x_p74  6
x_p75  6
x_p76  6
x_p77  6
x_p78  7
x_p79  7
x_p80  7
x_p81  7
x_p82  7
x_p83  7
x_p84  7
x_p85  7
x_p86  7
x_p87  7
x_p88  7
x_p89  8
x_p90  8
x_p91  8
x_p92  8
x_p93  8
x_p94  8
x_p95  8
x_p96  8
x_p97  8
x_p98  8
x_p99  8
x_p100 8

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 10 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  1
x_p11  1
x_p12  1
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  1
x_p20  2
x_p21  2
x_p22  2
x_p23  2
x_p24  2
x_p25  2
x_p26  2
x_p27  2
x_p28  2
x_p29  2
x_p30  3
x_p31  3
x_p32  3
x_p33  3
x_p34  3
x_p35  3
x_p36  3
x_p37  3
x_p38  3
x_p39  3
x_p40  4
x_p41  4
x_p42  4
x_p43  4
x_p44  4
x_p45  4
x_p46  4
x_p47  4
x_p48  4
x_p49  4
x_p50  5
x_p51  5
x_p52  5
x_p53  5
x_p54  5
x_p55  5
x_p56  5
x_p57  5
x_p58  5
x_p59  5
x_p60  6
x_p61  6
x_p62  6
x_p63  6
x_p64  6
x_p65  6
x_p66  6
x_p67  6
x_p68  6
x_p69  6
x_p70  7
x_p71  7
x_p72  7
x_p73  7
x_p74  7
x_p75  7
x_p76  7
x_p77  7
x_p78  7
x_p79  7
x_p80  8
x_p81  8
x_p82  8
x_p83  8
x_p84  8
x_p85  8
x_p86  8
x_p87  8
x_p88  8
x_p89  8
x_p90  9
x_p91  9
x_p92  9
x_p93  9
x_p94  9
x_p95  9
x_p96  9
x_p97  9
x_p98  9
x_p99  9
x_p100 9

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 11 then stats1 -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  1
x_p11  1
x_p12  1
x_p13  1
x_p14  1
x_p15  1
x_p16  1
x_p17  1
x_p18  1
x_p19  2
x_p20  2
x_p21  2
x_p22  2
x_p23  2
x_p24  2
x_p25  2
x_p26  2
x_p27  2
x_p28  3
x_p29  3
x_p30  3
x_p31  3
x_p32  3
x_p33  3
x_p34  3
x_p35  3
x_p36  3
x_p37  4
x_p38  4
x_p39  4
x_p40  4
x_p41  4
x_p42  4
x_p43  4
x_p44  4
x_p45  4
x_p46  5
x_p47  5
x_p48  5
x_p49  5
x_p50  5
x_p51  5
x_p52  5
x_p53  5
x_p54  5
x_p55  6
x_p56  6
x_p57  6
x_p58  6
x_p59  6
x_p60  6
x_p61  6
x_p62  6
x_p63  6
x_p64  7
x_p65  7
x_p66  7
x_p67  7
x_p68  7
x_p69  7
x_p70  7
x_p71  7
x_p72  7
x_p73  8
x_p74  8
x_p75  8
x_p76  8
x_p77  8
x_p78  8
x_p79  8
x_p80  8
x_p81  8
x_p82  9
x_p83  9
x_p84  9
x_p85  9
x_p86  9
x_p87  9
x_p88  9
x_p89  9
x_p90  9
x_p91  10
x_p92  10
x_p93  10
x_p94  10
x_p95  10
x_p96  10
x_p97  10
x_p98  10
x_p99  10
x_p100 10

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 1 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0
x_p01  0
x_p02  0
x_p03  0
x_p04  0
x_p05  0
x_p06  0
x_p07  0
x_p08  0
x_p09  0
x_p10  0
x_p11  0
x_p12  0
x_p13  0
x_p14  0
x_p15  0
x_p16  0
x_p17  0
x_p18  0
x_p19  0
x_p20  0
x_p21  0
x_p22  0
x_p23  0
x_p24  0
x_p25  0
x_p26  0
x_p27  0
x_p28  0
x_p29  0
x_p30  0
x_p31  0
x_p32  0
x_p33  0
x_p34  0
x_p35  0
x_p36  0
x_p37  0
x_p38  0
x_p39  0
x_p40  0
x_p41  0
x_p42  0
x_p43  0
x_p44  0
x_p45  0
x_p46  0
x_p47  0
x_p48  0
x_p49  0
x_p50  0
x_p51  0
x_p52  0
x_p53  0
x_p54  0
x_p55  0
x_p56  0
x_p57  0
x_p58  0
x_p59  0
x_p60  0
x_p61  0
x_p62  0
x_p63  0
x_p64  0
x_p65  0
x_p66  0
x_p67  0
x_p68  0
x_p69  0
x_p70  0
x_p71  0
x_p72  0
x_p73  0
x_p74  0
x_p75  0
x_p76  0
x_p77  0
x_p78  0
x_p79  0
x_p80  0
x_p81  0
x_p82  0
x_p83  0
x_p84  0
x_p85  0
x_p86  0
x_p87  0
x_p88  0
x_p89  0
x_p90  0
x_p91  0
x_p92  0
x_p93  0
x_p94  0
x_p95  0
x_p96  0
x_p97  0
x_p98  0
x_p99  0
x_p100 0

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 2 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.010000
x_p02  0.020000
x_p03  0.030000
x_p04  0.040000
x_p05  0.050000
x_p06  0.060000
x_p07  0.070000
x_p08  0.080000
x_p09  0.090000
x_p10  0.100000
x_p11  0.110000
x_p12  0.120000
x_p13  0.130000
x_p14  0.140000
x_p15  0.150000
x_p16  0.160000
x_p17  0.170000
x_p18  0.180000
x_p19  0.190000
x_p20  0.200000
x_p21  0.210000
x_p22  0.220000
x_p23  0.230000
x_p24  0.240000
x_p25  0.250000
x_p26  0.260000
x_p27  0.270000
x_p28  0.280000
x_p29  0.290000
x_p30  0.300000
x_p31  0.310000
x_p32  0.320000
x_p33  0.330000
x_p34  0.340000
x_p35  0.350000
x_p36  0.360000
x_p37  0.370000
x_p38  0.380000
x_p39  0.390000
x_p40  0.400000
x_p41  0.410000
x_p42  0.420000
x_p43  0.430000
x_p44  0.440000
x_p45  0.450000
x_p46  0.460000
x_p47  0.470000
x_p48  0.480000
x_p49  0.490000
x_p50  0.500000
x_p51  0.510000
x_p52  0.520000
x_p53  0.530000
x_p54  0.540000
x_p55  0.550000
x_p56  0.560000
x_p57  0.570000
x_p58  0.580000
x_p59  0.590000
x_p60  0.600000
x_p61  0.610000
x_p62  0.620000
x_p63  0.630000
x_p64  0.640000
x_p65  0.650000
x_p66  0.660000
x_p67  0.670000
x_p68  0.680000
x_p69  0.690000
x_p70  0.700000
x_p71  0.710000
x_p72  0.720000
x_p73  0.730000
x_p74  0.740000
x_p75  0.750000
x_p76  0.760000
x_p77  0.770000
x_p78  0.780000
x_p79  0.790000
x_p80  0.800000
x_p81  0.810000
x_p82  0.820000
x_p83  0.830000
x_p84  0.840000
x_p85  0.850000
x_p86  0.860000
x_p87  0.870000
x_p88  0.880000
x_p89  0.890000
x_p90  0.900000
x_p91  0.910000
x_p92  0.920000
x_p93  0.930000
x_p94  0.940000
x_p95  0.950000
x_p96  0.960000
x_p97  0.970000
x_p98  0.980000
x_p99  0.990000
x_p100 1

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 3 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.020000
x_p02  0.040000
x_p03  0.060000
x_p04  0.080000
x_p05  0.100000
x_p06  0.120000
x_p07  0.140000
x_p08  0.160000
x_p09  0.180000
x_p10  0.200000
x_p11  0.220000
x_p12  0.240000
x_p13  0.260000
x_p14  0.280000
x_p15  0.300000
x_p16  0.320000
x_p17  0.340000
x_p18  0.360000
x_p19  0.380000
x_p20  0.400000
x_p21  0.420000
x_p22  0.440000
x_p23  0.460000
x_p24  0.480000
x_p25  0.500000
x_p26  0.520000
x_p27  0.540000
x_p28  0.560000
x_p29  0.580000
x_p30  0.600000
x_p31  0.620000
x_p32  0.640000
x_p33  0.660000
x_p34  0.680000
x_p35  0.700000
x_p36  0.720000
x_p37  0.740000
x_p38  0.760000
x_p39  0.780000
x_p40  0.800000
x_p41  0.820000
x_p42  0.840000
x_p43  0.860000
x_p44  0.880000
x_p45  0.900000
x_p46  0.920000
x_p47  0.940000
x_p48  0.960000
x_p49  0.980000
x_p50  1.000000
x_p51  1.020000
x_p52  1.040000
x_p53  1.060000
x_p54  1.080000
x_p55  1.100000
x_p56  1.120000
x_p57  1.140000
x_p58  1.160000
x_p59  1.180000
x_p60  1.200000
x_p61  1.220000
x_p62  1.240000
x_p63  1.260000
x_p64  1.280000
x_p65  1.300000
x_p66  1.320000
x_p67  1.340000
x_p68  1.360000
x_p69  1.380000
x_p70  1.400000
x_p71  1.420000
x_p72  1.440000
x_p73  1.460000
x_p74  1.480000
x_p75  1.500000
x_p76  1.520000
x_p77  1.540000
x_p78  1.560000
x_p79  1.580000
x_p80  1.600000
x_p81  1.620000
x_p82  1.640000
x_p83  1.660000
x_p84  1.680000
x_p85  1.700000
x_p86  1.720000
x_p87  1.740000
x_p88  1.760000
x_p89  1.780000
x_p90  1.800000
x_p91  1.820000
x_p92  1.840000
x_p93  1.860000
x_p94  1.880000
x_p95  1.900000
x_p96  1.920000
x_p97  1.940000
x_p98  1.960000
x_p99  1.980000
x_p100 2

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 4 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.030000
x_p02  0.060000
x_p03  0.090000
x_p04  0.120000
x_p05  0.150000
x_p06  0.180000
x_p07  0.210000
x_p08  0.240000
x_p09  0.270000
x_p10  0.300000
x_p11  0.330000
x_p12  0.360000
x_p13  0.390000
x_p14  0.420000
x_p15  0.450000
x_p16  0.480000
x_p17  0.510000
x_p18  0.540000
x_p19  0.570000
x_p20  0.600000
x_p21  0.630000
x_p22  0.660000
x_p23  0.690000
x_p24  0.720000
x_p25  0.750000
x_p26  0.780000
x_p27  0.810000
x_p28  0.840000
x_p29  0.870000
x_p30  0.900000
x_p31  0.930000
x_p32  0.960000
x_p33  0.990000
x_p34  1.020000
x_p35  1.050000
x_p36  1.080000
x_p37  1.110000
x_p38  1.140000
x_p39  1.170000
x_p40  1.200000
x_p41  1.230000
x_p42  1.260000
x_p43  1.290000
x_p44  1.320000
x_p45  1.350000
x_p46  1.380000
x_p47  1.410000
x_p48  1.440000
x_p49  1.470000
x_p50  1.500000
x_p51  1.530000
x_p52  1.560000
x_p53  1.590000
x_p54  1.620000
x_p55  1.650000
x_p56  1.680000
x_p57  1.710000
x_p58  1.740000
x_p59  1.770000
x_p60  1.800000
x_p61  1.830000
x_p62  1.860000
x_p63  1.890000
x_p64  1.920000
x_p65  1.950000
x_p66  1.980000
x_p67  2.010000
x_p68  2.040000
x_p69  2.070000
x_p70  2.100000
x_p71  2.130000
x_p72  2.160000
x_p73  2.190000
x_p74  2.220000
x_p75  2.250000
x_p76  2.280000
x_p77  2.310000
x_p78  2.340000
x_p79  2.370000
x_p80  2.400000
x_p81  2.430000
x_p82  2.460000
x_p83  2.490000
x_p84  2.520000
x_p85  2.550000
x_p86  2.580000
x_p87  2.610000
x_p88  2.640000
x_p89  2.670000
x_p90  2.700000
x_p91  2.730000
x_p92  2.760000
x_p93  2.790000
x_p94  2.820000
x_p95  2.850000
x_p96  2.880000
x_p97  2.910000
x_p98  2.940000
x_p99  2.970000
x_p100 3

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 5 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.040000
x_p02  0.080000
x_p03  0.120000
x_p04  0.160000
x_p05  0.200000
x_p06  0.240000
x_p07  0.280000
x_p08  0.320000
x_p09  0.360000
x_p10  0.400000
x_p11  0.440000
x_p12  0.480000
x_p13  0.520000
x_p14  0.560000
x_p15  0.600000
x_p16  0.640000
x_p17  0.680000
x_p18  0.720000
x_p19  0.760000
x_p20  0.800000
x_p21  0.840000
x_p22  0.880000
x_p23  0.920000
x_p24  0.960000
x_p25  1.000000
x_p26  1.040000
x_p27  1.080000
x_p28  1.120000
x_p29  1.160000
x_p30  1.200000
x_p31  1.240000
x_p32  1.280000
x_p33  1.320000
x_p34  1.360000
x_p35  1.400000
x_p36  1.440000
x_p37  1.480000
x_p38  1.520000
x_p39  1.560000
x_p40  1.600000
x_p41  1.640000
x_p42  1.680000
x_p43  1.720000
x_p44  1.760000
x_p45  1.800000
x_p46  1.840000
x_p47  1.880000
x_p48  1.920000
x_p49  1.960000
x_p50  2.000000
x_p51  2.040000
x_p52  2.080000
x_p53  2.120000
x_p54  2.160000
x_p55  2.200000
x_p56  2.240000
x_p57  2.280000
x_p58  2.320000
x_p59  2.360000
x_p60  2.400000
x_p61  2.440000
x_p62  2.480000
x_p63  2.520000
x_p64  2.560000
x_p65  2.600000
x_p66  2.640000
x_p67  2.680000
x_p68  2.720000
x_p69  2.760000
x_p70  2.800000
x_p71  2.840000
x_p72  2.880000
x_p73  2.920000
x_p74  2.960000
x_p75  3.000000
x_p76  3.040000
x_p77  3.080000
x_p78  3.120000
x_p79  3.160000
x_p80  3.200000
x_p81  3.240000
x_p82  3.280000
x_p83  3.320000
x_p84  3.360000
x_p85  3.400000
x_p86  3.440000
x_p87  3.480000
x_p88  3.520000
x_p89  3.560000
x_p90  3.600000
x_p91  3.640000
x_p92  3.680000
x_p93  3.720000
x_p94  3.760000
x_p95  3.800000
x_p96  3.840000
x_p97  3.880000
x_p98  3.920000
x_p99  3.960000
x_p100 4

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 6 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.050000
x_p02  0.100000
x_p03  0.150000
x_p04  0.200000
x_p05  0.250000
x_p06  0.300000
x_p07  0.350000
x_p08  0.400000
x_p09  0.450000
x_p10  0.500000
x_p11  0.550000
x_p12  0.600000
x_p13  0.650000
x_p14  0.700000
x_p15  0.750000
x_p16  0.800000
x_p17  0.850000
x_p18  0.900000
x_p19  0.950000
x_p20  1.000000
x_p21  1.050000
x_p22  1.100000
x_p23  1.150000
x_p24  1.200000
x_p25  1.250000
x_p26  1.300000
x_p27  1.350000
x_p28  1.400000
x_p29  1.450000
x_p30  1.500000
x_p31  1.550000
x_p32  1.600000
x_p33  1.650000
x_p34  1.700000
x_p35  1.750000
x_p36  1.800000
x_p37  1.850000
x_p38  1.900000
x_p39  1.950000
x_p40  2.000000
x_p41  2.050000
x_p42  2.100000
x_p43  2.150000
x_p44  2.200000
x_p45  2.250000
x_p46  2.300000
x_p47  2.350000
x_p48  2.400000
x_p49  2.450000
x_p50  2.500000
x_p51  2.550000
x_p52  2.600000
x_p53  2.650000
x_p54  2.700000
x_p55  2.750000
x_p56  2.800000
x_p57  2.850000
x_p58  2.900000
x_p59  2.950000
x_p60  3.000000
x_p61  3.050000
x_p62  3.100000
x_p63  3.150000
x_p64  3.200000
x_p65  3.250000
x_p66  3.300000
x_p67  3.350000
x_p68  3.400000
x_p69  3.450000
x_p70  3.500000
x_p71  3.550000
x_p72  3.600000
x_p73  3.650000
x_p74  3.700000
x_p75  3.750000
x_p76  3.800000
x_p77  3.850000
x_p78  3.900000
x_p79  3.950000
x_p80  4.000000
x_p81  4.050000
x_p82  4.100000
x_p83  4.150000
x_p84  4.200000
x_p85  4.250000
x_p86  4.300000
x_p87  4.350000
x_p88  4.400000
x_p89  4.450000
x_p90  4.500000
x_p91  4.550000
x_p92  4.600000
x_p93  4.650000
x_p94  4.700000
x_p95  4.750000
x_p96  4.800000
x_p97  4.850000
x_p98  4.900000
x_p99  4.950000
x_p100 5

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 7 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.060000
x_p02  0.120000
x_p03  0.180000
x_p04  0.240000
x_p05  0.300000
x_p06  0.360000
x_p07  0.420000
x_p08  0.480000
x_p09  0.540000
x_p10  0.600000
x_p11  0.660000
x_p12  0.720000
x_p13  0.780000
x_p14  0.840000
x_p15  0.900000
x_p16  0.960000
x_p17  1.020000
x_p18  1.080000
x_p19  1.140000
x_p20  1.200000
x_p21  1.260000
x_p22  1.320000
x_p23  1.380000
x_p24  1.440000
x_p25  1.500000
x_p26  1.560000
x_p27  1.620000
x_p28  1.680000
x_p29  1.740000
x_p30  1.800000
x_p31  1.860000
x_p32  1.920000
x_p33  1.980000
x_p34  2.040000
x_p35  2.100000
x_p36  2.160000
x_p37  2.220000
x_p38  2.280000
x_p39  2.340000
x_p40  2.400000
x_p41  2.460000
x_p42  2.520000
x_p43  2.580000
x_p44  2.640000
x_p45  2.700000
x_p46  2.760000
x_p47  2.820000
x_p48  2.880000
x_p49  2.940000
x_p50  3.000000
x_p51  3.060000
x_p52  3.120000
x_p53  3.180000
x_p54  3.240000
x_p55  3.300000
x_p56  3.360000
x_p57  3.420000
x_p58  3.480000
x_p59  3.540000
x_p60  3.600000
x_p61  3.660000
x_p62  3.720000
x_p63  3.780000
x_p64  3.840000
x_p65  3.900000
x_p66  3.960000
x_p67  4.020000
x_p68  4.080000
x_p69  4.140000
x_p70  4.200000
x_p71  4.260000
x_p72  4.320000
x_p73  4.380000
x_p74  4.440000
x_p75  4.500000
x_p76  4.560000
x_p77  4.620000
x_p78  4.680000
x_p79  4.740000
x_p80  4.800000
x_p81  4.860000
x_p82  4.920000
x_p83  4.980000
x_p84  5.040000
x_p85  5.100000
x_p86  5.160000
x_p87  5.220000
x_p88  5.280000
x_p89  5.340000
x_p90  5.400000
x_p91  5.460000
x_p92  5.520000
x_p93  5.580000
x_p94  5.640000
x_p95  5.700000
x_p96  5.760000
x_p97  5.820000
x_p98  5.880000
x_p99  5.940000
x_p100 6

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 8 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.070000
x_p02  0.140000
x_p03  0.210000
x_p04  0.280000
x_p05  0.350000
x_p06  0.420000
x_p07  0.490000
x_p08  0.560000
x_p09  0.630000
x_p10  0.700000
x_p11  0.770000
x_p12  0.840000
x_p13  0.910000
x_p14  0.980000
x_p15  1.050000
x_p16  1.120000
x_p17  1.190000
x_p18  1.260000
x_p19  1.330000
x_p20  1.400000
x_p21  1.470000
x_p22  1.540000
x_p23  1.610000
x_p24  1.680000
x_p25  1.750000
x_p26  1.820000
x_p27  1.890000
x_p28  1.960000
x_p29  2.030000
x_p30  2.100000
x_p31  2.170000
x_p32  2.240000
x_p33  2.310000
x_p34  2.380000
x_p35  2.450000
x_p36  2.520000
x_p37  2.590000
x_p38  2.660000
x_p39  2.730000
x_p40  2.800000
x_p41  2.870000
x_p42  2.940000
x_p43  3.010000
x_p44  3.080000
x_p45  3.150000
x_p46  3.220000
x_p47  3.290000
x_p48  3.360000
x_p49  3.430000
x_p50  3.500000
x_p51  3.570000
x_p52  3.640000
x_p53  3.710000
x_p54  3.780000
x_p55  3.850000
x_p56  3.920000
x_p57  3.990000
x_p58  4.060000
x_p59  4.130000
x_p60  4.200000
x_p61  4.270000
x_p62  4.340000
x_p63  4.410000
x_p64  4.480000
x_p65  4.550000
x_p66  4.620000
x_p67  4.690000
x_p68  4.760000
x_p69  4.830000
x_p70  4.900000
x_p71  4.970000
x_p72  5.040000
x_p73  5.110000
x_p74  5.180000
x_p75  5.250000
x_p76  5.320000
x_p77  5.390000
x_p78  5.460000
x_p79  5.530000
x_p80  5.600000
x_p81  5.670000
x_p82  5.740000
x_p83  5.810000
x_p84  5.880000
x_p85  5.950000
x_p86  6.020000
x_p87  6.090000
x_p88  6.160000
x_p89  6.230000
x_p90  6.300000
x_p91  6.370000
x_p92  6.440000
x_p93  6.510000
x_p94  6.580000
x_p95  6.650000
x_p96  6.720000
x_p97  6.790000
x_p98  6.860000
x_p99  6.930000
x_p100 7

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 9 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.080000
x_p02  0.160000
x_p03  0.240000
x_p04  0.320000
x_p05  0.400000
x_p06  0.480000
x_p07  0.560000
x_p08  0.640000
x_p09  0.720000
x_p10  0.800000
x_p11  0.880000
x_p12  0.960000
x_p13  1.040000
x_p14  1.120000
x_p15  1.200000
x_p16  1.280000
x_p17  1.360000
x_p18  1.440000
x_p19  1.520000
x_p20  1.600000
x_p21  1.680000
x_p22  1.760000
x_p23  1.840000
x_p24  1.920000
x_p25  2.000000
x_p26  2.080000
x_p27  2.160000
x_p28  2.240000
x_p29  2.320000
x_p30  2.400000
x_p31  2.480000
x_p32  2.560000
x_p33  2.640000
x_p34  2.720000
x_p35  2.800000
x_p36  2.880000
x_p37  2.960000
x_p38  3.040000
x_p39  3.120000
x_p40  3.200000
x_p41  3.280000
x_p42  3.360000
x_p43  3.440000
x_p44  3.520000
x_p45  3.600000
x_p46  3.680000
x_p47  3.760000
x_p48  3.840000
x_p49  3.920000
x_p50  4.000000
x_p51  4.080000
x_p52  4.160000
x_p53  4.240000
x_p54  4.320000
x_p55  4.400000
x_p56  4.480000
x_p57  4.560000
x_p58  4.640000
x_p59  4.720000
x_p60  4.800000
x_p61  4.880000
x_p62  4.960000
x_p63  5.040000
x_p64  5.120000
x_p65  5.200000
x_p66  5.280000
x_p67  5.360000
x_p68  5.440000
x_p69  5.520000
x_p70  5.600000
x_p71  5.680000
x_p72  5.760000
x_p73  5.840000
x_p74  5.920000
x_p75  6.000000
x_p76  6.080000
x_p77  6.160000
x_p78  6.240000
x_p79  6.320000
x_p80  6.400000
x_p81  6.480000
x_p82  6.560000
x_p83  6.640000
x_p84  6.720000
x_p85  6.800000
x_p86  6.880000
x_p87  6.960000
x_p88  7.040000
x_p89  7.120000
x_p90  7.200000
x_p91  7.280000
x_p92  7.360000
x_p93  7.440000
x_p94  7.520000
x_p95  7.600000
x_p96  7.680000
x_p97  7.760000
x_p98  7.840000
x_p99  7.920000
x_p100 8

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 10 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.090000
x_p02  0.180000
x_p03  0.270000
x_p04  0.360000
x_p05  0.450000
x_p06  0.540000
x_p07  0.630000
x_p08  0.720000
x_p09  0.810000
x_p10  0.900000
x_p11  0.990000
x_p12  1.080000
x_p13  1.170000
x_p14  1.260000
x_p15  1.350000
x_p16  1.440000
x_p17  1.530000
x_p18  1.620000
x_p19  1.710000
x_p20  1.800000
x_p21  1.890000
x_p22  1.980000
x_p23  2.070000
x_p24  2.160000
x_p25  2.250000
x_p26  2.340000
x_p27  2.430000
x_p28  2.520000
x_p29  2.610000
x_p30  2.700000
x_p31  2.790000
x_p32  2.880000
x_p33  2.970000
x_p34  3.060000
x_p35  3.150000
x_p36  3.240000
x_p37  3.330000
x_p38  3.420000
x_p39  3.510000
x_p40  3.600000
x_p41  3.690000
x_p42  3.780000
x_p43  3.870000
x_p44  3.960000
x_p45  4.050000
x_p46  4.140000
x_p47  4.230000
x_p48  4.320000
x_p49  4.410000
x_p50  4.500000
x_p51  4.590000
x_p52  4.680000
x_p53  4.770000
x_p54  4.860000
x_p55  4.950000
x_p56  5.040000
x_p57  5.130000
x_p58  5.220000
x_p59  5.310000
x_p60  5.400000
x_p61  5.490000
x_p62  5.580000
x_p63  5.670000
x_p64  5.760000
x_p65  5.850000
x_p66  5.940000
x_p67  6.030000
x_p68  6.120000
x_p69  6.210000
x_p70  6.300000
x_p71  6.390000
x_p72  6.480000
x_p73  6.570000
x_p74  6.660000
x_p75  6.750000
x_p76  6.840000
x_p77  6.930000
x_p78  7.020000
x_p79  7.110000
x_p80  7.200000
x_p81  7.290000
x_p82  7.380000
x_p83  7.470000
x_p84  7.560000
x_p85  7.650000
x_p86  7.740000
x_p87  7.830000
x_p88  7.920000
x_p89  8.010000
x_p90  8.100000
x_p91  8.190000
x_p92  8.280000
x_p93  8.370000
x_p94  8.460000
x_p95  8.550000
x_p96  8.640000
x_p97  8.730000
x_p98  8.820000
x_p99  8.910000
x_p100 9

mlr --from ./reg_test/input/x0to10.dat --oxtab head -n 11 then stats1 -i -f x -a p00,p01,p02,p03,p04,p05,p06,p07,p08,p09,p10,p11,p12,p13,p14,p15,p16,p17,p18,p19,p20,p21,p22,p23,p24,p25,p26,p27,p28,p29,p30,p31,p32,p33,p34,p35,p36,p37,p38,p39,p40,p41,p42,p43,p44,p45,p46,p47,p48,p49,p50,p51,p52,p53,p54,p55,p56,p57,p58,p59,p60,p61,p62,p63,p64,p65,p66,p67,p68,p69,p70,p71,p72,p73,p74,p75,p76,p77,p78,p79,p80,p81,p82,p83,p84,p85,p86,p87,p88,p89,p90,p91,p92,p93,p94,p95,p96,p97,p98,p99,p100
x_p00  0.000000
x_p01  0.100000
x_p02  0.200000
x_p03  0.300000
x_p04  0.400000
x_p05  0.500000
x_p06  0.600000
x_p07  0.700000
x_p08  0.800000
x_p09  0.900000
x_p10  1.000000
x_p11  1.100000
x_p12  1.200000
x_p13  1.300000
x_p14  1.400000
x_p15  1.500000
x_p16  1.600000
x_p17  1.700000
x_p18  1.800000
x_p19  1.900000
x_p20  2.000000
x_p21  2.100000
x_p22  2.200000
x_p23  2.300000
x_p24  2.400000
x_p25  2.500000
x_p26  2.600000
x_p27  2.700000
x_p28  2.800000
x_p29  2.900000
x_p30  3.000000
x_p31  3.100000
x_p32  3.200000
x_p33  3.300000
x_p34  3.400000
x_p35  3.500000
x_p36  3.600000
x_p37  3.700000
x_p38  3.800000
x_p39  3.900000
x_p40  4.000000
x_p41  4.100000
x_p42  4.200000
x_p43  4.300000
x_p44  4.400000
x_p45  4.500000
x_p46  4.600000
x_p47  4.700000
x_p48  4.800000
x_p49  4.900000
x_p50  5.000000
x_p51  5.100000
x_p52  5.200000
x_p53  5.300000
x_p54  5.400000
x_p55  5.500000
x_p56  5.600000
x_p57  5.700000
x_p58  5.800000
x_p59  5.900000
x_p60  6.000000
x_p61  6.100000
x_p62  6.200000
x_p63  6.300000
x_p64  6.400000
x_p65  6.500000
x_p66  6.600000
x_p67  6.700000
x_p68  6.800000
x_p69  6.900000
x_p70  7.000000
x_p71  7.100000
x_p72  7.200000
x_p73  7.300000
x_p74  7.400000
x_p75  7.500000
x_p76  7.600000
x_p77  7.700000
x_p78  7.800000
x_p79  7.900000
x_p80  8.000000
x_p81  8.100000
x_p82  8.200000
x_p83  8.300000
x_p84  8.400000
x_p85  8.500000
x_p86  8.600000
x_p87  8.700000
x_p88  8.800000
x_p89  8.900000
x_p90  9.000000
x_p91  9.100000
x_p92  9.200000
x_p93  9.300000
x_p94  9.400000
x_p95  9.500000
x_p96  9.600000
x_p97  9.700000
x_p98  9.800000
x_p99  9.900000
x_p100 10


================================================================
DSL OPERATOR ASSOCIATIVITY

mlr put -v $x = 1 || 2 || 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="||", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 || 2 || 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="||", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ^^ 2 ^^ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^^", type=operator:
            text="^^", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ^^ 2 ^^ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^^", type=operator:
        text="^^", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 && 2 && 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="&&", type=operator:
            text="&&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 && 2 && 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&&", type=operator:
        text="&&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  == 2  == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="==", type=operator:
            text="==", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  == 2  == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="==", type=operator:
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  != 2  != 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="!=", type=operator:
            text="!=", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  != 2  != 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="!=", type=operator:
        text="!=", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  =~ 2  =~ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="=~", type=operator:
            text="=~", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  =~ 2  =~ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="=~", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 !=~ 2 !=~ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="!=~", type=operator:
            text="!=~", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 !=~ 2 !=~ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="!=~", type=operator:
        text="!=~", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  == 2  != 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="!=", type=operator:
            text="==", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  == 2  != 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="!=", type=operator:
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  != 2  == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="==", type=operator:
            text="!=", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  != 2  == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="==", type=operator:
        text="!=", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  <  2  <  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<", type=operator:
            text="<", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  <  2  <  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<", type=operator:
        text="<", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  <= 2  <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<=", type=operator:
            text="<=", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  <= 2  <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<=", type=operator:
        text="<=", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  >  2  >  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text=">", type=operator:
            text=">", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  >  2  >  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text=">", type=operator:
        text=">", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  >= 2  >= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text=">=", type=operator:
            text=">=", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  >= 2  >= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text=">=", type=operator:
        text=">=", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  <  2  <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<=", type=operator:
            text="<", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  <  2  <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<=", type=operator:
        text="<", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  <= 2  <  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<", type=operator:
            text="<=", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  <= 2  <  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<", type=operator:
        text="<=", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 |  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="|", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 |  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ^  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^", type=operator:
            text="^", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ^  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^", type=operator:
        text="^", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 &  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="&", type=operator:
            text="&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 &  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&", type=operator:
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 |  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="&", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 |  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="1", type=strnum_literal.
        text="&", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 |  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="^", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 |  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="1", type=strnum_literal.
        text="^", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 ^  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="^", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ^  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="^", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ^  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^", type=operator:
            text="1", type=strnum_literal.
            text="&", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 ^  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^", type=operator:
        text="1", type=strnum_literal.
        text="&", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 &  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 &  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 &  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^", type=operator:
            text="&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 &  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^", type=operator:
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  << 2  << 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<<", type=operator:
            text="<<", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  << 2  << 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<<", type=operator:
        text="<<", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  >> 2  >> 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text=">>", type=operator:
            text=">>", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  >> 2  >> 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text=">>", type=operator:
        text=">>", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  << 2  >> 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text=">>", type=operator:
            text="<<", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  << 2  >> 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text=">>", type=operator:
        text="<<", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1  >> 2  << 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<<", type=operator:
            text=">>", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1  >> 2  << 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<<", type=operator:
        text=">>", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 + 2 + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="+", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 + 2 + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 - 2 - 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="-", type=operator:
            text="-", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 - 2 - 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="-", type=operator:
        text="-", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 + 2 - 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="-", type=operator:
            text="+", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 + 2 - 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="-", type=operator:
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 - 2 + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="-", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 - 2 + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="-", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 . 2 . 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text=".", type=operator:
            text=".", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 . 2 . 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text=".", type=operator:
        text=".", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 * 2 * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 * 2 * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 / 2 / 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="/", type=operator:
            text="/", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 / 2 / 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="/", type=operator:
        text="/", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 // 2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="//", type=operator:
            text="//", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 // 2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="//", type=operator:
        text="//", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 % 2 % 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="%", type=operator:
            text="%", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 % 2 % 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="%", type=operator:
        text="%", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ** 2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 ** 2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="**", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 *  2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="/", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 *  2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="/", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 *  2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="//", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 *  2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="//", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 *  2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="%", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 *  2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="%", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 *  2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 *  2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 /  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="/", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 /  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="/", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 /  2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="//", type=operator:
            text="/", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 /  2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="//", type=operator:
        text="/", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 /  2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="%", type=operator:
            text="/", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 /  2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="%", type=operator:
        text="/", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 /  2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="/", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 /  2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="/", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 // 2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="//", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 // 2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="//", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 // 2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="/", type=operator:
            text="//", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 // 2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="/", type=operator:
        text="//", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 // 2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="%", type=operator:
            text="//", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 // 2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="%", type=operator:
        text="//", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 // 2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="//", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 // 2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="//", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 %  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="%", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 %  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="%", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 %  2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="/", type=operator:
            text="%", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 %  2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="/", type=operator:
        text="%", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 %  2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="//", type=operator:
            text="%", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 %  2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="//", type=operator:
        text="%", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 %  2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="%", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 %  2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="%", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 ** 2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ** 2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ** 2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="/", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ** 2 /  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="/", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ** 2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="//", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ** 2 // 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="//", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ** 2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="%", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ** 2 %  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="%", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = ++1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="+", type=operator:
                text="1", type=strnum_literal.

mlr filter -v      ++1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="+", type=operator:
            text="1", type=strnum_literal.

mlr put -v $x = --1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="-", type=operator:
            text="-", type=operator:
                text="1", type=strnum_literal.

mlr filter -v      --1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="-", type=operator:
        text="-", type=operator:
            text="1", type=strnum_literal.

mlr put -v $x = !!1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="!", type=operator:
            text="!", type=operator:
                text="1", type=strnum_literal.

mlr filter -v      !!1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="!", type=operator:
        text="!", type=operator:
            text="1", type=strnum_literal.

mlr put -v $x = ~~1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="~", type=operator:
            text="~", type=operator:
                text="1", type=strnum_literal.

mlr filter -v      ~~1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="~", type=operator:
        text="~", type=operator:
            text="1", type=strnum_literal.

mlr put -v $x = 1 ? 2 : 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="? :", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ? 2 : 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="? :", type=operator:
        text="1", type=strnum_literal.
        text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ? 2 ? 3 : 4 : 5 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="? :", type=operator:
            text="1", type=strnum_literal.
            text="? :", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.
                text="4", type=strnum_literal.
            text="5", type=strnum_literal.

mlr filter -v      1 ? 2 ? 3 : 4 : 5 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="? :", type=operator:
        text="1", type=strnum_literal.
        text="? :", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.
            text="4", type=strnum_literal.
        text="5", type=strnum_literal.

mlr put -v $x = 1 ? 2 : 3 ? 4 : 5 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="? :", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
            text="? :", type=operator:
                text="3", type=strnum_literal.
                text="4", type=strnum_literal.
                text="5", type=strnum_literal.

mlr filter -v      1 ? 2 : 3 ? 4 : 5 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="? :", type=operator:
        text="1", type=strnum_literal.
        text="2", type=strnum_literal.
        text="? :", type=operator:
            text="3", type=strnum_literal.
            text="4", type=strnum_literal.
            text="5", type=strnum_literal.


================================================================
DSL OPERATOR PRECEDENCE

mlr put -v $x = 1 || 2 ^^ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="1", type=strnum_literal.
            text="^^", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 || 2 ^^ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="1", type=strnum_literal.
        text="^^", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 || 2 && 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="1", type=strnum_literal.
            text="&&", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 || 2 && 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="1", type=strnum_literal.
        text="&&", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 ^^ 2 || 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="^^", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 ^^ 2 || 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="^^", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 ^^ 2 && 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^^", type=operator:
            text="1", type=strnum_literal.
            text="&&", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      1 ^^ 2 && 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^^", type=operator:
        text="1", type=strnum_literal.
        text="&&", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = 1 && 2 || 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="&&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 && 2 || 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="&&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = 1 && 2 ^^ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^^", type=operator:
            text="&&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      1 && 2 ^^ 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^^", type=operator:
        text="&&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 == 2 <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="<=", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 == 2 <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="==", type=operator:
        text="1", type=strnum_literal.
        text="<=", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 <= 2 == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="==", type=operator:
            text="<=", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 <= 2 == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="==", type=operator:
        text="<=", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 <= 2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<=", type=operator:
            text="1", type=strnum_literal.
            text="|", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 <= 2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<=", type=operator:
        text="1", type=strnum_literal.
        text="|", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 |  2 <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="<=", type=operator:
            text="|", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 |  2 <= 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="<=", type=operator:
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 |  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="^", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 |  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="1", type=strnum_literal.
        text="^", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 ^  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="^", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 ^  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="^", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 ^  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^", type=operator:
            text="1", type=strnum_literal.
            text="&", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 ^  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^", type=operator:
        text="1", type=strnum_literal.
        text="&", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 &  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="^", type=operator:
            text="&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 &  2 ^  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="^", type=operator:
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 &  2 << 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="<<", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 &  2 << 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&", type=operator:
        text="1", type=strnum_literal.
        text="<<", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 << 2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="&", type=operator:
            text="<<", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 << 2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&", type=operator:
        text="<<", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 +  2 * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="*", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 +  2 * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="1", type=strnum_literal.
        text="*", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 *  2 + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 *  2 + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 + (2 * 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="*", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 + (2 * 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="1", type=strnum_literal.
        text="*", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 * (2 + 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="+", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 * (2 + 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="1", type=strnum_literal.
        text="+", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = (1 + 2) * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="+", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      (1 + 2) * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = (1 * 2) + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      (1 * 2) + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 +   2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 +   2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 **  2 +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 **  2 +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 +  (2 ** 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 +  (2 ** 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 ** (2 +  3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="+", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 ** (2 +  3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="**", type=operator:
        text="1", type=strnum_literal.
        text="+", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = (1 +  2) ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="**", type=operator:
            text="+", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      (1 +  2) ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="**", type=operator:
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = (1 ** 2) +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      (1 ** 2) +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 *   2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 *   2 ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 **  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 **  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 *  (2 ** 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="**", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 *  (2 ** 3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="1", type=strnum_literal.
        text="**", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 ** (2 *  3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="*", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 ** (2 *  3) /dev/null
AST ROOT:
text="list", type=statement_list:
    text="**", type=operator:
        text="1", type=strnum_literal.
        text="*", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = (1 *  2) ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="**", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      (1 *  2) ** 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="**", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = (1 ** 2) *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="*", type=operator:
            text="**", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      (1 ** 2) *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="*", type=operator:
        text="**", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x = -1 +  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="-", type=operator:
                text="1", type=strnum_literal.
            text="*", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      -1 +  2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="-", type=operator:
            text="1", type=strnum_literal.
        text="*", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = -1 *  2 +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="*", type=operator:
                text="-", type=operator:
                    text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      -1 *  2 +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="*", type=operator:
            text="-", type=operator:
                text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 + -2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="*", type=operator:
                text="-", type=operator:
                    text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 + -2 *  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="1", type=strnum_literal.
        text="*", type=operator:
            text="-", type=operator:
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 * -2 +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="-", type=operator:
                    text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 * -2 +  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="-", type=operator:
                text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 +  2 * -3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="1", type=strnum_literal.
            text="*", type=operator:
                text="2", type=strnum_literal.
                text="-", type=operator:
                    text="3", type=strnum_literal.

mlr filter -v       1 +  2 * -3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="1", type=strnum_literal.
        text="*", type=operator:
            text="2", type=strnum_literal.
            text="-", type=operator:
                text="3", type=strnum_literal.

mlr put -v $x =  1 *  2 + -3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="+", type=operator:
            text="*", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="-", type=operator:
                text="3", type=strnum_literal.

mlr filter -v       1 *  2 + -3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="+", type=operator:
        text="*", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="-", type=operator:
            text="3", type=strnum_literal.

mlr put -v $x = ~1 |  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="~", type=operator:
                text="1", type=strnum_literal.
            text="&", type=operator:
                text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v      ~1 |  2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="~", type=operator:
            text="1", type=strnum_literal.
        text="&", type=operator:
            text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x = ~1 &  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="&", type=operator:
                text="~", type=operator:
                    text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v      ~1 &  2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="&", type=operator:
            text="~", type=operator:
                text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 | ~2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="&", type=operator:
                text="~", type=operator:
                    text="2", type=strnum_literal.
                text="3", type=strnum_literal.

mlr filter -v       1 | ~2 &  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="1", type=strnum_literal.
        text="&", type=operator:
            text="~", type=operator:
                text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr put -v $x =  1 & ~2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="&", type=operator:
                text="1", type=strnum_literal.
                text="~", type=operator:
                    text="2", type=strnum_literal.
            text="3", type=strnum_literal.

mlr filter -v       1 & ~2 |  3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="~", type=operator:
                text="2", type=strnum_literal.
        text="3", type=strnum_literal.

mlr put -v $x =  1 |  2 & ~3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="1", type=strnum_literal.
            text="&", type=operator:
                text="2", type=strnum_literal.
                text="~", type=operator:
                    text="3", type=strnum_literal.

mlr filter -v       1 |  2 & ~3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="1", type=strnum_literal.
        text="&", type=operator:
            text="2", type=strnum_literal.
            text="~", type=operator:
                text="3", type=strnum_literal.

mlr put -v $x =  1 &  2 | ~3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="|", type=operator:
            text="&", type=operator:
                text="1", type=strnum_literal.
                text="2", type=strnum_literal.
            text="~", type=operator:
                text="3", type=strnum_literal.

mlr filter -v       1 &  2 | ~3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="|", type=operator:
        text="&", type=operator:
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="~", type=operator:
            text="3", type=strnum_literal.

mlr put -v $x = $a==1 && $b == 1 && $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="&&", type=operator:
            text="&&", type=operator:
                text="==", type=operator:
                    text="a", type=field_name.
                    text="1", type=strnum_literal.
                text="==", type=operator:
                    text="b", type=field_name.
                    text="1", type=strnum_literal.
            text="==", type=operator:
                text="c", type=field_name.
                text="1", type=strnum_literal.

mlr filter -v      $a==1 && $b == 1 && $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&&", type=operator:
        text="&&", type=operator:
            text="==", type=operator:
                text="a", type=field_name.
                text="1", type=strnum_literal.
            text="==", type=operator:
                text="b", type=field_name.
                text="1", type=strnum_literal.
        text="==", type=operator:
            text="c", type=field_name.
            text="1", type=strnum_literal.

mlr put -v $x = $a==1 || $b == 1 && $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="==", type=operator:
                text="a", type=field_name.
                text="1", type=strnum_literal.
            text="&&", type=operator:
                text="==", type=operator:
                    text="b", type=field_name.
                    text="1", type=strnum_literal.
                text="==", type=operator:
                    text="c", type=field_name.
                    text="1", type=strnum_literal.

mlr filter -v      $a==1 || $b == 1 && $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="==", type=operator:
            text="a", type=field_name.
            text="1", type=strnum_literal.
        text="&&", type=operator:
            text="==", type=operator:
                text="b", type=field_name.
                text="1", type=strnum_literal.
            text="==", type=operator:
                text="c", type=field_name.
                text="1", type=strnum_literal.

mlr put -v $x = $a==1 || $b == 1 || $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="||", type=operator:
                text="==", type=operator:
                    text="a", type=field_name.
                    text="1", type=strnum_literal.
                text="==", type=operator:
                    text="b", type=field_name.
                    text="1", type=strnum_literal.
            text="==", type=operator:
                text="c", type=field_name.
                text="1", type=strnum_literal.

mlr filter -v      $a==1 || $b == 1 || $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="||", type=operator:
            text="==", type=operator:
                text="a", type=field_name.
                text="1", type=strnum_literal.
            text="==", type=operator:
                text="b", type=field_name.
                text="1", type=strnum_literal.
        text="==", type=operator:
            text="c", type=field_name.
            text="1", type=strnum_literal.

mlr put -v $x = $a==1 && $b == 1 || $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="||", type=operator:
            text="&&", type=operator:
                text="==", type=operator:
                    text="a", type=field_name.
                    text="1", type=strnum_literal.
                text="==", type=operator:
                    text="b", type=field_name.
                    text="1", type=strnum_literal.
            text="==", type=operator:
                text="c", type=field_name.
                text="1", type=strnum_literal.

mlr filter -v      $a==1 && $b == 1 || $c == 1 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="&&", type=operator:
            text="==", type=operator:
                text="a", type=field_name.
                text="1", type=strnum_literal.
            text="==", type=operator:
                text="b", type=field_name.
                text="1", type=strnum_literal.
        text="==", type=operator:
            text="c", type=field_name.
            text="1", type=strnum_literal.

mlr put -v $x = $a==1 ? $b == 2 : $c == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="? :", type=operator:
            text="==", type=operator:
                text="a", type=field_name.
                text="1", type=strnum_literal.
            text="==", type=operator:
                text="b", type=field_name.
                text="2", type=strnum_literal.
            text="==", type=operator:
                text="c", type=field_name.
                text="3", type=strnum_literal.

mlr filter -v      $a==1 ? $b == 2 : $c == 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="? :", type=operator:
        text="==", type=operator:
            text="a", type=field_name.
            text="1", type=strnum_literal.
        text="==", type=operator:
            text="b", type=field_name.
            text="2", type=strnum_literal.
        text="==", type=operator:
            text="c", type=field_name.
            text="3", type=strnum_literal.

mlr put -v $x = true /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="true", type=boolean_literal.

mlr filter -v      true /dev/null
AST ROOT:
text="list", type=statement_list:
    text="true", type=boolean_literal.

mlr put -v true || 1==0; $x = 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="true", type=boolean_literal.
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="0", type=strnum_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="3", type=strnum_literal.

mlr filter -v         true || 1==0 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="true", type=boolean_literal.
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="0", type=strnum_literal.

mlr put -v 1==0 || false; $x = 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="0", type=strnum_literal.
        text="false", type=boolean_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="3", type=strnum_literal.

mlr filter -v         1==0 || false /dev/null
AST ROOT:
text="list", type=statement_list:
    text="||", type=operator:
        text="==", type=operator:
            text="1", type=strnum_literal.
            text="0", type=strnum_literal.
        text="false", type=boolean_literal.

mlr put -v true && false; $x = 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&&", type=operator:
        text="true", type=boolean_literal.
        text="false", type=boolean_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="3", type=strnum_literal.

mlr filter -v         true && false /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&&", type=operator:
        text="true", type=boolean_literal.
        text="false", type=boolean_literal.

mlr put -v true && false && true; $x = 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&&", type=operator:
        text="&&", type=operator:
            text="true", type=boolean_literal.
            text="false", type=boolean_literal.
        text="true", type=boolean_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="3", type=strnum_literal.

mlr filter -v         true && false && true /dev/null
AST ROOT:
text="list", type=statement_list:
    text="&&", type=operator:
        text="&&", type=operator:
            text="true", type=boolean_literal.
            text="false", type=boolean_literal.
        text="true", type=boolean_literal.

mlr put -v $y += $x + 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="+", type=operator:
            text="y", type=field_name.
            text="+", type=operator:
                text="x", type=field_name.
                text="3", type=strnum_literal.

mlr put -v $y += $x * 3 /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="+", type=operator:
            text="y", type=field_name.
            text="*", type=operator:
                text="x", type=field_name.
                text="3", type=strnum_literal.

mlr put -v $y ||= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="||", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y ^^= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="^^", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y &&= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="&&", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y |=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="|", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y ^=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="^", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y &=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="&", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y <<= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="<<", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y >>= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text=">>", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y +=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="+", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y -=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="-", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y .=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text=".", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y *=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="*", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y /=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="/", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y //= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="//", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y %=  $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="%", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.

mlr put -v $y **= $x /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="y", type=field_name.
        text="**", type=operator:
            text="y", type=field_name.
            text="x", type=field_name.


================================================================
DSL COMMENTS

mlr --from ./reg_test/input/abixy put 
  $s = 1;
  #$t = 2;
  $u = 3;

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,s=1,u=3
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,s=1,u=3
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,s=1,u=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,s=1,u=3
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,s=1,u=3
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,s=1,u=3
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,s=1,u=3
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,s=1,u=3
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,s=1,u=3
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,s=1,u=3

mlr --from ./reg_test/input/abixy filter 
  NR == 1 ||
  #NR == 2 ||
  NR == 3

a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776


================================================================
DSL EMPTY STATEMENTS

mlr -n put -v 
AST ROOT:
(null)

mlr -n filter -v 
mlr filter: filter statement must not be empty.

mlr -n put -v begin {}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:

mlr -n put -v begin {;}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:

mlr -n put -v begin {;;}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:

mlr -n put -v begin {;;;}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:

mlr -n put -v begin {@x=1}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v begin {@x=1;}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v begin {;@x=1}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v begin {@x=1;@y=2}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="y", type=string_literal.
                text="2", type=strnum_literal.

mlr -n put -v begin {@x=1;;@y=2}
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="y", type=string_literal.
                text="2", type=strnum_literal.

mlr -n put -v true {}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:

mlr -n put -v true {;}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:

mlr -n put -v true {;;}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:

mlr -n put -v true {;;;}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:

mlr -n put -v true {@x=1}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v true {@x=1;}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v true {;@x=1}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v true {@x=1;@y=2}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="y", type=string_literal.
                text="2", type=strnum_literal.

mlr -n put -v true {@x=1;;@y=2}
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="y", type=string_literal.
                text="2", type=strnum_literal.

mlr -n put -v end {}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:

mlr -n put -v end {;}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:

mlr -n put -v end {;;}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:

mlr -n put -v end {;;;}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:

mlr -n put -v end {@x=1}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v end {@x=1;}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v end {;@x=1}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.

mlr -n put -v end {@x=1;@y=2}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="y", type=string_literal.
                text="2", type=strnum_literal.

mlr -n put -v end {@x=1;;@y=2}
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="y", type=string_literal.
                text="2", type=strnum_literal.


================================================================
DSL CONTEXT-SPECIFIC VALIDATION


---------------------------------------------------------------- non-top-level begin/end
mlr put -v begin{begin{@x=1}}
mlr: begin statements are only valid at top level.
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="begin", type=begin:
                text="list", type=statement_list:
                    text="=", type=oosvar_assignment:
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="x", type=string_literal.
                        text="1", type=strnum_literal.

mlr put -v true{begin{@x=1}}
mlr: begin statements are only valid at top level.
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="begin", type=begin:
                text="list", type=statement_list:
                    text="=", type=oosvar_assignment:
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="x", type=string_literal.
                        text="1", type=strnum_literal.

mlr put -v end{end{@x=1}}
mlr: end statements are only valid at top level.
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="end", type=end:
                text="list", type=statement_list:
                    text="=", type=oosvar_assignment:
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="x", type=string_literal.
                        text="1", type=strnum_literal.

mlr put -v true{end{@x=1}}
mlr: end statements are only valid at top level.
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="end", type=end:
                text="list", type=statement_list:
                    text="=", type=oosvar_assignment:
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="x", type=string_literal.
                        text="1", type=strnum_literal.


---------------------------------------------------------------- srecs in begin/end
mlr put -v begin{$x=1}
mlr: assignments to $-variables are not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="x", type=field_name.
                text="1", type=strnum_literal.

mlr put -v begin{@x=$y}
mlr: statements involving $-variables are not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="y", type=field_name.

mlr put -v end{$x=1}
mlr: assignments to $-variables are not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="x", type=field_name.
                text="1", type=strnum_literal.

mlr put -v end{@x=$y}
mlr: statements involving $-variables are not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="y", type=field_name.

mlr put -v begin{unset $x}
mlr: unset of $-variables is not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="unset", type=unset:
                text="x", type=field_name.

mlr put -v end{unset $x}
mlr: unset of $-variables is not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="unset", type=unset:
                text="x", type=field_name.

mlr put -v begin{unset $*}
mlr: unset of $-variables is not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="unset", type=unset:
                text="$*", type=full_srec.

mlr put -v end{unset $*}
mlr: unset of $-variables is not valid within begin or end blocks.
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="unset", type=unset:
                text="$*", type=full_srec.


---------------------------------------------------------------- boundvars outside for
mlr put -v $x=x
mlr: statements involving bound variables are not valid outside for-loops.
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="x", type=bound_variable.


---------------------------------------------------------------- break/continue outside loop
mlr put -v break
mlr: break statements are only valid within for, while, or do-while.
AST ROOT:
text="list", type=statement_list:
    text="break", type=break.

mlr put -v continue
mlr: break statements are only valid within for, while, or do-while.
AST ROOT:
text="list", type=statement_list:
    text="continue", type=continue.


---------------------------------------------------------------- oosvars etc. in mlr filter
mlr filter -v @x > 3
mlr: statements involving $-variables are not valid in mlr filter.
AST ROOT:
text="list", type=statement_list:
    text=">", type=operator:
        text="oosvar_keylist", type=oosvar_keylist:
            text="x", type=string_literal.
        text="3", type=strnum_literal.

mlr filter -v x > 3
mlr: statements involving bound variables are not valid in mlr filter.
AST ROOT:
text="list", type=statement_list:
    text=">", type=operator:
        text="x", type=bound_variable.
        text="3", type=strnum_literal.

mlr filter -v break
mlr: expressions for mlr filter must be single statements, evaluating to boolean.
AST ROOT:
text="list", type=statement_list:
    text="break", type=break.

mlr filter -v continue
mlr: expressions for mlr filter must be single statements, evaluating to boolean.
AST ROOT:
text="list", type=statement_list:
    text="continue", type=continue.


================================================================
DSL FUNCTIONAL TESTS

mlr filter $x>.3 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>.3; ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 && $y>0.3 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $x>0.3 || $y>0.3 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter NR>=4 && NR <= 7 ./reg_test/input/abixy
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

mlr filter -x $x>.3 ./reg_test/input/abixy
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr filter -x $x>0.3 ./reg_test/input/abixy
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr filter -x $x>0.3 && $y>0.3 ./reg_test/input/abixy
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

mlr filter -x $x>0.3 || $y>0.3 ./reg_test/input/abixy

mlr filter -x NR>=4 && NR <= 7 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr filter $nosuchfield>.3 ./reg_test/input/abixy

mlr put $x2 = $x**2 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x2=0.120263
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x2=0.575595
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x2=0.041863
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x2=0.145465
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,x2=0.328660
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x2=0.277862
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,x2=0.374280
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,x2=0.358267
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x2=0.000989
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x2=0.252633

mlr put $x2 = $x**2; ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,x2=0.120263
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,x2=0.575595
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,x2=0.041863
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,x2=0.145465
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,x2=0.328660
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,x2=0.277862
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,x2=0.374280
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,x2=0.358267
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,x2=0.000989
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,x2=0.252633

mlr put $z = -0.024*$x+0.13 ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,z=0.121677
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,z=0.111792
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,z=0.125090
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,z=0.120846
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,z=0.116241
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,z=0.117349
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,z=0.115317
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,z=0.115635
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,z=0.129245
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,z=0.117937

mlr put $c = $a . $b ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,c=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,c=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,c=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,c=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,c=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,c=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,c=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,c=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,c=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,c=panwye

mlr put $ii = $i + $i ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,ii=2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,ii=4
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,ii=6
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,ii=8
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,ii=10
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,ii=12
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,ii=14
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,ii=16
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,ii=18
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,ii=20

mlr put $emptytest = $i + $nosuch ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,emptytest=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,emptytest=2
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,emptytest=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,emptytest=4
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,emptytest=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,emptytest=6
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,emptytest=7
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,emptytest=8
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,emptytest=9
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,emptytest=10

mlr --opprint put $nr=NR;$fnr=FNR;$nf=NF;$filenum=FILENUM ./reg_test/input/abixy ./reg_test/input/abixy
a   b   i  x                   y                   nr fnr nf filenum
pan pan 1  0.3467901443380824  0.7268028627434533  1  1   7  1
eks pan 2  0.7586799647899636  0.5221511083334797  2  2   7  1
wye wye 3  0.20460330576630303 0.33831852551664776 3  3   7  1
eks wye 4  0.38139939387114097 0.13418874328430463 4  4   7  1
wye pan 5  0.5732889198020006  0.8636244699032729  5  5   7  1
zee pan 6  0.5271261600918548  0.49322128674835697 6  6   7  1
eks zee 7  0.6117840605678454  0.1878849191181694  7  7   7  1
zee wye 8  0.5985540091064224  0.976181385699006   8  8   7  1
hat wye 9  0.03144187646093577 0.7495507603507059  9  9   7  1
pan wye 10 0.5026260055412137  0.9526183602969864  10 10  7  1
pan pan 1  0.3467901443380824  0.7268028627434533  11 1   7  2
eks pan 2  0.7586799647899636  0.5221511083334797  12 2   7  2
wye wye 3  0.20460330576630303 0.33831852551664776 13 3   7  2
eks wye 4  0.38139939387114097 0.13418874328430463 14 4   7  2
wye pan 5  0.5732889198020006  0.8636244699032729  15 5   7  2
zee pan 6  0.5271261600918548  0.49322128674835697 16 6   7  2
eks zee 7  0.6117840605678454  0.1878849191181694  17 7   7  2
zee wye 8  0.5985540091064224  0.976181385699006   18 8   7  2
hat wye 9  0.03144187646093577 0.7495507603507059  19 9   7  2
pan wye 10 0.5026260055412137  0.9526183602969864  20 10  7  2

mlr --opprint put $y=madd($x,10,37) then put $z=msub($x,10,37) ./reg_test/input/modarith.dat
x   y  z
-37 10 27
-36 11 28
-35 12 29
-34 13 30
-33 14 31
-32 15 32
-31 16 33
-30 17 34
-29 18 35
-28 19 36
-27 20 0
-26 21 1
-25 22 2
-24 23 3
-23 24 4
-22 25 5
-21 26 6
-20 27 7
-19 28 8
-18 29 9
-17 30 10
-16 31 11
-15 32 12
-14 33 13
-13 34 14
-12 35 15
-11 36 16
-10 0  17
-9  1  18
-8  2  19
-7  3  20
-6  4  21
-5  5  22
-4  6  23
-3  7  24
-2  8  25
-1  9  26
0   10 27
1   11 28
2   12 29
3   13 30
4   14 31
5   15 32
6   16 33
7   17 34
8   18 35
9   19 36
10  20 0
11  21 1
12  22 2
13  23 3
14  24 4
15  25 5
16  26 6
17  27 7
18  28 8
19  29 9
20  30 10
21  31 11
22  32 12
23  33 13
24  34 14
25  35 15
26  36 16
27  0  17
28  1  18
29  2  19
30  3  20
31  4  21
32  5  22
33  6  23
34  7  24
35  8  25
36  9  26
37  10 27
38  11 28
39  12 29
40  13 30
41  14 31
42  15 32
43  16 33
44  17 34
45  18 35
46  19 36
47  20 0
48  21 1
49  22 2
50  23 3
51  24 4
52  25 5
53  26 6
54  27 7
55  28 8
56  29 9
57  30 10
58  31 11
59  32 12
60  33 13
61  34 14
62  35 15
63  36 16
64  0  17
65  1  18
66  2  19
67  3  20
68  4  21
69  5  22
70  6  23
71  7  24
72  8  25
73  9  26

mlr --opprint put $y=mexp($x,35,37) then put $z=mmul($x,$y,37) ./reg_test/input/modarith.dat
x   y  z
-37 0  0
-36 1  1
-35 19 1
-34 25 1
-33 28 1
-32 15 1
-31 31 1
-30 16 1
-29 14 1
-28 33 1
-27 26 1
-26 27 1
-25 34 1
-24 20 1
-23 8  1
-22 5  1
-21 7  1
-20 24 1
-19 35 1
-18 2  1
-17 13 1
-16 30 1
-15 32 1
-14 29 1
-13 17 1
-12 3  1
-11 10 1
-10 11 1
-9  4  1
-8  23 1
-7  21 1
-6  6  1
-5  22 1
-4  9  1
-3  12 1
-2  18 1
-1  36 1
0   0  0
1   1  1
2   19 1
3   25 1
4   28 1
5   15 1
6   31 1
7   16 1
8   14 1
9   33 1
10  26 1
11  27 1
12  34 1
13  20 1
14  8  1
15  5  1
16  7  1
17  24 1
18  35 1
19  2  1
20  13 1
21  30 1
22  32 1
23  29 1
24  17 1
25  3  1
26  10 1
27  11 1
28  4  1
29  23 1
30  21 1
31  6  1
32  22 1
33  9  1
34  12 1
35  18 1
36  36 1
37  0  0
38  1  1
39  19 1
40  25 1
41  28 1
42  15 1
43  31 1
44  16 1
45  14 1
46  33 1
47  26 1
48  27 1
49  34 1
50  20 1
51  8  1
52  5  1
53  7  1
54  24 1
55  35 1
56  2  1
57  13 1
58  30 1
59  32 1
60  29 1
61  17 1
62  3  1
63  10 1
64  11 1
65  4  1
66  23 1
67  21 1
68  6  1
69  22 1
70  9  1
71  12 1
72  18 1
73  36 1

mlr put $z=min($x, $y) ./reg_test/input/minmax.dkvp
x=1,y=2,z=1
x=1,y=,z=1
x=,y=,z=
x=,y=2,z=2
x=3,y=2,z=2
x=3,y=,z=3
x=,y=,z=
x=,y=2,z=2

mlr put $z=max($x, $y) ./reg_test/input/minmax.dkvp
x=1,y=2,z=2
x=1,y=,z=1
x=,y=,z=
x=,y=2,z=2
x=3,y=2,z=3
x=3,y=,z=3
x=,y=,z=
x=,y=2,z=2

mlr --icsvlite --oxtab put ${x+y} = ${name.x} + ${name.y}; ${x*y} = ${name.x} * ${name.y} ./reg_test/input/braced.csv
name.x 1
name.y 2
z      3
x+y    3
x*y    2

name.x 4
name.y 6
z      5
x+y    10
x*y    24

mlr --icsvlite --oxtab filter ${name.y} < ${z} ./reg_test/input/braced.csv
name.x 1
name.y 2
z      3

mlr --opprint put $z = $x < 0.5 ? 0 : 1 ./reg_test/input/abixy
a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  0
eks pan 2  0.7586799647899636  0.5221511083334797  1
wye wye 3  0.20460330576630303 0.33831852551664776 0
eks wye 4  0.38139939387114097 0.13418874328430463 0
wye pan 5  0.5732889198020006  0.8636244699032729  1
zee pan 6  0.5271261600918548  0.49322128674835697 1
eks zee 7  0.6117840605678454  0.1878849191181694  1
zee wye 8  0.5985540091064224  0.976181385699006   1
hat wye 9  0.03144187646093577 0.7495507603507059  0
pan wye 10 0.5026260055412137  0.9526183602969864  1

mlr --csvlite filter true  && true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter true  && false ./reg_test/input/b.csv

mlr --csvlite filter false && true ./reg_test/input/b.csv

mlr --csvlite filter false && false ./reg_test/input/b.csv

mlr --csvlite filter true  || true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter true  || false ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false || true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false || false ./reg_test/input/b.csv

mlr --csvlite filter true  ^^ true ./reg_test/input/b.csv

mlr --csvlite filter true  ^^ false ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false ^^ true ./reg_test/input/b.csv
d,e,f
5,6,7

mlr --csvlite filter false ^^ false ./reg_test/input/b.csv

mlr put $x==2 && $a =~ "....." { $y=4 } ./reg_test/input/short-circuit.dkvp
x=1,a="hello"
x=2,a="there",y=4
x=3,a="world"

mlr put $x = ENV["X"]; $y = ENV[$name] ./reg_test/input/env-var.dkvp
name=X,x=97,y=97
name=Y,x=97,y=98
x=97,y=6

mlr put $x = ENV["X"]; $y = ENV[$name] ./reg_test/input/env-var.dkvp
name=X,x=,y=
name=Y,x=,y=
x=,y=6


================================================================
DSL NULL/EMPTY HANDLING

mlr put $z = $s . $s ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=hellohello
x=1,y=,s=,z=
x=,y=,s=hurrah,z=hurrahhurrah

mlr put $z = $s == "" ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=false
x=1,y=,s=,z=true
x=,y=,s=hurrah,z=false

mlr put $z = $s == $s ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=true
x=1,y=,s=,z=true
x=,y=,s=hurrah,z=true

mlr put $z = isempty($s) ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=false
x=1,y=,s=,z=true
x=,y=,s=hurrah,z=false

mlr put $z = $x + $y ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=3
x=1,y=,s=,z=
x=,y=,s=hurrah,z=

mlr put $z = $y + $y ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=4
x=1,y=,s=,z=
x=,y=,s=hurrah,z=

mlr put $z = $x + $nosuch ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,z=1
x=1,y=,s=,z=1
x=,y=,s=hurrah

mlr put $t = sub($s,       "ell", "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=hXo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = sub($s,       "ell", "") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=ho
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = sub($nosuch,  "ell", "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello
x=1,y=,s=
x=,y=,s=hurrah

mlr put $t = gsub($s,      "l",   "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=heXXo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = gsub($s,      "l",   "") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello,t=heo
x=1,y=,s=,t=
x=,y=,s=hurrah,t=hurrah

mlr put $t = gsub($nosuch, "l",   "X") ./reg_test/input/null-vs-empty.dkvp
x=1,y=2,s=hello
x=1,y=,s=
x=,y=,s=hurrah

mlr --opprint filter isnull($x) ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b - - -

mlr --opprint filter isnull($y) ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b - - -

mlr --opprint filter isnull($z) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter isnull($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter isnotnull($x) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -

mlr --opprint filter isnotnull($y) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b - 6 -

mlr --opprint filter isnotnull($z) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isnotnull($nosuch) ./reg_test/input/nullvals.dkvp

mlr --opprint put $f=isnull($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - true
b - - - true

mlr --opprint put $f=isnull($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - true
b - 6 - false
b - - - true

mlr --opprint put $f=isnull($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isnull($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isnull(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=isnull(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isnotnull($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=isnotnull($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=isnotnull($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isnotnull($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isnotnull(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=isnotnull(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint filter isabsent($x) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isabsent($y) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isabsent($z) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isabsent($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter ispresent($x) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter ispresent($y) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter ispresent($z) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter ispresent($nosuch) ./reg_test/input/nullvals.dkvp

mlr --opprint put $f=isabsent($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isabsent($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isabsent($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isabsent($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isabsent(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=isabsent(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=ispresent($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=ispresent($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=ispresent($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=ispresent($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=ispresent(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=ispresent(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint filter isempty($x) ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b - - -

mlr --opprint filter isempty($y) ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b - - -

mlr --opprint filter isempty($z) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint filter isempty($nosuch) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isnotempty($x) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -

mlr --opprint filter isnotempty($y) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b - 6 -

mlr --opprint filter isnotempty($z) ./reg_test/input/nullvals.dkvp

mlr --opprint filter isnotempty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z
b 1 2 -
b 3 4 -
b 5 - -
b - 6 -
b - - -

mlr --opprint put $f=isempty($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - true
b - - - true

mlr --opprint put $f=isempty($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - true
b - 6 - false
b - - - true

mlr --opprint put $f=isempty($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isempty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isempty(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put @somesuch=1;$f=isempty(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isnotempty($x) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - false
b - - - false

mlr --opprint put $f=isnotempty($y) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - false
b - 6 - true
b - - - false

mlr --opprint put $f=isnotempty($z) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - false
b 3 4 - false
b 5 - - false
b - 6 - false
b - - - false

mlr --opprint put $f=isnotempty($nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put $f=isnotempty(@nosuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr --opprint put @somesuch=1;$f=isnotempty(@somesuch) ./reg_test/input/nullvals.dkvp
a x y z f
b 1 2 - true
b 3 4 - true
b 5 - - true
b - 6 - true
b - - - true

mlr put -q @v=1; @nonesuch       {emit @v} ./reg_test/input/abixy

mlr put -q @v=1; @nonesuch==true {emit @v} ./reg_test/input/abixy

mlr put -q @v=1; $nonesuch       {emit @v} ./reg_test/input/abixy

mlr put -q @v=1; $nonesuch==true {emit @v} ./reg_test/input/abixy


---------------------------------------------------------------- PLUS
mlr --ofs tab put begin{};          $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=5	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=5	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=5	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=5	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=5	st=4
x=1	y=	xy=	xt=5	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=5	st=4
x=1	b=	xy=1	xt=5	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x + $y; $sy = @s + $y; $xt = $x + @t; $st = @s + @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=5	xt=5	st=7
x=1	y=	xy=	sy=	xt=5	st=7
x=	y=2	xy=	sy=5	xt=	st=7
x=	y=	xy=	sy=	xt=	st=7
a=1	y=2	xy=2	sy=5	xt=4	st=7
a=1	y=	sy=	xt=4	st=7
a=	y=2	xy=2	sy=5	xt=4	st=7
a=	y=	sy=	xt=4	st=7
x=1	b=2	xy=1	sy=3	xt=5	st=7
x=1	b=	xy=1	sy=3	xt=5	st=7
x=	b=2	sy=3	xt=	st=7
x=	b=	sy=3	xt=	st=7


---------------------------------------------------------------- MINUS
mlr --ofs tab put begin{};          $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=2	xt=-3	st=4
x=1	y=	xy=	xt=-3	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=-3	st=4
x=1	b=	xy=1	xt=-3	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x - $y; $sy = @s - $y; $xt = $x - @t; $st = @s - @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=-1	sy=1	xt=-3	st=-1
x=1	y=	xy=	sy=	xt=-3	st=-1
x=	y=2	xy=	sy=1	xt=	st=-1
x=	y=	xy=	sy=	xt=	st=-1
a=1	y=2	xy=2	sy=1	xt=4	st=-1
a=1	y=	sy=	xt=4	st=-1
a=	y=2	xy=2	sy=1	xt=4	st=-1
a=	y=	sy=	xt=4	st=-1
x=1	b=2	xy=1	sy=3	xt=-3	st=-1
x=1	b=	xy=1	sy=3	xt=-3	st=-1
x=	b=2	sy=3	xt=	st=-1
x=	b=	sy=3	xt=	st=-1


---------------------------------------------------------------- TIMES
mlr --ofs tab put begin{};          $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=6	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=6	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=6	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=6	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=2	xt=4	st=4
x=1	y=	xy=	xt=4	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=4	st=4
x=1	b=	xy=1	xt=4	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x * $y; $sy = @s * $y; $xt = $x * @t; $st = @s * @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=2	sy=6	xt=4	st=12
x=1	y=	xy=	sy=	xt=4	st=12
x=	y=2	xy=	sy=6	xt=	st=12
x=	y=	xy=	sy=	xt=	st=12
a=1	y=2	xy=2	sy=6	xt=4	st=12
a=1	y=	sy=	xt=4	st=12
a=	y=2	xy=2	sy=6	xt=4	st=12
a=	y=	sy=	xt=4	st=12
x=1	b=2	xy=1	sy=3	xt=4	st=12
x=1	b=	xy=1	sy=3	xt=4	st=12
x=	b=2	sy=3	xt=	st=12
x=	b=	sy=3	xt=	st=12


---------------------------------------------------------------- DIVIDE
mlr --ofs tab put begin{};          $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=0	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=0
x=	y=	xy=
a=1	y=2	xy=0	sy=0
a=1	y=
a=	y=2	xy=0	sy=0
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=1.500000	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1.500000	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=0	sy=1.500000	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=0	sy=1.500000	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=0	xt=0.250000	st=0
x=1	y=	xy=	xt=0.250000	st=0
x=	y=2	xy=	sy=0	xt=	st=0
x=	y=	xy=	xt=	st=0
a=1	y=2	xy=0	sy=0	xt=0	st=0
a=1	y=	xt=0	st=0
a=	y=2	xy=0	sy=0	xt=0	st=0
a=	y=	xt=0	st=0
x=1	b=2	xy=1	xt=0.250000	st=0
x=1	b=	xy=1	xt=0.250000	st=0
x=	b=2	xt=	st=0
x=	b=	xt=	st=0

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x / $y; $sy = @s / $y; $xt = $x / @t; $st = @s / @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0.500000	sy=1.500000	xt=0.250000	st=0.750000
x=1	y=	xy=	sy=	xt=0.250000	st=0.750000
x=	y=2	xy=	sy=1.500000	xt=	st=0.750000
x=	y=	xy=	sy=	xt=	st=0.750000
a=1	y=2	xy=0	sy=1.500000	xt=0	st=0.750000
a=1	y=	sy=	xt=0	st=0.750000
a=	y=2	xy=0	sy=1.500000	xt=0	st=0.750000
a=	y=	sy=	xt=0	st=0.750000
x=1	b=2	xy=1	sy=3	xt=0.250000	st=0.750000
x=1	b=	xy=1	sy=3	xt=0.250000	st=0.750000
x=	b=2	sy=3	xt=	st=0.750000
x=	b=	sy=3	xt=	st=0.750000


---------------------------------------------------------------- INTEGER DIVIDE
mlr --ofs tab put begin{};          $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=0	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=0
x=	y=	xy=
a=1	y=2	xy=0	sy=0
a=1	y=
a=	y=2	xy=0	sy=0
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=0	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=0	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=0	xt=0	st=0
x=1	y=	xy=	xt=0	st=0
x=	y=2	xy=	sy=0	xt=	st=0
x=	y=	xy=	xt=	st=0
a=1	y=2	xy=0	sy=0	xt=0	st=0
a=1	y=	xt=0	st=0
a=	y=2	xy=0	sy=0	xt=0	st=0
a=	y=	xt=0	st=0
x=1	b=2	xy=1	xt=0	st=0
x=1	b=	xy=1	xt=0	st=0
x=	b=2	xt=	st=0
x=	b=	xt=	st=0

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x // $y; $sy = @s // $y; $xt = $x // @t; $st = @s // @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=1	xt=0	st=0
x=1	y=	xy=	sy=	xt=0	st=0
x=	y=2	xy=	sy=1	xt=	st=0
x=	y=	xy=	sy=	xt=	st=0
a=1	y=2	xy=0	sy=1	xt=0	st=0
a=1	y=	sy=	xt=0	st=0
a=	y=2	xy=0	sy=1	xt=0	st=0
a=	y=	sy=	xt=0	st=0
x=1	b=2	xy=1	sy=3	xt=0	st=0
x=1	b=	xy=1	sy=3	xt=0	st=0
x=	b=2	sy=3	xt=	st=0
x=	b=	sy=3	xt=	st=0


---------------------------------------------------------------- REMAINDER
mlr --ofs tab put begin{};          $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=0	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=0
x=	y=	xy=
a=1	y=2	xy=0	sy=0
a=1	y=
a=	y=2	xy=0	sy=0
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=0	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=0	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=0	xt=1	st=0
x=1	y=	xy=	xt=1	st=0
x=	y=2	xy=	sy=0	xt=	st=0
x=	y=	xy=	xt=	st=0
a=1	y=2	xy=0	sy=0	xt=0	st=0
a=1	y=	xt=0	st=0
a=	y=2	xy=0	sy=0	xt=0	st=0
a=	y=	xt=0	st=0
x=1	b=2	xy=1	xt=1	st=0
x=1	b=	xy=1	xt=1	st=0
x=	b=2	xt=	st=0
x=	b=	xt=	st=0

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x % $y; $sy = @s % $y; $xt = $x % @t; $st = @s % @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=1	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	xt=	st=3
x=	y=	xy=	sy=	xt=	st=3
a=1	y=2	xy=0	sy=1	xt=0	st=3
a=1	y=	sy=	xt=0	st=3
a=	y=2	xy=0	sy=1	xt=0	st=3
a=	y=	sy=	xt=0	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	xt=	st=3
x=	b=	sy=3	xt=	st=3


---------------------------------------------------------------- BITWISE AND
mlr --ofs tab put begin{};          $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=2	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=2	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=2	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=0	st=4
x=1	y=	xy=	xt=0	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=0	st=4
x=1	b=	xy=1	xt=0	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x & $y; $sy = @s & $y; $xt = $x & @t; $st = @s & @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=0	sy=2	xt=0	st=0
x=1	y=	xy=	sy=	xt=0	st=0
x=	y=2	xy=	sy=2	xt=	st=0
x=	y=	xy=	sy=	xt=	st=0
a=1	y=2	xy=2	sy=2	xt=4	st=0
a=1	y=	sy=	xt=4	st=0
a=	y=2	xy=2	sy=2	xt=4	st=0
a=	y=	sy=	xt=4	st=0
x=1	b=2	xy=1	sy=3	xt=0	st=0
x=1	b=	xy=1	sy=3	xt=0	st=0
x=	b=2	sy=3	xt=	st=0
x=	b=	sy=3	xt=	st=0


---------------------------------------------------------------- BITWISE OR
mlr --ofs tab put begin{};          $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=3	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=3	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=3	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=3	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=5	st=4
x=1	y=	xy=	xt=5	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=5	st=4
x=1	b=	xy=1	xt=5	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x | $y; $sy = @s | $y; $xt = $x | @t; $st = @s | @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=3	xt=5	st=7
x=1	y=	xy=	sy=	xt=5	st=7
x=	y=2	xy=	sy=3	xt=	st=7
x=	y=	xy=	sy=	xt=	st=7
a=1	y=2	xy=2	sy=3	xt=4	st=7
a=1	y=	sy=	xt=4	st=7
a=	y=2	xy=2	sy=3	xt=4	st=7
a=	y=	sy=	xt=4	st=7
x=1	b=2	xy=1	sy=3	xt=5	st=7
x=1	b=	xy=1	sy=3	xt=5	st=7
x=	b=2	sy=3	xt=	st=7
x=	b=	sy=3	xt=	st=7


---------------------------------------------------------------- BITWISE XOR
mlr --ofs tab put begin{};          $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=1
x=1	y=	xy=	xt=1
x=	y=2	xy=	sy=2
x=	y=	xy=
a=1	y=2	xy=2	sy=2
a=1	y=
a=	y=2	xy=2	sy=2
a=	y=
x=1	b=2	xy=1	xt=1
x=1	b=	xy=1	xt=1
x=	b=2
x=	b=

mlr --ofs tab put begin{@s=3};      $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=1	xt=1	st=3
x=1	y=	xy=	sy=	xt=1	st=3
x=	y=2	xy=	sy=1	st=3
x=	y=	xy=	sy=	st=3
a=1	y=2	xy=2	sy=1	st=3
a=1	y=	sy=	st=3
a=	y=2	xy=2	sy=1	st=3
a=	y=	sy=	st=3
x=1	b=2	xy=1	sy=3	xt=1	st=3
x=1	b=	xy=1	sy=3	xt=1	st=3
x=	b=2	sy=3	st=3
x=	b=	sy=3	st=3

mlr --ofs tab put begin{@t=4};      $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=2	xt=5	st=4
x=1	y=	xy=	xt=5	st=4
x=	y=2	xy=	sy=2	xt=	st=4
x=	y=	xy=	xt=	st=4
a=1	y=2	xy=2	sy=2	xt=4	st=4
a=1	y=	xt=4	st=4
a=	y=2	xy=2	sy=2	xt=4	st=4
a=	y=	xt=4	st=4
x=1	b=2	xy=1	xt=5	st=4
x=1	b=	xy=1	xt=5	st=4
x=	b=2	xt=	st=4
x=	b=	xt=	st=4

mlr --ofs tab put begin{@s=3;@t=4}; $xy = $x ^ $y; $sy = @s ^ $y; $xt = $x ^ @t; $st = @s ^ @t ./reg_test/input/typeof.dkvp
x=1	y=2	xy=3	sy=1	xt=5	st=7
x=1	y=	xy=	sy=	xt=5	st=7
x=	y=2	xy=	sy=1	xt=	st=7
x=	y=	xy=	sy=	xt=	st=7
a=1	y=2	xy=2	sy=1	xt=4	st=7
a=1	y=	sy=	xt=4	st=7
a=	y=2	xy=2	sy=1	xt=4	st=7
a=	y=	sy=	xt=4	st=7
x=1	b=2	xy=1	sy=3	xt=5	st=7
x=1	b=	xy=1	sy=3	xt=5	st=7
x=	b=2	sy=3	xt=	st=7
x=	b=	sy=3	xt=	st=7


================================================================
DSL TYPE PREDICATES

mlr --from ./reg_test/input/abixy --opprint put  for (k, v in $*) { $[k."_type"]      = typeof(v)     } 
a   b   i  x                   y                   a_type    b_type    i_type x_type   y_type
pan pan 1  0.3467901443380824  0.7268028627434533  MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
eks pan 2  0.7586799647899636  0.5221511083334797  MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
wye wye 3  0.20460330576630303 0.33831852551664776 MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
eks wye 4  0.38139939387114097 0.13418874328430463 MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
wye pan 5  0.5732889198020006  0.8636244699032729  MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
zee pan 6  0.5271261600918548  0.49322128674835697 MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
eks zee 7  0.6117840605678454  0.1878849191181694  MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
zee wye 8  0.5985540091064224  0.976181385699006   MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
hat wye 9  0.03144187646093577 0.7495507603507059  MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT
pan wye 10 0.5026260055412137  0.9526183602969864  MT_STRING MT_STRING MT_INT MT_FLOAT MT_FLOAT

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (isfloat(v))    {@float[NR][k]   = v}}    end{ emit @float,   "NR", "k" }
NR=1,k=x,float=0.346790
NR=1,k=y,float=0.726803
NR=2,k=x,float=0.758680
NR=2,k=y,float=0.522151
NR=3,k=x,float=0.204603
NR=3,k=y,float=0.338319
NR=4,k=x,float=0.381399
NR=4,k=y,float=0.134189
NR=5,k=xxx,float=0.573289
NR=5,k=y,float=0.863624
NR=6,k=x,float=0.527126
NR=6,k=y,float=0.493221
NR=7,k=x,float=0.611784
NR=7,k=y,float=0.187885
NR=8,k=x,float=0.598554
NR=8,k=yyy,float=0.976181
NR=9,k=x,float=0.031442
NR=9,k=y,float=0.749551
NR=10,k=x,float=0.502626
NR=10,k=y,float=0.952618

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (isint(v))      {@int[NR][k]     = v}}    end{ emit @int,     "NR", "k" }
NR=1,k=i,int=1
NR=2,k=i,int=2
NR=3,k=i,int=3
NR=4,k=i,int=4
NR=5,k=i,int=5
NR=6,k=i,int=6
NR=7,k=iii,int=7
NR=8,k=i,int=8
NR=9,k=i,int=9
NR=10,k=i,int=10

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (isnumeric(v))  {@numeric[NR][k] = v}}    end{ emit @numeric, "NR", "k" }
NR=1,k=i,numeric=1
NR=1,k=x,numeric=0.346790
NR=1,k=y,numeric=0.726803
NR=2,k=i,numeric=2
NR=2,k=x,numeric=0.758680
NR=2,k=y,numeric=0.522151
NR=3,k=i,numeric=3
NR=3,k=x,numeric=0.204603
NR=3,k=y,numeric=0.338319
NR=4,k=i,numeric=4
NR=4,k=x,numeric=0.381399
NR=4,k=y,numeric=0.134189
NR=5,k=i,numeric=5
NR=5,k=xxx,numeric=0.573289
NR=5,k=y,numeric=0.863624
NR=6,k=i,numeric=6
NR=6,k=x,numeric=0.527126
NR=6,k=y,numeric=0.493221
NR=7,k=iii,numeric=7
NR=7,k=x,numeric=0.611784
NR=7,k=y,numeric=0.187885
NR=8,k=i,numeric=8
NR=8,k=x,numeric=0.598554
NR=8,k=yyy,numeric=0.976181
NR=9,k=i,numeric=9
NR=9,k=x,numeric=0.031442
NR=9,k=y,numeric=0.749551
NR=10,k=i,numeric=10
NR=10,k=x,numeric=0.502626
NR=10,k=y,numeric=0.952618

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (isstring(v))   {@string[NR][k]  = v}}    end{ emit @string,  "NR", "k" }
NR=1,k=a,string=pan
NR=1,k=b,string=pan
NR=2,k=a,string=eks
NR=2,k=b,string=pan
NR=3,k=aaa,string=wye
NR=3,k=b,string=wye
NR=4,k=a,string=eks
NR=4,k=bbb,string=wye
NR=5,k=a,string=wye
NR=5,k=b,string=pan
NR=6,k=a,string=zee
NR=6,k=b,string=pan
NR=7,k=a,string=eks
NR=7,k=b,string=zee
NR=8,k=a,string=zee
NR=8,k=b,string=wye
NR=9,k=aaa,string=hat
NR=9,k=bbb,string=wye
NR=10,k=a,string=pan
NR=10,k=b,string=wye

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (isbool(v))     {@bool[NR][k]    = v}}    end{ emit @bool,    "NR", "k" }

mlr --from ./reg_test/input/abixy-het put -q for (k,v in $*) {if (isbool(NR==2)) {@bool[NR][k]    = "NR==2"}} end{ emit @bool,    "NR", "k" }
NR=1,k=a,bool=NR==2
NR=1,k=b,bool=NR==2
NR=1,k=i,bool=NR==2
NR=1,k=x,bool=NR==2
NR=1,k=y,bool=NR==2
NR=2,k=a,bool=NR==2
NR=2,k=b,bool=NR==2
NR=2,k=i,bool=NR==2
NR=2,k=x,bool=NR==2
NR=2,k=y,bool=NR==2
NR=3,k=aaa,bool=NR==2
NR=3,k=b,bool=NR==2
NR=3,k=i,bool=NR==2
NR=3,k=x,bool=NR==2
NR=3,k=y,bool=NR==2
NR=4,k=a,bool=NR==2
NR=4,k=bbb,bool=NR==2
NR=4,k=i,bool=NR==2
NR=4,k=x,bool=NR==2
NR=4,k=y,bool=NR==2
NR=5,k=a,bool=NR==2
NR=5,k=b,bool=NR==2
NR=5,k=i,bool=NR==2
NR=5,k=xxx,bool=NR==2
NR=5,k=y,bool=NR==2
NR=6,k=a,bool=NR==2
NR=6,k=b,bool=NR==2
NR=6,k=i,bool=NR==2
NR=6,k=x,bool=NR==2
NR=6,k=y,bool=NR==2
NR=7,k=a,bool=NR==2
NR=7,k=b,bool=NR==2
NR=7,k=iii,bool=NR==2
NR=7,k=x,bool=NR==2
NR=7,k=y,bool=NR==2
NR=8,k=a,bool=NR==2
NR=8,k=b,bool=NR==2
NR=8,k=i,bool=NR==2
NR=8,k=x,bool=NR==2
NR=8,k=yyy,bool=NR==2
NR=9,k=aaa,bool=NR==2
NR=9,k=bbb,bool=NR==2
NR=9,k=i,bool=NR==2
NR=9,k=x,bool=NR==2
NR=9,k=y,bool=NR==2
NR=10,k=a,bool=NR==2
NR=10,k=b,bool=NR==2
NR=10,k=i,bool=NR==2
NR=10,k=x,bool=NR==2
NR=10,k=y,bool=NR==2


================================================================
DSL TYPE-INFERENCE

mlr --xtab put $y     = $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   151

mlr --xtab put -F $y     = $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   151.000000

mlr --xtab put -S $y     = $pi1 . $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   7576

mlr --xtab filter 999   != $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76

mlr --xtab filter -F 999   != $pi1 + $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76

mlr --xtab filter -S "999" != $pi1 . $pi2 ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76

mlr --xtab put $y=abs($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put $y=abs($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put $y=abs($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=abs($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=abs($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=abs($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=abs($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put -F $y=abs($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.200000

mlr --xtab put -F $y=abs($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=abs($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=abs($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=abs($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=ceil($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   72.000000

mlr --xtab put $y=ceil($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -71.000000

mlr --xtab put $y=ceil($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=ceil($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=ceil($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75

mlr --xtab put $y=ceil($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=floor($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.000000

mlr --xtab put -F $y=floor($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -72.000000

mlr --xtab put -F $y=floor($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=floor($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=floor($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75.000000

mlr --xtab put -F $y=floor($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=round($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.000000

mlr --xtab put $y=round($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -71.000000

mlr --xtab put $y=round($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=round($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75

mlr --xtab put $y=round($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75

mlr --xtab put $y=round($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=round($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   71.000000

mlr --xtab put -F $y=round($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -71.000000

mlr --xtab put -F $y=round($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=round($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   75.000000

mlr --xtab put -F $y=round($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -75.000000

mlr --xtab put -F $y=round($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=sgn($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1.000000

mlr --xtab put $y=sgn($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1.000000

mlr --xtab put $y=sgn($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $y=sgn($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1

mlr --xtab put $y=sgn($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1

mlr --xtab put $y=sgn($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0

mlr --xtab put -F $y=sgn($pf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1.000000

mlr --xtab put -F $y=sgn($nf1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1.000000

mlr --xtab put -F $y=sgn($zf) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put -F $y=sgn($pi1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   1.000000

mlr --xtab put -F $y=sgn($ni1) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   -1.000000

mlr --xtab put -F $y=sgn($zi) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
y   0.000000

mlr --xtab put $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75
max 76

mlr --xtab put -F $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put -F $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put -F $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put -F $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75.000000
max 76.000000

mlr --xtab put $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75
max 76

mlr --xtab put -F $min=min($pf1,$pf2);$max=max($pf1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 73.400000

mlr --xtab put -F $min=min($pf1,$pi2);$max=max($pf1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 71.200000
max 76.000000

mlr --xtab put -F $min=min($pi1,$pf2);$max=max($pi1,$pf2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 73.400000
max 75.000000

mlr --xtab put -F $min=min($pi1,$pi2);$max=max($pi1,$pi2) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
min 75.000000
max 76.000000

mlr --xtab put $sum=$pf1+$pf2;$diff=$pf1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  144.600000
diff -2.200000

mlr --xtab put $sum=$pf1+$pi2;$diff=$pf1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  147.200000
diff -4.800000

mlr --xtab put $sum=$pi1+$pf2;$diff=$pi1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  148.400000
diff 1.600000

mlr --xtab put $sum=$pi1+$pi2;$diff=$pi1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  151
diff -1

mlr --xtab put -F $sum=$pf1+$pf2;$diff=$pf1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  144.600000
diff -2.200000

mlr --xtab put -F $sum=$pf1+$pi2;$diff=$pf1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  147.200000
diff -4.800000

mlr --xtab put -F $sum=$pi1+$pf2;$diff=$pi1-$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  148.400000
diff 1.600000

mlr --xtab put -F $sum=$pi1+$pi2;$diff=$pi1-$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
sum  151.000000
diff -1.000000

mlr --xtab put $prod=$pf1*$pf2;$quot=$pf1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5226.080000
quot 0.970027

mlr --xtab put $prod=$pf1*$pi2;$quot=$pf1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5411.200000
quot 0.936842

mlr --xtab put $prod=$pi1*$pf2;$quot=$pi1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5505.000000
quot 1.021798

mlr --xtab put $prod=$pi1*$pi2;$quot=$pi1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5700
quot 0.986842

mlr --xtab put -F $prod=$pf1*$pf2;$quot=$pf1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5226.080000
quot 0.970027

mlr --xtab put -F $prod=$pf1*$pi2;$quot=$pf1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5411.200000
quot 0.936842

mlr --xtab put -F $prod=$pi1*$pf2;$quot=$pi1/$pf2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5505.000000
quot 1.021798

mlr --xtab put -F $prod=$pi1*$pi2;$quot=$pi1/$pi2 ./reg_test/input/mixed-types.xtab
pf1  71.2
nf1  -71.2
zf   0.0
pf2  73.4
nf2  -73.4
pi1  75
ni1  -75
zi   0
pi2  76
ni2  -76
prod 5700.000000
quot 0.986842

mlr --xtab put $iquot=$pf1//$pf2;$mod=$pf1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put $iquot=$pf1//$pi2;$mod=$pf1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put $iquot=$pi1//$pf2;$mod=$pi1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 1.000000
mod   1.600000

mlr --xtab put $iquot=$pi1//$pi2;$mod=$pi1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0
mod   75

mlr --xtab put -F $iquot=$pf1//$pf2;$mod=$pf1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put -F $iquot=$pf1//$pi2;$mod=$pf1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   71.200000

mlr --xtab put -F $iquot=$pi1//$pf2;$mod=$pi1%$pf2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 1.000000
mod   1.600000

mlr --xtab put -F $iquot=$pi1//$pi2;$mod=$pi1%$pi2 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
iquot 0.000000
mod   75.000000

mlr --xtab put $a=roundm($pf1,10.0);$b=roundm($pf1,-10.0) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   70.000000
b   70.000000

mlr --xtab put $a=roundm($pf1,10)  ;$b=roundm($pf1,-10)   ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   70.000000
b   70.000000

mlr --xtab put $a=roundm($pi1,10.0);$b=roundm($pi1,-10.0) ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   80.000000
b   80.000000

mlr --xtab put $a=roundm($pi1,10)  ;$b=roundm($pi1,-10)   ./reg_test/input/mixed-types.xtab
pf1 71.2
nf1 -71.2
zf  0.0
pf2 73.4
nf2 -73.4
pi1 75
ni1 -75
zi  0
pi2 76
ni2 -76
a   70
b   70


================================================================
DSL SCIENTIFIC NOTATION IN FIELD VALUES

mlr --opprint put $y=$x+1 ./reg_test/input/scinot.dkvp
x       y
123     124
123.    124.000000
123.4   124.400000
.234    1.234000
1e2     101.000000
1e-2    1.010000
1.2e3   1201.000000
1.e3    1001.000000
1.2e-3  1.001200
1.e-3   1.001000
.2e3    201.000000
.2e-3   1.000200
1.e-3   1.001000
-123    -122
-123.   -122.000000
-123.4  -122.400000
-.234   0.766000
-1e2    -99.000000
-1e-2   0.990000
-1.2e3  -1199.000000
-1.e3   -999.000000
-1.2e-3 0.998800
-1.e-3  0.999000
-.2e3   -199.000000
-.2e-3  0.999800
-1.e-3  0.999000


================================================================
DSL SCIENTIFIC NOTATION IN EXPRESSION LITERALS

mlr --opprint put $y = 123     + $i ./reg_test/input/scinot1.dkvp
i y
1 124

mlr --opprint put $y = 123.    + $i ./reg_test/input/scinot1.dkvp
i y
1 124.000000

mlr --opprint put $y = 123.4   + $i ./reg_test/input/scinot1.dkvp
i y
1 124.400000

mlr --opprint put $y = .234    + $i ./reg_test/input/scinot1.dkvp
i y
1 1.234000

mlr --opprint put $y = 1e2     + $i ./reg_test/input/scinot1.dkvp
i y
1 101.000000

mlr --opprint put $y = 1e-2    + $i ./reg_test/input/scinot1.dkvp
i y
1 1.010000

mlr --opprint put $y = 1.2e3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1201.000000

mlr --opprint put $y = 1.e3    + $i ./reg_test/input/scinot1.dkvp
i y
1 1001.000000

mlr --opprint put $y = 1.2e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 1.001200

mlr --opprint put $y = 1.e-3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1.001000

mlr --opprint put $y = .2e3    + $i ./reg_test/input/scinot1.dkvp
i y
1 201.000000

mlr --opprint put $y = .2e-3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1.000200

mlr --opprint put $y = 1.e-3   + $i ./reg_test/input/scinot1.dkvp
i y
1 1.001000

mlr --opprint put $y = -123    + $i ./reg_test/input/scinot1.dkvp
i y
1 -122

mlr --opprint put $y = -123.   + $i ./reg_test/input/scinot1.dkvp
i y
1 -122.000000

mlr --opprint put $y = -123.4  + $i ./reg_test/input/scinot1.dkvp
i y
1 -122.400000

mlr --opprint put $y = -.234   + $i ./reg_test/input/scinot1.dkvp
i y
1 0.766000

mlr --opprint put $y = -1e2    + $i ./reg_test/input/scinot1.dkvp
i y
1 -99.000000

mlr --opprint put $y = -1e-2   + $i ./reg_test/input/scinot1.dkvp
i y
1 0.990000

mlr --opprint put $y = -1.2e3  + $i ./reg_test/input/scinot1.dkvp
i y
1 -1199.000000

mlr --opprint put $y = -1.e3   + $i ./reg_test/input/scinot1.dkvp
i y
1 -999.000000

mlr --opprint put $y = -1.2e-3 + $i ./reg_test/input/scinot1.dkvp
i y
1 0.998800

mlr --opprint put $y = -1.e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 0.999000

mlr --opprint put $y = -.2e3   + $i ./reg_test/input/scinot1.dkvp
i y
1 -199.000000

mlr --opprint put $y = -.2e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 0.999800

mlr --opprint put $y = -1.e-3  + $i ./reg_test/input/scinot1.dkvp
i y
1 0.999000


================================================================
DSL FROM-FILE FEATURE

mlr put -f ./reg_test/input/put-example.dsl ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,xy=0.495106,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,xy=0.584297,ab=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567,ab=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye

mlr filter -f ./reg_test/input/filter-example.dsl ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
FROM-FILE FLAG

mlr --from ./reg_test/input/abixy put -f ./reg_test/input/put-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,xy=0.495106,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,xy=0.584297,ab=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567,ab=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye

mlr --from ./reg_test/input/abixy filter -f ./reg_test/input/filter-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy --from ./reg_test/input/abixy-het put -f ./reg_test/input/put-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wyewye
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=ekswye
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,xy=0.495106,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,xy=0.584297,ab=zeewye
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567,ab=hatwye
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,xy=0.252048,ab=panpan
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,xy=0.396146,ab=ekspan
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,xy=0.069221,ab=wye
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,xy=0.051180,ab=eks
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729,xy=0.863624,ab=wyepan
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,xy=0.259990,ab=zeepan
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,xy=0.114945,ab=ekszee
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006,xy=0.598554,ab=zeewye
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,xy=0.023567
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,xy=0.478811,ab=panwye

mlr --from ./reg_test/input/abixy --from ./reg_test/input/abixy-het filter -f ./reg_test/input/filter-example.dsl
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
UTF-8 STRLEN

mlr --inidx --ifs comma --oxtab put $s1=strlen($1);$s2=strlen($2);$s3=strlen($3);$s4=strlen($4) ./reg_test/input/utf8-align.dkvp
1  191º=test
2  1912=test2
3  cois=çais
4  çois=cais
s1 9
s2 10
s3 9
s4 9

1  191º=test
2  1912=test2
3  ois=çais
4  çois=cais
s1 9
s2 10
s3 8
s4 9

1  191º=test
2  1912=test2
3  coise=çais
4  çois=cais
s1 9
s2 10
s3 10
s4 9


================================================================
STATS1/STEP INT/FLOAT

mlr --opprint step -a rsum,delta,counter -f x,y,z ./reg_test/input/int-float.dkvp
x y    z    x_rsum x_delta x_counter y_rsum    y_delta  y_counter z_rsum    z_delta   z_counter
1 10.1 20   1      0       1         10.100000 0        1         20        0         1
2 10.2 30   3      1       2         20.300000 0.100000 2         50        10        2
3 10.3 40.8 6      1       3         30.600000 0.100000 3         90.800000 10.800000 3

mlr --opprint step -F -a rsum,delta,counter -f x,y,z ./reg_test/input/int-float.dkvp
x y    z    x_rsum   x_delta  x_counter y_rsum    y_delta  y_counter z_rsum    z_delta   z_counter
1 10.1 20   1.000000 0.000000 1.000000  10.100000 0.000000 1.000000  20.000000 0.000000  1.000000
2 10.2 30   3.000000 1.000000 2.000000  20.300000 0.100000 2.000000  50.000000 10.000000 2.000000
3 10.3 40.8 6.000000 1.000000 3.000000  30.600000 0.100000 3.000000  90.800000 10.800000 3.000000

mlr --oxtab stats1 -a min,max,sum,count -f x,y,z ./reg_test/input/int-float.dkvp
x_min   1
x_max   3
x_sum   6
x_count 3
y_min   10.100000
y_max   10.300000
y_sum   30.600000
y_count 3
z_min   20.000000
z_max   40.800000
z_sum   90.800000
z_count 3

mlr --oxtab stats1 -F -a min,max,sum,count -f x,y,z ./reg_test/input/int-float.dkvp
x_min   1.000000
x_max   3.000000
x_sum   6.000000
x_count 3.000000
y_min   10.100000
y_max   10.300000
y_sum   30.600000
y_count 3.000000
z_min   20.000000
z_max   40.800000
z_sum   90.800000
z_count 3.000000


================================================================
DSL PYTHONIC DIVISION

mlr --xtab put $quot=$pf1/10.0;$iquot=$pf1//10.0;$mod=$pf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   1.200000

mlr --xtab put $quot=$pi1/10  ;$iquot=$pi1//10  ;$mod=$pi1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7
mod   5

mlr --xtab put $quot=$nf1/10.0;$iquot=$nf1//10.0;$mod=$nf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   8.800000

mlr --xtab put $quot=$ni1/10  ;$iquot=$ni1//10  ;$mod=$ni1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8
mod   5

mlr --xtab put -F $quot=$pf1/10.0;$iquot=$pf1//10.0;$mod=$pf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   1.200000

mlr --xtab put -F $quot=$pi1/10  ;$iquot=$pi1//10  ;$mod=$pi1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7.000000
mod   5.000000

mlr --xtab put -F $quot=$nf1/10.0;$iquot=$nf1//10.0;$mod=$nf1%10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   8.800000

mlr --xtab put -F $quot=$ni1/10  ;$iquot=$ni1//10  ;$mod=$ni1%10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8.000000
mod   5.000000

mlr --xtab put $quot=$pf1/-10.0;$iquot=$pf1//-10.0;$mod=$pf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   -8.800000

mlr --xtab put $quot=$pi1/-10  ;$iquot=$pi1//-10  ;$mod=$pi1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8
mod   -5

mlr --xtab put $quot=$nf1/-10.0;$iquot=$nf1//-10.0;$mod=$nf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   -1.200000

mlr --xtab put $quot=$ni1/-10  ;$iquot=$ni1//-10  ;$mod=$ni1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7
mod   -5

mlr --xtab put -F $quot=$pf1/-10.0;$iquot=$pf1//-10.0;$mod=$pf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.120000
iquot -8.000000
mod   -8.800000

mlr --xtab put -F $quot=$pi1/-10  ;$iquot=$pi1//-10  ;$mod=$pi1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  -7.500000
iquot -8.000000
mod   -5.000000

mlr --xtab put -F $quot=$nf1/-10.0;$iquot=$nf1//-10.0;$mod=$nf1%-10.0 ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.120000
iquot 7.000000
mod   -1.200000

mlr --xtab put -F $quot=$ni1/-10  ;$iquot=$ni1//-10  ;$mod=$ni1%-10   ./reg_test/input/mixed-types.xtab
pf1   71.2
nf1   -71.2
zf    0.0
pf2   73.4
nf2   -73.4
pi1   75
ni1   -75
zi    0
pi2   76
ni2   -76
quot  7.500000
iquot 7.000000
mod   -5.000000


================================================================
DSL REGEX MATCHING

mlr filter -v $x =~ "bcd" ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="bcd", type=strnum_literal.
x=abcd,y=ghi
x=abcde,y=ghi

mlr filter -v $x =~ "^bcd" ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^bcd", type=strnum_literal.

mlr filter -v $x =~ "^abc" ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^abc", type=strnum_literal.
x=abc,y=def
x=abcd,y=ghi
x=abcde,y=ghi

mlr filter -v $x =~ "^abc$" ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^abc$", type=strnum_literal.
x=abc,y=def

mlr filter -v $x =~ "^a.*d$" ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^a.*d$", type=strnum_literal.
x=abcd,y=ghi

mlr filter -v $x =~ "^a.*"."d$" ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text=".", type=operator:
            text="^a.*", type=strnum_literal.
            text="d$", type=strnum_literal.
x=abcd,y=ghi

mlr filter -v $y =~ "\".." ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="y", type=field_name.
        text=""..", type=strnum_literal.
x=ABCDE,y="GHI"

mlr filter -v $x =~ "bcd"i ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="bcd", type=regexi.
x=abcd,y=ghi
x=ABCD,y=GHI
x=abcde,y=ghi
x=ABCDE,y=GHI
x=ABCDE,y="GHI"

mlr filter -v $x =~ "^bcd"i ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^bcd", type=regexi.

mlr filter -v $x =~ "^abc"i ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^abc", type=regexi.
x=abc,y=def
x=ABC,y=DEF
x=abcd,y=ghi
x=ABCD,y=GHI
x=abcde,y=ghi
x=ABCDE,y=GHI
x=ABCDE,y="GHI"

mlr filter -v $x =~ "^abc$"i ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^abc$", type=regexi.
x=abc,y=def
x=ABC,y=DEF

mlr filter -v $x =~ "^a.*d$"i ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text="^a.*d$", type=regexi.
x=abcd,y=ghi
x=ABCD,y=GHI

mlr filter -v $x =~ "^a.*"."d$"i ./reg_test/input/regex.dkvp
AST ROOT:
text="list", type=statement_list:
    text="=~", type=operator:
        text="x", type=field_name.
        text=".", type=operator:
            text="^a.*", type=strnum_literal.
            text="d$", type=regexi.
x=abcd,y=ghi


================================================================
DSL TYPED OVERLAY

mlr put $y = string($x); $z=$y.$y ./reg_test/input/int-float.dkvp
x=1,y=1,z=11
x=2,y=2,z=22
x=3,y=3,z=33

mlr put $z=string($x).string($x) ./reg_test/input/int-float.dkvp
x=1,y=10.1,z=11
x=2,y=10.2,z=22
x=3,y=10.3,z=33

mlr put $y = string($x) then put $z=$y.$y ./reg_test/input/int-float.dkvp
x=1,y=1,z=11
x=2,y=2,z=22
x=3,y=3,z=33

mlr put $a="hello" then put $b=$a." world";$z=$x+$y;$c=$b;$a=sub($b,"hello","farewell") ./reg_test/input/int-float.dkvp
x=1,y=10.1,z=11.100000,a=farewell world,b=hello world,c=hello world
x=2,y=10.2,z=12.200000,a=farewell world,b=hello world,c=hello world
x=3,y=10.3,z=13.300000,a=farewell world,b=hello world,c=hello world


================================================================
DSL REGEX CAPTURES

mlr --opprint put $FIELD =~ "([A-Z]+)([0-9]+)";         $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1  F2  F3
ABC123            ABC 123 -
ABC..123          -   -   -
..ABC..123..      -   -   -
none of the above -   -   -

mlr --opprint put $FIELD =~ "([A-Z]+)[^0-9]*([0-9]+)";  $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1  F2  F3
ABC123            ABC 123 -
ABC..123          ABC 123 -
..ABC..123..      ABC 123 -
none of the above -   -   -

mlr --opprint put $FIELD =~ "([A-Z]+)([0-9]+)" then put $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1 F2 F3
ABC123            \1 \2 \3
ABC..123          \1 \2 \3
..ABC..123..      \1 \2 \3
none of the above \1 \2 \3

mlr --opprint put $FIELD =~ "([A-Z]+)[^0-9]*([0-9]+)" then put $F1="\1"; $F2="\2"; $F3="\3" ./reg_test/input/capture.dkvp
FIELD             F1 F2 F3
ABC123            \1 \2 \3
ABC..123          \1 \2 \3
..ABC..123..      \1 \2 \3
none of the above \1 \2 \3

mlr --opprint put        $FIELD =~ "....."; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -     -  -  -  -  -  -  -  -  -
a            -     -  -  -  -  -  -  -  -  -
ab           -     -  -  -  -  -  -  -  -  -
abc          -     -  -  -  -  -  -  -  -  -
abcd         -     -  -  -  -  -  -  -  -  -
abcde        abcde -  -  -  -  -  -  -  -  -
abcdef       abcde -  -  -  -  -  -  -  -  -
abcdefg      abcde -  -  -  -  -  -  -  -  -
abcdefgh     abcde -  -  -  -  -  -  -  -  -
abcdefghi    abcde -  -  -  -  -  -  -  -  -
abcdefghij   abcde -  -  -  -  -  -  -  -  -
abcdefghijk  abcde -  -  -  -  -  -  -  -  -
abcdefghijkl abcde -  -  -  -  -  -  -  -  -

mlr --opprint put        $FIELD =~ "....." {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd

FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde -  -  -  -  -  -  -  -  -
abcdef       abcde -  -  -  -  -  -  -  -  -
abcdefg      abcde -  -  -  -  -  -  -  -  -
abcdefgh     abcde -  -  -  -  -  -  -  -  -
abcdefghi    abcde -  -  -  -  -  -  -  -  -
abcdefghij   abcde -  -  -  -  -  -  -  -  -
abcdefghijk  abcde -  -  -  -  -  -  -  -  -
abcdefghijkl abcde -  -  -  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "....."; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde -  -  -  -  -  -  -  -  -
abcdef       abcde -  -  -  -  -  -  -  -  -
abcdefg      abcde -  -  -  -  -  -  -  -  -
abcdefgh     abcde -  -  -  -  -  -  -  -  -
abcdefghi    abcde -  -  -  -  -  -  -  -  -
abcdefghij   abcde -  -  -  -  -  -  -  -  -
abcdefghijk  abcde -  -  -  -  -  -  -  -  -
abcdefghijkl abcde -  -  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)";                            $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -  -  -  -  -  -  -  -  -  -
a            a  a  -  -  -  -  -  -  -  -
ab           a  a  -  -  -  -  -  -  -  -
abc          a  a  -  -  -  -  -  -  -  -
abcd         a  a  -  -  -  -  -  -  -  -
abcde        a  a  -  -  -  -  -  -  -  -
abcdef       a  a  -  -  -  -  -  -  -  -
abcdefg      a  a  -  -  -  -  -  -  -  -
abcdefgh     a  a  -  -  -  -  -  -  -  -
abcdefghi    a  a  -  -  -  -  -  -  -  -
abcdefghij   a  a  -  -  -  -  -  -  -  -
abcdefghijk  a  a  -  -  -  -  -  -  -  -
abcdefghijkl a  a  -  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)";                         $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -  -  -  -  -  -  -  -  -  -
a            -  -  -  -  -  -  -  -  -  -
ab           ab a  b  -  -  -  -  -  -  -
abc          ab a  b  -  -  -  -  -  -  -
abcd         ab a  b  -  -  -  -  -  -  -
abcde        ab a  b  -  -  -  -  -  -  -
abcdef       ab a  b  -  -  -  -  -  -  -
abcdefg      ab a  b  -  -  -  -  -  -  -
abcdefgh     ab a  b  -  -  -  -  -  -  -
abcdefghi    ab a  b  -  -  -  -  -  -  -
abcdefghij   ab a  b  -  -  -  -  -  -  -
abcdefghijk  ab a  b  -  -  -  -  -  -  -
abcdefghijkl ab a  b  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)";                      $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0  F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -   -  -  -  -  -  -  -  -  -
a            -   -  -  -  -  -  -  -  -  -
ab           -   -  -  -  -  -  -  -  -  -
abc          abc a  b  c  -  -  -  -  -  -
abcd         abc a  b  c  -  -  -  -  -  -
abcde        abc a  b  c  -  -  -  -  -  -
abcdef       abc a  b  c  -  -  -  -  -  -
abcdefg      abc a  b  c  -  -  -  -  -  -
abcdefgh     abc a  b  c  -  -  -  -  -  -
abcdefghi    abc a  b  c  -  -  -  -  -  -
abcdefghij   abc a  b  c  -  -  -  -  -  -
abcdefghijk  abc a  b  c  -  -  -  -  -  -
abcdefghijkl abc a  b  c  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)";                   $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0   F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -    -  -  -  -  -  -  -  -  -
a            -    -  -  -  -  -  -  -  -  -
ab           -    -  -  -  -  -  -  -  -  -
abc          -    -  -  -  -  -  -  -  -  -
abcd         abcd a  b  c  d  -  -  -  -  -
abcde        abcd a  b  c  d  -  -  -  -  -
abcdef       abcd a  b  c  d  -  -  -  -  -
abcdefg      abcd a  b  c  d  -  -  -  -  -
abcdefgh     abcd a  b  c  d  -  -  -  -  -
abcdefghi    abcd a  b  c  d  -  -  -  -  -
abcdefghij   abcd a  b  c  d  -  -  -  -  -
abcdefghijk  abcd a  b  c  d  -  -  -  -  -
abcdefghijkl abcd a  b  c  d  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)";                $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -     -  -  -  -  -  -  -  -  -
a            -     -  -  -  -  -  -  -  -  -
ab           -     -  -  -  -  -  -  -  -  -
abc          -     -  -  -  -  -  -  -  -  -
abcd         -     -  -  -  -  -  -  -  -  -
abcde        abcde a  b  c  d  e  -  -  -  -
abcdef       abcde a  b  c  d  e  -  -  -  -
abcdefg      abcde a  b  c  d  e  -  -  -  -
abcdefgh     abcde a  b  c  d  e  -  -  -  -
abcdefghi    abcde a  b  c  d  e  -  -  -  -
abcdefghij   abcde a  b  c  d  e  -  -  -  -
abcdefghijk  abcde a  b  c  d  e  -  -  -  -
abcdefghijkl abcde a  b  c  d  e  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)";             $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0     F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -      -  -  -  -  -  -  -  -  -
a            -      -  -  -  -  -  -  -  -  -
ab           -      -  -  -  -  -  -  -  -  -
abc          -      -  -  -  -  -  -  -  -  -
abcd         -      -  -  -  -  -  -  -  -  -
abcde        -      -  -  -  -  -  -  -  -  -
abcdef       abcdef a  b  c  d  e  f  -  -  -
abcdefg      abcdef a  b  c  d  e  f  -  -  -
abcdefgh     abcdef a  b  c  d  e  f  -  -  -
abcdefghi    abcdef a  b  c  d  e  f  -  -  -
abcdefghij   abcdef a  b  c  d  e  f  -  -  -
abcdefghijk  abcdef a  b  c  d  e  f  -  -  -
abcdefghijkl abcdef a  b  c  d  e  f  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)";          $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0      F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -       -  -  -  -  -  -  -  -  -
a            -       -  -  -  -  -  -  -  -  -
ab           -       -  -  -  -  -  -  -  -  -
abc          -       -  -  -  -  -  -  -  -  -
abcd         -       -  -  -  -  -  -  -  -  -
abcde        -       -  -  -  -  -  -  -  -  -
abcdef       -       -  -  -  -  -  -  -  -  -
abcdefg      abcdefg a  b  c  d  e  f  g  -  -
abcdefgh     abcdefg a  b  c  d  e  f  g  -  -
abcdefghi    abcdefg a  b  c  d  e  f  g  -  -
abcdefghij   abcdefg a  b  c  d  e  f  g  -  -
abcdefghijk  abcdefg a  b  c  d  e  f  g  -  -
abcdefghijkl abcdefg a  b  c  d  e  f  g  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)";       $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0       F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -        -  -  -  -  -  -  -  -  -
a            -        -  -  -  -  -  -  -  -  -
ab           -        -  -  -  -  -  -  -  -  -
abc          -        -  -  -  -  -  -  -  -  -
abcd         -        -  -  -  -  -  -  -  -  -
abcde        -        -  -  -  -  -  -  -  -  -
abcdef       -        -  -  -  -  -  -  -  -  -
abcdefg      -        -  -  -  -  -  -  -  -  -
abcdefgh     abcdefgh a  b  c  d  e  f  g  h  -
abcdefghi    abcdefgh a  b  c  d  e  f  g  h  -
abcdefghij   abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijk  abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijkl abcdefgh a  b  c  d  e  f  g  h  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)";    $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0        F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -         -  -  -  -  -  -  -  -  -
a            -         -  -  -  -  -  -  -  -  -
ab           -         -  -  -  -  -  -  -  -  -
abc          -         -  -  -  -  -  -  -  -  -
abcd         -         -  -  -  -  -  -  -  -  -
abcde        -         -  -  -  -  -  -  -  -  -
abcdef       -         -  -  -  -  -  -  -  -  -
abcdefg      -         -  -  -  -  -  -  -  -  -
abcdefgh     -         -  -  -  -  -  -  -  -  -
abcdefghi    abcdefghi a  b  c  d  e  f  g  h  i
abcdefghij   abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghi a  b  c  d  e  f  g  h  i

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)"; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0         F1 F2 F3 F4 F5 F6 F7 F8 F9
-            -          -  -  -  -  -  -  -  -  -
a            -          -  -  -  -  -  -  -  -  -
ab           -          -  -  -  -  -  -  -  -  -
abc          -          -  -  -  -  -  -  -  -  -
abcd         -          -  -  -  -  -  -  -  -  -
abcde        -          -  -  -  -  -  -  -  -  -
abcdef       -          -  -  -  -  -  -  -  -  -
abcdefg      -          -  -  -  -  -  -  -  -  -
abcdefgh     -          -  -  -  -  -  -  -  -  -
abcdefghi    -          -  -  -  -  -  -  -  -  -
abcdefghij   abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghij a  b  c  d  e  f  g  h  i

mlr --opprint put $FIELD =~ "(.)"                            {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-

FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
a            a  a  -  -  -  -  -  -  -  -
ab           a  a  -  -  -  -  -  -  -  -
abc          a  a  -  -  -  -  -  -  -  -
abcd         a  a  -  -  -  -  -  -  -  -
abcde        a  a  -  -  -  -  -  -  -  -
abcdef       a  a  -  -  -  -  -  -  -  -
abcdefg      a  a  -  -  -  -  -  -  -  -
abcdefgh     a  a  -  -  -  -  -  -  -  -
abcdefghi    a  a  -  -  -  -  -  -  -  -
abcdefghij   a  a  -  -  -  -  -  -  -  -
abcdefghijk  a  a  -  -  -  -  -  -  -  -
abcdefghijkl a  a  -  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)"                         {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a

FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
ab           ab a  b  -  -  -  -  -  -  -
abc          ab a  b  -  -  -  -  -  -  -
abcd         ab a  b  -  -  -  -  -  -  -
abcde        ab a  b  -  -  -  -  -  -  -
abcdef       ab a  b  -  -  -  -  -  -  -
abcdefg      ab a  b  -  -  -  -  -  -  -
abcdefgh     ab a  b  -  -  -  -  -  -  -
abcdefghi    ab a  b  -  -  -  -  -  -  -
abcdefghij   ab a  b  -  -  -  -  -  -  -
abcdefghijk  ab a  b  -  -  -  -  -  -  -
abcdefghijkl ab a  b  -  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)"                      {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab

FIELD        F0  F1 F2 F3 F4 F5 F6 F7 F8 F9
abc          abc a  b  c  -  -  -  -  -  -
abcd         abc a  b  c  -  -  -  -  -  -
abcde        abc a  b  c  -  -  -  -  -  -
abcdef       abc a  b  c  -  -  -  -  -  -
abcdefg      abc a  b  c  -  -  -  -  -  -
abcdefgh     abc a  b  c  -  -  -  -  -  -
abcdefghi    abc a  b  c  -  -  -  -  -  -
abcdefghij   abc a  b  c  -  -  -  -  -  -
abcdefghijk  abc a  b  c  -  -  -  -  -  -
abcdefghijkl abc a  b  c  -  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)"                   {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc

FIELD        F0   F1 F2 F3 F4 F5 F6 F7 F8 F9
abcd         abcd a  b  c  d  -  -  -  -  -
abcde        abcd a  b  c  d  -  -  -  -  -
abcdef       abcd a  b  c  d  -  -  -  -  -
abcdefg      abcd a  b  c  d  -  -  -  -  -
abcdefgh     abcd a  b  c  d  -  -  -  -  -
abcdefghi    abcd a  b  c  d  -  -  -  -  -
abcdefghij   abcd a  b  c  d  -  -  -  -  -
abcdefghijk  abcd a  b  c  d  -  -  -  -  -
abcdefghijkl abcd a  b  c  d  -  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)"                {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd

FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde a  b  c  d  e  -  -  -  -
abcdef       abcde a  b  c  d  e  -  -  -  -
abcdefg      abcde a  b  c  d  e  -  -  -  -
abcdefgh     abcde a  b  c  d  e  -  -  -  -
abcdefghi    abcde a  b  c  d  e  -  -  -  -
abcdefghij   abcde a  b  c  d  e  -  -  -  -
abcdefghijk  abcde a  b  c  d  e  -  -  -  -
abcdefghijkl abcde a  b  c  d  e  -  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)"             {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde

FIELD        F0     F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdef       abcdef a  b  c  d  e  f  -  -  -
abcdefg      abcdef a  b  c  d  e  f  -  -  -
abcdefgh     abcdef a  b  c  d  e  f  -  -  -
abcdefghi    abcdef a  b  c  d  e  f  -  -  -
abcdefghij   abcdef a  b  c  d  e  f  -  -  -
abcdefghijk  abcdef a  b  c  d  e  f  -  -  -
abcdefghijkl abcdef a  b  c  d  e  f  -  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)"          {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef

FIELD        F0      F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefg      abcdefg a  b  c  d  e  f  g  -  -
abcdefgh     abcdefg a  b  c  d  e  f  g  -  -
abcdefghi    abcdefg a  b  c  d  e  f  g  -  -
abcdefghij   abcdefg a  b  c  d  e  f  g  -  -
abcdefghijk  abcdefg a  b  c  d  e  f  g  -  -
abcdefghijkl abcdefg a  b  c  d  e  f  g  -  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)"       {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef
abcdefg

FIELD        F0       F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefgh     abcdefgh a  b  c  d  e  f  g  h  -
abcdefghi    abcdefgh a  b  c  d  e  f  g  h  -
abcdefghij   abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijk  abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijkl abcdefgh a  b  c  d  e  f  g  h  -

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)"    {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh

FIELD        F0        F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghi    abcdefghi a  b  c  d  e  f  g  h  i
abcdefghij   abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghi a  b  c  d  e  f  g  h  i

mlr --opprint put $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)" {$F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9"} ./reg_test/input/capture-lengths.dkvp
FIELD
-
a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi

FIELD        F0         F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghij   abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghij a  b  c  d  e  f  g  h  i

mlr --opprint put filter $FIELD =~ "(.)";                            $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
a            a  a  -  -  -  -  -  -  -  -
ab           a  a  -  -  -  -  -  -  -  -
abc          a  a  -  -  -  -  -  -  -  -
abcd         a  a  -  -  -  -  -  -  -  -
abcde        a  a  -  -  -  -  -  -  -  -
abcdef       a  a  -  -  -  -  -  -  -  -
abcdefg      a  a  -  -  -  -  -  -  -  -
abcdefgh     a  a  -  -  -  -  -  -  -  -
abcdefghi    a  a  -  -  -  -  -  -  -  -
abcdefghij   a  a  -  -  -  -  -  -  -  -
abcdefghijk  a  a  -  -  -  -  -  -  -  -
abcdefghijkl a  a  -  -  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)";                         $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0 F1 F2 F3 F4 F5 F6 F7 F8 F9
ab           ab a  b  -  -  -  -  -  -  -
abc          ab a  b  -  -  -  -  -  -  -
abcd         ab a  b  -  -  -  -  -  -  -
abcde        ab a  b  -  -  -  -  -  -  -
abcdef       ab a  b  -  -  -  -  -  -  -
abcdefg      ab a  b  -  -  -  -  -  -  -
abcdefgh     ab a  b  -  -  -  -  -  -  -
abcdefghi    ab a  b  -  -  -  -  -  -  -
abcdefghij   ab a  b  -  -  -  -  -  -  -
abcdefghijk  ab a  b  -  -  -  -  -  -  -
abcdefghijkl ab a  b  -  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)";                      $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0  F1 F2 F3 F4 F5 F6 F7 F8 F9
abc          abc a  b  c  -  -  -  -  -  -
abcd         abc a  b  c  -  -  -  -  -  -
abcde        abc a  b  c  -  -  -  -  -  -
abcdef       abc a  b  c  -  -  -  -  -  -
abcdefg      abc a  b  c  -  -  -  -  -  -
abcdefgh     abc a  b  c  -  -  -  -  -  -
abcdefghi    abc a  b  c  -  -  -  -  -  -
abcdefghij   abc a  b  c  -  -  -  -  -  -
abcdefghijk  abc a  b  c  -  -  -  -  -  -
abcdefghijkl abc a  b  c  -  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)";                   $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0   F1 F2 F3 F4 F5 F6 F7 F8 F9
abcd         abcd a  b  c  d  -  -  -  -  -
abcde        abcd a  b  c  d  -  -  -  -  -
abcdef       abcd a  b  c  d  -  -  -  -  -
abcdefg      abcd a  b  c  d  -  -  -  -  -
abcdefgh     abcd a  b  c  d  -  -  -  -  -
abcdefghi    abcd a  b  c  d  -  -  -  -  -
abcdefghij   abcd a  b  c  d  -  -  -  -  -
abcdefghijk  abcd a  b  c  d  -  -  -  -  -
abcdefghijkl abcd a  b  c  d  -  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)";                $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0    F1 F2 F3 F4 F5 F6 F7 F8 F9
abcde        abcde a  b  c  d  e  -  -  -  -
abcdef       abcde a  b  c  d  e  -  -  -  -
abcdefg      abcde a  b  c  d  e  -  -  -  -
abcdefgh     abcde a  b  c  d  e  -  -  -  -
abcdefghi    abcde a  b  c  d  e  -  -  -  -
abcdefghij   abcde a  b  c  d  e  -  -  -  -
abcdefghijk  abcde a  b  c  d  e  -  -  -  -
abcdefghijkl abcde a  b  c  d  e  -  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)";             $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0     F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdef       abcdef a  b  c  d  e  f  -  -  -
abcdefg      abcdef a  b  c  d  e  f  -  -  -
abcdefgh     abcdef a  b  c  d  e  f  -  -  -
abcdefghi    abcdef a  b  c  d  e  f  -  -  -
abcdefghij   abcdef a  b  c  d  e  f  -  -  -
abcdefghijk  abcdef a  b  c  d  e  f  -  -  -
abcdefghijkl abcdef a  b  c  d  e  f  -  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)";          $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0      F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefg      abcdefg a  b  c  d  e  f  g  -  -
abcdefgh     abcdefg a  b  c  d  e  f  g  -  -
abcdefghi    abcdefg a  b  c  d  e  f  g  -  -
abcdefghij   abcdefg a  b  c  d  e  f  g  -  -
abcdefghijk  abcdefg a  b  c  d  e  f  g  -  -
abcdefghijkl abcdefg a  b  c  d  e  f  g  -  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)";       $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0       F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefgh     abcdefgh a  b  c  d  e  f  g  h  -
abcdefghi    abcdefgh a  b  c  d  e  f  g  h  -
abcdefghij   abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijk  abcdefgh a  b  c  d  e  f  g  h  -
abcdefghijkl abcdefgh a  b  c  d  e  f  g  h  -

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)";    $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0        F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghi    abcdefghi a  b  c  d  e  f  g  h  i
abcdefghij   abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghi a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghi a  b  c  d  e  f  g  h  i

mlr --opprint put filter $FIELD =~ "(.)(.)(.)(.)(.)(.)(.)(.)(.)(.)"; $F0=" ";$F1="\1";$F2="\2";$F3="\3";$F4="\4";$F5="\5";$F6="\6";$F7="\7";$F8="\8";$F9="\9" ./reg_test/input/capture-lengths.dkvp
FIELD        F0         F1 F2 F3 F4 F5 F6 F7 F8 F9
abcdefghij   abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijk  abcdefghij a  b  c  d  e  f  g  h  i
abcdefghijkl abcdefghij a  b  c  d  e  f  g  h  i


================================================================
DSL FILTER/PATTERN-ACTION

mlr --opprint put          $x > 0.5;  $z = "flag" ./reg_test/input/abixy
a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  flag
eks pan 2  0.7586799647899636  0.5221511083334797  flag
wye wye 3  0.20460330576630303 0.33831852551664776 flag
eks wye 4  0.38139939387114097 0.13418874328430463 flag
wye pan 5  0.5732889198020006  0.8636244699032729  flag
zee pan 6  0.5271261600918548  0.49322128674835697 flag
eks zee 7  0.6117840605678454  0.1878849191181694  flag
zee wye 8  0.5985540091064224  0.976181385699006   flag
hat wye 9  0.03144187646093577 0.7495507603507059  flag
pan wye 10 0.5026260055412137  0.9526183602969864  flag

mlr --opprint put        !($x > 0.5); $z = "flag" ./reg_test/input/abixy
a   b   i  x                   y                   z
pan pan 1  0.3467901443380824  0.7268028627434533  flag
eks pan 2  0.7586799647899636  0.5221511083334797  flag
wye wye 3  0.20460330576630303 0.33831852551664776 flag
eks wye 4  0.38139939387114097 0.13418874328430463 flag
wye pan 5  0.5732889198020006  0.8636244699032729  flag
zee pan 6  0.5271261600918548  0.49322128674835697 flag
eks zee 7  0.6117840605678454  0.1878849191181694  flag
zee wye 8  0.5985540091064224  0.976181385699006   flag
hat wye 9  0.03144187646093577 0.7495507603507059  flag
pan wye 10 0.5026260055412137  0.9526183602969864  flag

mlr --opprint put filter   $x > 0.5;  $z = "flag" ./reg_test/input/abixy
a   b   i  x                  y                   z
eks pan 2  0.7586799647899636 0.5221511083334797  flag
wye pan 5  0.5732889198020006 0.8636244699032729  flag
zee pan 6  0.5271261600918548 0.49322128674835697 flag
eks zee 7  0.6117840605678454 0.1878849191181694  flag
zee wye 8  0.5985540091064224 0.976181385699006   flag
pan wye 10 0.5026260055412137 0.9526183602969864  flag

mlr --opprint put          $x > 0.5  {$z = "flag"} ./reg_test/input/abixy
a   b   i x                  y
pan pan 1 0.3467901443380824 0.7268028627434533

a   b   i x                  y                  z
eks pan 2 0.7586799647899636 0.5221511083334797 flag

a   b   i x                   y
wye wye 3 0.20460330576630303 0.33831852551664776
eks wye 4 0.38139939387114097 0.13418874328430463

a   b   i x                  y                   z
wye pan 5 0.5732889198020006 0.8636244699032729  flag
zee pan 6 0.5271261600918548 0.49322128674835697 flag
eks zee 7 0.6117840605678454 0.1878849191181694  flag
zee wye 8 0.5985540091064224 0.976181385699006   flag

a   b   i x                   y
hat wye 9 0.03144187646093577 0.7495507603507059

a   b   i  x                  y                  z
pan wye 10 0.5026260055412137 0.9526183602969864 flag

mlr --opprint put filter !($x > 0.5); $z = "flag" ./reg_test/input/abixy
a   b   i x                   y                   z
pan pan 1 0.3467901443380824  0.7268028627434533  flag
wye wye 3 0.20460330576630303 0.33831852551664776 flag
eks wye 4 0.38139939387114097 0.13418874328430463 flag
hat wye 9 0.03144187646093577 0.7495507603507059  flag

mlr --opprint put        !($x > 0.5) {$z = "flag"} ./reg_test/input/abixy
a   b   i x                  y                  z
pan pan 1 0.3467901443380824 0.7268028627434533 flag

a   b   i x                  y
eks pan 2 0.7586799647899636 0.5221511083334797

a   b   i x                   y                   z
wye wye 3 0.20460330576630303 0.33831852551664776 flag
eks wye 4 0.38139939387114097 0.13418874328430463 flag

a   b   i x                  y
wye pan 5 0.5732889198020006 0.8636244699032729
zee pan 6 0.5271261600918548 0.49322128674835697
eks zee 7 0.6117840605678454 0.1878849191181694
zee wye 8 0.5985540091064224 0.976181385699006

a   b   i x                   y                  z
hat wye 9 0.03144187646093577 0.7495507603507059 flag

a   b   i  x                  y
pan wye 10 0.5026260055412137 0.9526183602969864


================================================================
DSL DATETIME FUNCTIONS

mlr --csvlite put $gmt = sec2gmt($sec) ./reg_test/input/sec2gmt
n,sec,gmt
1,0,1970-01-01T00:00:00Z
2,1,1970-01-01T00:00:01Z
3,10,1970-01-01T00:00:10Z
4,100,1970-01-01T00:01:40Z
5,1000,1970-01-01T00:16:40Z
6,10000,1970-01-01T02:46:40Z
7,100000,1970-01-02T03:46:40Z
8,1000000,1970-01-12T13:46:40Z
9,10000000,1970-04-26T17:46:40Z
10,100000000,1973-03-03T09:46:40Z
11,1000000000,2001-09-09T01:46:40Z
12,1432036180,2015-05-19T11:49:40Z
13,1500000000,2017-07-14T02:40:00Z
14,2000000000,2033-05-18T03:33:20Z
15,,
16,x,x
17,123x,123x

mlr --csvlite put $sec = gmt2sec($gmt) ./reg_test/input/gmt2sec
gmt,sec
1970-01-01T00:00:00Z,0
1970-01-01T00:00:01Z,1
1970-01-01T00:00:10Z,10
1970-01-01T00:01:40Z,100
1970-01-01T00:16:40Z,1000
1970-01-01T02:46:40Z,10000
1970-01-02T03:46:40Z,100000
1970-01-12T13:46:40Z,1000000
1970-04-26T17:46:40Z,10000000
1973-03-03T09:46:40Z,100000000
2001-09-09T01:46:40Z,1000000000
2015-05-19T11:49:40Z,1432036180
2017-07-14T02:40:00Z,1500000000
2033-05-18T03:33:20Z,2000000000

mlr --csvlite put $gmtdate = sec2gmtdate($sec) ./reg_test/input/sec2gmt
n,sec,gmtdate
1,0,1970-01-01
2,1,1970-01-01
3,10,1970-01-01
4,100,1970-01-01
5,1000,1970-01-01
6,10000,1970-01-01
7,100000,1970-01-02
8,1000000,1970-01-12
9,10000000,1970-04-26
10,100000000,1973-03-03
11,1000000000,2001-09-09
12,1432036180,2015-05-19
13,1500000000,2017-07-14
14,2000000000,2033-05-18
15,,
16,x,x
17,123x,123x

mlr --csvlite put $gmt = strftime($sec, "%Y-%m-%dT%H:%M:%SZ") ./reg_test/input/sec2gmt
n,sec,gmt
1,0,1970-01-01T00:00:00Z
2,1,1970-01-01T00:00:01Z
3,10,1970-01-01T00:00:10Z
4,100,1970-01-01T00:01:40Z
5,1000,1970-01-01T00:16:40Z
6,10000,1970-01-01T02:46:40Z
7,100000,1970-01-02T03:46:40Z
8,1000000,1970-01-12T13:46:40Z
9,10000000,1970-04-26T17:46:40Z
10,100000000,1973-03-03T09:46:40Z
11,1000000000,2001-09-09T01:46:40Z
12,1432036180,2015-05-19T11:49:40Z
13,1500000000,2017-07-14T02:40:00Z
14,2000000000,2033-05-18T03:33:20Z
15,,
16,x,(error)
17,123x,(error)

mlr --csvlite put $sec = strptime($gmt, "%Y-%m-%dT%H:%M:%SZ") ./reg_test/input/gmt2sec
gmt,sec
1970-01-01T00:00:00Z,0
1970-01-01T00:00:01Z,1
1970-01-01T00:00:10Z,10
1970-01-01T00:01:40Z,100
1970-01-01T00:16:40Z,1000
1970-01-01T02:46:40Z,10000
1970-01-02T03:46:40Z,100000
1970-01-12T13:46:40Z,1000000
1970-04-26T17:46:40Z,10000000
1973-03-03T09:46:40Z,100000000
2001-09-09T01:46:40Z,1000000000
2015-05-19T11:49:40Z,1432036180
2017-07-14T02:40:00Z,1500000000
2033-05-18T03:33:20Z,2000000000

mlr --csvlite sec2gmt sec ./reg_test/input/sec2gmt
n,sec
1,1970-01-01T00:00:00Z
2,1970-01-01T00:00:01Z
3,1970-01-01T00:00:10Z
4,1970-01-01T00:01:40Z
5,1970-01-01T00:16:40Z
6,1970-01-01T02:46:40Z
7,1970-01-02T03:46:40Z
8,1970-01-12T13:46:40Z
9,1970-04-26T17:46:40Z
10,1973-03-03T09:46:40Z
11,2001-09-09T01:46:40Z
12,2015-05-19T11:49:40Z
13,2017-07-14T02:40:00Z
14,2033-05-18T03:33:20Z
15,
16,x
17,123x

mlr --opprint put $hms=sec2hms($sec);   $resec=hms2sec($hms);   $diff=$resec-$sec ./reg_test/input/sec2xhms
sec     hms        resec   diff
0       00:00:00   0       0
1       00:00:01   1       0
59      00:00:59   59      0
60      00:01:00   60      0
61      00:01:01   61      0
3599    00:59:59   3599    0
3600    01:00:00   3600    0
3601    01:00:01   3601    0
86399   23:59:59   86399   0
86400   24:00:00   86400   0
86401   24:00:01   86401   0
863999  239:59:59  863999  0
864000  240:00:00  864000  0
864001  240:00:01  864001  0
-1      -00:00:01  -1      0
-59     -00:00:59  -59     0
-60     -00:01:00  -60     0
-61     -00:01:01  -61     0
-3599   -00:59:59  -3599   0
-3600   -01:00:00  -3600   0
-3601   -01:00:01  -3601   0
-86399  -23:59:59  -86399  0
-86400  -24:00:00  -86400  0
-86401  -24:00:01  -86401  0
-863999 -239:59:59 -863999 0
-864000 -240:00:00 -864000 0
-864001 -240:00:01 -864001 0

mlr --opprint put $hms=fsec2hms($sec);  $resec=hms2fsec($hms);  $diff=$resec-$sec ./reg_test/input/fsec2xhms
sec        hms               resec          diff
0.25       0:00:00.250000    0.250000       0.000000
1.25       0:00:01.250000    1.250000       0.000000
59.25      0:00:59.250000    59.250000      0.000000
60.25      0:01:00.250000    60.250000      0.000000
61.25      0:01:01.250000    61.250000      0.000000
3599.25    0:59:59.250000    3599.250000    0.000000
3600.25    1:00:00.250000    3600.250000    0.000000
3601.25    1:00:01.250000    3601.250000    0.000000
86399.25   23:59:59.250000   86399.250000   0.000000
86400.25   24:00:00.250000   86400.250000   0.000000
86401.25   24:00:01.250000   86401.250000   0.000000
863999.25  239:59:59.250000  863999.250000  0.000000
864000.25  240:00:00.250000  864000.250000  0.000000
864001.25  240:00:01.250000  864001.250000  0.000000
-0.25      -00:00:00.250000  -0.250000      0.000000
-1.25      -00:00:01.250000  -1.250000      0.000000
-59.25     -00:00:59.250000  -59.250000     0.000000
-60.25     -00:01:00.250000  -60.250000     0.000000
-61.25     -00:01:01.250000  -61.250000     0.000000
-3599.25   -00:59:59.250000  -3599.250000   0.000000
-3600.25   -01:00:00.250000  -3600.250000   0.000000
-3601.25   -01:00:01.250000  -3601.250000   0.000000
-86399.25  -23:59:59.250000  -86399.250000  0.000000
-86400.25  -24:00:00.250000  -86400.250000  0.000000
-86401.25  -24:00:01.250000  -86401.250000  0.000000
-863999.25 -239:59:59.250000 -863999.250000 0.000000
-864000.25 -240:00:00.250000 -864000.250000 0.000000
-864001.25 -240:00:01.250000 -864001.250000 0.000000

mlr --opprint put $hms=sec2dhms($sec);  $resec=dhms2sec($hms);  $diff=$resec-$sec ./reg_test/input/sec2xhms
sec     hms           resec   diff
0       0s            0       0
1       1s            1       0
59      59s           59      0
60      1m00s         60      0
61      1m01s         61      0
3599    59m59s        3599    0
3600    1h00m00s      3600    0
3601    1h00m01s      3601    0
86399   23h59m59s     86399   0
86400   1d00h00m00s   86400   0
86401   1d00h00m01s   86401   0
863999  9d23h59m59s   863999  0
864000  10d00h00m00s  864000  0
864001  10d00h00m01s  864001  0
-1      -1s           -1      0
-59     -59s          -59     0
-60     -1m00s        -60     0
-61     -1m01s        -61     0
-3599   -59m59s       -3599   0
-3600   -1h00m00s     -3600   0
-3601   -1h00m01s     -3601   0
-86399  -23h59m59s    -86399  0
-86400  -1d00h00m00s  -86400  0
-86401  -1d00h00m01s  -86401  0
-863999 -9d23h59m59s  -863999 0
-864000 -10d00h00m00s -864000 0
-864001 -10d00h00m01s -864001 0

mlr --opprint put $hms=fsec2dhms($sec); $resec=dhms2fsec($hms); $diff=$resec-$sec ./reg_test/input/fsec2xhms
sec        hms                  resec          diff
0.25       0.250000s            0.250000       0.000000
1.25       1.250000s            1.250000       0.000000
59.25      59.250000s           59.250000      0.000000
60.25      1m00.250000s         60.250000      0.000000
61.25      1m01.250000s         61.250000      0.000000
3599.25    59m59.250000s        3599.250000    0.000000
3600.25    1h00m00.250000s      3600.250000    0.000000
3601.25    1h00m01.250000s      3601.250000    0.000000
86399.25   23h59m59.250000s     86399.250000   0.000000
86400.25   1d00h00m00.250000s   86400.250000   0.000000
86401.25   1d00h00m01.250000s   86401.250000   0.000000
863999.25  9d23h59m59.250000s   863999.250000  0.000000
864000.25  10d00h00m00.250000s  864000.250000  0.000000
864001.25  10d00h00m01.250000s  864001.250000  0.000000
-0.25      -0.250000s           -0.250000      0.000000
-1.25      -1.250000s           -1.250000      0.000000
-59.25     -59.250000s          -59.250000     0.000000
-60.25     -1m00.250000s        -60.250000     0.000000
-61.25     -1m01.250000s        -61.250000     0.000000
-3599.25   -59m59.250000s       -3599.250000   0.000000
-3600.25   -1h00m00.250000s     -3600.250000   0.000000
-3601.25   -1h00m01.250000s     -3601.250000   0.000000
-86399.25  -23h59m59.250000s    -86399.250000  0.000000
-86400.25  -1d00h00m00.250000s  -86400.250000  0.000000
-86401.25  -1d00h00m01.250000s  -86401.250000  0.000000
-863999.25 -9d23h59m59.250000s  -863999.250000 0.000000
-864000.25 -10d00h00m00.250000s -864000.250000 0.000000
-864001.25 -10d00h00m01.250000s -864001.250000 0.000000

mlr --csvlite sec2gmt sec ./reg_test/input/sec2gmt
n,sec
1,1970-01-01T00:00:00Z
2,1970-01-01T00:00:01Z
3,1970-01-01T00:00:10Z
4,1970-01-01T00:01:40Z
5,1970-01-01T00:16:40Z
6,1970-01-01T02:46:40Z
7,1970-01-02T03:46:40Z
8,1970-01-12T13:46:40Z
9,1970-04-26T17:46:40Z
10,1973-03-03T09:46:40Z
11,2001-09-09T01:46:40Z
12,2015-05-19T11:49:40Z
13,2017-07-14T02:40:00Z
14,2033-05-18T03:33:20Z
15,
16,x
17,123x

mlr --csvlite sec2gmtdate sec ./reg_test/input/sec2gmt
n,sec
1,1970-01-01
2,1970-01-01
3,1970-01-01
4,1970-01-01
5,1970-01-01
6,1970-01-01
7,1970-01-02
8,1970-01-12
9,1970-04-26
10,1973-03-03
11,2001-09-09
12,2015-05-19
13,2017-07-14
14,2033-05-18
15,
16,x
17,123x


================================================================
DSL SUB/GSUB

mlr --opprint put $y = sub($x, "e.*l",        "") ./reg_test/input/sub.dat
x     y
hello ho
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*l"i,       "") ./reg_test/input/sub.dat
x     y
hello ho
HELLO HO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*"."l",     "") ./reg_test/input/sub.dat
x     y
hello ho
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*l",        "y123y") ./reg_test/input/sub.dat
x     y
hello hy123yo
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*l"i,       "y123y") ./reg_test/input/sub.dat
x     y
hello hy123yo
HELLO Hy123yO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "e.*"."l",     "y123y") ./reg_test/input/sub.dat
x     y
hello hy123yo
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "([hg])e.*l(.)", "y\1y123\2y") ./reg_test/input/sub.dat
x     y
hello yhy123oy
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "([hg])e.*l.",   "y\1y123\2y") ./reg_test/input/sub.dat
x     y
hello yhy123\2y
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x, "([hg])e.*l(.)", "y\1y123.y") ./reg_test/input/sub.dat
x     y
hello yhy123.y
HELLO HELLO
world world
WORLD WORLD

mlr --opprint put $y = sub($x,  "a",    "aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    aabcdefg
ababbabbba aababbabbba
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "a",    "aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    aabcdefg
ababbabbba aabaabbaabbbaa
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "A",    "Aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    abcdefg
ababbabbba ababbabbba
LMNOP      LMNOP
ABCDEFG    AaBCDEFG
ABABBABBBA AaBAaBBAaBBBAa

mlr --opprint put $y = gsub($x, "a"i,   "Aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    Aabcdefg
ababbabbba AabAabbAabbbAa
LMNOP      LMNOP
ABCDEFG    AaBCDEFG
ABABBABBBA AaBAaBBAaBBBAa

mlr --opprint put $y = gsub($x, "A"i,   "Aa") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    Aabcdefg
ababbabbba AabAabbAabbbAa
LMNOP      LMNOP
ABCDEFG    AaBCDEFG
ABABBABBBA AaBAaBBAaBBBAa

mlr --opprint put $y = gsub($x, "a(.)", "aa\1\1\1") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    aabbbcdefg
ababbabbba aabbbaabbbbaabbbbba
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = sub($x,  "a",    "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba babbabbba
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "a",    "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba bbbbbb
LMNOP      LMNOP
ABCDEFG    ABCDEFG
ABABBABBBA ABABBABBBA

mlr --opprint put $y = gsub($x, "A",    "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    abcdefg
ababbabbba ababbabbba
LMNOP      LMNOP
ABCDEFG    BCDEFG
ABABBABBBA BBBBBB

mlr --opprint put $y = gsub($x, "a"i,   "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba bbbbbb
LMNOP      LMNOP
ABCDEFG    BCDEFG
ABABBABBBA BBBBBB

mlr --opprint put $y = gsub($x, "A"i,   "") ./reg_test/input/gsub.dat
x          y
lmnop      lmnop
abcdefg    bcdefg
ababbabbba bbbbbb
LMNOP      LMNOP
ABCDEFG    BCDEFG
ABABBABBBA BBBBBB

mlr --oxtab cat ./reg_test/input/subtab.dkvp
x afoob

x a\tb

x a\\tb

x a	b

z 

x 

mlr --oxtab put -f ./reg_test/input/subtab1.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y a\tb

x a\\tb
y a\\tb

x a	b
y aTABb

z 

x 
y 

mlr --oxtab put -f ./reg_test/input/subtab2.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y aTABb

x a\\tb
y a\TABb

x a	b
y a	b

z 

x 
y 

mlr --oxtab put -f ./reg_test/input/subtab3.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y a\tb

x a\\tb
y a\\tb

x a	b
y a	b

z 

x 
y 

mlr --oxtab put -f ./reg_test/input/subtab4.mlr ./reg_test/input/subtab.dkvp
x afoob
y afoob

x a\tb
y a	b

x a\\tb
y a\	b

x a	b
y a	b

z 

x 
y 


================================================================
DSL OOSVARS

mlr --opprint put -v begin{@ox=0}; $d=$x-@ox; @ox=$x ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
                text="0", type=strnum_literal.
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="-", type=operator:
            text="x", type=field_name.
            text="oosvar_keylist", type=oosvar_keylist:
                text="ox", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="ox", type=string_literal.
        text="x", type=field_name.
a   b   i  x                   y                   d
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790
eks pan 2  0.7586799647899636  0.5221511083334797  0.411890
wye wye 3  0.20460330576630303 0.33831852551664776 -0.554077
eks wye 4  0.38139939387114097 0.13418874328430463 0.176796
wye pan 5  0.5732889198020006  0.8636244699032729  0.191890
zee pan 6  0.5271261600918548  0.49322128674835697 -0.046163
eks zee 7  0.6117840605678454  0.1878849191181694  0.084658
zee wye 8  0.5985540091064224  0.976181385699006   -0.013230
hat wye 9  0.03144187646093577 0.7495507603507059  -0.567112
pan wye 10 0.5026260055412137  0.9526183602969864  0.471184

mlr --opprint put -v begin{@ox="no"}; $d=@ox == "no" ? 1.0 : $x/@ox; @ox=$x then step -a ratio -f x ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
                text="no", type=strnum_literal.
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="? :", type=operator:
            text="==", type=operator:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
                text="no", type=strnum_literal.
            text="1.0", type=strnum_literal.
            text="/", type=operator:
                text="x", type=field_name.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="ox", type=string_literal.
        text="x", type=field_name.
a   b   i  x                   y                   d         x_ratio
pan pan 1  0.3467901443380824  0.7268028627434533  1.000000  1.000000
eks pan 2  0.7586799647899636  0.5221511083334797  2.187721  2.187721
wye wye 3  0.20460330576630303 0.33831852551664776 0.269683  0.269683
eks wye 4  0.38139939387114097 0.13418874328430463 1.864092  1.864092
wye pan 5  0.5732889198020006  0.8636244699032729  1.503120  1.503120
zee pan 6  0.5271261600918548  0.49322128674835697 0.919477  0.919477
eks zee 7  0.6117840605678454  0.1878849191181694  1.160603  1.160603
zee wye 8  0.5985540091064224  0.976181385699006   0.978375  0.978375
hat wye 9  0.03144187646093577 0.7495507603507059  0.052530  0.052530
pan wye 10 0.5026260055412137  0.9526183602969864  15.985878 15.985878

mlr --opprint put -v $d=$x/@ox; @ox=$x then step -a ratio -f x ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="/", type=operator:
            text="x", type=field_name.
            text="oosvar_keylist", type=oosvar_keylist:
                text="ox", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="ox", type=string_literal.
        text="x", type=field_name.
a   b   i  x                   y                   d         x_ratio
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790  1.000000
eks pan 2  0.7586799647899636  0.5221511083334797  2.187721  2.187721
wye wye 3  0.20460330576630303 0.33831852551664776 0.269683  0.269683
eks wye 4  0.38139939387114097 0.13418874328430463 1.864092  1.864092
wye pan 5  0.5732889198020006  0.8636244699032729  1.503120  1.503120
zee pan 6  0.5271261600918548  0.49322128674835697 0.919477  0.919477
eks zee 7  0.6117840605678454  0.1878849191181694  1.160603  1.160603
zee wye 8  0.5985540091064224  0.976181385699006   0.978375  0.978375
hat wye 9  0.03144187646093577 0.7495507603507059  0.052530  0.052530
pan wye 10 0.5026260055412137  0.9526183602969864  15.985878 15.985878

mlr --opprint put -v begin{@ox="no"}; $d=@ox == "no" ? 1.0 : $x/@ox; @ox=$x then step -a ratio -f x ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
                text="no", type=strnum_literal.
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="? :", type=operator:
            text="==", type=operator:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
                text="no", type=strnum_literal.
            text="1.0", type=strnum_literal.
            text="/", type=operator:
                text="x", type=field_name.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="ox", type=string_literal.
        text="x", type=field_name.
a   b   i  x                   y                   d         x_ratio
pan pan 1  0.3467901443380824  0.7268028627434533  1.000000  1.000000
eks pan 2  0.7586799647899636  0.5221511083334797  2.187721  2.187721
wye wye 3  0.20460330576630303 0.33831852551664776 0.269683  0.269683
eks wye 4  0.38139939387114097 0.13418874328430463 1.864092  1.864092
wye pan 5  0.5732889198020006  0.8636244699032729  1.503120  1.503120
zee pan 6  0.5271261600918548  0.49322128674835697 0.919477  0.919477
eks zee 7  0.6117840605678454  0.1878849191181694  1.160603  1.160603
zee wye 8  0.5985540091064224  0.976181385699006   0.978375  0.978375
hat wye 9  0.03144187646093577 0.7495507603507059  0.052530  0.052530
pan wye 10 0.5026260055412137  0.9526183602969864  15.985878 15.985878

mlr --opprint put -v begin{@rsum = 0}; @rsum = @rsum + $x; $rsum = @rsum ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="rsum", type=string_literal.
                text="0", type=strnum_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="rsum", type=string_literal.
        text="+", type=operator:
            text="oosvar_keylist", type=oosvar_keylist:
                text="rsum", type=string_literal.
            text="x", type=field_name.
    text="=", type=srec_assignment:
        text="rsum", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="rsum", type=string_literal.
a   b   i  x                   y                   rsum
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790
eks pan 2  0.7586799647899636  0.5221511083334797  1.105470
wye wye 3  0.20460330576630303 0.33831852551664776 1.310073
eks wye 4  0.38139939387114097 0.13418874328430463 1.691473
wye pan 5  0.5732889198020006  0.8636244699032729  2.264762
zee pan 6  0.5271261600918548  0.49322128674835697 2.791888
eks zee 7  0.6117840605678454  0.1878849191181694  3.403672
zee wye 8  0.5985540091064224  0.976181385699006   4.002226
hat wye 9  0.03144187646093577 0.7495507603507059  4.033668
pan wye 10 0.5026260055412137  0.9526183602969864  4.536294

mlr --opprint put -v begin{@a=0; @b=0; @c=0}; $za=@a; $zb=@b; $zc=@c; $d=@a+@b+@c; @a=@b; @b=@c; @c=$i ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="0", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="b", type=string_literal.
                text="0", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="c", type=string_literal.
                text="0", type=strnum_literal.
    text="=", type=srec_assignment:
        text="za", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="a", type=string_literal.
    text="=", type=srec_assignment:
        text="zb", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
    text="=", type=srec_assignment:
        text="zc", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="+", type=operator:
            text="+", type=operator:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="b", type=string_literal.
            text="oosvar_keylist", type=oosvar_keylist:
                text="c", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="a", type=string_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
        text="i", type=field_name.
a   b   i  x                   y                   za zb zc d
pan pan 1  0.3467901443380824  0.7268028627434533  0  0  0  0
eks pan 2  0.7586799647899636  0.5221511083334797  0  0  1  1
wye wye 3  0.20460330576630303 0.33831852551664776 0  1  2  3
eks wye 4  0.38139939387114097 0.13418874328430463 1  2  3  6
wye pan 5  0.5732889198020006  0.8636244699032729  2  3  4  9
zee pan 6  0.5271261600918548  0.49322128674835697 3  4  5  12
eks zee 7  0.6117840605678454  0.1878849191181694  4  5  6  15
zee wye 8  0.5985540091064224  0.976181385699006   5  6  7  18
hat wye 9  0.03144187646093577 0.7495507603507059  6  7  8  21
pan wye 10 0.5026260055412137  0.9526183602969864  7  8  9  24

mlr --opprint put -v begin {@a=0; @b=0; @c=0}; $za=@a; $zb=@b; $zc=@c; $d=@a+@b+@c; @a=@b; @b=@c; @c=$i ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="0", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="b", type=string_literal.
                text="0", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="c", type=string_literal.
                text="0", type=strnum_literal.
    text="=", type=srec_assignment:
        text="za", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="a", type=string_literal.
    text="=", type=srec_assignment:
        text="zb", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
    text="=", type=srec_assignment:
        text="zc", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="+", type=operator:
            text="+", type=operator:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="b", type=string_literal.
            text="oosvar_keylist", type=oosvar_keylist:
                text="c", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="a", type=string_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
        text="i", type=field_name.
a   b   i  x                   y                   za zb zc d
pan pan 1  0.3467901443380824  0.7268028627434533  0  0  0  0
eks pan 2  0.7586799647899636  0.5221511083334797  0  0  1  1
wye wye 3  0.20460330576630303 0.33831852551664776 0  1  2  3
eks wye 4  0.38139939387114097 0.13418874328430463 1  2  3  6
wye pan 5  0.5732889198020006  0.8636244699032729  2  3  4  9
zee pan 6  0.5271261600918548  0.49322128674835697 3  4  5  12
eks zee 7  0.6117840605678454  0.1878849191181694  4  5  6  15
zee wye 8  0.5985540091064224  0.976181385699006   5  6  7  18
hat wye 9  0.03144187646093577 0.7495507603507059  6  7  8  21
pan wye 10 0.5026260055412137  0.9526183602969864  7  8  9  24

mlr --opprint put -v begin{@ox=0}; $d=$x-@ox; @ox=$x ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="ox", type=string_literal.
                text="0", type=strnum_literal.
    text="=", type=srec_assignment:
        text="d", type=field_name.
        text="-", type=operator:
            text="x", type=field_name.
            text="oosvar_keylist", type=oosvar_keylist:
                text="ox", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="ox", type=string_literal.
        text="x", type=field_name.
a   b   i  x                   y                   d
pan pan 1  0.3467901443380824  0.7268028627434533  0.346790
eks pan 2  0.7586799647899636  0.5221511083334797  0.411890
wye wye 3  0.20460330576630303 0.33831852551664776 -0.554077
eks wye 4  0.38139939387114097 0.13418874328430463 0.176796
wye pan 5  0.5732889198020006  0.8636244699032729  0.191890
zee pan 6  0.5271261600918548  0.49322128674835697 -0.046163
eks zee 7  0.6117840605678454  0.1878849191181694  0.084658
zee wye 8  0.5985540091064224  0.976181385699006   -0.013230
hat wye 9  0.03144187646093577 0.7495507603507059  -0.567112
pan wye 10 0.5026260055412137  0.9526183602969864  0.471184

mlr put -v @a=$a; @b=$b; @c=$x; end {emitf @a; emitf @b; emitf @c} ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="a", type=string_literal.
        text="a", type=field_name.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
        text="b", type=field_name.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
        text="x", type=field_name.
    text="end", type=end:
        text="list", type=statement_list:
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="a", type=string_literal.
                text="stream", type=stream:
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="b", type=string_literal.
                text="stream", type=stream:
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="c", type=string_literal.
                text="stream", type=stream:
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan
b=wye
c=0.502626

mlr put -v @a=$a; @b=$b; @c=$x; end{emitf @a, @b, @c} ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="a", type=string_literal.
        text="a", type=field_name.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="b", type=string_literal.
        text="b", type=field_name.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="c", type=string_literal.
        text="x", type=field_name.
    text="end", type=end:
        text="list", type=statement_list:
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="a", type=string_literal.
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="b", type=string_literal.
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="c", type=string_literal.
                text="stream", type=stream:
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=wye,c=0.502626

mlr --opprint put -v begin {@count=0; @sum=0.0}; @count=@count+1; @sum=@sum+$x; end{@mean=@sum/@count; emitf @mean} ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="count", type=string_literal.
                text="0", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="sum", type=string_literal.
                text="0.0", type=strnum_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="count", type=string_literal.
        text="+", type=operator:
            text="oosvar_keylist", type=oosvar_keylist:
                text="count", type=string_literal.
            text="1", type=strnum_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="sum", type=string_literal.
        text="+", type=operator:
            text="oosvar_keylist", type=oosvar_keylist:
                text="sum", type=string_literal.
            text="x", type=field_name.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="mean", type=string_literal.
                text="/", type=operator:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="sum", type=string_literal.
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="count", type=string_literal.
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="mean", type=string_literal.
                text="stream", type=stream:
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mean
0.453629

mlr --opprint put -v end{@mean=@sum/@count; emitf @mean}; begin {@count=0; @sum=0.0}; @count=@count+1; @sum=@sum+$x ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="mean", type=string_literal.
                text="/", type=operator:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="sum", type=string_literal.
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="count", type=string_literal.
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="mean", type=string_literal.
                text="stream", type=stream:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="count", type=string_literal.
                text="0", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="sum", type=string_literal.
                text="0.0", type=strnum_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="count", type=string_literal.
        text="+", type=operator:
            text="oosvar_keylist", type=oosvar_keylist:
                text="count", type=string_literal.
            text="1", type=strnum_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="sum", type=string_literal.
        text="+", type=operator:
            text="oosvar_keylist", type=oosvar_keylist:
                text="sum", type=string_literal.
            text="x", type=field_name.
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mean
0.453629

mlr put -v begin{ @a = @b[1] }; $c = @d; @e[$i][2+$j][3] = $4; end{@f[@g[5][@h]] = 6} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="b", type=string_literal.
                    text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="c", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="d", type=string_literal.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="e", type=string_literal.
            text="i", type=field_name.
            text="+", type=operator:
                text="2", type=strnum_literal.
                text="j", type=field_name.
            text="3", type=strnum_literal.
        text="4", type=field_name.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="f", type=string_literal.
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="g", type=string_literal.
                        text="5", type=strnum_literal.
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="h", type=string_literal.
                text="6", type=strnum_literal.

mlr put @y[$a]=$y; end{dump} ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
{
  "y": {
    "pan": 0.952618,
    "eks": 0.187885,
    "wye": 0.863624,
    "zee": 0.976181,
    "hat": 0.749551
  }
}

mlr stats1 -a sum -f y -g a ./reg_test/input/abixy
a=pan,y_sum=1.679421
a=eks,y_sum=0.844225
a=wye,y_sum=1.201943
a=zee,y_sum=1.469403
a=hat,y_sum=0.749551

mlr put @y_sum[$a] = $y; end{dump} ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
{
  "y_sum": {
    "pan": 0.952618,
    "eks": 0.187885,
    "wye": 0.863624,
    "zee": 0.976181,
    "hat": 0.749551
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @s      ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t      ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "u": {
    "1": {
      "2": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t[1]   ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "u": {
    "1": {
      "2": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u      ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1]   ; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1][2]; dump} ./reg_test/input/unset1.dkvp
{
  "s": 9,
  "t": {
    "1": 9
  },
  "u": {
    "1": {
      "2": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @s      ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t      ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @t[1]   ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u      ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1]   ; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @u[1][2]; dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset all;      dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
}

mlr put -q @s=$x; @t[$a]=$x; @u[$a][$b]=$x; end{dump; unset @*;       dump} ./reg_test/input/unset4.dkvp
{
  "s": 9,
  "t": {
    "1": 9,
    "4": 9
  },
  "u": {
    "1": {
      "2": 9,
      "3": 9
    },
    "4": {
      "5": 9,
      "6": 9
    }
  }
}
{
}

mlr put unset $x ./reg_test/input/unset4.dkvp
a=1,b=2
a=1,b=3
a=4,b=5
a=4,b=6

mlr put unset $*; $aaa = 999 ./reg_test/input/unset4.dkvp
aaa=999
aaa=999
aaa=999
aaa=999

mlr put -q @{variable.name} += $x; end{emit @{variable.name}} ./reg_test/input/abixy
variable.name=4.536294

mlr put -q @{variable.name}[$a] += $x; end{emit @{variable.name},"a"} ./reg_test/input/abixy
a=pan,variable.name=0.849416
a=eks,variable.name=1.751863
a=wye,variable.name=0.777892
a=zee,variable.name=1.125680
a=hat,variable.name=0.031442

mlr put for (k,v in $*) { if (k == "i") {unset $[k]}} ./reg_test/input/abixy
a=pan,b=pan,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,x=0.5026260055412137,y=0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @output[NR] = $*;
  end {
    for ((nr, k), v in @output) {
      if (nr == 4 || k == "i") {
        unset @output[nr][k]
      }
    }
    emitp @output, "NR", "k"
  }

NR k output
1  a pan
1  b pan
1  x 0.3467901443380824
1  y 0.7268028627434533
2  a eks
2  b pan
2  x 0.7586799647899636
2  y 0.5221511083334797
3  a wye
3  b wye
3  x 0.20460330576630303
3  y 0.33831852551664776
5  a wye
5  b pan
5  x 0.5732889198020006
5  y 0.8636244699032729
6  a zee
6  b pan
6  x 0.5271261600918548
6  y 0.49322128674835697
7  a eks
7  b zee
7  x 0.6117840605678454
7  y 0.1878849191181694
8  a zee
8  b wye
8  x 0.5985540091064224
8  y 0.976181385699006
9  a hat
9  b wye
9  x 0.03144187646093577
9  y 0.7495507603507059
10 a pan
10 b wye
10 x 0.5026260055412137
10 y 0.9526183602969864


================================================================
DSL PATTERN-ACTION BLOCKS

mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {};               $x=6; end{@z=9} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="e", type=field_name.
        text="2", type=strnum_literal.
    text="cond", type=conditional_block:
        text="||", type=operator:
            text="==", type=operator:
                text="f", type=field_name.
                text="g", type=field_name.
            text="==", type=operator:
                text="h", type=field_name.
                text="i", type=field_name.
        text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="6", type=strnum_literal.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="z", type=string_literal.
                text="9", type=strnum_literal.

mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1};           $x=6; end{@z=9} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="e", type=field_name.
        text="2", type=strnum_literal.
    text="cond", type=conditional_block:
        text="||", type=operator:
            text="==", type=operator:
                text="f", type=field_name.
                text="g", type=field_name.
            text="==", type=operator:
                text="h", type=field_name.
                text="i", type=field_name.
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="s", type=field_name.
                text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="6", type=strnum_literal.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="z", type=string_literal.
                text="9", type=strnum_literal.

mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2};      $x=6; end{@z=9} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="e", type=field_name.
        text="2", type=strnum_literal.
    text="cond", type=conditional_block:
        text="||", type=operator:
            text="==", type=operator:
                text="f", type=field_name.
                text="g", type=field_name.
            text="==", type=operator:
                text="h", type=field_name.
                text="i", type=field_name.
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="s", type=field_name.
                text="1", type=strnum_literal.
            text="=", type=srec_assignment:
                text="t", type=field_name.
                text="2", type=strnum_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="6", type=strnum_literal.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="z", type=string_literal.
                text="9", type=strnum_literal.

mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;$t=2;$u=3}; $x=6; end{@z=9} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="e", type=field_name.
        text="2", type=strnum_literal.
    text="cond", type=conditional_block:
        text="||", type=operator:
            text="==", type=operator:
                text="f", type=field_name.
                text="g", type=field_name.
            text="==", type=operator:
                text="h", type=field_name.
                text="i", type=field_name.
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="s", type=field_name.
                text="1", type=strnum_literal.
            text="=", type=srec_assignment:
                text="t", type=field_name.
                text="2", type=strnum_literal.
            text="=", type=srec_assignment:
                text="u", type=field_name.
                text="3", type=strnum_literal.
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="6", type=strnum_literal.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="z", type=string_literal.
                text="9", type=strnum_literal.

mlr put -v begin{@a=1}; $e=2; $f==$g||$h==$i {$s=1;@t["u".$5]=2;emitf @v,@w;dump}; $x=6; end{@z=9} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="a", type=string_literal.
                text="1", type=strnum_literal.
    text="=", type=srec_assignment:
        text="e", type=field_name.
        text="2", type=strnum_literal.
    text="cond", type=conditional_block:
        text="||", type=operator:
            text="==", type=operator:
                text="f", type=field_name.
                text="g", type=field_name.
            text="==", type=operator:
                text="h", type=field_name.
                text="i", type=field_name.
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="s", type=field_name.
                text="1", type=strnum_literal.
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="t", type=string_literal.
                    text=".", type=operator:
                        text="u", type=strnum_literal.
                        text="5", type=field_name.
                text="2", type=strnum_literal.
            text="emitf", type=emitf:
                text="emitf", type=emitf:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="v", type=string_literal.
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="w", type=string_literal.
                text="stream", type=stream:
            text="dump", type=dump:
                text=">", type=file_write:
                    text="stdout", type=stdout:
    text="=", type=srec_assignment:
        text="x", type=field_name.
        text="6", type=strnum_literal.
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="z", type=string_literal.
                text="9", type=strnum_literal.

mlr put -v begin{true{@x=1}}; true{@x=2}; end{true{@x=3}} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="cond", type=conditional_block:
                text="true", type=boolean_literal.
                text="list", type=statement_list:
                    text="=", type=oosvar_assignment:
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="x", type=string_literal.
                        text="1", type=strnum_literal.
    text="cond", type=conditional_block:
        text="true", type=boolean_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="x", type=string_literal.
                text="2", type=strnum_literal.
    text="end", type=end:
        text="list", type=statement_list:
            text="cond", type=conditional_block:
                text="true", type=boolean_literal.
                text="list", type=statement_list:
                    text="=", type=oosvar_assignment:
                        text="oosvar_keylist", type=oosvar_keylist:
                            text="x", type=string_literal.
                        text="3", type=strnum_literal.


================================================================
DSL IF-CHAINING


---------------------------------------------------------------- IF/ELIF WITH ELSE
mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR==1) {
    $x = 2;
    $y = 3
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="1", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="2", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="3", type=strnum_literal.
i=1,x=2,y=3
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 4) {
    $x = 5;
    $y = 6
  } else {
    $x = 1007;
    $y = 1008
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="4", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="5", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="6", type=strnum_literal.
        text="else", type=if_item:
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="1007", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="1008", type=strnum_literal.
i=1,x=1007,y=1008
i=2,x=1007,y=1008
i=3,x=1007,y=1008
i=4,x=5,y=6
i=5,x=1007,y=1008
i=6,x=1007,y=1008
i=7,x=1007,y=1008
i=8,x=1007,y=1008
i=9,x=1007,y=1008
i=10,x=1007,y=1008
i=11,x=1007,y=1008
i=12,x=1007,y=1008
i=13,x=1007,y=1008
i=14,x=1007,y=1008
i=15,x=1007,y=1008
i=16,x=1007,y=1008
i=17,x=1007,y=1008
i=18,x=1007,y=1008
i=19,x=1007,y=1008
i=20,x=1007,y=1008
i=21,x=1007,y=1008
i=22,x=1007,y=1008
i=23,x=1007,y=1008
i=24,x=1007,y=1008
i=25,x=1007,y=1008
i=26,x=1007,y=1008
i=27,x=1007,y=1008
i=28,x=1007,y=1008
i=29,x=1007,y=1008
i=30,x=1007,y=1008
i=31,x=1007,y=1008
i=32,x=1007,y=1008
i=33,x=1007,y=1008
i=34,x=1007,y=1008
i=35,x=1007,y=1008
i=36,x=1007,y=1008
i=37,x=1007,y=1008
i=38,x=1007,y=1008
i=39,x=1007,y=1008
i=40,x=1007,y=1008

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 9) {
    $x = 10;
    $y = 11
  } elif (NR == 12) {
    $x = 13;
    $y = 14
  } else {
    $x = 1015;
    $y = 1016
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="9", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="10", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="11", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="12", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="13", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="14", type=strnum_literal.
        text="else", type=if_item:
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="1015", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="1016", type=strnum_literal.
i=1,x=1015,y=1016
i=2,x=1015,y=1016
i=3,x=1015,y=1016
i=4,x=1015,y=1016
i=5,x=1015,y=1016
i=6,x=1015,y=1016
i=7,x=1015,y=1016
i=8,x=1015,y=1016
i=9,x=10,y=11
i=10,x=1015,y=1016
i=11,x=1015,y=1016
i=12,x=13,y=14
i=13,x=1015,y=1016
i=14,x=1015,y=1016
i=15,x=1015,y=1016
i=16,x=1015,y=1016
i=17,x=1015,y=1016
i=18,x=1015,y=1016
i=19,x=1015,y=1016
i=20,x=1015,y=1016
i=21,x=1015,y=1016
i=22,x=1015,y=1016
i=23,x=1015,y=1016
i=24,x=1015,y=1016
i=25,x=1015,y=1016
i=26,x=1015,y=1016
i=27,x=1015,y=1016
i=28,x=1015,y=1016
i=29,x=1015,y=1016
i=30,x=1015,y=1016
i=31,x=1015,y=1016
i=32,x=1015,y=1016
i=33,x=1015,y=1016
i=34,x=1015,y=1016
i=35,x=1015,y=1016
i=36,x=1015,y=1016
i=37,x=1015,y=1016
i=38,x=1015,y=1016
i=39,x=1015,y=1016
i=40,x=1015,y=1016

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 17) {
    $x = 18;
    $y = 19
  } elif (NR == 20) {
    $x = 21;
    $y = 22
  } elif (NR == 23) {
    $x = 24;
    $y = 25
  } else {
    $x = 1026;
    $y = 1027
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="17", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="18", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="19", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="20", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="21", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="22", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="23", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="24", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="25", type=strnum_literal.
        text="else", type=if_item:
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="1026", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="1027", type=strnum_literal.
i=1,x=1026,y=1027
i=2,x=1026,y=1027
i=3,x=1026,y=1027
i=4,x=1026,y=1027
i=5,x=1026,y=1027
i=6,x=1026,y=1027
i=7,x=1026,y=1027
i=8,x=1026,y=1027
i=9,x=1026,y=1027
i=10,x=1026,y=1027
i=11,x=1026,y=1027
i=12,x=1026,y=1027
i=13,x=1026,y=1027
i=14,x=1026,y=1027
i=15,x=1026,y=1027
i=16,x=1026,y=1027
i=17,x=18,y=19
i=18,x=1026,y=1027
i=19,x=1026,y=1027
i=20,x=21,y=22
i=21,x=1026,y=1027
i=22,x=1026,y=1027
i=23,x=24,y=25
i=24,x=1026,y=1027
i=25,x=1026,y=1027
i=26,x=1026,y=1027
i=27,x=1026,y=1027
i=28,x=1026,y=1027
i=29,x=1026,y=1027
i=30,x=1026,y=1027
i=31,x=1026,y=1027
i=32,x=1026,y=1027
i=33,x=1026,y=1027
i=34,x=1026,y=1027
i=35,x=1026,y=1027
i=36,x=1026,y=1027
i=37,x=1026,y=1027
i=38,x=1026,y=1027
i=39,x=1026,y=1027
i=40,x=1026,y=1027

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 28) {
    $x = 29;
    $y = 30
  } elif (NR == 31) {
    $x = 32;
    $y = 33
  } elif (NR == 34) {
    $x = 35;
    $y = 36
  } elif (NR == 37) {
    $x = 38;
    $y = 39
  } else {
    $x = 1040;
    $y = 1041
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="28", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="29", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="30", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="31", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="32", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="33", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="34", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="35", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="36", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="37", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="38", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="39", type=strnum_literal.
        text="else", type=if_item:
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="1040", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="1041", type=strnum_literal.
i=1,x=1040,y=1041
i=2,x=1040,y=1041
i=3,x=1040,y=1041
i=4,x=1040,y=1041
i=5,x=1040,y=1041
i=6,x=1040,y=1041
i=7,x=1040,y=1041
i=8,x=1040,y=1041
i=9,x=1040,y=1041
i=10,x=1040,y=1041
i=11,x=1040,y=1041
i=12,x=1040,y=1041
i=13,x=1040,y=1041
i=14,x=1040,y=1041
i=15,x=1040,y=1041
i=16,x=1040,y=1041
i=17,x=1040,y=1041
i=18,x=1040,y=1041
i=19,x=1040,y=1041
i=20,x=1040,y=1041
i=21,x=1040,y=1041
i=22,x=1040,y=1041
i=23,x=1040,y=1041
i=24,x=1040,y=1041
i=25,x=1040,y=1041
i=26,x=1040,y=1041
i=27,x=1040,y=1041
i=28,x=29,y=30
i=29,x=1040,y=1041
i=30,x=1040,y=1041
i=31,x=32,y=33
i=32,x=1040,y=1041
i=33,x=1040,y=1041
i=34,x=35,y=36
i=35,x=1040,y=1041
i=36,x=1040,y=1041
i=37,x=38,y=39
i=38,x=1040,y=1041
i=39,x=1040,y=1041
i=40,x=1040,y=1041


---------------------------------------------------------------- IF/ELIF WITHOUT ELSE
mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 1) {
    $x = 2;
    $y = 3
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="1", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="2", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="3", type=strnum_literal.
i=1,x=2,y=3
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 4) {
    $x = 5;
    $y = 6
  } elif (NR == 7) {
    $x = 8;
    $y = 9
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="4", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="5", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="6", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="7", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="8", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="9", type=strnum_literal.
i=1,x=101,y=201
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=5,y=6
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=8,y=9
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 10) {
    $x = 11;
    $y = 12
  } elif (NR == 13) {
    $x = 14;
    $y = 15
  } elif (NR == 16) {
    $x = 17;
    $y = 18
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="10", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="11", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="12", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="13", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="14", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="15", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="16", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="17", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="18", type=strnum_literal.
i=1,x=101,y=201
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=11,y=12
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=14,y=15
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=17,y=18
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=119,y=219
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=122,y=222
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=125,y=225
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=128,y=228
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240

mlr --from ./reg_test/input/xy40.dkvp put -v 
  if (NR == 19) {
    $x = 20;
    $y = 21
  } elif (NR == 22) {
    $x = 23;
    $y = 24
  } elif (NR == 25) {
    $x = 26;
    $y = 37
  } elif (NR == 28) {
    $x = 29;
    $y = 30
  }
AST ROOT:
text="list", type=statement_list:
    text="if_head", type=if_head:
        text="if", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="19", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="20", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="21", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="22", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="23", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="24", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="25", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="26", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="37", type=strnum_literal.
        text="elif", type=if_item:
            text="==", type=operator:
                text="NR", type=context_variable.
                text="28", type=strnum_literal.
            text="list", type=statement_list:
                text="=", type=srec_assignment:
                    text="x", type=field_name.
                    text="29", type=strnum_literal.
                text="=", type=srec_assignment:
                    text="y", type=field_name.
                    text="30", type=strnum_literal.
i=1,x=101,y=201
i=2,x=102,y=202
i=3,x=103,y=203
i=4,x=104,y=204
i=5,x=105,y=205
i=6,x=106,y=206
i=7,x=107,y=207
i=8,x=108,y=208
i=9,x=109,y=209
i=10,x=110,y=210
i=11,x=111,y=211
i=12,x=112,y=212
i=13,x=113,y=213
i=14,x=114,y=214
i=15,x=115,y=215
i=16,x=116,y=216
i=17,x=117,y=217
i=18,x=118,y=218
i=19,x=20,y=21
i=20,x=120,y=220
i=21,x=121,y=221
i=22,x=23,y=24
i=23,x=123,y=223
i=24,x=124,y=224
i=25,x=26,y=37
i=26,x=126,y=226
i=27,x=127,y=227
i=28,x=29,y=30
i=29,x=129,y=229
i=30,x=130,y=230
i=31,x=131,y=231
i=32,x=132,y=232
i=33,x=133,y=233
i=34,x=134,y=234
i=35,x=135,y=235
i=36,x=136,y=236
i=37,x=137,y=237
i=38,x=138,y=238
i=39,x=139,y=239
i=40,x=140,y=240


================================================================
DSL INDIRECT SREC ASSIGNMENTS

mlr put -v $["a"] = $["b"]; $["x"] = 10 * $["y"] ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=indirect_srec_assignment:
        text="a", type=strnum_literal.
        text="indirect_field_name", type=indirect_field_name:
            text="b", type=strnum_literal.
    text="=", type=indirect_srec_assignment:
        text="x", type=strnum_literal.
        text="*", type=operator:
            text="10", type=strnum_literal.
            text="indirect_field_name", type=indirect_field_name:
                text="y", type=strnum_literal.
a=pan,b=pan,i=1,x=7.268029,y=0.7268028627434533
a=pan,b=pan,i=2,x=5.221511,y=0.5221511083334797
a=wye,b=wye,i=3,x=3.383185,y=0.33831852551664776
a=wye,b=wye,i=4,x=1.341887,y=0.13418874328430463
a=pan,b=pan,i=5,x=8.636245,y=0.8636244699032729
a=pan,b=pan,i=6,x=4.932213,y=0.49322128674835697
a=zee,b=zee,i=7,x=1.878849,y=0.1878849191181694
a=wye,b=wye,i=8,x=9.761814,y=0.976181385699006
a=wye,b=wye,i=9,x=7.495508,y=0.7495507603507059
a=wye,b=wye,i=10,x=9.526184,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put while (NF < 256) { $["k".string(NF+1)] = "v".string(NF) }
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,k6=v5,k7=v6,k8=v7,k9=v8,k10=v9,k11=v10,k12=v11,k13=v12,k14=v13,k15=v14,k16=v15,k17=v16,k18=v17,k19=v18,k20=v19,k21=v20,k22=v21,k23=v22,k24=v23,k25=v24,k26=v25,k27=v26,k28=v27,k29=v28,k30=v29,k31=v30,k32=v31,k33=v32,k34=v33,k35=v34,k36=v35,k37=v36,k38=v37,k39=v38,k40=v39,k41=v40,k42=v41,k43=v42,k44=v43,k45=v44,k46=v45,k47=v46,k48=v47,k49=v48,k50=v49,k51=v50,k52=v51,k53=v52,k54=v53,k55=v54,k56=v55,k57=v56,k58=v57,k59=v58,k60=v59,k61=v60,k62=v61,k63=v62,k64=v63,k65=v64,k66=v65,k67=v66,k68=v67,k69=v68,k70=v69,k71=v70,k72=v71,k73=v72,k74=v73,k75=v74,k76=v75,k77=v76,k78=v77,k79=v78,k80=v79,k81=v80,k82=v81,k83=v82,k84=v83,k85=v84,k86=v85,k87=v86,k88=v87,k89=v88,k90=v89,k91=v90,k92=v91,k93=v92,k94=v93,k95=v94,k96=v95,k97=v96,k98=v97,k99=v98,k100=v99,k101=v100,k102=v101,k103=v102,k104=v103,k105=v104,k106=v105,k107=v106,k108=v107,k109=v108,k110=v109,k111=v110,k112=v111,k113=v112,k114=v113,k115=v114,k116=v115,k117=v116,k118=v117,k119=v118,k120=v119,k121=v120,k122=v121,k123=v122,k124=v123,k125=v124,k126=v125,k127=v126,k128=v127,k129=v128,k130=v129,k131=v130,k132=v131,k133=v132,k134=v133,k135=v134,k136=v135,k137=v136,k138=v137,k139=v138,k140=v139,k141=v140,k142=v141,k143=v142,k144=v143,k145=v144,k146=v145,k147=v146,k148=v147,k149=v148,k150=v149,k151=v150,k152=v151,k153=v152,k154=v153,k155=v154,k156=v155,k157=v156,k158=v157,k159=v158,k160=v159,k161=v160,k162=v161,k163=v162,k164=v163,k165=v164,k166=v165,k167=v166,k168=v167,k169=v168,k170=v169,k171=v170,k172=v171,k173=v172,k174=v173,k175=v174,k176=v175,k177=v176,k178=v177,k179=v178,k180=v179,k181=v180,k182=v181,k183=v182,k184=v183,k185=v184,k186=v185,k187=v186,k188=v187,k189=v188,k190=v189,k191=v190,k192=v191,k193=v192,k194=v193,k195=v194,k196=v195,k197=v196,k198=v197,k199=v198,k200=v199,k201=v200,k202=v201,k203=v202,k204=v203,k205=v204,k206=v205,k207=v206,k208=v207,k209=v208,k210=v209,k211=v210,k212=v211,k213=v212,k214=v213,k215=v214,k216=v215,k217=v216,k218=v217,k219=v218,k220=v219,k221=v220,k222=v221,k223=v222,k224=v223,k225=v224,k226=v225,k227=v226,k228=v227,k229=v228,k230=v229,k231=v230,k232=v231,k233=v232,k234=v233,k235=v234,k236=v235,k237=v236,k238=v237,k239=v238,k240=v239,k241=v240,k242=v241,k243=v242,k244=v243,k245=v244,k246=v245,k247=v246,k248=v247,k249=v248,k250=v249,k251=v250,k252=v251,k253=v252,k254=v253,k255=v254,k256=v255


================================================================
DSL INDIRECT OOSVAR ASSIGNMENTS

mlr --opprint put -v @s = NR; $t = @s; $u=@["s"]; $v = $t - $u ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="s", type=string_literal.
        text="NR", type=context_variable.
    text="=", type=srec_assignment:
        text="t", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="s", type=string_literal.
    text="=", type=srec_assignment:
        text="u", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="s", type=strnum_literal.
    text="=", type=srec_assignment:
        text="v", type=field_name.
        text="-", type=operator:
            text="t", type=field_name.
            text="u", type=field_name.
a   b   i  x                   y                   t  u  v
pan pan 1  0.3467901443380824  0.7268028627434533  1  1  0
eks pan 2  0.7586799647899636  0.5221511083334797  2  2  0
wye wye 3  0.20460330576630303 0.33831852551664776 3  3  0
eks wye 4  0.38139939387114097 0.13418874328430463 4  4  0
wye pan 5  0.5732889198020006  0.8636244699032729  5  5  0
zee pan 6  0.5271261600918548  0.49322128674835697 6  6  0
eks zee 7  0.6117840605678454  0.1878849191181694  7  7  0
zee wye 8  0.5985540091064224  0.976181385699006   8  8  0
hat wye 9  0.03144187646093577 0.7495507603507059  9  9  0
pan wye 10 0.5026260055412137  0.9526183602969864  10 10 0

mlr put -v @t["u"] = NR; $tu = @["t"]["u"]; emitp all ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="t", type=string_literal.
            text="u", type=strnum_literal.
        text="NR", type=context_variable.
    text="=", type=srec_assignment:
        text="tu", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="t", type=strnum_literal.
            text="u", type=strnum_literal.
    text="emitp", type=emitp:
        text="emitp", type=emitp:
            text="all", type=all.
        text="stream", type=stream:
t:u=1
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,tu=1
t:u=2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,tu=2
t:u=3
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,tu=3
t:u=4
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,tu=4
t:u=5
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,tu=5
t:u=6
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,tu=6
t:u=7
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,tu=7
t:u=8
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,tu=8
t:u=9
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,tu=9
t:u=10
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,tu=10

mlr put -v @t["u"] = NR; $tu = @["t"]["u"]; emitp @* ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="t", type=string_literal.
            text="u", type=strnum_literal.
        text="NR", type=context_variable.
    text="=", type=srec_assignment:
        text="tu", type=field_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="t", type=strnum_literal.
            text="u", type=strnum_literal.
    text="emitp", type=emitp:
        text="emitp", type=emitp:
            text="@*", type=full_oosvar.
        text="stream", type=stream:
t:u=1
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,tu=1
t:u=2
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,tu=2
t:u=3
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,tu=3
t:u=4
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,tu=4
t:u=5
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,tu=5
t:u=6
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,tu=6
t:u=7
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,tu=7
t:u=8
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,tu=8
t:u=9
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,tu=9
t:u=10
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,tu=10

mlr put -v @["s"] = $x; emitp all ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="s", type=strnum_literal.
        text="x", type=field_name.
    text="emitp", type=emitp:
        text="emitp", type=emitp:
            text="all", type=all.
        text="stream", type=stream:
s=0.346790
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
s=0.758680
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
s=0.204603
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
s=0.381399
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
s=0.573289
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
s=0.527126
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
s=0.611784
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
s=0.598554
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
s=0.031442
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
s=0.502626
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -v @["t"]["u"] = $y; emitp all ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="t", type=strnum_literal.
            text="u", type=strnum_literal.
        text="y", type=field_name.
    text="emitp", type=emitp:
        text="emitp", type=emitp:
            text="all", type=all.
        text="stream", type=stream:
t:u=0.726803
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
t:u=0.522151
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
t:u=0.338319
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
t:u=0.134189
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
t:u=0.863624
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
t:u=0.493221
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
t:u=0.187885
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
t:u=0.976181
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
t:u=0.749551
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
t:u=0.952618
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL WHILE/DO-WHILE LOOPS

mlr put -v while($i < 5) { $i += 1} ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="while", type=while:
        text="<", type=operator:
            text="i", type=field_name.
            text="5", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="i", type=field_name.
                text="+", type=operator:
                    text="i", type=field_name.
                    text="1", type=strnum_literal.
a=pan,b=pan,i=5,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=5,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=5,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=5,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -v do {$i += 1} while($i < 5) ./reg_test/input/abixy
AST ROOT:
text="list", type=statement_list:
    text="do", type=do_while:
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="i", type=field_name.
                text="+", type=operator:
                    text="i", type=field_name.
                    text="1", type=strnum_literal.
        text="<", type=operator:
            text="i", type=field_name.
            text="5", type=strnum_literal.
a=pan,b=pan,i=5,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=5,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=5,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=5,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=6,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=7,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=8,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=9,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=10,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=11,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL FOR-SREC LOOPS


---------------------------------------------------------------- empty for-srec
mlr --from ./reg_test/input/abixy put -v for(k,v in $*) { }
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


---------------------------------------------------------------- for-srec without boundvars
mlr --from ./reg_test/input/abixy put -v for(k,v in $*) {$nr= NR}
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="=", type=srec_assignment:
                text="nr", type=field_name.
                text="NR", type=context_variable.
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,nr=1
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,nr=2
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,nr=3
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,nr=4
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,nr=5
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,nr=6
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,nr=7
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,nr=8
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,nr=9
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,nr=10


---------------------------------------------------------------- for-srec modifying the srec
mlr --from ./reg_test/input/abixy put -v for(k,v in $*) {unset $[k]}; $j = NR
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="unset", type=unset:
                text="indirect_field_name", type=indirect_field_name:
                    text="k", type=bound_variable.
    text="=", type=srec_assignment:
        text="j", type=field_name.
        text="NR", type=context_variable.
j=1
j=2
j=3
j=4
j=5
j=6
j=7
j=8
j=9
j=10

mlr --from ./reg_test/input/abixy put -v for(k,v in $*) {if (k != "x") {unset $[k]}}; $j = NR
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="if_head", type=if_head:
                text="if", type=if_item:
                    text="!=", type=operator:
                        text="k", type=bound_variable.
                        text="x", type=strnum_literal.
                    text="list", type=statement_list:
                        text="unset", type=unset:
                            text="indirect_field_name", type=indirect_field_name:
                                text="k", type=bound_variable.
    text="=", type=srec_assignment:
        text="j", type=field_name.
        text="NR", type=context_variable.
x=0.3467901443380824,j=1
x=0.7586799647899636,j=2
x=0.20460330576630303,j=3
x=0.38139939387114097,j=4
x=0.5732889198020006,j=5
x=0.5271261600918548,j=6
x=0.6117840605678454,j=7
x=0.5985540091064224,j=8
x=0.03144187646093577,j=9
x=0.5026260055412137,j=10

mlr --from ./reg_test/input/abixy --opprint put -S -v for(k,v in $*) {$[k."_orig"]=v; $[k] = "other"}
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="=", type=indirect_srec_assignment:
                text=".", type=operator:
                    text="k", type=bound_variable.
                    text="_orig", type=strnum_literal.
                text="v", type=bound_variable.
            text="=", type=indirect_srec_assignment:
                text="k", type=bound_variable.
                text="other", type=strnum_literal.
a     b     i     x     y     a_orig b_orig i_orig x_orig              y_orig
other other other other other pan    pan    1      0.3467901443380824  0.7268028627434533
other other other other other eks    pan    2      0.7586799647899636  0.5221511083334797
other other other other other wye    wye    3      0.20460330576630303 0.33831852551664776
other other other other other eks    wye    4      0.38139939387114097 0.13418874328430463
other other other other other wye    pan    5      0.5732889198020006  0.8636244699032729
other other other other other zee    pan    6      0.5271261600918548  0.49322128674835697
other other other other other eks    zee    7      0.6117840605678454  0.1878849191181694
other other other other other zee    wye    8      0.5985540091064224  0.976181385699006
other other other other other hat    wye    9      0.03144187646093577 0.7495507603507059
other other other other other pan    wye    10     0.5026260055412137  0.9526183602969864

mlr --from ./reg_test/input/abixy put -S -v for(k,v in $*) {$[v]=k}
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="=", type=indirect_srec_assignment:
                text="v", type=bound_variable.
                text="k", type=bound_variable.
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,pan=b,1=i,0.3467901443380824=x,0.7268028627434533=y
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,eks=a,pan=b,2=i,0.7586799647899636=x,0.5221511083334797=y
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,wye=b,3=i,0.20460330576630303=x,0.33831852551664776=y
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,eks=a,wye=b,4=i,0.38139939387114097=x,0.13418874328430463=y
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,wye=a,pan=b,5=i,0.5732889198020006=x,0.8636244699032729=y
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,zee=a,pan=b,6=i,0.5271261600918548=x,0.49322128674835697=y
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,eks=a,zee=b,7=i,0.6117840605678454=x,0.1878849191181694=y
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,zee=a,wye=b,8=i,0.5985540091064224=x,0.976181385699006=y
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,hat=a,wye=b,9=i,0.03144187646093577=x,0.7495507603507059=y
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,pan=a,wye=b,10=i,0.5026260055412137=x,0.9526183602969864=y

mlr --from ./reg_test/input/abixy put -v 
  $sum = 0;
  for(k,v in $*) {
    if (k =~ "^[xy]$") {
      $sum += $[k]
    }
  }
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="sum", type=field_name.
        text="0", type=strnum_literal.
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="if_head", type=if_head:
                text="if", type=if_item:
                    text="=~", type=operator:
                        text="k", type=bound_variable.
                        text="^[xy]$", type=strnum_literal.
                    text="list", type=statement_list:
                        text="=", type=srec_assignment:
                            text="sum", type=field_name.
                            text="+", type=operator:
                                text="sum", type=field_name.
                                text="indirect_field_name", type=indirect_field_name:
                                    text="k", type=bound_variable.
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,sum=1.073593
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,sum=1.280831
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,sum=0.542922
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,sum=0.515588
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,sum=1.436913
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,sum=1.020347
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,sum=0.799669
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,sum=1.574735
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,sum=0.780993
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,sum=1.455244

mlr --from ./reg_test/input/abixy put -S -v 
  $sum = float(0);
  for(k,v in $*) {
    if (k =~ "^[xy]$") {
      $sum += float($[k])
    }
  }
AST ROOT:
text="list", type=statement_list:
    text="=", type=srec_assignment:
        text="sum", type=field_name.
        text="float", type=non_sigil_name:
            text="0", type=strnum_literal.
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="list", type=statement_list:
            text="if_head", type=if_head:
                text="if", type=if_item:
                    text="=~", type=operator:
                        text="k", type=bound_variable.
                        text="^[xy]$", type=strnum_literal.
                    text="list", type=statement_list:
                        text="=", type=srec_assignment:
                            text="sum", type=field_name.
                            text="+", type=operator:
                                text="sum", type=field_name.
                                text="float", type=non_sigil_name:
                                    text="indirect_field_name", type=indirect_field_name:
                                        text="k", type=bound_variable.
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533,sum=1.073593
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797,sum=1.280831
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776,sum=0.542922
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463,sum=0.515588
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729,sum=1.436913
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697,sum=1.020347
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694,sum=0.799669
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006,sum=1.574735
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059,sum=0.780993
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864,sum=1.455244


================================================================
DSL FOR-OOSVAR LOOPS

mlr --opprint -n put -v 
  @o[1][1]["text1"][NR] = $a;
  @o[1][2]["text2"][NR] = $b;
  @o[1][2][$a][$i*100] = $x;
  for((k1,k2),v in @o[1][2]) {
    @n[3][4][k2][k1] = v;
  }
  end {
    emit @n, "a", "b", "c", "d"
  }

AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="o", type=string_literal.
            text="1", type=strnum_literal.
            text="1", type=strnum_literal.
            text="text1", type=strnum_literal.
            text="NR", type=context_variable.
        text="a", type=field_name.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="o", type=string_literal.
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
            text="text2", type=strnum_literal.
            text="NR", type=context_variable.
        text="b", type=field_name.
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="o", type=string_literal.
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
            text="a", type=field_name.
            text="*", type=operator:
                text="i", type=field_name.
                text="100", type=strnum_literal.
        text="x", type=field_name.
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="k1", type=non_sigil_name.
                text="k2", type=non_sigil_name.
            text="v", type=non_sigil_name.
        text="oosvar_keylist", type=oosvar_keylist:
            text="o", type=string_literal.
            text="1", type=strnum_literal.
            text="2", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="n", type=string_literal.
                    text="3", type=strnum_literal.
                    text="4", type=strnum_literal.
                    text="k2", type=bound_variable.
                    text="k1", type=bound_variable.
                text="v", type=bound_variable.
    text="end", type=end:
        text="list", type=statement_list:
            text="emit", type=emit:
                text="emit", type=emit:
                    text="oosvar_keylist", type=oosvar_keylist:
                        text="n", type=string_literal.
                    text="emit_namelist", type=emit:
                        text="a", type=strnum_literal.
                        text="b", type=strnum_literal.
                        text="c", type=strnum_literal.
                        text="d", type=strnum_literal.
                text="stream", type=stream:

mlr --opprint --from ./reg_test/input/abixy put -q 
  @o[1][1]["text1"][NR] = $a;
  @o[1][2]["text2"][NR] = $b;
  @o[1][2][$a][$i*100] = $x;
  for((k1,k2),v in @o[1][2]) {
    @n[3][4][k2][k1] = v;
  }
  end {
    emit @n, "a", "b", "c", "d"
  }

a b c    d     n
3 4 1    text2 pan
3 4 100  pan   0.346790
3 4 2    text2 pan
3 4 200  eks   0.758680
3 4 3    text2 wye
3 4 300  wye   0.204603
3 4 4    text2 wye
3 4 400  eks   0.381399
3 4 5    text2 pan
3 4 500  wye   0.573289
3 4 6    text2 pan
3 4 600  zee   0.527126
3 4 7    text2 zee
3 4 700  eks   0.611784
3 4 8    text2 wye
3 4 800  zee   0.598554
3 4 9    text2 wye
3 4 900  hat   0.031442
3 4 10   text2 wye
3 4 1000 pan   0.502626

mlr --opprint --from ./reg_test/input/abixy put -q 
  @sum[$a][$b] += $x;
  @count[$a][$b] += 1;
  end {
    for ((k1, k2), v in @sum) {
      @mean[k1][k2] = @sum[k1][k2] / @count[k1][k2]
    }
    emitp @sum, "a", "b";
    emitp @count, "a", "b";
    emitp @mean, "a", "b"
  }

a   b   sum
pan pan 0.346790
pan wye 0.502626
eks pan 0.758680
eks wye 0.381399
eks zee 0.611784
wye wye 0.204603
wye pan 0.573289
zee pan 0.527126
zee wye 0.598554
hat wye 0.031442

a   b   count
pan pan 1
pan wye 1
eks pan 1
eks wye 1
eks zee 1
wye wye 1
wye pan 1
zee pan 1
zee wye 1
hat wye 1

a   b   mean
pan pan 0.346790
pan wye 0.502626
eks pan 0.758680
eks wye 0.381399
eks zee 0.611784
wye wye 0.204603
wye pan 0.573289
zee pan 0.527126
zee wye 0.598554
hat wye 0.031442

mlr --opprint --from ./reg_test/input/abixy-wide put -q 
  @value["sum"][$a][$b] += $x;
  @value["count"][$a][$b] += 1;
  end {
    for ((k1, k2), v in @value["sum"]) {
      @value["mean"][k1][k2] = @value["sum"][k1][k2] / @value["count"][k1][k2]
    }
    emitp @value, "stat", "a", "b";
  }

stat  a   b   value
sum   cat pan 42.327158
sum   cat hat 43.184410
sum   cat dog 39.241473
sum   cat wye 45.196775
sum   cat cat 37.894148
sum   pan wye 40.135300
sum   pan pan 36.226334
sum   pan hat 35.115869
sum   pan dog 37.817560
sum   pan cat 42.235677
sum   wye cat 40.805723
sum   wye hat 41.166697
sum   wye dog 40.619547
sum   wye wye 32.490973
sum   wye pan 33.027196
sum   dog hat 43.515162
sum   dog pan 45.614011
sum   dog dog 43.545956
sum   dog wye 37.223795
sum   dog cat 45.642595
sum   hat hat 48.058897
sum   hat wye 34.054270
sum   hat pan 42.538758
sum   hat cat 44.325655
sum   hat dog 37.114244
count cat pan 89
count cat hat 90
count cat dog 78
count cat wye 77
count cat cat 79
count pan wye 78
count pan pan 77
count pan hat 67
count pan dog 73
count pan cat 89
count wye cat 74
count wye hat 87
count wye dog 76
count wye wye 67
count wye pan 66
count dog hat 88
count dog pan 87
count dog dog 87
count dog wye 79
count dog cat 83
count hat hat 88
count hat wye 70
count hat pan 85
count hat cat 88
count hat dog 78
mean  cat pan 0.475586
mean  cat hat 0.479827
mean  cat dog 0.503096
mean  cat wye 0.586971
mean  cat cat 0.479673
mean  pan wye 0.514555
mean  pan pan 0.470472
mean  pan hat 0.524117
mean  pan dog 0.518049
mean  pan cat 0.474558
mean  wye cat 0.551429
mean  wye hat 0.473180
mean  wye dog 0.534468
mean  wye wye 0.484940
mean  wye pan 0.500412
mean  dog hat 0.494490
mean  dog pan 0.524299
mean  dog dog 0.500528
mean  dog wye 0.471187
mean  dog cat 0.549911
mean  hat hat 0.546124
mean  hat wye 0.486490
mean  hat pan 0.500456
mean  hat cat 0.503701
mean  hat dog 0.475824

mlr -n put -v for (k, k in $*) {}
mlr: duplicate for-loop boundvars "k" and "k".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_srec:
        text="variables", type=for_variables:
            text="k", type=non_sigil_name.
            text="k", type=non_sigil_name.
        text="list", type=statement_list:

mlr -n put -v for (k, k in @*) {}
mlr: duplicate for-loop boundvar "k".
Boundvars: "k", "k".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="k", type=non_sigil_name.
            text="k", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,a), c in @*) {}
mlr: duplicate for-loop boundvar "a".
Boundvars: "a", "a", "c".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="a", type=non_sigil_name.
            text="c", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b), a in @*) {}
mlr: duplicate for-loop boundvar "a".
Boundvars: "a", "b", "a".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
            text="a", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b), b in @*) {}
mlr: duplicate for-loop boundvar "b".
Boundvars: "a", "b", "b".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
            text="b", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,a,c), d in @*) {}
mlr: duplicate for-loop boundvar "a".
Boundvars: "a", "a", "c", "d".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="a", type=non_sigil_name.
                text="c", type=non_sigil_name.
            text="d", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b,a), d in @*) {}
mlr: duplicate for-loop boundvar "a".
Boundvars: "a", "b", "a", "d".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
                text="a", type=non_sigil_name.
            text="d", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b,c), a in @*) {}
mlr: duplicate for-loop boundvar "a".
Boundvars: "a", "b", "c", "a".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
                text="c", type=non_sigil_name.
            text="a", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b,b), d in @*) {}
mlr: duplicate for-loop boundvar "b".
Boundvars: "a", "b", "b", "d".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
                text="b", type=non_sigil_name.
            text="d", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b,c), b in @*) {}
mlr: duplicate for-loop boundvar "b".
Boundvars: "a", "b", "c", "b".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
                text="c", type=non_sigil_name.
            text="b", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:

mlr -n put -v for ((a,b,c), c in @*) {}
mlr: duplicate for-loop boundvar "c".
Boundvars: "a", "b", "c", "c".
AST ROOT:
text="list", type=statement_list:
    text="for", type=for_oosvar:
        text="key_and_value_variables", type=for_variables:
            text="key_variables", type=for_variables:
                text="a", type=non_sigil_name.
                text="b", type=non_sigil_name.
                text="c", type=non_sigil_name.
            text="c", type=non_sigil_name.
        text="empty_keylist", type=oosvar_keylist:
        text="list", type=statement_list:


================================================================
DSL BREAK/CONTINUE IN SINGLE WHILE/DO-WHILE

mlr --opprint --from ./reg_test/input/abixy put 
  while ($i < 5) {
    $i += 1;
    break;
    $a = "ERROR";
  }

a   b   i  x                   y
pan pan 2  0.3467901443380824  0.7268028627434533
eks pan 3  0.7586799647899636  0.5221511083334797
wye wye 4  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  while ($i < 5) {
    $i += 1;
    continue;
    $a = "ERROR";
  }

a   b   i  x                   y
pan pan 5  0.3467901443380824  0.7268028627434533
eks pan 5  0.7586799647899636  0.5221511083334797
wye wye 5  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  do {
    $i += 1;
    break;
    $a = "ERROR";
  } while ($i < 5);

a   b   i  x                   y
pan pan 2  0.3467901443380824  0.7268028627434533
eks pan 3  0.7586799647899636  0.5221511083334797
wye wye 4  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 6  0.5732889198020006  0.8636244699032729
zee pan 7  0.5271261600918548  0.49322128674835697
eks zee 8  0.6117840605678454  0.1878849191181694
zee wye 9  0.5985540091064224  0.976181385699006
hat wye 10 0.03144187646093577 0.7495507603507059
pan wye 11 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  do {
    $i += 1;
    continue;
    $a = "ERROR";
  } while ($i < 5);

a   b   i  x                   y
pan pan 5  0.3467901443380824  0.7268028627434533
eks pan 5  0.7586799647899636  0.5221511083334797
wye wye 5  0.20460330576630303 0.33831852551664776
eks wye 5  0.38139939387114097 0.13418874328430463
wye pan 6  0.5732889198020006  0.8636244699032729
zee pan 7  0.5271261600918548  0.49322128674835697
eks zee 8  0.6117840605678454  0.1878849191181694
zee wye 9  0.5985540091064224  0.976181385699006
hat wye 10 0.03144187646093577 0.7495507603507059
pan wye 11 0.5026260055412137  0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put 
  $NR = NR;
  while ($i < 5) {
    $i += 1;
    if (NR == 2) {
      break;
    }
    $a = "reached";
  }

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 3  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
wye     pan 5  0.5732889198020006  0.8636244699032729  5
zee     pan 6  0.5271261600918548  0.49322128674835697 6
eks     zee 7  0.6117840605678454  0.1878849191181694  7
zee     wye 8  0.5985540091064224  0.976181385699006   8
hat     wye 9  0.03144187646093577 0.7495507603507059  9
pan     wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $NR = NR;
  while ($i < 5) {
    $i += 1;
    if (NR == 2) {
      continue;
    }
    $a = "reached";
  }

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 5  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
wye     pan 5  0.5732889198020006  0.8636244699032729  5
zee     pan 6  0.5271261600918548  0.49322128674835697 6
eks     zee 7  0.6117840605678454  0.1878849191181694  7
zee     wye 8  0.5985540091064224  0.976181385699006   8
hat     wye 9  0.03144187646093577 0.7495507603507059  9
pan     wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
$NR = NR;
  do {
    $i += 1;
    if (NR == 2) {
      break;
    }
    $a = "reached";
  } while ($i < 5);

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 3  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
reached pan 6  0.5732889198020006  0.8636244699032729  5
reached pan 7  0.5271261600918548  0.49322128674835697 6
reached zee 8  0.6117840605678454  0.1878849191181694  7
reached wye 9  0.5985540091064224  0.976181385699006   8
reached wye 10 0.03144187646093577 0.7495507603507059  9
reached wye 11 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $NR = NR;
  do {
    $i += 1;
    if (NR == 2) {
      continue;
    }
    $a = "reached";
  } while ($i < 5);

a       b   i  x                   y                   NR
reached pan 5  0.3467901443380824  0.7268028627434533  1
eks     pan 5  0.7586799647899636  0.5221511083334797  2
reached wye 5  0.20460330576630303 0.33831852551664776 3
reached wye 5  0.38139939387114097 0.13418874328430463 4
reached pan 6  0.5732889198020006  0.8636244699032729  5
reached pan 7  0.5271261600918548  0.49322128674835697 6
reached zee 8  0.6117840605678454  0.1878849191181694  7
reached wye 9  0.5985540091064224  0.976181385699006   8
reached wye 10 0.03144187646093577 0.7495507603507059  9
reached wye 11 0.5026260055412137  0.9526183602969864  10


================================================================
DSL BREAK/CONTINUE IN NESTED WHILE/DO-WHILE

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    break;
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  2 1
eks pan 2 0.7586799647899636  0.5221511083334797  3 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 3

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    continue;
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 1
eks pan 2 0.7586799647899636  0.5221511083334797  4 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 3

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      break;
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 2
eks pan 2 0.7586799647899636  0.5221511083334797  4 3
wye wye 3 0.20460330576630303 0.33831852551664776 4 4

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      continue;
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 7
eks pan 2 0.7586799647899636  0.5221511083334797  4 7
wye wye 3 0.20460330576630303 0.33831852551664776 4 7

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      break;
    }
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 7
eks pan 2 0.7586799647899636  0.5221511083334797  3 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 7

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      continue;
    }
    while ($k < 7) {
      $k += 1
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 7
eks pan 2 0.7586799647899636  0.5221511083334797  4 2
wye wye 3 0.20460330576630303 0.33831852551664776 4 7

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      if (NR == 2 || NR == 8) {
        break;
      }
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 10002
eks pan 2 0.7586799647899636  0.5221511083334797  4 3
wye wye 3 0.20460330576630303 0.33831852551664776 4 10004

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  while ($j < 4) {
    $k = NR;
    $j += 1;
    while ($k < 7) {
      $k += 1;
      if (NR == 2 || NR == 8) {
        continue;
      }
      $k += 10000;
    }
  }

a   b   i x                   y                   j k
pan pan 1 0.3467901443380824  0.7268028627434533  4 10002
eks pan 2 0.7586799647899636  0.5221511083334797  4 7
wye wye 3 0.20460330576630303 0.33831852551664776 4 10004

a   b   i  x                   y                   j
eks wye 4  0.38139939387114097 0.13418874328430463 4
wye pan 5  0.5732889198020006  0.8636244699032729  5
zee pan 6  0.5271261600918548  0.49322128674835697 6
eks zee 7  0.6117840605678454  0.1878849191181694  7
zee wye 8  0.5985540091064224  0.976181385699006   8
hat wye 9  0.03144187646093577 0.7495507603507059  9
pan wye 10 0.5026260055412137  0.9526183602969864  10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    break;
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  2  1
eks pan 2  0.7586799647899636  0.5221511083334797  3  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  3
eks wye 4  0.38139939387114097 0.13418874328430463 5  4
wye pan 5  0.5732889198020006  0.8636244699032729  6  5
zee pan 6  0.5271261600918548  0.49322128674835697 7  6
eks zee 7  0.6117840605678454  0.1878849191181694  8  7
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 9
pan wye 10 0.5026260055412137  0.9526183602969864  11 10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    continue;
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  1
eks pan 2  0.7586799647899636  0.5221511083334797  4  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  3
eks wye 4  0.38139939387114097 0.13418874328430463 5  4
wye pan 5  0.5732889198020006  0.8636244699032729  6  5
zee pan 6  0.5271261600918548  0.49322128674835697 7  6
eks zee 7  0.6117840605678454  0.1878849191181694  8  7
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 9
pan wye 10 0.5026260055412137  0.9526183602969864  11 10

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      break;
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  2
eks pan 2  0.7586799647899636  0.5221511083334797  4  3
wye wye 3  0.20460330576630303 0.33831852551664776 4  4
eks wye 4  0.38139939387114097 0.13418874328430463 5  5
wye pan 5  0.5732889198020006  0.8636244699032729  6  6
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      continue;
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  7
eks pan 2  0.7586799647899636  0.5221511083334797  4  7
wye wye 3  0.20460330576630303 0.33831852551664776 4  7
eks wye 4  0.38139939387114097 0.13418874328430463 5  7
wye pan 5  0.5732889198020006  0.8636244699032729  6  7
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      break;
    }
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  7
eks pan 2  0.7586799647899636  0.5221511083334797  3  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  7
eks wye 4  0.38139939387114097 0.13418874328430463 5  7
wye pan 5  0.5732889198020006  0.8636244699032729  6  7
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    if (NR == 2 || NR == 8) {
      continue;
    }
    do {
      $k += 1
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  7
eks pan 2  0.7586799647899636  0.5221511083334797  4  2
wye wye 3  0.20460330576630303 0.33831852551664776 4  7
eks wye 4  0.38139939387114097 0.13418874328430463 5  7
wye pan 5  0.5732889198020006  0.8636244699032729  6  7
zee pan 6  0.5271261600918548  0.49322128674835697 7  7
eks zee 7  0.6117840605678454  0.1878849191181694  8  8
zee wye 8  0.5985540091064224  0.976181385699006   9  8
hat wye 9  0.03144187646093577 0.7495507603507059  10 10
pan wye 10 0.5026260055412137  0.9526183602969864  11 11

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      if (NR == 2 || NR == 8) {
        break;
      }
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  10002
eks pan 2  0.7586799647899636  0.5221511083334797  4  3
wye wye 3  0.20460330576630303 0.33831852551664776 4  10004
eks wye 4  0.38139939387114097 0.13418874328430463 5  10005
wye pan 5  0.5732889198020006  0.8636244699032729  6  10006
zee pan 6  0.5271261600918548  0.49322128674835697 7  10007
eks zee 7  0.6117840605678454  0.1878849191181694  8  10008
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10010
pan wye 10 0.5026260055412137  0.9526183602969864  11 10011

mlr --opprint --from ./reg_test/input/abixy put 
  $j = NR;
  do {
    $k = NR;
    $j += 1;
    do {
      $k += 1;
      if (NR == 2 || NR == 8) {
        continue;
      }
      $k += 10000;
    } while ($k < 7);
  } while ($j < 4);

a   b   i  x                   y                   j  k
pan pan 1  0.3467901443380824  0.7268028627434533  4  10002
eks pan 2  0.7586799647899636  0.5221511083334797  4  7
wye wye 3  0.20460330576630303 0.33831852551664776 4  10004
eks wye 4  0.38139939387114097 0.13418874328430463 5  10005
wye pan 5  0.5732889198020006  0.8636244699032729  6  10006
zee pan 6  0.5271261600918548  0.49322128674835697 7  10007
eks zee 7  0.6117840605678454  0.1878849191181694  8  10008
zee wye 8  0.5985540091064224  0.976181385699006   9  9
hat wye 9  0.03144187646093577 0.7495507603507059  10 10010
pan wye 10 0.5026260055412137  0.9526183602969864  11 10011


================================================================
DSL BREAK/CONTINUE IN SINGLE FOR-SREC

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      @logging1[NR][k] = v;
      if (k == "x") {
          break;
      }
  }
  end {
    emitp @logging1, "NR", "k";
  }

NR k logging1
1  a pan
1  b pan
1  i 1
1  x 0.346790
2  a eks
2  b pan
2  i 2
2  x 0.758680
3  a wye
3  b wye
3  i 3
3  x 0.204603
4  a eks
4  b wye
4  i 4
4  x 0.381399
5  a wye
5  b pan
5  i 5
5  x 0.573289
6  a zee
6  b pan
6  i 6
6  x 0.527126
7  a eks
7  b zee
7  i 7
7  x 0.611784
8  a zee
8  b wye
8  i 8
8  x 0.598554
9  a hat
9  b wye
9  i 9
9  x 0.031442
10 a pan
10 b wye
10 i 10
10 x 0.502626

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      if (k == "x") {
          break;
      }
      @logging2[NR][k] = v;
  }
  end {
    emitp @logging2, "NR", "k";
  }

NR k logging2
1  a pan
1  b pan
1  i 1
2  a eks
2  b pan
2  i 2
3  a wye
3  b wye
3  i 3
4  a eks
4  b wye
4  i 4
5  a wye
5  b pan
5  i 5
6  a zee
6  b pan
6  i 6
7  a eks
7  b zee
7  i 7
8  a zee
8  b wye
8  i 8
9  a hat
9  b wye
9  i 9
10 a pan
10 b wye
10 i 10

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      @logging3[NR][k] = v;
      if (k == "x") {
          continue;
      }
  }
  end {
    emitp @logging3, "NR", "k";
  }

NR k logging3
1  a pan
1  b pan
1  i 1
1  x 0.346790
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  x 0.758680
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  x 0.204603
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  x 0.381399
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  x 0.573289
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  x 0.527126
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  x 0.611784
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  x 0.598554
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  x 0.031442
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 x 0.502626
10 y 0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      if (k == "x") {
          continue;
      }
      @logging4[NR][k] = v;
  }
  end {
    emitp @logging4, "NR", "k"
  }

NR k logging4
1  a pan
1  b pan
1  i 1
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 y 0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k,v in $*) {
      @logging1[NR][k] = v;
      if (k == "x") {
          break;
      }
  }

  for (k,v in $*) {
      if (k == "x") {
          break;
      }
      @logging2[NR][k] = v;
  }

  for (k,v in $*) {
      @logging3[NR][k] = v;
      if (k == "x") {
          continue;
      }
  }

  for (k,v in $*) {
      if (k == "x") {
          continue;
      }
      @logging4[NR][k] = v;
  }

  end {
    emitp @logging1, "NR", "k";
    emitp @logging2, "NR", "k";
    emitp @logging3, "NR", "k";
    emitp @logging4, "NR", "k"
  }

NR k logging1
1  a pan
1  b pan
1  i 1
1  x 0.346790
2  a eks
2  b pan
2  i 2
2  x 0.758680
3  a wye
3  b wye
3  i 3
3  x 0.204603
4  a eks
4  b wye
4  i 4
4  x 0.381399
5  a wye
5  b pan
5  i 5
5  x 0.573289
6  a zee
6  b pan
6  i 6
6  x 0.527126
7  a eks
7  b zee
7  i 7
7  x 0.611784
8  a zee
8  b wye
8  i 8
8  x 0.598554
9  a hat
9  b wye
9  i 9
9  x 0.031442
10 a pan
10 b wye
10 i 10
10 x 0.502626

NR k logging2
1  a pan
1  b pan
1  i 1
2  a eks
2  b pan
2  i 2
3  a wye
3  b wye
3  i 3
4  a eks
4  b wye
4  i 4
5  a wye
5  b pan
5  i 5
6  a zee
6  b pan
6  i 6
7  a eks
7  b zee
7  i 7
8  a zee
8  b wye
8  i 8
9  a hat
9  b wye
9  i 9
10 a pan
10 b wye
10 i 10

NR k logging3
1  a pan
1  b pan
1  i 1
1  x 0.346790
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  x 0.758680
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  x 0.204603
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  x 0.381399
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  x 0.573289
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  x 0.527126
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  x 0.611784
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  x 0.598554
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  x 0.031442
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 x 0.502626
10 y 0.952618

NR k logging4
1  a pan
1  b pan
1  i 1
1  y 0.726803
2  a eks
2  b pan
2  i 2
2  y 0.522151
3  a wye
3  b wye
3  i 3
3  y 0.338319
4  a eks
4  b wye
4  i 4
4  y 0.134189
5  a wye
5  b pan
5  i 5
5  y 0.863624
6  a zee
6  b pan
6  i 6
6  y 0.493221
7  a eks
7  b zee
7  i 7
7  y 0.187885
8  a zee
8  b wye
8  i 8
8  y 0.976181
9  a hat
9  b wye
9  i 9
9  y 0.749551
10 a pan
10 b wye
10 i 10
10 y 0.952618


================================================================
DSL BREAK/CONTINUE IN NESTED FOR-SREC

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    break;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
2  a    before
3  a    before
4  a    before
5  a    before
6  a    before
7  a    before
8  a    before
9  a    before
10 a    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    continue;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
1  b    before
1  i    before
1  x    before
1  y    before
2  a    before
2  b    before
2  i    before
2  x    before
2  y    before
3  a    before
3  b    before
3  i    before
3  x    before
3  y    before
4  a    before
4  b    before
4  i    before
4  x    before
4  y    before
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    before
6  b    before
6  i    before
6  x    before
6  y    before
7  a    before
7  b    before
7  i    before
7  x    before
7  y    before
8  a    before
8  b    before
8  i    before
8  x    before
8  y    before
9  a    before
9  b    before
9  i    before
9  x    before
9  y    before
10 a    before
10 b    before
10 i    before
10 x    before
10 y    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      break;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  b_a   before
1  i_a   before
1  x_a   before
1  y_a   before
2  a_a   before
2  b_a   before
2  i_a   before
2  x_a   before
2  y_a   before
3  a_a   before
3  b_a   before
3  i_a   before
3  x_a   before
3  y_a   before
4  a_a   before
4  b_a   before
4  i_a   before
4  x_a   before
4  y_a   before
5  a_a   before
5  b_a   before
5  i_a   before
5  x_a   before
5  y_a   before
6  a_a   before
6  b_a   before
6  i_a   before
6  x_a   before
6  y_a   before
7  a_a   before
7  b_a   before
7  i_a   before
7  x_a   before
7  y_a   before
8  a_a   before
8  b_a   before
8  i_a   before
8  x_a   before
8  y_a   before
9  a_a   before
9  b_a   before
9  i_a   before
9  x_a   before
9  y_a   before
10 a_a   before
10 b_a   before
10 i_a   before
10 x_a   before
10 y_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      continue;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  a_b   before
1  a_i   before
1  a_x   before
1  a_y   before
1  b_a   before
1  b_b   before
1  b_i   before
1  b_x   before
1  b_y   before
1  i_a   before
1  i_b   before
1  i_i   before
1  i_x   before
1  i_y   before
1  x_a   before
1  x_b   before
1  x_i   before
1  x_x   before
1  x_y   before
1  y_a   before
1  y_b   before
1  y_i   before
1  y_x   before
1  y_y   before
2  a_a   before
2  a_b   before
2  a_i   before
2  a_x   before
2  a_y   before
2  b_a   before
2  b_b   before
2  b_i   before
2  b_x   before
2  b_y   before
2  i_a   before
2  i_b   before
2  i_i   before
2  i_x   before
2  i_y   before
2  x_a   before
2  x_b   before
2  x_i   before
2  x_x   before
2  x_y   before
2  y_a   before
2  y_b   before
2  y_i   before
2  y_x   before
2  y_y   before
3  a_a   before
3  a_b   before
3  a_i   before
3  a_x   before
3  a_y   before
3  b_a   before
3  b_b   before
3  b_i   before
3  b_x   before
3  b_y   before
3  i_a   before
3  i_b   before
3  i_i   before
3  i_x   before
3  i_y   before
3  x_a   before
3  x_b   before
3  x_i   before
3  x_x   before
3  x_y   before
3  y_a   before
3  y_b   before
3  y_i   before
3  y_x   before
3  y_y   before
4  a_a   before
4  a_b   before
4  a_i   before
4  a_x   before
4  a_y   before
4  b_a   before
4  b_b   before
4  b_i   before
4  b_x   before
4  b_y   before
4  i_a   before
4  i_b   before
4  i_i   before
4  i_x   before
4  i_y   before
4  x_a   before
4  x_b   before
4  x_i   before
4  x_x   before
4  x_y   before
4  y_a   before
4  y_b   before
4  y_i   before
4  y_x   before
4  y_y   before
5  a_a   before
5  a_b   before
5  a_i   before
5  a_x   before
5  a_y   before
5  b_a   before
5  b_b   before
5  b_i   before
5  b_x   before
5  b_y   before
5  i_a   before
5  i_b   before
5  i_i   before
5  i_x   before
5  i_y   before
5  x_a   before
5  x_b   before
5  x_i   before
5  x_x   before
5  x_y   before
5  y_a   before
5  y_b   before
5  y_i   before
5  y_x   before
5  y_y   before
6  a_a   before
6  a_b   before
6  a_i   before
6  a_x   before
6  a_y   before
6  b_a   before
6  b_b   before
6  b_i   before
6  b_x   before
6  b_y   before
6  i_a   before
6  i_b   before
6  i_i   before
6  i_x   before
6  i_y   before
6  x_a   before
6  x_b   before
6  x_i   before
6  x_x   before
6  x_y   before
6  y_a   before
6  y_b   before
6  y_i   before
6  y_x   before
6  y_y   before
7  a_a   before
7  a_b   before
7  a_i   before
7  a_x   before
7  a_y   before
7  b_a   before
7  b_b   before
7  b_i   before
7  b_x   before
7  b_y   before
7  i_a   before
7  i_b   before
7  i_i   before
7  i_x   before
7  i_y   before
7  x_a   before
7  x_b   before
7  x_i   before
7  x_x   before
7  x_y   before
7  y_a   before
7  y_b   before
7  y_i   before
7  y_x   before
7  y_y   before
8  a_a   before
8  a_b   before
8  a_i   before
8  a_x   before
8  a_y   before
8  b_a   before
8  b_b   before
8  b_i   before
8  b_x   before
8  b_y   before
8  i_a   before
8  i_b   before
8  i_i   before
8  i_x   before
8  i_y   before
8  x_a   before
8  x_b   before
8  x_i   before
8  x_x   before
8  x_y   before
8  y_a   before
8  y_b   before
8  y_i   before
8  y_x   before
8  y_y   before
9  a_a   before
9  a_b   before
9  a_i   before
9  a_x   before
9  a_y   before
9  b_a   before
9  b_b   before
9  b_i   before
9  b_x   before
9  b_y   before
9  i_a   before
9  i_b   before
9  i_i   before
9  i_x   before
9  i_y   before
9  x_a   before
9  x_b   before
9  x_i   before
9  x_x   before
9  x_y   before
9  y_a   before
9  y_b   before
9  y_i   before
9  y_x   before
9  y_y   before
10 a_a   before
10 a_b   before
10 a_i   before
10 a_x   before
10 a_y   before
10 b_a   before
10 b_b   before
10 b_i   before
10 b_x   before
10 b_y   before
10 i_a   before
10 i_b   before
10 i_i   before
10 i_x   before
10 i_y   before
10 x_a   before
10 x_b   before
10 x_i   before
10 x_x   before
10 x_y   before
10 y_a   before
10 y_b   before
10 y_i   before
10 y_x   before
10 y_y   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    break;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      break;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
2  a    before
3  a    before
4  a    before
5  a    before
6  a    before
7  a    before
8  a    before
9  a    before
10 a    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    continue;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      break;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
1  b    before
1  i    before
1  x    before
1  y    before
2  a    before
2  b    before
2  i    before
2  x    before
2  y    before
3  a    before
3  b    before
3  i    before
3  x    before
3  y    before
4  a    before
4  b    before
4  i    before
4  x    before
4  y    before
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    before
6  b    before
6  i    before
6  x    before
6  y    before
7  a    before
7  b    before
7  i    before
7  x    before
7  y    before
8  a    before
8  b    before
8  i    before
8  x    before
8  y    before
9  a    before
9  b    before
9  i    before
9  x    before
9  y    before
10 a    before
10 b    before
10 i    before
10 x    before
10 y    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    break;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      continue;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
2  a    before
3  a    before
4  a    before
5  a    before
6  a    before
7  a    before
8  a    before
9  a    before
10 a    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    continue;
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      continue;
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    before
1  b    before
1  i    before
1  x    before
1  y    before
2  a    before
2  b    before
2  i    before
2  x    before
2  y    before
3  a    before
3  b    before
3  i    before
3  x    before
3  y    before
4  a    before
4  b    before
4  i    before
4  x    before
4  y    before
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    before
6  b    before
6  i    before
6  x    before
6  y    before
7  a    before
7  b    before
7  i    before
7  x    before
7  y    before
8  a    before
8  b    before
8  i    before
8  x    before
8  y    before
9  a    before
9  b    before
9  i    before
9  x    before
9  y    before
10 a    before
10 b    before
10 i    before
10 x    before
10 y    before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        break
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
2  a    eks
2  b    before
3  a    wye
3  b    before
4  a    eks
4  b    before
5  a    wye
5  b    before
6  a    zee
6  b    before
7  a    eks
7  b    before
8  a    zee
8  b    before
9  a    hat
9  b    before
10 a    pan
10 b    before

NR names output2
1  a_a   pan
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
2  a_a   eks
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
3  a_a   wye
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
4  a_a   eks
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
5  a_a   wye
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
6  a_a   zee
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
7  a_a   eks
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
8  a_a   zee
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
9  a_a   hat
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
10 a_a   pan
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        continue
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    before
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    before
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    before
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    before
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    before
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    before
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    before
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    before
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    before
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   pan
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
1  i_a   pan
1  i_b   pan
1  i_i   1
1  i_x   0.346790
1  i_y   0.726803
1  x_a   pan
1  x_b   pan
1  x_i   1
1  x_x   0.346790
1  x_y   0.726803
1  y_a   pan
1  y_b   pan
1  y_i   1
1  y_x   0.346790
1  y_y   0.726803
2  a_a   eks
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
2  i_a   eks
2  i_b   pan
2  i_i   2
2  i_x   0.758680
2  i_y   0.522151
2  x_a   eks
2  x_b   pan
2  x_i   2
2  x_x   0.758680
2  x_y   0.522151
2  y_a   eks
2  y_b   pan
2  y_i   2
2  y_x   0.758680
2  y_y   0.522151
3  a_a   wye
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
3  i_a   wye
3  i_b   wye
3  i_i   3
3  i_x   0.204603
3  i_y   0.338319
3  x_a   wye
3  x_b   wye
3  x_i   3
3  x_x   0.204603
3  x_y   0.338319
3  y_a   wye
3  y_b   wye
3  y_i   3
3  y_x   0.204603
3  y_y   0.338319
4  a_a   eks
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
4  i_a   eks
4  i_b   wye
4  i_i   4
4  i_x   0.381399
4  i_y   0.134189
4  x_a   eks
4  x_b   wye
4  x_i   4
4  x_x   0.381399
4  x_y   0.134189
4  y_a   eks
4  y_b   wye
4  y_i   4
4  y_x   0.381399
4  y_y   0.134189
5  a_a   wye
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
5  i_a   wye
5  i_b   pan
5  i_i   5
5  i_x   0.573289
5  i_y   0.863624
5  x_a   wye
5  x_b   pan
5  x_i   5
5  x_x   0.573289
5  x_y   0.863624
5  y_a   wye
5  y_b   pan
5  y_i   5
5  y_x   0.573289
5  y_y   0.863624
6  a_a   zee
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
6  i_a   zee
6  i_b   pan
6  i_i   6
6  i_x   0.527126
6  i_y   0.493221
6  x_a   zee
6  x_b   pan
6  x_i   6
6  x_x   0.527126
6  x_y   0.493221
6  y_a   zee
6  y_b   pan
6  y_i   6
6  y_x   0.527126
6  y_y   0.493221
7  a_a   eks
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
7  i_a   eks
7  i_b   zee
7  i_i   7
7  i_x   0.611784
7  i_y   0.187885
7  x_a   eks
7  x_b   zee
7  x_i   7
7  x_x   0.611784
7  x_y   0.187885
7  y_a   eks
7  y_b   zee
7  y_i   7
7  y_x   0.611784
7  y_y   0.187885
8  a_a   zee
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
8  i_a   zee
8  i_b   wye
8  i_i   8
8  i_x   0.598554
8  i_y   0.976181
8  x_a   zee
8  x_b   wye
8  x_i   8
8  x_x   0.598554
8  x_y   0.976181
8  y_a   zee
8  y_b   wye
8  y_i   8
8  y_x   0.598554
8  y_y   0.976181
9  a_a   hat
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
9  i_a   hat
9  i_b   wye
9  i_i   9
9  i_x   0.031442
9  i_y   0.749551
9  x_a   hat
9  x_b   wye
9  x_i   9
9  x_x   0.031442
9  x_y   0.749551
9  y_a   hat
9  y_b   wye
9  y_i   9
9  y_x   0.031442
9  y_y   0.749551
10 a_a   pan
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618
10 i_a   pan
10 i_b   wye
10 i_i   10
10 i_x   0.502626
10 i_y   0.952618
10 x_a   pan
10 x_b   wye
10 x_i   10
10 x_x   0.502626
10 x_y   0.952618
10 y_a   pan
10 y_b   wye
10 y_i   10
10 y_x   0.502626
10 y_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          break
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  b_a   before
1  i_a   before
1  x_a   before
1  y_a   before
2  a_a   before
2  b_a   before
2  i_a   before
2  x_a   before
2  y_a   before
3  a_a   before
3  b_a   before
3  i_a   before
3  x_a   before
3  y_a   before
4  a_a   before
4  b_a   before
4  i_a   before
4  x_a   before
4  y_a   before
5  a_a   before
5  b_a   before
5  i_a   before
5  x_a   before
5  y_a   before
6  a_a   before
6  b_a   before
6  i_a   before
6  x_a   before
6  y_a   before
7  a_a   before
7  b_a   before
7  i_a   before
7  x_a   before
7  y_a   before
8  a_a   before
8  b_a   before
8  i_a   before
8  x_a   before
8  y_a   before
9  a_a   before
9  b_a   before
9  i_a   before
9  x_a   before
9  y_a   before
10 a_a   before
10 b_a   before
10 i_a   before
10 x_a   before
10 y_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "b") {
          continue
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    pan
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    pan
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    wye
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    wye
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    pan
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    pan
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    zee
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    wye
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    wye
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    wye
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   pan
1  a_b   before
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
1  b_a   pan
1  b_b   before
1  b_i   1
1  b_x   0.346790
1  b_y   0.726803
1  i_a   pan
1  i_b   before
1  i_i   1
1  i_x   0.346790
1  i_y   0.726803
1  x_a   pan
1  x_b   before
1  x_i   1
1  x_x   0.346790
1  x_y   0.726803
1  y_a   pan
1  y_b   before
1  y_i   1
1  y_x   0.346790
1  y_y   0.726803
2  a_a   eks
2  a_b   before
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
2  b_a   eks
2  b_b   before
2  b_i   2
2  b_x   0.758680
2  b_y   0.522151
2  i_a   eks
2  i_b   before
2  i_i   2
2  i_x   0.758680
2  i_y   0.522151
2  x_a   eks
2  x_b   before
2  x_i   2
2  x_x   0.758680
2  x_y   0.522151
2  y_a   eks
2  y_b   before
2  y_i   2
2  y_x   0.758680
2  y_y   0.522151
3  a_a   wye
3  a_b   before
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
3  b_a   wye
3  b_b   before
3  b_i   3
3  b_x   0.204603
3  b_y   0.338319
3  i_a   wye
3  i_b   before
3  i_i   3
3  i_x   0.204603
3  i_y   0.338319
3  x_a   wye
3  x_b   before
3  x_i   3
3  x_x   0.204603
3  x_y   0.338319
3  y_a   wye
3  y_b   before
3  y_i   3
3  y_x   0.204603
3  y_y   0.338319
4  a_a   eks
4  a_b   before
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
4  b_a   eks
4  b_b   before
4  b_i   4
4  b_x   0.381399
4  b_y   0.134189
4  i_a   eks
4  i_b   before
4  i_i   4
4  i_x   0.381399
4  i_y   0.134189
4  x_a   eks
4  x_b   before
4  x_i   4
4  x_x   0.381399
4  x_y   0.134189
4  y_a   eks
4  y_b   before
4  y_i   4
4  y_x   0.381399
4  y_y   0.134189
5  a_a   wye
5  a_b   before
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
5  b_a   wye
5  b_b   before
5  b_i   5
5  b_x   0.573289
5  b_y   0.863624
5  i_a   wye
5  i_b   before
5  i_i   5
5  i_x   0.573289
5  i_y   0.863624
5  x_a   wye
5  x_b   before
5  x_i   5
5  x_x   0.573289
5  x_y   0.863624
5  y_a   wye
5  y_b   before
5  y_i   5
5  y_x   0.573289
5  y_y   0.863624
6  a_a   zee
6  a_b   before
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
6  b_a   zee
6  b_b   before
6  b_i   6
6  b_x   0.527126
6  b_y   0.493221
6  i_a   zee
6  i_b   before
6  i_i   6
6  i_x   0.527126
6  i_y   0.493221
6  x_a   zee
6  x_b   before
6  x_i   6
6  x_x   0.527126
6  x_y   0.493221
6  y_a   zee
6  y_b   before
6  y_i   6
6  y_x   0.527126
6  y_y   0.493221
7  a_a   eks
7  a_b   before
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
7  b_a   eks
7  b_b   before
7  b_i   7
7  b_x   0.611784
7  b_y   0.187885
7  i_a   eks
7  i_b   before
7  i_i   7
7  i_x   0.611784
7  i_y   0.187885
7  x_a   eks
7  x_b   before
7  x_i   7
7  x_x   0.611784
7  x_y   0.187885
7  y_a   eks
7  y_b   before
7  y_i   7
7  y_x   0.611784
7  y_y   0.187885
8  a_a   zee
8  a_b   before
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
8  b_a   zee
8  b_b   before
8  b_i   8
8  b_x   0.598554
8  b_y   0.976181
8  i_a   zee
8  i_b   before
8  i_i   8
8  i_x   0.598554
8  i_y   0.976181
8  x_a   zee
8  x_b   before
8  x_i   8
8  x_x   0.598554
8  x_y   0.976181
8  y_a   zee
8  y_b   before
8  y_i   8
8  y_x   0.598554
8  y_y   0.976181
9  a_a   hat
9  a_b   before
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
9  b_a   hat
9  b_b   before
9  b_i   9
9  b_x   0.031442
9  b_y   0.749551
9  i_a   hat
9  i_b   before
9  i_i   9
9  i_x   0.031442
9  i_y   0.749551
9  x_a   hat
9  x_b   before
9  x_i   9
9  x_x   0.031442
9  x_y   0.749551
9  y_a   hat
9  y_b   before
9  y_i   9
9  y_x   0.031442
9  y_y   0.749551
10 a_a   pan
10 a_b   before
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618
10 b_a   pan
10 b_b   before
10 b_i   10
10 b_x   0.502626
10 b_y   0.952618
10 i_a   pan
10 i_b   before
10 i_i   10
10 i_x   0.502626
10 i_y   0.952618
10 x_a   pan
10 x_b   before
10 x_i   10
10 x_x   0.502626
10 x_y   0.952618
10 y_a   pan
10 y_b   before
10 y_i   10
10 y_x   0.502626
10 y_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        break
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          break
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
2  a    eks
2  b    before
3  a    wye
3  b    before
4  a    eks
4  b    before
5  a    wye
5  b    before
6  a    zee
6  b    before
7  a    eks
7  b    before
8  a    zee
8  b    before
9  a    hat
9  b    before
10 a    pan
10 b    before

NR names output2
1  a_a   before
2  a_a   before
3  a_a   before
4  a_a   before
5  a_a   before
6  a_a   before
7  a_a   before
8  a_a   before
9  a_a   before
10 a_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        continue
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          break
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    before
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    before
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    before
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    before
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    before
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    before
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    before
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    before
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    before
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  i_a   before
1  x_a   before
1  y_a   before
2  a_a   before
2  i_a   before
2  x_a   before
2  y_a   before
3  a_a   before
3  i_a   before
3  x_a   before
3  y_a   before
4  a_a   before
4  i_a   before
4  x_a   before
4  y_a   before
5  a_a   before
5  i_a   before
5  x_a   before
5  y_a   before
6  a_a   before
6  i_a   before
6  x_a   before
6  y_a   before
7  a_a   before
7  i_a   before
7  x_a   before
7  y_a   before
8  a_a   before
8  i_a   before
8  x_a   before
8  y_a   before
9  a_a   before
9  i_a   before
9  x_a   before
9  y_a   before
10 a_a   before
10 i_a   before
10 x_a   before
10 y_a   before

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        break
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          continue
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
2  a    eks
2  b    before
3  a    wye
3  b    before
4  a    eks
4  b    before
5  a    wye
5  b    before
6  a    zee
6  b    before
7  a    eks
7  b    before
8  a    zee
8  b    before
9  a    hat
9  b    before
10 a    pan
10 b    before

NR names output2
1  a_a   before
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
2  a_a   before
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
3  a_a   before
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
4  a_a   before
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
5  a_a   before
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
6  a_a   before
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
7  a_a   before
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
8  a_a   before
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
9  a_a   before
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
10 a_a   before
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618

mlr --opprint --from ./reg_test/input/abixy put -q 
  for (k1, v1 in $*) {
    @output1[NR][k1] = "before";
    if (k1 == "b") {
        continue
    }
    @output1[NR][k1] = v1;
    for (k2, v2 in $*) {
      @output2[NR][k1."_".k2] = "before";
      if (k2 == "a") {
          continue
      }
      @output2[NR][k1."_".k2] = v2;
    }
  }
  end {
    emit @output1, "NR", "name";
    emit @output2, "NR", "names";
  }

NR name output1
1  a    pan
1  b    before
1  i    1
1  x    0.346790
1  y    0.726803
2  a    eks
2  b    before
2  i    2
2  x    0.758680
2  y    0.522151
3  a    wye
3  b    before
3  i    3
3  x    0.204603
3  y    0.338319
4  a    eks
4  b    before
4  i    4
4  x    0.381399
4  y    0.134189
5  a    wye
5  b    before
5  i    5
5  x    0.573289
5  y    0.863624
6  a    zee
6  b    before
6  i    6
6  x    0.527126
6  y    0.493221
7  a    eks
7  b    before
7  i    7
7  x    0.611784
7  y    0.187885
8  a    zee
8  b    before
8  i    8
8  x    0.598554
8  y    0.976181
9  a    hat
9  b    before
9  i    9
9  x    0.031442
9  y    0.749551
10 a    pan
10 b    before
10 i    10
10 x    0.502626
10 y    0.952618

NR names output2
1  a_a   before
1  a_b   pan
1  a_i   1
1  a_x   0.346790
1  a_y   0.726803
1  i_a   before
1  i_b   pan
1  i_i   1
1  i_x   0.346790
1  i_y   0.726803
1  x_a   before
1  x_b   pan
1  x_i   1
1  x_x   0.346790
1  x_y   0.726803
1  y_a   before
1  y_b   pan
1  y_i   1
1  y_x   0.346790
1  y_y   0.726803
2  a_a   before
2  a_b   pan
2  a_i   2
2  a_x   0.758680
2  a_y   0.522151
2  i_a   before
2  i_b   pan
2  i_i   2
2  i_x   0.758680
2  i_y   0.522151
2  x_a   before
2  x_b   pan
2  x_i   2
2  x_x   0.758680
2  x_y   0.522151
2  y_a   before
2  y_b   pan
2  y_i   2
2  y_x   0.758680
2  y_y   0.522151
3  a_a   before
3  a_b   wye
3  a_i   3
3  a_x   0.204603
3  a_y   0.338319
3  i_a   before
3  i_b   wye
3  i_i   3
3  i_x   0.204603
3  i_y   0.338319
3  x_a   before
3  x_b   wye
3  x_i   3
3  x_x   0.204603
3  x_y   0.338319
3  y_a   before
3  y_b   wye
3  y_i   3
3  y_x   0.204603
3  y_y   0.338319
4  a_a   before
4  a_b   wye
4  a_i   4
4  a_x   0.381399
4  a_y   0.134189
4  i_a   before
4  i_b   wye
4  i_i   4
4  i_x   0.381399
4  i_y   0.134189
4  x_a   before
4  x_b   wye
4  x_i   4
4  x_x   0.381399
4  x_y   0.134189
4  y_a   before
4  y_b   wye
4  y_i   4
4  y_x   0.381399
4  y_y   0.134189
5  a_a   before
5  a_b   pan
5  a_i   5
5  a_x   0.573289
5  a_y   0.863624
5  i_a   before
5  i_b   pan
5  i_i   5
5  i_x   0.573289
5  i_y   0.863624
5  x_a   before
5  x_b   pan
5  x_i   5
5  x_x   0.573289
5  x_y   0.863624
5  y_a   before
5  y_b   pan
5  y_i   5
5  y_x   0.573289
5  y_y   0.863624
6  a_a   before
6  a_b   pan
6  a_i   6
6  a_x   0.527126
6  a_y   0.493221
6  i_a   before
6  i_b   pan
6  i_i   6
6  i_x   0.527126
6  i_y   0.493221
6  x_a   before
6  x_b   pan
6  x_i   6
6  x_x   0.527126
6  x_y   0.493221
6  y_a   before
6  y_b   pan
6  y_i   6
6  y_x   0.527126
6  y_y   0.493221
7  a_a   before
7  a_b   zee
7  a_i   7
7  a_x   0.611784
7  a_y   0.187885
7  i_a   before
7  i_b   zee
7  i_i   7
7  i_x   0.611784
7  i_y   0.187885
7  x_a   before
7  x_b   zee
7  x_i   7
7  x_x   0.611784
7  x_y   0.187885
7  y_a   before
7  y_b   zee
7  y_i   7
7  y_x   0.611784
7  y_y   0.187885
8  a_a   before
8  a_b   wye
8  a_i   8
8  a_x   0.598554
8  a_y   0.976181
8  i_a   before
8  i_b   wye
8  i_i   8
8  i_x   0.598554
8  i_y   0.976181
8  x_a   before
8  x_b   wye
8  x_i   8
8  x_x   0.598554
8  x_y   0.976181
8  y_a   before
8  y_b   wye
8  y_i   8
8  y_x   0.598554
8  y_y   0.976181
9  a_a   before
9  a_b   wye
9  a_i   9
9  a_x   0.031442
9  a_y   0.749551
9  i_a   before
9  i_b   wye
9  i_i   9
9  i_x   0.031442
9  i_y   0.749551
9  x_a   before
9  x_b   wye
9  x_i   9
9  x_x   0.031442
9  x_y   0.749551
9  y_a   before
9  y_b   wye
9  y_i   9
9  y_x   0.031442
9  y_y   0.749551
10 a_a   before
10 a_b   wye
10 a_i   10
10 a_x   0.502626
10 a_y   0.952618
10 i_a   before
10 i_b   wye
10 i_i   10
10 i_x   0.502626
10 i_y   0.952618
10 x_a   before
10 x_b   wye
10 x_i   10
10 x_x   0.502626
10 x_y   0.952618
10 y_a   before
10 y_b   wye
10 y_i   10
10 y_x   0.502626
10 y_y   0.952618


================================================================
FOR-OOSVAR DEPTH TESTS


---------------------------------------------------------------- for full oosvar
mlr --from ./reg_test/input/abixy put @o[1][2] = 7; for(k1,v in @*) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put @o[1][2] = 7; for((k1),v in @*) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put @o[1][2] = 7; for((k1,k2),v in @*) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put @o[1][2] = 7; for((k1,k2,k3),v in @*) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=10.346790,y=100.726803
a=eks,b=pan,i=2,x=10.758680,y=100.522151
a=wye,b=wye,i=3,x=10.204603,y=100.338319
a=eks,b=wye,i=4,x=10.381399,y=100.134189
a=wye,b=pan,i=5,x=10.573289,y=100.863624
a=zee,b=pan,i=6,x=10.527126,y=100.493221
a=eks,b=zee,i=7,x=10.611784,y=100.187885
a=zee,b=wye,i=8,x=10.598554,y=100.976181
a=hat,b=wye,i=9,x=10.031442,y=100.749551
a=pan,b=wye,i=10,x=10.502626,y=100.952618


---------------------------------------------------------------- for oosvar submap
mlr --from ./reg_test/input/abixy put @o[1][2][3] = 7; for(k1,v in @o[1][2]) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=10.346790,y=100.726803
a=eks,b=pan,i=2,x=10.758680,y=100.522151
a=wye,b=wye,i=3,x=10.204603,y=100.338319
a=eks,b=wye,i=4,x=10.381399,y=100.134189
a=wye,b=pan,i=5,x=10.573289,y=100.863624
a=zee,b=pan,i=6,x=10.527126,y=100.493221
a=eks,b=zee,i=7,x=10.611784,y=100.187885
a=zee,b=wye,i=8,x=10.598554,y=100.976181
a=hat,b=wye,i=9,x=10.031442,y=100.749551
a=pan,b=wye,i=10,x=10.502626,y=100.952618

mlr --from ./reg_test/input/abixy put @o[1][2][3] = 7; for((k1),v in @o[1][2]) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=10.346790,y=100.726803
a=eks,b=pan,i=2,x=10.758680,y=100.522151
a=wye,b=wye,i=3,x=10.204603,y=100.338319
a=eks,b=wye,i=4,x=10.381399,y=100.134189
a=wye,b=pan,i=5,x=10.573289,y=100.863624
a=zee,b=pan,i=6,x=10.527126,y=100.493221
a=eks,b=zee,i=7,x=10.611784,y=100.187885
a=zee,b=wye,i=8,x=10.598554,y=100.976181
a=hat,b=wye,i=9,x=10.031442,y=100.749551
a=pan,b=wye,i=10,x=10.502626,y=100.952618

mlr --from ./reg_test/input/abixy put @o[1][2][3] = 7; for((k1,k2),v in @o[1][2]) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy put @o[1][2][3] = 7; for((k1,k2,k3),v in @o[1][2]) {$x+=10;$y+=100}
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL BREAK/CONTINUE IN SINGLE FOR-OOSVAR


---------------------------------------------------------------- single-key tests, direct break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        break;
        @output[k1] = v;
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        break;
        @output[k1] = "ERROR";
    }
    emit @output, "NR", "name"
  }

NR output
a  eks

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        continue;
        @output[k1] = v
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        continue;
        @output[k1] = "ERROR";
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan
i  2
x  0.7586799647899636
y  0.5221511083334797


---------------------------------------------------------------- single-key tests, indirect break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        if (k1 == "i") {
          break;
        }
        @output[k1] = v;
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        if (k1 == "i") {
          break;
        }
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan
i  2

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        if (k1 == "i") {
          continue;
        }
        @output[k1] = v
    }
    emit @output, "NR", "name"
  }

NR output
a  eks
b  pan
x  0.7586799647899636
y  0.5221511083334797

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for (k1, v in @logging[2]) {
        @output[k1] = v;
        if (k1 == "i") {
          continue;
        }
        @output[k1] = "reached";
    }
    emit @output, "NR", "name"
  }

NR output
a  reached
b  reached
i  2
x  reached
y  reached


---------------------------------------------------------------- multiple-key tests, direct break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        break;
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        break;
        @output[k1][k2] = "ERROR"
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        continue;
        @output[k1][k2] = v
    }
    emit @output, "NR", "name"
  }


mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        continue;
        @output[k1][k2] = "ERROR";
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye
5  b    pan
5  i    5
5  x    0.5732889198020006
5  y    0.8636244699032729
6  a    zee
6  b    pan
6  i    6
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    7
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    8
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    9
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    10
10 x    0.5026260055412137
10 y    0.9526183602969864


---------------------------------------------------------------- multiple-key tests, indirect break/continue
mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k1 == 5) {
          break;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k2 == "i") {
          break;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        if (k1 == 5) {
          break;
        }
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = v;
        if (k2 == "i") {
          break;
        }
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k1 == 5) {
          continue;
        }
        @output[k1][k2] = v
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
6  a    zee
6  b    pan
6  i    6
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    7
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    8
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    9
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    10
10 x    0.5026260055412137
10 y    0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k2 == "i") {
          continue;
        }
        @output[k1][k2] = v
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye
5  b    pan
5  x    0.5732889198020006
5  y    0.8636244699032729
6  a    zee
6  b    pan
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 x    0.5026260055412137
10 y    0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = "before";
        if (k1 == 5) {
          continue;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    1
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    2
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    3
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    4
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    before
5  b    before
5  i    before
5  x    before
5  y    before
6  a    zee
6  b    pan
6  i    6
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    7
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    8
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    9
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    10
10 x    0.5026260055412137
10 y    0.9526183602969864

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        @output[k1][k2] = "before";
        if (k2 == "i") {
          continue;
        }
        @output[k1][k2] = v;
    }
    emit @output, "NR", "name"
  }

NR name output
1  a    pan
1  b    pan
1  i    before
1  x    0.3467901443380824
1  y    0.7268028627434533
2  a    eks
2  b    pan
2  i    before
2  x    0.7586799647899636
2  y    0.5221511083334797
3  a    wye
3  b    wye
3  i    before
3  x    0.20460330576630303
3  y    0.33831852551664776
4  a    eks
4  b    wye
4  i    before
4  x    0.38139939387114097
4  y    0.13418874328430463
5  a    wye
5  b    pan
5  i    before
5  x    0.5732889198020006
5  y    0.8636244699032729
6  a    zee
6  b    pan
6  i    before
6  x    0.5271261600918548
6  y    0.49322128674835697
7  a    eks
7  b    zee
7  i    before
7  x    0.6117840605678454
7  y    0.1878849191181694
8  a    zee
8  b    wye
8  i    before
8  x    0.5985540091064224
8  y    0.976181385699006
9  a    hat
9  b    wye
9  i    before
9  x    0.03144187646093577
9  y    0.7495507603507059
10 a    pan
10 b    wye
10 i    before
10 x    0.5026260055412137
10 y    0.9526183602969864


================================================================
DSL BREAK/CONTINUE IN NESTED FOR-OOSVAR

mlr --opprint --from ./reg_test/input/abixy put -q 
  @logging[NR] = $*;
  end {
    for ((k1, k2), v in @logging) {
        if (k1 != 2) {
          continue
        }
        for ((k3, k4), v in @logging) {
          if (k3 != 4) {
            continue
          }
          @output[k1][k2][k3][k4] = v;
        }
    }
    emit @output, "NR1", "name1", "NR2", "name2"
  }

NR1 name1 NR2 name2 output
2   a     4   a     eks
2   a     4   b     wye
2   a     4   i     4
2   a     4   x     0.38139939387114097
2   a     4   y     0.13418874328430463
2   b     4   a     eks
2   b     4   b     wye
2   b     4   i     4
2   b     4   x     0.38139939387114097
2   b     4   y     0.13418874328430463
2   i     4   a     eks
2   i     4   b     wye
2   i     4   i     4
2   i     4   x     0.38139939387114097
2   i     4   y     0.13418874328430463
2   x     4   a     eks
2   x     4   b     wye
2   x     4   i     4
2   x     4   x     0.38139939387114097
2   x     4   y     0.13418874328430463
2   y     4   a     eks
2   y     4   b     wye
2   y     4   i     4
2   y     4   x     0.38139939387114097
2   y     4   y     0.13418874328430463


================================================================
DSL PRINT

mlr put -q print 1; print "two"; print $a; print $i < 4; print "y is ".string($y); print "" ./reg_test/input/abixy
1
two
pan
true
y is 0.726803

1
two
eks
true
y is 0.522151

1
two
wye
true
y is 0.338319

1
two
eks
false
y is 0.134189

1
two
wye
false
y is 0.863624

1
two
zee
false
y is 0.493221

1
two
eks
false
y is 0.187885

1
two
zee
false
y is 0.976181

1
two
hat
false
y is 0.749551

1
two
pan
false
y is 0.952618


mlr put -q printn 1; printn "two"; printn $a; printn $i < 4; printn "y is ".string($y); print "" ./reg_test/input/abixy
1twopantruey is 0.726803
1twoekstruey is 0.522151
1twowyetruey is 0.338319
1twoeksfalsey is 0.134189
1twowyefalsey is 0.863624
1twozeefalsey is 0.493221
1twoeksfalsey is 0.187885
1twozeefalsey is 0.976181
1twohatfalsey is 0.749551
1twopanfalsey is 0.952618


================================================================
ABSENT/EMPTY

mlr put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442

mlr put $nonesuch = @nonesuch ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -q @sum     += $x; end{emitp @sum} ./reg_test/input/abixy-het
sum=3.963005

mlr put -q @sum[$a] += $x; end{emitp @sum, "a"} ./reg_test/input/abixy-het
a=pan,sum=0.849416
a=eks,sum=1.751863
a=zee,sum=1.125680

mlr put $nonesuch = @nonesuch ./reg_test/input/abixy-het
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
aaa=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,bbb=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,xxx=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,yyy=0.976181385699006
aaa=hat,bbb=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr put -q @sum += $x; @sumtype = typeof(@sum); @xtype = typeof($x); emitf @sumtype, @xtype, @sum; end{emitp @sum} ./reg_test/input/abixy
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=0.346790
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.105470
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.310073
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.691473
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.264762
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.791888
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.403672
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=4.002226
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=4.033668
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=4.536294
sum=4.536294

mlr put -q @sum += $x; @sumtype = typeof(@sum); @xtype = typeof($x); emitf @sumtype, @xtype, @sum; end{emitp @sum} ./reg_test/input/abixy-het
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=0.346790
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.105470
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.310073
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=1.691473
sumtype=MT_FLOAT,xtype=MT_ABSENT,sum=1.691473
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.218599
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=2.830383
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.428937
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.460379
sumtype=MT_FLOAT,xtype=MT_FLOAT,sum=3.963005
sum=3.963005

mlr put $z = $x + $y ./reg_test/input/typeof.dkvp
x=1,y=2,z=3
x=1,y=,z=
x=,y=2,z=
x=,y=,z=
a=1,y=2,z=2
a=1,y=
a=,y=2,z=2
a=,y=
x=1,b=2,z=1
x=1,b=,z=1
x=,b=2
x=,b=

mlr put $z = $x + $u ./reg_test/input/typeof.dkvp
x=1,y=2,z=1
x=1,y=,z=1
x=,y=2
x=,y=
a=1,y=2
a=1,y=
a=,y=2
a=,y=
x=1,b=2,z=1
x=1,b=,z=1
x=,b=2
x=,b=

mlr put @s = @s + $y; emitp @s ./reg_test/input/typeof.dkvp
s=2
x=1,y=2
s=
x=1,y=
s=
x=,y=2
s=
x=,y=
s=
a=1,y=2
s=
a=1,y=
s=
a=,y=2
s=
a=,y=
s=
x=1,b=2
s=
x=1,b=
s=
x=,b=2
s=
x=,b=

mlr put @s = @s + $u; emitp @s ./reg_test/input/typeof.dkvp
x=1,y=2
x=1,y=
x=,y=2
x=,y=
a=1,y=2
a=1,y=
a=,y=2
a=,y=
x=1,b=2
x=1,b=
x=,b=2
x=,b=

mlr put $z = $x + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_INT
x=MT_INT,y=MT_EMPTY,z=MT_EMPTY
x=MT_EMPTY,y=MT_INT,z=MT_EMPTY
x=MT_EMPTY,y=MT_EMPTY,z=MT_EMPTY
a=1,y=MT_INT,z=MT_INT,x=MT_ABSENT
a=1,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT
a=,y=MT_INT,z=MT_INT,x=MT_ABSENT
a=,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT
x=MT_INT,b=2,z=MT_INT,y=MT_ABSENT
x=MT_INT,b=,z=MT_INT,y=MT_ABSENT
x=MT_EMPTY,b=2,y=MT_ABSENT,z=MT_ABSENT
x=MT_EMPTY,b=,y=MT_ABSENT,z=MT_ABSENT

mlr put $z = $x + $u; $x=typeof($x);$y=typeof($y);$z=typeof($z) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_INT
x=MT_INT,y=MT_EMPTY,z=MT_INT
x=MT_EMPTY,y=MT_INT,z=MT_ABSENT
x=MT_EMPTY,y=MT_EMPTY,z=MT_ABSENT
a=1,y=MT_INT,x=MT_ABSENT,z=MT_ABSENT
a=1,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT
a=,y=MT_INT,x=MT_ABSENT,z=MT_ABSENT
a=,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT
x=MT_INT,b=2,z=MT_INT,y=MT_ABSENT
x=MT_INT,b=,z=MT_INT,y=MT_ABSENT
x=MT_EMPTY,b=2,y=MT_ABSENT,z=MT_ABSENT
x=MT_EMPTY,b=,y=MT_ABSENT,z=MT_ABSENT

mlr put @s = @s + $y; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_ABSENT,s=MT_INT
x=MT_INT,y=MT_EMPTY,z=MT_ABSENT,s=MT_EMPTY
x=MT_EMPTY,y=MT_INT,z=MT_ABSENT,s=MT_EMPTY
x=MT_EMPTY,y=MT_EMPTY,z=MT_ABSENT,s=MT_EMPTY
a=1,y=MT_INT,x=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
a=1,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
a=,y=MT_INT,x=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
a=,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
x=MT_INT,b=2,y=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
x=MT_INT,b=,y=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
x=MT_EMPTY,b=2,y=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY
x=MT_EMPTY,b=,y=MT_ABSENT,z=MT_ABSENT,s=MT_EMPTY

mlr put @s = @s + $u; $x=typeof($x);$y=typeof($y);$z=typeof($z);$s=typeof(@s) ./reg_test/input/typeof.dkvp
x=MT_INT,y=MT_INT,z=MT_ABSENT,s=MT_ABSENT
x=MT_INT,y=MT_EMPTY,z=MT_ABSENT,s=MT_ABSENT
x=MT_EMPTY,y=MT_INT,z=MT_ABSENT,s=MT_ABSENT
x=MT_EMPTY,y=MT_EMPTY,z=MT_ABSENT,s=MT_ABSENT
a=1,y=MT_INT,x=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
a=1,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
a=,y=MT_INT,x=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
a=,y=MT_EMPTY,x=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
x=MT_INT,b=2,y=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
x=MT_INT,b=,y=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
x=MT_EMPTY,b=2,y=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT
x=MT_EMPTY,b=,y=MT_ABSENT,z=MT_ABSENT,s=MT_ABSENT

mlr cat
x=1
x=
x=7

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum+=$x; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=MT_ABSENT	xtype=MT_INT	nstype=MT_INT	nsum=1
x=	osum=1	ostype=MT_INT	xtype=MT_EMPTY	nstype=MT_EMPTY	nsum=
x=7	osum=	ostype=MT_EMPTY	xtype=MT_INT	nstype=MT_EMPTY	nsum=
sum=

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);ispresent($x){@sum+=$x}; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=MT_ABSENT	xtype=MT_INT	nstype=MT_INT	nsum=1
x=	osum=1	ostype=MT_INT	xtype=MT_EMPTY	nstype=MT_EMPTY	nsum=
x=7	osum=	ostype=MT_EMPTY	xtype=MT_INT	nstype=MT_EMPTY	nsum=
sum=

mlr cat
x=1
xxx=
x=7

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);@sum+=$x; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=MT_ABSENT	xtype=MT_INT	nstype=MT_INT	nsum=1
xxx=	osum=1	ostype=MT_INT	xtype=MT_ABSENT	nstype=MT_INT	nsum=1
x=7	osum=1	ostype=MT_INT	xtype=MT_INT	nstype=MT_INT	nsum=8
sum=8

mlr --ofs tab put $osum=@sum; $ostype=typeof(@sum);$xtype=typeof($x);ispresent($x){@sum+=$x}; $nstype=typeof(@sum);$nsum=@sum; end { emit @sum }
x=1	ostype=MT_ABSENT	xtype=MT_INT	nstype=MT_INT	nsum=1
xxx=	osum=1	ostype=MT_INT	xtype=MT_ABSENT	nstype=MT_INT	nsum=1
x=7	osum=1	ostype=MT_INT	xtype=MT_INT	nstype=MT_INT	nsum=8
sum=8

mlr cat
x=1
x=
y=
x=7

mlr --ofs tab put $xtype=typeof($x);$sum = $x + 10; $stype=typeof($sum)
x=1	xtype=MT_INT	sum=11	stype=MT_INT
x=	xtype=MT_EMPTY	sum=	stype=MT_EMPTY
y=	xtype=MT_ABSENT	sum=10	stype=MT_INT
x=7	xtype=MT_INT	sum=17	stype=MT_INT

mlr --ofs tab put $xtype=typeof($x);$sum = ispresent($x) ? $x + 10 : 999; $stype=typeof($sum)
x=1	xtype=MT_INT	sum=11	stype=MT_INT
x=	xtype=MT_EMPTY	sum=	stype=MT_EMPTY
y=	xtype=MT_ABSENT	sum=999	stype=MT_INT
x=7	xtype=MT_INT	sum=17	stype=MT_INT


================================================================
PARAMETERIZED EMIT

mlr put -q @sum[$a] = $x; end{ emitp @sum; } ./reg_test/input/abixy
sum:pan=0.502626,sum:eks=0.611784,sum:wye=0.573289,sum:zee=0.598554,sum:hat=0.031442

mlr put -q @sum[$a] = $x; end{ emitp @sum,"a"; } ./reg_test/input/abixy
a=pan,sum=0.502626
a=eks,sum=0.611784
a=wye,sum=0.573289
a=zee,sum=0.598554
a=hat,sum=0.031442

mlr put -q @sum[$a] = $x; end{ emitp @sum,"a","b"; } ./reg_test/input/abixy
a=pan,sum=0.502626
a=eks,sum=0.611784
a=wye,sum=0.573289
a=zee,sum=0.598554
a=hat,sum=0.031442

mlr put -q @sum[$a][$b] = $x; end{ emitp @sum; } ./reg_test/input/abixy
sum:pan:pan=0.346790,sum:pan:wye=0.502626,sum:eks:pan=0.758680,sum:eks:wye=0.381399,sum:eks:zee=0.611784,sum:wye:wye=0.204603,sum:wye:pan=0.573289,sum:zee:pan=0.527126,sum:zee:wye=0.598554,sum:hat:wye=0.031442

mlr put -q @sum[$a][$b] = $x; end{ emitp @sum,"a"; } ./reg_test/input/abixy
a=pan,sum:pan=0.346790,sum:wye=0.502626
a=eks,sum:pan=0.758680,sum:wye=0.381399,sum:zee=0.611784
a=wye,sum:wye=0.204603,sum:pan=0.573289
a=zee,sum:pan=0.527126,sum:wye=0.598554
a=hat,sum:wye=0.031442

mlr put -q @sum[$a][$b] = $x; end{ emitp @sum,"a","b"; } ./reg_test/input/abixy
a=pan,b=pan,sum=0.346790
a=pan,b=wye,sum=0.502626
a=eks,b=pan,sum=0.758680
a=eks,b=wye,sum=0.381399
a=eks,b=zee,sum=0.611784
a=wye,b=wye,sum=0.204603
a=wye,b=pan,sum=0.573289
a=zee,b=pan,sum=0.527126
a=zee,b=wye,sum=0.598554
a=hat,b=wye,sum=0.031442

mlr put -q @v = $a;        end {emitf @v } ./reg_test/input/abixy
v=pan

mlr put -q @v = $i;        end {emitf @v } ./reg_test/input/abixy
v=10

mlr put -q @v = $x;        end {emitf @v } ./reg_test/input/abixy
v=0.502626

mlr put -q @v = $nonesuch; end {emitf @v } ./reg_test/input/abixy
v=

mlr put -q @v = $a;        end {emitp @v } ./reg_test/input/abixy
v=pan

mlr put -q @v = $i;        end {emitp @v } ./reg_test/input/abixy
v=10

mlr put -q @v = $x;        end {emitp @v } ./reg_test/input/abixy
v=0.502626

mlr put -q @v = $nonesuch; end {emitp @v } ./reg_test/input/abixy

mlr put -q @sum += $i;        end {emitf @sum } ./reg_test/input/abixy
sum=55

mlr put -q @sum += $x;        end {emitf @sum } ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum += $nonesuch; end {emitf @sum } ./reg_test/input/abixy
sum=

mlr put -q @sum += $i;        end {emitp  @sum          } ./reg_test/input/abixy
sum=55

mlr put -q @sum += $x;        end {emitp  @sum          } ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum += $nonesuch; end {emitp  @sum          } ./reg_test/input/abixy

mlr put -q @sum += $i;        end {emitp  @sum, "extra" } ./reg_test/input/abixy
sum=55

mlr put -q @sum += $x;        end {emitp  @sum, "extra" } ./reg_test/input/abixy
sum=4.536294

mlr put -q @sum += $nonesuch; end {emitp  @sum, "extra" } ./reg_test/input/abixy

mlr put -q @sum[$a] += $i;        end {emitp  @sum               } ./reg_test/input/abixy
sum:pan=11,sum:eks=13,sum:wye=8,sum:zee=14,sum:hat=9

mlr put -q @sum[$a] += $x;        end {emitp  @sum               } ./reg_test/input/abixy
sum:pan=0.849416,sum:eks=1.751863,sum:wye=0.777892,sum:zee=1.125680,sum:hat=0.031442

mlr put -q @sum[$a] += $nonesuch; end {emitp  @sum               } ./reg_test/input/abixy

mlr put -q @sum[$a] += $i;        end {emitp  @sum, "a"          } ./reg_test/input/abixy
a=pan,sum=11
a=eks,sum=13
a=wye,sum=8
a=zee,sum=14
a=hat,sum=9

mlr put -q @sum[$a] += $x;        end {emitp  @sum, "a"          } ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442

mlr put -q @sum[$a] += $nonesuch; end {emitp  @sum, "a"          } ./reg_test/input/abixy

mlr put -q @sum[$a] += $i;        end {emitp  @sum, "a", "extra" } ./reg_test/input/abixy
a=pan,sum=11
a=eks,sum=13
a=wye,sum=8
a=zee,sum=14
a=hat,sum=9

mlr put -q @sum[$a] += $x;        end {emitp  @sum, "a", "extra" } ./reg_test/input/abixy
a=pan,sum=0.849416
a=eks,sum=1.751863
a=wye,sum=0.777892
a=zee,sum=1.125680
a=hat,sum=0.031442

mlr put -q @sum[$a] += $nonesuch; end {emitp  @sum, "a", "extra" } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum                    } ./reg_test/input/abixy
sum:pan:pan=1,sum:pan:wye=10,sum:eks:pan=2,sum:eks:wye=4,sum:eks:zee=7,sum:wye:wye=3,sum:wye:pan=5,sum:zee:pan=6,sum:zee:wye=8,sum:hat:wye=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum                    } ./reg_test/input/abixy
sum:pan:pan=0.346790,sum:pan:wye=0.502626,sum:eks:pan=0.758680,sum:eks:wye=0.381399,sum:eks:zee=0.611784,sum:wye:wye=0.204603,sum:wye:pan=0.573289,sum:zee:pan=0.527126,sum:zee:wye=0.598554,sum:hat:wye=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum                    } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum, "a"               } ./reg_test/input/abixy
a=pan,sum:pan=1,sum:wye=10
a=eks,sum:pan=2,sum:wye=4,sum:zee=7
a=wye,sum:wye=3,sum:pan=5
a=zee,sum:pan=6,sum:wye=8
a=hat,sum:wye=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum, "a"               } ./reg_test/input/abixy
a=pan,sum:pan=0.346790,sum:wye=0.502626
a=eks,sum:pan=0.758680,sum:wye=0.381399,sum:zee=0.611784
a=wye,sum:wye=0.204603,sum:pan=0.573289
a=zee,sum:pan=0.527126,sum:wye=0.598554
a=hat,sum:wye=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum, "a"               } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum, "a", "b"          } ./reg_test/input/abixy
a=pan,b=pan,sum=1
a=pan,b=wye,sum=10
a=eks,b=pan,sum=2
a=eks,b=wye,sum=4
a=eks,b=zee,sum=7
a=wye,b=wye,sum=3
a=wye,b=pan,sum=5
a=zee,b=pan,sum=6
a=zee,b=wye,sum=8
a=hat,b=wye,sum=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum, "a", "b"          } ./reg_test/input/abixy
a=pan,b=pan,sum=0.346790
a=pan,b=wye,sum=0.502626
a=eks,b=pan,sum=0.758680
a=eks,b=wye,sum=0.381399
a=eks,b=zee,sum=0.611784
a=wye,b=wye,sum=0.204603
a=wye,b=pan,sum=0.573289
a=zee,b=pan,sum=0.527126
a=zee,b=wye,sum=0.598554
a=hat,b=wye,sum=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum, "a", "b"          } ./reg_test/input/abixy

mlr put -q @sum[$a][$b] += $i;        end {emitp  @sum, "a", "b", "extra" } ./reg_test/input/abixy
a=pan,b=pan,sum=1
a=pan,b=wye,sum=10
a=eks,b=pan,sum=2
a=eks,b=wye,sum=4
a=eks,b=zee,sum=7
a=wye,b=wye,sum=3
a=wye,b=pan,sum=5
a=zee,b=pan,sum=6
a=zee,b=wye,sum=8
a=hat,b=wye,sum=9

mlr put -q @sum[$a][$b] += $x;        end {emitp  @sum, "a", "b", "extra" } ./reg_test/input/abixy
a=pan,b=pan,sum=0.346790
a=pan,b=wye,sum=0.502626
a=eks,b=pan,sum=0.758680
a=eks,b=wye,sum=0.381399
a=eks,b=zee,sum=0.611784
a=wye,b=wye,sum=0.204603
a=wye,b=pan,sum=0.573289
a=zee,b=pan,sum=0.527126
a=zee,b=wye,sum=0.598554
a=hat,b=wye,sum=0.031442

mlr put -q @sum[$a][$b] += $nonesuch; end {emitp  @sum, "a", "b", "extra" } ./reg_test/input/abixy

mlr --oxtab put -q @sum[$a][$b] += $i; NR == 3 { @x = $x }; NR == 7 { @v = $* }; end {emitp all} ./reg_test/input/abixy-het
sum:pan:pan 1
sum:pan:wye 10
sum:eks:pan 2
sum:wye:pan 5
sum:zee:pan 6
sum:zee:wye 8

x 0.204603

v:a   eks
v:b   zee
v:iii 7
v:x   0.6117840605678454
v:y   0.1878849191181694

mlr --opprint put -q @v[NR]=$*; end{emitp @v} ./reg_test/input/abixy
v:1:a v:1:b v:1:i v:1:x              v:1:y              v:2:a v:2:b v:2:i v:2:x              v:2:y              v:3:a v:3:b v:3:i v:3:x               v:3:y               v:4:a v:4:b v:4:i v:4:x               v:4:y               v:5:a v:5:b v:5:i v:5:x              v:5:y              v:6:a v:6:b v:6:i v:6:x              v:6:y               v:7:a v:7:b v:7:i v:7:x              v:7:y              v:8:a v:8:b v:8:i v:8:x              v:8:y             v:9:a v:9:b v:9:i v:9:x               v:9:y              v:10:a v:10:b v:10:i v:10:x             v:10:y
pan   pan   1     0.3467901443380824 0.7268028627434533 eks   pan   2     0.7586799647899636 0.5221511083334797 wye   wye   3     0.20460330576630303 0.33831852551664776 eks   wye   4     0.38139939387114097 0.13418874328430463 wye   pan   5     0.5732889198020006 0.8636244699032729 zee   pan   6     0.5271261600918548 0.49322128674835697 eks   zee   7     0.6117840605678454 0.1878849191181694 zee   wye   8     0.5985540091064224 0.976181385699006 hat   wye   9     0.03144187646093577 0.7495507603507059 pan    wye    10     0.5026260055412137 0.9526183602969864

mlr --opprint put -q @v[NR]=$*; end{emitp @v,"X"} ./reg_test/input/abixy
X  v:a v:b v:i v:x                 v:y
1  pan pan 1   0.3467901443380824  0.7268028627434533
2  eks pan 2   0.7586799647899636  0.5221511083334797
3  wye wye 3   0.20460330576630303 0.33831852551664776
4  eks wye 4   0.38139939387114097 0.13418874328430463
5  wye pan 5   0.5732889198020006  0.8636244699032729
6  zee pan 6   0.5271261600918548  0.49322128674835697
7  eks zee 7   0.6117840605678454  0.1878849191181694
8  zee wye 8   0.5985540091064224  0.976181385699006
9  hat wye 9   0.03144187646093577 0.7495507603507059
10 pan wye 10  0.5026260055412137  0.9526183602969864

mlr --opprint put -q @v[NR]=$*; end{emitp @v[1]} ./reg_test/input/abixy
v:a v:b v:i v:x                v:y
pan pan 1   0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR]=$*; end{emitp @v[1],"X"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr --opprint put -q @v[NR]=$*; end{emitp @v[1],"X","Y"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1]} ./reg_test/input/abixy
v:1:a v:1:b v:1:i v:1:x              v:1:y
pan   pan   1     0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1],"X"} ./reg_test/input/abixy
X v:a v:b v:i v:x                v:y
1 pan pan 1   0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1],"X","Y"} ./reg_test/input/abixy
X Y v
1 a pan
1 b pan
1 i 1
1 x 0.3467901443380824
1 y 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1][1]} ./reg_test/input/abixy
v:a v:b v:i v:x                v:y
pan pan 1   0.3467901443380824 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1][1],"X"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr --opprint put -q @v[NR][NR]=$*; end{emitp @v[1][1],"X","Y"} ./reg_test/input/abixy
X v
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all} ./reg_test/input/abixy-het
a=pan
b:1=wye
c:1:2=0.502626

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all,"one"} ./reg_test/input/abixy-het
a=pan
one=1,b=wye
one=1,c:2=0.502626

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all,"one","two"} ./reg_test/input/abixy-het
a=pan
one=1,b=wye
one=1,two=2,c=0.502626

mlr put -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all,"one","two","three"} ./reg_test/input/abixy-het
a=pan
one=1,b=wye
one=1,two=2,c=0.502626

mlr --oxtab put --oflatsep @ -q @a=$a; @b[1]=$b; @c[1][2]=$x; end{emitp all} ./reg_test/input/abixy-het
a pan

b@1 wye

c@1@2 0.502626


================================================================
PREFIXED/UNPREFIXED EMIT

mlr --oxtab put -q @sum     += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": 1009.118181
}
sum 1009.118181

mlr --oxtab put -q @sum     += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": 1009.118181
}
sum 1009.118181

mlr --oxtab put -q @sum[$a] += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
sum:cat 207.843964
sum:pan 191.530740
sum:wye 188.110135
sum:dog 215.541519
sum:hat 206.091824

mlr --oxtab put -q @sum[$a] += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
cat 207.843964
pan 191.530740
wye 188.110135
dog 215.541519
hat 206.091824

mlr --oxtab put -q @sum[$a] += $x; end{dump;emitp  @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
a   cat
sum 207.843964

a   pan
sum 191.530740

a   wye
sum 188.110135

a   dog
sum 215.541519

a   hat
sum 206.091824

mlr --oxtab put -q @sum[$a] += $x; end{dump;emit @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": 207.843964,
    "pan": 191.530740,
    "wye": 188.110135,
    "dog": 215.541519,
    "hat": 206.091824
  }
}
a   cat
sum 207.843964

a   pan
sum 191.530740

a   wye
sum 188.110135

a   dog
sum 215.541519

a   hat
sum 206.091824

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
sum:cat:pan 42.327158
sum:cat:hat 43.184410
sum:cat:dog 39.241473
sum:cat:wye 45.196775
sum:cat:cat 37.894148
sum:pan:wye 40.135300
sum:pan:pan 36.226334
sum:pan:hat 35.115869
sum:pan:dog 37.817560
sum:pan:cat 42.235677
sum:wye:cat 40.805723
sum:wye:hat 41.166697
sum:wye:dog 40.619547
sum:wye:wye 32.490973
sum:wye:pan 33.027196
sum:dog:hat 43.515162
sum:dog:pan 45.614011
sum:dog:dog 43.545956
sum:dog:wye 37.223795
sum:dog:cat 45.642595
sum:hat:hat 48.058897
sum:hat:wye 34.054270
sum:hat:pan 42.538758
sum:hat:cat 44.325655
sum:hat:dog 37.114244

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
pan 42.327158
hat 43.184410
dog 39.241473
wye 45.196775
cat 37.894148

wye 40.135300
pan 36.226334
hat 35.115869
dog 37.817560
cat 42.235677

cat 40.805723
hat 41.166697
dog 40.619547
wye 32.490973
pan 33.027196

hat 43.515162
pan 45.614011
dog 43.545956
wye 37.223795
cat 45.642595

hat 48.058897
wye 34.054270
pan 42.538758
cat 44.325655
dog 37.114244

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emitp  @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a       cat
sum:pan 42.327158
sum:hat 43.184410
sum:dog 39.241473
sum:wye 45.196775
sum:cat 37.894148

a       pan
sum:wye 40.135300
sum:pan 36.226334
sum:hat 35.115869
sum:dog 37.817560
sum:cat 42.235677

a       wye
sum:cat 40.805723
sum:hat 41.166697
sum:dog 40.619547
sum:wye 32.490973
sum:pan 33.027196

a       dog
sum:hat 43.515162
sum:pan 45.614011
sum:dog 43.545956
sum:wye 37.223795
sum:cat 45.642595

a       hat
sum:hat 48.058897
sum:wye 34.054270
sum:pan 42.538758
sum:cat 44.325655
sum:dog 37.114244

mlr --oxtab put -q @sum[$a][$b] += $x; end{dump;emit @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a   cat
pan 42.327158
hat 43.184410
dog 39.241473
wye 45.196775
cat 37.894148

a   pan
wye 40.135300
pan 36.226334
hat 35.115869
dog 37.817560
cat 42.235677

a   wye
cat 40.805723
hat 41.166697
dog 40.619547
wye 32.490973
pan 33.027196

a   dog
hat 43.515162
pan 45.614011
dog 43.545956
wye 37.223795
cat 45.642595

a   hat
hat 48.058897
wye 34.054270
pan 42.538758
cat 44.325655
dog 37.114244

mlr --opprint put -q @sum[$a][$b] += $x; end{dump;emitp  @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a   b   sum
cat pan 42.327158
cat hat 43.184410
cat dog 39.241473
cat wye 45.196775
cat cat 37.894148
pan wye 40.135300
pan pan 36.226334
pan hat 35.115869
pan dog 37.817560
pan cat 42.235677
wye cat 40.805723
wye hat 41.166697
wye dog 40.619547
wye wye 32.490973
wye pan 33.027196
dog hat 43.515162
dog pan 45.614011
dog dog 43.545956
dog wye 37.223795
dog cat 45.642595
hat hat 48.058897
hat wye 34.054270
hat pan 42.538758
hat cat 44.325655
hat dog 37.114244

mlr --opprint put -q @sum[$a][$b] += $x; end{dump;emit @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": 42.327158,
      "hat": 43.184410,
      "dog": 39.241473,
      "wye": 45.196775,
      "cat": 37.894148
    },
    "pan": {
      "wye": 40.135300,
      "pan": 36.226334,
      "hat": 35.115869,
      "dog": 37.817560,
      "cat": 42.235677
    },
    "wye": {
      "cat": 40.805723,
      "hat": 41.166697,
      "dog": 40.619547,
      "wye": 32.490973,
      "pan": 33.027196
    },
    "dog": {
      "hat": 43.515162,
      "pan": 45.614011,
      "dog": 43.545956,
      "wye": 37.223795,
      "cat": 45.642595
    },
    "hat": {
      "hat": 48.058897,
      "wye": 34.054270,
      "pan": 42.538758,
      "cat": 44.325655,
      "dog": 37.114244
    }
  }
}
a   b   sum
cat pan 42.327158
cat hat 43.184410
cat dog 39.241473
cat wye 45.196775
cat cat 37.894148
pan wye 40.135300
pan pan 36.226334
pan hat 35.115869
pan dog 37.817560
pan cat 42.235677
wye cat 40.805723
wye hat 41.166697
wye dog 40.619547
wye wye 32.490973
wye pan 33.027196
dog hat 43.515162
dog pan 45.614011
dog dog 43.545956
dog wye 37.223795
dog cat 45.642595
hat hat 48.058897
hat wye 34.054270
hat pan 42.538758
hat cat 44.325655
hat dog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
sum:cat:pan:catpan 42.327158
sum:cat:hat:cathat 43.184410
sum:cat:dog:catdog 39.241473
sum:cat:wye:catwye 45.196775
sum:cat:cat:catcat 37.894148
sum:pan:wye:panwye 40.135300
sum:pan:pan:panpan 36.226334
sum:pan:hat:panhat 35.115869
sum:pan:dog:pandog 37.817560
sum:pan:cat:pancat 42.235677
sum:wye:cat:wyecat 40.805723
sum:wye:hat:wyehat 41.166697
sum:wye:dog:wyedog 40.619547
sum:wye:wye:wyewye 32.490973
sum:wye:pan:wyepan 33.027196
sum:dog:hat:doghat 43.515162
sum:dog:pan:dogpan 45.614011
sum:dog:dog:dogdog 43.545956
sum:dog:wye:dogwye 37.223795
sum:dog:cat:dogcat 45.642595
sum:hat:hat:hathat 48.058897
sum:hat:wye:hatwye 34.054270
sum:hat:pan:hatpan 42.538758
sum:hat:cat:hatcat 44.325655
sum:hat:dog:hatdog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum     } ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
catpan 42.327158

cathat 43.184410

catdog 39.241473

catwye 45.196775

catcat 37.894148

panwye 40.135300

panpan 36.226334

panhat 35.115869

pandog 37.817560

pancat 42.235677

wyecat 40.805723

wyehat 41.166697

wyedog 40.619547

wyewye 32.490973

wyepan 33.027196

doghat 43.515162

dogpan 45.614011

dogdog 43.545956

dogwye 37.223795

dogcat 45.642595

hathat 48.058897

hatwye 34.054270

hatpan 42.538758

hatcat 44.325655

hatdog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a              cat
sum:pan:catpan 42.327158
sum:hat:cathat 43.184410
sum:dog:catdog 39.241473
sum:wye:catwye 45.196775
sum:cat:catcat 37.894148

a              pan
sum:wye:panwye 40.135300
sum:pan:panpan 36.226334
sum:hat:panhat 35.115869
sum:dog:pandog 37.817560
sum:cat:pancat 42.235677

a              wye
sum:cat:wyecat 40.805723
sum:hat:wyehat 41.166697
sum:dog:wyedog 40.619547
sum:wye:wyewye 32.490973
sum:pan:wyepan 33.027196

a              dog
sum:hat:doghat 43.515162
sum:pan:dogpan 45.614011
sum:dog:dogdog 43.545956
sum:wye:dogwye 37.223795
sum:cat:dogcat 45.642595

a              hat
sum:hat:hathat 48.058897
sum:wye:hatwye 34.054270
sum:pan:hatpan 42.538758
sum:cat:hatcat 44.325655
sum:dog:hatdog 37.114244

mlr --oxtab put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum, "a"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a      cat
catpan 42.327158

a      cat
cathat 43.184410

a      cat
catdog 39.241473

a      cat
catwye 45.196775

a      cat
catcat 37.894148

a      pan
panwye 40.135300

a      pan
panpan 36.226334

a      pan
panhat 35.115869

a      pan
pandog 37.817560

a      pan
pancat 42.235677

a      wye
wyecat 40.805723

a      wye
wyehat 41.166697

a      wye
wyedog 40.619547

a      wye
wyewye 32.490973

a      wye
wyepan 33.027196

a      dog
doghat 43.515162

a      dog
dogpan 45.614011

a      dog
dogdog 43.545956

a      dog
dogwye 37.223795

a      dog
dogcat 45.642595

a      hat
hathat 48.058897

a      hat
hatwye 34.054270

a      hat
hatpan 42.538758

a      hat
hatcat 44.325655

a      hat
hatdog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   sum:catpan
cat pan 42.327158

a   b   sum:cathat
cat hat 43.184410

a   b   sum:catdog
cat dog 39.241473

a   b   sum:catwye
cat wye 45.196775

a   b   sum:catcat
cat cat 37.894148

a   b   sum:panwye
pan wye 40.135300

a   b   sum:panpan
pan pan 36.226334

a   b   sum:panhat
pan hat 35.115869

a   b   sum:pandog
pan dog 37.817560

a   b   sum:pancat
pan cat 42.235677

a   b   sum:wyecat
wye cat 40.805723

a   b   sum:wyehat
wye hat 41.166697

a   b   sum:wyedog
wye dog 40.619547

a   b   sum:wyewye
wye wye 32.490973

a   b   sum:wyepan
wye pan 33.027196

a   b   sum:doghat
dog hat 43.515162

a   b   sum:dogpan
dog pan 45.614011

a   b   sum:dogdog
dog dog 43.545956

a   b   sum:dogwye
dog wye 37.223795

a   b   sum:dogcat
dog cat 45.642595

a   b   sum:hathat
hat hat 48.058897

a   b   sum:hatwye
hat wye 34.054270

a   b   sum:hatpan
hat pan 42.538758

a   b   sum:hatcat
hat cat 44.325655

a   b   sum:hatdog
hat dog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum, "a", "b"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   catpan
cat pan 42.327158

a   b   cathat
cat hat 43.184410

a   b   catdog
cat dog 39.241473

a   b   catwye
cat wye 45.196775

a   b   catcat
cat cat 37.894148

a   b   panwye
pan wye 40.135300

a   b   panpan
pan pan 36.226334

a   b   panhat
pan hat 35.115869

a   b   pandog
pan dog 37.817560

a   b   pancat
pan cat 42.235677

a   b   wyecat
wye cat 40.805723

a   b   wyehat
wye hat 41.166697

a   b   wyedog
wye dog 40.619547

a   b   wyewye
wye wye 32.490973

a   b   wyepan
wye pan 33.027196

a   b   doghat
dog hat 43.515162

a   b   dogpan
dog pan 45.614011

a   b   dogdog
dog dog 43.545956

a   b   dogwye
dog wye 37.223795

a   b   dogcat
dog cat 45.642595

a   b   hathat
hat hat 48.058897

a   b   hatwye
hat wye 34.054270

a   b   hatpan
hat pan 42.538758

a   b   hatcat
hat cat 44.325655

a   b   hatdog
hat dog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emitp  @sum, "a", "b", "ab"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   ab     sum
cat pan catpan 42.327158
cat hat cathat 43.184410
cat dog catdog 39.241473
cat wye catwye 45.196775
cat cat catcat 37.894148
pan wye panwye 40.135300
pan pan panpan 36.226334
pan hat panhat 35.115869
pan dog pandog 37.817560
pan cat pancat 42.235677
wye cat wyecat 40.805723
wye hat wyehat 41.166697
wye dog wyedog 40.619547
wye wye wyewye 32.490973
wye pan wyepan 33.027196
dog hat doghat 43.515162
dog pan dogpan 45.614011
dog dog dogdog 43.545956
dog wye dogwye 37.223795
dog cat dogcat 45.642595
hat hat hathat 48.058897
hat wye hatwye 34.054270
hat pan hatpan 42.538758
hat cat hatcat 44.325655
hat dog hatdog 37.114244

mlr --opprint put -q @sum[$a][$b][$a.$b] += $x; end{dump;emit @sum, "a", "b", "ab"} ./reg_test/input/abixy-wide
{
  "sum": {
    "cat": {
      "pan": {
        "catpan": 42.327158
      },
      "hat": {
        "cathat": 43.184410
      },
      "dog": {
        "catdog": 39.241473
      },
      "wye": {
        "catwye": 45.196775
      },
      "cat": {
        "catcat": 37.894148
      }
    },
    "pan": {
      "wye": {
        "panwye": 40.135300
      },
      "pan": {
        "panpan": 36.226334
      },
      "hat": {
        "panhat": 35.115869
      },
      "dog": {
        "pandog": 37.817560
      },
      "cat": {
        "pancat": 42.235677
      }
    },
    "wye": {
      "cat": {
        "wyecat": 40.805723
      },
      "hat": {
        "wyehat": 41.166697
      },
      "dog": {
        "wyedog": 40.619547
      },
      "wye": {
        "wyewye": 32.490973
      },
      "pan": {
        "wyepan": 33.027196
      }
    },
    "dog": {
      "hat": {
        "doghat": 43.515162
      },
      "pan": {
        "dogpan": 45.614011
      },
      "dog": {
        "dogdog": 43.545956
      },
      "wye": {
        "dogwye": 37.223795
      },
      "cat": {
        "dogcat": 45.642595
      }
    },
    "hat": {
      "hat": {
        "hathat": 48.058897
      },
      "wye": {
        "hatwye": 34.054270
      },
      "pan": {
        "hatpan": 42.538758
      },
      "cat": {
        "hatcat": 44.325655
      },
      "dog": {
        "hatdog": 37.114244
      }
    }
  }
}
a   b   ab     sum
cat pan catpan 42.327158
cat hat cathat 43.184410
cat dog catdog 39.241473
cat wye catwye 45.196775
cat cat catcat 37.894148
pan wye panwye 40.135300
pan pan panpan 36.226334
pan hat panhat 35.115869
pan dog pandog 37.817560
pan cat pancat 42.235677
wye cat wyecat 40.805723
wye hat wyehat 41.166697
wye dog wyedog 40.619547
wye wye wyewye 32.490973
wye pan wyepan 33.027196
dog hat doghat 43.515162
dog pan dogpan 45.614011
dog dog dogdog 43.545956
dog wye dogwye 37.223795
dog cat dogcat 45.642595
hat hat hathat 48.058897
hat wye hatwye 34.054270
hat pan hatpan 42.538758
hat cat hatcat 44.325655
hat dog hatdog 37.114244

mlr --oxtab head -n 2 then put -q @v       =  $*; end{dump;emitp  @v} ./reg_test/input/abixy
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
v:a eks
v:b pan
v:i 2
v:x 0.7586799647899636
v:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v       =  $*; end{dump;emit @v} ./reg_test/input/abixy
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR]   =  $*; end{dump;emitp  @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
v:1:a pan
v:1:b pan
v:1:i 1
v:1:x 0.3467901443380824
v:1:y 0.7268028627434533
v:2:a eks
v:2:b pan
v:2:i 2
v:2:x 0.7586799647899636
v:2:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR]   =  $*; end{dump;emit @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR]   =  $*; end{dump;emitp  @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
I v:a v:b v:i v:x                v:y
1 pan pan 1   0.3467901443380824 0.7268028627434533
2 eks pan 2   0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR]   =  $*; end{dump;emit @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}
I a   b   i x                  y
1 pan pan 1 0.3467901443380824 0.7268028627434533
2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emitp  @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
v:1:1:a pan
v:1:1:b pan
v:1:1:i 1
v:1:1:x 0.3467901443380824
v:1:1:y 0.7268028627434533
v:2:2:a eks
v:2:2:b pan
v:2:2:i 2
v:2:2:x 0.7586799647899636
v:2:2:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emit @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emitp  @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I v:1:a v:1:b v:1:i v:1:x              v:1:y
1 pan   pan   1     0.3467901443380824 0.7268028627434533

I v:2:a v:2:b v:2:i v:2:x              v:2:y
2 eks   pan   2     0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emit @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I a   b   i x                  y
1 pan pan 1 0.3467901443380824 0.7268028627434533
2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emitp  @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I J v:a v:b v:i v:x                v:y
1 1 pan pan 1   0.3467901443380824 0.7268028627434533
2 2 eks pan 2   0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR]   =  $*; end{dump;emit @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "a": "pan",
        "b": "pan",
        "i": 1,
        "x": 0.3467901443380824,
        "y": 0.7268028627434533
      }
    },
    "2": {
      "2": {
        "a": "eks",
        "b": "pan",
        "i": 2,
        "x": 0.7586799647899636,
        "y": 0.5221511083334797
      }
    }
  }
}
I J a   b   i x                  y
1 1 pan pan 1 0.3467901443380824 0.7268028627434533
2 2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
v:1:1:1:a pan
v:1:1:1:b pan
v:1:1:1:i 1
v:1:1:1:x 0.3467901443380824
v:1:1:1:y 0.7268028627434533
v:2:2:2:a eks
v:2:2:2:b pan
v:2:2:2:i 2
v:2:2:2:x 0.7586799647899636
v:2:2:2:y 0.5221511083334797

mlr --oxtab head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v        } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
a pan
b pan
i 1
x 0.3467901443380824
y 0.7268028627434533

a eks
b pan
i 2
x 0.7586799647899636
y 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I v:1:1:a v:1:1:b v:1:1:i v:1:1:x            v:1:1:y
1 pan     pan     1       0.3467901443380824 0.7268028627434533

I v:2:2:a v:2:2:b v:2:2:i v:2:2:x            v:2:2:y
2 eks     pan     2       0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v,   "I"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I a   b   i x                  y
1 pan pan 1 0.3467901443380824 0.7268028627434533
2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J v:1:a v:1:b v:1:i v:1:x              v:1:y
1 1 pan   pan   1     0.3467901443380824 0.7268028627434533

I J v:2:a v:2:b v:2:i v:2:x              v:2:y
2 2 eks   pan   2     0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v,   "I", "J"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J a   b   i x                  y
1 1 pan pan 1 0.3467901443380824 0.7268028627434533
2 2 eks pan 2 0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emitp  @v,   "I", "J", "K"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J K v:a v:b v:i v:x                v:y
1 1 1 pan pan 1   0.3467901443380824 0.7268028627434533
2 2 2 eks pan 2   0.7586799647899636 0.5221511083334797

mlr --opprint head -n 2 then put -q @v[NR][NR][NR]   =  $*; end{dump;emit @v,   "I", "J", "K"} ./reg_test/input/abixy
{
  "v": {
    "1": {
      "1": {
        "1": {
          "a": "pan",
          "b": "pan",
          "i": 1,
          "x": 0.3467901443380824,
          "y": 0.7268028627434533
        }
      }
    },
    "2": {
      "2": {
        "2": {
          "a": "eks",
          "b": "pan",
          "i": 2,
          "x": 0.7586799647899636,
          "y": 0.5221511083334797
        }
      }
    }
  }
}
I J K a   b   i x                  y
1 1 1 pan pan 1 0.3467901443380824 0.7268028627434533
2 2 2 eks pan 2 0.7586799647899636 0.5221511083334797


================================================================
LASHED EMITP SINGLES

mlr -n put end {
  @a = 111;
  emitp @a
}
a=111

mlr -n put end {
  @a = 111;
  emitp (@a)
}
a=111

mlr -n put end {
  @a[111] = 222;
  emitp @a, "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  emitp (@a), "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emitp @a, "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emitp (@a), "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111][222] = 333;
  emitp @a, "s"
}
s=111,a:222=333

mlr -n put end {
  @a[111][222] = 333;
  emitp (@a), "s"
}
s=111,a:222=333

mlr -n put end {
  @a[111][222] = 333;
  @a[444][555] = 666;
  emitp @a, "s"
}
s=111,a:222=333
s=444,a:555=666

mlr -n put end {
  @a[111][222] = 333;
  @a[444][555] = 666;
  emitp (@a), "s"
}
s=111,a:222=333
s=444,a:555=666

mlr -n put end {
  @a[111][222] = 333;
  emitp @a, "s", "t"
}
s=111,t=222,a=333

mlr -n put end {
  @a[111][222] = 333;
  emitp (@a), "s", "t"
}
s=111,t=222,a=333

mlr -n put end {
  @a[111][222] = 333;
  emitp @a[111], "t"
}
t=222,a=333

mlr -n put end {
  @a[111][222] = 333;
  emitp (@a[111]), "t"
}
t=222,a=333


================================================================
LASHED EMIT SINGLES

mlr -n put end {
  @a = 111;
  emit @a
}
a=111

mlr -n put end {
  @a = 111;
  emit (@a)
}
a=111

mlr -n put end {
  @a[111] = 222;
  emit @a, "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  emit (@a), "s"
}
s=111,a=222

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emit @a, "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111] = 222;
  @a[333] = 444;
  emit (@a), "s"
}
s=111,a=222
s=333,a=444

mlr -n put end {
  @a[111][222] = 333;
  emit @a, "s"
}
s=111,222=333

mlr -n put end {
  @a[111][222] = 333;
  emit (@a), "s"
}
s=111,222=333


================================================================
LASHED EMITP PAIRS

mlr -n put end {
  @a = 111;
  @b = 222;
  emitp (@a, @b)
}
a=111,b=222

mlr -n put end {
  @a[1] = 111;
  @b[1] = 222;
  emitp (@a[1], @b[1])
}
a=111,b=222

mlr -n put end {
  @a[1][2][3] = 4;
  @b[1][2][3] = 8;
  emitp (@a, @b), "s", "t", "u"
}
s=1,t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1], @b[5]), "t", "u"
}
t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][6][3] = 8;
  emitp (@a[1][2], @b[5][6]), "u"
}
u=3,a=4,b=8


================================================================
LASHED EMIT PAIRS

mlr -n put end {
  @a = 111;
  @b = 222;
  emit (@a, @b)
}
a=111,b=222

mlr -n put end {
  @a[1] = 111;
  @b[1] = 222;
  emit (@a[1], @b[1])
}
a=111,b=222

mlr -n put end {
  @a[1][2][3] = 4;
  @b[1][2][3] = 8;
  emit (@a, @b), "s", "t", "u"
}
s=1,t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1], @b[5]), "t", "u"
}
t=2,u=3,a=4,b=8

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][6][3] = 8;
  emit (@a[1][2], @b[5][6]), "u"
}
u=3,a=4,b=8


================================================================
LASHED EMIT WITH VARYING DEPTH

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@a[1], @b[2]), "t"
}
t=1,a=1,b=7
t=2,a=2,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8
s=3,a=10
s=4,a=11
s=5,t=6,7=12

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emit (@b, @a), "s", "t"
}
s=1,t=1,b=5,a=1
s=1,t=2,b=6,a=2
s=2,t=1,b=7,a=3
s=2,t=2,b=8,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1], @b[3]), "t", "u"
}
t=2,u=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1][2], @b[5][9]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[1][2], @b[9][2]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emit (@a[9], @b[5]), "t", "u"
}


================================================================
LASHED EMITP WITH VARYING DEPTH

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@a[1], @b[2]), "t"
}
t=1,a=1,b=7
t=2,a=2,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@a, @b), "s", "t"
}
s=1,t=1,a=1,b=5
s=1,t=2,a=2,b=6
s=2,t=1,a=3,b=7
s=2,t=2,a=4,b=8
s=3,a=10
s=4,a=11
s=5,t=6,a:7=12

mlr -n put end {
  @a[1][1] = 1;
  @a[1][2] = 2;
  @a[2][1] = 3;
  @a[2][2] = 4;
  @a[3] = 10;
  @a[4] = 11;
  @a[5][6][7] = 12;
  @b[1][1] = 5;
  @b[1][2] = 6;
  @b[2][1] = 7;
  @b[2][2] = 8;
  emitp (@b, @a), "s", "t"
}
s=1,t=1,b=5,a=1
s=1,t=2,b=6,a=2
s=2,t=1,b=7,a=3
s=2,t=2,b=8,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1], @b[3]), "t", "u"
}
t=2,u=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1][2], @b[5][9]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[1][2], @b[9][2]), "t", "u"
}
t=3,a=4

mlr -n put end {
  @a[1][2][3] = 4;
  @b[5][2][3] = 8;
  emitp (@a[9], @b[5]), "t", "u"
}


================================================================
CANONICAL LASHED EMIT

mlr --from ./reg_test/input/abixy-wide --opprint put -q 
  @count[$a] += 1;
  @sum[$a] += $x;
  end {
      for (a, c in @count) {
          @mean[a] = @sum[a] / @count[a]
      }
      emit (@sum, @count, @mean), "a"
  }

a   sum        count mean
cat 207.843964 413   0.503254
pan 191.530740 384   0.498778
wye 188.110135 370   0.508406
dog 215.541519 424   0.508353
hat 206.091824 409   0.503892

mlr --from ./reg_test/input/abixy-wide --opprint put -q 
  @count[$a][$b] += 1;
  @sum[$a][$b] += $x;
  end {
      for ((a, b), c in @count) {
          @mean[a][b] = @sum[a][b] / @count[a][b]
      }
      emit (@sum, @count, @mean), "a", "b"
  }

a   b   sum       count mean
cat pan 42.327158 89    0.475586
cat hat 43.184410 90    0.479827
cat dog 39.241473 78    0.503096
cat wye 45.196775 77    0.586971
cat cat 37.894148 79    0.479673
pan wye 40.135300 78    0.514555
pan pan 36.226334 77    0.470472
pan hat 35.115869 67    0.524117
pan dog 37.817560 73    0.518049
pan cat 42.235677 89    0.474558
wye cat 40.805723 74    0.551429
wye hat 41.166697 87    0.473180
wye dog 40.619547 76    0.534468
wye wye 32.490973 67    0.484940
wye pan 33.027196 66    0.500412
dog hat 43.515162 88    0.494490
dog pan 45.614011 87    0.524299
dog dog 43.545956 87    0.500528
dog wye 37.223795 79    0.471187
dog cat 45.642595 83    0.549911
hat hat 48.058897 88    0.546124
hat wye 34.054270 70    0.486490
hat pan 42.538758 85    0.500456
hat cat 44.325655 88    0.503701
hat dog 37.114244 78    0.475824


================================================================
MAPPER NOTHING

mlr cat then nothing

mlr cat then nothing ./reg_test/input/abixy

mlr tac then nothing ./reg_test/input/abixy

mlr cat then nothing ./reg_test/input/abixy ./reg_test/input/abixy

mlr cat then nothing then cat ./reg_test/input/abixy


================================================================
MAPPER TEE REDIRECTS

mlr --from ./reg_test/input/abixy tee ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy tee --no-fflush ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy tee -a ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --from ./reg_test/input/abixy tee -o json ./output-regtest/tee1/out then nothing

cat ./output-regtest/tee1/out
{ "a": "pan", "b": "pan", "i": 1, "x": 0.3467901443380824, "y": 0.7268028627434533 }
{ "a": "eks", "b": "pan", "i": 2, "x": 0.7586799647899636, "y": 0.5221511083334797 }
{ "a": "wye", "b": "wye", "i": 3, "x": 0.20460330576630303, "y": 0.33831852551664776 }
{ "a": "eks", "b": "wye", "i": 4, "x": 0.38139939387114097, "y": 0.13418874328430463 }
{ "a": "wye", "b": "pan", "i": 5, "x": 0.5732889198020006, "y": 0.8636244699032729 }
{ "a": "zee", "b": "pan", "i": 6, "x": 0.5271261600918548, "y": 0.49322128674835697 }
{ "a": "eks", "b": "zee", "i": 7, "x": 0.6117840605678454, "y": 0.1878849191181694 }
{ "a": "zee", "b": "wye", "i": 8, "x": 0.5985540091064224, "y": 0.976181385699006 }
{ "a": "hat", "b": "wye", "i": 9, "x": 0.03144187646093577, "y": 0.7495507603507059 }
{ "a": "pan", "b": "wye", "i": 10, "x": 0.5026260055412137, "y": 0.9526183602969864 }


================================================================
DSL TEE REDIRECTS

mlr put -q tee > "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

cat ./output-regtest/tee2/out.hat
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

cat ./output-regtest/tee2/out.pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/out.wye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729

cat ./output-regtest/tee2/out.zee
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr put -q --no-fflush tee > "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

cat ./output-regtest/tee2/out.hat
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

cat ./output-regtest/tee2/out.pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/out.wye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729

cat ./output-regtest/tee2/out.zee
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr put -q tee >> "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694

cat ./output-regtest/tee2/out.hat
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059

cat ./output-regtest/tee2/out.pan
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/out.wye
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729

cat ./output-regtest/tee2/out.zee
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006

mlr put -q -o json tee > "./output-regtest/tee2/out.".$a, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/out.eks
{ "a": "eks", "b": "pan", "i": 2, "x": 0.7586799647899636, "y": 0.5221511083334797 }
{ "a": "eks", "b": "wye", "i": 4, "x": 0.38139939387114097, "y": 0.13418874328430463 }
{ "a": "eks", "b": "zee", "i": 7, "x": 0.6117840605678454, "y": 0.1878849191181694 }

cat ./output-regtest/tee2/out.hat
{ "a": "hat", "b": "wye", "i": 9, "x": 0.03144187646093577, "y": 0.7495507603507059 }

cat ./output-regtest/tee2/out.pan
{ "a": "pan", "b": "pan", "i": 1, "x": 0.3467901443380824, "y": 0.7268028627434533 }
{ "a": "pan", "b": "wye", "i": 10, "x": 0.5026260055412137, "y": 0.9526183602969864 }

cat ./output-regtest/tee2/out.wye
{ "a": "wye", "b": "wye", "i": 3, "x": 0.20460330576630303, "y": 0.33831852551664776 }
{ "a": "wye", "b": "pan", "i": 5, "x": 0.5732889198020006, "y": 0.8636244699032729 }

cat ./output-regtest/tee2/out.zee
{ "a": "zee", "b": "pan", "i": 6, "x": 0.5271261600918548, "y": 0.49322128674835697 }
{ "a": "zee", "b": "wye", "i": 8, "x": 0.5985540091064224, "y": 0.976181385699006 }

mlr put -q tee | "tr \[a-z\] \[A-Z\]", $* ./reg_test/input/abixy
A=PAN,B=PAN,I=1,X=0.3467901443380824,Y=0.7268028627434533
A=EKS,B=PAN,I=2,X=0.7586799647899636,Y=0.5221511083334797
A=WYE,B=WYE,I=3,X=0.20460330576630303,Y=0.33831852551664776
A=EKS,B=WYE,I=4,X=0.38139939387114097,Y=0.13418874328430463
A=WYE,B=PAN,I=5,X=0.5732889198020006,Y=0.8636244699032729
A=ZEE,B=PAN,I=6,X=0.5271261600918548,Y=0.49322128674835697
A=EKS,B=ZEE,I=7,X=0.6117840605678454,Y=0.1878849191181694
A=ZEE,B=WYE,I=8,X=0.5985540091064224,Y=0.976181385699006
A=HAT,B=WYE,I=9,X=0.03144187646093577,Y=0.7495507603507059
A=PAN,B=WYE,I=10,X=0.5026260055412137,Y=0.9526183602969864

mlr put -q -o json tee | "tr \[a-z\] \[A-Z\]", $* ./reg_test/input/abixy
{ "A": "PAN", "B": "PAN", "I": 1, "X": 0.3467901443380824, "Y": 0.7268028627434533 }
{ "A": "EKS", "B": "PAN", "I": 2, "X": 0.7586799647899636, "Y": 0.5221511083334797 }
{ "A": "WYE", "B": "WYE", "I": 3, "X": 0.20460330576630303, "Y": 0.33831852551664776 }
{ "A": "EKS", "B": "WYE", "I": 4, "X": 0.38139939387114097, "Y": 0.13418874328430463 }
{ "A": "WYE", "B": "PAN", "I": 5, "X": 0.5732889198020006, "Y": 0.8636244699032729 }
{ "A": "ZEE", "B": "PAN", "I": 6, "X": 0.5271261600918548, "Y": 0.49322128674835697 }
{ "A": "EKS", "B": "ZEE", "I": 7, "X": 0.6117840605678454, "Y": 0.1878849191181694 }
{ "A": "ZEE", "B": "WYE", "I": 8, "X": 0.5985540091064224, "Y": 0.976181385699006 }
{ "A": "HAT", "B": "WYE", "I": 9, "X": 0.03144187646093577, "Y": 0.7495507603507059 }
{ "A": "PAN", "B": "WYE", "I": 10, "X": 0.5026260055412137, "Y": 0.9526183602969864 }

mlr put -q tee > stdout, $* ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

cat ./output-regtest/tee2/err1

mlr put -q tee > stderr, $* ./reg_test/input/abixy

cat ./output-regtest/tee2/err2
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
DSL PRINT REDIRECTS

mlr put -q print > "./output-regtest/print1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/out.eks
abi:ekspan2
abi:ekswye4
abi:ekszee7

cat ./output-regtest/print1/out.hat
abi:hatwye9

cat ./output-regtest/print1/out.pan
abi:panpan1
abi:panwye10

cat ./output-regtest/print1/out.wye
abi:wyewye3
abi:wyepan5

cat ./output-regtest/print1/out.zee
abi:zeepan6
abi:zeewye8

mlr put -q print > "./output-regtest/print1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/out.eks
abi:ekspan2
abi:ekswye4
abi:ekszee7

cat ./output-regtest/print1/out.hat
abi:hatwye9

cat ./output-regtest/print1/out.pan
abi:panpan1
abi:panwye10

cat ./output-regtest/print1/out.wye
abi:wyewye3
abi:wyepan5

cat ./output-regtest/print1/out.zee
abi:zeepan6
abi:zeewye8

mlr put -q print >> "./output-regtest/print1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/out.eks
abi:ekspan2
abi:ekswye4
abi:ekszee7
abi:ekspan2
abi:ekswye4
abi:ekszee7

cat ./output-regtest/print1/out.hat
abi:hatwye9
abi:hatwye9

cat ./output-regtest/print1/out.pan
abi:panpan1
abi:panwye10
abi:panpan1
abi:panwye10

cat ./output-regtest/print1/out.wye
abi:wyewye3
abi:wyepan5
abi:wyewye3
abi:wyepan5

cat ./output-regtest/print1/out.zee
abi:zeepan6
abi:zeewye8
abi:zeepan6
abi:zeewye8

mlr put -q print | "tr \[a-z\] \[A-Z\]",  "abi:".$a.$b.$i ./reg_test/input/abixy
ABI:PANPAN1
ABI:EKSPAN2
ABI:WYEWYE3
ABI:EKSWYE4
ABI:WYEPAN5
ABI:ZEEPAN6
ABI:EKSZEE7
ABI:ZEEWYE8
ABI:HATWYE9
ABI:PANWYE10

mlr put -q print > stdout, "abi:".$a.$b.$i ./reg_test/input/abixy
abi:panpan1
abi:ekspan2
abi:wyewye3
abi:ekswye4
abi:wyepan5
abi:zeepan6
abi:ekszee7
abi:zeewye8
abi:hatwye9
abi:panwye10

cat ./output-regtest/print1/err1

mlr put -q print > stderr, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/print1/err2
abi:panpan1
abi:ekspan2
abi:wyewye3
abi:ekswye4
abi:wyepan5
abi:zeepan6
abi:ekszee7
abi:zeewye8
abi:hatwye9
abi:panwye10


================================================================
DSL PRINTN REDIRECTS

mlr put -q printn > "./output-regtest/printn1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/out.eks
abi:ekspan2abi:ekswye4abi:ekszee7
cat ./output-regtest/printn1/out.hat
abi:hatwye9
cat ./output-regtest/printn1/out.pan
abi:panpan1abi:panwye10
cat ./output-regtest/printn1/out.wye
abi:wyewye3abi:wyepan5
cat ./output-regtest/printn1/out.zee
abi:zeepan6abi:zeewye8
mlr put -q printn > "./output-regtest/printn1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/out.eks
abi:ekspan2abi:ekswye4abi:ekszee7
cat ./output-regtest/printn1/out.hat
abi:hatwye9
cat ./output-regtest/printn1/out.pan
abi:panpan1abi:panwye10
cat ./output-regtest/printn1/out.wye
abi:wyewye3abi:wyepan5
cat ./output-regtest/printn1/out.zee
abi:zeepan6abi:zeewye8
mlr put -q printn >> "./output-regtest/printn1/out.".$a, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/out.eks
abi:ekspan2abi:ekswye4abi:ekszee7abi:ekspan2abi:ekswye4abi:ekszee7
cat ./output-regtest/printn1/out.hat
abi:hatwye9abi:hatwye9
cat ./output-regtest/printn1/out.pan
abi:panpan1abi:panwye10abi:panpan1abi:panwye10
cat ./output-regtest/printn1/out.wye
abi:wyewye3abi:wyepan5abi:wyewye3abi:wyepan5
cat ./output-regtest/printn1/out.zee
abi:zeepan6abi:zeewye8abi:zeepan6abi:zeewye8
mlr put -q printn | "tr \[a-z\] \[A-Z\]",  "abi:".$a.$b.$i ./reg_test/input/abixy
ABI:PANPAN1ABI:EKSPAN2ABI:WYEWYE3ABI:EKSWYE4ABI:WYEPAN5ABI:ZEEPAN6ABI:EKSZEE7ABI:ZEEWYE8ABI:HATWYE9ABI:PANWYE10
mlr put -q printn > stdout, "abi:".$a.$b.$i ./reg_test/input/abixy
abi:panpan1abi:ekspan2abi:wyewye3abi:ekswye4abi:wyepan5abi:zeepan6abi:ekszee7abi:zeewye8abi:hatwye9abi:panwye10
cat ./output-regtest/printn1/err1

mlr put -q printn > stderr, "abi:".$a.$b.$i ./reg_test/input/abixy

cat ./output-regtest/printn1/err2
abi:panpan1abi:ekspan2abi:wyewye3abi:ekswye4abi:wyepan5abi:zeepan6abi:ekszee7abi:zeewye8abi:hatwye9abi:panwye10

================================================================
DSL DUMP REDIRECTS

mlr put -q @v=$*; dump > "./output-regtest/dump1/out.".$a ./reg_test/input/abixy

cat ./output-regtest/dump1/out.eks
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}

cat ./output-regtest/dump1/out.hat
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}

cat ./output-regtest/dump1/out.pan
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}

cat ./output-regtest/dump1/out.wye
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}

cat ./output-regtest/dump1/out.zee
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}

mlr put -q @v=$*; dump > "./output-regtest/dump1/out.".$a ./reg_test/input/abixy

cat ./output-regtest/dump1/out.eks
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}

cat ./output-regtest/dump1/out.hat
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}

cat ./output-regtest/dump1/out.pan
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}

cat ./output-regtest/dump1/out.wye
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}

cat ./output-regtest/dump1/out.zee
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}

mlr put -q @v=$*; dump >> "./output-regtest/dump1/out.".$a ./reg_test/input/abixy

cat ./output-regtest/dump1/out.eks
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}
{
  "v": {
    "a": "eks",
    "b": "pan",
    "i": 2,
    "x": 0.7586799647899636,
    "y": 0.5221511083334797
  }
}
{
  "v": {
    "a": "eks",
    "b": "wye",
    "i": 4,
    "x": 0.38139939387114097,
    "y": 0.13418874328430463
  }
}
{
  "v": {
    "a": "eks",
    "b": "zee",
    "i": 7,
    "x": 0.6117840605678454,
    "y": 0.1878849191181694
  }
}

cat ./output-regtest/dump1/out.hat
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}
{
  "v": {
    "a": "hat",
    "b": "wye",
    "i": 9,
    "x": 0.03144187646093577,
    "y": 0.7495507603507059
  }
}

cat ./output-regtest/dump1/out.pan
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}
{
  "v": {
    "a": "pan",
    "b": "pan",
    "i": 1,
    "x": 0.3467901443380824,
    "y": 0.7268028627434533
  }
}
{
  "v": {
    "a": "pan",
    "b": "wye",
    "i": 10,
    "x": 0.5026260055412137,
    "y": 0.9526183602969864
  }
}

cat ./output-regtest/dump1/out.wye
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}
{
  "v": {
    "a": "wye",
    "b": "wye",
    "i": 3,
    "x": 0.20460330576630303,
    "y": 0.33831852551664776
  }
}
{
  "v": {
    "a": "wye",
    "b": "pan",
    "i": 5,
    "x": 0.5732889198020006,
    "y": 0.8636244699032729
  }
}

cat ./output-regtest/dump1/out.zee
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}
{
  "v": {
    "a": "zee",
    "b": "pan",
    "i": 6,
    "x": 0.5271261600918548,
    "y": 0.49322128674835697
  }
}
{
  "v": {
    "a": "zee",
    "b": "wye",
    "i": 8,
    "x": 0.5985540091064224,
    "y": 0.976181385699006
  }
}

mlr put -q @v=$*; dump | "tr \[a-z\] \[A-Z\]" ./reg_test/input/abixy
{
  "V": {
    "A": "PAN",
    "B": "PAN",
    "I": 1,
    "X": 0.3467901443380824,
    "Y": 0.7268028627434533
  }
}
{
  "V": {
    "A": "EKS",
    "B": "PAN",
    "I": 2,
    "X": 0.7586799647899636,
    "Y": 0.5221511083334797
  }
}
{
  "V": {
    "A": "WYE",
    "B": "WYE",
    "I": 3,
    "X": 0.20460330576630303,
    "Y": 0.33831852551664776
  }
}
{
  "V": {
    "A": "EKS",
    "B": "WYE",
    "I": 4,
    "X": 0.38139939387114097,
    "Y": 0.13418874328430463
  }
}
{
  "V": {
    "A": "WYE",
    "B": "PAN",
    "I": 5,
    "X": 0.5732889198020006,
    "Y": 0.8636244699032729
  }
}
{
  "V": {
    "A": "ZEE",
    "B": "PAN",
    "I": 6,
    "X": 0.5271261600918548,
    "Y": 0.49322128674835697
  }
}
{
  "V": {
    "A": "EKS",
    "B": "ZEE",
    "I": 7,
    "X": 0.6117840605678454,
    "Y": 0.1878849191181694
  }
}
{
  "V": {
    "A": "ZEE",
    "B": "WYE",
    "I": 8,
    "X": 0.5985540091064224,
    "Y": 0.976181385699006
  }
}
{
  "V": {
    "A": "HAT",
    "B": "WYE",
    "I": 9,
    "X": 0.03144187646093577,
    "Y": 0.7495507603507059
  }
}
{
  "V": {
    "A": "PAN",
    "B": "WYE",
    "I": 10,
    "X": 0.5026260055412137,
    "Y": 0.9526183602969864
  }
}

mlr put -q @v[NR] = $*; NR == 2 { dump > stdout } ./reg_test/input/abixy
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}

cat ./output-regtest/dump1/err1

mlr put -q @v[NR] = $*; NR == 2 { dump > stderr } ./reg_test/input/abixy

cat ./output-regtest/dump1/err2
{
  "v": {
    "1": {
      "a": "pan",
      "b": "pan",
      "i": 1,
      "x": 0.3467901443380824,
      "y": 0.7268028627434533
    },
    "2": {
      "a": "eks",
      "b": "pan",
      "i": 2,
      "x": 0.7586799647899636,
      "y": 0.5221511083334797
    }
  }
}


================================================================
DSL EMITF REDIRECTS

mlr put -q @a=$a; @b=$b; emitf > "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
a=eks,b=pan

cat ./output-regtest/emitf1/out.ekswye
a=eks,b=wye

cat ./output-regtest/emitf1/out.ekszee
a=eks,b=zee

cat ./output-regtest/emitf1/out.hatwye
a=hat,b=wye

cat ./output-regtest/emitf1/out.panpan
a=pan,b=pan

cat ./output-regtest/emitf1/out.panwye
a=pan,b=wye

cat ./output-regtest/emitf1/out.wyepan
a=wye,b=pan

cat ./output-regtest/emitf1/out.wyewye
a=wye,b=wye

cat ./output-regtest/emitf1/out.zeepan
a=zee,b=pan

cat ./output-regtest/emitf1/out.zeewye
a=zee,b=wye

mlr put -q @a=$a; @b=$b; emitf > "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
a=eks,b=pan

cat ./output-regtest/emitf1/out.ekswye
a=eks,b=wye

cat ./output-regtest/emitf1/out.ekszee
a=eks,b=zee

cat ./output-regtest/emitf1/out.hatwye
a=hat,b=wye

cat ./output-regtest/emitf1/out.panpan
a=pan,b=pan

cat ./output-regtest/emitf1/out.panwye
a=pan,b=wye

cat ./output-regtest/emitf1/out.wyepan
a=wye,b=pan

cat ./output-regtest/emitf1/out.wyewye
a=wye,b=wye

cat ./output-regtest/emitf1/out.zeepan
a=zee,b=pan

cat ./output-regtest/emitf1/out.zeewye
a=zee,b=wye

mlr put -q @a=$a; @b=$b; emitf >> "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
a=eks,b=pan
a=eks,b=pan

cat ./output-regtest/emitf1/out.ekswye
a=eks,b=wye
a=eks,b=wye

cat ./output-regtest/emitf1/out.ekszee
a=eks,b=zee
a=eks,b=zee

cat ./output-regtest/emitf1/out.hatwye
a=hat,b=wye
a=hat,b=wye

cat ./output-regtest/emitf1/out.panpan
a=pan,b=pan
a=pan,b=pan

cat ./output-regtest/emitf1/out.panwye
a=pan,b=wye
a=pan,b=wye

cat ./output-regtest/emitf1/out.wyepan
a=wye,b=pan
a=wye,b=pan

cat ./output-regtest/emitf1/out.wyewye
a=wye,b=wye
a=wye,b=wye

cat ./output-regtest/emitf1/out.zeepan
a=zee,b=pan
a=zee,b=pan

cat ./output-regtest/emitf1/out.zeewye
a=zee,b=wye
a=zee,b=wye

mlr put -q -o json @a=$a; @b=$b; emitf > "./output-regtest/emitf1/out.".$a.$b, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/out.ekspan
{ "a": "eks", "b": "pan" }

cat ./output-regtest/emitf1/out.ekswye
{ "a": "eks", "b": "wye" }

cat ./output-regtest/emitf1/out.ekszee
{ "a": "eks", "b": "zee" }

cat ./output-regtest/emitf1/out.hatwye
{ "a": "hat", "b": "wye" }

cat ./output-regtest/emitf1/out.panpan
{ "a": "pan", "b": "pan" }

cat ./output-regtest/emitf1/out.panwye
{ "a": "pan", "b": "wye" }

cat ./output-regtest/emitf1/out.wyepan
{ "a": "wye", "b": "pan" }

cat ./output-regtest/emitf1/out.wyewye
{ "a": "wye", "b": "wye" }

cat ./output-regtest/emitf1/out.zeepan
{ "a": "zee", "b": "pan" }

cat ./output-regtest/emitf1/out.zeewye
{ "a": "zee", "b": "wye" }

mlr put -q @a=$a; @b=$b; emitf | "tr \[a-z\] \[A-Z\]", @a, @b ./reg_test/input/abixy
A=PAN,B=PAN
A=EKS,B=PAN
A=WYE,B=WYE
A=EKS,B=WYE
A=WYE,B=PAN
A=ZEE,B=PAN
A=EKS,B=ZEE
A=ZEE,B=WYE
A=HAT,B=WYE
A=PAN,B=WYE

mlr put -q @a=$a; @b=$b; emitf > stdout, @a, @b ./reg_test/input/abixy
a=pan,b=pan
a=eks,b=pan
a=wye,b=wye
a=eks,b=wye
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=hat,b=wye
a=pan,b=wye

cat ./output-regtest/emitf1/err1

mlr put -q @a=$a; @b=$b; emitf > stderr, @a, @b ./reg_test/input/abixy

cat ./output-regtest/emitf1/err2
a=pan,b=pan
a=eks,b=pan
a=wye,b=wye
a=eks,b=wye
a=wye,b=pan
a=zee,b=pan
a=eks,b=zee
a=zee,b=wye
a=hat,b=wye
a=pan,b=wye


================================================================
DSL EMITP REDIRECTS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
a:1=pan,a:2=eks

cat ./output-regtest/emitp1/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/out.panpan
a:1=pan

cat ./output-regtest/emitp1/out.wyewye
a:1=pan,a:2=eks,a:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
a:1=pan,a:2=eks

cat ./output-regtest/emitp1/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/out.panpan
a:1=pan

cat ./output-regtest/emitp1/out.wyewye
a:1=pan,a:2=eks,a:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
a:1=pan,a:2=eks
a:1=pan,a:2=eks

cat ./output-regtest/emitp1/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/out.panpan
a:1=pan
a:1=pan

cat ./output-regtest/emitp1/out.wyewye
a:1=pan,a:2=eks,a:3=wye
a:1=pan,a:2=eks,a:3=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/out.ekspan
{ "a": {"1": "pan", "2": "eks" } }

cat ./output-regtest/emitp1/out.ekswye
{ "a": {"1": "pan", "2": "eks", "3": "wye", "4": "eks" } }

cat ./output-regtest/emitp1/out.panpan
{ "a": {"1": "pan" } }

cat ./output-regtest/emitp1/out.wyewye
{ "a": {"1": "pan", "2": "eks", "3": "wye" } }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @a ./reg_test/input/abixy
A:1=PAN
A:1=PAN,A:2=EKS
A:1=PAN,A:2=EKS,A:3=WYE
A:1=PAN,A:2=EKS,A:3=WYE,A:4=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @a ./reg_test/input/abixy
a:1=pan
a:1=pan,a:2=eks
a:1=pan,a:2=eks,a:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

cat ./output-regtest/emitp1/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @a ./reg_test/input/abixy

cat ./output-regtest/emitp1/err2
a:1=pan
a:1=pan,a:2=eks
a:1=pan,a:2=eks,a:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emitp2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/out.panpan
NR=1,a=pan

cat ./output-regtest/emitp2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emitp2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/out.panpan
NR=1,a=pan

cat ./output-regtest/emitp2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emitp2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/out.panpan
NR=1,a=pan
NR=1,a=pan

cat ./output-regtest/emitp2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/out.ekspan
{ "NR": 1, "a": "pan" }
{ "NR": 2, "a": "eks" }

cat ./output-regtest/emitp2/out.ekswye
{ "NR": 1, "a": "pan" }
{ "NR": 2, "a": "eks" }
{ "NR": 3, "a": "wye" }
{ "NR": 4, "a": "eks" }

cat ./output-regtest/emitp2/out.panpan
{ "NR": 1, "a": "pan" }

cat ./output-regtest/emitp2/out.wyewye
{ "NR": 1, "a": "pan" }
{ "NR": 2, "a": "eks" }
{ "NR": 3, "a": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @a, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @a, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emitp2/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp2/err2
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
a:1=pan,b:1=pan,a:2=eks,b:2=pan

cat ./output-regtest/emitp3/out.ekswye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/out.panpan
a:1=pan,b:1=pan

cat ./output-regtest/emitp3/out.wyewye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
a:1=pan,b:1=pan,a:2=eks,b:2=pan

cat ./output-regtest/emitp3/out.ekswye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/out.panpan
a:1=pan,b:1=pan

cat ./output-regtest/emitp3/out.wyewye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
a:1=pan,b:1=pan,a:2=eks,b:2=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan

cat ./output-regtest/emitp3/out.ekswye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/out.panpan
a:1=pan,b:1=pan
a:1=pan,b:1=pan

cat ./output-regtest/emitp3/out.wyewye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/out.ekspan
{ "a": {"1": "pan", "2": "eks" },"b": {"1": "pan", "2": "pan" } }

cat ./output-regtest/emitp3/out.ekswye
{ "a": {"1": "pan", "2": "eks", "3": "wye", "4": "eks" },"b": {"1": "pan", "2": "pan", "3": "wye", "4": "wye" } }

cat ./output-regtest/emitp3/out.panpan
{ "a": {"1": "pan" },"b": {"1": "pan" } }

cat ./output-regtest/emitp3/out.wyewye
{ "a": {"1": "pan", "2": "eks", "3": "wye" },"b": {"1": "pan", "2": "pan", "3": "wye" } }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", (@a, @b) ./reg_test/input/abixy
A:1=PAN,B:1=PAN
A:1=PAN,B:1=PAN,A:2=EKS,B:2=PAN
A:1=PAN,B:1=PAN,A:2=EKS,B:2=PAN,A:3=WYE,B:3=WYE
A:1=PAN,B:1=PAN,A:2=EKS,B:2=PAN,A:3=WYE,B:3=WYE,A:4=EKS,B:4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, (@a, @b) ./reg_test/input/abixy
a:1=pan,b:1=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

cat ./output-regtest/emitp3/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emitp3/err2
a:1=pan,b:1=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye
a:1=pan,b:1=pan,a:2=eks,b:2=pan,a:3=wye,b:3=wye,a:4=eks,b:4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emitp4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emitp4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emitp4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emitp4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp >> "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emitp4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/out.panpan
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan

cat ./output-regtest/emitp4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/out.ekspan
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }

cat ./output-regtest/emitp4/out.ekswye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }
{ "NR": 4, "a": "eks", "b": "wye" }

cat ./output-regtest/emitp4/out.panpan
{ "NR": 1, "a": "pan", "b": "pan" }

cat ./output-regtest/emitp4/out.wyewye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", (@a, @b), "NR" ./reg_test/input/abixy
NR=1,A=PAN,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=4,A=EKS,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, (@a, @b), "NR" ./reg_test/input/abixy
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emitp4/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp4/err2
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp5/out.".$a.$b, @* ./reg_test/input/abixy

cat ./output-regtest/emitp5/out.ekspan
a:1=pan,a:2=eks
b:1=pan,b:2=pan

cat ./output-regtest/emitp5/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp5/out.panpan
a:1=pan
b:1=pan

cat ./output-regtest/emitp5/out.wyewye
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @* ./reg_test/input/abixy
A:1=PAN
B:1=PAN
A:1=PAN,A:2=EKS
B:1=PAN,B:2=PAN
A:1=PAN,A:2=EKS,A:3=WYE
B:1=PAN,B:2=PAN,B:3=WYE
A:1=PAN,A:2=EKS,A:3=WYE,A:4=EKS
B:1=PAN,B:2=PAN,B:3=WYE,B:4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @* ./reg_test/input/abixy
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp5/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @* ./reg_test/input/abixy

cat ./output-regtest/emitp5/err2
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp6/out.".$a.$b, all ./reg_test/input/abixy

cat ./output-regtest/emitp6/out.ekspan
a:1=pan,a:2=eks
b:1=pan,b:2=pan

cat ./output-regtest/emitp6/out.ekswye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp6/out.panpan
a:1=pan
b:1=pan

cat ./output-regtest/emitp6/out.wyewye
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", all ./reg_test/input/abixy
A:1=PAN
B:1=PAN
A:1=PAN,A:2=EKS
B:1=PAN,B:2=PAN
A:1=PAN,A:2=EKS,A:3=WYE
B:1=PAN,B:2=PAN,B:3=WYE
A:1=PAN,A:2=EKS,A:3=WYE,A:4=EKS
B:1=PAN,B:2=PAN,B:3=WYE,B:4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, all ./reg_test/input/abixy
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

cat ./output-regtest/emitp6/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, all ./reg_test/input/abixy

cat ./output-regtest/emitp6/err2
a:1=pan
b:1=pan
a:1=pan,a:2=eks
b:1=pan,b:2=pan
a:1=pan,a:2=eks,a:3=wye
b:1=pan,b:2=pan,b:3=wye
a:1=pan,a:2=eks,a:3=wye,a:4=eks
b:1=pan,b:2=pan,b:3=wye,b:4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp7/out.".$a.$b, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp7/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emitp7/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp7/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emitp7/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", @*, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, @*, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp7/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp7/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > "./output-regtest/emitp8/out.".$a.$b, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp8/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emitp8/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp8/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emitp8/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp | "tr \[a-z\] \[A-Z\]", all, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stdout, all, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emitp8/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emitp > stderr, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emitp8/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye


================================================================
DSL EMIT REDIRECTS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
1=pan,2=eks

cat ./output-regtest/emit1/out.ekswye
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/out.panpan
1=pan

cat ./output-regtest/emit1/out.wyewye
1=pan,2=eks,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
1=pan,2=eks

cat ./output-regtest/emit1/out.ekswye
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/out.panpan
1=pan

cat ./output-regtest/emit1/out.wyewye
1=pan,2=eks,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
1=pan,2=eks
1=pan,2=eks

cat ./output-regtest/emit1/out.ekswye
1=pan,2=eks,3=wye,4=eks
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/out.panpan
1=pan
1=pan

cat ./output-regtest/emit1/out.wyewye
1=pan,2=eks,3=wye
1=pan,2=eks,3=wye

mlr head -n 4 then put -q -o json @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit1/out.".$a.$b, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/out.ekspan
{ "1": "pan", "2": "eks" }

cat ./output-regtest/emit1/out.ekswye
{ "1": "pan", "2": "eks", "3": "wye", "4": "eks" }

cat ./output-regtest/emit1/out.panpan
{ "1": "pan" }

cat ./output-regtest/emit1/out.wyewye
{ "1": "pan", "2": "eks", "3": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @a ./reg_test/input/abixy
1=PAN
1=PAN,2=EKS
1=PAN,2=EKS,3=WYE
1=PAN,2=EKS,3=WYE,4=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @a ./reg_test/input/abixy
1=pan
1=pan,2=eks
1=pan,2=eks,3=wye
1=pan,2=eks,3=wye,4=eks

cat ./output-regtest/emit1/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @a ./reg_test/input/abixy

cat ./output-regtest/emit1/err2
1=pan
1=pan,2=eks
1=pan,2=eks,3=wye
1=pan,2=eks,3=wye,4=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emit2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/out.panpan
NR=1,a=pan

cat ./output-regtest/emit2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emit2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/out.panpan
NR=1,a=pan

cat ./output-regtest/emit2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks

cat ./output-regtest/emit2/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/out.panpan
NR=1,a=pan
NR=1,a=pan

cat ./output-regtest/emit2/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye

mlr head -n 4 then put -q -o pprint @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit2/out.".$a.$b, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/out.ekspan
NR a
1  pan
2  eks

cat ./output-regtest/emit2/out.ekswye
NR a
1  pan
2  eks
3  wye
4  eks

cat ./output-regtest/emit2/out.panpan
NR a
1  pan

cat ./output-regtest/emit2/out.wyewye
NR a
1  pan
2  eks
3  wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @a, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @a, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

cat ./output-regtest/emit2/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @a, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit2/err2
NR=1,a=pan
NR=1,a=pan
NR=2,a=eks
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1=pan,2=pan

cat ./output-regtest/emit3/out.ekswye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/out.panpan
1=pan

cat ./output-regtest/emit3/out.wyewye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1=pan,2=pan

cat ./output-regtest/emit3/out.ekswye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/out.panpan
1=pan

cat ./output-regtest/emit3/out.wyewye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1=pan,2=pan
1=pan,2=pan

cat ./output-regtest/emit3/out.ekswye
1=pan,2=pan,3=wye,4=wye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/out.panpan
1=pan
1=pan

cat ./output-regtest/emit3/out.wyewye
1=pan,2=pan,3=wye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q --oxtab @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit3/out.".$a.$b, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/out.ekspan
1 pan
2 pan

cat ./output-regtest/emit3/out.ekswye
1 pan
2 pan
3 wye
4 wye

cat ./output-regtest/emit3/out.panpan
1 pan

cat ./output-regtest/emit3/out.wyewye
1 pan
2 pan
3 wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", (@a, @b) ./reg_test/input/abixy
1=PAN
1=PAN,2=PAN
1=PAN,2=PAN,3=WYE
1=PAN,2=PAN,3=WYE,4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, (@a, @b) ./reg_test/input/abixy
1=pan
1=pan,2=pan
1=pan,2=pan,3=wye
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit3/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, (@a, @b) ./reg_test/input/abixy

cat ./output-regtest/emit3/err2
1=pan
1=pan,2=pan
1=pan,2=pan,3=wye
1=pan,2=pan,3=wye,4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emit4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emit4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emit4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/out.panpan
NR=1,a=pan,b=pan

cat ./output-regtest/emit4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit >> "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan

cat ./output-regtest/emit4/out.ekswye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/out.panpan
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan

cat ./output-regtest/emit4/out.wyewye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye

mlr head -n 4 then put -q --ojson @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit4/out.".$a.$b, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/out.ekspan
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }

cat ./output-regtest/emit4/out.ekswye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }
{ "NR": 4, "a": "eks", "b": "wye" }

cat ./output-regtest/emit4/out.panpan
{ "NR": 1, "a": "pan", "b": "pan" }

cat ./output-regtest/emit4/out.wyewye
{ "NR": 1, "a": "pan", "b": "pan" }
{ "NR": 2, "a": "eks", "b": "pan" }
{ "NR": 3, "a": "wye", "b": "wye" }

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", (@a, @b), "NR" ./reg_test/input/abixy
NR=1,A=PAN,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=1,A=PAN,B=PAN
NR=2,A=EKS,B=PAN
NR=3,A=WYE,B=WYE
NR=4,A=EKS,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, (@a, @b), "NR" ./reg_test/input/abixy
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

cat ./output-regtest/emit4/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, (@a, @b), "NR" ./reg_test/input/abixy

cat ./output-regtest/emit4/err2
NR=1,a=pan,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=1,a=pan,b=pan
NR=2,a=eks,b=pan
NR=3,a=wye,b=wye
NR=4,a=eks,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit5/out.".$a.$b, @* ./reg_test/input/abixy

cat ./output-regtest/emit5/out.ekspan
1=pan,2=eks
1=pan,2=pan

cat ./output-regtest/emit5/out.ekswye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit5/out.panpan
1=pan
1=pan

cat ./output-regtest/emit5/out.wyewye
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @* ./reg_test/input/abixy
1=PAN
1=PAN
1=PAN,2=EKS
1=PAN,2=PAN
1=PAN,2=EKS,3=WYE
1=PAN,2=PAN,3=WYE
1=PAN,2=EKS,3=WYE,4=EKS
1=PAN,2=PAN,3=WYE,4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @* ./reg_test/input/abixy
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit5/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @* ./reg_test/input/abixy

cat ./output-regtest/emit5/err2
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit6/out.".$a.$b, all ./reg_test/input/abixy

cat ./output-regtest/emit6/out.ekspan
1=pan,2=eks
1=pan,2=pan

cat ./output-regtest/emit6/out.ekswye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit6/out.panpan
1=pan
1=pan

cat ./output-regtest/emit6/out.wyewye
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", all ./reg_test/input/abixy
1=PAN
1=PAN
1=PAN,2=EKS
1=PAN,2=PAN
1=PAN,2=EKS,3=WYE
1=PAN,2=PAN,3=WYE
1=PAN,2=EKS,3=WYE,4=EKS
1=PAN,2=PAN,3=WYE,4=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, all ./reg_test/input/abixy
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

cat ./output-regtest/emit6/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, all ./reg_test/input/abixy

cat ./output-regtest/emit6/err2
1=pan
1=pan
1=pan,2=eks
1=pan,2=pan
1=pan,2=eks,3=wye
1=pan,2=pan,3=wye
1=pan,2=eks,3=wye,4=eks
1=pan,2=pan,3=wye,4=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit7/out.".$a.$b, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit7/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emit7/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit7/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emit7/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", @*, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, @*, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit7/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, @*, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit7/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > "./output-regtest/emit8/out.".$a.$b, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit8/out.ekspan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan

cat ./output-regtest/emit8/out.ekswye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit8/out.panpan
NR=1,a=pan
NR=1,b=pan

cat ./output-regtest/emit8/out.wyewye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit | "tr \[a-z\] \[A-Z\]", all, "NR" ./reg_test/input/abixy
NR=1,A=PAN
NR=1,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=1,A=PAN
NR=2,A=EKS
NR=3,A=WYE
NR=4,A=EKS
NR=1,B=PAN
NR=2,B=PAN
NR=3,B=WYE
NR=4,B=WYE

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stdout, all, "NR" ./reg_test/input/abixy
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye

cat ./output-regtest/emit8/err1

mlr head -n 4 then put -q @a[NR]=$a; @b[NR]=$b; emit > stderr, all, "NR" ./reg_test/input/abixy

cat ./output-regtest/emit8/err2
NR=1,a=pan
NR=1,b=pan
NR=1,a=pan
NR=2,a=eks
NR=1,b=pan
NR=2,b=pan
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=1,a=pan
NR=2,a=eks
NR=3,a=wye
NR=4,a=eks
NR=1,b=pan
NR=2,b=pan
NR=3,b=wye
NR=4,b=wye


================================================================
OOSVAR-FROM-SREC ASSIGNMENT

mlr put -v @v     = $* /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_from_full_srec_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
        text="$*", type=full_srec.

mlr put -v @v[1]  = $* /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_from_full_srec_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
            text="1", type=strnum_literal.
        text="$*", type=full_srec.

mlr put -v @v[$2] = $* /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_from_full_srec_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
            text="2", type=field_name.
        text="$*", type=full_srec.

mlr put -v NR == 3 {@v     = $*} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_from_full_srec_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                text="$*", type=full_srec.

mlr put -v NR == 3 {@v[1]  = $*} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_from_full_srec_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.
                text="$*", type=full_srec.

mlr put -v NR == 3 {@v[$2] = $*} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_from_full_srec_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="2", type=field_name.
                text="$*", type=full_srec.

mlr --oxtab put -q @v = $*; end {emitp @v } ./reg_test/input/abixy-het
v:a pan
v:b wye
v:i 10
v:x 0.5026260055412137
v:y 0.9526183602969864

mlr --oxtab put -q @v[$a] = $*; end {emitp @v      } ./reg_test/input/abixy-het
v:pan:a   pan
v:pan:b   wye
v:pan:i   10
v:pan:x   0.5026260055412137
v:pan:y   0.9526183602969864
v:eks:a   eks
v:eks:b   zee
v:eks:iii 7
v:eks:x   0.6117840605678454
v:eks:y   0.1878849191181694
v:wye:a   wye
v:wye:b   pan
v:wye:i   5
v:wye:xxx 0.5732889198020006
v:wye:y   0.8636244699032729
v:zee:a   zee
v:zee:b   wye
v:zee:i   8
v:zee:x   0.5985540091064224
v:zee:yyy 0.976181385699006

mlr --oxtab put -q @v[$a] = $*; end {emitp @v, "a" } ./reg_test/input/abixy-het
a   pan
v:a pan
v:b wye
v:i 10
v:x 0.5026260055412137
v:y 0.9526183602969864

a     eks
v:a   eks
v:b   zee
v:iii 7
v:x   0.6117840605678454
v:y   0.1878849191181694

a     wye
v:a   wye
v:b   pan
v:i   5
v:xxx 0.5732889198020006
v:y   0.8636244699032729

a     zee
v:a   zee
v:b   wye
v:i   8
v:x   0.5985540091064224
v:yyy 0.976181385699006

mlr --oxtab put -q @v[$a][$b] = $*; end {emitp @v          } ./reg_test/input/abixy-het
v:pan:pan:a   pan
v:pan:pan:b   pan
v:pan:pan:i   1
v:pan:pan:x   0.3467901443380824
v:pan:pan:y   0.7268028627434533
v:pan:wye:a   pan
v:pan:wye:b   wye
v:pan:wye:i   10
v:pan:wye:x   0.5026260055412137
v:pan:wye:y   0.9526183602969864
v:eks:pan:a   eks
v:eks:pan:b   pan
v:eks:pan:i   2
v:eks:pan:x   0.7586799647899636
v:eks:pan:y   0.5221511083334797
v:eks:zee:a   eks
v:eks:zee:b   zee
v:eks:zee:iii 7
v:eks:zee:x   0.6117840605678454
v:eks:zee:y   0.1878849191181694
v:wye:pan:a   wye
v:wye:pan:b   pan
v:wye:pan:i   5
v:wye:pan:xxx 0.5732889198020006
v:wye:pan:y   0.8636244699032729
v:zee:pan:a   zee
v:zee:pan:b   pan
v:zee:pan:i   6
v:zee:pan:x   0.5271261600918548
v:zee:pan:y   0.49322128674835697
v:zee:wye:a   zee
v:zee:wye:b   wye
v:zee:wye:i   8
v:zee:wye:x   0.5985540091064224
v:zee:wye:yyy 0.976181385699006

mlr --oxtab put -q @v[$a][$b] = $*; end {emitp @v, "a"     } ./reg_test/input/abixy-het
a       pan
v:pan:a pan
v:pan:b pan
v:pan:i 1
v:pan:x 0.3467901443380824
v:pan:y 0.7268028627434533
v:wye:a pan
v:wye:b wye
v:wye:i 10
v:wye:x 0.5026260055412137
v:wye:y 0.9526183602969864

a         eks
v:pan:a   eks
v:pan:b   pan
v:pan:i   2
v:pan:x   0.7586799647899636
v:pan:y   0.5221511083334797
v:zee:a   eks
v:zee:b   zee
v:zee:iii 7
v:zee:x   0.6117840605678454
v:zee:y   0.1878849191181694

a         wye
v:pan:a   wye
v:pan:b   pan
v:pan:i   5
v:pan:xxx 0.5732889198020006
v:pan:y   0.8636244699032729

a         zee
v:pan:a   zee
v:pan:b   pan
v:pan:i   6
v:pan:x   0.5271261600918548
v:pan:y   0.49322128674835697
v:wye:a   zee
v:wye:b   wye
v:wye:i   8
v:wye:x   0.5985540091064224
v:wye:yyy 0.976181385699006

mlr --oxtab put -q @v[$a][$b] = $*; end {emitp @v, "a", "b"} ./reg_test/input/abixy-het
a   pan
b   pan
v:a pan
v:b pan
v:i 1
v:x 0.3467901443380824
v:y 0.7268028627434533

a   pan
b   wye
v:a pan
v:b wye
v:i 10
v:x 0.5026260055412137
v:y 0.9526183602969864

a   eks
b   pan
v:a eks
v:b pan
v:i 2
v:x 0.7586799647899636
v:y 0.5221511083334797

a     eks
b     zee
v:a   eks
v:b   zee
v:iii 7
v:x   0.6117840605678454
v:y   0.1878849191181694

a     wye
b     pan
v:a   wye
v:b   pan
v:i   5
v:xxx 0.5732889198020006
v:y   0.8636244699032729

a   zee
b   pan
v:a zee
v:b pan
v:i 6
v:x 0.5271261600918548
v:y 0.49322128674835697

a     zee
b     wye
v:a   zee
v:b   wye
v:i   8
v:x   0.5985540091064224
v:yyy 0.976181385699006


================================================================
SREC-FROM-OOSVAR ASSIGNMENT

mlr put -v $* = @v     /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=full_srec_from_oosvar_assignment:
        text="$*", type=full_srec.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.

mlr put -v $* = @v[1]  /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=full_srec_from_oosvar_assignment:
        text="$*", type=full_srec.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
            text="1", type=strnum_literal.

mlr put -v $* = @v[$2] /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=full_srec_from_oosvar_assignment:
        text="$*", type=full_srec.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
            text="2", type=field_name.

mlr put -v NR == 3 {$* = @v    } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=full_srec_from_oosvar_assignment:
                text="$*", type=full_srec.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v NR == 3 {$* = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=full_srec_from_oosvar_assignment:
                text="$*", type=full_srec.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -v NR == 3 {$* = @v[$2]} /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=full_srec_from_oosvar_assignment:
                text="$*", type=full_srec.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="2", type=field_name.

mlr put @v[NR] = $a; NR == 7 { @v = $*} ; $* = @v ./reg_test/input/abixy-het
1=pan
1=pan,2=eks
1=pan,2=eks
1=pan,2=eks,4=eks
1=pan,2=eks,4=eks,5=wye
1=pan,2=eks,4=eks,5=wye,6=zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee
a=eks,b=zee,iii=7,x=0.6117840605678454,y=0.1878849191181694,8=zee,10=pan


================================================================
OOSVAR-FROM-OOSVAR ASSIGNMENT

mlr put -v @u    = @v /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="u", type=string_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.

mlr put -v @u    = @v[1] /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="u", type=string_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
            text="1", type=strnum_literal.

mlr put -v @u[2] = @v /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="u", type=string_literal.
            text="2", type=strnum_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.

mlr put -v @u[2] = @v[1] /dev/null
AST ROOT:
text="list", type=statement_list:
    text="=", type=oosvar_assignment:
        text="oosvar_keylist", type=oosvar_keylist:
            text="u", type=string_literal.
            text="2", type=strnum_literal.
        text="oosvar_keylist", type=oosvar_keylist:
            text="v", type=string_literal.
            text="1", type=strnum_literal.

mlr put -v begin { @u    = @v } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v begin { @u    = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -v begin { @u[2] = @v } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                    text="2", type=strnum_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v begin { @u[2] = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="begin", type=begin:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                    text="2", type=strnum_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -v NR == 3 { @u    = @v } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v NR == 3 { @u    = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -v NR == 3 { @u[2] = @v } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                    text="2", type=strnum_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v NR == 3 { @u[2] = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="cond", type=conditional_block:
        text="==", type=operator:
            text="NR", type=context_variable.
            text="3", type=strnum_literal.
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                    text="2", type=strnum_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -v end { @u    = @v } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v end { @u    = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -v end { @u[2] = @v } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                    text="2", type=strnum_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.

mlr put -v end { @u[2] = @v[1] } /dev/null
AST ROOT:
text="list", type=statement_list:
    text="end", type=end:
        text="list", type=statement_list:
            text="=", type=oosvar_assignment:
                text="oosvar_keylist", type=oosvar_keylist:
                    text="u", type=string_literal.
                    text="2", type=strnum_literal.
                text="oosvar_keylist", type=oosvar_keylist:
                    text="v", type=string_literal.
                    text="1", type=strnum_literal.

mlr put -q @s    += $i; @t=@s;             end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": 55,
  "t": 55
}
s=55
t=55

mlr put -q @s[1] += $i; @t=@s;             end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": {
    "1": 55
  }
}
s:1=55
t:1=55

mlr put -q @s[1] += $i; @t=@s[1];          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": 55
}
s:1=55
t=55

mlr put -q @s[1] += $i; @t[3]=@s;          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": {
    "3": {
      "1": 55
    }
  }
}
s:1=55
t:3:1=55

mlr put -q @s[1] += $i; @t[3]=@s[1];       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": 55
  },
  "t": {
    "3": 55
  }
}
s:1=55
t:3=55

mlr put -q @s[1][2] += $i; @t=@s;             end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "1": {
      "2": 55
    }
  }
}
s:1:2=55
t:1:2=55

mlr put -q @s[1][2] += $i; @t=@s[1];          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "2": 55
  }
}
s:1:2=55
t:2=55

mlr put -q @s[1][2] += $i; @t=@s[1][2];       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": 55
}
s:1:2=55
t=55

mlr put -q @s[1][2] += $i; @t[3]=@s;          end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "1": {
        "2": 55
      }
    }
  }
}
s:1:2=55
t:3:1:2=55

mlr put -q @s[1][2] += $i; @t[3]=@s[1];       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "2": 55
    }
  }
}
s:1:2=55
t:3:2=55

mlr put -q @s[1][2] += $i; @t[3]=@s[1][2];    end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": 55
  }
}
s:1:2=55
t:3=55

mlr put -q @s[1][2] += $i; @t[3][4]=@s;       end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "4": {
        "1": {
          "2": 55
        }
      }
    }
  }
}
s:1:2=55
t:3:4:1:2=55

mlr put -q @s[1][2] += $i; @t[3][4]=@s[1];    end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "4": {
        "2": 55
      }
    }
  }
}
s:1:2=55
t:3:4:2=55

mlr put -q @s[1][2] += $i; @t[3][4]=@s[1][2]; end{dump; emitp@s; emitp @t} ./reg_test/input/abixy
{
  "s": {
    "1": {
      "2": 55
    }
  },
  "t": {
    "3": {
      "4": 55
    }
  }
}
s:1:2=55
t:3:4=55

mlr --opprint put -q @s[NR][NR] = $i/100; @t[NR*10]=@s; end{emitp@s,"A","B"; emitp @t,"C","D","E"} ./reg_test/input/abixy
A  B  s
1  1  0.010000
2  2  0.020000
3  3  0.030000
4  4  0.040000
5  5  0.050000
6  6  0.060000
7  7  0.070000
8  8  0.080000
9  9  0.090000
10 10 0.100000

C   D  E  t
10  1  1  0.010000
20  1  1  0.010000
20  2  2  0.020000
30  1  1  0.010000
30  2  2  0.020000
30  3  3  0.030000
40  1  1  0.010000
40  2  2  0.020000
40  3  3  0.030000
40  4  4  0.040000
50  1  1  0.010000
50  2  2  0.020000
50  3  3  0.030000
50  4  4  0.040000
50  5  5  0.050000
60  1  1  0.010000
60  2  2  0.020000
60  3  3  0.030000
60  4  4  0.040000
60  5  5  0.050000
60  6  6  0.060000
70  1  1  0.010000
70  2  2  0.020000
70  3  3  0.030000
70  4  4  0.040000
70  5  5  0.050000
70  6  6  0.060000
70  7  7  0.070000
80  1  1  0.010000
80  2  2  0.020000
80  3  3  0.030000
80  4  4  0.040000
80  5  5  0.050000
80  6  6  0.060000
80  7  7  0.070000
80  8  8  0.080000
90  1  1  0.010000
90  2  2  0.020000
90  3  3  0.030000
90  4  4  0.040000
90  5  5  0.050000
90  6  6  0.060000
90  7  7  0.070000
90  8  8  0.080000
90  9  9  0.090000
100 1  1  0.010000
100 2  2  0.020000
100 3  3  0.030000
100 4  4  0.040000
100 5  5  0.050000
100 6  6  0.060000
100 7  7  0.070000
100 8  8  0.080000
100 9  9  0.090000
100 10 10 0.100000


================================================================
CHAINING

mlr cat then cat ./reg_test/input/short
a=1
b=2
c=3

mlr cat then tac ./reg_test/input/short
c=3
b=2
a=1

mlr tac then cat ./reg_test/input/short
c=3
b=2
a=1

mlr tac then tac ./reg_test/input/short
a=1
b=2
c=3

mlr cat then cat then cat ./reg_test/input/short
a=1
b=2
c=3

mlr cat then cat then tac ./reg_test/input/short
c=3
b=2
a=1

mlr cat then tac then cat ./reg_test/input/short
c=3
b=2
a=1

mlr cat then tac then tac ./reg_test/input/short
a=1
b=2
c=3

mlr tac then cat then cat ./reg_test/input/short
c=3
b=2
a=1

mlr tac then cat then tac ./reg_test/input/short
a=1
b=2
c=3

mlr tac then tac then cat ./reg_test/input/short
a=1
b=2
c=3

mlr tac then tac then tac ./reg_test/input/short
c=3
b=2
a=1


================================================================
NUMBER FORMATTING

mlr --opprint stats1 -a sum -f x ./reg_test/input/ofmt.dat
x_sum
6

mlr --ofmt %.3lf --opprint stats1 -a sum -f x ./reg_test/input/ofmt.dat
x_sum
6

mlr --opprint --ofmt %.3lf stats1 -a sum -f x ./reg_test/input/ofmt.dat
x_sum
6


================================================================
IMPLICIT-HEADER-CSV INPUT

mlr --irs crlf --no-mmap --icsvlite --ifs , --opprint cut -x -f b/ ./reg_test/input/multi-sep.csv
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --irs crlf --implicit-csv-header --no-mmap --icsvlite --ifs , --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv
1    3  4                     5
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --irs crlf --no-mmap --icsvlite --ifs /, --opprint cut -x -f b ./reg_test/input/multi-sep.csv
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --irs crlf --implicit-csv-header --no-mmap --icsvlite --ifs /, --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv
1   3 4                    5
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --irs crlf --mmap --icsvlite --ifs , --opprint cut -x -f b/ ./reg_test/input/multi-sep.csv
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --irs crlf --implicit-csv-header --mmap --icsvlite --ifs , --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv
1    3  4                     5
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --irs crlf --mmap --icsvlite --ifs /, --opprint cut -x -f b ./reg_test/input/multi-sep.csv
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --irs crlf --implicit-csv-header --mmap --icsvlite --ifs /, --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv
1   3 4                    5
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --icsv --ifs , --opprint cut -x -f b/ ./reg_test/input/multi-sep.csv
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --implicit-csv-header --icsv --ifs , --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv
1    3  4                     5
a/   i/ x/                    y/
wye/ 0/ 0.641593543645736508/ 0.262688053894177098
eks/ 1/ 0.827614412562742041/ 0.715431942006308552
zee/ 2/ 0.923068348748175560/ 0.009737410587136359
zee/ 3/ 0.000047786161325772/ 0.803142013402256216
zee/ 4/ 0.676537984365847889/ 0.573903236805416328

mlr --icsv --ifs /, --opprint cut -x -f b ./reg_test/input/multi-sep.csv
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328

mlr --implicit-csv-header --icsv --ifs /, --opprint cut -x -f 2 ./reg_test/input/multi-sep.csv
1   3 4                    5
a   i x                    y/
wye 0 0.641593543645736508 0.262688053894177098
eks 1 0.827614412562742041 0.715431942006308552
zee 2 0.923068348748175560 0.009737410587136359
zee 3 0.000047786161325772 0.803142013402256216
zee 4 0.676537984365847889 0.573903236805416328


================================================================
HET-CSV INPUT

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/b.csv
d=5,e=6,f=7

mlr --icsvlite --odkvp cat ./reg_test/input/c.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat ./reg_test/input/d.csv
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat ./reg_test/input/e.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/f.csv

mlr --icsvlite --odkvp cat ./reg_test/input/g.csv

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv ./reg_test/input/a.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/b.csv ./reg_test/input/b.csv
d=5,e=6,f=7
d=5,e=6,f=7

mlr --icsvlite --odkvp cat ./reg_test/input/c.csv ./reg_test/input/c.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat ./reg_test/input/d.csv ./reg_test/input/d.csv
h=3,i=4,j=5
m=8,n=9,o=10
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat ./reg_test/input/e.csv ./reg_test/input/e.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/f.csv ./reg_test/input/f.csv

mlr --icsvlite --odkvp cat ./reg_test/input/g.csv ./reg_test/input/g.csv

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv ./reg_test/input/b.csv
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7

mlr --icsvlite --odkvp cat ./reg_test/input/b.csv ./reg_test/input/c.csv
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --icsvlite --odkvp cat ./reg_test/input/c.csv ./reg_test/input/d.csv
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10

mlr --icsvlite --odkvp cat ./reg_test/input/d.csv ./reg_test/input/e.csv
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/e.csv ./reg_test/input/f.csv
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp cat ./reg_test/input/f.csv ./reg_test/input/g.csv

mlr --icsvlite --odkvp cat ./reg_test/input/a.csv ./reg_test/input/b.csv ./reg_test/input/c.csv ./reg_test/input/d.csv ./reg_test/input/e.csv ./reg_test/input/f.csv ./reg_test/input/g.csv
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --icsvlite --odkvp tac ./reg_test/input/het.csv
resource=/some/other/path,loadsec=0.97,ok=false
record_count=150,resource=/path/to/second/file
resource=/path/to/second/file,loadsec=0.32,ok=true
record_count=100,resource=/path/to/file
resource=/path/to/file,loadsec=0.45,ok=true

mlr --headerless-csv-output --csvlite tac ./reg_test/input/a.csv
4,5,6
1,2,3

mlr --headerless-csv-output --csvlite tac ./reg_test/input/c.csv
7,8,9
4,5,6
1,2,3

mlr --headerless-csv-output --csvlite tac ./reg_test/input/a.csv ./reg_test/input/c.csv
7,8,9
4,5,6
1,2,3
4,5,6
1,2,3

mlr --headerless-csv-output --csvlite tac ./reg_test/input/het.csv
/some/other/path,0.97,false

150,/path/to/second/file

/path/to/second/file,0.32,true

100,/path/to/file

/path/to/file,0.45,true

mlr --headerless-csv-output --csvlite group-like ./reg_test/input/het.csv
/path/to/file,0.45,true
/path/to/second/file,0.32,true
/some/other/path,0.97,false

100,/path/to/file
150,/path/to/second/file


================================================================
HET-PPRINT INPUT

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/b.pprint
d=5,e=6,f=7

mlr --ipprint --odkvp cat ./reg_test/input/c.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat ./reg_test/input/d.pprint
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat ./reg_test/input/e.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/f.pprint

mlr --ipprint --odkvp cat ./reg_test/input/g.pprint

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint ./reg_test/input/a.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/b.pprint ./reg_test/input/b.pprint
d=5,e=6,f=7
d=5,e=6,f=7

mlr --ipprint --odkvp cat ./reg_test/input/c.pprint ./reg_test/input/c.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat ./reg_test/input/d.pprint ./reg_test/input/d.pprint
h=3,i=4,j=5
m=8,n=9,o=10
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat ./reg_test/input/e.pprint ./reg_test/input/e.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/f.pprint ./reg_test/input/f.pprint

mlr --ipprint --odkvp cat ./reg_test/input/g.pprint ./reg_test/input/g.pprint

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint ./reg_test/input/b.pprint
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7

mlr --ipprint --odkvp cat ./reg_test/input/b.pprint ./reg_test/input/c.pprint
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9

mlr --ipprint --odkvp cat ./reg_test/input/c.pprint ./reg_test/input/d.pprint
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10

mlr --ipprint --odkvp cat ./reg_test/input/d.pprint ./reg_test/input/e.pprint
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/e.pprint ./reg_test/input/f.pprint
a=1,b=2,c=3
a=4,b=5,c=6

mlr --ipprint --odkvp cat ./reg_test/input/f.pprint ./reg_test/input/g.pprint

mlr --ipprint --odkvp cat ./reg_test/input/a.pprint ./reg_test/input/b.pprint ./reg_test/input/c.pprint ./reg_test/input/d.pprint ./reg_test/input/e.pprint ./reg_test/input/f.pprint ./reg_test/input/g.pprint
a=1,b=2,c=3
a=4,b=5,c=6
d=5,e=6,f=7
a=1,b=2,c=3
a=4,b=5,c=6
a=7,b=8,c=9
h=3,i=4,j=5
m=8,n=9,o=10
a=1,b=2,c=3
a=4,b=5,c=6


================================================================
NULL-FIELD INPUT

mlr --icsvlite --odkvp cat ./reg_test/input/null-fields.csv
a=1,b=2,c=3,d=4,e=5
a=6,b=,c=,d=,e=10
a=,b=,c=,d=11,e=12
a=13,b=14,c=,d=,e=
a=,b=,c=,d=,e=

mlr --inidx --ifs comma --odkvp cat ./reg_test/input/null-fields.nidx
1=a,2=b,3=c,4=d,5=e
1=f,2=,3=,4=,5=g
1=,2=,3=,4=h,5=i
1=j,2=k,3=,4=,5=
1=,2=,3=,4=,5=

mlr --idkvp --oxtab cat ./reg_test/input/missings.dkvp
a 1
b 2
c 3
d 4
e 5
f 6

1 a
b 
x 4
c 3
5 d
6 e
7 f

1 a
b 
x 4
c 3
5 d
6 e
f 6

mlr --oxtab stats1 -a sum,min,max,mode -f x ./reg_test/input/nullvals.dkvp
x_sum  9
x_min  1
x_max  5
x_mode 1

mlr --oxtab stats1 -a sum,min,max,mode -f y ./reg_test/input/nullvals.dkvp
y_sum  12
y_min  2
y_max  6
y_mode 2

mlr --oxtab stats1 -a sum,min,max,mode -f z ./reg_test/input/nullvals.dkvp
z_sum  0
z_min  
z_max  
z_mode 

mlr --oxtab stats1 -a sum,min,max,mode -f x,y,z ./reg_test/input/nullvals.dkvp
x_sum  9
x_min  1
x_max  5
x_mode 1
y_sum  12
y_min  2
y_max  6
y_mode 2
z_sum  0
z_min  
z_max  
z_mode 

mlr --oxtab stats1 -a sum,min,max,mode -f x -g a ./reg_test/input/nullvals.dkvp
a      b
x_sum  9
x_min  1
x_max  5
x_mode 1

mlr --oxtab stats1 -a sum,min,max,mode -f y -g a ./reg_test/input/nullvals.dkvp
a      b
y_sum  12
y_min  2
y_max  6
y_mode 2

mlr --oxtab stats1 -a sum,min,max,mode -f z -g a ./reg_test/input/nullvals.dkvp
a      b
z_sum  0
z_min  
z_max  
z_mode 

mlr --oxtab stats1 -a sum,min,max,mode -f x,y,z -g a ./reg_test/input/nullvals.dkvp
a      b
x_sum  9
x_min  1
x_max  5
x_mode 1
y_sum  12
y_min  2
y_max  6
y_mode 2
z_sum  0
z_min  
z_max  
z_mode 

mlr --opprint merge-fields -a sum,min,max,mode -f x,y,z -o xyz ./reg_test/input/nullvals.dkvp
a xyz_sum xyz_min xyz_max xyz_mode
b 3       1       2       1
b 7       3       4       3
b 5       5       5       5
b 6       6       6       6
b 0       -       -       -

mlr --opprint merge-fields -a sum,min,max,mode -r x,y,z -o xyz ./reg_test/input/nullvals.dkvp
a xyz_sum xyz_min xyz_max xyz_mode
b 3       1       2       1
b 7       3       4       3
b 5       5       5       5
b 6       6       6       6
b 0       -       -       -

mlr --opprint merge-fields -a sum,min,max,mode -c x,y,z ./reg_test/input/nullvals.dkvp
a _sum _min _max _mode
b 3    1    2    1
b 7    3    4    3
b 5    5    5    5
b 6    6    6    6
b 0    -    -    -

mlr --oxtab stats2 -a cov -f x,y ./reg_test/input/nullvals.dkvp
x_y_cov 2.000000

mlr --oxtab stats2 -a cov -f x,z ./reg_test/input/nullvals.dkvp

mlr --oxtab stats2 -a cov -f y,z ./reg_test/input/nullvals.dkvp

mlr --oxtab stats2 -a cov -f x,y -g a ./reg_test/input/nullvals.dkvp
a       b
x_y_cov 2.000000

mlr --oxtab stats2 -a cov -f x,z -g a ./reg_test/input/nullvals.dkvp
a b

mlr --oxtab stats2 -a cov -f y,z -g a ./reg_test/input/nullvals.dkvp
a b

mlr --opprint top -n 5 -f x ./reg_test/input/nullvals.dkvp
top_idx x_top
1       5
2       3
3       1
4       -
5       -

mlr --opprint top -n 5 -f y ./reg_test/input/nullvals.dkvp
top_idx y_top
1       6
2       4
3       2
4       -
5       -

mlr --opprint top -n 5 -f z ./reg_test/input/nullvals.dkvp
top_idx z_top
1       -
2       -
3       -
4       -
5       -

mlr --opprint top -n 5 -f x,y,z ./reg_test/input/nullvals.dkvp
top_idx x_top y_top z_top
1       5     6     -
2       3     4     -
3       1     2     -
4       -     -     -
5       -     -     -

mlr --opprint top -n 5 -f x -g a ./reg_test/input/nullvals.dkvp
a top_idx x_top
b 1       5
b 2       3
b 3       1
b 4       -
b 5       -

mlr --opprint top -n 5 -f y -g a ./reg_test/input/nullvals.dkvp
a top_idx y_top
b 1       6
b 2       4
b 3       2
b 4       -
b 5       -

mlr --opprint top -n 5 -f z -g a ./reg_test/input/nullvals.dkvp
a top_idx z_top
b 1       -
b 2       -
b 3       -
b 4       -
b 5       -

mlr --opprint top -n 5 -f x,y,z -g a ./reg_test/input/nullvals.dkvp
a top_idx x_top y_top z_top
b 1       5     6     -
b 2       3     4     -
b 3       1     2     -
b 4       -     -     -
b 5       -     -     -

mlr --opprint top -a -n 5 -f x ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f y ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f z ./reg_test/input/nullvals.dkvp

mlr --opprint top -a -n 5 -f x -g a ./reg_test/input/nullvals.dkvp
a x y z
b 5 - -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f y -g a ./reg_test/input/nullvals.dkvp
a x y z
b - 6 -
b 3 4 -
b 1 2 -

mlr --opprint top -a -n 5 -f z -g a ./reg_test/input/nullvals.dkvp

mlr --opprint step -a counter,rsum -f x ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum
b 1 2 - 1         1
b 3 4 - 2         4
b 5 - - 3         9
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f y ./reg_test/input/nullvals.dkvp
a x y z y_counter y_rsum
b 1 2 - 1         2
b 3 4 - 2         6
b 5 - - -         -
b - 6 - 3         12
b - - - -         -

mlr --opprint step -a counter,rsum -f z ./reg_test/input/nullvals.dkvp
a x y z z_counter z_rsum
b 1 2 - -         -
b 3 4 - -         -
b 5 - - -         -
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f x,y,z ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum y_counter y_rsum z_counter z_rsum
b 1 2 - 1         1      1         2      -         -
b 3 4 - 2         4      2         6      -         -
b 5 - - 3         9      -         -      -         -
b - 6 - -         -      3         12     -         -
b - - - -         -      -         -      -         -

mlr --opprint step -a counter,rsum -f x -g a ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum
b 1 2 - 1         1
b 3 4 - 2         4
b 5 - - 3         9
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f y -g a ./reg_test/input/nullvals.dkvp
a x y z y_counter y_rsum
b 1 2 - 1         2
b 3 4 - 2         6
b 5 - - -         -
b - 6 - 3         12
b - - - -         -

mlr --opprint step -a counter,rsum -f z -g a ./reg_test/input/nullvals.dkvp
a x y z z_counter z_rsum
b 1 2 - -         -
b 3 4 - -         -
b 5 - - -         -
b - 6 - -         -
b - - - -         -

mlr --opprint step -a counter,rsum -f x,y,z -g a ./reg_test/input/nullvals.dkvp
a x y z x_counter x_rsum y_counter y_rsum z_counter z_rsum
b 1 2 - 1         1      1         2      -         -
b 3 4 - 2         4      2         6      -         -
b 5 - - 3         9      -         -      -         -
b - 6 - -         -      3         12     -         -
b - - - -         -      -         -      -         -


================================================================
SPACE-PADDING

mlr --mmap --idkvp --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.dkvp
a=1,b=2
c=3

mlr --no-mmap --idkvp --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.dkvp
a=1,b=2
c=3

mlr --mmap --inidx --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.nidx
1=a,2=b,3=c
1=d,2=e,3=f

mlr --no-mmap --inidx --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.nidx
1=a,2=b,3=c
1=d,2=e,3=f

mlr --mmap --icsvlite --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.pprint
a=1,b=2,c=3

mlr --no-mmap --icsvlite --odkvp --ifs space --repifs cat ./reg_test/input/space-pad.pprint
a=1,b=2,c=3


================================================================
DOUBLE PS

mlr --no-mmap --opprint cat ./reg_test/input/double-ps.dkvp
a   b    c
pan wy.e 3
pan wy=e 3

mlr --mmap --opprint cat ./reg_test/input/double-ps.dkvp
a   b    c
pan wy.e 3
pan wy=e 3


================================================================
MISSING FINAL LF

mlr --no-mmap --csvlite cat ./reg_test/input/truncated.csv
a,b,c
1,2,3
4,5,6
7,8,9

mlr --csvlite cat ./reg_test/input/truncated.csv
a,b,c
1,2,3
4,5,6
7,8,9

mlr --no-mmap --dkvp cat ./reg_test/input/truncated.dkvp
a=1,b=2
c=3

mlr --dkvp cat ./reg_test/input/truncated.dkvp
a=1,b=2
c=3

mlr --no-mmap --nidx cat ./reg_test/input/truncated.nidx
1 2 3
4 5

mlr --nidx cat ./reg_test/input/truncated.nidx
1 2 3
4 5

mlr --no-mmap --pprint cat ./reg_test/input/truncated.pprint
a b c
1 2 3
4 5 6
7 8 9

mlr --pprint cat ./reg_test/input/truncated.pprint
a b c
1 2 3
4 5 6
7 8 9

mlr --no-mmap --xtab cat ./reg_test/input/truncated.xtab
a 1
b 2
c 3

d 4
e 5

mlr --xtab cat ./reg_test/input/truncated.xtab
a 1
b 2
c 3

d 4
e 5


================================================================
UTF-8 alignment

mlr --icsvlite --opprint cat ./reg_test/input/utf8-1.csv
langue   nom      jour
français françois vendredi

mlr --icsvlite --opprint cat ./reg_test/input/utf8-2.csv
français françois vendredi
langue   nom      jour

mlr --icsvlite --oxtab cat ./reg_test/input/utf8-1.csv
langue français
nom    françois
jour   vendredi

mlr --icsvlite --oxtab cat ./reg_test/input/utf8-2.csv
français langue
françois nom
vendredi jour

mlr --inidx --ifs space --opprint cat ./reg_test/input/utf8-align.nidx
1        2
191º     test
191      test2
francois français
françois francais

mlr --inidx --ifs space --opprint --right cat ./reg_test/input/utf8-align.nidx
       1        2
    191º     test
     191    test2
francois français
françois francais

mlr --oxtab cat ./reg_test/input/utf8-align.dkvp
191º test
1912 test2
cois çais
çois cais

191º test
1912 test2
ois  çais
çois cais

191º  test
1912  test2
coise çais
çois  cais

mlr --inidx --ifs space --oxtab --xvright cat ./reg_test/input/utf8-align.nidx
1 191º
2 test

1   191
2 test2

1 francois
2 français

1 françois
2 francais


================================================================
MMAP AT PAGE BOUNDARIES

mlr --dkvp tail -n 4 ./reg_test/input/page-aligned-final-ifs.dkvp
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=

mlr --dkvp tail -n 4 ./reg_test/input/page-aligned-final-irs.dkvp
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc

mlr --dkvp tail -n 4 ./reg_test/input/page-aligned-final-no-ifs.dkvp
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,3=z

mlr --dkvp tail -n 4 ./reg_test/input/page-aligned-no-final-irs.dkvp
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=cccccccccccccccccccccccccccccccccccccccccccccccc
x=aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,y=bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,z=ccccccccccccccccccccccccccccccccccccccccccccccccc

mlr --nidx tail -n 4 ./reg_test/input/page-aligned-no-final-irs.nidx
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,33333333333333333333333333333333333333333333

mlr --csvlite tail -n 4 ./reg_test/input/page-aligned-no-final-irs.csvl
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccccccccccccccccccccccccccccccccccccccccccc
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,33333333333333333333333333333333333333333333

mlr --csv --rs lf tail -n 4 ./reg_test/input/page-aligned-no-final-irs.csvl
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa,bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb,ccccccccccccccccccccccccccccccccccccccccccc
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,3333333333333333333333333333333333333333333
11111111111111111111111111111111111111,22222222222222222222222222222222222222222222,33333333333333333333333333333333333333333333

mlr --xtab tail -n 4 ./reg_test/input/page-aligned-no-final-eol.xtab
aaaaaaaaaaaaaaaaaaaa 111111111111111111111
bbbbbbbbbbbbbbbbbbbb 22222222222222222222
cccccccccccccccccccc 33333333333333333333

aaaaaaaaaaaaaaaaaaaa 111111111111111111111
bbbbbbbbbbbbbbbbbbbb 22222222222222222222
cccccccccccccccccccc 33333333333333333333

aaaaaaaaaaaaaaaaaaaa 111111111111111111111
bbbbbbbbbbbbbbbbbbbb 22222222222222222222
cccccccccccccccccccc 33333333333333333333

aaaaaaaaaaaaaaaaaaaa 111111111111111111111
bbbbbbbbbbbbbbbbbbbb 22222222222222222222
cccccccccccccccccccc 3333333333333333333333


================================================================
INT64 I/O

mlr --oxtab put $c=$a;$d=$b;$e=hexfmt($a);$f=hexfmt($b) ./reg_test/input/int64io.dkvp
a 0x1
b 1
c 1
d 1
e 0x1
f 0x1

a 0x7ffffffffffffffe
b 9223372036854775806
c 9223372036854775806
d 9223372036854775806
e 0x7ffffffffffffffe
f 0x7ffffffffffffffe

a 0x7fffffffffffffff
b 9223372036854775807
c 9223372036854775807
d 9223372036854775807
e 0x7fffffffffffffff
f 0x7fffffffffffffff

a 0x8000000000000000
b -9223372036854775808
c -9223372036854775808
d -9223372036854775808
e 0x8000000000000000
f 0x8000000000000000

a 0xffffffffffffffff
b -1
c -1
d -1
e 0xffffffffffffffff
f 0xffffffffffffffff

mlr --oxtab --ofmt %.8g put $p0=$p+0;$p1=$p+1;$p2=$p+2;$p3=$p+3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
p0 9223372036854774271
p1 9223372036854774272
p2 9223372036854774273
p3 9223372036854774274

p  0x7ffffffffffffa00
n  0x8000000000000001
p0 9223372036854774272
p1 9223372036854774273
p2 9223372036854774274
p3 9223372036854774275

p  0x7ffffffffffffbff
n  0x8000000000000200
p0 9223372036854774783
p1 9223372036854774784
p2 9223372036854774785
p3 9223372036854774786

p  0x7ffffffffffffc00
n  0x8000000000000400
p0 9223372036854774784
p1 9223372036854774785
p2 9223372036854774786
p3 9223372036854774787

p  0x7ffffffffffffe00
n  0x8000000000000401
p0 9223372036854775296
p1 9223372036854775297
p2 9223372036854775298
p3 9223372036854775299

p  0x7ffffffffffffffe
n  0x8000000000000600
p0 9223372036854775806
p1 9223372036854775807
p2 9.223372e+18
p3 9.223372e+18

p  0x7fffffffffffffff
n  0x8000000000000601
p0 9223372036854775807
p1 9.223372e+18
p2 9.223372e+18
p3 9.223372e+18

mlr --oxtab --ofmt %.8g put $p0=$p-0;$p1=$p-1;$p2=$p-2;$p3=$p-3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
p0 9223372036854774271
p1 9223372036854774270
p2 9223372036854774269
p3 9223372036854774268

p  0x7ffffffffffffa00
n  0x8000000000000001
p0 9223372036854774272
p1 9223372036854774271
p2 9223372036854774270
p3 9223372036854774269

p  0x7ffffffffffffbff
n  0x8000000000000200
p0 9223372036854774783
p1 9223372036854774782
p2 9223372036854774781
p3 9223372036854774780

p  0x7ffffffffffffc00
n  0x8000000000000400
p0 9223372036854774784
p1 9223372036854774783
p2 9223372036854774782
p3 9223372036854774781

p  0x7ffffffffffffe00
n  0x8000000000000401
p0 9223372036854775296
p1 9223372036854775295
p2 9223372036854775294
p3 9223372036854775293

p  0x7ffffffffffffffe
n  0x8000000000000600
p0 9223372036854775806
p1 9223372036854775805
p2 9223372036854775804
p3 9223372036854775803

p  0x7fffffffffffffff
n  0x8000000000000601
p0 9223372036854775807
p1 9223372036854775806
p2 9223372036854775805
p3 9223372036854775804

mlr --oxtab --ofmt %.8g put $p0=$p*0;$p1=$p*1;$p2=$p*2;$p3=$p*3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
p0 0
p1 9223372036854774271
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffa00
n  0x8000000000000001
p0 0
p1 9223372036854774272
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffbff
n  0x8000000000000200
p0 0
p1 9223372036854774783
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffc00
n  0x8000000000000400
p0 0
p1 9223372036854774784
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffe00
n  0x8000000000000401
p0 0
p1 9.223372e+18
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7ffffffffffffffe
n  0x8000000000000600
p0 0
p1 9.223372e+18
p2 1.8446744e+19
p3 2.7670116e+19

p  0x7fffffffffffffff
n  0x8000000000000601
p0 0
p1 9.223372e+18
p2 1.8446744e+19
p3 2.7670116e+19

mlr --oxtab --ofmt %.8g put $n0=$n+0;$n1=$n+1;$n2=$n+2;$n3=$n+3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
n0 -9223372036854775808
n1 -9223372036854775807
n2 -9223372036854775806
n3 -9223372036854775805

p  0x7ffffffffffffa00
n  0x8000000000000001
n0 -9223372036854775807
n1 -9223372036854775806
n2 -9223372036854775805
n3 -9223372036854775804

p  0x7ffffffffffffbff
n  0x8000000000000200
n0 -9223372036854775296
n1 -9223372036854775295
n2 -9223372036854775294
n3 -9223372036854775293

p  0x7ffffffffffffc00
n  0x8000000000000400
n0 -9223372036854774784
n1 -9223372036854774783
n2 -9223372036854774782
n3 -9223372036854774781

p  0x7ffffffffffffe00
n  0x8000000000000401
n0 -9223372036854774783
n1 -9223372036854774782
n2 -9223372036854774781
n3 -9223372036854774780

p  0x7ffffffffffffffe
n  0x8000000000000600
n0 -9223372036854774272
n1 -9223372036854774271
n2 -9223372036854774270
n3 -9223372036854774269

p  0x7fffffffffffffff
n  0x8000000000000601
n0 -9223372036854774271
n1 -9223372036854774270
n2 -9223372036854774269
n3 -9223372036854774268

mlr --oxtab --ofmt %.8g put $n0=$n-0;$n1=$n-1;$n2=$n-2;$n3=$n-3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
n0 -9223372036854775808
n1 -9.223372e+18
n2 -9.223372e+18
n3 -9.223372e+18

p  0x7ffffffffffffa00
n  0x8000000000000001
n0 -9223372036854775807
n1 -9223372036854775808
n2 -9.223372e+18
n3 -9.223372e+18

p  0x7ffffffffffffbff
n  0x8000000000000200
n0 -9223372036854775296
n1 -9223372036854775297
n2 -9223372036854775298
n3 -9223372036854775299

p  0x7ffffffffffffc00
n  0x8000000000000400
n0 -9223372036854774784
n1 -9223372036854774785
n2 -9223372036854774786
n3 -9223372036854774787

p  0x7ffffffffffffe00
n  0x8000000000000401
n0 -9223372036854774783
n1 -9223372036854774784
n2 -9223372036854774785
n3 -9223372036854774786

p  0x7ffffffffffffffe
n  0x8000000000000600
n0 -9223372036854774272
n1 -9223372036854774273
n2 -9223372036854774274
n3 -9223372036854774275

p  0x7fffffffffffffff
n  0x8000000000000601
n0 -9223372036854774271
n1 -9223372036854774272
n2 -9223372036854774273
n3 -9223372036854774274

mlr --oxtab --ofmt %.8g put $n0=$n*0;$n1=$n*1;$n2=$n*2;$n3=$n*3 ./reg_test/input/int64arith.dkvp
p  0x7ffffffffffff9ff
n  0x8000000000000000
n0 0
n1 -9.223372e+18
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffa00
n  0x8000000000000001
n0 0
n1 -9.223372e+18
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffbff
n  0x8000000000000200
n0 0
n1 -9.223372e+18
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffc00
n  0x8000000000000400
n0 0
n1 -9223372036854774784
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffe00
n  0x8000000000000401
n0 0
n1 -9223372036854774783
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7ffffffffffffffe
n  0x8000000000000600
n0 0
n1 -9223372036854774272
n2 -1.8446744e+19
n3 -2.7670116e+19

p  0x7fffffffffffffff
n  0x8000000000000601
n0 0
n1 -9223372036854774271
n2 -1.8446744e+19
n3 -2.7670116e+19


================================================================
COMPRESSED INPUT

mlr --csv --prepipe cat cat ./reg_test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
x,y"yy,z

mlr --dkvp --prepipe cat cat ./reg_test/input/abixy
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864

mlr --csv --prepipe cat cat
a,b,c
1,x,3
4,5,6
x,y"yy,z

mlr --dkvp --prepipe cat cat
a=pan,b=pan,i=1,x=0.3467901443380824,y=0.7268028627434533
a=eks,b=pan,i=2,x=0.7586799647899636,y=0.5221511083334797
a=wye,b=wye,i=3,x=0.20460330576630303,y=0.33831852551664776
a=eks,b=wye,i=4,x=0.38139939387114097,y=0.13418874328430463
a=wye,b=pan,i=5,x=0.5732889198020006,y=0.8636244699032729
a=zee,b=pan,i=6,x=0.5271261600918548,y=0.49322128674835697
a=eks,b=zee,i=7,x=0.6117840605678454,y=0.1878849191181694
a=zee,b=wye,i=8,x=0.5985540091064224,y=0.976181385699006
a=hat,b=wye,i=9,x=0.03144187646093577,y=0.7495507603507059
a=pan,b=wye,i=10,x=0.5026260055412137,y=0.9526183602969864


================================================================
STDIN

mlr --csv cat
a,b,c
1,x,3
4,5,6
x,y"yy,z


================================================================
RFC-CSV

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
x,y"yy,z

mlr --mmap --csv cat ./reg_test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
x,y"yy,z

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/simple-truncated.csv
a,b,c
1,x,3
4,5,6

mlr --mmap --csv cat ./reg_test/input/rfc-csv/simple-truncated.csv
a,b,c
1,x,3
4,5,6

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/narrow.csv
a
1
2
3
4

mlr --mmap --csv cat ./reg_test/input/rfc-csv/narrow.csv
a
1
2
3
4

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/narrow-truncated.csv
a
1
2
3
4

mlr --mmap --csv cat ./reg_test/input/rfc-csv/narrow-truncated.csv
a
1
2
3
4

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/quoted-comma.csv
a,b,c
1,"x,3",y
4,5,6

mlr --mmap --csv cat ./reg_test/input/rfc-csv/quoted-comma.csv
a,b,c
1,"x,3",y
4,5,6

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/quoted-comma-truncated.csv
a,b,c
1,"x,3",y
4,5,6

mlr --mmap --csv cat ./reg_test/input/rfc-csv/quoted-comma-truncated.csv
a,b,c
1,"x,3",y
4,5,6

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/quoted-crlf.csv
a,b,c
1,"x
3",y
4,5,6

mlr --mmap --csv cat ./reg_test/input/rfc-csv/quoted-crlf.csv
a,b,c
1,"x
3",y
4,5,6

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/quoted-crlf-truncated.csv
a,b,c
1,"x
3",y
4,5,6

mlr --mmap --csv cat ./reg_test/input/rfc-csv/quoted-crlf-truncated.csv
a,b,c
1,"x
3",y
4,5,6

mlr --no-mmap --csv cat ./reg_test/input/rfc-csv/simple-truncated.csv ./reg_test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
1,x,3
4,5,6
x,y"yy,z

mlr --mmap --csv cat ./reg_test/input/rfc-csv/simple-truncated.csv ./reg_test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
1,x,3
4,5,6
x,y"yy,z

mlr --no-mmap --csv --ifs semicolon --ofs pipe --irs lf --ors lflf cut -x -f b ./reg_test/input/rfc-csv/modify-defaults.csv
a|c

1|3

4|6


mlr --mmap --csv --ifs semicolon --ofs pipe --irs lf --ors lflf cut -x -f b ./reg_test/input/rfc-csv/modify-defaults.csv
a|c

1|3

4|6


mlr --no-mmap --csv --rs lf --quote-original cut -o -f c,b,a ./reg_test/input/quote-original.csv
c,b,a
3,2,1
6,"5",4
"9",8,"7"

mlr --mmap --csv --rs lf --quote-original cut -o -f c,b,a ./reg_test/input/quote-original.csv
c,b,a
3,2,1
6,"5",4
"9",8,"7"

mlr --csv --quote-all cat ./reg_test/input/rfc-csv/simple.csv
"a","b","c"
"1","x","3"
"4","5","6"
"x","y""yy","z"

mlr --csv --quote-original cat ./reg_test/input/rfc-csv/simple.csv
a,b,c
1,x,3
4,5,6
"x","y""yy","z"

mlr --itsv --rs lf --oxtab cat ./reg_test/input/simple.tsv
a pan
b pan
i 1
x 2
y 0.989945

a eks
b pan
i 2
x 1
y 0.775159

a wye
b wye
i 3
x 1
y 0.761642

a eks
b wye
i 4
x 5
y 0.322934

a wye
b pan
i 5
x 5
y 0.448283


================================================================
MARKDOWN OUTPUT

mlr --itsv --rs lf --omd cat ./reg_test/input/simple.tsv
| a | b | i | x | y |
| --- | --- | --- | --- | --- |
| pan | pan | 1 | 2 | 0.989945 |
| eks | pan | 2 | 1 | 0.775159 |
| wye | wye | 3 | 1 | 0.761642 |
| eks | wye | 4 | 5 | 0.322934 |
| wye | pan | 5 | 5 | 0.448283 |


================================================================
CSV/RS ENVIRONMENT DEFAULTS

mlr --csv cut -f a ./reg_test/input/rfc-csv/simple.csv
a
1
4
x

mlr --csv --rs crlf cut -f a ./reg_test/input/rfc-csv/simple.csv
a
1
4
x

mlr --csv --rs lf cut -f a ./reg_test/input/rfc-csv/simple.csv
mlr: unmatched double quote at line  3.
a
1
4

mlr --csv cut -f a ./reg_test/input/rfc-csv/simple.csv
mlr: unmatched double quote at line  3.
a
1
4

mlr --csv --rs crlf cut -f a ./reg_test/input/rfc-csv/simple.csv
a
1
4
x

mlr --csv --rs lf cut -f a ./reg_test/input/rfc-csv/simple.csv
mlr: unmatched double quote at line  3.
a
1
4

mlr --csv cut -f a ./reg_test/input/rfc-csv/simple.csv
a
1
4
x

mlr --csv --rs crlf cut -f a ./reg_test/input/rfc-csv/simple.csv
a
1
4
x

mlr --csv --rs lf cut -f a ./reg_test/input/rfc-csv/simple.csv
mlr: unmatched double quote at line  3.
a
1
4


================================================================
MULTI-CHARACTER IRS/IFS/IPS FOR DKVP

mlr --oxtab --idkvp --mmap --irs lf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --mmap --irs lf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --idkvp --mmap --irs crlf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --mmap --irs crlf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --no-mmap --irs lf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --no-mmap --irs lf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --no-mmap --irs crlf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --no-mmap --irs crlf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
MULTI-CHARACTER IRS/IFS FOR NIDX

mlr --oxtab --inidx --mmap --irs lf --ifs , cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --mmap --irs lf --ifs /, cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --mmap --irs crlf --ifs , cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --mmap --irs crlf --ifs /, cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --no-mmap --irs lf --ifs , cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --no-mmap --irs lf --ifs /, cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4

mlr --oxtab --inidx --no-mmap --irs crlf --ifs , cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508/
1 a=:wye/
3 i=:0/

4 x=:0.827614412562742041/
1 a=:eks/
3 i=:1/

4 x=:0.923068348748175560/
1 a=:zee/
3 i=:2/

4 x=:0.000047786161325772/
1 a=:zee/
3 i=:3/

4 x=:0.676537984365847889/
1 a=:zee/
3 i=:4/

mlr --oxtab --inidx --no-mmap --irs crlf --ifs /, cut -o -f 4,1,3 ./reg_test/input/multi-sep.dkvp
4 x=:0.641593543645736508
1 a=:wye
3 i=:0

4 x=:0.827614412562742041
1 a=:eks
3 i=:1

4 x=:0.923068348748175560
1 a=:zee
3 i=:2

4 x=:0.000047786161325772
1 a=:zee
3 i=:3

4 x=:0.676537984365847889
1 a=:zee
3 i=:4


================================================================
MULTI-CHARACTER IRS/IFS FOR CSVLITE

mlr --oxtab --icsvlite --mmap --irs lf --ifs , cut -o -f x/,a/,i/ ./reg_test/input/multi-sep.csv
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --mmap --irs lf --ifs /, cut -o -f x,a,i ./reg_test/input/multi-sep.csv
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --mmap --irs crlf --ifs , cut -o -f x/,a/,i/ ./reg_test/input/multi-sep.csv
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --mmap --irs crlf --ifs /, cut -o -f x,a,i ./reg_test/input/multi-sep.csv
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --no-mmap --irs lf --ifs , cut -o -f x/,a/,i/ ./reg_test/input/multi-sep.csv
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --no-mmap --irs lf --ifs /, cut -o -f x,a,i ./reg_test/input/multi-sep.csv
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4

mlr --oxtab --icsvlite --no-mmap --irs crlf --ifs , cut -o -f x/,a/,i/ ./reg_test/input/multi-sep.csv
x/ 0.641593543645736508/
a/ wye/
i/ 0/

x/ 0.827614412562742041/
a/ eks/
i/ 1/

x/ 0.923068348748175560/
a/ zee/
i/ 2/

x/ 0.000047786161325772/
a/ zee/
i/ 3/

x/ 0.676537984365847889/
a/ zee/
i/ 4/

mlr --oxtab --icsvlite --no-mmap --irs crlf --ifs /, cut -o -f x,a,i ./reg_test/input/multi-sep.csv
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
MULTI-CHARACTER SEPARATORS FOR XTAB

mlr --mmap --xtab --ifs crlf --ofs Z cut -x -f b ./reg_test/input/truncated.xtab-crlf
a 1Zc 3ZZd 4Ze 5Z
mlr --no-mmap --xtab --ifs crlf --ofs Z cut -x -f b ./reg_test/input/truncated.xtab-crlf
a 1Zc 3ZZd 4Ze 5Z
mlr --mmap --xtab --ips . --ops @ cut -x -f b ./reg_test/input/dots.xtab
a@1
c@345

defg@6
hi@@@78

mlr --no-mmap --xtab --ips . --ops @ cut -x -f b ./reg_test/input/dots.xtab
a@1
c@345

defg@6
hi@@@78

mlr --no-mmap --xtab --ips . --ops := cut -x -f b ./reg_test/input/dots.xtab
a:=1
c:=345

defg:=6
hi:=78

mlr --xtab --ips :  --ops @@@@ put $sum=int($a+$b) ./reg_test/input/multi-ips.dkvp
a@@@@1
b@@@@2
sum@@@@3


================================================================
MULTI-CHARACTER IRS FOR PPRINT

mlr --mmap --pprint --irs crlf --ifs / --ofs @ cut -x -f b ./reg_test/input/dots.pprint
a@@@i@@x@@@@@@@@@@@@@@@@@@@y
pan@1@@0.3467901443380824@@0.7268028627434533
eks@2@@0.7586799647899636@@0.5221511083334797
wye@3@@0.20460330576630303@0.33831852551664776
eks@4@@0.38139939387114097@0.13418874328430463
wye@5@@0.5732889198020006@@0.8636244699032729
zee@6@@0.5271261600918548@@0.49322128674835697
eks@7@@0.6117840605678454@@0.1878849191181694
zee@8@@0.5985540091064224@@0.976181385699006
hat@9@@0.03144187646093577@0.7495507603507059
pan@10@0.5026260055412137@@0.9526183602969864

mlr --no-mmap --pprint --irs crlf --ifs / --ofs @ cut -x -f b ./reg_test/input/dots.pprint
a@@@i@@x@@@@@@@@@@@@@@@@@@@y
pan@1@@0.3467901443380824@@0.7268028627434533
eks@2@@0.7586799647899636@@0.5221511083334797
wye@3@@0.20460330576630303@0.33831852551664776
eks@4@@0.38139939387114097@0.13418874328430463
wye@5@@0.5732889198020006@@0.8636244699032729
zee@6@@0.5271261600918548@@0.49322128674835697
eks@7@@0.6117840605678454@@0.1878849191181694
zee@8@@0.5985540091064224@@0.976181385699006
hat@9@@0.03144187646093577@0.7495507603507059
pan@10@0.5026260055412137@@0.9526183602969864


================================================================
MULTI-CHARACTER IXS SPECIFIERS

mlr --oxtab --idkvp --mmap --irs lf --ifs , --ips = cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x :0.641593543645736508/
a :wye/
i :0/

x :0.827614412562742041/
a :eks/
i :1/

x :0.923068348748175560/
a :zee/
i :2/

x :0.000047786161325772/
a :zee/
i :3/

x :0.676537984365847889/
a :zee/
i :4/

mlr --oxtab --idkvp --mmap --irs lf --ifs /, --ips =: cut -o -f x,a,i ./reg_test/input/multi-sep.dkvp
x 0.641593543645736508
a wye
i 0

x 0.827614412562742041
a eks
i 1

x 0.923068348748175560
a zee
i 2

x 0.000047786161325772
a zee
i 3

x 0.676537984365847889
a zee
i 4


================================================================
JSON I/O

mlr --ijson --opprint cat ./reg_test/input/small-non-nested.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --ijson --opprint cat ./reg_test/input/small-non-nested-wrapped.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --ijson --oxtab cat ./reg_test/input/small-nested.json
z:pan:1 0.726803
z:pan:0 0.952618
z:eks:0 0.134189
z:eks:1 0.187885
z:wye:1 0.863624
z:zee:0 0.976181
z:hat:1 0.749551

mlr --ojson cat ./reg_test/input/json-output-options.dkvp
{ "a": 1, "b": "x", "c": 3 }
{ "d": 4 }
{ "e": 5, "f": 6 }

mlr --ojson --jvstack cat ./reg_test/input/json-output-options.dkvp
{
  "a": 1,
  "b": "x",
  "c": 3
}
{
  "d": 4
}
{
  "e": 5,
  "f": 6
}

mlr --ojson --jlistwrap cat ./reg_test/input/json-output-options.dkvp
[
{ "a": 1, "b": "x", "c": 3 }
,{ "d": 4 }
,{ "e": 5, "f": 6 }
]

mlr --ojson --jvstack --jlistwrap cat ./reg_test/input/json-output-options.dkvp
[
{
  "a": 1,
  "b": "x",
  "c": 3
}
,{
  "d": 4
}
,{
  "e": 5,
  "f": 6
}
]

mlr --ojson --jquoteall cat ./reg_test/input/json-output-options.dkvp
{ "a": "1", "b": "x", "c": "3" }
{ "d": "4" }
{ "e": "5", "f": "6" }

mlr --ojson --jvstack --jquoteall cat ./reg_test/input/json-output-options.dkvp
{
  "a": "1",
  "b": "x",
  "c": "3"
}
{
  "d": "4"
}
{
  "e": "5",
  "f": "6"
}

mlr --ojson --jlistwrap --jquoteall cat ./reg_test/input/json-output-options.dkvp
[
{ "a": "1", "b": "x", "c": "3" }
,{ "d": "4" }
,{ "e": "5", "f": "6" }
]

mlr --ojson --jvstack --jlistwrap --jquoteall cat ./reg_test/input/json-output-options.dkvp
[
{
  "a": "1",
  "b": "x",
  "c": "3"
}
,{
  "d": "4"
}
,{
  "e": "5",
  "f": "6"
}
]

mlr --ijson --opprint cat ./reg_test/input/small-non-nested-wrapped.json ./reg_test/input/small-non-nested-wrapped.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

mlr --no-mmap --ijson --opprint cat ./reg_test/input/small-non-nested-wrapped.json ./reg_test/input/small-non-nested-wrapped.json
a   b   i  x                   y
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864
pan pan 1  0.3467901443380824  0.7268028627434533
eks pan 2  0.7586799647899636  0.5221511083334797
wye wye 3  0.20460330576630303 0.33831852551664776
eks wye 4  0.38139939387114097 0.13418874328430463
wye pan 5  0.5732889198020006  0.8636244699032729
zee pan 6  0.5271261600918548  0.49322128674835697
eks zee 7  0.6117840605678454  0.1878849191181694
zee wye 8  0.5985540091064224  0.976181385699006
hat wye 9  0.03144187646093577 0.7495507603507059
pan wye 10 0.5026260055412137  0.9526183602969864

