summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorKim Kibum <kb0929.kim@samsung.com>2012-05-21 17:42:43 +0900
committerKim Kibum <kb0929.kim@samsung.com>2012-05-21 17:42:43 +0900
commit4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d (patch)
tree5431ff1d419d4ee35f8bd3cb3ebd5e334c2a737e /test
parentc22a3ed09b982b93feb23655eba7b55fa27885cb (diff)
downloadgawk-4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d.tar.gz
gawk-4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d.tar.bz2
gawk-4a2c24a45b7af1aa715eae442c7ef3d91e7dde6d.zip
Upload Tizen:Base source
Diffstat (limited to 'test')
-rw-r--r--test/ChangeLog1145
-rwxr-xr-xtest/Gentests92
-rw-r--r--test/Makefile.am1005
-rw-r--r--test/Makefile.in2249
-rw-r--r--test/Maketests943
-rw-r--r--test/README18
-rw-r--r--test/addcomma.awk15
-rw-r--r--test/addcomma.in7
-rw-r--r--test/addcomma.ok7
-rw-r--r--test/anchgsub.awk1
-rw-r--r--test/anchgsub.in1
-rw-r--r--test/anchgsub.ok1
-rw-r--r--test/argarray.awk14
-rw-r--r--test/argarray.in1
-rw-r--r--test/argarray.ok9
-rw-r--r--test/argtest.awk4
-rw-r--r--test/argtest.ok4
-rw-r--r--test/arrayparm.awk21
-rw-r--r--test/arrayparm.ok2
-rw-r--r--test/arrayprm2.awk67
-rw-r--r--test/arrayprm2.ok0
-rw-r--r--test/arrayprm3.awk56
-rw-r--r--test/arrayprm3.ok1
-rw-r--r--test/arrayref.awk13
-rw-r--r--test/arrayref.ok2
-rw-r--r--test/arrymem1.awk81
-rw-r--r--test/arrymem1.ok2
-rw-r--r--test/arryref2.awk18
-rw-r--r--test/arryref2.ok3
-rw-r--r--test/arryref3.awk18
-rw-r--r--test/arryref3.ok2
-rw-r--r--test/arryref4.awk17
-rw-r--r--test/arryref4.ok2
-rw-r--r--test/arryref5.awk17
-rw-r--r--test/arryref5.ok2
-rw-r--r--test/arynasty.awk16
-rw-r--r--test/arynasty.ok1
-rw-r--r--test/arynocls.awk95
-rw-r--r--test/arynocls.in30
-rw-r--r--test/arynocls.ok0
-rw-r--r--test/aryprm1.awk9
-rw-r--r--test/aryprm1.ok2
-rw-r--r--test/aryprm2.awk8
-rw-r--r--test/aryprm2.ok2
-rw-r--r--test/aryprm3.awk10
-rw-r--r--test/aryprm3.ok2
-rw-r--r--test/aryprm4.awk7
-rw-r--r--test/aryprm4.ok2
-rw-r--r--test/aryprm5.awk6
-rw-r--r--test/aryprm5.ok2
-rw-r--r--test/aryprm6.awk7
-rw-r--r--test/aryprm6.ok2
-rw-r--r--test/aryprm7.awk6
-rw-r--r--test/aryprm7.ok2
-rw-r--r--test/aryprm8.awk22
-rw-r--r--test/aryprm8.ok2
-rw-r--r--test/arysubnm.awk1
-rw-r--r--test/arysubnm.ok1
-rw-r--r--test/asgext.awk1
-rw-r--r--test/asgext.in3
-rw-r--r--test/asgext.ok6
-rw-r--r--test/asort.awk25
-rw-r--r--test/asort.ok18
-rw-r--r--test/asorti.awk27
-rw-r--r--test/asorti.ok18
-rw-r--r--test/awkpath.ok1
-rw-r--r--test/back89.awk1
-rw-r--r--test/back89.in2
-rw-r--r--test/back89.ok1
-rw-r--r--test/backgsub.awk4
-rw-r--r--test/backgsub.in1
-rw-r--r--test/backgsub.ok1
-rw-r--r--test/backw.awk1
-rw-r--r--test/backw.in3
-rw-r--r--test/backw.ok3
-rw-r--r--test/badargs.ok35
-rw-r--r--test/childin.awk1
-rw-r--r--test/childin.in1
-rw-r--r--test/childin.ok1
-rw-r--r--test/clobber.awk98
-rw-r--r--test/clobber.ok1
-rw-r--r--test/clos1way.awk21
-rw-r--r--test/clos1way.ok26
-rw-r--r--test/clsflnam.awk12
-rw-r--r--test/clsflnam.in3
-rw-r--r--test/clsflnam.ok1
-rw-r--r--test/compare.awk13
-rw-r--r--test/compare.in4
-rw-r--r--test/compare.ok5
-rw-r--r--test/compare2.awk165
-rw-r--r--test/compare2.ok1
-rw-r--r--test/concat1.awk78
-rw-r--r--test/concat1.in4
-rw-r--r--test/concat1.ok4
-rw-r--r--test/concat2.awk8
-rw-r--r--test/concat2.ok12
-rw-r--r--test/concat3.awk1
-rw-r--r--test/concat3.ok2
-rw-r--r--test/convfmt.awk10
-rw-r--r--test/convfmt.ok3
-rw-r--r--test/datanonl.awk3
-rw-r--r--test/datanonl.in1
-rw-r--r--test/datanonl.ok1
-rw-r--r--test/defref.awk1
-rw-r--r--test/defref.ok3
-rw-r--r--test/delarpm2.awk95
-rw-r--r--test/delarpm2.ok2
-rw-r--r--test/delarprm.awk50
-rw-r--r--test/delarprm.ok0
-rw-r--r--test/delfunc.awk7
-rw-r--r--test/delfunc.ok2
-rw-r--r--test/dynlj.awk1
-rw-r--r--test/dynlj.ok1
-rw-r--r--test/eofsplit.awk68
-rw-r--r--test/eofsplit.ok0
-rw-r--r--test/exitval1.awk3
-rw-r--r--test/exitval1.ok1
-rw-r--r--test/exitval2.awk3
-rw-r--r--test/exitval2.ok1
-rw-r--r--test/fflush.ok16
-rwxr-xr-xtest/fflush.sh16
-rw-r--r--test/fieldwdth.awk2
-rw-r--r--test/fieldwdth.in1
-rw-r--r--test/fieldwdth.ok1
-rw-r--r--test/fldchg.awk8
-rw-r--r--test/fldchg.in1
-rw-r--r--test/fldchg.ok3
-rw-r--r--test/fldchgnf.awk1
-rw-r--r--test/fldchgnf.in1
-rw-r--r--test/fldchgnf.ok2
-rw-r--r--test/fmttest.awk164
-rw-r--r--test/fmttest.ok120
-rw-r--r--test/fnamedat.awk1
-rw-r--r--test/fnamedat.in1
-rw-r--r--test/fnamedat.ok2
-rw-r--r--test/fnarray.awk7
-rw-r--r--test/fnarray.ok3
-rw-r--r--test/fnarray2.awk5
-rw-r--r--test/fnarray2.ok3
-rw-r--r--test/fnarydel.awk60
-rw-r--r--test/fnarydel.ok27
-rw-r--r--test/fnaryscl.awk10
-rw-r--r--test/fnaryscl.ok2
-rw-r--r--test/fnasgnm.awk14
-rw-r--r--test/fnasgnm.in1
-rw-r--r--test/fnasgnm.ok2
-rw-r--r--test/fnmisc.awk13
-rw-r--r--test/fnmisc.ok3
-rw-r--r--test/fnparydl.awk31
-rw-r--r--test/fnparydl.ok10
-rw-r--r--test/fordel.awk65
-rw-r--r--test/fordel.ok0
-rw-r--r--test/forsimp.awk1
-rw-r--r--test/forsimp.ok1
-rw-r--r--test/fsbs.awk2
-rw-r--r--test/fsbs.in1
-rw-r--r--test/fsbs.ok1
-rw-r--r--test/fsfwfs.awk1
-rw-r--r--test/fsfwfs.in16
-rw-r--r--test/fsfwfs.ok16
-rw-r--r--test/fsrs.awk8
-rw-r--r--test/fsrs.in7
-rw-r--r--test/fsrs.ok5
-rw-r--r--test/fsspcoln.awk41
-rw-r--r--test/fsspcoln.in1
-rw-r--r--test/fsspcoln.ok1
-rw-r--r--test/fstabplus.awk2
-rw-r--r--test/fstabplus.in1
-rw-r--r--test/fstabplus.ok1
-rw-r--r--test/funsemnl.awk3
-rw-r--r--test/funsemnl.ok1
-rw-r--r--test/funsmnam.awk6
-rw-r--r--test/funsmnam.ok2
-rw-r--r--test/funstack.awk977
-rw-r--r--test/funstack.in206
-rw-r--r--test/funstack.ok0
-rw-r--r--test/gensub.awk7
-rw-r--r--test/gensub.in2
-rw-r--r--test/gensub.ok4
-rw-r--r--test/gensub2.awk5
-rw-r--r--test/gensub2.ok3
-rw-r--r--test/getline.awk29
-rw-r--r--test/getline.in3
-rw-r--r--test/getline.ok7
-rw-r--r--test/getline2.awk1
-rw-r--r--test/getline2.ok2
-rw-r--r--test/getline3.awk7
-rw-r--r--test/getline3.ok1
-rw-r--r--test/getlnbuf.awk18
-rw-r--r--test/getlnbuf.in1708
-rw-r--r--test/getlnbuf.ok1708
-rw-r--r--test/getlnhd.awk10
-rw-r--r--test/getlnhd.ok2
-rw-r--r--test/getnr2tb.awk111
-rw-r--r--test/getnr2tb.in6
-rw-r--r--test/getnr2tb.ok6
-rw-r--r--test/getnr2tm.awk75
-rw-r--r--test/getnr2tm.in1
-rw-r--r--test/getnr2tm.ok1
-rw-r--r--test/gnuops2.awk72
-rw-r--r--test/gnuops2.ok7
-rw-r--r--test/gnuops3.awk14
-rw-r--r--test/gnuops3.ok5
-rw-r--r--test/gnureops.awk45
-rw-r--r--test/gnureops.ok17
-rw-r--r--test/gsubasgn.awk13
-rw-r--r--test/gsubasgn.ok5
-rw-r--r--test/gsubtest.awk9
-rw-r--r--test/gsubtest.ok7
-rw-r--r--test/gsubtst2.awk241
-rw-r--r--test/gsubtst2.ok25
-rw-r--r--test/gsubtst3.awk290
-rw-r--r--test/gsubtst3.in57
-rw-r--r--test/gsubtst3.ok60
-rw-r--r--test/gsubtst4.awk242
-rw-r--r--test/gsubtst4.ok33
-rw-r--r--test/gsubtst5.awk97
-rw-r--r--test/gsubtst5.in1
-rw-r--r--test/gsubtst5.ok1
-rw-r--r--test/gtlnbufv.awk2
-rw-r--r--test/hex.awk22
-rw-r--r--test/hex.ok6
-rw-r--r--test/hsprint.awk74
-rw-r--r--test/hsprint.ok66
-rw-r--r--test/icasefs.awk43
-rw-r--r--test/icasefs.ok6
-rw-r--r--test/icasers.awk2
-rw-r--r--test/icasers.in1
-rw-r--r--test/icasers.ok2
-rw-r--r--test/igncdym.awk56
-rw-r--r--test/igncdym.in2
-rw-r--r--test/igncdym.ok4
-rw-r--r--test/igncfs.awk8
-rw-r--r--test/igncfs.in2
-rw-r--r--test/igncfs.ok2
-rw-r--r--test/ignrcas2.awk13
-rw-r--r--test/ignrcas2.ok1
-rw-r--r--test/ignrcase.awk2
-rw-r--r--test/ignrcase.in1
-rw-r--r--test/ignrcase.ok1
-rw-r--r--test/inftest.awk8
-rw-r--r--test/inftest.ok105
-rw-r--r--test/inputred.awk1
-rw-r--r--test/inputred.ok1
-rw-r--r--test/intest.awk4
-rw-r--r--test/intest.ok1
-rw-r--r--test/intprec.awk1
-rw-r--r--test/intprec.ok1
-rw-r--r--test/iobug1.awk53
-rw-r--r--test/iobug1.ok0
-rw-r--r--test/leaddig.awk7
-rw-r--r--test/leaddig.ok1
-rw-r--r--test/leadnl.awk10
-rw-r--r--test/leadnl.in9
-rw-r--r--test/leadnl.ok8
-rw-r--r--test/lib/awkpath.awk1
-rw-r--r--test/lint.awk14
-rw-r--r--test/lint.ok5
-rw-r--r--test/litoct.awk1
-rw-r--r--test/litoct.ok1
-rw-r--r--test/longdbl.awk159
-rw-r--r--test/longdbl.in2
-rw-r--r--test/longdbl.ok2
-rw-r--r--test/longsub.awk1
-rw-r--r--test/longsub.in1
-rw-r--r--test/longsub.ok1
-rw-r--r--test/longwrds.awk27
-rw-r--r--test/longwrds.in200
-rw-r--r--test/longwrds.ok21
-rw-r--r--test/manglprm.awk41
-rw-r--r--test/manglprm.in1
-rw-r--r--test/manglprm.ok1
-rw-r--r--test/manyfiles.awk1
-rw-r--r--test/manyfiles.ok1
-rw-r--r--test/match1.awk9
-rw-r--r--test/match1.ok6
-rw-r--r--test/match2.awk6
-rw-r--r--test/match2.ok2
-rw-r--r--test/math.awk10
-rw-r--r--test/math.ok6
-rw-r--r--test/membug1.awk1
-rw-r--r--test/membug1.in2
-rw-r--r--test/membug1.ok0
-rw-r--r--test/messages.awk9
-rw-r--r--test/minusstr.awk1
-rw-r--r--test/minusstr.ok1
-rw-r--r--test/mmap8k.in143
-rw-r--r--test/nasty.awk92
-rw-r--r--test/nasty.ok2
-rw-r--r--test/nasty2.awk20
-rw-r--r--test/nasty2.ok2
-rw-r--r--test/negexp.awk1
-rw-r--r--test/negexp.ok1
-rw-r--r--test/nested.awk123
-rw-r--r--test/nested.in1
-rw-r--r--test/nested.ok2
-rw-r--r--test/nfldstr.awk13
-rw-r--r--test/nfldstr.in1
-rw-r--r--test/nfldstr.ok0
-rw-r--r--test/nfneg.awk1
-rw-r--r--test/nfneg.ok2
-rw-r--r--test/nfset.awk1
-rw-r--r--test/nfset.in5
-rw-r--r--test/nfset.ok5
-rw-r--r--test/nlfldsep.awk2
-rw-r--r--test/nlfldsep.in5
-rw-r--r--test/nlfldsep.ok13
-rw-r--r--test/nlinstr.awk8
-rw-r--r--test/nlinstr.in2
-rw-r--r--test/nlinstr.ok1
-rw-r--r--test/nlstrina.awk77
-rw-r--r--test/nlstrina.ok3
-rw-r--r--test/noeffect.awk5
-rw-r--r--test/noeffect.ok4
-rw-r--r--test/nofmtch.awk1
-rw-r--r--test/nofmtch.ok2
-rw-r--r--test/noloop1.awk70
-rw-r--r--test/noloop1.in1
-rw-r--r--test/noloop1.ok0
-rw-r--r--test/noloop2.awk70
-rw-r--r--test/noloop2.in1
-rw-r--r--test/noloop2.ok0
-rw-r--r--test/nondec.awk1
-rw-r--r--test/nondec.ok1
-rw-r--r--test/nondec2.awk104
-rw-r--r--test/nondec2.ok1
-rw-r--r--test/nonl.awk1
-rw-r--r--test/nonl.ok1
-rw-r--r--test/noparms.awk1
-rw-r--r--test/noparms.ok5
-rw-r--r--test/nors.in1
-rw-r--r--test/nors.ok2
-rw-r--r--test/nulrsend.awk112
-rw-r--r--test/nulrsend.in4
-rw-r--r--test/nulrsend.ok2
-rw-r--r--test/numindex.awk55
-rw-r--r--test/numindex.in4
-rw-r--r--test/numindex.ok1
-rw-r--r--test/numsubstr.awk1
-rw-r--r--test/numsubstr.in3
-rw-r--r--test/numsubstr.ok3
-rw-r--r--test/octsub.awk1
-rw-r--r--test/octsub.ok1
-rw-r--r--test/ofmt.awk53
-rw-r--r--test/ofmt.in136
-rw-r--r--test/ofmt.ok6
-rw-r--r--test/ofmtbig.awk125
-rw-r--r--test/ofmtbig.in3
-rw-r--r--test/ofmtbig.ok2
-rw-r--r--test/ofmtfidl.awk85
-rw-r--r--test/ofmtfidl.in10
-rw-r--r--test/ofmtfidl.ok10
-rw-r--r--test/ofmts.awk2
-rw-r--r--test/ofmts.in1
-rw-r--r--test/ofmts.ok1
-rw-r--r--test/onlynl.awk2
-rw-r--r--test/onlynl.in4
-rw-r--r--test/onlynl.ok0
-rw-r--r--test/opasnidx.awk1
-rw-r--r--test/opasnidx.ok1
-rw-r--r--test/opasnslf.awk6
-rw-r--r--test/opasnslf.ok3
-rw-r--r--test/out1.ok1
-rw-r--r--test/out2.ok2
-rw-r--r--test/out3.ok1
-rw-r--r--test/paramdup.awk8
-rw-r--r--test/paramdup.ok3
-rw-r--r--test/paramtyp.awk20
-rw-r--r--test/paramtyp.ok6
-rw-r--r--test/parseme.awk1
-rw-r--r--test/parseme.ok4
-rw-r--r--test/pcntplus.awk1
-rw-r--r--test/pcntplus.ok1
-rw-r--r--test/pid.awk44
-rw-r--r--test/pid.ok0
-rwxr-xr-xtest/pid.sh5
-rw-r--r--test/pipeio1.awk31
-rw-r--r--test/pipeio1.ok2
-rw-r--r--test/pipeio2.awk70
-rw-r--r--test/pipeio2.in8
-rw-r--r--test/pipeio2.ok16
-rw-r--r--test/posix.awk69
-rw-r--r--test/posix.in1
-rw-r--r--test/posix.ok16
-rwxr-xr-xtest/poundbang.awk2
-rw-r--r--test/prdupval.awk1
-rw-r--r--test/prdupval.in1
-rw-r--r--test/prdupval.ok1
-rw-r--r--test/prec.awk7
-rw-r--r--test/prec.ok1
-rw-r--r--test/printf0.awk5
-rw-r--r--test/printf0.ok1
-rw-r--r--test/printf1.awk19
-rw-r--r--test/printf1.ok7
-rw-r--r--test/printfbad1.awk65
-rw-r--r--test/printfbad1.ok5
-rw-r--r--test/printfloat.awk62
-rw-r--r--test/printlang.awk4
-rw-r--r--test/prmarscl.awk6
-rw-r--r--test/prmarscl.ok2
-rw-r--r--test/prmreuse.awk14
-rw-r--r--test/prmreuse.ok0
-rw-r--r--test/procinfs.awk7
-rw-r--r--test/procinfs.ok3
-rw-r--r--test/prt1eval.awk6
-rw-r--r--test/prt1eval.ok1
-rw-r--r--test/prtoeval.awk4
-rw-r--r--test/prtoeval.ok2
-rw-r--r--test/psx96sub.awk7
-rw-r--r--test/psx96sub.ok2
-rw-r--r--test/rand.awk6
-rw-r--r--test/rand.ok1
-rw-r--r--test/rebt8b1.awk138
-rw-r--r--test/rebt8b1.ok16
-rw-r--r--test/rebt8b2.awk88
-rw-r--r--test/rebt8b2.ok511
-rw-r--r--test/rebuf.awk73
-rw-r--r--test/rebuf.in2350
-rw-r--r--test/rebuf.ok1290
-rw-r--r--test/redfilnm.awk98
-rw-r--r--test/redfilnm.in1
-rw-r--r--test/redfilnm.ok9
-rw-r--r--test/reg/Obsolete/exp.awk1
-rw-r--r--test/reg/Obsolete/exp.good2
-rw-r--r--test/reg/Obsolete/exp.in0
-rw-r--r--test/reg/Obsolete/log.awk1
-rw-r--r--test/reg/Obsolete/log.good4
-rw-r--r--test/reg/Obsolete/log.in0
-rw-r--r--test/reg/exp-eq.awk1
-rw-r--r--test/reg/exp-eq.good3
-rw-r--r--test/reg/exp-eq.in3
-rw-r--r--test/reg/func.awk1
-rw-r--r--test/reg/func.good1
-rw-r--r--test/reg/func.in0
-rw-r--r--test/reg/func2.awk2
-rw-r--r--test/reg/func2.good2
-rw-r--r--test/reg/func2.in0
-rw-r--r--test/reg/func2.out2
-rw-r--r--test/regeq.awk29
-rw-r--r--test/regeq.in2
-rw-r--r--test/regeq.ok2
-rwxr-xr-xtest/regtest.sh18
-rw-r--r--test/regx8bit.awk26
-rw-r--r--test/regx8bit.ok7
-rw-r--r--test/reindops.awk6
-rw-r--r--test/reindops.in1
-rw-r--r--test/reindops.ok1
-rw-r--r--test/reint.awk1
-rw-r--r--test/reint.in1
-rw-r--r--test/reint.ok1
-rw-r--r--test/reparse.awk7
-rw-r--r--test/reparse.in1
-rw-r--r--test/reparse.ok3
-rw-r--r--test/resplit.awk1
-rw-r--r--test/resplit.in1
-rw-r--r--test/resplit.ok1
-rw-r--r--test/rs.awk2
-rw-r--r--test/rs.in15
-rw-r--r--test/rs.ok3
-rw-r--r--test/rsnul1nl.awk2
-rw-r--r--test/rsnul1nl.in3
-rw-r--r--test/rsnul1nl.ok2
-rw-r--r--test/rsnulbig.ok1
-rw-r--r--test/rsnulbig2.ok1
-rw-r--r--test/rsstart1.awk32
-rw-r--r--test/rsstart1.in10000
-rw-r--r--test/rsstart1.ok1
-rw-r--r--test/rsstart2.awk2
-rw-r--r--test/rsstart2.ok1
-rw-r--r--test/rsstart3.ok1
-rw-r--r--test/rstest1.awk7
-rw-r--r--test/rstest1.ok2
-rw-r--r--test/rstest2.awk6
-rw-r--r--test/rstest2.ok1
-rw-r--r--test/rstest3.awk73
-rw-r--r--test/rstest3.ok0
-rw-r--r--test/rstest4.awk67
-rw-r--r--test/rstest4.ok2
-rw-r--r--test/rstest5.awk60
-rw-r--r--test/rstest5.ok4
-rw-r--r--test/rstest6.awk6
-rw-r--r--test/rstest6.in1
-rw-r--r--test/rstest6.ok1
-rw-r--r--test/rswhite.awk2
-rw-r--r--test/rswhite.in2
-rw-r--r--test/rswhite.ok2
-rw-r--r--test/scalar.awk4
-rw-r--r--test/scalar.ok2
-rw-r--r--test/sclforin.awk1
-rw-r--r--test/sclforin.ok2
-rw-r--r--test/sclifin.awk7
-rw-r--r--test/sclifin.ok2
-rw-r--r--test/shadow.awk21
-rw-r--r--test/shadow.ok7
-rw-r--r--test/sort1.awk31
-rw-r--r--test/sort1.ok11
-rw-r--r--test/sortempty.awk1
-rw-r--r--test/sortempty.ok1
-rw-r--r--test/space.ok2
-rw-r--r--test/splitargv.awk7
-rw-r--r--test/splitargv.in7
-rw-r--r--test/splitargv.ok7
-rw-r--r--test/splitarr.awk5
-rw-r--r--test/splitarr.ok1
-rw-r--r--test/splitdef.awk7
-rw-r--r--test/splitdef.ok1
-rw-r--r--test/splitvar.awk5
-rw-r--r--test/splitvar.in1
-rw-r--r--test/splitvar.ok1
-rw-r--r--test/splitwht.awk7
-rw-r--r--test/splitwht.ok2
-rw-r--r--test/sprintfc.awk1
-rw-r--r--test/sprintfc.in3
-rw-r--r--test/sprintfc.ok3
-rw-r--r--test/strcat1.awk6
-rw-r--r--test/strcat1.ok1
-rw-r--r--test/strftime.awk19
-rw-r--r--test/strftlng.awk11
-rw-r--r--test/strftlng.ok58
-rw-r--r--test/strtod.awk5
-rw-r--r--test/strtod.in1
-rw-r--r--test/strtod.ok2
-rw-r--r--test/strtonum.awk6
-rw-r--r--test/strtonum.ok4
-rw-r--r--test/subamp.awk1
-rw-r--r--test/subamp.in1
-rw-r--r--test/subamp.ok1
-rw-r--r--test/subsepnm.awk1
-rw-r--r--test/subsepnm.ok1
-rw-r--r--test/subslash.awk6
-rw-r--r--test/subslash.ok1
-rw-r--r--test/substr.awk14
-rw-r--r--test/substr.ok10
-rw-r--r--test/swaplns.awk7
-rw-r--r--test/swaplns.in9
-rw-r--r--test/swaplns.ok9
-rw-r--r--test/switch2.awk59
-rw-r--r--test/synerr1.awk4
-rw-r--r--test/synerr1.ok3
-rw-r--r--test/tradanch.awk2
-rw-r--r--test/tradanch.in2
-rw-r--r--test/tradanch.ok0
-rw-r--r--test/tweakfld.awk296
-rw-r--r--test/tweakfld.in3
-rw-r--r--test/tweakfld.ok3
-rw-r--r--test/uninit2.awk2
-rw-r--r--test/uninit2.ok4
-rw-r--r--test/uninit3.awk7
-rw-r--r--test/uninit3.ok3
-rw-r--r--test/uninit4.awk13
-rw-r--r--test/uninit4.ok10
-rw-r--r--test/uninitialized.awk3
-rw-r--r--test/uninitialized.ok1
-rw-r--r--test/unterm.awk1
-rw-r--r--test/unterm.ok3
-rw-r--r--test/whiny.awk5
-rw-r--r--test/whiny.in178
-rw-r--r--test/whiny.ok108
-rw-r--r--test/wjposer1.awk75
-rw-r--r--test/wjposer1.in1527
-rw-r--r--test/wjposer1.ok2068
-rw-r--r--test/zeroe0.awk40
-rw-r--r--test/zeroe0.ok2
-rw-r--r--test/zeroflag.awk1
-rw-r--r--test/zeroflag.ok1
565 files changed, 36603 insertions, 0 deletions
diff --git a/test/ChangeLog b/test/ChangeLog
new file mode 100644
index 0000000..2ce66ae
--- /dev/null
+++ b/test/ChangeLog
@@ -0,0 +1,1145 @@
+Tue Jul 26 21:46:16 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.5: Release tar file made.
+
+Sun Jul 10 18:31:45 2005 Scott Deifik <scottd@amgen.com>
+
+ * regtest.sh: Changed to use diff instead of cmp for djgpp.
+ This addresses DOS vs. UNIX end-of-line issues.
+
+Thu Jun 9 23:40:14 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (Maketests): Don't use $< in rule, it breaks
+ on some non-GNU versions of make. Sigh.
+
+Wed Apr 27 22:22:05 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (longdbl): new test.
+ * longdbl.awk, longdbl.in, longdbl.ok: new files.
+
+Wed Feb 2 16:44:41 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (exitval2): new test.
+ * exitval2.awk, exitval2.ok: new files.
+
+Mon Jan 31 10:00:52 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gnuops3): new test.
+ * gnuops3.awk, gnuops3.ok: new files.
+
+Wed Jan 19 18:04:40 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (hex): new test.
+ * hex.awk, hex.ok: new files.
+
+Sun Jan 9 11:53:09 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (strftime, igncras2, subamp): Use `GAWKLOCALE',
+ not `GAWK_LOCALE'. Grrr!
+
+Mon Jan 3 12:20:08 2005 William J. Poser <wjposer@ldc.upenn.edu>
+
+ * Makefile.am (wjposer1): new test.
+ * wjposer1.awk, wjposer1.in, wjposer1.ok: new files.
+
+Mon Jan 3 11:55:48 2005 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rsstart1, rsstart2, rsstart3): new tests.
+ * rsstart1.in, rsstart1.awk, rsstart1.ok, rsstart2.awk,
+ rsstart2.ok, rsstart3.ok: new files.
+
+Sun Dec 19 17:31:48 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gensub2): new test.
+ * gensub2.awk, gensub2.ok: new files.
+
+ Thanks to "John H. DuBois III" <spcecdt@armory.com>.
+
+Thu Dec 9 15:22:58 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fsspcoln): new test.
+ * fsspcoln.awk, fsspcoln.in, fsspcoln.ok: new files.
+
+Mon Nov 29 18:41:33 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (iobug1): new test.
+ * iobug1.awk, iobug1.ok: new files.
+
+Tue Sep 28 18:39:53 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * nondec.awk, nondec.ok: Add 00.34 as value to print, it should
+ not be treated as octal.
+
+Mon Aug 2 12:18:15 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.4: Release tar file made.
+
+Wed Jul 14 16:04:46 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rstest6): new test.
+ * rstest6.awk, rstest6.in, rstest6.ok: new files.
+
+Tue Jul 13 10:53:32 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * strftlng: Use `$(CMP) ... >/dev/null 2>&1' instead of `-s'
+ for OS/2 and other systems that use `CMP = diff -a'.
+
+Mon Jun 14 18:44:39 2004 Pat Rankin <rankin@pactechdata.com>
+
+ * longwrds.awk: allow caller the means to override SORT command.
+
+Tue Jun 8 14:12:52 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fordel, printfbad1): new tests.
+ * fordel.awk, fordel.ok: new files.
+ * printfbad1.awk, printfbad1.ok: new files.
+
+Mon Apr 19 20:29:52 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (manglprm): new test.
+ * manglprm.awk, manglprm.in, manglprm.ok: new files.
+
+Mon Feb 23 18:39:24 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * inftest.awk: Add loop limit per Nelson H.F. Beebe.
+ * Makefile.am (strftime): Use LC_ALL=C for `date' invocation.
+
+Thu Feb 12 02:08:15 2004 Stepan Kasal <kasal@ucw.cz>
+
+ * Makefile.am (diffout): Use $(srcdir), when we are not building
+ in the source tree.
+
+Wed Feb 11 10:23:39 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (strcat1): new test.
+ * strcat1.awk, strcat1.ok: new files.
+
+Fri Feb 6 12:09:55 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (CLEANFILES): Added.
+
+Thu Feb 5 15:34:14 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (exitval1): new test.
+ * exitval1.awk, exitval1.ok: new files.
+
+Mon Feb 2 10:29:19 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (subamp): new test.
+ * subamp.awk, subamp.in, subamp.ok: new files.
+
+ * subamp, ignrcas2, strftime: Set GAWK_LOCALE, not LC_ALL.
+
+Wed Jan 14 15:28:34 2004 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (backw): new test.
+ * backw.awk, backw.in, backw.ok: new files.
+
+Mon Dec 1 10:29:22 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (concat3): new test.
+ * concat3.awk, concat3.ok: new files.
+
+Sun Nov 2 16:05:21 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (concat2): new test.
+ * concat2.awk, concat2.ok: new files.
+
+Wed Oct 29 13:35:37 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (subsepnm): new test.
+ * subsepnm.awk, subsepnm.ok: new files.
+
+Mon Sep 15 16:05:37 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (ignrcas2): new test.
+ * ignrcas2.awk, ignrcas2.ok: new files.
+
+Tue Sep 9 16:03:34 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (unterm): new test.
+ * unterm.awk, unterm.ok: new files.
+
+Mon Jul 7 11:01:43 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.3: Release tar file made.
+
+Fri Jul 4 11:12:07 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (poundbang2): Removed.
+ (poundbang): Added env var settings.
+
+Thu Jun 26 15:44:33 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (match2, whiny): new tests.
+ * match2.awk, match2.ok: new files.
+ * whiny.awk, whiny.ok: new files.
+
+Thu Jun 26 14:51:40 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Use double quotes for sed invocation to make
+ life easier (eventually) for DOS version of Makefile.
+ * pipeio2.awk, pipio2.ok: Ditto.
+
+Wed Jun 18 12:32:14 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (AWK): Use LC_ALL=$${GAWKLOCALE:-C} and
+ same for LANG when running awk. Provides sane locale for
+ tests with ability to override it if need be.
+ (all tests): Removed explicit setting of LC_ALL and LANG.
+ * Gentests: Ditto.
+
+Wed May 28 08:02:33 CEST 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (uninit4): new test.
+ * uninit4.awk, uninit4.ok: new files.
+
+Wed May 28 06:30:23 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (aryprm4 aryprm5 aryprm6 aryprm7 aryprm8 scalar uninit3):
+ new tests.
+ * aryprm4.awk aryprm4.ok aryprm5.awk aryprm5.ok aryprm6.awk aryprm6.ok:
+ aryprm7.awk aryprm7.ok aryprm8.awk aryprm8.ok scalar.awk scalar.ok:
+ uninit3.awk uninit3.ok: new files.
+
+Tue May 27 14:27:50 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (aryprm1, aryprm2, aryprm3, sortempty): New tests.
+ * aryprm1.awk, aryprm1.ok, aryprm2.awk, aryprm2.ok: New files.
+ * aryprm3.awk, aryprm3.ok, sortempty.awk, sortempty.ok: dtto
+ * prmarscl.ok: The actual error message has changed.
+
+Tue May 27 08:23:51 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * arrayref3.ok, arrayref4.ok, fnaryscl.ok: Error messages reformatted.
+
+Sun Jun 8 17:18:06 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fmttest, strtonum, nested, gsubtst5, delarpm2): New tests.
+ * fmttest.awk, fmttest.ok: New files. From Nelson Beebe,
+ <beebe@math.utah.edu>.
+ * strtonum.awk, strtonum.ok: New files.
+ * nested.awk, nested.in, nested.ok: New files.
+ * gsubtst5.awk, gsubtst5.in, gsubtst5.ok: New files.
+ * delarpm2.awk, delarpm2.ok: New files. (Also from Nelson Beebe.)
+
+ * switch2.awk: Currently unused test for switch code.
+
+Wed May 14 16:49:53 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Gentests: Add LC_ALL=C LANG=C to generated tests.
+ * Makefile.am: All other manual tests: ditto.
+
+Sun May 11 15:27:55 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (rsnulbig, rsnulbig2): New tests.
+ * rsnulbig.ok, rsnulbig2.ok: New files.
+
+Sun May 11 15:00:20 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (arrayprm2, arrayprm3, arryref2, arryref3, arryref4,
+ arryref5, rstest3, rstest4, rstest5): New tests.
+ * arrayprm2.awk, arrayprm2.ok, arrayprm3.awk, arrayprm3.ok, arryref2.ok,
+ arryref3.ok, arryref4.ok, arryref5.ok, rstest3.awk, rstest3.ok, rstest4.awk,
+ rstest4.ok, rstest5.awk, rstest5.ok: New files.
+
+Sun May 11 12:20:59 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * strftime.awk: Remove seconds from input and strftime output,
+ to decrease chance of failing on second boundary.
+ * Makefile.am (strftime): Tweak message appropriately.
+
+Tue Mar 25 08:35:42 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fnarray2): New test.
+ * fnarray2.awk, fnarray2.ok: New files.
+
+Wed Mar 19 14:10:31 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ This time for sure.
+ -- Bullwinkle
+
+ * Release 3.1.2: Release tar file made.
+
+Wed Mar 19 14:00:00 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (synerr1): New test.
+ * synerr1.awk, synerr1.ok: New files.
+
+Tue Mar 4 10:32:23 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (clean): Remove `core*' for modern Linux which
+ drops core in `core.PID' files.
+
+2003-02-17 Jim Meyering <jim@meyering.net>
+
+ * Makefile.am (check): Don't depend on the pass-fail rule that
+ reports any failures. Otherwise, for `make -j' that rule's commands
+ could run before all tests had completed, resulting in spurious
+ failures or potentially, even unreported failures. Instead, just
+ `$(MAKE) pass-fail'.
+
+Sun Feb 9 11:48:32 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Moved `space' into UNIX_TESTS. Breaks in
+ MS environments.
+
+Tue Feb 4 14:28:06 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ All relevant files: Copyright year updated to 2003.
+
+Tue Feb 4 12:22:41 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (fnmisc): New test case.
+ * fnmisc.awk, fnmisc.ok: New files.
+
+Sun Feb 2 15:33:33 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * getline3.awk, getline3.ok: Renamed from getline2.awk, getline2.ok
+ * Makefile.am (getline, getline2): getline renamed to getline2,
+ new test under the name getline.
+ * getline.awk, getline.ok, getline2.awk, getline2.ok:
+ rename getline.* getline2.*; new files getline.* .
+ * getline.awk, getline.ok: add tests for ``cmd | getline ''
+ * Makefile.am (printf0): New test.
+ * printf0.awk, printf0.ok: New files.
+ * fnarray.ok: The error message has changed.
+
+Thu Jan 30 15:32:56 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (splitarr, getline2, inputred, prec): New tests.
+ * splitarr.awk, splitarr.ok: New files.
+ * getline2.awk, getline2.ok: New files.
+ * inputred.awk, inputred.ok: New files.
+ * prec.awk, prec.ok: New files.
+ * noeffect.awk: add second no-effect command; two error messages
+ should be generated. Add some empty statements, to check that --lint
+ doesn't abort on them.
+
+Tue Jan 28 18:34:22 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * arrymem1.awk: Enhanced test.
+ * arrayme1.ok: Updated for new output
+
+Mon Jan 27 14:07:16 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * nfldstr.awk: Add tests for automatic number conversion.
+
+Mon Jan 27 12:25:41 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (asort, asorti, match1): New tests.
+ * match1.awk, match1.in: New files.
+ * asort.awk, asort.in: New files.
+ * asorti.awk, asorti.in: New files.
+
+Mon Jan 27 12:10:16 2003 Stepan Kasal <kasal@math.cas.cz>
+
+ * strtod.awk, strtod.in, strtod.ok: Added test for 0e0 and similar.
+
+Sun Jan 26 16:49:41 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (zeroe0): New test.
+ * zeroe0.awk, zeroe0.in: New files.
+
+Thu Jan 2 11:09:12 2003 Arnold D. Robbins <arnold@skeeve.com>
+
+ * parseme.ok, noparms.ok: Revised for bison 1.875.
+
+Tue Dec 31 16:54:44 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: (poundbang): Fix code.
+ (efence): New target to remove _* files run with Electric Fence
+ but that are otherwise OK.
+
+Thu Dec 26 16:44:37 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (poundbang): Add code to handle systems with limits on
+ paths for #! files.
+
+Mon Dec 9 14:20:44 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (space): New test: ``gawk -f " " file'' should try
+ to include file ` '.
+
+Sun Nov 17 21:47:11 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (manyfiles): Reference $(srcdir)/$@.ok so can build
+ and test in a different directory.
+
+Sun Nov 3 14:47:59 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ Move tests with inline input and/or programs into separate files so can let
+ Gentests do more work. Per Nelson Beebe, just print the name of each test.
+
+ * Makefile.am (fstabplus, longwrds, fieldwdth, ignrcase, posix, rs, fsbs):
+ removed targets so will be generated by Gentests.
+ (negexp, resplit, childin, back89, nfldstr, nondec): ditto.
+ * Gentests: print name of test, make cmp not echo by prefixing with @.
+ * fstabplus.in: new file.
+ * fieldwdth.awk, fieldwdth.in: new files.
+ * ignrcase.awk, ignrcase.in: new files.
+ * longwrds.awk: send output to sort instead of letting makefile do it.
+ * longwrds.in: renamed from manpage.
+ * posix.in: new file.
+ * manyfiles.ok: new file.
+ * rs.awk: new file.
+ * fsbs.awk: new file.
+ * negexp.awk: new file.
+ * resplit.awk, resplit.in: new files.
+ * childin.awk, childin.in: new files.
+ * back89.awk: new file.
+ * nfldstr.awk, nfldstr.in: new files.
+
+Sun Nov 3 14:37:39 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (uninit2): new test case, requires lint.
+ * uninit2.awk, uninit2.ok: new files.
+
+Fri Nov 1 11:34:45 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (nondec): Always run this test.
+
+Tue Oct 29 10:40:47 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (EXTRA_DIST): Added Gentests to list of files
+ to distribute.
+
+Mon Oct 28 15:36:42 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (icasers, icasefs, rstest1, rstest2): new test cases.
+ (argarray): Remove argarray.in if not in srcdir.
+ * icasers.awk, icasers.in, icasers.ok: new files.
+ * icasefs.awk, icasefs.ok: new files.
+ * rstest1.awk, rstest1.ok: new files.
+ * rstest2.awk, rstest2.ok: new files.
+
+Mon Oct 28 12:25:25 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (uninitialized): New test.
+ * uninitialized.awk, uninitialized.ok: New files.
+
+Mon Oct 28 11:24:16 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * Gentests: new script
+ * Maketests: new file, generated automatically by Gentests
+ * Makefile.am: new rules and variables to make use of Gentests;
+ Most targets removed, Gentests will take care
+
+Sun Oct 13 16:58:07 2002 Stepan Kasal <kasal@math.cas.cz>
+
+ * Makefile.am (nfneg): new test case.
+ * nfneg.awk, nfneg.ok: new files.
+
+Mon Oct 7 09:38:07 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (noloop1, noloop2): new test cases.
+ * noloop.awk, noloop1.in, noloop1.ok, noloop2.in, noloop2.ok:
+ new files.
+
+Tue Oct 1 18:28:40 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (poundbang): Rewrote rule to avoid problems
+ with hardcoding of /tmp pathname.
+ (poundbang.awk): Changed the way it works.
+ (poundbang.ok): Removed.
+
+Thu Sep 5 13:31:28 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rebuf): new test case.
+ * rebuf.awk, rebuf.in, rebuf.ok: new files.
+
+Wed Aug 21 15:31:57 2002 Andreas Buening <andreas.buening@nexgo.de>
+
+ * Makefile.am (AWKPROG): Add $(EXEEXT) macro.
+ (PATH_SEPERATOR): Removed.
+ (poundbag): Added $(EXEEXT) and use of ${TMPDIR-/tmp}.
+
+Wed Aug 7 13:47:09 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (nulrsend): new test case.
+ * nulrsend.awk, nulrsend.in, nulrsend.ok: new files.
+
+Sun Aug 4 00:25:23 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gsubtst3, gsubtst4): new test cases.
+ * gsubtst3.awk, gsubtst3.ok, gsubtst4.awk, gsubtst4.ok: new files.
+
+Thu May 9 22:31:36 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gsubtst2): new test case.
+ * gsubtest.awk, gsubtest.ok: Added new test.
+ * gsubtst2.awk, gsubtst2.ok: new files.
+
+Sun May 5 12:38:55 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Minor mods to use LC_ALL=C so that checks will
+ use the English messages, not any translations.
+ (manyfiles): Fixed (hopefully) to leave a file around if the
+ test fails, so that we don't get a spurious "ALL TESTS PASSED"
+ message.
+
+Wed May 1 16:41:32 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.1: Release tar file made.
+
+Tue Apr 16 17:07:25 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (pass-fail): New target that prints an
+ `all passed' or `x tests failed' message, for use in
+ grep-ing build logs.
+ (check): Add pass-fail as last dependency.
+
+ Thanks to Nelson Beebe for the thought, beebe@math.utah.edu.
+
+Sun Mar 10 17:00:51 2002 Scott Deifik <scottd@amgen.com>
+
+ * Makefile.am (strftime): Add TZ=GMT0 into environment, to
+ regularize things, esp. for some DJGPP systems.
+
+Mon Feb 18 14:55:19 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (longsub): new test case.
+ * longsub.awk, longsub.in, longsub.ok: new files.
+
+Wed Jan 23 15:03:36 2002 Andreas Buening <andreas.buening@nexgo.de>
+
+ * Makefile.am (PATH_SEPARATOR): Added.
+ (awkpath): Make use of PATH_SEPARATOR.
+
+Wed Jan 23 14:50:38 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (concat1): new test case.
+ * concat1.awk, concat1.in, concat1.ok: new files.
+
+Mon Jan 7 22:21:25 2002 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (forsimp): new test case.
+ * forsimp.awk, forsimp.ok: new files.
+
+Wed Dec 26 22:01:52 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (inftest): Add sed to fix case issues between
+ different libc versions. Ugh.
+
+Wed Dec 19 16:01:58 2001 Peter J. Farley III <pjfarley@dorsai.org>
+
+ * Makefile.am (manyfiles): Also delete \15 in tr.
+
+Tue Dec 18 20:56:07 2001 Andreas Buening <andreas.buening@nexgo.de>
+
+ * Makefile.am (nors): Add \15 to list of chars to delete so
+ test will run on OS/2 also.
+
+Thu Oct 4 18:34:49 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (membug1): new test case.
+ * membug1.awk, membug1.in, membug1.ok: new files.
+
+Thu Aug 23 14:04:10 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (minusstr): new test case.
+ * minusstr.awk, minusstr.ok: new files.
+
+Sat Aug 4 23:42:37 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (arrymem1): new test case.
+ (compare2): new test case.
+ (regtest): Make test work, use regtest.sh, not .awk.
+ * arrymem1.awk, arrymem1.ok: new files.
+ * compare2.awk, compare2.ok: new files.
+
+Mon Jul 23 17:32:03 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (onlynl): new test case.
+ * onlynl.awk, onlynl.in, onlynl.ok: new files.
+
+Wed Jun 13 18:12:43 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.am (ofmtfidl): new test case.
+ * ofmtfidl.awk, ofmtfidl.in, ofmtfidl.ok: new files.
+
+Sun Jun 3 13:04:44 2001 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.1.0: Release tar file made. And there was
+ rejoicing.
+
+Sun May 6 13:30:20 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * inftest.awk: Changed test to use < so that it will
+ work for MSC and DJGPP combination, per Scott Deifik.
+
+Tue Mar 20 11:09:51 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (funsemnl): new test case.
+ * funsemnl.awk, funsemnl.ok: new files.
+
+Wed Mar 7 11:31:41 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (leadnl): new test case.
+ * leadnl.awk, leadnl.in, leadnl.ok: new files.
+
+Tue Feb 6 18:08:15 2001 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (rebt8b1, rebt8b2): new test case.
+ * rebt8b1.awk, rebt8b1.ok: new files.
+ * rebt8b2.awk, rebt8b2.ok: new files.
+
+Sun Dec 3 15:36:41 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (gnuops2): New test case.
+ * gnuops2.awk, gnuops2.ok: New files, based on bug report from
+ Servatius.Brandt@fujitsu-siemens.com.
+
+Mon Nov 27 15:52:46 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * regx8bit.awk, regx8bit.ok: Updated to what should
+ work on all systems.
+
+Wed Nov 22 13:27:59 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (poundbang): Added some smarts for /tmp mounted
+ noexec. Hopefully it'll even work.
+
+Tue Nov 14 17:45:02 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am: Added - to all cmp calls for consistency.
+
+Sun Nov 12 17:50:18 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (addcomma): new test case.
+ * addcomma.awk, addcomma.in, addcomma.ok: new files.
+
+Tue Nov 7 16:03:06 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (regx8bit, psx96sub): new test cases.
+ * regx8bit.awk, regx8bit.ok, psx96sub.awk, psx96sub.ok: new files.
+
+Sun Oct 22 12:09:43 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (shadow): new test case.
+ * shadow.awk, shadow.ok: new files.
+
+Tue Oct 17 10:51:09 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (arynasty): new test case.
+ * arynasty.awk, arynasty.ok: new files.
+
+Mon Oct 2 10:17:13 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (clsflnam): Add redirect of stderr.
+ * clsflnam.awk, clsflnam.ok: modified to reflect changed
+ semantics of close() for a non-open file. See ../ChangeLog.
+
+Sun Sep 24 16:46:29 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (nasty2): new test case.
+ * nasty2.awk, nasty2.ok: new files.
+
+Wed Sep 13 11:09:49 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (check): Added calls to new targets that
+ print messages.
+ (clos1way, basic-msg-start, basic-msg-end, unix-msg-start,
+ unix-msg-end, extend-msg-start, extend-msg-end): new targets.
+ * clos1way.awk, clos1way.ok: new files.
+
+Tue Sep 12 16:29:54 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (leaddig): new test case.
+ * leaddig.awk, leaddig.ok: new files.
+
+Wed Sep 6 14:09:15 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (strtod): new test case.
+ * strtod.awk, strtod.in, strtod.ok: new files.
+
+Mon Sep 4 09:33:28 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (octsub): new test case.
+ * octsub.awk, octsub.ok: new files.
+
+Sun Aug 13 12:37:16 2000 Arnold Robbins <arnold@skeeve.com>
+
+ * Makefile.am (sort1, diffout): new test cases.
+ * sort1.awk, sort1.ok: new files.
+
+2000-02-15 Arnold Robbins <arnold@skeeve.com>
+
+ * MOVED TO AUTOMAKE AND GETTEXT.
+ Just about every file touched. Work done by Arno Peters.
+
+Wed May 19 15:41:41 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (datanonl,regeq,redfilnm): new test cases.
+ * datanonl.awk, datanonl.in, datanonl.ok: new files.
+ * regeq.awk, regeq.in, regeq.ok: new files.
+ * redfilnm.awk, redfilnm.in, redfilnm.ok: new files.
+
+Mon May 10 17:11:30 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (rsnul1nl): new test case.
+ * rsnul1nl.awk, rsnul1nl.in, rsnul1nl.ok: new files.
+
+Sun Apr 25 13:02:35 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (inetechu,inetecht,inetdayu,inetdayt,inet): new
+ tests, courtesy of Juergen Khars.
+ (paramtyp): new test for bug from Juergen.
+ * paramtyp.awk, paramtyp.in: new files.
+
+Sun Oct 25 23:11:46 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (ofmtbig,procinfs): new test cases.
+ * procinfs.awk, procinfs.ok: new files.
+ * ofmtbig.awk, ofmtbig.in, ofmtbig.ok: new files.
+
+Tue Oct 20 22:07:10 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (lint): new test case.
+ * lint.awk, lint.ok: new files.
+ * badargs.ok: updated output corresponding to change made to
+ main.c (see main ChangeLog).
+
+Tue May 26 20:39:07 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * pipeio2.awk: change "\'" to "'" to avoid new warning.
+
+Mon Mar 23 21:53:36 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (fnasgnm): new test case.
+ * fnasgnm.awk, fnasgnm.in, fnasgnm.ok: new files.
+
+Fri Mar 20 11:01:38 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (fnaryscl): new test case.
+ * fnaryscl.awk, fnaryscl.ok: new files.
+
+Mon Mar 16 15:23:22 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (splitdef): new test case.
+ * splitdef.awk, splitdef.ok: new files.
+
+Fri Sep 26 01:10:14 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (parseme): new test case.
+ * parseme.awk, parseme.ok: new files.
+
+Sun Sep 14 23:25:10 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (ofmts): new test case.
+ * ofmts.awk, ofmts.in, ofmts.ok: new files.
+
+Sun Aug 17 07:17:35 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (fsfwfs): new test case.
+ * fsfwfs.awk, fsfwfs.in, fsfwfs.ok: new files.
+
+Sun Jul 27 23:08:53 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (hsprint): new test case.
+ * hsprint.awk, hsprint.ok, printfloat.awk: new files.
+
+Thu Jul 17 20:07:31 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (ofmt): new test case.
+ * ofmt.awk, ofmt.in, ofmt.ok: new files.
+
+Sun Jun 22 16:17:35 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (nlinstr): new test case.
+ * nlinstr.awk, nlinstr.in, nlinstr.ok: new files.
+
+Wed Jun 4 13:18:21 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * pid.sh: send errors to /dev/null to toss warning about
+ using PROCINFO["pid"] etc. This test explicitly tests
+ the special files. It'll need changing in 3.2.
+
+Thu Apr 24 23:24:59 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (messages): remove special case if /dev/fd exists.
+ Finally.
+
+Mon Aug 7 15:23:00 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.0.6: Release tar file made.
+
+Thu Aug 3 17:51:56 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (nlstrina): new test case.
+ * nlstrina.awk, nlstrina.ok: new files.
+
+Tue Jul 11 14:22:55 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (fnparydl): new test case.
+ * fnparydl.awk, fnparydl.ok: new files.
+
+Fri Jun 30 22:00:03 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (arysubnm): new test case.
+ * arysubnm.awk, arysubnm.ok: new files.
+
+Sun Jun 25 15:08:19 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Release 3.0.5: Release tar file made.
+
+Wed Jun 14 13:17:59 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (getlnbuf): new test case.
+ * getlnbuf.awk, gtlnbufv.awk, getlnbuf.in, getlnbuf.ok: new files.
+
+Mon Jun 5 15:51:39 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * pipeio2.awk: Change use of tr to sed, fixes problems
+ on SCO OS5.
+ * pipeio2.ok: Updated to reflect use of sed.
+
+Tue May 2 13:28:04 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (strftime): moved test code into a separate
+ file for the PC guys.
+ * strftime.awk: new file.
+
+Mon Apr 10 15:58:13 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (longwrds): Add setting LC_ALL=C to sort
+ call to preserve traditional output. (Theme from the
+ Twilight Zone plays eerily in the background...)
+
+Sun Apr 2 17:51:40 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (igncdym): new test case.
+ * igncdym.awk, igncdym.in, igncdym.ok: new files.
+
+Wed Mar 8 13:43:44 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (arynocls): new test case.
+ * arynocls.awk, arynocls.in, arynocls.ok: new files.
+
+Sun Feb 6 11:45:15 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (opasnidx): new test case.
+ * opasnidx.awk, opasnidx.ok: new files.
+
+Tue Feb 1 18:40:45 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (opasnslf): new test case.
+ * opasnslf.awk, opasnslf.ok: new files.
+
+Thu Jan 27 18:09:18 2000 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (subslash): new test case.
+ * subslash.awk, subslash.ok: new files.
+
+Fri Nov 26 11:03:07 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (numindex): new test case.
+ * numindex.awk, numindex.in, numindex.ok: new files.
+
+Sun Oct 24 08:46:16 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (strftime): Add tweak for $NF that should
+ hopefully avoid cygwin problems with lack of timezone.
+
+Thu Jul 29 19:25:02 1999 Arnold D. Robbins <arnold@skeeve.com>
+
+ * Makefile.in (fsmnam, fnamedat): new test cases.
+ * fsmnam.awk, fsmnam.ok: new files.
+ * fnamedat.awk, fnamedat.in, fnamedat.ok: new files.
+
+Wed Jun 30 16:14:36 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Release 3.0.4: Release tar file made. This time for sure.
+
+Tue May 25 16:37:50 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (printf1): new test case.
+ * printf1.awk, printf1.ok: new files.
+
+Wed May 19 15:32:09 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * reg/*: moved exp and log tests to new `Obsolete' directory; they
+ would only succeed under SunOS 4.x.
+
+Mon May 3 11:53:33 1999 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (gawk.extensions): removed `nondec' until the
+ associated features get documented in 3.1.
+
+Tue Nov 3 16:46:39 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (getnr2tm, getnr2tb): new test cases.
+ * getnr2tm.awk, getnr2tm.in, getnr2tm.ok: new files.
+ * getnr2tb.awk, getnr2tb.in, getnr2tb.ok: new files.
+
+Sun Nov 1 13:20:08 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (zeroflag): new test case.
+ * zeroflag.awk, zeroflag.ok: new files
+
+Wed Oct 28 18:44:19 1998 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (nasty): new test case.
+ * nasty.awk, nasty.ok: new files
+
+Sun Nov 16 20:08:59 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * gsubtest.awk, gsubtest.ok: fix for count of matches in gsub
+ from Geert.Debyser@esat.kuleuven.ac.be.
+
+Sun Nov 16 19:54:50 1997 Arnold D. Robbins <arnold@gnu.org>
+
+ * Makefile.in (strftime): fix a typo (LANC -> LANG).
+
+Thu May 15 12:49:08 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.3: Release tar file made.
+
+Tue May 13 12:53:46 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (messages): more testing for OK failure on Linux.
+
+Sun May 11 14:57:11 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (nondec): new test case.
+ * nondec.awk, nondec.ok: new files.
+
+Sun May 11 07:07:05 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (prdupval): new test case.
+ * prdupval.awk, prdupval.in, prdupval.ok: new files.
+
+Wed May 7 21:54:34 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (delarprm): new test case.
+ * delarprm.awk, delarprm.ok: new files.
+
+Wed May 7 17:54:00 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (pid): several fixes from ghazi@caip.rutgers.edu.
+
+Tue May 6 20:28:30 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (strftime): Use the right locale stuff.
+ (clobber): don't need an input file.
+
+Thu Apr 24 22:24:42 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (pid): new test case, from jco@convex.com.
+ (specfile): removed test case, pid does it better.
+ * pid.awk, pid.ok, pid.sh: new files.
+ * specfile.awk: removed.
+
+Wed Apr 23 23:37:10 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (pipeio2): new test case.
+ * pipeio2.awk, pipeio2.ok, pipeio2.in: new files.
+
+Sun Apr 20 12:22:52 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (clobber): new test case.
+ * clobber.awk, clobber.ok: new files.
+
+Fri Apr 18 07:55:47 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * BETA Release 3.0.34: Release tar file made.
+
+Tue Apr 15 05:57:29 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (strftlng): More wizardry for bizarre Unix systems.
+ (nlfldsep): use program and input file, not shell script
+ (basic, unix-tests, gawk.extensions): moved specfile, pipeio1
+ and strftlng into unix-tests per Pat Rankin.
+ * nlfldsep.awk, nlfldsep.in: new files.
+ * nlfldsep.sh: removed.
+
+Wed Apr 9 23:32:47 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (funstack): new test case.
+ * funstack.awk, funstack.in, funstack.ok: new files.
+ * substr.awk: added many more tests.
+ * substr.ok: updated
+
+Wed Mar 19 20:10:21 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (pipeio1): new test case.
+ * pipeio1.awk, pipeio1.ok: new files.
+
+Tue Mar 18 06:38:36 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (noparm): new test case.
+ * noparm.awk, noparm.ok: new files.
+
+Fri Feb 21 06:30:18 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (reint): new test case.
+ * reint.awk, reint.in, reint.ok: new files.
+
+Wed Feb 5 18:17:51 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (fnarydel): new test case.
+ * fnarydel.awk, fnarydel.ok: new files.
+
+Sun Jan 19 17:06:18 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (nors): new test case.
+ * nors.ok: new file.
+
+Sun Jan 19 17:06:18 1997 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (specfile, strftlng, nfldstr): new test cases.
+ * specfile.awk, strftlng.awk, strftlng.ok, nfldstr.ok: new files.
+
+Fri Dec 27 11:27:13 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (intest): new test case.
+ * intest.awk, intest.ok: new files.
+
+Wed Dec 25 11:25:22 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.2: Release tar file made.
+
+Tue Dec 10 23:09:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Release 3.0.1: Release tar file made.
+
+Thu Nov 7 09:12:20 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (splitvar): new test case.
+ * splitvar.awk, splitvar.in, splitvar.ok: new files.
+
+Sun Nov 3 10:55:50 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (nlfldsep): new test case.
+ * nlfldsep.sh, nlfldsep.ok: new files.
+
+Fri Oct 25 10:29:56 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * rand.awk: call srand with fixed seed.
+ * rand.ok: new file.
+ * Makefile.in (rand): changed to compare output with rand.ok.
+
+Sat Oct 19 21:52:04 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (tradanch): new test case.
+ * tradanch.awk, tradanch.in, tradanch.ok: new files.
+
+Thu Oct 17 21:22:05 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * tweakfld.awk: move `rm' out into Makefile.in.
+ * eofsplit.awk: fixed buggy code so won't loop forever.
+ * Makefile.in (all): add unix-tests.
+ (unix-tests): new target, has pound-bang, fflush, getlnhd.
+ (basic): removed fflush, getlnhd.
+ (tweakfld): added rm from tweakfld.awk.
+
+Sun Oct 6 22:00:35 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (back89): new test case.
+ * back89.in, back89.ok: new files.
+
+Sun Oct 6 20:45:54 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (splitwht): new test case.
+ * splitwht.awk, splitwht.ok: new files.
+
+Sun Sep 29 23:14:20 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (gsubtest): new test case.
+ * gsubtest.awk, gsubtest.ok: new files.
+
+Fri Sep 20 11:58:40 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (prtoeval): new test case.
+ * prtoeval.awk, prtoeval.ok: new files.
+
+Tue Sep 10 06:26:44 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (gsubasgn): new test case.
+ * gsubasgn.awk, gsubasgn.ok: new files.
+
+Wed Aug 28 22:06:33 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * badargs.ok: updated output corresponding to change made to
+ main.c (see main ChangeLog).
+
+Thu Aug 1 07:20:28 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (clean): remove out[123] files from `messages' test.
+ Thanks to Pat Rankin (rankin@eql.caltech.edu).
+
+Sat Jul 27 23:56:57 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (prt1eval): new test case.
+ * prt1eval.awk, prt1eval.ok: new files.
+
+Mon Jul 22 22:06:10 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (eofsplit): new test case.
+ * eofsplit.awk, eofsplit.ok: new files.
+
+Sun Jul 14 07:07:45 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (fldchgnf): new test case.
+ * fldchgnf.awk, fldchgnf.ok: new files.
+
+Tue May 21 23:23:22 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (substr): new test case.
+ * substr.awk, substr.ok: new files.
+
+Tue May 14 15:05:23 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (dynlj): new test case.
+ * dynlj.awk, dynlj.ok: new files.
+
+Sun May 12 20:45:34 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (fnarray): new test case.
+ * fnarray.awk, fnarray.ok: new files.
+
+Fri Mar 15 06:46:48 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (clean): added `*~' to list of files to be removed.
+ * tweakfld.awk (END): added to do clean up action.
+
+Thu Mar 14 16:41:32 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (mmap8k): new test case.
+ * mmap8k.in, mmap8k.ok: new files.
+
+Sun Mar 10 22:58:35 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (clsflnam): new test case.
+ * clsflnam.in, clsflnam.awk, clsflnam.ok: new files.
+ * tweakfld.awk: changed to have a fixed date.
+
+Thu Mar 7 09:56:09 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (tweakfld): new test case.
+ * tweakfld.in, tweakfld.awk, tweakfld.ok: new files.
+
+Sun Mar 3 06:51:26 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (getlnhd, backgsub) : new test cases.
+ * getlnhd.awk, getlnhd.ok: new files.
+ * backgsub.in, backgsub.awk, backgsub.ok: new files.
+
+Mon Feb 26 22:30:02 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (sprintfc): new test case.
+ * sprintfc.in, sprintfc.awk, sprintfc.ok: new files.
+ * gensub.awk: updated for case of no match of regex.
+
+Wed Jan 24 10:06:16 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * Makefile.in (distclean, maintainer-clean): new targets.
+ (reindops): added test from Rick Adams (rick@uunet.uu.net).
+ (arrayparm, paramdup, defref, strftime, prmarscl, sclforin,
+ sclifin): Fix from Larry Schwimmer (schwim@cyclone.stanford.edu)
+ so that tests that are supposed to fail use `... || exit 0' to
+ cause a clean `make clean'.
+
+Wed Jan 10 22:58:55 1996 Arnold D. Robbins <arnold@skeeve.atl.ga.us>
+
+ * ChangeLog created.
diff --git a/test/Gentests b/test/Gentests
new file mode 100755
index 0000000..10401dd
--- /dev/null
+++ b/test/Gentests
@@ -0,0 +1,92 @@
+#!/usr/bin/gawk -f
+
+# This program should generate Maketests
+
+BEGIN {
+ # read the list of files
+ for (i = 2; i < ARGC; i++)
+ files[ARGV[i]]
+
+ # throw it away
+ ARGC = 2
+
+ ntests = 0
+}
+
+# process the file Makefile.am:
+
+/^[A-Z_]*_TESTS *=/,/[^\\]$/ {
+ gsub(/(^[A-Z_]*_TESTS *=|\\$)/,"")
+ for (i = 1; i <= NF; i++)
+ tests[++ntests] = $i
+ next
+}
+
+/^NEED_LINT *=/,/[^\\]$/ {
+ gsub(/(^NEED_LINT *=|\\$)/,"")
+ for (i = 1; i <= NF; i++)
+ lint[$i]
+ next
+}
+
+/^GENTESTS_UNUSED *=/,/[^\\]$/ {
+ gsub(/(^GENTESTS_UNUSED *=|\\$)/,"")
+ for (i = 1; i <= NF; i++)
+ unused[$i]
+ next
+}
+
+/^[a-zA-Z][a-zA-Z0-9]*:/ {
+ # remember all targets from Makefile.am
+ sub(/:.*/,"")
+ targets[$0]
+}
+
+# Now write the output file:
+END {
+ # this line tells automake to keep the comment with the rules:
+ print "Gt-dummy:"
+ print "# file Maketests, generated from Makefile.am by the Gentests program"
+
+ for (i = 1; i <= ntests; i++) {
+ x = tests[i]
+ if (!(x in targets))
+ generate(x)
+ }
+
+ print "# end of file Maketests"
+}
+
+function generate(x, s)
+{
+ if (!(x".awk" in files))
+ printf "WARNING: file `%s.awk' not found.\n", x > "/dev/stderr"
+ else
+ delete files[x".awk"]
+
+ print x ":"
+
+ s = ""
+ if (x in lint) {
+ s = s " --lint"
+ delete lint[x]
+ }
+ if (x".in" in files) {
+ s = s " < $(srcdir)/$@.in"
+ delete files[x".in"]
+ }
+
+ printf "\t@echo %s\n", x
+ printf "\t@AWKPATH=$(srcdir) $(AWK) -f $@.awk %s >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@\n", s
+ printf "\t@-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@\n\n"
+}
+
+END {
+ for (x in lint)
+ if (!(x in targets))
+ printf "WARNING: --lint target `%s' is missing.\n", x > "/dev/stderr"
+ for (x in files)
+ if (!(x in unused) && \
+ !(gensub(/\.(awk|in)$/,"","",x) in targets))
+ printf "WARNING: unused file `%s'.\n", x > "/dev/stderr"
+}
diff --git a/test/Makefile.am b/test/Makefile.am
new file mode 100644
index 0000000..ada5d39
--- /dev/null
+++ b/test/Makefile.am
@@ -0,0 +1,1005 @@
+#
+# test/Makefile.am --- automake input file for gawk
+#
+# Copyright (C) 1988-2005 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+
+## process this file with automake to produce Makefile.in
+
+EXTRA_DIST = \
+ reg \
+ lib \
+ Gentests \
+ Maketests \
+ README \
+ addcomma.awk \
+ addcomma.in \
+ addcomma.ok \
+ anchgsub.awk \
+ anchgsub.in \
+ anchgsub.ok \
+ argarray.awk \
+ argarray.in \
+ argarray.ok \
+ argtest.awk \
+ argtest.ok \
+ arrayparm.awk \
+ arrayparm.ok \
+ arrayprm2.awk \
+ arrayprm2.ok \
+ arrayprm3.awk \
+ arrayprm3.ok \
+ arrayref.awk \
+ arrayref.ok \
+ arrymem1.awk \
+ arrymem1.ok \
+ arryref2.awk \
+ arryref2.ok \
+ arryref3.awk \
+ arryref3.ok \
+ arryref4.awk \
+ arryref4.ok \
+ arryref5.awk \
+ arryref5.ok \
+ arynasty.awk \
+ arynasty.ok \
+ arynocls.awk \
+ arynocls.in \
+ arynocls.ok \
+ aryprm1.awk \
+ aryprm1.ok \
+ aryprm2.awk \
+ aryprm2.ok \
+ aryprm3.awk \
+ aryprm3.ok \
+ aryprm4.awk \
+ aryprm4.ok \
+ aryprm5.awk \
+ aryprm5.ok \
+ aryprm6.awk \
+ aryprm6.ok \
+ aryprm7.awk \
+ aryprm7.ok \
+ aryprm8.awk \
+ aryprm8.ok \
+ arysubnm.awk \
+ arysubnm.ok \
+ asgext.awk \
+ asgext.in \
+ asgext.ok \
+ asort.awk \
+ asort.ok \
+ asorti.awk \
+ asorti.ok \
+ awkpath.ok \
+ back89.awk \
+ back89.in \
+ back89.ok \
+ backgsub.awk \
+ backgsub.in \
+ backgsub.ok \
+ backw.awk \
+ backw.in \
+ backw.ok \
+ badargs.ok \
+ childin.awk \
+ childin.in \
+ childin.ok \
+ clobber.awk \
+ clobber.ok \
+ clos1way.awk \
+ clos1way.ok \
+ clsflnam.awk \
+ clsflnam.in \
+ clsflnam.ok \
+ compare.awk \
+ compare.in \
+ compare.ok \
+ compare2.awk \
+ compare2.ok \
+ concat1.awk \
+ concat1.in \
+ concat1.ok \
+ concat2.awk \
+ concat2.ok \
+ concat3.awk \
+ concat3.ok \
+ convfmt.awk \
+ convfmt.ok \
+ datanonl.awk \
+ datanonl.in \
+ datanonl.ok \
+ defref.awk \
+ defref.ok \
+ delarprm.awk \
+ delarprm.ok \
+ delarpm2.awk \
+ delarpm2.ok \
+ delfunc.awk \
+ delfunc.ok \
+ dynlj.awk \
+ dynlj.ok \
+ eofsplit.awk \
+ eofsplit.ok \
+ exitval1.awk \
+ exitval1.ok \
+ exitval2.awk \
+ exitval2.ok \
+ fflush.ok \
+ fflush.sh \
+ fieldwdth.awk \
+ fieldwdth.in \
+ fieldwdth.ok \
+ fldchg.awk \
+ fldchg.in \
+ fldchg.ok \
+ fldchgnf.awk \
+ fldchgnf.in \
+ fldchgnf.ok \
+ fmttest.awk \
+ fmttest.ok \
+ fnamedat.awk \
+ fnamedat.in \
+ fnamedat.ok \
+ fnarray.awk \
+ fnarray.ok \
+ fnarray2.awk \
+ fnarray2.ok \
+ fnarydel.awk \
+ fnarydel.ok \
+ fnaryscl.awk \
+ fnaryscl.ok \
+ fnasgnm.awk \
+ fnasgnm.in \
+ fnasgnm.ok \
+ fnmisc.awk \
+ fnmisc.ok \
+ fnparydl.awk \
+ fnparydl.ok \
+ fordel.awk \
+ fordel.ok \
+ forsimp.awk \
+ forsimp.ok \
+ fsbs.awk \
+ fsbs.in \
+ fsbs.ok \
+ fsfwfs.awk \
+ fsfwfs.in \
+ fsfwfs.ok \
+ fsrs.awk \
+ fsrs.in \
+ fsrs.ok \
+ fsspcoln.awk \
+ fsspcoln.in \
+ fsspcoln.ok \
+ fstabplus.awk \
+ fstabplus.in \
+ fstabplus.ok \
+ funsemnl.awk \
+ funsemnl.ok \
+ funsmnam.awk \
+ funsmnam.ok \
+ funstack.awk \
+ funstack.in \
+ funstack.ok \
+ gensub.awk \
+ gensub.in \
+ gensub.ok \
+ gensub2.awk \
+ gensub2.ok \
+ getline.awk \
+ getline.in \
+ getline.ok \
+ getline2.awk \
+ getline2.ok \
+ getline3.awk \
+ getline3.ok \
+ getlnbuf.awk \
+ getlnbuf.in \
+ getlnbuf.ok \
+ getlnhd.awk \
+ getlnhd.ok \
+ getnr2tb.awk \
+ getnr2tb.in \
+ getnr2tb.ok \
+ getnr2tm.awk \
+ getnr2tm.in \
+ getnr2tm.ok \
+ gnuops2.awk \
+ gnuops2.ok \
+ gnuops3.awk \
+ gnuops3.ok \
+ gnureops.awk \
+ gnureops.ok \
+ gsubasgn.awk \
+ gsubasgn.ok \
+ gsubtest.awk \
+ gsubtest.ok \
+ gsubtst2.awk \
+ gsubtst2.ok \
+ gsubtst3.awk \
+ gsubtst3.in \
+ gsubtst3.ok \
+ gsubtst4.awk \
+ gsubtst4.ok \
+ gsubtst5.awk \
+ gsubtst5.in \
+ gsubtst5.ok \
+ gtlnbufv.awk \
+ hex.awk \
+ hex.ok \
+ hsprint.awk \
+ hsprint.ok \
+ icasefs.awk \
+ icasefs.ok \
+ icasers.awk \
+ icasers.in \
+ icasers.ok \
+ igncdym.awk \
+ igncdym.in \
+ igncdym.ok \
+ igncfs.awk \
+ igncfs.in \
+ igncfs.ok \
+ ignrcase.awk \
+ ignrcase.in \
+ ignrcase.ok \
+ ignrcas2.awk \
+ ignrcas2.ok \
+ inftest.awk \
+ inftest.ok \
+ inputred.awk \
+ inputred.ok \
+ intest.awk \
+ intest.ok \
+ intprec.awk \
+ intprec.ok \
+ iobug1.awk \
+ iobug1.ok \
+ leaddig.awk \
+ leaddig.ok \
+ leadnl.awk \
+ leadnl.in \
+ leadnl.ok \
+ lint.awk \
+ lint.ok \
+ litoct.awk \
+ litoct.ok \
+ longdbl.awk \
+ longdbl.in \
+ longdbl.ok \
+ longsub.awk \
+ longsub.in \
+ longsub.ok \
+ longwrds.awk \
+ longwrds.ok \
+ longwrds.in \
+ manglprm.awk \
+ manglprm.in \
+ manglprm.ok \
+ manyfiles.awk \
+ manyfiles.ok \
+ match1.awk \
+ match1.ok \
+ match2.awk \
+ match2.ok \
+ math.awk \
+ math.ok \
+ membug1.awk \
+ membug1.in \
+ membug1.ok \
+ messages.awk \
+ minusstr.awk \
+ minusstr.ok \
+ mmap8k.in \
+ nasty.awk \
+ nasty.ok \
+ nasty2.awk \
+ nasty2.ok \
+ negexp.awk \
+ negexp.ok \
+ nested.awk \
+ nested.in \
+ nested.ok \
+ nfldstr.awk \
+ nfldstr.in \
+ nfldstr.ok \
+ nfneg.awk \
+ nfneg.ok \
+ nfset.awk \
+ nfset.in \
+ nfset.ok \
+ nlfldsep.awk \
+ nlfldsep.in \
+ nlfldsep.ok \
+ nlinstr.awk \
+ nlinstr.in \
+ nlinstr.ok \
+ nlstrina.awk \
+ nlstrina.ok \
+ noeffect.awk \
+ noeffect.ok \
+ nofmtch.awk \
+ nofmtch.ok \
+ noloop1.awk \
+ noloop1.in \
+ noloop1.ok \
+ noloop2.awk \
+ noloop2.in \
+ noloop2.ok \
+ nondec.awk \
+ nondec.ok \
+ nondec2.awk \
+ nondec2.ok \
+ nonl.awk \
+ nonl.ok \
+ noparms.awk \
+ noparms.ok \
+ nors.in \
+ nors.ok \
+ nulrsend.awk \
+ nulrsend.in \
+ nulrsend.ok \
+ numindex.awk \
+ numindex.in \
+ numindex.ok \
+ numsubstr.awk \
+ numsubstr.in \
+ numsubstr.ok \
+ octsub.awk \
+ octsub.ok \
+ ofmt.awk \
+ ofmt.in \
+ ofmt.ok \
+ ofmtbig.awk \
+ ofmtbig.in \
+ ofmtbig.ok \
+ ofmtfidl.awk \
+ ofmtfidl.in \
+ ofmtfidl.ok \
+ ofmts.awk \
+ ofmts.in \
+ ofmts.ok \
+ onlynl.awk \
+ onlynl.in \
+ onlynl.ok \
+ opasnidx.awk \
+ opasnidx.ok \
+ opasnslf.awk \
+ opasnslf.ok \
+ out1.ok \
+ out2.ok \
+ out3.ok \
+ paramdup.awk \
+ paramdup.ok \
+ paramtyp.awk \
+ paramtyp.ok \
+ parseme.awk \
+ parseme.ok \
+ pcntplus.awk \
+ pcntplus.ok \
+ pid.awk \
+ pid.ok \
+ pid.sh \
+ pipeio1.awk \
+ pipeio1.ok \
+ pipeio2.awk \
+ pipeio2.in \
+ pipeio2.ok \
+ posix.awk \
+ posix.in \
+ posix.ok \
+ poundbang.awk \
+ prdupval.awk \
+ prdupval.in \
+ prdupval.ok \
+ prec.awk \
+ prec.ok \
+ printf0.awk \
+ printf0.ok \
+ printf1.awk \
+ printf1.ok \
+ printfbad1.awk \
+ printfbad1.ok \
+ printfloat.awk \
+ printlang.awk \
+ prmarscl.awk \
+ prmarscl.ok \
+ prmreuse.awk \
+ prmreuse.ok \
+ procinfs.awk \
+ procinfs.ok \
+ prt1eval.awk \
+ prt1eval.ok \
+ prtoeval.awk \
+ prtoeval.ok \
+ psx96sub.awk \
+ psx96sub.ok \
+ rand.awk \
+ rand.ok \
+ rebt8b1.awk \
+ rebt8b1.ok \
+ rebt8b2.awk \
+ rebt8b2.ok \
+ redfilnm.awk \
+ redfilnm.in \
+ redfilnm.ok \
+ regeq.awk \
+ regeq.in \
+ regeq.ok \
+ regtest.sh \
+ regx8bit.awk \
+ regx8bit.ok \
+ rebuf.awk \
+ rebuf.in \
+ rebuf.ok \
+ reindops.awk \
+ reindops.in \
+ reindops.ok \
+ reint.awk \
+ reint.in \
+ reint.ok \
+ reparse.awk \
+ reparse.in \
+ reparse.ok \
+ resplit.awk \
+ resplit.in \
+ resplit.ok \
+ rs.awk \
+ rs.in \
+ rs.ok \
+ rsnul1nl.awk \
+ rsnul1nl.in \
+ rsnul1nl.ok \
+ rsnulbig.ok \
+ rsnulbig2.ok \
+ rsstart1.awk \
+ rsstart1.in \
+ rsstart1.ok \
+ rsstart2.awk \
+ rsstart2.ok \
+ rsstart3.ok \
+ rstest1.awk \
+ rstest1.ok \
+ rstest2.awk \
+ rstest2.ok \
+ rstest3.awk \
+ rstest3.ok \
+ rstest4.awk \
+ rstest4.ok \
+ rstest5.awk \
+ rstest5.ok \
+ rstest6.awk \
+ rstest6.in \
+ rstest6.ok \
+ rswhite.awk \
+ rswhite.in \
+ rswhite.ok \
+ scalar.awk \
+ scalar.ok \
+ sclforin.awk \
+ sclforin.ok \
+ sclifin.awk \
+ sclifin.ok \
+ shadow.awk \
+ shadow.ok \
+ sort1.awk \
+ sort1.ok \
+ sortempty.awk \
+ sortempty.ok \
+ space.ok \
+ splitargv.awk \
+ splitargv.in \
+ splitargv.ok \
+ splitarr.awk \
+ splitarr.ok \
+ splitdef.awk \
+ splitdef.ok \
+ splitvar.awk \
+ splitvar.in \
+ splitvar.ok \
+ splitwht.awk \
+ splitwht.ok \
+ sprintfc.awk \
+ sprintfc.in \
+ sprintfc.ok \
+ strcat1.awk \
+ strcat1.ok \
+ strtod.awk \
+ strtod.in \
+ strtod.ok \
+ strtonum.awk \
+ strtonum.ok \
+ strftime.awk \
+ strftlng.awk \
+ strftlng.ok \
+ subamp.awk \
+ subamp.in \
+ subamp.ok \
+ subsepnm.awk \
+ subsepnm.ok \
+ subslash.awk \
+ subslash.ok \
+ substr.awk \
+ substr.ok \
+ swaplns.awk \
+ swaplns.in \
+ swaplns.ok \
+ switch2.awk \
+ synerr1.awk \
+ synerr1.ok \
+ tradanch.awk \
+ tradanch.in \
+ tradanch.ok \
+ tweakfld.awk \
+ tweakfld.in \
+ tweakfld.ok \
+ uninit2.awk \
+ uninit2.ok \
+ uninit3.awk \
+ uninit3.ok \
+ uninit4.awk \
+ uninit4.ok \
+ uninitialized.awk \
+ uninitialized.ok \
+ unterm.awk \
+ unterm.ok \
+ whiny.awk \
+ whiny.in \
+ whiny.ok \
+ wjposer1.awk \
+ wjposer1.in \
+ wjposer1.ok \
+ zeroe0.awk \
+ zeroe0.ok \
+ zeroflag.awk \
+ zeroflag.ok
+
+TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
+
+# Get rid of core files when cleaning
+CLEANFILES = core core.*
+
+# try to keep these sorted
+BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
+ arrayprm2 arrayprm3 arryref2 arryref3 arryref4 arryref5 arynasty \
+ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
+ aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
+ clsflnam compare compare2 concat1 concat2 concat3 convfmt datanonl defref \
+ delarprm delarpm2 delfunc dynlj eofsplit exitval1 exitval2 fldchg fldchgnf fmttest fnamedat \
+ fnarray fnarray2 fnarydel fnaryscl fnasgnm fnmisc fnparydl \
+ fordel forsimp fsbs fsspcoln fsrs fstabplus funsemnl funsmnam funstack getline \
+ getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
+ gsubtst2 gsubtst3 gsubtst4 gsubtst5 hex hsprint inputred intest \
+ intprec iobug1 leaddig leadnl litoct longsub longwrds manglprm math membug1 \
+ messages minusstr mmap8k nasty nasty2 negexp nested nfldstr \
+ nfneg nfset nlfldsep nlinstr nlstrina noeffect nofmtch noloop1 \
+ noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
+ ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup paramtyp \
+ parseme pcntplus prdupval prec printf0 printf1 prmarscl prmreuse \
+ prt1eval prtoeval psx96sub rand rebt8b1 rebt8b2 redfilnm regeq \
+ reindops reparse resplit rs rsnul1nl rsnulbig rsnulbig2 rstest1 \
+ rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \
+ sortempty splitargv splitarr splitdef splitvar splitwht sprintfc \
+ strcat1 strtod subamp subsepnm subslash substr swaplns synerr1 tradanch \
+ tweakfld uninit2 uninit3 uninit4 uninitialized unterm wjposer1 \
+ zeroe0 zeroflag
+
+UNIX_TESTS = fflush getlnhd pid pipeio1 pipeio2 poundbang space strftlng
+
+GAWK_EXT_TESTS = argtest asort asorti backw badargs clos1way fieldwdth fsfwfs \
+ gensub gensub2 gnuops2 gnuops3 gnureops icasefs icasers igncdym igncfs ignrcase \
+ ignrcas2 lint match1 match2 manyfiles nondec nondec2 posix procinfs \
+ printfbad1 regx8bit rebuf reint rsstart1 rsstart2 rsstart3 \
+ rstest6 shadow sort1 strtonum strftime whiny
+
+EXTRA_TESTS = regtest inftest
+
+INET_TESTS = inetechu inetecht inetdayu inetdayt
+
+# List of the tests which should be run with --lint option:
+NEED_LINT = defref noeffect nofmtch shadow uninit2 uninit3 uninit4 uninitialized
+
+# List of the files that appear in manual tests or are for reserve testing:
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk switch2.awk
+
+CMP = cmp
+AWKPROG = ../gawk$(EXEEXT)
+
+# This business forces the locale to be C for running the tests,
+# unless we override it to something else for testing.
+#
+# This can also be done in individual tests where we wish to
+# check things specifically not in the C locale.
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG)
+
+# Message stuff is to make it a little easier to follow.
+# Make the pass-fail last and dependent on others to avoid
+# spurious errors if `make -j' in effect.
+check: msg \
+ printlang \
+ basic-msg-start basic basic-msg-end \
+ unix-msg-start unix-tests unix-msg-end \
+ extend-msg-start gawk-extensions extend-msg-end
+ @$(MAKE) pass-fail
+
+basic: $(BASIC_TESTS)
+
+unix-tests: $(UNIX_TESTS)
+
+gawk-extensions: $(GAWK_EXT_TESTS)
+
+extra: $(EXTRA_TESTS) inet
+
+inet: inetmesg $(INET_TESTS)
+
+msg::
+ @echo ''
+ @echo 'Any output from "cmp" is bad news, although some differences'
+ @echo 'in floating point values are probably benign -- in particular,'
+ @echo 'some systems may omit a leading zero and the floating point'
+ @echo 'precision may lead to slightly different output in a few cases.'
+
+printlang::
+ @$(AWK) -f $(srcdir)/printlang.awk
+
+basic-msg-start:
+ @echo "======== Starting basic tests ========"
+
+basic-msg-end:
+ @echo "======== Done with basic tests ========"
+
+unix-msg-start:
+ @echo "======== Starting Unix tests ========"
+
+unix-msg-end:
+ @echo "======== Done with Unix tests ========"
+
+extend-msg-start:
+ @echo "======== Starting gawk extension tests ========"
+
+extend-msg-end:
+ @echo "======== Done with gawk extension tests ========"
+
+
+# This test is a PITA because increasingly, /tmp is getting
+# mounted noexec. So, we'll test it locally. Sigh.
+#
+# More PITA; some systems have medium short limits on #! paths,
+# so this can still fail
+poundbang::
+ @echo $@
+ @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
+ @chmod +x ./_pbd.awk
+ @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
+ then : ; \
+ else \
+ sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
+ chmod +x ./_pbd.awk ; \
+ LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
+ fi
+ @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
+
+messages::
+ @echo $@
+ @$(AWK) -f $(srcdir)/messages.awk >out2 2>out3
+ @-$(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && $(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3
+
+argarray::
+ @echo $@
+ @case $(srcdir) in \
+ .) : ;; \
+ *) cp $(srcdir)/argarray.in . ;; \
+ esac
+ @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
+ @case $(srcdir) in \
+ .) : ;; \
+ *) rm -f ./argarray.in ;; \
+ esac
+ @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
+
+regtest::
+ @echo 'Some of the output from regtest is very system specific, do not'
+ @echo 'be distressed if your output differs from that distributed.'
+ @echo 'Manual inspection is called for.'
+ AWK=`pwd`/$(AWK) $(srcdir)/regtest.sh
+
+manyfiles::
+ @echo manyfiles
+ @rm -rf junk
+ @mkdir junk
+ @$(AWK) 'BEGIN { for (i = 1; i <= 300; i++) print i, i}' >_$@
+ @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
+ @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
+ @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+compare::
+ @echo $@
+ @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
+ @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
+
+inftest::
+ @echo $@
+ @echo This test is very machine specific...
+ @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@
+ @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
+
+getline2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
+ @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
+
+awkpath::
+ @echo $@
+ @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
+ @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@
+
+argtest::
+ @echo $@
+ @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
+ @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@
+
+badargs::
+ @echo $@
+ @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
+ @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@
+
+nonl::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
+ @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@
+
+strftime::
+ @echo This test could fail on slow machines or on a minute boundary,
+ @echo so if it does, double check the actual results:
+ @echo $@
+ @GAWKLOCALE=C; export GAWKLOCALE; \
+ TZ=GMT0; export TZ; \
+ (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ @-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
+
+litoct::
+ @echo $@
+ @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
+ @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
+
+fflush::
+ @echo $@
+ @$(srcdir)/fflush.sh >_$@
+ @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@
+
+tweakfld::
+ @echo $@
+ @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
+ @rm -f errors.cleanup
+ @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
+
+mmap8k::
+ @echo $@
+ @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
+ @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
+
+tradanch::
+ @echo $@
+ @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
+ @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
+
+# AIX /bin/sh exec's the last command in a list, therefore issue a ":"
+# command so that pid.sh is fork'ed as a child before being exec'ed.
+pid::
+ @echo pid
+ @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
+ @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@` _`basename $@`.in
+
+strftlng::
+ @echo $@
+ @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
+ @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
+ TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
+ fi
+ @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@
+
+nors::
+ @echo $@
+ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@
+ @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
+
+reint::
+ @echo $@
+ @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
+ @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@
+
+pipeio1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
+ @rm -f test1 test2
+ @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
+
+pipeio2::
+ @echo $@
+ @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
+ @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
+
+clobber::
+ @echo $@
+ @$(AWK) -f $(srcdir)/clobber.awk >_$@
+ @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
+ @rm -f seq
+
+arynocls::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
+ @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
+
+getlnbuf::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
+ @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
+ @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
+
+inetmesg::
+ @echo These tests only work if your system supports the services
+ @echo "'discard'" at port 9 and "'daytimed'" at port 13. Check your
+ @echo file /etc/services and do "'netstat -a'".
+
+inetechu::
+ @echo This test is for establishing UDP connections
+ @$(AWK) 'BEGIN {print "" |& "/inet/udp/0/127.0.0.1/9"}'
+
+inetecht::
+ @echo This test is for establishing TCP connections
+ @$(AWK) 'BEGIN {print "" |& "/inet/tcp/0/127.0.0.1/9"}'
+
+inetdayu::
+ @echo This test is for bidirectional UDP transmission
+ @$(AWK) 'BEGIN { print "" |& "/inet/udp/0/127.0.0.1/13"; \
+ "/inet/udp/0/127.0.0.1/13" |& getline; print $0}'
+
+inetdayt::
+ @echo This test is for bidirectional TCP transmission
+ @$(AWK) 'BEGIN { print "" |& "/inet/tcp/0/127.0.0.1/13"; \
+ "/inet/tcp/0/127.0.0.1/13" |& getline; print $0}'
+
+redfilnm::
+ @echo $@
+ @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
+ @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@
+
+leaddig::
+ @echo $@
+ @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
+ @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@
+
+gsubtst3::
+ @echo $@
+ @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+space::
+ @echo $@
+ @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printf0::
+ @echo $@
+ @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnulbig::
+ @echo $@
+ @ : Suppose that block size for pipe is at most 128kB:
+ @$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
+ $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
+ $(AWK) '/^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnulbig2::
+ @echo $@
+ @$(AWK) 'BEGIN { ORS = ""; n = "\n"; for (i = 1; i <= 10; i++) n = (n n); \
+ for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
+ $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
+ $(AWK) '/^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+whiny::
+ @echo $@
+ @WHINY_USERS=1 $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ignrcas2::
+ @echo $@
+ @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subamp::
+ @echo $@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# This test makes sure gawk exits with a zero code.
+# Thus, unconditionally generate the exit code.
+exitval1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsspcoln::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart3::
+ @echo $@
+ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec2::
+ @echo $@
+ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# Targets generated for other tests:
+include Maketests
+
+$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
+ $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" *.awk *.in > $(srcdir)/Maketests
+
+clean:
+ rm -fr _* core core.* junk out1 out2 out3 strftime.ok test1 test2 seq *~
+
+# An attempt to print something that can be grepped for in build logs
+pass-fail:
+ @COUNT=`ls _* 2>/dev/null | wc -l` ; \
+ if test $$COUNT = 0 ; \
+ then echo ALL TESTS PASSED ; \
+ else echo $$COUNT TESTS FAILED ; \
+ fi
+
+# This target for my convenience to look at all the results
+diffout:
+ for i in _* ; \
+ do \
+ echo ============== $$i ============= ; \
+ diff -c $(srcdir)/$${i#_}.ok $$i ; \
+ done | more
+
+# This target is for testing with electric fence.
+efence:
+ for i in $$(ls _* | sed 's;_\(.*\);\1;') ; \
+ do \
+ bad=$$(wc -l < _$$i) \
+ ok=$$(wc -l < $$i.ok) ; \
+ if (( $$bad == $$ok + 2 )) ; \
+ then \
+ rm _$$i ; \
+ fi ; \
+ done
diff --git a/test/Makefile.in b/test/Makefile.in
new file mode 100644
index 0000000..0ce9b09
--- /dev/null
+++ b/test/Makefile.in
@@ -0,0 +1,2249 @@
+# Makefile.in generated by automake 1.9.5 from Makefile.am.
+# @configure_input@
+
+# Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+# 2003, 2004, 2005 Free Software Foundation, Inc.
+# This Makefile.in is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY, to the extent permitted by law; without
+# even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+# PARTICULAR PURPOSE.
+
+@SET_MAKE@
+
+#
+# test/Makefile.am --- automake input file for gawk
+#
+# Copyright (C) 1988-2005 the Free Software Foundation, Inc.
+#
+# This file is part of GAWK, the GNU implementation of the
+# AWK Programming Language.
+#
+# GAWK is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# GAWK is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+#
+srcdir = @srcdir@
+top_srcdir = @top_srcdir@
+VPATH = @srcdir@
+pkgdatadir = $(datadir)/@PACKAGE@
+pkglibdir = $(libdir)/@PACKAGE@
+pkgincludedir = $(includedir)/@PACKAGE@
+top_builddir = ..
+am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+INSTALL = @INSTALL@
+install_sh_DATA = $(install_sh) -c -m 644
+install_sh_PROGRAM = $(install_sh) -c
+install_sh_SCRIPT = $(install_sh) -c
+INSTALL_HEADER = $(INSTALL_DATA)
+transform = $(program_transform_name)
+NORMAL_INSTALL = :
+PRE_INSTALL = :
+POST_INSTALL = :
+NORMAL_UNINSTALL = :
+PRE_UNINSTALL = :
+POST_UNINSTALL = :
+build_triplet = @build@
+host_triplet = @host@
+DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+ $(srcdir)/Maketests ChangeLog
+subdir = test
+ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+am__aclocal_m4_deps = $(top_srcdir)/m4/arch.m4 \
+ $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/iconv.m4 \
+ $(top_srcdir)/m4/intmax_t.m4 $(top_srcdir)/m4/inttypes_h.m4 \
+ $(top_srcdir)/m4/lib-ld.m4 $(top_srcdir)/m4/lib-link.m4 \
+ $(top_srcdir)/m4/lib-prefix.m4 $(top_srcdir)/m4/longlong.m4 \
+ $(top_srcdir)/m4/nls.m4 $(top_srcdir)/m4/po.m4 \
+ $(top_srcdir)/m4/progtest.m4 $(top_srcdir)/m4/socket.m4 \
+ $(top_srcdir)/m4/stdint_h.m4 $(top_srcdir)/m4/strtod.m4 \
+ $(top_srcdir)/m4/uintmax_t.m4 $(top_srcdir)/m4/ulonglong.m4 \
+ $(top_srcdir)/configure.ac
+am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+mkinstalldirs = $(SHELL) $(top_srcdir)/mkinstalldirs
+CONFIG_HEADER = $(top_builddir)/config.h
+CONFIG_CLEAN_FILES =
+SOURCES =
+DIST_SOURCES =
+DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
+ACLOCAL = @ACLOCAL@
+AMDEP_FALSE = @AMDEP_FALSE@
+AMDEP_TRUE = @AMDEP_TRUE@
+AMTAR = @AMTAR@
+AUTOCONF = @AUTOCONF@
+AUTOHEADER = @AUTOHEADER@
+AUTOMAKE = @AUTOMAKE@
+
+# This business forces the locale to be C for running the tests,
+# unless we override it to something else for testing.
+#
+# This can also be done in individual tests where we wish to
+# check things specifically not in the C locale.
+AWK = LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} $(AWKPROG)
+CC = @CC@
+CCDEPMODE = @CCDEPMODE@
+CFLAGS = @CFLAGS@
+CPP = @CPP@
+CPPFLAGS = @CPPFLAGS@
+CYGPATH_W = @CYGPATH_W@
+DEFS = @DEFS@
+DEPDIR = @DEPDIR@
+ECHO_C = @ECHO_C@
+ECHO_N = @ECHO_N@
+ECHO_T = @ECHO_T@
+EGREP = @EGREP@
+EXEEXT = @EXEEXT@
+GMSGFMT = @GMSGFMT@
+INSTALL_DATA = @INSTALL_DATA@
+INSTALL_PROGRAM = @INSTALL_PROGRAM@
+INSTALL_SCRIPT = @INSTALL_SCRIPT@
+INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@
+INTLLIBS = @INTLLIBS@
+INTL_MACOSX_LIBS = @INTL_MACOSX_LIBS@
+LDFLAGS = @LDFLAGS@
+LIBICONV = @LIBICONV@
+LIBINTL = @LIBINTL@
+LIBOBJS = @LIBOBJS@
+LIBS = @LIBS@
+LN_S = @LN_S@
+LTLIBICONV = @LTLIBICONV@
+LTLIBINTL = @LTLIBINTL@
+LTLIBOBJS = @LTLIBOBJS@
+MAKEINFO = @MAKEINFO@
+MKINSTALLDIRS = @MKINSTALLDIRS@
+MSGFMT = @MSGFMT@
+MSGMERGE = @MSGMERGE@
+OBJEXT = @OBJEXT@
+PACKAGE = @PACKAGE@
+PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+PACKAGE_NAME = @PACKAGE_NAME@
+PACKAGE_STRING = @PACKAGE_STRING@
+PACKAGE_TARNAME = @PACKAGE_TARNAME@
+PACKAGE_VERSION = @PACKAGE_VERSION@
+PATH_SEPARATOR = @PATH_SEPARATOR@
+POSUB = @POSUB@
+RANLIB = @RANLIB@
+SET_MAKE = @SET_MAKE@
+SHELL = @SHELL@
+SOCKET_LIBS = @SOCKET_LIBS@
+STRIP = @STRIP@
+U = @U@
+USE_NLS = @USE_NLS@
+VERSION = @VERSION@
+XGETTEXT = @XGETTEXT@
+YACC = @YACC@
+ac_ct_CC = @ac_ct_CC@
+ac_ct_RANLIB = @ac_ct_RANLIB@
+ac_ct_STRIP = @ac_ct_STRIP@
+am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+am__include = @am__include@
+am__leading_dot = @am__leading_dot@
+am__quote = @am__quote@
+am__tar = @am__tar@
+am__untar = @am__untar@
+bindir = @bindir@
+build = @build@
+build_alias = @build_alias@
+build_cpu = @build_cpu@
+build_os = @build_os@
+build_vendor = @build_vendor@
+datadir = @datadir@
+exec_prefix = @exec_prefix@
+host = @host@
+host_alias = @host_alias@
+host_cpu = @host_cpu@
+host_os = @host_os@
+host_vendor = @host_vendor@
+includedir = @includedir@
+infodir = @infodir@
+install_sh = @install_sh@
+libdir = @libdir@
+libexecdir = @libexecdir@
+localstatedir = @localstatedir@
+mandir = @mandir@
+mkdir_p = @mkdir_p@
+oldincludedir = @oldincludedir@
+prefix = @prefix@
+program_transform_name = @program_transform_name@
+sbindir = @sbindir@
+sharedstatedir = @sharedstatedir@
+sysconfdir = @sysconfdir@
+target_alias = @target_alias@
+EXTRA_DIST = \
+ reg \
+ lib \
+ Gentests \
+ Maketests \
+ README \
+ addcomma.awk \
+ addcomma.in \
+ addcomma.ok \
+ anchgsub.awk \
+ anchgsub.in \
+ anchgsub.ok \
+ argarray.awk \
+ argarray.in \
+ argarray.ok \
+ argtest.awk \
+ argtest.ok \
+ arrayparm.awk \
+ arrayparm.ok \
+ arrayprm2.awk \
+ arrayprm2.ok \
+ arrayprm3.awk \
+ arrayprm3.ok \
+ arrayref.awk \
+ arrayref.ok \
+ arrymem1.awk \
+ arrymem1.ok \
+ arryref2.awk \
+ arryref2.ok \
+ arryref3.awk \
+ arryref3.ok \
+ arryref4.awk \
+ arryref4.ok \
+ arryref5.awk \
+ arryref5.ok \
+ arynasty.awk \
+ arynasty.ok \
+ arynocls.awk \
+ arynocls.in \
+ arynocls.ok \
+ aryprm1.awk \
+ aryprm1.ok \
+ aryprm2.awk \
+ aryprm2.ok \
+ aryprm3.awk \
+ aryprm3.ok \
+ aryprm4.awk \
+ aryprm4.ok \
+ aryprm5.awk \
+ aryprm5.ok \
+ aryprm6.awk \
+ aryprm6.ok \
+ aryprm7.awk \
+ aryprm7.ok \
+ aryprm8.awk \
+ aryprm8.ok \
+ arysubnm.awk \
+ arysubnm.ok \
+ asgext.awk \
+ asgext.in \
+ asgext.ok \
+ asort.awk \
+ asort.ok \
+ asorti.awk \
+ asorti.ok \
+ awkpath.ok \
+ back89.awk \
+ back89.in \
+ back89.ok \
+ backgsub.awk \
+ backgsub.in \
+ backgsub.ok \
+ backw.awk \
+ backw.in \
+ backw.ok \
+ badargs.ok \
+ childin.awk \
+ childin.in \
+ childin.ok \
+ clobber.awk \
+ clobber.ok \
+ clos1way.awk \
+ clos1way.ok \
+ clsflnam.awk \
+ clsflnam.in \
+ clsflnam.ok \
+ compare.awk \
+ compare.in \
+ compare.ok \
+ compare2.awk \
+ compare2.ok \
+ concat1.awk \
+ concat1.in \
+ concat1.ok \
+ concat2.awk \
+ concat2.ok \
+ concat3.awk \
+ concat3.ok \
+ convfmt.awk \
+ convfmt.ok \
+ datanonl.awk \
+ datanonl.in \
+ datanonl.ok \
+ defref.awk \
+ defref.ok \
+ delarprm.awk \
+ delarprm.ok \
+ delarpm2.awk \
+ delarpm2.ok \
+ delfunc.awk \
+ delfunc.ok \
+ dynlj.awk \
+ dynlj.ok \
+ eofsplit.awk \
+ eofsplit.ok \
+ exitval1.awk \
+ exitval1.ok \
+ exitval2.awk \
+ exitval2.ok \
+ fflush.ok \
+ fflush.sh \
+ fieldwdth.awk \
+ fieldwdth.in \
+ fieldwdth.ok \
+ fldchg.awk \
+ fldchg.in \
+ fldchg.ok \
+ fldchgnf.awk \
+ fldchgnf.in \
+ fldchgnf.ok \
+ fmttest.awk \
+ fmttest.ok \
+ fnamedat.awk \
+ fnamedat.in \
+ fnamedat.ok \
+ fnarray.awk \
+ fnarray.ok \
+ fnarray2.awk \
+ fnarray2.ok \
+ fnarydel.awk \
+ fnarydel.ok \
+ fnaryscl.awk \
+ fnaryscl.ok \
+ fnasgnm.awk \
+ fnasgnm.in \
+ fnasgnm.ok \
+ fnmisc.awk \
+ fnmisc.ok \
+ fnparydl.awk \
+ fnparydl.ok \
+ fordel.awk \
+ fordel.ok \
+ forsimp.awk \
+ forsimp.ok \
+ fsbs.awk \
+ fsbs.in \
+ fsbs.ok \
+ fsfwfs.awk \
+ fsfwfs.in \
+ fsfwfs.ok \
+ fsrs.awk \
+ fsrs.in \
+ fsrs.ok \
+ fsspcoln.awk \
+ fsspcoln.in \
+ fsspcoln.ok \
+ fstabplus.awk \
+ fstabplus.in \
+ fstabplus.ok \
+ funsemnl.awk \
+ funsemnl.ok \
+ funsmnam.awk \
+ funsmnam.ok \
+ funstack.awk \
+ funstack.in \
+ funstack.ok \
+ gensub.awk \
+ gensub.in \
+ gensub.ok \
+ gensub2.awk \
+ gensub2.ok \
+ getline.awk \
+ getline.in \
+ getline.ok \
+ getline2.awk \
+ getline2.ok \
+ getline3.awk \
+ getline3.ok \
+ getlnbuf.awk \
+ getlnbuf.in \
+ getlnbuf.ok \
+ getlnhd.awk \
+ getlnhd.ok \
+ getnr2tb.awk \
+ getnr2tb.in \
+ getnr2tb.ok \
+ getnr2tm.awk \
+ getnr2tm.in \
+ getnr2tm.ok \
+ gnuops2.awk \
+ gnuops2.ok \
+ gnuops3.awk \
+ gnuops3.ok \
+ gnureops.awk \
+ gnureops.ok \
+ gsubasgn.awk \
+ gsubasgn.ok \
+ gsubtest.awk \
+ gsubtest.ok \
+ gsubtst2.awk \
+ gsubtst2.ok \
+ gsubtst3.awk \
+ gsubtst3.in \
+ gsubtst3.ok \
+ gsubtst4.awk \
+ gsubtst4.ok \
+ gsubtst5.awk \
+ gsubtst5.in \
+ gsubtst5.ok \
+ gtlnbufv.awk \
+ hex.awk \
+ hex.ok \
+ hsprint.awk \
+ hsprint.ok \
+ icasefs.awk \
+ icasefs.ok \
+ icasers.awk \
+ icasers.in \
+ icasers.ok \
+ igncdym.awk \
+ igncdym.in \
+ igncdym.ok \
+ igncfs.awk \
+ igncfs.in \
+ igncfs.ok \
+ ignrcase.awk \
+ ignrcase.in \
+ ignrcase.ok \
+ ignrcas2.awk \
+ ignrcas2.ok \
+ inftest.awk \
+ inftest.ok \
+ inputred.awk \
+ inputred.ok \
+ intest.awk \
+ intest.ok \
+ intprec.awk \
+ intprec.ok \
+ iobug1.awk \
+ iobug1.ok \
+ leaddig.awk \
+ leaddig.ok \
+ leadnl.awk \
+ leadnl.in \
+ leadnl.ok \
+ lint.awk \
+ lint.ok \
+ litoct.awk \
+ litoct.ok \
+ longdbl.awk \
+ longdbl.in \
+ longdbl.ok \
+ longsub.awk \
+ longsub.in \
+ longsub.ok \
+ longwrds.awk \
+ longwrds.ok \
+ longwrds.in \
+ manglprm.awk \
+ manglprm.in \
+ manglprm.ok \
+ manyfiles.awk \
+ manyfiles.ok \
+ match1.awk \
+ match1.ok \
+ match2.awk \
+ match2.ok \
+ math.awk \
+ math.ok \
+ membug1.awk \
+ membug1.in \
+ membug1.ok \
+ messages.awk \
+ minusstr.awk \
+ minusstr.ok \
+ mmap8k.in \
+ nasty.awk \
+ nasty.ok \
+ nasty2.awk \
+ nasty2.ok \
+ negexp.awk \
+ negexp.ok \
+ nested.awk \
+ nested.in \
+ nested.ok \
+ nfldstr.awk \
+ nfldstr.in \
+ nfldstr.ok \
+ nfneg.awk \
+ nfneg.ok \
+ nfset.awk \
+ nfset.in \
+ nfset.ok \
+ nlfldsep.awk \
+ nlfldsep.in \
+ nlfldsep.ok \
+ nlinstr.awk \
+ nlinstr.in \
+ nlinstr.ok \
+ nlstrina.awk \
+ nlstrina.ok \
+ noeffect.awk \
+ noeffect.ok \
+ nofmtch.awk \
+ nofmtch.ok \
+ noloop1.awk \
+ noloop1.in \
+ noloop1.ok \
+ noloop2.awk \
+ noloop2.in \
+ noloop2.ok \
+ nondec.awk \
+ nondec.ok \
+ nondec2.awk \
+ nondec2.ok \
+ nonl.awk \
+ nonl.ok \
+ noparms.awk \
+ noparms.ok \
+ nors.in \
+ nors.ok \
+ nulrsend.awk \
+ nulrsend.in \
+ nulrsend.ok \
+ numindex.awk \
+ numindex.in \
+ numindex.ok \
+ numsubstr.awk \
+ numsubstr.in \
+ numsubstr.ok \
+ octsub.awk \
+ octsub.ok \
+ ofmt.awk \
+ ofmt.in \
+ ofmt.ok \
+ ofmtbig.awk \
+ ofmtbig.in \
+ ofmtbig.ok \
+ ofmtfidl.awk \
+ ofmtfidl.in \
+ ofmtfidl.ok \
+ ofmts.awk \
+ ofmts.in \
+ ofmts.ok \
+ onlynl.awk \
+ onlynl.in \
+ onlynl.ok \
+ opasnidx.awk \
+ opasnidx.ok \
+ opasnslf.awk \
+ opasnslf.ok \
+ out1.ok \
+ out2.ok \
+ out3.ok \
+ paramdup.awk \
+ paramdup.ok \
+ paramtyp.awk \
+ paramtyp.ok \
+ parseme.awk \
+ parseme.ok \
+ pcntplus.awk \
+ pcntplus.ok \
+ pid.awk \
+ pid.ok \
+ pid.sh \
+ pipeio1.awk \
+ pipeio1.ok \
+ pipeio2.awk \
+ pipeio2.in \
+ pipeio2.ok \
+ posix.awk \
+ posix.in \
+ posix.ok \
+ poundbang.awk \
+ prdupval.awk \
+ prdupval.in \
+ prdupval.ok \
+ prec.awk \
+ prec.ok \
+ printf0.awk \
+ printf0.ok \
+ printf1.awk \
+ printf1.ok \
+ printfbad1.awk \
+ printfbad1.ok \
+ printfloat.awk \
+ printlang.awk \
+ prmarscl.awk \
+ prmarscl.ok \
+ prmreuse.awk \
+ prmreuse.ok \
+ procinfs.awk \
+ procinfs.ok \
+ prt1eval.awk \
+ prt1eval.ok \
+ prtoeval.awk \
+ prtoeval.ok \
+ psx96sub.awk \
+ psx96sub.ok \
+ rand.awk \
+ rand.ok \
+ rebt8b1.awk \
+ rebt8b1.ok \
+ rebt8b2.awk \
+ rebt8b2.ok \
+ redfilnm.awk \
+ redfilnm.in \
+ redfilnm.ok \
+ regeq.awk \
+ regeq.in \
+ regeq.ok \
+ regtest.sh \
+ regx8bit.awk \
+ regx8bit.ok \
+ rebuf.awk \
+ rebuf.in \
+ rebuf.ok \
+ reindops.awk \
+ reindops.in \
+ reindops.ok \
+ reint.awk \
+ reint.in \
+ reint.ok \
+ reparse.awk \
+ reparse.in \
+ reparse.ok \
+ resplit.awk \
+ resplit.in \
+ resplit.ok \
+ rs.awk \
+ rs.in \
+ rs.ok \
+ rsnul1nl.awk \
+ rsnul1nl.in \
+ rsnul1nl.ok \
+ rsnulbig.ok \
+ rsnulbig2.ok \
+ rsstart1.awk \
+ rsstart1.in \
+ rsstart1.ok \
+ rsstart2.awk \
+ rsstart2.ok \
+ rsstart3.ok \
+ rstest1.awk \
+ rstest1.ok \
+ rstest2.awk \
+ rstest2.ok \
+ rstest3.awk \
+ rstest3.ok \
+ rstest4.awk \
+ rstest4.ok \
+ rstest5.awk \
+ rstest5.ok \
+ rstest6.awk \
+ rstest6.in \
+ rstest6.ok \
+ rswhite.awk \
+ rswhite.in \
+ rswhite.ok \
+ scalar.awk \
+ scalar.ok \
+ sclforin.awk \
+ sclforin.ok \
+ sclifin.awk \
+ sclifin.ok \
+ shadow.awk \
+ shadow.ok \
+ sort1.awk \
+ sort1.ok \
+ sortempty.awk \
+ sortempty.ok \
+ space.ok \
+ splitargv.awk \
+ splitargv.in \
+ splitargv.ok \
+ splitarr.awk \
+ splitarr.ok \
+ splitdef.awk \
+ splitdef.ok \
+ splitvar.awk \
+ splitvar.in \
+ splitvar.ok \
+ splitwht.awk \
+ splitwht.ok \
+ sprintfc.awk \
+ sprintfc.in \
+ sprintfc.ok \
+ strcat1.awk \
+ strcat1.ok \
+ strtod.awk \
+ strtod.in \
+ strtod.ok \
+ strtonum.awk \
+ strtonum.ok \
+ strftime.awk \
+ strftlng.awk \
+ strftlng.ok \
+ subamp.awk \
+ subamp.in \
+ subamp.ok \
+ subsepnm.awk \
+ subsepnm.ok \
+ subslash.awk \
+ subslash.ok \
+ substr.awk \
+ substr.ok \
+ swaplns.awk \
+ swaplns.in \
+ swaplns.ok \
+ switch2.awk \
+ synerr1.awk \
+ synerr1.ok \
+ tradanch.awk \
+ tradanch.in \
+ tradanch.ok \
+ tweakfld.awk \
+ tweakfld.in \
+ tweakfld.ok \
+ uninit2.awk \
+ uninit2.ok \
+ uninit3.awk \
+ uninit3.ok \
+ uninit4.awk \
+ uninit4.ok \
+ uninitialized.awk \
+ uninitialized.ok \
+ unterm.awk \
+ unterm.ok \
+ whiny.awk \
+ whiny.in \
+ whiny.ok \
+ wjposer1.awk \
+ wjposer1.in \
+ wjposer1.ok \
+ zeroe0.awk \
+ zeroe0.ok \
+ zeroflag.awk \
+ zeroflag.ok
+
+TESTS_WE_ARE_NOT_DOING_YET_FIXME_ONE_DAY = longdbl
+
+# Get rid of core files when cleaning
+CLEANFILES = core core.*
+
+# try to keep these sorted
+BASIC_TESTS = addcomma anchgsub argarray arrayparm arrayref arrymem1 \
+ arrayprm2 arrayprm3 arryref2 arryref3 arryref4 arryref5 arynasty \
+ arynocls aryprm1 aryprm2 aryprm3 aryprm4 aryprm5 aryprm6 aryprm7 \
+ aryprm8 arysubnm asgext awkpath back89 backgsub childin clobber \
+ clsflnam compare compare2 concat1 concat2 concat3 convfmt datanonl defref \
+ delarprm delarpm2 delfunc dynlj eofsplit exitval1 exitval2 fldchg fldchgnf fmttest fnamedat \
+ fnarray fnarray2 fnarydel fnaryscl fnasgnm fnmisc fnparydl \
+ fordel forsimp fsbs fsspcoln fsrs fstabplus funsemnl funsmnam funstack getline \
+ getline2 getline3 getlnbuf getnr2tb getnr2tm gsubasgn gsubtest \
+ gsubtst2 gsubtst3 gsubtst4 gsubtst5 hex hsprint inputred intest \
+ intprec iobug1 leaddig leadnl litoct longsub longwrds manglprm math membug1 \
+ messages minusstr mmap8k nasty nasty2 negexp nested nfldstr \
+ nfneg nfset nlfldsep nlinstr nlstrina noeffect nofmtch noloop1 \
+ noloop2 nonl noparms nors nulrsend numindex numsubstr octsub ofmt \
+ ofmtbig ofmtfidl ofmts onlynl opasnidx opasnslf paramdup paramtyp \
+ parseme pcntplus prdupval prec printf0 printf1 prmarscl prmreuse \
+ prt1eval prtoeval psx96sub rand rebt8b1 rebt8b2 redfilnm regeq \
+ reindops reparse resplit rs rsnul1nl rsnulbig rsnulbig2 rstest1 \
+ rstest2 rstest3 rstest4 rstest5 rswhite scalar sclforin sclifin \
+ sortempty splitargv splitarr splitdef splitvar splitwht sprintfc \
+ strcat1 strtod subamp subsepnm subslash substr swaplns synerr1 tradanch \
+ tweakfld uninit2 uninit3 uninit4 uninitialized unterm wjposer1 \
+ zeroe0 zeroflag
+
+UNIX_TESTS = fflush getlnhd pid pipeio1 pipeio2 poundbang space strftlng
+GAWK_EXT_TESTS = argtest asort asorti backw badargs clos1way fieldwdth fsfwfs \
+ gensub gensub2 gnuops2 gnuops3 gnureops icasefs icasers igncdym igncfs ignrcase \
+ ignrcas2 lint match1 match2 manyfiles nondec nondec2 posix procinfs \
+ printfbad1 regx8bit rebuf reint rsstart1 rsstart2 rsstart3 \
+ rstest6 shadow sort1 strtonum strftime whiny
+
+EXTRA_TESTS = regtest inftest
+INET_TESTS = inetechu inetecht inetdayu inetdayt
+
+# List of the tests which should be run with --lint option:
+NEED_LINT = defref noeffect nofmtch shadow uninit2 uninit3 uninit4 uninitialized
+
+# List of the files that appear in manual tests or are for reserve testing:
+GENTESTS_UNUSED = Makefile.in gtlnbufv.awk printfloat.awk switch2.awk
+CMP = cmp
+AWKPROG = ../gawk$(EXEEXT)
+all: all-am
+
+.SUFFIXES:
+$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(srcdir)/Maketests $(am__configure_deps)
+ @for dep in $?; do \
+ case '$(am__configure_deps)' in \
+ *$$dep*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh \
+ && exit 0; \
+ exit 1;; \
+ esac; \
+ done; \
+ echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu test/Makefile'; \
+ cd $(top_srcdir) && \
+ $(AUTOMAKE) --gnu test/Makefile
+.PRECIOUS: Makefile
+Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
+ @case '$?' in \
+ *config.status*) \
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \
+ *) \
+ echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \
+ cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \
+ esac;
+
+$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+
+$(top_srcdir)/configure: $(am__configure_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+$(ACLOCAL_M4): $(am__aclocal_m4_deps)
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+uninstall-info-am:
+tags: TAGS
+TAGS:
+
+ctags: CTAGS
+CTAGS:
+
+
+distdir: $(DISTFILES)
+ @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+ list='$(DISTFILES)'; for file in $$list; do \
+ case $$file in \
+ $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+ $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+ esac; \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+ dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+ dir="/$$dir"; \
+ $(mkdir_p) "$(distdir)$$dir"; \
+ else \
+ dir=''; \
+ fi; \
+ if test -d $$d/$$file; then \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+ cp -pR $$d/$$file $(distdir)$$dir || exit 1; \
+ else \
+ test -f $(distdir)/$$file \
+ || cp -p $$d/$$file $(distdir)/$$file \
+ || exit 1; \
+ fi; \
+ done
+check-am: all-am
+check: check-am
+all-am: Makefile
+installdirs:
+install: install-am
+install-exec: install-exec-am
+install-data: install-data-am
+uninstall: uninstall-am
+
+install-am: all-am
+ @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am
+
+installcheck: installcheck-am
+install-strip:
+ $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \
+ install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \
+ `test -z '$(STRIP)' || \
+ echo "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'"` install
+mostlyclean-generic:
+
+clean-generic:
+ -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
+
+distclean-generic:
+ -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES)
+
+maintainer-clean-generic:
+ @echo "This command is intended for maintainers to use"
+ @echo "it deletes files that may require special tools to rebuild."
+clean-am: clean-generic mostlyclean-am
+
+distclean: distclean-am
+ -rm -f Makefile
+distclean-am: clean-am distclean-generic
+
+dvi: dvi-am
+
+dvi-am:
+
+html: html-am
+
+info: info-am
+
+info-am:
+
+install-data-am:
+
+install-exec-am:
+
+install-info: install-info-am
+
+install-man:
+
+installcheck-am:
+
+maintainer-clean: maintainer-clean-am
+ -rm -f Makefile
+maintainer-clean-am: distclean-am maintainer-clean-generic
+
+mostlyclean: mostlyclean-am
+
+mostlyclean-am: mostlyclean-generic
+
+pdf: pdf-am
+
+pdf-am:
+
+ps: ps-am
+
+ps-am:
+
+uninstall-am: uninstall-info-am
+
+.PHONY: all all-am check check-am clean clean-generic distclean \
+ distclean-generic distdir dvi dvi-am html html-am info info-am \
+ install install-am install-data install-data-am install-exec \
+ install-exec-am install-info install-info-am install-man \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am \
+ uninstall-info-am
+
+
+# Message stuff is to make it a little easier to follow.
+# Make the pass-fail last and dependent on others to avoid
+# spurious errors if `make -j' in effect.
+check: msg \
+ printlang \
+ basic-msg-start basic basic-msg-end \
+ unix-msg-start unix-tests unix-msg-end \
+ extend-msg-start gawk-extensions extend-msg-end
+ @$(MAKE) pass-fail
+
+basic: $(BASIC_TESTS)
+
+unix-tests: $(UNIX_TESTS)
+
+gawk-extensions: $(GAWK_EXT_TESTS)
+
+extra: $(EXTRA_TESTS) inet
+
+inet: inetmesg $(INET_TESTS)
+
+msg::
+ @echo ''
+ @echo 'Any output from "cmp" is bad news, although some differences'
+ @echo 'in floating point values are probably benign -- in particular,'
+ @echo 'some systems may omit a leading zero and the floating point'
+ @echo 'precision may lead to slightly different output in a few cases.'
+
+printlang::
+ @$(AWK) -f $(srcdir)/printlang.awk
+
+basic-msg-start:
+ @echo "======== Starting basic tests ========"
+
+basic-msg-end:
+ @echo "======== Done with basic tests ========"
+
+unix-msg-start:
+ @echo "======== Starting Unix tests ========"
+
+unix-msg-end:
+ @echo "======== Done with Unix tests ========"
+
+extend-msg-start:
+ @echo "======== Starting gawk extension tests ========"
+
+extend-msg-end:
+ @echo "======== Done with gawk extension tests ========"
+
+# This test is a PITA because increasingly, /tmp is getting
+# mounted noexec. So, we'll test it locally. Sigh.
+#
+# More PITA; some systems have medium short limits on #! paths,
+# so this can still fail
+poundbang::
+ @echo $@
+ @sed "s;/tmp/gawk;`pwd`/$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk
+ @chmod +x ./_pbd.awk
+ @if ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@` ; \
+ then : ; \
+ else \
+ sed "s;/tmp/gawk;../$(AWKPROG);" < $(srcdir)/poundbang.awk > ./_pbd.awk ; \
+ chmod +x ./_pbd.awk ; \
+ LC_ALL=$${GAWKLOCALE:-C} LANG=$${GAWKLOCALE:-C} ./_pbd.awk $(srcdir)/poundbang.awk > _`basename $@`; \
+ fi
+ @-$(CMP) $(srcdir)/poundbang.awk _`basename $@` && rm -f _`basename $@` _pbd.awk
+
+messages::
+ @echo $@
+ @$(AWK) -f $(srcdir)/messages.awk >out2 2>out3
+ @-$(CMP) $(srcdir)/out1.ok out1 && $(CMP) $(srcdir)/out2.ok out2 && $(CMP) $(srcdir)/out3.ok out3 && rm -f out1 out2 out3
+
+argarray::
+ @echo $@
+ @case $(srcdir) in \
+ .) : ;; \
+ *) cp $(srcdir)/argarray.in . ;; \
+ esac
+ @TEST=test echo just a test | $(AWK) -f $(srcdir)/argarray.awk ./argarray.in - >_$@
+ @case $(srcdir) in \
+ .) : ;; \
+ *) rm -f ./argarray.in ;; \
+ esac
+ @-$(CMP) $(srcdir)/argarray.ok _$@ && rm -f _$@
+
+regtest::
+ @echo 'Some of the output from regtest is very system specific, do not'
+ @echo 'be distressed if your output differs from that distributed.'
+ @echo 'Manual inspection is called for.'
+ AWK=`pwd`/$(AWK) $(srcdir)/regtest.sh
+
+manyfiles::
+ @echo manyfiles
+ @rm -rf junk
+ @mkdir junk
+ @$(AWK) 'BEGIN { for (i = 1; i <= 300; i++) print i, i}' >_$@
+ @$(AWK) -f $(srcdir)/manyfiles.awk _$@ _$@
+ @wc -l junk/* | $(AWK) '$$1 != 2' | wc -l | sed "s/ *//g" > _$@
+ @rm -rf junk ; $(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+compare::
+ @echo $@
+ @$(AWK) -f $(srcdir)/compare.awk 0 1 $(srcdir)/compare.in >_$@
+ @-$(CMP) $(srcdir)/compare.ok _$@ && rm -f _$@
+
+inftest::
+ @echo $@
+ @echo This test is very machine specific...
+ @$(AWK) -f $(srcdir)/inftest.awk | sed "s/inf/Inf/g" >_$@
+ @-$(CMP) $(srcdir)/inftest.ok _$@ && rm -f _$@
+
+getline2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/getline2.awk $(srcdir)/getline2.awk $(srcdir)/getline2.awk >_$@
+ @-$(CMP) $(srcdir)/getline2.ok _$@ && rm -f _$@
+
+awkpath::
+ @echo $@
+ @AWKPATH="$(srcdir)$(PATH_SEPARATOR)$(srcdir)/lib" $(AWK) -f awkpath.awk >_$@
+ @-$(CMP) $(srcdir)/awkpath.ok _$@ && rm -f _$@
+
+argtest::
+ @echo $@
+ @$(AWK) -f $(srcdir)/argtest.awk -x -y abc >_$@
+ @-$(CMP) $(srcdir)/argtest.ok _$@ && rm -f _$@
+
+badargs::
+ @echo $@
+ @-$(AWK) -f 2>&1 | grep -v patchlevel >_$@
+ @-$(CMP) $(srcdir)/badargs.ok _$@ && rm -f _$@
+
+nonl::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) --lint -f nonl.awk /dev/null >_$@ 2>&1
+ @-$(CMP) $(srcdir)/nonl.ok _$@ && rm -f _$@
+
+strftime::
+ @echo This test could fail on slow machines or on a minute boundary,
+ @echo so if it does, double check the actual results:
+ @echo $@
+ @GAWKLOCALE=C; export GAWKLOCALE; \
+ TZ=GMT0; export TZ; \
+ (LC_ALL=C date) | $(AWK) -v OUTPUT=_$@ -f $(srcdir)/strftime.awk
+ @-$(CMP) strftime.ok _$@ && rm -f _$@ strftime.ok || exit 0
+
+litoct::
+ @echo $@
+ @echo ab | $(AWK) --traditional -f $(srcdir)/litoct.awk >_$@
+ @-$(CMP) $(srcdir)/litoct.ok _$@ && rm -f _$@
+
+fflush::
+ @echo $@
+ @$(srcdir)/fflush.sh >_$@
+ @-$(CMP) $(srcdir)/fflush.ok _$@ && rm -f _$@
+
+tweakfld::
+ @echo $@
+ @$(AWK) -f $(srcdir)/tweakfld.awk $(srcdir)/tweakfld.in >_$@
+ @rm -f errors.cleanup
+ @-$(CMP) $(srcdir)/tweakfld.ok _$@ && rm -f _$@
+
+mmap8k::
+ @echo $@
+ @$(AWK) '{ print }' $(srcdir)/mmap8k.in >_$@
+ @-$(CMP) $(srcdir)/mmap8k.in _$@ && rm -f _$@
+
+tradanch::
+ @echo $@
+ @$(AWK) --traditional -f $(srcdir)/tradanch.awk $(srcdir)/tradanch.in >_$@
+ @-$(CMP) $(srcdir)/tradanch.ok _$@ && rm -f _$@
+
+# AIX /bin/sh exec's the last command in a list, therefore issue a ":"
+# command so that pid.sh is fork'ed as a child before being exec'ed.
+pid::
+ @echo pid
+ @AWKPATH=$(srcdir) AWK=$(AWKPROG) $(SHELL) $(srcdir)/pid.sh $$$$ > _`basename $@` ; :
+ @-$(CMP) $(srcdir)/pid.ok _`basename $@` && rm -f _`basename $@` _`basename $@`.in
+
+strftlng::
+ @echo $@
+ @TZ=UTC; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@
+ @if $(CMP) $(srcdir)/strftlng.ok _$@ >/dev/null 2>&1 ; then : ; else \
+ TZ=UTC0; export TZ; $(AWK) -f $(srcdir)/strftlng.awk >_$@ ; \
+ fi
+ @-$(CMP) $(srcdir)/strftlng.ok _$@ && rm -f _$@
+
+nors::
+ @echo $@
+ @echo A B C D E | tr -d '\12\15' | $(AWK) '{ print $$NF }' - $(srcdir)/nors.in > _$@
+ @-$(CMP) $(srcdir)/nors.ok _$@ && rm -f _$@
+
+reint::
+ @echo $@
+ @$(AWK) --re-interval -f $(srcdir)/reint.awk $(srcdir)/reint.in >_$@
+ @-$(CMP) $(srcdir)/reint.ok _$@ && rm -f _$@
+
+pipeio1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/pipeio1.awk >_$@
+ @rm -f test1 test2
+ @-$(CMP) $(srcdir)/pipeio1.ok _$@ && rm -f _$@
+
+pipeio2::
+ @echo $@
+ @$(AWK) -v SRCDIR=$(srcdir) -f $(srcdir)/pipeio2.awk >_$@
+ @-$(CMP) $(srcdir)/pipeio2.ok _$@ && rm -f _$@
+
+clobber::
+ @echo $@
+ @$(AWK) -f $(srcdir)/clobber.awk >_$@
+ @-$(CMP) $(srcdir)/clobber.ok seq && $(CMP) $(srcdir)/clobber.ok _$@ && rm -f _$@
+ @rm -f seq
+
+arynocls::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) -v INPUT=$(srcdir)/arynocls.in -f arynocls.awk >_$@
+ @-$(CMP) $(srcdir)/arynocls.ok _$@ && rm -f _$@
+
+getlnbuf::
+ @echo $@
+ @-AWKPATH=$(srcdir) $(AWK) -f getlnbuf.awk $(srcdir)/getlnbuf.in > _$@
+ @-AWKPATH=$(srcdir) $(AWK) -f gtlnbufv.awk $(srcdir)/getlnbuf.in > _2$@
+ @-$(CMP) $(srcdir)/getlnbuf.ok _$@ && $(CMP) $(srcdir)/getlnbuf.ok _2$@ && rm -f _$@ _2$@
+
+inetmesg::
+ @echo These tests only work if your system supports the services
+ @echo "'discard'" at port 9 and "'daytimed'" at port 13. Check your
+ @echo file /etc/services and do "'netstat -a'".
+
+inetechu::
+ @echo This test is for establishing UDP connections
+ @$(AWK) 'BEGIN {print "" |& "/inet/udp/0/127.0.0.1/9"}'
+
+inetecht::
+ @echo This test is for establishing TCP connections
+ @$(AWK) 'BEGIN {print "" |& "/inet/tcp/0/127.0.0.1/9"}'
+
+inetdayu::
+ @echo This test is for bidirectional UDP transmission
+ @$(AWK) 'BEGIN { print "" |& "/inet/udp/0/127.0.0.1/13"; \
+ "/inet/udp/0/127.0.0.1/13" |& getline; print $0}'
+
+inetdayt::
+ @echo This test is for bidirectional TCP transmission
+ @$(AWK) 'BEGIN { print "" |& "/inet/tcp/0/127.0.0.1/13"; \
+ "/inet/tcp/0/127.0.0.1/13" |& getline; print $0}'
+
+redfilnm::
+ @echo $@
+ @$(AWK) -f $(srcdir)/redfilnm.awk srcdir=$(srcdir) $(srcdir)/redfilnm.in >_$@
+ @-$(CMP) $(srcdir)/redfilnm.ok _$@ && rm -f _$@
+
+leaddig::
+ @echo $@
+ @$(AWK) -v x=2E -f $(srcdir)/leaddig.awk >_$@
+ @-$(CMP) $(srcdir)/leaddig.ok _$@ && rm -f _$@
+
+gsubtst3::
+ @echo $@
+ @$(AWK) --re-interval -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+space::
+ @echo $@
+ @$(AWK) -f ' ' $(srcdir)/space.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printf0::
+ @echo $@
+ @$(AWK) --posix -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnulbig::
+ @echo $@
+ @ : Suppose that block size for pipe is at most 128kB:
+ @$(AWK) 'BEGIN { for (i = 1; i <= 128*64+1; i++) print "abcdefgh123456\n" }' 2>&1 | \
+ $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" }; { print }' 2>&1 | \
+ $(AWK) '/^[^a]/; END{ print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnulbig2::
+ @echo $@
+ @$(AWK) 'BEGIN { ORS = ""; n = "\n"; for (i = 1; i <= 10; i++) n = (n n); \
+ for (i = 1; i <= 128; i++) print n; print "abc\n" }' 2>&1 | \
+ $(AWK) 'BEGIN { RS = ""; ORS = "\n\n" };{ print }' 2>&1 | \
+ $(AWK) '/^[^a]/; END { print NR }' >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+whiny::
+ @echo $@
+ @WHINY_USERS=1 $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ignrcas2::
+ @echo $@
+ @GAWKLOCALE=en_US ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subamp::
+ @echo $@
+ @GAWKLOCALE=en_US.UTF-8 ; export GAWKLOCALE ; \
+ $(AWK) -f $(srcdir)/$@.awk $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >> _$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# This test makes sure gawk exits with a zero code.
+# Thus, unconditionally generate the exit code.
+exitval1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/exitval1.awk >_$@ 2>&1; echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsspcoln::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk 'FS=[ :]+' $(srcdir)/$@.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart1::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart2::
+ @echo $@
+ @$(AWK) -f $(srcdir)/$@.awk $(srcdir)/rsstart1.in >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsstart3::
+ @echo $@
+ @head $(srcdir)/rsstart1.in | $(AWK) -f $(srcdir)/rsstart2.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec2::
+ @echo $@
+ @$(AWK) --non-decimal-data -v a=0x1 -f $(srcdir)/$@.awk >_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+Gt-dummy:
+# file Maketests, generated from Makefile.am by the Gentests program
+addcomma:
+ @echo addcomma
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+anchgsub:
+ @echo anchgsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayparm:
+ @echo arrayparm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayref:
+ @echo arrayref
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrymem1:
+ @echo arrymem1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayprm2:
+ @echo arrayprm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayprm3:
+ @echo arrayprm3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref2:
+ @echo arryref2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref3:
+ @echo arryref3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref4:
+ @echo arryref4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref5:
+ @echo arryref5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arynasty:
+ @echo arynasty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm1:
+ @echo aryprm1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm2:
+ @echo aryprm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm3:
+ @echo aryprm3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm4:
+ @echo aryprm4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm5:
+ @echo aryprm5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm6:
+ @echo aryprm6
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm7:
+ @echo aryprm7
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm8:
+ @echo aryprm8
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arysubnm:
+ @echo arysubnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asgext:
+ @echo asgext
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+back89:
+ @echo back89
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+backgsub:
+ @echo backgsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+childin:
+ @echo childin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clsflnam:
+ @echo clsflnam
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+compare2:
+ @echo compare2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat1:
+ @echo concat1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat2:
+ @echo concat2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat3:
+ @echo concat3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+convfmt:
+ @echo convfmt
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+datanonl:
+ @echo datanonl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+defref:
+ @echo defref
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delarprm:
+ @echo delarprm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delarpm2:
+ @echo delarpm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delfunc:
+ @echo delfunc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+dynlj:
+ @echo dynlj
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+eofsplit:
+ @echo eofsplit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+exitval2:
+ @echo exitval2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fldchg:
+ @echo fldchg
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fldchgnf:
+ @echo fldchgnf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fmttest:
+ @echo fmttest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnamedat:
+ @echo fnamedat
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarray:
+ @echo fnarray
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarray2:
+ @echo fnarray2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarydel:
+ @echo fnarydel
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnaryscl:
+ @echo fnaryscl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnasgnm:
+ @echo fnasgnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnmisc:
+ @echo fnmisc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnparydl:
+ @echo fnparydl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fordel:
+ @echo fordel
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+forsimp:
+ @echo forsimp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsbs:
+ @echo fsbs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsrs:
+ @echo fsrs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fstabplus:
+ @echo fstabplus
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funsemnl:
+ @echo funsemnl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funsmnam:
+ @echo funsmnam
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funstack:
+ @echo funstack
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getline:
+ @echo getline
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getline3:
+ @echo getline3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getnr2tb:
+ @echo getnr2tb
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getnr2tm:
+ @echo getnr2tm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubasgn:
+ @echo gsubasgn
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtest:
+ @echo gsubtest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst2:
+ @echo gsubtst2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst4:
+ @echo gsubtst4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst5:
+ @echo gsubtst5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+hex:
+ @echo hex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+hsprint:
+ @echo hsprint
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+inputred:
+ @echo inputred
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+intest:
+ @echo intest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+intprec:
+ @echo intprec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+iobug1:
+ @echo iobug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+leadnl:
+ @echo leadnl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+longsub:
+ @echo longsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+longwrds:
+ @echo longwrds
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+manglprm:
+ @echo manglprm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+math:
+ @echo math
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+membug1:
+ @echo membug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+minusstr:
+ @echo minusstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nasty:
+ @echo nasty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nasty2:
+ @echo nasty2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+negexp:
+ @echo negexp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nested:
+ @echo nested
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfldstr:
+ @echo nfldstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfneg:
+ @echo nfneg
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfset:
+ @echo nfset
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlfldsep:
+ @echo nlfldsep
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlinstr:
+ @echo nlinstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlstrina:
+ @echo nlstrina
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noeffect:
+ @echo noeffect
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nofmtch:
+ @echo nofmtch
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noloop1:
+ @echo noloop1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noloop2:
+ @echo noloop2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noparms:
+ @echo noparms
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nulrsend:
+ @echo nulrsend
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+numindex:
+ @echo numindex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+numsubstr:
+ @echo numsubstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+octsub:
+ @echo octsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmt:
+ @echo ofmt
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmtbig:
+ @echo ofmtbig
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmtfidl:
+ @echo ofmtfidl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmts:
+ @echo ofmts
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+onlynl:
+ @echo onlynl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+opasnidx:
+ @echo opasnidx
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+opasnslf:
+ @echo opasnslf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+paramdup:
+ @echo paramdup
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+paramtyp:
+ @echo paramtyp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+parseme:
+ @echo parseme
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+pcntplus:
+ @echo pcntplus
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prdupval:
+ @echo prdupval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prec:
+ @echo prec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printf1:
+ @echo printf1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prmarscl:
+ @echo prmarscl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prmreuse:
+ @echo prmreuse
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prt1eval:
+ @echo prt1eval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prtoeval:
+ @echo prtoeval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+psx96sub:
+ @echo psx96sub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rand:
+ @echo rand
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebt8b1:
+ @echo rebt8b1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebt8b2:
+ @echo rebt8b2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+regeq:
+ @echo regeq
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+reindops:
+ @echo reindops
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+reparse:
+ @echo reparse
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+resplit:
+ @echo resplit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rs:
+ @echo rs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnul1nl:
+ @echo rsnul1nl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest1:
+ @echo rstest1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest2:
+ @echo rstest2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest3:
+ @echo rstest3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest4:
+ @echo rstest4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest5:
+ @echo rstest5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rswhite:
+ @echo rswhite
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+scalar:
+ @echo scalar
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sclforin:
+ @echo sclforin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sclifin:
+ @echo sclifin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sortempty:
+ @echo sortempty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitargv:
+ @echo splitargv
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitarr:
+ @echo splitarr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitdef:
+ @echo splitdef
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitvar:
+ @echo splitvar
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitwht:
+ @echo splitwht
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sprintfc:
+ @echo sprintfc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strcat1:
+ @echo strcat1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strtod:
+ @echo strtod
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subsepnm:
+ @echo subsepnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subslash:
+ @echo subslash
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+substr:
+ @echo substr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+swaplns:
+ @echo swaplns
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+synerr1:
+ @echo synerr1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit2:
+ @echo uninit2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit3:
+ @echo uninit3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit4:
+ @echo uninit4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninitialized:
+ @echo uninitialized
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+unterm:
+ @echo unterm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+wjposer1:
+ @echo wjposer1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+zeroe0:
+ @echo zeroe0
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+zeroflag:
+ @echo zeroflag
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getlnhd:
+ @echo getlnhd
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asort:
+ @echo asort
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asorti:
+ @echo asorti
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+backw:
+ @echo backw
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clos1way:
+ @echo clos1way
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fieldwdth:
+ @echo fieldwdth
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsfwfs:
+ @echo fsfwfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gensub:
+ @echo gensub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gensub2:
+ @echo gensub2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnuops2:
+ @echo gnuops2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnuops3:
+ @echo gnuops3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnureops:
+ @echo gnureops
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+icasefs:
+ @echo icasefs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+icasers:
+ @echo icasers
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+igncdym:
+ @echo igncdym
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+igncfs:
+ @echo igncfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ignrcase:
+ @echo ignrcase
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+lint:
+ @echo lint
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+match1:
+ @echo match1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+match2:
+ @echo match2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec:
+ @echo nondec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+posix:
+ @echo posix
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+procinfs:
+ @echo procinfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printfbad1:
+ @echo printfbad1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+regx8bit:
+ @echo regx8bit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebuf:
+ @echo rebuf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest6:
+ @echo rstest6
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+shadow:
+ @echo shadow
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sort1:
+ @echo sort1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strtonum:
+ @echo strtonum
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# end of file Maketests
+
+# Targets generated for other tests:
+
+$(srcdir)/Maketests: $(srcdir)/Makefile.am $(srcdir)/Gentests
+ $(AWK) -f $(srcdir)/Gentests "$(srcdir)/Makefile.am" *.awk *.in > $(srcdir)/Maketests
+
+clean:
+ rm -fr _* core core.* junk out1 out2 out3 strftime.ok test1 test2 seq *~
+
+# An attempt to print something that can be grepped for in build logs
+pass-fail:
+ @COUNT=`ls _* 2>/dev/null | wc -l` ; \
+ if test $$COUNT = 0 ; \
+ then echo ALL TESTS PASSED ; \
+ else echo $$COUNT TESTS FAILED ; \
+ fi
+
+# This target for my convenience to look at all the results
+diffout:
+ for i in _* ; \
+ do \
+ echo ============== $$i ============= ; \
+ diff -c $(srcdir)/$${i#_}.ok $$i ; \
+ done | more
+
+# This target is for testing with electric fence.
+efence:
+ for i in $$(ls _* | sed 's;_\(.*\);\1;') ; \
+ do \
+ bad=$$(wc -l < _$$i) \
+ ok=$$(wc -l < $$i.ok) ; \
+ if (( $$bad == $$ok + 2 )) ; \
+ then \
+ rm _$$i ; \
+ fi ; \
+ done
+# Tell versions [3.59,3.63) of GNU make to not export all variables.
+# Otherwise a system limit (for SysV at least) may be exceeded.
+.NOEXPORT:
diff --git a/test/Maketests b/test/Maketests
new file mode 100644
index 0000000..cb11752
--- /dev/null
+++ b/test/Maketests
@@ -0,0 +1,943 @@
+Gt-dummy:
+# file Maketests, generated from Makefile.am by the Gentests program
+addcomma:
+ @echo addcomma
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+anchgsub:
+ @echo anchgsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayparm:
+ @echo arrayparm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayref:
+ @echo arrayref
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrymem1:
+ @echo arrymem1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayprm2:
+ @echo arrayprm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arrayprm3:
+ @echo arrayprm3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref2:
+ @echo arryref2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref3:
+ @echo arryref3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref4:
+ @echo arryref4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arryref5:
+ @echo arryref5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arynasty:
+ @echo arynasty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm1:
+ @echo aryprm1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm2:
+ @echo aryprm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm3:
+ @echo aryprm3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm4:
+ @echo aryprm4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm5:
+ @echo aryprm5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm6:
+ @echo aryprm6
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm7:
+ @echo aryprm7
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+aryprm8:
+ @echo aryprm8
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+arysubnm:
+ @echo arysubnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asgext:
+ @echo asgext
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+back89:
+ @echo back89
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+backgsub:
+ @echo backgsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+childin:
+ @echo childin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clsflnam:
+ @echo clsflnam
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+compare2:
+ @echo compare2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat1:
+ @echo concat1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat2:
+ @echo concat2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+concat3:
+ @echo concat3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+convfmt:
+ @echo convfmt
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+datanonl:
+ @echo datanonl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+defref:
+ @echo defref
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delarprm:
+ @echo delarprm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delarpm2:
+ @echo delarpm2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+delfunc:
+ @echo delfunc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+dynlj:
+ @echo dynlj
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+eofsplit:
+ @echo eofsplit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+exitval2:
+ @echo exitval2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fldchg:
+ @echo fldchg
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fldchgnf:
+ @echo fldchgnf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fmttest:
+ @echo fmttest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnamedat:
+ @echo fnamedat
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarray:
+ @echo fnarray
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarray2:
+ @echo fnarray2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnarydel:
+ @echo fnarydel
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnaryscl:
+ @echo fnaryscl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnasgnm:
+ @echo fnasgnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnmisc:
+ @echo fnmisc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fnparydl:
+ @echo fnparydl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fordel:
+ @echo fordel
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+forsimp:
+ @echo forsimp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsbs:
+ @echo fsbs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsrs:
+ @echo fsrs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fstabplus:
+ @echo fstabplus
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funsemnl:
+ @echo funsemnl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funsmnam:
+ @echo funsmnam
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+funstack:
+ @echo funstack
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getline:
+ @echo getline
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getline3:
+ @echo getline3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getnr2tb:
+ @echo getnr2tb
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getnr2tm:
+ @echo getnr2tm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubasgn:
+ @echo gsubasgn
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtest:
+ @echo gsubtest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst2:
+ @echo gsubtst2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst4:
+ @echo gsubtst4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gsubtst5:
+ @echo gsubtst5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+hex:
+ @echo hex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+hsprint:
+ @echo hsprint
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+inputred:
+ @echo inputred
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+intest:
+ @echo intest
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+intprec:
+ @echo intprec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+iobug1:
+ @echo iobug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+leadnl:
+ @echo leadnl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+longsub:
+ @echo longsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+longwrds:
+ @echo longwrds
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+manglprm:
+ @echo manglprm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+math:
+ @echo math
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+membug1:
+ @echo membug1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+minusstr:
+ @echo minusstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nasty:
+ @echo nasty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nasty2:
+ @echo nasty2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+negexp:
+ @echo negexp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nested:
+ @echo nested
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfldstr:
+ @echo nfldstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfneg:
+ @echo nfneg
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nfset:
+ @echo nfset
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlfldsep:
+ @echo nlfldsep
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlinstr:
+ @echo nlinstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nlstrina:
+ @echo nlstrina
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noeffect:
+ @echo noeffect
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nofmtch:
+ @echo nofmtch
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noloop1:
+ @echo noloop1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noloop2:
+ @echo noloop2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+noparms:
+ @echo noparms
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nulrsend:
+ @echo nulrsend
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+numindex:
+ @echo numindex
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+numsubstr:
+ @echo numsubstr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+octsub:
+ @echo octsub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmt:
+ @echo ofmt
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmtbig:
+ @echo ofmtbig
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmtfidl:
+ @echo ofmtfidl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ofmts:
+ @echo ofmts
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+onlynl:
+ @echo onlynl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+opasnidx:
+ @echo opasnidx
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+opasnslf:
+ @echo opasnslf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+paramdup:
+ @echo paramdup
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+paramtyp:
+ @echo paramtyp
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+parseme:
+ @echo parseme
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+pcntplus:
+ @echo pcntplus
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prdupval:
+ @echo prdupval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prec:
+ @echo prec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printf1:
+ @echo printf1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prmarscl:
+ @echo prmarscl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prmreuse:
+ @echo prmreuse
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prt1eval:
+ @echo prt1eval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+prtoeval:
+ @echo prtoeval
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+psx96sub:
+ @echo psx96sub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rand:
+ @echo rand
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebt8b1:
+ @echo rebt8b1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebt8b2:
+ @echo rebt8b2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+regeq:
+ @echo regeq
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+reindops:
+ @echo reindops
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+reparse:
+ @echo reparse
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+resplit:
+ @echo resplit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rs:
+ @echo rs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rsnul1nl:
+ @echo rsnul1nl
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest1:
+ @echo rstest1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest2:
+ @echo rstest2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest3:
+ @echo rstest3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest4:
+ @echo rstest4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest5:
+ @echo rstest5
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rswhite:
+ @echo rswhite
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+scalar:
+ @echo scalar
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sclforin:
+ @echo sclforin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sclifin:
+ @echo sclifin
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sortempty:
+ @echo sortempty
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitargv:
+ @echo splitargv
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitarr:
+ @echo splitarr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitdef:
+ @echo splitdef
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitvar:
+ @echo splitvar
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+splitwht:
+ @echo splitwht
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sprintfc:
+ @echo sprintfc
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strcat1:
+ @echo strcat1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strtod:
+ @echo strtod
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subsepnm:
+ @echo subsepnm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+subslash:
+ @echo subslash
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+substr:
+ @echo substr
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+swaplns:
+ @echo swaplns
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+synerr1:
+ @echo synerr1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit2:
+ @echo uninit2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit3:
+ @echo uninit3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninit4:
+ @echo uninit4
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+uninitialized:
+ @echo uninitialized
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+unterm:
+ @echo unterm
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+wjposer1:
+ @echo wjposer1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+zeroe0:
+ @echo zeroe0
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+zeroflag:
+ @echo zeroflag
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+getlnhd:
+ @echo getlnhd
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asort:
+ @echo asort
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+asorti:
+ @echo asorti
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+backw:
+ @echo backw
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+clos1way:
+ @echo clos1way
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fieldwdth:
+ @echo fieldwdth
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+fsfwfs:
+ @echo fsfwfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gensub:
+ @echo gensub
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gensub2:
+ @echo gensub2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnuops2:
+ @echo gnuops2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnuops3:
+ @echo gnuops3
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+gnureops:
+ @echo gnureops
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+icasefs:
+ @echo icasefs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+icasers:
+ @echo icasers
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+igncdym:
+ @echo igncdym
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+igncfs:
+ @echo igncfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+ignrcase:
+ @echo ignrcase
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+lint:
+ @echo lint
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+match1:
+ @echo match1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+match2:
+ @echo match2
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+nondec:
+ @echo nondec
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+posix:
+ @echo posix
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+procinfs:
+ @echo procinfs
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+printfbad1:
+ @echo printfbad1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+regx8bit:
+ @echo regx8bit
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rebuf:
+ @echo rebuf
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+rstest6:
+ @echo rstest6
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk < $(srcdir)/$@.in >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+shadow:
+ @echo shadow
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk --lint >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+sort1:
+ @echo sort1
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+strtonum:
+ @echo strtonum
+ @AWKPATH=$(srcdir) $(AWK) -f $@.awk >_$@ 2>&1 || echo EXIT CODE: $$? >>_$@
+ @-$(CMP) $(srcdir)/$@.ok _$@ && rm -f _$@
+
+# end of file Maketests
diff --git a/test/README b/test/README
new file mode 100644
index 0000000..2343be2
--- /dev/null
+++ b/test/README
@@ -0,0 +1,18 @@
+Mon Jan 22 13:08:58 EST 1996
+
+This directory contains the tests for gawk. The tests use the
+following conventions.
+
+Given some aspect of gawk named `foo', there will be one or more
+of the following files:
+
+foo.awk --- actual code for the test if not inline in the Makefile
+foo.in --- the data for the test, if it needs data
+foo.ok --- the expected results
+_foo --- the actual results; generated at run time
+
+The _foo file will be left around if a test fails, allowing you to
+compare actual and expected results, in case they differ.
+
+If they do differ (other than strftime.ok and _strftime!), send in a
+bug report. See the manual for the bug report procedure.
diff --git a/test/addcomma.awk b/test/addcomma.awk
new file mode 100644
index 0000000..8f52f36
--- /dev/null
+++ b/test/addcomma.awk
@@ -0,0 +1,15 @@
+# addcomma - put commas in numbers
+# input: a number per line
+# output: the input number followed by
+# the number with commas and two decimal places
+
+{ printf("%-12s %20s\n", $0, addcomma($0)) }
+
+function addcomma(x, num) {
+ if (x < 0)
+ return "-" addcomma(-x)
+ num = sprintf("%.2f", x) # num is dddddd.dd
+ while (num ~ /[0-9][0-9][0-9][0-9]/)
+ sub(/[0-9][0-9][0-9][,.]/, ",&", num)
+ return num
+}
diff --git a/test/addcomma.in b/test/addcomma.in
new file mode 100644
index 0000000..be70ac9
--- /dev/null
+++ b/test/addcomma.in
@@ -0,0 +1,7 @@
+0
+-1
+-12.34
+12345
+-1234567.89
+-123.
+-123456
diff --git a/test/addcomma.ok b/test/addcomma.ok
new file mode 100644
index 0000000..57c5886
--- /dev/null
+++ b/test/addcomma.ok
@@ -0,0 +1,7 @@
+0 0.00
+-1 -1.00
+-12.34 -12.34
+12345 12,345.00
+-1234567.89 -1,234,567.89
+-123. -123.00
+-123456 -123,456.00
diff --git a/test/anchgsub.awk b/test/anchgsub.awk
new file mode 100644
index 0000000..52e8aa4
--- /dev/null
+++ b/test/anchgsub.awk
@@ -0,0 +1 @@
+{ gsub(/^[ ]*/, "", $0) ; print }
diff --git a/test/anchgsub.in b/test/anchgsub.in
new file mode 100644
index 0000000..b829d84
--- /dev/null
+++ b/test/anchgsub.in
@@ -0,0 +1 @@
+ This is a test, this is only a test.
diff --git a/test/anchgsub.ok b/test/anchgsub.ok
new file mode 100644
index 0000000..c33dfb9
--- /dev/null
+++ b/test/anchgsub.ok
@@ -0,0 +1 @@
+This is a test, this is only a test.
diff --git a/test/argarray.awk b/test/argarray.awk
new file mode 100644
index 0000000..1960f9b
--- /dev/null
+++ b/test/argarray.awk
@@ -0,0 +1,14 @@
+BEGIN {
+ argn = " argument" (ARGC > 1 ? "s" : "")
+ are = ARGC > 1 ? "are" : "is"
+ print "here we have " ARGC argn
+ print "which " are
+ for (x = 0; x < ARGC; x++)
+ print "\t", ARGV[x]
+ print "Environment variable TEST=" ENVIRON["TEST"]
+ print "and the current input file is called \"" FILENAME "\""
+}
+
+FNR == 1 {
+ print "in main loop, this input file is known as \"" FILENAME "\""
+}
diff --git a/test/argarray.in b/test/argarray.in
new file mode 100644
index 0000000..bc93338
--- /dev/null
+++ b/test/argarray.in
@@ -0,0 +1 @@
+this is a simple test file
diff --git a/test/argarray.ok b/test/argarray.ok
new file mode 100644
index 0000000..18eb841
--- /dev/null
+++ b/test/argarray.ok
@@ -0,0 +1,9 @@
+here we have 3 arguments
+which are
+ gawk
+ ./argarray.in
+ -
+Environment variable TEST=
+and the current input file is called ""
+in main loop, this input file is known as "./argarray.in"
+in main loop, this input file is known as "-"
diff --git a/test/argtest.awk b/test/argtest.awk
new file mode 100644
index 0000000..e7a1145
--- /dev/null
+++ b/test/argtest.awk
@@ -0,0 +1,4 @@
+BEGIN {
+ for (i = 0; i < ARGC; i++)
+ printf("ARGV[%d] = %s\n", i, ARGV[i])
+}
diff --git a/test/argtest.ok b/test/argtest.ok
new file mode 100644
index 0000000..591bc64
--- /dev/null
+++ b/test/argtest.ok
@@ -0,0 +1,4 @@
+ARGV[0] = gawk
+ARGV[1] = -x
+ARGV[2] = -y
+ARGV[3] = abc
diff --git a/test/arrayparm.awk b/test/arrayparm.awk
new file mode 100644
index 0000000..d6f34d9
--- /dev/null
+++ b/test/arrayparm.awk
@@ -0,0 +1,21 @@
+#
+# Test program from:
+#
+# Date: Tue, 21 Feb 95 16:09:29 EST
+# From: emory!blackhawk.com!aaron (Aaron Sosnick)
+#
+BEGIN {
+ foo[1]=1;
+ foo[2]=2;
+ bug1(foo);
+}
+function bug1(i) {
+ for (i in foo) {
+ bug2(i);
+ delete foo[i];
+ print i,1,bot[1];
+ }
+}
+function bug2(arg) {
+ bot[arg]=arg;
+}
diff --git a/test/arrayparm.ok b/test/arrayparm.ok
new file mode 100644
index 0000000..4dd199f
--- /dev/null
+++ b/test/arrayparm.ok
@@ -0,0 +1,2 @@
+gawk: arrayparm.awk:18: fatal: attempt to use array `i (from foo)' in a scalar context
+EXIT CODE: 2
diff --git a/test/arrayprm2.awk b/test/arrayprm2.awk
new file mode 100644
index 0000000..35a92cc
--- /dev/null
+++ b/test/arrayprm2.awk
@@ -0,0 +1,67 @@
+# From spcecdt@armory.com Wed Apr 30 11:08:48 2003
+# Return-Path: <spcecdt@armory.com>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h3U7uZWr015489
+# for <arnold@localhost>; Wed, 30 Apr 2003 11:08:48 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Wed, 30 Apr 2003 11:08:48 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Wed Apr 30 11:05:01 2003)
+# X-From_: spcecdt@armory.com Wed Apr 30 04:06:46 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h3U16iv04111 for <arobbins@actcom.co.il>;
+# Wed, 30 Apr 2003 04:06:45 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h3U16nEv009589
+# for <arobbins@actcom.co.il>; Wed, 30 Apr 2003 04:06:50 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7/8.11.6) with ESMTP id h3U16gj29182
+# for <arnold@skeeve.com>; Tue, 29 Apr 2003 21:06:42 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.10)
+# id 19Ag3W-00029w-00
+# for bug-gawk@gnu.org; Tue, 29 Apr 2003 21:06:42 -0400
+# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10.13)
+# id 19Ag1V-0001AN-00
+# for bug-gawk@gnu.org; Tue, 29 Apr 2003 21:04:39 -0400
+# Received: from deepthought.armory.com ([192.122.209.42] helo=armory.com)
+# by monty-python.gnu.org with smtp (Exim 4.10.13)
+# id 19Ag1V-0001A3-00
+# for bug-gawk@gnu.org; Tue, 29 Apr 2003 21:04:37 -0400
+# Date: Tue, 29 Apr 2003 18:04:35 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: bug-gawk@gnu.org
+# Subject: gawk 3.1.2a bug
+# Message-ID: <20030430010434.GA4278@armory.com>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Disposition: inline
+# User-Agent: Mutt/1.3.28i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# X-Spam-Status: No, hits=-7.2 required=5.0
+# tests=SIGNATURE_SHORT_DENSE,SPAM_PHRASE_00_01,USER_AGENT,
+# USER_AGENT_MUTT
+# version=2.41
+# X-Spam-Level:
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# gawk-3.1.2a 'BEGIN {foo(bar)};function foo(baz){split("x",baz)}'
+# gawk-3.1.2a: cmd. line:1: fatal: split: second argument is not an array
+#
+# John
+# --
+# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/
+#
+BEGIN {
+ foo(bar)
+}
+
+function foo(baz)
+{
+ split("x", baz)
+}
diff --git a/test/arrayprm2.ok b/test/arrayprm2.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/arrayprm2.ok
diff --git a/test/arrayprm3.awk b/test/arrayprm3.awk
new file mode 100644
index 0000000..a41e587
--- /dev/null
+++ b/test/arrayprm3.awk
@@ -0,0 +1,56 @@
+# From spcecdt@armory.com Fri May 2 13:24:46 2003
+# Return-Path: <spcecdt@armory.com>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h42AChum021950
+# for <arnold@localhost>; Fri, 2 May 2003 13:24:46 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Fri, 02 May 2003 13:24:46 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Fri May 2 13:23:37 2003)
+# X-From_: spcecdt@armory.com Fri May 2 00:43:51 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h41Lhm500217 for <arobbins@actcom.co.il>;
+# Fri, 2 May 2003 00:43:49 +0300 (EET DST)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h41LiGcO022817
+# for <arobbins@actcom.co.il>; Fri, 2 May 2003 00:44:18 +0300
+# Received: from armory.com (deepthought.armory.com [192.122.209.42])
+# by f7.net (8.11.7/8.11.6) with SMTP id h41Lhj106516
+# for <arnold@skeeve.com>; Thu, 1 May 2003 17:43:46 -0400
+# Date: Thu, 1 May 2003 14:43:45 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: Aharon Robbins <arnold@skeeve.com>
+# Subject: Re: gawk 3.1.2a bug
+# Message-ID: <20030501214345.GA24615@armory.com>
+# References: <200305011738.h41Hcg76017565@localhost.localdomain>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Disposition: inline
+# In-Reply-To: <200305011738.h41Hcg76017565@localhost.localdomain>
+# User-Agent: Mutt/1.3.28i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# On Thu, May 01, 2003 at 08:38:42PM +0300, Aharon Robbins wrote:
+# > > That worked, thanks.
+# >
+# > Great. Your report motivated me to find everywhere such additional
+# > code ought to be needed. I think I did so. --Arnold
+#
+# Here's another one (perhaps fixed by your additional work):
+#
+BEGIN { foo(a) }
+function foo(a) { bar(a); print "" in a }
+function bar(a) { a[""]; }
+#
+# Prints 1 with gawk-3.1.1; 0 with 3.1.2a.
+#
+# John
+# --
+# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/
+#
diff --git a/test/arrayprm3.ok b/test/arrayprm3.ok
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test/arrayprm3.ok
@@ -0,0 +1 @@
+1
diff --git a/test/arrayref.awk b/test/arrayref.awk
new file mode 100644
index 0000000..144d41a
--- /dev/null
+++ b/test/arrayref.awk
@@ -0,0 +1,13 @@
+ BEGIN { # foo[10] = 0 # put this line in and it will work
+ test(foo); print foo[1]
+ test2(foo2); print foo2[1]
+ }
+
+ function test(foo)
+ {
+ test2(foo)
+ }
+ function test2(bar)
+ {
+ bar[1] = 1
+ }
diff --git a/test/arrayref.ok b/test/arrayref.ok
new file mode 100644
index 0000000..6ed281c
--- /dev/null
+++ b/test/arrayref.ok
@@ -0,0 +1,2 @@
+1
+1
diff --git a/test/arrymem1.awk b/test/arrymem1.awk
new file mode 100644
index 0000000..0a4ae89
--- /dev/null
+++ b/test/arrymem1.awk
@@ -0,0 +1,81 @@
+# From spcecdt@armory.com Thu Jun 14 13:24:32 2001
+# Received: from mail.actcom.co.il [192.114.47.13]
+# by localhost with POP3 (fetchmail-5.5.0)
+# for arnold@localhost (single-drop); Thu, 14 Jun 2001 13:24:32 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Jun 14 13:25:13 2001)
+# X-From_: spcecdt@armory.com Thu Jun 14 06:34:47 2001
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id GAA29661 for <arobbins@actcom.co.il>;
+# Thu, 14 Jun 2001 06:34:46 +0300 (EET DST)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+# Received: from billohost.com (www.billohost.com [209.196.35.10])
+# by lmail.actcom.co.il (8.11.2/8.11.2) with ESMTP id f5E3YiO27337
+# for <arobbins@actcom.co.il>; Thu, 14 Jun 2001 06:34:45 +0300
+# Received: from fencepost.gnu.org (we-refuse-to-spy-on-our-users@fencepost.gnu.org [199.232.76.164])
+# by billohost.com (8.9.3/8.9.3) with ESMTP id XAA02681
+# for <arnold@skeeve.com>; Wed, 13 Jun 2001 23:33:57 -0400
+# Received: from deepthought.armory.com ([192.122.209.42])
+# by fencepost.gnu.org with smtp (Exim 3.16 #1 (Debian))
+# id 15ANu2-00005C-00
+# for <bug-gawk@gnu.org>; Wed, 13 Jun 2001 23:34:38 -0400
+# Date: Wed, 13 Jun 2001 20:32:42 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: bug-gawk@gnu.org
+# Subject: gawk 3.1.0 bug
+# Message-ID: <20010613203242.A29975@armory.com>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# X-Mailer: Mutt 1.0.1i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# Status: RO
+#
+# Under SCO OpenServer 5.0.6a using gawk 3.1.0 compiled with gcc 2.95.2, this
+# program:
+
+ BEGIN {
+ f1(Procs,b)
+ print "test"
+ }
+
+ function f1(Procs,a) {
+ # a[""]
+ a[""] = "a" # ADR: Give it a value so can trace it
+ f2()
+ }
+
+ function f2() {
+ # b[""]
+ b[""] = "b" # ADR: Give it a value so can trace it
+ }
+
+ # ADR: 1/28/2003: Added this:
+ BEGIN { for (i in b) printf("b[\"%s\"] = \"%s\"\n", i, b[i]) }
+ # END ADR added.
+
+# gives:
+#
+# gawk: ./gtest:5: fatal error: internal error
+#
+# and dumps core.
+#
+# gdb gives me this stack backtrace:
+#
+# #0 0x80019943 in kill () from /usr/lib/libc.so.1
+# #1 0x8003e754 in abort () from /usr/lib/libc.so.1
+# #2 0x8062a87 in catchsig (sig=0, code=0) at main.c:947
+# #3 0x80053a0c in _sigreturn () from /usr/lib/libc.so.1
+# #4 0x80023d36 in cleanfree () from /usr/lib/libc.so.1
+# #5 0x80023156 in _real_malloc () from /usr/lib/libc.so.1
+# #6 0x80023019 in malloc () from /usr/lib/libc.so.1
+# #7 0x8053b95 in do_print (tree=0x0) at builtin.c:1336
+# #8 0x806b47c in interpret (tree=0x8084ee4) at eval.c:606
+# #9 0x806ad8d in interpret (tree=0x8084f0c) at eval.c:384
+# #10 0x806ad21 in interpret (tree=0x8084f5c) at eval.c:367
+# #11 0x8061d5b in main (argc=4, argv=0x80478ac) at main.c:506
+#
+# John
+# --
+# John DuBois spcecdt@armory.com. KC6QKZ/AE http://www.armory.com./~spcecdt/
+#
diff --git a/test/arrymem1.ok b/test/arrymem1.ok
new file mode 100644
index 0000000..e37775b
--- /dev/null
+++ b/test/arrymem1.ok
@@ -0,0 +1,2 @@
+test
+b[""] = "b"
diff --git a/test/arryref2.awk b/test/arryref2.awk
new file mode 100644
index 0000000..202a040
--- /dev/null
+++ b/test/arryref2.awk
@@ -0,0 +1,18 @@
+BEGIN {
+ foo(a)
+
+ for (i in a)
+ print i, a[i]
+}
+
+function foo(b)
+{
+ bar(b)
+ b[2] = "local"
+}
+
+function bar(c)
+{
+ a[3] = "global"
+ c[1] = "local2"
+}
diff --git a/test/arryref2.ok b/test/arryref2.ok
new file mode 100644
index 0000000..71aa9ed
--- /dev/null
+++ b/test/arryref2.ok
@@ -0,0 +1,3 @@
+1 local2
+2 local
+3 global
diff --git a/test/arryref3.awk b/test/arryref3.awk
new file mode 100644
index 0000000..e234ee5
--- /dev/null
+++ b/test/arryref3.awk
@@ -0,0 +1,18 @@
+BEGIN {
+ foo(a)
+
+ for (i in a)
+ print i, a[i]
+}
+
+function foo(b)
+{
+ a[1] = "global"
+ b[2] = "local"
+ bar(b)
+}
+
+function bar(c)
+{
+ c = 12
+}
diff --git a/test/arryref3.ok b/test/arryref3.ok
new file mode 100644
index 0000000..eec04b6
--- /dev/null
+++ b/test/arryref3.ok
@@ -0,0 +1,2 @@
+gawk: arryref3.awk:17: fatal: attempt to use array `c (from b, from a)' in a scalar context
+EXIT CODE: 2
diff --git a/test/arryref4.awk b/test/arryref4.awk
new file mode 100644
index 0000000..072eade
--- /dev/null
+++ b/test/arryref4.awk
@@ -0,0 +1,17 @@
+BEGIN {
+ foo(a)
+
+ print a
+}
+
+function foo(b)
+{
+ a = "global"
+ b[2] = "local"
+# bar(b)
+}
+
+function bar(c)
+{
+ c = 12
+}
diff --git a/test/arryref4.ok b/test/arryref4.ok
new file mode 100644
index 0000000..11cebfb
--- /dev/null
+++ b/test/arryref4.ok
@@ -0,0 +1,2 @@
+gawk: arryref4.awk:10: fatal: attempt to use scalar parameter `b' as an array
+EXIT CODE: 2
diff --git a/test/arryref5.awk b/test/arryref5.awk
new file mode 100644
index 0000000..babff9c
--- /dev/null
+++ b/test/arryref5.awk
@@ -0,0 +1,17 @@
+BEGIN {
+ foo(a)
+
+ print a
+}
+
+function foo(b)
+{
+ b[2] = "local"
+ a = "global"
+# bar(b)
+}
+
+function bar(c)
+{
+ c = 12
+}
diff --git a/test/arryref5.ok b/test/arryref5.ok
new file mode 100644
index 0000000..7b542fb
--- /dev/null
+++ b/test/arryref5.ok
@@ -0,0 +1,2 @@
+gawk: arryref5.awk:10: fatal: attempt to use array `a' in a scalar context
+EXIT CODE: 2
diff --git a/test/arynasty.awk b/test/arynasty.awk
new file mode 100644
index 0000000..ec17093
--- /dev/null
+++ b/test/arynasty.awk
@@ -0,0 +1,16 @@
+BEGIN {
+ a = 12.153
+#print "-- stroring test[a]" > "/dev/stderr" ; fflush("/dev/stderr")
+ test[a] = "hi"
+#print "-- setting CONVFMT" > "/dev/stderr" ; fflush("/dev/stderr")
+ CONVFMT = "%.0f"
+#print "-- setting a" > "/dev/stderr" ; fflush("/dev/stderr")
+ a = 5
+#stopme()
+#print "-- starting loop" > "/dev/stderr" ; fflush("/dev/stderr")
+ for (i in test) {
+#print("-- i =", i) > "/dev/stderr" ; fflush("/dev/stderr");
+#printf("-- i = <%s>\n", i) > "/dev/stderr" ; fflush("/dev/stderr");
+ printf ("test[%s] = %s\n", i, test[i])
+ }
+}
diff --git a/test/arynasty.ok b/test/arynasty.ok
new file mode 100644
index 0000000..125ed80
--- /dev/null
+++ b/test/arynasty.ok
@@ -0,0 +1 @@
+test[12.153] = hi
diff --git a/test/arynocls.awk b/test/arynocls.awk
new file mode 100644
index 0000000..724c9ac
--- /dev/null
+++ b/test/arynocls.awk
@@ -0,0 +1,95 @@
+#To: bug-gnu-utils@gnu.org
+#From: Kristján Jónasson <kristjan@decode.is>
+#Subject: Gawk bug
+#Cc: arnold@gnu.org
+#
+#Hi!
+#
+#The following seems to be a bug in gawk. I have tried as I could to
+#minimize the bug-causing program, so of course it does not seem to do
+#anything useful in its present form. The error message received is:
+#
+#gawk: test.awk:15: fatal error: internal error
+#Aborted
+#
+#Note that there is an attached file that the program reads, called "a". I
+#played with the program a fair bit and my feeling is that the error is
+#related with the delete statement, and not the reading of the file and the
+#close statement. At one point I was able to remove the file reading and
+#still obtain the error. If, for example, I remove the close statement and
+#make two copies of the file instead, (reading one copy in sub1 and the
+#other in sub2), the error still occurs.
+#
+#The operating system is Red Hat Linux, version 6.0, the gawk is version
+#3.0.4, and the gawk was obtained from an rpm file gawk-3.0.4-1.i386.rpm.
+#
+#The program is:
+#
+
+# Wed Mar 8 13:41:34 IST 2000
+# ADR: modified to use INPUT, so can set it from command line.
+# When run, no output is produced, but it shouldn't core
+# dump, either.
+#
+# The program bug is to not close the file in sub2.
+
+function sub1(x) {
+# while (getline < "a" == 1) i++
+ while (getline < INPUT == 1) i++
+# close("a")
+ close(INPUT)
+}
+
+function sub2(x) {
+ i=0
+ delete y
+# while (getline < "a" == 1) z[++i] = $1
+ while (getline < INPUT == 1) z[++i] = $1
+ for(i in z) y[i] = x[i] + z[i]
+}
+
+function sub3(x, y, z) {
+ sub2(x)
+ for(i=1; i<=4; i++) z[i] = y[i]
+}
+
+BEGIN {
+ sub1(x)
+ sub2(x)
+ sub3(x, y, z)
+}
+#
+#And the data file is:
+#
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+# 32.440 3.830 3.383700000000000 10.08 298 865
+#
+#
diff --git a/test/arynocls.in b/test/arynocls.in
new file mode 100644
index 0000000..8f4712c
--- /dev/null
+++ b/test/arynocls.in
@@ -0,0 +1,30 @@
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
+ 32.440 3.830 3.383700000000000 10.08 298 865
diff --git a/test/arynocls.ok b/test/arynocls.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/arynocls.ok
diff --git a/test/aryprm1.awk b/test/aryprm1.awk
new file mode 100644
index 0000000..e5bb991
--- /dev/null
+++ b/test/aryprm1.awk
@@ -0,0 +1,9 @@
+function f(a) {
+ if (3 in a)
+ print 7
+ a = 5
+}
+
+BEGIN {
+ f(arr)
+}
diff --git a/test/aryprm1.ok b/test/aryprm1.ok
new file mode 100644
index 0000000..99ffd8f
--- /dev/null
+++ b/test/aryprm1.ok
@@ -0,0 +1,2 @@
+gawk: aryprm1.awk:4: fatal: attempt to use array `a (from arr)' in a scalar context
+EXIT CODE: 2
diff --git a/test/aryprm2.awk b/test/aryprm2.awk
new file mode 100644
index 0000000..00dd763
--- /dev/null
+++ b/test/aryprm2.awk
@@ -0,0 +1,8 @@
+function f(a) {
+ delete a
+ a *= 5
+}
+
+BEGIN {
+ f(arr)
+}
diff --git a/test/aryprm2.ok b/test/aryprm2.ok
new file mode 100644
index 0000000..c8585c9
--- /dev/null
+++ b/test/aryprm2.ok
@@ -0,0 +1,2 @@
+gawk: aryprm2.awk:3: fatal: attempt to use array `a (from arr)' in a scalar context
+EXIT CODE: 2
diff --git a/test/aryprm3.awk b/test/aryprm3.awk
new file mode 100644
index 0000000..c38ab58
--- /dev/null
+++ b/test/aryprm3.awk
@@ -0,0 +1,10 @@
+function f(a, i) {
+ for (i in a)
+ delete a[i]
+ if (a == 0)
+ print 7
+}
+
+BEGIN {
+ f(arr)
+}
diff --git a/test/aryprm3.ok b/test/aryprm3.ok
new file mode 100644
index 0000000..63c5131
--- /dev/null
+++ b/test/aryprm3.ok
@@ -0,0 +1,2 @@
+gawk: aryprm3.awk:6: fatal: attempt to use array `a (from arr)' in a scalar context
+EXIT CODE: 2
diff --git a/test/aryprm4.awk b/test/aryprm4.awk
new file mode 100644
index 0000000..09427f6
--- /dev/null
+++ b/test/aryprm4.awk
@@ -0,0 +1,7 @@
+function f(x){
+ x = 1
+}
+BEGIN {
+ f(a)
+ a[1]
+}
diff --git a/test/aryprm4.ok b/test/aryprm4.ok
new file mode 100644
index 0000000..9307e4a
--- /dev/null
+++ b/test/aryprm4.ok
@@ -0,0 +1,2 @@
+gawk: aryprm4.awk:6: fatal: attempt to use scalar `a' as array
+EXIT CODE: 2
diff --git a/test/aryprm5.awk b/test/aryprm5.awk
new file mode 100644
index 0000000..a4aac36
--- /dev/null
+++ b/test/aryprm5.awk
@@ -0,0 +1,6 @@
+function f(x){
+ x[1] = x
+}
+BEGIN {
+ f(a)
+}
diff --git a/test/aryprm5.ok b/test/aryprm5.ok
new file mode 100644
index 0000000..1ce4119
--- /dev/null
+++ b/test/aryprm5.ok
@@ -0,0 +1,2 @@
+gawk: aryprm5.awk:2: fatal: attempt to use scalar parameter `x' as an array
+EXIT CODE: 2
diff --git a/test/aryprm6.awk b/test/aryprm6.awk
new file mode 100644
index 0000000..b12b278
--- /dev/null
+++ b/test/aryprm6.awk
@@ -0,0 +1,7 @@
+function f(x){
+ a
+ x[1] = 3
+}
+BEGIN {
+ f(a)
+}
diff --git a/test/aryprm6.ok b/test/aryprm6.ok
new file mode 100644
index 0000000..8561ddf
--- /dev/null
+++ b/test/aryprm6.ok
@@ -0,0 +1,2 @@
+gawk: aryprm6.awk:3: fatal: attempt to use scalar parameter `x' as an array
+EXIT CODE: 2
diff --git a/test/aryprm7.awk b/test/aryprm7.awk
new file mode 100644
index 0000000..b442b4d
--- /dev/null
+++ b/test/aryprm7.awk
@@ -0,0 +1,6 @@
+function f(x, y){
+ y[1] = x
+}
+BEGIN {
+ f(a, a)
+}
diff --git a/test/aryprm7.ok b/test/aryprm7.ok
new file mode 100644
index 0000000..00e2896
--- /dev/null
+++ b/test/aryprm7.ok
@@ -0,0 +1,2 @@
+gawk: aryprm7.awk:2: fatal: attempt to use scalar parameter `y' as an array
+EXIT CODE: 2
diff --git a/test/aryprm8.awk b/test/aryprm8.awk
new file mode 100644
index 0000000..b294abb
--- /dev/null
+++ b/test/aryprm8.awk
@@ -0,0 +1,22 @@
+BEGIN {
+ f(0, a) # nothing
+ f(1, a)
+}
+function f(i, a) {
+ if (i == 0) return
+ g(a, a)
+ pr(a)
+}
+function g(x, y) {
+ h(y, x, y)
+}
+function h(b, c, d) {
+ b[1] = 1
+ c[1] = 2 # rewrite
+ print b[1], d[1]
+ c[2] = 1
+ b[2] = 2 # should rewrite
+}
+function pr(x) {
+ print x[1], x[2]
+}
diff --git a/test/aryprm8.ok b/test/aryprm8.ok
new file mode 100644
index 0000000..fad54c2
--- /dev/null
+++ b/test/aryprm8.ok
@@ -0,0 +1,2 @@
+2 2
+2 2
diff --git a/test/arysubnm.awk b/test/arysubnm.awk
new file mode 100644
index 0000000..961b54a
--- /dev/null
+++ b/test/arysubnm.awk
@@ -0,0 +1 @@
+BEGIN { n = 11 ; foo[n] = n; print (2 <= n) }
diff --git a/test/arysubnm.ok b/test/arysubnm.ok
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test/arysubnm.ok
@@ -0,0 +1 @@
+1
diff --git a/test/asgext.awk b/test/asgext.awk
new file mode 100644
index 0000000..c7f1775
--- /dev/null
+++ b/test/asgext.awk
@@ -0,0 +1 @@
+{ print $3; $4 = "a"; print }
diff --git a/test/asgext.in b/test/asgext.in
new file mode 100644
index 0000000..3743b5b
--- /dev/null
+++ b/test/asgext.in
@@ -0,0 +1,3 @@
+1 2 3
+1
+1 2 3 4
diff --git a/test/asgext.ok b/test/asgext.ok
new file mode 100644
index 0000000..2c0df70
--- /dev/null
+++ b/test/asgext.ok
@@ -0,0 +1,6 @@
+3
+1 2 3 a
+
+1 a
+3
+1 2 3 a
diff --git a/test/asort.awk b/test/asort.awk
new file mode 100644
index 0000000..8a42e26
--- /dev/null
+++ b/test/asort.awk
@@ -0,0 +1,25 @@
+function init(a)
+{
+ a[1] = "aardvark"
+ a[2] = "animal"
+ a[3] = "zebra"
+ a[4] = "zoo"
+ a[5] = "Iguana"
+ a[6] = "Alligator"
+ a[7] = "Nouns"
+ a[8] = "people"
+}
+
+BEGIN {
+
+ for (IGNORECASE = 0; IGNORECASE < 2; IGNORECASE++) {
+ init(a)
+
+ n = asort(a)
+
+ for (i = 1; i <= n; i++)
+ printf("a[%d] = \"%s\"\n", i, a[i])
+
+ print "============"
+ }
+}
diff --git a/test/asort.ok b/test/asort.ok
new file mode 100644
index 0000000..1d0ddd0
--- /dev/null
+++ b/test/asort.ok
@@ -0,0 +1,18 @@
+a[1] = "Alligator"
+a[2] = "Iguana"
+a[3] = "Nouns"
+a[4] = "aardvark"
+a[5] = "animal"
+a[6] = "people"
+a[7] = "zebra"
+a[8] = "zoo"
+============
+a[1] = "aardvark"
+a[2] = "Alligator"
+a[3] = "animal"
+a[4] = "Iguana"
+a[5] = "Nouns"
+a[6] = "people"
+a[7] = "zebra"
+a[8] = "zoo"
+============
diff --git a/test/asorti.awk b/test/asorti.awk
new file mode 100644
index 0000000..3314c9f
--- /dev/null
+++ b/test/asorti.awk
@@ -0,0 +1,27 @@
+function init(a)
+{
+ delete a
+
+ a["aardvark"] = 1
+ a["animal"] = 2
+ a["zebra"] = 3
+ a["zoo"] = 4
+ a["Iguana"] = 5
+ a["Alligator"] = 6
+ a["Nouns"] = 7
+ a["people"] = 8
+}
+
+BEGIN {
+
+ for (IGNORECASE = 0; IGNORECASE < 2; IGNORECASE++) {
+ init(a)
+
+ n = asorti(a)
+
+ for (i = 1; i <= n; i++)
+ printf("a[%d] = \"%s\"\n", i, a[i])
+
+ print "============"
+ }
+}
diff --git a/test/asorti.ok b/test/asorti.ok
new file mode 100644
index 0000000..1d0ddd0
--- /dev/null
+++ b/test/asorti.ok
@@ -0,0 +1,18 @@
+a[1] = "Alligator"
+a[2] = "Iguana"
+a[3] = "Nouns"
+a[4] = "aardvark"
+a[5] = "animal"
+a[6] = "people"
+a[7] = "zebra"
+a[8] = "zoo"
+============
+a[1] = "aardvark"
+a[2] = "Alligator"
+a[3] = "animal"
+a[4] = "Iguana"
+a[5] = "Nouns"
+a[6] = "people"
+a[7] = "zebra"
+a[8] = "zoo"
+============
diff --git a/test/awkpath.ok b/test/awkpath.ok
new file mode 100644
index 0000000..6cffe1b
--- /dev/null
+++ b/test/awkpath.ok
@@ -0,0 +1 @@
+Found it.
diff --git a/test/back89.awk b/test/back89.awk
new file mode 100644
index 0000000..0da3362
--- /dev/null
+++ b/test/back89.awk
@@ -0,0 +1 @@
+/a\8b/
diff --git a/test/back89.in b/test/back89.in
new file mode 100644
index 0000000..b0a88f2
--- /dev/null
+++ b/test/back89.in
@@ -0,0 +1,2 @@
+a8b
+a\8b
diff --git a/test/back89.ok b/test/back89.ok
new file mode 100644
index 0000000..e9ea4d5
--- /dev/null
+++ b/test/back89.ok
@@ -0,0 +1 @@
+a8b
diff --git a/test/backgsub.awk b/test/backgsub.awk
new file mode 100644
index 0000000..bec7354
--- /dev/null
+++ b/test/backgsub.awk
@@ -0,0 +1,4 @@
+{
+ gsub( "\\\\", "\\\\")
+ print
+}
diff --git a/test/backgsub.in b/test/backgsub.in
new file mode 100644
index 0000000..2d3f17f
--- /dev/null
+++ b/test/backgsub.in
@@ -0,0 +1 @@
+\x\y\z
diff --git a/test/backgsub.ok b/test/backgsub.ok
new file mode 100644
index 0000000..e2e265f
--- /dev/null
+++ b/test/backgsub.ok
@@ -0,0 +1 @@
+\\x\\y\\z
diff --git a/test/backw.awk b/test/backw.awk
new file mode 100644
index 0000000..078a5d8
--- /dev/null
+++ b/test/backw.awk
@@ -0,0 +1 @@
+/\w+/
diff --git a/test/backw.in b/test/backw.in
new file mode 100644
index 0000000..ec09f60
--- /dev/null
+++ b/test/backw.in
@@ -0,0 +1,3 @@
+123
+abc
+456
diff --git a/test/backw.ok b/test/backw.ok
new file mode 100644
index 0000000..ec09f60
--- /dev/null
+++ b/test/backw.ok
@@ -0,0 +1,3 @@
+123
+abc
+456
diff --git a/test/badargs.ok b/test/badargs.ok
new file mode 100644
index 0000000..5c3bba7
--- /dev/null
+++ b/test/badargs.ok
@@ -0,0 +1,35 @@
+gawk: option requires an argument -- f
+Usage: gawk [POSIX or GNU style options] -f progfile [--] file ...
+Usage: gawk [POSIX or GNU style options] [--] 'program' file ...
+POSIX options: GNU long options:
+ -f progfile --file=progfile
+ -F fs --field-separator=fs
+ -v var=val --assign=var=val
+ -m[fr] val
+ -W compat --compat
+ -W copyleft --copyleft
+ -W copyright --copyright
+ -W dump-variables[=file] --dump-variables[=file]
+ -W exec=file --exec=file
+ -W gen-po --gen-po
+ -W help --help
+ -W lint[=fatal] --lint[=fatal]
+ -W lint-old --lint-old
+ -W non-decimal-data --non-decimal-data
+ -W profile[=file] --profile[=file]
+ -W posix --posix
+ -W re-interval --re-interval
+ -W source=program-text --source=program-text
+ -W traditional --traditional
+ -W usage --usage
+ -W version --version
+
+To report bugs, see node `Bugs' in `gawk.info', which is
+section `Reporting Problems and Bugs' in the printed version.
+
+gawk is a pattern scanning and processing language.
+By default it reads standard input and writes standard output.
+
+Examples:
+ gawk '{ sum += $1 }; END { print sum }' file
+ gawk -F: '{ print $1 }' /etc/passwd
diff --git a/test/childin.awk b/test/childin.awk
new file mode 100644
index 0000000..041c6ec
--- /dev/null
+++ b/test/childin.awk
@@ -0,0 +1 @@
+BEGIN { "cat" | getline; print; close("cat") }
diff --git a/test/childin.in b/test/childin.in
new file mode 100644
index 0000000..45b983b
--- /dev/null
+++ b/test/childin.in
@@ -0,0 +1 @@
+hi
diff --git a/test/childin.ok b/test/childin.ok
new file mode 100644
index 0000000..45b983b
--- /dev/null
+++ b/test/childin.ok
@@ -0,0 +1 @@
+hi
diff --git a/test/clobber.awk b/test/clobber.awk
new file mode 100644
index 0000000..6526de0
--- /dev/null
+++ b/test/clobber.awk
@@ -0,0 +1,98 @@
+BEGIN {
+ print "000800" > "seq"
+ close("seq")
+ ARGV[1] = "seq"
+ ARGC = 2
+}
+
+{ printf "%06d", $1 + 1 >"seq";
+ printf "%06d", $1 + 1 }
+# Date: Mon, 20 Jan 1997 15:14:06 -0600 (CST)
+# From: Dave Bodenstab <emory!synet.net!imdave>
+# To: bug-gnu-utils@prep.ai.mit.edu
+# Subject: GNU awk 3.0.2 core dump
+# Cc: arnold@gnu.ai.mit.edu
+#
+# The following program produces a core file on my FreeBSD system:
+#
+# bash$ echo 000800 >/tmp/seq
+# bash$ gawk '{ printf "%06d", $1 + 1 >"/tmp/seq";
+# printf "%06d", $1 + 1 }' /tmp/seq
+#
+# This fragment comes from mgetty+sendfax.
+#
+# Here is the trace:
+#
+# Script started on Mon Jan 20 15:09:04 1997
+# bash$ gawk --version
+# GNU Awk 3.0.2
+# Copyright (C) 1989, 1991-1996 Free Software Foundation.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# bash$ gdb gawk
+# GDB is free software and you are welcome to distribute copies of it
+# under certain conditions; type "show copying" to see the conditions.
+# There is absolutely no warranty for GDB; type "show warranty" for details.
+# GDB 4.13 (i386-unknown-freebsd),
+# Copyright 1994 Free Software Foundation, Inc...
+# (gdb) shell echo 000800 >/tmp/seq
+# (gdb) r '{ printf "%06d", $1 + 1 >"/tmp/seq"; printf "%06d", $1 + 1 }(gdb) r '{ printf "%06d", $1 + 1 >"/tmp/seq"; printf "%06d", $1 + 1 }' /tmp/seq
+# Starting program: /scratch/archive/src/cmd/gnuawk-3.0.2/gawk '{ printf "%06d", $1 + 1 >"/tmp/seq"; printf "%06d", $1 + 1 }' /tmp/seq
+#
+# Program received signal SIGBUS, Bus error.
+# 0xd86f in def_parse_field (up_to=1, buf=0x37704, len=6, fs=0x3b240, rp=0x0,
+# set=0xce6c <set_field>, n=0x0) at field.c:391
+# 391 sav = *end;
+# (gdb) bt
+# #0 0xd86f in def_parse_field (up_to=1, buf=0x37704, len=6, fs=0x3b240,
+# rp=0x0, set=0xce6c <set_field>, n=0x0) at field.c:391
+# #1 0xddb1 in get_field (requested=1, assign=0x0) at field.c:669
+# #2 0xc25d in r_get_lhs (ptr=0x3b9b4, assign=0x0) at eval.c:1339
+# #3 0x9ab0 in r_tree_eval (tree=0x3b9b4, iscond=0) at eval.c:604
+# #4 0xa5f1 in r_tree_eval (tree=0x3b9fc, iscond=0) at eval.c:745
+# #5 0x4661 in format_tree (fmt_string=0x3e040 "%06d", n0=0, carg=0x3ba20)
+# at builtin.c:620
+# #6 0x5beb in do_sprintf (tree=0x3b96c) at builtin.c:809
+# #7 0x5cd5 in do_printf (tree=0x3ba8c) at builtin.c:844
+# #8 0x9271 in interpret (tree=0x3ba8c) at eval.c:465
+# #9 0x8ca3 in interpret (tree=0x3bbd0) at eval.c:308
+# #10 0x8c34 in interpret (tree=0x3bc18) at eval.c:292
+# #11 0xf069 in do_input () at io.c:312
+# #12 0x12ba9 in main (argc=3, argv=0xefbfd538) at main.c:393
+# (gdb) l
+# 386 *buf += len;
+# 387 return nf;
+# 388 }
+# 389
+# 390 /* before doing anything save the char at *end */
+# 391 sav = *end;
+# 392 /* because it will be destroyed now: */
+# 393
+# 394 *end = ' '; /* sentinel character */
+# 395 for (; nf < up_to; scan++) {
+# (gdb) print end
+# $1 = 0x804d006 <Error reading address 0x804d006: No such file or directory>
+# (gdb) print buf
+# $2 = (char **) 0x37704
+# (gdb) print *buf
+# $3 = 0x804d000 <Error reading address 0x804d000: No such file or directory>
+# (gdb) q
+# The program is running. Quit anyway (and kill it)? (y or n) y
+# bash$ exit
+#
+# Script done on Mon Jan 20 15:11:07 1997
+#
+# Dave Bodenstab
+# imdave@synet.net
diff --git a/test/clobber.ok b/test/clobber.ok
new file mode 100644
index 0000000..7105708
--- /dev/null
+++ b/test/clobber.ok
@@ -0,0 +1 @@
+000801 \ No newline at end of file
diff --git a/test/clos1way.awk b/test/clos1way.awk
new file mode 100644
index 0000000..5bc4068
--- /dev/null
+++ b/test/clos1way.awk
@@ -0,0 +1,21 @@
+BEGIN {
+ command = "LC_ALL=C sort"
+
+ n = split("abcdefghijklmnopqrstuvwxyz", a, "")
+ for (i = n; i > 0; i--) {
+# print "printing", a[i] > "/dev/stderr"
+ print a[i] |& command
+ }
+
+ close(command, "to")
+
+# print "starting read loop" > "/dev/stderr"
+ do {
+ if (line)
+ print "got", line
+# stopme();
+ } while ((command |& getline line) > 0)
+
+# print "doing final close" > "/dev/stderr"
+ close(command)
+}
diff --git a/test/clos1way.ok b/test/clos1way.ok
new file mode 100644
index 0000000..09d732a
--- /dev/null
+++ b/test/clos1way.ok
@@ -0,0 +1,26 @@
+got a
+got b
+got c
+got d
+got e
+got f
+got g
+got h
+got i
+got j
+got k
+got l
+got m
+got n
+got o
+got p
+got q
+got r
+got s
+got t
+got u
+got v
+got w
+got x
+got y
+got z
diff --git a/test/clsflnam.awk b/test/clsflnam.awk
new file mode 100644
index 0000000..0ba601f
--- /dev/null
+++ b/test/clsflnam.awk
@@ -0,0 +1,12 @@
+#! /usr/bin/awk -f
+BEGIN {
+ getline
+# print ("FILENAME =", FILENAME) > "/dev/stderr"
+ #Rewind the file
+ if (close(FILENAME)) {
+ print "Error `" ERRNO "' closing input file" > "/dev/stderr";
+ exit;
+ }
+}
+{ print "Analysing ", $0 }
+
diff --git a/test/clsflnam.in b/test/clsflnam.in
new file mode 100644
index 0000000..a92d664
--- /dev/null
+++ b/test/clsflnam.in
@@ -0,0 +1,3 @@
+line 1
+line 2
+line 3
diff --git a/test/clsflnam.ok b/test/clsflnam.ok
new file mode 100644
index 0000000..9addfc7
--- /dev/null
+++ b/test/clsflnam.ok
@@ -0,0 +1 @@
+Error `close of redirection that was never opened' closing input file
diff --git a/test/compare.awk b/test/compare.awk
new file mode 100644
index 0000000..39a88f3
--- /dev/null
+++ b/test/compare.awk
@@ -0,0 +1,13 @@
+BEGIN {
+ if (ARGV[1]) print 1
+ ARGV[1] = ""
+ if (ARGV[2]) print 2
+ ARGV[2] = ""
+ if ("0") print "zero"
+ if ("") print "null"
+ if (0) print 0
+}
+{
+ if ($0) print $0
+ if ($1) print $1
+}
diff --git a/test/compare.in b/test/compare.in
new file mode 100644
index 0000000..1ab098b
--- /dev/null
+++ b/test/compare.in
@@ -0,0 +1,4 @@
+0
+1
+0 1
+
diff --git a/test/compare.ok b/test/compare.ok
new file mode 100644
index 0000000..8241359
--- /dev/null
+++ b/test/compare.ok
@@ -0,0 +1,5 @@
+2
+zero
+1
+1
+0 1
diff --git a/test/compare2.awk b/test/compare2.awk
new file mode 100644
index 0000000..f2c2786
--- /dev/null
+++ b/test/compare2.awk
@@ -0,0 +1,165 @@
+# From beebe@math.utah.edu Thu Aug 2 15:35:07 2001
+# Received: from mail.actcom.co.il [192.114.47.13]
+# by localhost with POP3 (fetchmail-5.7.4)
+# for arnold@localhost (single-drop); Thu, 02 Aug 2001 15:35:07 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Aug 2 16:02:36 2001)
+# X-From_: beebe@sunshine.math.utah.edu Thu Aug 2 15:41:13 2001
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id PAA01349 for <arobbins@actcom.co.il>;
+# Thu, 2 Aug 2001 15:41:06 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from billohost.com (www.billohost.com [209.196.35.10])
+# by lmail.actcom.co.il (8.11.2/8.11.2) with ESMTP id f72Cf3I21032
+# for <arobbins@actcom.co.il>; Thu, 2 Aug 2001 15:41:05 +0300
+# Received: from fencepost.gnu.org (we-refuse-to-spy-on-our-users@fencepost.gnu.org [199.232.76.164])
+# by billohost.com (8.9.3/8.9.3) with ESMTP id IAA28585
+# for <arnold@skeeve.com>; Thu, 2 Aug 2001 08:34:38 -0400
+# Received: from sunshine.math.utah.edu ([128.110.198.2])
+# by fencepost.gnu.org with esmtp (Exim 3.22 #1 (Debian))
+# id 15SHjG-00036x-00
+# for <arnold@gnu.org>; Thu, 02 Aug 2001 08:37:30 -0400
+# Received: from suncore.math.utah.edu (IDENT:GsUbUdUYCtFLRE4HvnnvhN4JsjooYcfR@suncore0.math.utah.edu [128.110.198.5])
+# by sunshine.math.utah.edu (8.9.3/8.9.3) with ESMTP id GAA00190;
+# Thu, 2 Aug 2001 06:37:04 -0600 (MDT)
+# Received: (from beebe@localhost)
+# by suncore.math.utah.edu (8.9.3/8.9.3) id GAA20469;
+# Thu, 2 Aug 2001 06:37:03 -0600 (MDT)
+# Date: Thu, 2 Aug 2001 06:37:03 -0600 (MDT)
+# From: "Nelson H. F. Beebe" <beebe@math.utah.edu>
+# To: arnold@gnu.org
+# Cc: beebe@math.utah.edu
+# X-US-Mail: "Center for Scientific Computing, Department of Mathematics, 322
+# INSCC, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT
+# 84112-0090, USA"
+# X-Telephone: +1 801 581 5254
+# X-FAX: +1 801 585 1640, +1 801 581 4148
+# X-URL: http://www.math.utah.edu/~beebe
+# Subject: awk implementations: a bug, or new dark corner?
+# Message-ID: <CMM.0.92.0.996755823.beebe@suncore.math.utah.edu>
+# Status: RO
+#
+# Consider the following program:
+#
+# % cat bug.awk
+BEGIN {
+ split("00/00/00",mdy,"/")
+ if ((mdy[1] == 0) && (mdy[2] == 0) && (mdy[3] == 0))
+ {
+ print "OK: zero strings compare equal to number zero"
+ exit(0)
+ }
+ else
+ {
+ print "ERROR: zero strings compare unequal to number zero"
+ exit(1)
+ }
+}
+#
+# Here are the awk implementation versions (on Sun Solaris 2.7):
+#
+# % awk -V
+# awk version 19990416
+#
+# % mawk -W version
+# mawk 1.3.3 Nov 1996, Copyright (C) Michael D. Brennan
+#
+# % nawk -V
+# awk version 20001115
+#
+# % gawk --version
+# GNU Awk 3.1.10
+# ...
+#
+# Here's what they say about the test program:
+#
+# foreach f (awk mawk nawk gawk gawk-*)
+# echo ======== $f
+# $f -f ~/bug.awk
+# end
+#
+# ======== awk
+# OK: zero strings compare equal to number zero
+# ======== mawk
+# OK: zero strings compare equal to number zero
+# ======== nawk
+# OK: zero strings compare equal to number zero
+# ======== gawk
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.0
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.1
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.3
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.4
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.5
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.6
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.60
+# OK: zero strings compare equal to number zero
+# ======== gawk-3.0.90
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.91
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.92
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.93
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.94
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.95
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.96
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.0.97
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.1.0
+# ERROR: zero strings compare unequal to number zero
+# ======== gawk-3.1.10
+# ERROR: zero strings compare unequal to number zero
+#
+# Identical results were obtained on Apple Rhapsody, Apple Darwin,
+# Compaq/DEC Alpha OSF/1, Intel x86 GNU/Linux, SGI IRIX 6.5, DEC Alpha
+# GNU/Linux, and Sun SPARC GNU/Linux, so it definitely is not a C
+# compiler problem.
+#
+# However, the gray awk book, p. 44, says:
+#
+# In a comparison expression like:
+# x == y
+# if both operands have a numeric type, the comparison is numeric;
+# otherwise, any numeric operand is converted to a string and the
+# comparison is made on the string values.
+#
+# and the new green gawk book, p. 95, says:
+#
+# When comparing operands of mixed types, numeric operands are
+# converted to strings using the value of `CONVFMT'
+#
+# This suggests that the OK response in bug.awk is wrong, and the ERROR
+# response is correct. Only recent gawk releases do the right thing,
+# and it is awk, mawk, and nawk that have a bug.
+#
+# If I change the test program from "00/00/00" to "0/0/0", all versions
+# tested produce the OK response.
+#
+# Comments?
+#
+# After reading the two book excerpts, I changed my code to read
+#
+# if (((0 + mdy[1]) == 0) && ((0 + mdy[2]) == 0) && ((0 + mdy[3]) == 0))
+#
+# and output from all implementations now agrees.
+#
+# -------------------------------------------------------------------------------
+# - Nelson H. F. Beebe Tel: +1 801 581 5254 -
+# - Center for Scientific Computing FAX: +1 801 585 1640, +1 801 581 4148 -
+# - University of Utah Internet e-mail: beebe@math.utah.edu -
+# - Department of Mathematics, 322 INSCC beebe@acm.org beebe@computer.org -
+# - 155 S 1400 E RM 233 beebe@ieee.org -
+# - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe -
+# -------------------------------------------------------------------------------
+#
diff --git a/test/compare2.ok b/test/compare2.ok
new file mode 100644
index 0000000..fd1043a
--- /dev/null
+++ b/test/compare2.ok
@@ -0,0 +1 @@
+OK: zero strings compare equal to number zero
diff --git a/test/concat1.awk b/test/concat1.awk
new file mode 100644
index 0000000..4ccb117
--- /dev/null
+++ b/test/concat1.awk
@@ -0,0 +1,78 @@
+#From deep@cicada-semi.com Wed Jan 23 13:15:52 2002
+#X-From_: deep@cicada-semi.com Wed Jan 23 01:24:54 2002
+#From: "Mandeep Chadha" <deep@cicada-semi.com>
+#To: <bug-gawk@gnu.org>
+#Subject: gawk version 3.1.0 will not print a ";"
+#Date: Tue, 22 Jan 2002 17:23:57 -0600
+#Message-ID: <NCBBLGONGLINHCDGFCPNOENHCOAA.deep@cicada-semi.com>
+#MIME-Version: 1.0
+#Content-Type: text/plain;
+# charset="iso-8859-1"
+#Content-Transfer-Encoding: 7bit
+#X-Priority: 3 (Normal)
+#X-MSMail-Priority: Normal
+#X-Mailer: Microsoft Outlook IMO, Build 9.0.2416 (9.0.2911.0)
+#Importance: Normal
+#X-MimeOLE: Produced By Microsoft MimeOLE V5.50.4807.1700
+#
+#
+#The file "tmp" contains the following lines:
+#
+#A
+#B
+#C
+#D
+#
+#and when I run the command:
+#
+# gawk '{print "Input = "$_" ; "}' tmp
+{print "Input = "$_" ; "}
+#
+#I get the following output:
+#
+#Input = A
+#Input = B
+#Input = C
+#Input = D
+#
+#while I expect the following output:
+#
+#Input = A ;
+#Input = B ;
+#Input = C ;
+#Input = D ;
+#
+#Running gawk --version produces the following output:
+#
+#GNU Awk 3.1.0
+#Copyright (C) 1989, 1991-2001 Free Software Foundation.
+#
+#This program is free software; you can redistribute it and/or modify
+#it under the terms of the GNU General Public License as published by
+#the Free Software Foundation; either version 2 of the License, or
+#(at your option) any later version.
+#
+#This program is distributed in the hope that it will be useful,
+#but WITHOUT ANY WARRANTY; without even the implied warranty of
+#MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+#GNU General Public License for more details.
+#
+#You should have received a copy of the GNU General Public License
+#along with this program; if not, write to the Free Software
+#Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+#I am running this on a i686 machine that is running RedHat 7.2 (out of the box).
+#
+#Thanks,
+#
+#Mandeep Chadha
+#
+#----------------------------------------
+#Mandeep Chadha
+#Cicada Semiconductor Corp.
+#811 Barton Springs Road, Suite 550
+#Austin, TX 78704
+#Ph: (512) 327-3500 x111
+#E-mail: deep@cicada-semi.com
+#URL: http://www.cicada-semi.com
+#----------------------------------------
diff --git a/test/concat1.in b/test/concat1.in
new file mode 100644
index 0000000..8422d40
--- /dev/null
+++ b/test/concat1.in
@@ -0,0 +1,4 @@
+A
+B
+C
+D
diff --git a/test/concat1.ok b/test/concat1.ok
new file mode 100644
index 0000000..b0aad60
--- /dev/null
+++ b/test/concat1.ok
@@ -0,0 +1,4 @@
+Input = A ;
+Input = B ;
+Input = C ;
+Input = D ;
diff --git a/test/concat2.awk b/test/concat2.awk
new file mode 100644
index 0000000..a94b29b
--- /dev/null
+++ b/test/concat2.awk
@@ -0,0 +1,8 @@
+function f(s, x) {
+ x = 1
+ s = 3
+ s = s x
+ print s
+}
+
+BEGIN { for (i = 1; i <=12; i++) f() }
diff --git a/test/concat2.ok b/test/concat2.ok
new file mode 100644
index 0000000..b7b86e5
--- /dev/null
+++ b/test/concat2.ok
@@ -0,0 +1,12 @@
+31
+31
+31
+31
+31
+31
+31
+31
+31
+31
+31
+31
diff --git a/test/concat3.awk b/test/concat3.awk
new file mode 100644
index 0000000..554c9a9
--- /dev/null
+++ b/test/concat3.awk
@@ -0,0 +1 @@
+BEGIN { a; a = a (b "c"); print a; print b }
diff --git a/test/concat3.ok b/test/concat3.ok
new file mode 100644
index 0000000..8802331
--- /dev/null
+++ b/test/concat3.ok
@@ -0,0 +1,2 @@
+c
+
diff --git a/test/convfmt.awk b/test/convfmt.awk
new file mode 100644
index 0000000..90fd204
--- /dev/null
+++ b/test/convfmt.awk
@@ -0,0 +1,10 @@
+BEGIN {
+ CONVFMT = "%2.2f"
+ a = 123.456
+ b = a "" # give `a' string value also
+ printf "a = %s\n", a
+ CONVFMT = "%.6g"
+ printf "a = %s\n", a
+ a += 0 # make `a' numeric only again
+ printf "a = %s\n", a # use `a' as string
+}
diff --git a/test/convfmt.ok b/test/convfmt.ok
new file mode 100644
index 0000000..a7b66f7
--- /dev/null
+++ b/test/convfmt.ok
@@ -0,0 +1,3 @@
+a = 123.46
+a = 123.456
+a = 123.456
diff --git a/test/datanonl.awk b/test/datanonl.awk
new file mode 100644
index 0000000..29e668e
--- /dev/null
+++ b/test/datanonl.awk
@@ -0,0 +1,3 @@
+# example program from alex@bofh.torun.pl
+BEGIN { IGNORECASE=1 }
+/\w+@([[:alnum:]]+\.)+[[:alnum:]]+[[:blank:]]+/ {print $0}
diff --git a/test/datanonl.in b/test/datanonl.in
new file mode 100644
index 0000000..5340d7b
--- /dev/null
+++ b/test/datanonl.in
@@ -0,0 +1 @@
+bleble@foo1.bh.pl deny \ No newline at end of file
diff --git a/test/datanonl.ok b/test/datanonl.ok
new file mode 100644
index 0000000..7b0fcaf
--- /dev/null
+++ b/test/datanonl.ok
@@ -0,0 +1 @@
+bleble@foo1.bh.pl deny
diff --git a/test/defref.awk b/test/defref.awk
new file mode 100644
index 0000000..b4e8f10
--- /dev/null
+++ b/test/defref.awk
@@ -0,0 +1 @@
+BEGIN { foo() }
diff --git a/test/defref.ok b/test/defref.ok
new file mode 100644
index 0000000..e0061a0
--- /dev/null
+++ b/test/defref.ok
@@ -0,0 +1,3 @@
+gawk: defref.awk:2: warning: function `foo' called but never defined
+gawk: defref.awk:1: fatal: function `foo' not defined
+EXIT CODE: 2
diff --git a/test/delarpm2.awk b/test/delarpm2.awk
new file mode 100644
index 0000000..ad0ed3d
--- /dev/null
+++ b/test/delarpm2.awk
@@ -0,0 +1,95 @@
+# From beebe@math.utah.edu Sat May 17 21:31:27 2003
+# Return-Path: <beebe@math.utah.edu>
+# Received: from localhost (aahz [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h4HIQmCw001380
+# for <arnold@localhost>; Sat, 17 May 2003 21:31:27 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Sat, 17 May 2003 21:31:27 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sat May 17 21:34:07 2003)
+# X-From_: beebe@sunshine.math.utah.edu Fri May 16 20:38:45 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h4GHcd226764 for <arobbins@actcom.co.il>;
+# Fri, 16 May 2003 20:38:40 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h4GHgBc2023067
+# for <arobbins@actcom.co.il>; Fri, 16 May 2003 20:42:13 +0300
+# Received: from sunshine.math.utah.edu (sunshine.math.utah.edu [128.110.198.2])
+# by f7.net (8.11.7/8.11.6) with ESMTP id h4GHcbf09202
+# for <arnold@skeeve.com>; Fri, 16 May 2003 13:38:37 -0400
+# Received: from suncore.math.utah.edu (IDENT:r8KQWmkF4jVMLBhxpojXGNCAnBZB38ET@suncore.math.utah.edu [128.110.198.5])
+# by sunshine.math.utah.edu (8.9.3p2/8.9.3) with ESMTP id LAA09111;
+# Fri, 16 May 2003 11:38:34 -0600 (MDT)
+# Received: (from beebe@localhost)
+# by suncore.math.utah.edu (8.9.3p2/8.9.3) id LAA01743;
+# Fri, 16 May 2003 11:38:34 -0600 (MDT)
+# Date: Fri, 16 May 2003 11:38:34 -0600 (MDT)
+# From: "Nelson H. F. Beebe" <beebe@math.utah.edu>
+# To: "Arnold Robbins" <arnold@skeeve.com>
+# Cc: beebe@math.utah.edu
+# X-US-Mail: "Center for Scientific Computing, Department of Mathematics, 110
+# LCB, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT
+# 84112-0090, USA"
+# X-Telephone: +1 801 581 5254
+# X-FAX: +1 801 585 1640, +1 801 581 4148
+# X-URL: http://www.math.utah.edu/~beebe
+# Subject: gawk-3.1.2[ab]: bug in delete
+# Message-ID: <CMM.0.92.0.1053106714.beebe@suncore.math.utah.edu>
+#
+# I discovered yesterday that one of my tools got broken by the upgrade
+# to gawk-3.1.2a and gawk-3.1.2b. For now, I've temporarily reset
+# /usr/local/bin/gawk on the Sun Solaris and Intel GNU/Linux systems
+# back to be gawk-3.1.2.
+#
+# This morning, I isolated the problem to the following small test case:
+#
+# % cat bug.awk
+ BEGIN {
+ clear_array(table)
+ foo(table)
+ for (key in table)
+ print key, table[k]
+ clear_array(table)
+ exit(0)
+ }
+
+ function clear_array(array, key)
+ {
+ for (key in array)
+ delete array[key]
+ }
+
+ function foo(a)
+ {
+ a[1] = "one"
+ a[2] = "two"
+ }
+#
+# With nawk, mawk, and also gawk-3.1.2 or earlier, I get this:
+#
+# % mawk -f bug.awk
+# 1
+# 2
+#
+# However, with the two most recent gawk releases, I get:
+#
+# % gawk-3.1.2b -f bug.awk
+# gawk-3.1.2b: bug.awk:12: fatal: delete: illegal use of variable `table' as
+# array
+#
+# If the first clear_array() statement is commented out, it runs.
+# However, the problem is that in a large program, it may not be easy to
+# identify places where it is safe to invoke delete, so I believe the
+# old behavior is more desirable.
+#
+# -------------------------------------------------------------------------------
+# - Nelson H. F. Beebe Tel: +1 801 581 5254 -
+# - Center for Scientific Computing FAX: +1 801 581 4148 -
+# - University of Utah Internet e-mail: beebe@math.utah.edu -
+# - Department of Mathematics, 110 LCB beebe@acm.org beebe@computer.org -
+# - 155 S 1400 E RM 233 beebe@ieee.org -
+# - Salt Lake City, UT 84112-0090, USA URL: http://www.math.utah.edu/~beebe -
+# -------------------------------------------------------------------------------
+#
diff --git a/test/delarpm2.ok b/test/delarpm2.ok
new file mode 100644
index 0000000..bea5b8a
--- /dev/null
+++ b/test/delarpm2.ok
@@ -0,0 +1,2 @@
+1
+2
diff --git a/test/delarprm.awk b/test/delarprm.awk
new file mode 100644
index 0000000..d59de31
--- /dev/null
+++ b/test/delarprm.awk
@@ -0,0 +1,50 @@
+# From dragon!unagi.cis.upenn.edu!sjanet Tue Mar 25 17:12:20 1997
+# Return-Path: <dragon!unagi.cis.upenn.edu!sjanet>
+# Received: by skeeve.atl.ga.us (/\==/\ Smail3.1.22.1 #22.1)
+# id <m0w9eS4-000GWyC@skeeve.atl.ga.us>; Tue, 25 Mar 97 17:12 EST
+# Received: by vecnet.com (DECUS UUCP /2.0/2.0/2.0/);
+# Tue, 25 Mar 97 16:58:36 EDT
+# Received: from gnu-life.ai.mit.edu by antaries.vec.net (MX V4.2 VAX) with SMTP;
+# Tue, 25 Mar 1997 16:58:26 EST
+# Received: from linc.cis.upenn.edu by gnu-life.ai.mit.edu (8.8.5/8.6.12GNU) with
+# ESMTP id QAA24350 for <bug-gnu-utils@prep.ai.mit.edu>; Tue, 25 Mar
+# 1997 16:56:59 -0500 (EST)
+# Received: from unagi.cis.upenn.edu (UNAGI.CIS.UPENN.EDU [158.130.8.153]) by
+# linc.cis.upenn.edu (8.8.5/8.8.5) with ESMTP id QAA09424; Tue, 25 Mar
+# 1997 16:56:54 -0500 (EST)
+# Received: (from sjanet@localhost) by unagi.cis.upenn.edu (8.8.5/8.8.5) id
+# QAA03969; Tue, 25 Mar 1997 16:56:50 -0500 (EST)
+# Date: Tue, 25 Mar 1997 16:56:50 -0500 (EST)
+# From: Stan Janet <sjanet@unagi.cis.upenn.edu>
+# Message-ID: <199703252156.QAA03969@unagi.cis.upenn.edu>
+# To: bug-gnu-utils@prep.ai.mit.edu
+# CC: arnold@gnu.ai.mit.edu
+# Subject: GNU awk 3.0.2 bug: fatal error deleting local array inside function
+# Status: ORf
+#
+# Version: GNU Awk 3.0.2
+# Platforms: SunOS 4.1.1 (compiled with Sun cc)
+# IRIX 5.3 (compiled with SGI cc)
+# Problem: Deleting local array inside function causes fatal internal error (and
+# core dump. The error does not occur when the variable "x", unused in
+# the example, is removed or when the function is declared foo(x,p).
+# When the function is declared foo(p,x), adding a dummy line that uses
+# "x", e.g. "x=1" does not prevent the error. If "p" is not deleted,
+# there is no error. If "p[1]" is used to delete the lone element, there
+# is no error.
+#
+# ==== The program x.gawk ====
+
+function foo(p,x) {
+ p[1]="bar"
+ delete p
+ return 0
+}
+
+BEGIN {
+ foo()
+}
+
+# ==== The output for "gawk -f x.gawk" (SunOS) ====
+#
+# gawk: x.gawk:4: fatal error: internal error
diff --git a/test/delarprm.ok b/test/delarprm.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/delarprm.ok
diff --git a/test/delfunc.awk b/test/delfunc.awk
new file mode 100644
index 0000000..365a76b
--- /dev/null
+++ b/test/delfunc.awk
@@ -0,0 +1,7 @@
+# from Stepan Kasal, 9 July 2003
+function f()
+{
+ delete f
+}
+
+BEGIN { f() }
diff --git a/test/delfunc.ok b/test/delfunc.ok
new file mode 100644
index 0000000..d12f0bc
--- /dev/null
+++ b/test/delfunc.ok
@@ -0,0 +1,2 @@
+gawk: delfunc.awk:4: fatal: attempt to use function `f' as an array
+EXIT CODE: 2
diff --git a/test/dynlj.awk b/test/dynlj.awk
new file mode 100644
index 0000000..ec6851b
--- /dev/null
+++ b/test/dynlj.awk
@@ -0,0 +1 @@
+BEGIN { printf "%*sworld\n", -20, "hello" }
diff --git a/test/dynlj.ok b/test/dynlj.ok
new file mode 100644
index 0000000..c8f3fe9
--- /dev/null
+++ b/test/dynlj.ok
@@ -0,0 +1 @@
+hello world
diff --git a/test/eofsplit.awk b/test/eofsplit.awk
new file mode 100644
index 0000000..22042b4
--- /dev/null
+++ b/test/eofsplit.awk
@@ -0,0 +1,68 @@
+# Date: Sat, 30 Mar 1996 12:47:17 -0800 (PST)
+# From: Charles Howes <chowes@grid.direct.ca>
+# To: bug-gnu-utils@prep.ai.mit.edu, arnold@gnu.ai.mit.edu
+# Subject: Bug in Gawk 3.0.0, sample code:
+#
+#!/usr/local/bin/gawk -f
+#
+# Hello! This is a bug report from chowes@direct.ca
+#
+# uname -a
+# SunOS hostname 5.5 Generic sun4m
+#
+# Gnu Awk (gawk) 3.0, patchlevel 0:
+BEGIN{
+FS=":"
+while ((getline < "/etc/passwd") > 0) {
+ r=$3
+ z=0
+ n[0]=1
+ }
+FS=" "
+}
+#gawk: fp.new:16: fatal error: internal error
+#Abort
+
+# #!/usr/local/bin/gawk -f
+# # Gnu Awk (gawk) 2.15, patchlevel 6
+#
+# BEGIN{
+# f="/etc/passwd"
+# while (getline < f) n[0]=1
+# FS=" "
+# }
+# #gawk: /staff/chowes/bin/fp:7: fatal error: internal error
+# #Abort
+
+# These examples are not perfect coding style because I took a real
+# piece of code and tried to strip away anything that didn't make the error
+# message go away.
+#
+# The interesting part of the 'truss' is:
+#
+# fstat(3, 0xEFFFF278) = 0
+# lseek(3, 0, SEEK_SET) = 0
+# read(3, " r o o t : x : 0 : 1 : S".., 2291) = 2291
+# brk(0x00050020) = 0
+# brk(0x00052020) = 0
+# read(3, 0x0004F4B8, 2291) = 0
+# close(3) = 0
+# Incurred fault #6, FLTBOUNDS %pc = 0x0001B810
+# siginfo: SIGSEGV SEGV_MAPERR addr=0x00053000
+# Received signal #11, SIGSEGV [caught]
+# siginfo: SIGSEGV SEGV_MAPERR addr=0x00053000
+# write(2, " g a w k", 4) = 4
+# write(2, " : ", 2) = 2
+#
+# --
+# Charles Howes -- chowes@direct.ca Voice: (604) 691-1607
+# System Administrator Fax: (604) 691-1605
+# Internet Direct - 1050 - 555 West Hastings St - Vancouver, BC V6B 4N6
+#
+# A sysadmin's life is a sorry one. The only advantage he has over Emergency
+# Room doctors is that malpractice suits are rare. On the other hand, ER
+# doctors never have to deal with patients installing new versions of their
+# own innards! -Michael O'Brien
+#
+# "I think I know what may have gone wrong in the original s/w.
+# It's a bug in the way it was written." - Vagueness**n
diff --git a/test/eofsplit.ok b/test/eofsplit.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/eofsplit.ok
diff --git a/test/exitval1.awk b/test/exitval1.awk
new file mode 100644
index 0000000..550200d
--- /dev/null
+++ b/test/exitval1.awk
@@ -0,0 +1,3 @@
+# This should exit 0, even though child exits 1
+BEGIN { "exit 1" | getline junk ; exit 12 }
+END { exit 0 }
diff --git a/test/exitval1.ok b/test/exitval1.ok
new file mode 100644
index 0000000..eca5994
--- /dev/null
+++ b/test/exitval1.ok
@@ -0,0 +1 @@
+EXIT CODE: 0
diff --git a/test/exitval2.awk b/test/exitval2.awk
new file mode 100644
index 0000000..ed05e76
--- /dev/null
+++ b/test/exitval2.awk
@@ -0,0 +1,3 @@
+BEGIN { print "foo" | "read x ; echo $x ; exit 12" }
+# this should still exit 0, as pointed out by kenny mccormack in
+# comp.lang.awk on 2 feb 2005
diff --git a/test/exitval2.ok b/test/exitval2.ok
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/test/exitval2.ok
@@ -0,0 +1 @@
+foo
diff --git a/test/fflush.ok b/test/fflush.ok
new file mode 100644
index 0000000..4cf0df6
--- /dev/null
+++ b/test/fflush.ok
@@ -0,0 +1,16 @@
+1st
+2nd
+1st
+2nd
+1st
+2nd
+1st
+2nd
+1st
+2nd
+1st
+2nd
+1st
+2nd
+1st
+2nd
diff --git a/test/fflush.sh b/test/fflush.sh
new file mode 100755
index 0000000..42d624c
--- /dev/null
+++ b/test/fflush.sh
@@ -0,0 +1,16 @@
+#! /bin/sh
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"cat"}'
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"cat"}'|cat
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");close("/dev/stdout");print "2nd"|"cat"}'|cat
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"cat";close("cat")}'|cat
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"cat";close("cat")}'|cat
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"cat";close("cat")}'|cat
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"sort"}'|cat
+
+../gawk 'BEGIN{print "1st";fflush("/dev/stdout");print "2nd"|"sort";close("sort")}'|cat
diff --git a/test/fieldwdth.awk b/test/fieldwdth.awk
new file mode 100644
index 0000000..f2eeb6c
--- /dev/null
+++ b/test/fieldwdth.awk
@@ -0,0 +1,2 @@
+BEGIN { FIELDWIDTHS = "2 3 4" }
+{ print $2 }
diff --git a/test/fieldwdth.in b/test/fieldwdth.in
new file mode 100644
index 0000000..28d1445
--- /dev/null
+++ b/test/fieldwdth.in
@@ -0,0 +1 @@
+123456789
diff --git a/test/fieldwdth.ok b/test/fieldwdth.ok
new file mode 100644
index 0000000..51b4008
--- /dev/null
+++ b/test/fieldwdth.ok
@@ -0,0 +1 @@
+345
diff --git a/test/fldchg.awk b/test/fldchg.awk
new file mode 100644
index 0000000..a8018f7
--- /dev/null
+++ b/test/fldchg.awk
@@ -0,0 +1,8 @@
+{
+# print "0:", $0
+ gsub("aa", "+")
+ print "1:", $0
+ $3 = "<" $3 ">"
+ print "2:", $0
+ print "2a:" "%" $1 "%" $2 "%" $3 "%" $4 "%" $5
+}
diff --git a/test/fldchg.in b/test/fldchg.in
new file mode 100644
index 0000000..f500c36
--- /dev/null
+++ b/test/fldchg.in
@@ -0,0 +1 @@
+aa aab c d e f
diff --git a/test/fldchg.ok b/test/fldchg.ok
new file mode 100644
index 0000000..cc5032a
--- /dev/null
+++ b/test/fldchg.ok
@@ -0,0 +1,3 @@
+1: + +b c d e f
+2: + +b <c> d e f
+2a:%+%+b%<c>%d%e
diff --git a/test/fldchgnf.awk b/test/fldchgnf.awk
new file mode 100644
index 0000000..fbb8f11
--- /dev/null
+++ b/test/fldchgnf.awk
@@ -0,0 +1 @@
+{ OFS = ":"; $2 = ""; print $0; print NF }
diff --git a/test/fldchgnf.in b/test/fldchgnf.in
new file mode 100644
index 0000000..8e13e46
--- /dev/null
+++ b/test/fldchgnf.in
@@ -0,0 +1 @@
+a b c d
diff --git a/test/fldchgnf.ok b/test/fldchgnf.ok
new file mode 100644
index 0000000..10b38ed
--- /dev/null
+++ b/test/fldchgnf.ok
@@ -0,0 +1,2 @@
+a::c:d
+4
diff --git a/test/fmttest.awk b/test/fmttest.awk
new file mode 100644
index 0000000..e8db0fb
--- /dev/null
+++ b/test/fmttest.awk
@@ -0,0 +1,164 @@
+### /u/sy/beebe/xml/shbook/fmttest.awk, Sat May 31 09:13:52 2003
+### Edit by Nelson H. F. Beebe <beebe@math.utah.edu>
+### ====================================================================
+### Test the degree of support for printf format items in awk
+### implementations.
+###
+### Usage:
+### awk -f fmttest.awk
+### [31-May-2003]
+### ====================================================================
+
+BEGIN {
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: c\n"
+
+ printf("ABC with %%c : %c\n", "ABC")
+ printf("123 with %%c : %c\n", 123)
+
+ printf("ABC with %%.15c : %.15c\n", "ABC")
+ printf("123 with %%.15c : %.15c\n", 123)
+
+ printf("ABC with %%15c : %15c\n", "ABC")
+ printf("123 with %%15c : %15c\n", 123)
+
+ printf("ABC with %%-15c : %-15c\n", "ABC")
+ printf("123 with %%-15c : %-15c\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: d\n"
+
+ printf("ABC with %%d : %d\n", "ABC")
+ printf("123 with %%d : %d\n", 123)
+
+ printf("ABC with %%.15d : %.15d\n", "ABC")
+ printf("123 with %%.15d : %.15d\n", 123)
+
+ printf("ABC with %%15d : %15d\n", "ABC")
+ printf("123 with %%15d : %15d\n", 123)
+
+ printf("ABC with %%-15d : %-15d\n", "ABC")
+ printf("123 with %%-15d : %-15d\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: e\n"
+
+ printf("ABC with %%e : %e\n", "ABC")
+ printf("123 with %%e : %e\n", 123)
+
+ printf("ABC with %%.25e : %.25e\n", "ABC")
+ printf("123 with %%.25e : %.25e\n", 123)
+
+ printf("ABC with %%25e : %25e\n", "ABC")
+ printf("123 with %%25e : %25e\n", 123)
+
+ printf("ABC with %%-25e : %-25e\n", "ABC")
+ printf("123 with %%-25e : %-25e\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: f\n"
+
+ printf("ABC with %%f : %f\n", "ABC")
+ printf("123 with %%f : %f\n", 123)
+
+ printf("ABC with %%.25f : %.25f\n", "ABC")
+ printf("123 with %%.25f : %.25f\n", 123)
+
+ printf("ABC with %%25f : %25f\n", "ABC")
+ printf("123 with %%25f : %25f\n", 123)
+
+ printf("ABC with %%-25f : %-25f\n", "ABC")
+ printf("123 with %%-25f : %-25f\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: g\n"
+
+ printf("ABC with %%g : %g\n", "ABC")
+ printf("123 with %%g : %g\n", 123)
+
+ printf("ABC with %%.25g : %.25g\n", "ABC")
+ printf("123 with %%.25g : %.25g\n", 123)
+
+ printf("ABC with %%25g : %25g\n", "ABC")
+ printf("123 with %%25g : %25g\n", 123)
+
+ printf("ABC with %%-25g : %-25g\n", "ABC")
+ printf("123 with %%-25g : %-25g\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: o\n"
+
+ printf("ABC with %%o : %o\n", "ABC")
+ printf("123 with %%o : %o\n", 123)
+
+ printf("ABC with %%.15o : %.15o\n", "ABC")
+ printf("123 with %%.15o : %.15o\n", 123)
+
+ printf("ABC with %%15o : %15o\n", "ABC")
+ printf("123 with %%15o : %15o\n", 123)
+
+ printf("ABC with %%-15o : %-15o\n", "ABC")
+ printf("123 with %%-15o : %-15o\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: s\n"
+
+ printf("ABC with %%s : %s\n", "ABC")
+ printf("123 with %%s : %s\n", 123)
+
+ printf("ABC with %%.15s : %.15s\n", "ABC")
+ printf("123 with %%.15s : %.15s\n", 123)
+
+ printf("ABC with %%15s : %15s\n", "ABC")
+ printf("123 with %%15s : %15s\n", 123)
+
+ printf("ABC with %%-15s : %-15s\n", "ABC")
+ printf("123 with %%-15s : %-15s\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: u\n"
+
+ printf("ABC with %%u : %u\n", "ABC")
+ printf("123 with %%u : %u\n", 123)
+
+ printf("ABC with %%.15u : %.15u\n", "ABC")
+ printf("123 with %%.15u : %.15u\n", 123)
+
+ printf("ABC with %%15u : %15u\n", "ABC")
+ printf("123 with %%15u : %15u\n", 123)
+
+ printf("ABC with %%-15u : %-15u\n", "ABC")
+ printf("123 with %%-15u : %-15u\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: x\n"
+
+ printf("ABC with %%x : %x\n", "ABC")
+ printf("123 with %%x : %x\n", 123)
+
+ printf("ABC with %%.15x : %.15x\n", "ABC")
+ printf("123 with %%.15x : %.15x\n", 123)
+
+ printf("ABC with %%15x : %15x\n", "ABC")
+ printf("123 with %%15x : %15x\n", 123)
+
+ printf("ABC with %%-15x : %-15x\n", "ABC")
+ printf("123 with %%-15x : %-15x\n", 123)
+
+ ## -----------------------------------------------------------------
+ print "\n\nFormat item: X\n"
+
+ printf("ABC with %%X : %X\n", "ABC")
+ printf("123 with %%X : %X\n", 123)
+
+ printf("ABC with %%.15X : %.15X\n", "ABC")
+ printf("123 with %%.15X : %.15X\n", 123)
+
+ printf("ABC with %%15X : %15X\n", "ABC")
+ printf("123 with %%15X : %15X\n", 123)
+
+ printf("ABC with %%-15X : %-15X\n", "ABC")
+ printf("123 with %%-15X : %-15X\n", 123)
+
+ exit(0)
+}
diff --git a/test/fmttest.ok b/test/fmttest.ok
new file mode 100644
index 0000000..753567a
--- /dev/null
+++ b/test/fmttest.ok
@@ -0,0 +1,120 @@
+
+
+Format item: c
+
+ABC with %c : A
+123 with %c : {
+ABC with %.15c : A
+123 with %.15c : {
+ABC with %15c : A
+123 with %15c : {
+ABC with %-15c : A
+123 with %-15c : {
+
+
+Format item: d
+
+ABC with %d : 0
+123 with %d : 123
+ABC with %.15d : 000000000000000
+123 with %.15d : 000000000000123
+ABC with %15d : 0
+123 with %15d : 123
+ABC with %-15d : 0
+123 with %-15d : 123
+
+
+Format item: e
+
+ABC with %e : 0.000000e+00
+123 with %e : 1.230000e+02
+ABC with %.25e : 0.0000000000000000000000000e+00
+123 with %.25e : 1.2300000000000000000000000e+02
+ABC with %25e : 0.000000e+00
+123 with %25e : 1.230000e+02
+ABC with %-25e : 0.000000e+00
+123 with %-25e : 1.230000e+02
+
+
+Format item: f
+
+ABC with %f : 0.000000
+123 with %f : 123.000000
+ABC with %.25f : 0.0000000000000000000000000
+123 with %.25f : 123.0000000000000000000000000
+ABC with %25f : 0.000000
+123 with %25f : 123.000000
+ABC with %-25f : 0.000000
+123 with %-25f : 123.000000
+
+
+Format item: g
+
+ABC with %g : 0
+123 with %g : 123
+ABC with %.25g : 0
+123 with %.25g : 123
+ABC with %25g : 0
+123 with %25g : 123
+ABC with %-25g : 0
+123 with %-25g : 123
+
+
+Format item: o
+
+ABC with %o : 0
+123 with %o : 173
+ABC with %.15o : 000000000000000
+123 with %.15o : 000000000000173
+ABC with %15o : 0
+123 with %15o : 173
+ABC with %-15o : 0
+123 with %-15o : 173
+
+
+Format item: s
+
+ABC with %s : ABC
+123 with %s : 123
+ABC with %.15s : ABC
+123 with %.15s : 123
+ABC with %15s : ABC
+123 with %15s : 123
+ABC with %-15s : ABC
+123 with %-15s : 123
+
+
+Format item: u
+
+ABC with %u : 0
+123 with %u : 123
+ABC with %.15u : 000000000000000
+123 with %.15u : 000000000000123
+ABC with %15u : 0
+123 with %15u : 123
+ABC with %-15u : 0
+123 with %-15u : 123
+
+
+Format item: x
+
+ABC with %x : 0
+123 with %x : 7b
+ABC with %.15x : 000000000000000
+123 with %.15x : 00000000000007b
+ABC with %15x : 0
+123 with %15x : 7b
+ABC with %-15x : 0
+123 with %-15x : 7b
+
+
+Format item: X
+
+ABC with %X : 0
+123 with %X : 7B
+ABC with %.15X : 000000000000000
+123 with %.15X : 00000000000007B
+ABC with %15X : 0
+123 with %15X : 7B
+ABC with %-15X : 0
+123 with %-15X : 7B
diff --git a/test/fnamedat.awk b/test/fnamedat.awk
new file mode 100644
index 0000000..33a0704
--- /dev/null
+++ b/test/fnamedat.awk
@@ -0,0 +1 @@
+function foo() { print foo } {foo()}
diff --git a/test/fnamedat.in b/test/fnamedat.in
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/test/fnamedat.in
@@ -0,0 +1 @@
+foo
diff --git a/test/fnamedat.ok b/test/fnamedat.ok
new file mode 100644
index 0000000..d32acff
--- /dev/null
+++ b/test/fnamedat.ok
@@ -0,0 +1,2 @@
+gawk: fnamedat.awk:1: (FILENAME=- FNR=1) fatal: can't use function name `foo' as variable or array
+EXIT CODE: 2
diff --git a/test/fnarray.awk b/test/fnarray.awk
new file mode 100644
index 0000000..92a18b9
--- /dev/null
+++ b/test/fnarray.awk
@@ -0,0 +1,7 @@
+function foo(N) {
+ return 0
+}
+BEGIN {
+ Num = foo[c]
+}
+
diff --git a/test/fnarray.ok b/test/fnarray.ok
new file mode 100644
index 0000000..3ee4181
--- /dev/null
+++ b/test/fnarray.ok
@@ -0,0 +1,3 @@
+gawk: fnarray.awk:5: Num = foo[c]
+gawk: fnarray.awk:5: ^ use of non-array as array
+EXIT CODE: 1
diff --git a/test/fnarray2.awk b/test/fnarray2.awk
new file mode 100644
index 0000000..1723fbf
--- /dev/null
+++ b/test/fnarray2.awk
@@ -0,0 +1,5 @@
+function pile(c, r)
+{
+ r = ++pile[c]
+}
+{ pile($1) }
diff --git a/test/fnarray2.ok b/test/fnarray2.ok
new file mode 100644
index 0000000..243e4cc
--- /dev/null
+++ b/test/fnarray2.ok
@@ -0,0 +1,3 @@
+gawk: fnarray2.awk:3: r = ++pile[c]
+gawk: fnarray2.awk:3: ^ use of non-array as array
+EXIT CODE: 1
diff --git a/test/fnarydel.awk b/test/fnarydel.awk
new file mode 100644
index 0000000..8a1264c
--- /dev/null
+++ b/test/fnarydel.awk
@@ -0,0 +1,60 @@
+#!/usr/local/bin/gawk -f
+BEGIN {
+ process()
+}
+
+function process(aa,a) {
+ delete aa
+}
+
+BEGIN {
+ for (i = 1; i < 10; i++)
+ a[i] = i;
+
+ print "first loop"
+ for (i in a)
+ print a[i]
+
+ delete a
+
+ print "second loop"
+ for (i in a)
+ print a[i]
+
+ for (i = 1; i < 10; i++)
+ a[i] = i;
+
+ print "third loop"
+ for (i in a)
+ print a[i]
+
+ print "call func"
+ delit(a)
+
+ print "fourth loop"
+ for (i in a)
+ print a[i]
+
+ stressit()
+}
+
+function delit(arr)
+{
+ delete arr
+}
+
+function stressit( array, i)
+{
+ delete array
+ array[4] = 4
+ array[5] = 5
+ delete array[5]
+ print "You should just see: 4 4"
+ for (i in array)
+ print i, array[i]
+ delete array
+ print "You should see nothing between this line"
+ for (i in array)
+ print i, array[i]
+ print "And this one"
+}
diff --git a/test/fnarydel.ok b/test/fnarydel.ok
new file mode 100644
index 0000000..7f3e453
--- /dev/null
+++ b/test/fnarydel.ok
@@ -0,0 +1,27 @@
+first loop
+4
+5
+6
+7
+8
+9
+1
+2
+3
+second loop
+third loop
+4
+5
+6
+7
+8
+9
+1
+2
+3
+call func
+fourth loop
+You should just see: 4 4
+4 4
+You should see nothing between this line
+And this one
diff --git a/test/fnaryscl.awk b/test/fnaryscl.awk
new file mode 100644
index 0000000..b88778e
--- /dev/null
+++ b/test/fnaryscl.awk
@@ -0,0 +1,10 @@
+BEGIN {
+ foo[1] = 4
+ f1(foo)
+}
+
+function f1(a) { f2(a) }
+
+function f2(b) { f3(b) }
+
+function f3(c) { c = 6 }
diff --git a/test/fnaryscl.ok b/test/fnaryscl.ok
new file mode 100644
index 0000000..ac84077
--- /dev/null
+++ b/test/fnaryscl.ok
@@ -0,0 +1,2 @@
+gawk: fnaryscl.awk:10: fatal: attempt to use array `c (from b, from a, from foo)' in a scalar context
+EXIT CODE: 2
diff --git a/test/fnasgnm.awk b/test/fnasgnm.awk
new file mode 100644
index 0000000..056cdf7
--- /dev/null
+++ b/test/fnasgnm.awk
@@ -0,0 +1,14 @@
+# AFP_Bug1.awk - illustrate a problem with `gawk' (GNU Awk 3.0.3 on OS/2)
+# Arthur Pool .. pool@commerce.uq.edu.au
+# $Id: AFP_Bug1.awk,v 1.1 1998-03-17 12:22:44+10 pool Exp pool $
+
+# Assignment to a variable with the same name as a function from within
+# that function causes an ABEND.
+#
+# Yes, I do realise that it's not a smart thing to do, but an error
+# message would be a kinder response than a core dump (and would make
+# debugging a whole lot easier).
+
+{ShowMe()}
+
+function ShowMe() {ShowMe = 1}
diff --git a/test/fnasgnm.in b/test/fnasgnm.in
new file mode 100644
index 0000000..a941931
--- /dev/null
+++ b/test/fnasgnm.in
@@ -0,0 +1 @@
+junk
diff --git a/test/fnasgnm.ok b/test/fnasgnm.ok
new file mode 100644
index 0000000..0db5c6d
--- /dev/null
+++ b/test/fnasgnm.ok
@@ -0,0 +1,2 @@
+gawk: fnasgnm.awk:14: (FILENAME=- FNR=1) fatal: can't use function name `ShowMe' as variable or array
+EXIT CODE: 2
diff --git a/test/fnmisc.awk b/test/fnmisc.awk
new file mode 100644
index 0000000..4dcc94e
--- /dev/null
+++ b/test/fnmisc.awk
@@ -0,0 +1,13 @@
+# Tue Feb 4 12:20:10 IST 2003
+
+# Misc functions tests, in case we start mucking around in the grammar again.
+
+# Empty body shouldn't hurt anything:
+function f() {}
+BEGIN { f() }
+
+# Using a built-in function name should manage the symbol table
+# correctly:
+function split(x) { return x }
+
+function x(a) { return a }
diff --git a/test/fnmisc.ok b/test/fnmisc.ok
new file mode 100644
index 0000000..a265e40
--- /dev/null
+++ b/test/fnmisc.ok
@@ -0,0 +1,3 @@
+gawk: fnmisc.awk:11: function split(x) { return x }
+gawk: fnmisc.awk:11: ^ `split' is a built-in function, it cannot be redefined
+EXIT CODE: 1
diff --git a/test/fnparydl.awk b/test/fnparydl.awk
new file mode 100644
index 0000000..ef3a822
--- /dev/null
+++ b/test/fnparydl.awk
@@ -0,0 +1,31 @@
+# fnparydl.awk --- check that deleting works with arrays
+# that are parameters.
+#
+# Tue Jul 11 14:20:58 EDT 2000
+
+function delit(a, k)
+{
+ print "BEFORE LOOP"
+ for (k in a) {
+ print "DELETING KEY", k
+ delete a[k]
+ }
+ print "AFTER LOOP"
+}
+
+BEGIN {
+ for (i = 1 ; i <= 7; i++) {
+ q[i] = sprintf("element %d", i)
+ x[i] = i
+ y[i] = q[i]
+ }
+# adump(q)
+ delit(q)
+# for (i in q)
+# delete q[i]
+ j = 0;
+ for (i in q)
+ j++
+ print j, "elements still in q[]"
+# adump(q)
+}
diff --git a/test/fnparydl.ok b/test/fnparydl.ok
new file mode 100644
index 0000000..26a5c39
--- /dev/null
+++ b/test/fnparydl.ok
@@ -0,0 +1,10 @@
+BEFORE LOOP
+DELETING KEY 4
+DELETING KEY 5
+DELETING KEY 6
+DELETING KEY 7
+DELETING KEY 1
+DELETING KEY 2
+DELETING KEY 3
+AFTER LOOP
+0 elements still in q[]
diff --git a/test/fordel.awk b/test/fordel.awk
new file mode 100644
index 0000000..58ede20
--- /dev/null
+++ b/test/fordel.awk
@@ -0,0 +1,65 @@
+#Date: Mon, 7 Jun 2004 10:40:28 -0500
+#From: mary1john8@earthlink.net
+#To: arnold@skeeve.com
+#Subject: gawk internal errors
+#Message-ID: <20040607154028.GA2457@apollo>
+#
+#Hello,
+#
+# gawk-3.1.3i internal errors:
+#
+#[1]
+#
+#$> ./gawk 'BEGIN { for (i in a) delete a; }'
+BEGIN { for (i in a) delete a; }
+#gawk: fatal error: internal error
+#Aborted
+#
+#------------------------------------------------------------------
+#--- awkgram.y.orig 2004-06-07 09:42:14.000000000 -0500
+#+++ awkgram.y 2004-06-07 09:45:58.000000000 -0500
+#@@ -387,7 +387,7 @@
+# * Check that the body is a `delete a[i]' statement,
+# * and that both the loop var and array names match.
+# */
+#- if ($8 != NULL && $8->type == Node_K_delete) {
+#+ if ($8 != NULL && $8->type == Node_K_delete && $8->rnode != NULL) {
+# NODE *arr, *sub;
+#
+# assert($8->rnode->type == Node_expression_list);
+#------------------------------------------------------------------
+#
+#
+#[2]
+#
+#$> ./gawk 'BEGIN { printf("%3$*10$.*1$s\n", 20, 10, "hello"); }'
+#gawk: fatal error: internal error
+#Aborted
+#
+#------------------------------------------------------------------
+#--- builtin.c.orig 2004-06-07 10:04:20.000000000 -0500
+#+++ builtin.c 2004-06-07 10:06:08.000000000 -0500
+#@@ -780,7 +780,10 @@
+# s1++;
+# n0--;
+# }
+#-
+#+ if (val >= num_args) {
+#+ toofew = TRUE;
+#+ break;
+#+ }
+# arg = the_args[val];
+# } else {
+# parse_next_arg();
+#------------------------------------------------------------------
+#
+#
+# Finally, a test for the rewritten get_src_buf():
+#
+#$> AWKBUFSIZE=2 make check
+#
+#I get 3 failed tests. Not sure this is of any interest.
+#
+#
+#Thanks,
+#John
diff --git a/test/fordel.ok b/test/fordel.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/fordel.ok
diff --git a/test/forsimp.awk b/test/forsimp.awk
new file mode 100644
index 0000000..880548b
--- /dev/null
+++ b/test/forsimp.awk
@@ -0,0 +1 @@
+BEGIN { for (print 9; 0;); }
diff --git a/test/forsimp.ok b/test/forsimp.ok
new file mode 100644
index 0000000..ec63514
--- /dev/null
+++ b/test/forsimp.ok
@@ -0,0 +1 @@
+9
diff --git a/test/fsbs.awk b/test/fsbs.awk
new file mode 100644
index 0000000..d2ec52e
--- /dev/null
+++ b/test/fsbs.awk
@@ -0,0 +1,2 @@
+BEGIN { FS = "\\" }
+{ print $1, $2 }
diff --git a/test/fsbs.in b/test/fsbs.in
new file mode 100644
index 0000000..0a102c3
--- /dev/null
+++ b/test/fsbs.in
@@ -0,0 +1 @@
+1\2
diff --git a/test/fsbs.ok b/test/fsbs.ok
new file mode 100644
index 0000000..8d04f96
--- /dev/null
+++ b/test/fsbs.ok
@@ -0,0 +1 @@
+1 2
diff --git a/test/fsfwfs.awk b/test/fsfwfs.awk
new file mode 100644
index 0000000..beed10a
--- /dev/null
+++ b/test/fsfwfs.awk
@@ -0,0 +1 @@
+BEGIN{FIELDWIDTHS="6 6 6 5";OFS=",";FS=FS}{print $1,$2,$3,$4}
diff --git a/test/fsfwfs.in b/test/fsfwfs.in
new file mode 100644
index 0000000..fc10928
--- /dev/null
+++ b/test/fsfwfs.in
@@ -0,0 +1,16 @@
+00000113000 00000000000
+00000275000 00000000000
+00000321334 00000000000
+00000048709 00000010000
+00000117000 00000100000
+00000152000 00000138000
+00000000000 00000150000
+00000189425 00000000000
+00000146128 00000000000
+00000146128 00000000000
+00000146128 00000000000
+00000000000 00000050000
+00000000000 00000050000
+00000000000 00000000000
+00000158014 00000000000
+00000113656 00000000000
diff --git a/test/fsfwfs.ok b/test/fsfwfs.ok
new file mode 100644
index 0000000..36bea48
--- /dev/null
+++ b/test/fsfwfs.ok
@@ -0,0 +1,16 @@
+00000113000,00000000000,,
+00000275000,00000000000,,
+00000321334,00000000000,,
+00000048709,00000010000,,
+00000117000,00000100000,,
+00000152000,00000138000,,
+00000000000,00000150000,,
+00000189425,00000000000,,
+00000146128,00000000000,,
+00000146128,00000000000,,
+00000146128,00000000000,,
+00000000000,00000050000,,
+00000000000,00000050000,,
+00000000000,00000000000,,
+00000158014,00000000000,,
+00000113656,00000000000,,
diff --git a/test/fsrs.awk b/test/fsrs.awk
new file mode 100644
index 0000000..a001489
--- /dev/null
+++ b/test/fsrs.awk
@@ -0,0 +1,8 @@
+BEGIN {
+ RS=""; FS="\n";
+ ORS=""; OFS="\n";
+ }
+{
+ split ($2,f," ")
+ print $0;
+}
diff --git a/test/fsrs.in b/test/fsrs.in
new file mode 100644
index 0000000..4b49d81
--- /dev/null
+++ b/test/fsrs.in
@@ -0,0 +1,7 @@
+a b
+c d
+e f
+
+1 2
+3 4
+5 6
diff --git a/test/fsrs.ok b/test/fsrs.ok
new file mode 100644
index 0000000..7dafd65
--- /dev/null
+++ b/test/fsrs.ok
@@ -0,0 +1,5 @@
+a b
+c d
+e f1 2
+3 4
+5 6 \ No newline at end of file
diff --git a/test/fsspcoln.awk b/test/fsspcoln.awk
new file mode 100644
index 0000000..8087c2e
--- /dev/null
+++ b/test/fsspcoln.awk
@@ -0,0 +1,41 @@
+# Date: Wed, 08 Dec 2004 12:59:42 +0600
+# From: Alexander Sashnov <asashnov@sw-soft.com>
+# Subject: addon to gawk test suite
+# Sender: asashnov@sashnov.plesk.ru
+# To: "Arnold D. Robbins" <arnold@skeeve.com>
+# Message-id: <lzy8g9xokh.fsf@sashnov.plesk.ru>
+#
+#
+# Hello, Arnold.
+#
+# I'm hit bug on SuSE 9.1 with awk:
+#
+# vsuse91:~ # echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]'
+# b
+# vsuse91:~ # echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]+'
+# awk: cmd. line:2: fatal: Trailing backslash: /[ :]+/
+#
+# vsuse91:~ # awk --version
+# GNU Awk 3.1.3
+#
+#
+#
+# But on my Debian machine all OK:
+#
+# asashnov@sashnov:~$ echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]'
+# b
+# asashnov@sashnov:~$ echo "a:b:c" | awk '{ print $2 }' 'FS=[ :]+'
+# b
+# asashnov@sashnov:~$ awk --version
+# GNU Awk 3.1.4
+#
+#
+# Need add test for this sample to gawk test suite for avoid this problems in future.
+# --
+# Alexander Sashnov
+# Plesk QA Engineer
+# SWsoft, Inc.
+# E-mail: asashnov@sw-soft.com
+# ICQ UIN: 79404252
+
+{ print $2 }
diff --git a/test/fsspcoln.in b/test/fsspcoln.in
new file mode 100644
index 0000000..af0abb2
--- /dev/null
+++ b/test/fsspcoln.in
@@ -0,0 +1 @@
+a:b:c
diff --git a/test/fsspcoln.ok b/test/fsspcoln.ok
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/test/fsspcoln.ok
@@ -0,0 +1 @@
+b
diff --git a/test/fstabplus.awk b/test/fstabplus.awk
new file mode 100644
index 0000000..748a44f
--- /dev/null
+++ b/test/fstabplus.awk
@@ -0,0 +1,2 @@
+BEGIN { FS = "\t+" }
+ { print $1, $2 }
diff --git a/test/fstabplus.in b/test/fstabplus.in
new file mode 100644
index 0000000..c35ba0a
--- /dev/null
+++ b/test/fstabplus.in
@@ -0,0 +1 @@
+1 2
diff --git a/test/fstabplus.ok b/test/fstabplus.ok
new file mode 100644
index 0000000..8d04f96
--- /dev/null
+++ b/test/fstabplus.ok
@@ -0,0 +1 @@
+1 2
diff --git a/test/funsemnl.awk b/test/funsemnl.awk
new file mode 100644
index 0000000..6b39dca
--- /dev/null
+++ b/test/funsemnl.awk
@@ -0,0 +1,3 @@
+# make sure that ; + \n at end after function works
+function foo() { print "foo" } ;
+BEGIN { foo() }
diff --git a/test/funsemnl.ok b/test/funsemnl.ok
new file mode 100644
index 0000000..257cc56
--- /dev/null
+++ b/test/funsemnl.ok
@@ -0,0 +1 @@
+foo
diff --git a/test/funsmnam.awk b/test/funsmnam.awk
new file mode 100644
index 0000000..1e8ca50
--- /dev/null
+++ b/test/funsmnam.awk
@@ -0,0 +1,6 @@
+function foo( \
+ foo)
+{
+ print foo
+}
+{ foo() }
diff --git a/test/funsmnam.ok b/test/funsmnam.ok
new file mode 100644
index 0000000..c0234f3
--- /dev/null
+++ b/test/funsmnam.ok
@@ -0,0 +1,2 @@
+gawk: funsmnam.awk:6: fatal: function `foo': can't use function name as parameter name
+EXIT CODE: 2
diff --git a/test/funstack.awk b/test/funstack.awk
new file mode 100644
index 0000000..ab85b45
--- /dev/null
+++ b/test/funstack.awk
@@ -0,0 +1,977 @@
+### ====================================================================
+### @Awk-file{
+### author = "Nelson H. F. Beebe",
+### version = "1.00",
+### date = "09 October 1996",
+### time = "15:57:06 MDT",
+### filename = "journal-toc.awk",
+### address = "Center for Scientific Computing
+### Department of Mathematics
+### University of Utah
+### Salt Lake City, UT 84112
+### USA",
+### telephone = "+1 801 581 5254",
+### FAX = "+1 801 581 4148",
+### URL = "http://www.math.utah.edu/~beebe",
+### checksum = "25092 977 3357 26493",
+### email = "beebe@math.utah.edu (Internet)",
+### codetable = "ISO/ASCII",
+### keywords = "BibTeX, bibliography, HTML, journal table of
+### contents",
+### supported = "yes",
+### docstring = "Create a journal cover table of contents from
+### <at>Article{...} entries in a journal BibTeX
+### .bib file for checking the bibliography
+### database against the actual journal covers.
+### The output can be either plain text, or HTML.
+###
+### Usage:
+### bibclean -max-width 0 BibTeX-file(s) | \
+### bibsort -byvolume | \
+### awk -f journal-toc.awk \
+### [-v HTML=nnn] [-v INDENT=nnn] \
+### [-v BIBFILEURL=url] >foo.toc
+###
+### or if the bibliography is already sorted
+### by volume,
+###
+### bibclean -max-width 0 BibTeX-file(s) | \
+### awk -f journal-toc.awk \
+### [-v HTML=nnn] [-v INDENT=nnn] \
+### [-v BIBFILEURL=url] >foo.toc
+###
+### A non-zero value of the command-line option,
+### HTML=nnn, results in HTML output instead of
+### the default plain ASCII text (corresponding
+### to HTML=0). The
+###
+### The INDENT=nnn command-line option specifies
+### the number of blanks to indent each logical
+### level of HTML. The default is INDENT=4.
+### INDENT=0 suppresses indentation. The INDENT
+### option has no effect when the default HTML=0
+### (plain text output) option is in effect.
+###
+### When HTML output is selected, the
+### BIBFILEURL=url command-line option provides a
+### way to request hypertext links from table of
+### contents page numbers to the complete BibTeX
+### entry for the article. These links are
+### created by appending a sharp (#) and the
+### citation label to the BIBFILEURL value, which
+### conforms with the practice of
+### bibtex-to-html.awk.
+###
+### The HTML output form may be useful as a more
+### compact representation of journal article
+### bibliography data than the original BibTeX
+### file provides. Of course, the
+### table-of-contents format provides less
+### information, and is considerably more
+### troublesome for a computer program to parse.
+###
+### When URL key values are provided, they will
+### be used to create hypertext links around
+### article titles. This supports journals that
+### provide article contents on the World-Wide
+### Web.
+###
+### For parsing simplicity, this program requires
+### that BibTeX
+###
+### key = "value"
+###
+### and
+###
+### @String{name = "value"}
+###
+### specifications be entirely contained on
+### single lines, which is readily provided by
+### the `bibclean -max-width 0' filter. It also
+### requires that bibliography entries begin and
+### end at the start of a line, and that
+### quotation marks, rather than balanced braces,
+### delimit string values. This is a
+### conventional format that again can be
+### guaranteed by bibclean.
+###
+### This program requires `new' awk, as described
+### in the book
+###
+### Alfred V. Aho, Brian W. Kernighan, and
+### Peter J. Weinberger,
+### ``The AWK Programming Language'',
+### Addison-Wesley (1988), ISBN
+### 0-201-07981-X,
+###
+### such as provided by programs named (GNU)
+### gawk, nawk, and recent AT&T awk.
+###
+### The checksum field above contains a CRC-16
+### checksum as the first value, followed by the
+### equivalent of the standard UNIX wc (word
+### count) utility output of lines, words, and
+### characters. This is produced by Robert
+### Solovay's checksum utility.",
+### }
+### ====================================================================
+
+BEGIN { initialize() }
+
+/^ *@ *[Ss][Tt][Rr][Ii][Nn][Gg] *{/ { do_String(); next }
+
+/^ *@ *[Pp][Rr][Ee][Aa][Mm][Bb][Ll][Ee]/ { next }
+
+/^ *@ *[Aa][Rr][Tt][Ii][Cc][Ll][Ee]/ { do_Article(); next }
+
+/^ *@/ { do_Other(); next }
+
+/^ *author *= *\"/ { do_author(); next }
+
+/^ *journal *= */ { do_journal(); next }
+
+/^ *volume *= *\"/ { do_volume(); next }
+
+/^ *number *= *\"/ { do_number(); next }
+
+/^ *year *= *\"/ { do_year(); next }
+
+/^ *month *= */ { do_month(); next }
+
+/^ *title *= *\"/ { do_title(); next }
+
+/^ *pages *= *\"/ { do_pages(); next }
+
+/^ *URL *= *\"/ { do_URL(); next }
+
+/^ *} *$/ { if (In_Article) do_end_entry(); next }
+
+END { terminate() }
+
+
+########################################################################
+# NB: The programming conventions for variables in this program are: #
+# UPPERCASE global constants and user options #
+# Initialuppercase global variables #
+# lowercase local variables #
+# Any deviation is an error! #
+########################################################################
+
+
+function do_Article()
+{
+ In_Article = 1
+
+ Citation_label = $0
+ sub(/^[^\{]*{/,"",Citation_label)
+ sub(/ *, *$/,"",Citation_label)
+
+ Author = ""
+ Title = ""
+ Journal = ""
+ Volume = ""
+ Number = ""
+ Month = ""
+ Year = ""
+ Pages = ""
+ Url = ""
+}
+
+
+function do_author()
+{
+ Author = TeX_to_HTML(get_value($0))
+}
+
+
+function do_end_entry( k,n,parts)
+{
+ n = split(Author,parts," and ")
+ if (Last_number != Number)
+ do_new_issue()
+ for (k = 1; k < n; ++k)
+ print_toc_line(parts[k] " and", "", "")
+ Title_prefix = html_begin_title()
+ Title_suffix = html_end_title()
+ if (html_length(Title) <= (MAX_TITLE_CHARS + MIN_LEADERS)) # complete title fits on line
+ print_toc_line(parts[n], Title, html_begin_pages() Pages html_end_pages())
+ else # need to split long title over multiple lines
+ do_long_title(parts[n], Title, html_begin_pages() Pages html_end_pages())
+}
+
+
+function do_journal()
+{
+ if ($0 ~ /[=] *"/) # have journal = "quoted journal name",
+ Journal = get_value($0)
+ else # have journal = journal-abbreviation,
+ {
+ Journal = get_abbrev($0)
+ if (Journal in String) # replace abbrev by its expansion
+ Journal = String[Journal]
+ }
+ gsub(/\\-/,"",Journal) # remove discretionary hyphens
+}
+
+
+function do_long_title(author,title,pages, last_title,n)
+{
+ title = trim(title) # discard leading and trailing space
+ while (length(title) > 0)
+ {
+ n = html_breakpoint(title,MAX_TITLE_CHARS+MIN_LEADERS)
+ last_title = substr(title,1,n)
+ title = substr(title,n+1)
+ sub(/^ +/,"",title) # discard any leading space
+ print_toc_line(author, last_title, (length(title) == 0) ? pages : "")
+ author = ""
+ }
+}
+
+
+function do_month( k,n,parts)
+{
+ Month = ($0 ~ /[=] *"/) ? get_value($0) : get_abbrev($0)
+ gsub(/[\"]/,"",Month)
+ gsub(/ *# *\\slash *# */," / ",Month)
+ gsub(/ *# *-+ *# */," / ",Month)
+ n = split(Month,parts," */ *")
+ Month = ""
+ for (k = 1; k <= n; ++k)
+ Month = Month ((k > 1) ? " / " : "") \
+ ((parts[k] in Month_expansion) ? Month_expansion[parts[k]] : parts[k])
+}
+
+
+function do_new_issue()
+{
+ Last_number = Number
+ if (HTML)
+ {
+ if (Last_volume != Volume)
+ {
+ Last_volume = Volume
+ print_line(prefix(2) "<BR>")
+ }
+ html_end_toc()
+ html_begin_issue()
+ print_line(prefix(2) Journal "<BR>")
+ }
+ else
+ {
+ print_line("")
+ print_line(Journal)
+ }
+
+ print_line(strip_html(vol_no_month_year()))
+
+ if (HTML)
+ {
+ html_end_issue()
+ html_toc_entry()
+ html_begin_toc()
+ }
+ else
+ print_line("")
+}
+
+
+function do_number()
+{
+ Number = get_value($0)
+}
+
+
+function do_Other()
+{
+ In_Article = 0
+}
+
+
+function do_pages()
+{
+ Pages = get_value($0)
+ sub(/--[?][?]/,"",Pages)
+}
+
+
+function do_String()
+{
+ sub(/^[^\{]*\{/,"",$0) # discard up to and including open brace
+ sub(/\} *$/,"",$0) # discard from optional whitespace and trailing brace to end of line
+ String[get_key($0)] = get_value($0)
+}
+
+
+function do_title()
+{
+ Title = TeX_to_HTML(get_value($0))
+}
+
+
+function do_URL( parts)
+{
+ Url = get_value($0)
+ split(Url,parts,"[,;]") # in case we have multiple URLs
+ Url = trim(parts[1])
+}
+
+
+function do_volume()
+{
+ Volume = get_value($0)
+}
+
+
+function do_year()
+{
+ Year = get_value($0)
+}
+
+
+function get_abbrev(s)
+{ # return abbrev from ``key = abbrev,''
+ sub(/^[^=]*= */,"",s) # discard text up to start of non-blank value
+ sub(/ *,? *$/,"",s) # discard trailing optional whitspace, quote,
+ # optional comma, and optional space
+ return (s)
+}
+
+
+function get_key(s)
+{ # return kay from ``key = "value",''
+ sub(/^ */,"",s) # discard leading space
+ sub(/ *=.*$/,"",s) # discard everthing after key
+
+ return (s)
+}
+
+
+function get_value(s)
+{ # return value from ``key = "value",''
+ sub(/^[^\"]*\" */,"",s) # discard text up to start of non-blank value
+ sub(/ *\",? *$/,"",s) # discard trailing optional whitspace, quote,
+ # optional comma, and optional space
+ return (s)
+}
+
+
+function html_accents(s)
+{
+ if (index(s,"\\") > 0) # important optimization
+ {
+ # Convert common lower-case accented letters according to the
+ # table on p. 169 of in Peter Flynn's ``The World Wide Web
+ # Handbook'', International Thomson Computer Press, 1995, ISBN
+ # 1-85032-205-8. The official table of ISO Latin 1 SGML
+ # entities used in HTML can be found in the file
+ # /usr/local/lib/html-check/lib/ISOlat1.sgml (your path
+ # may differ).
+
+ gsub(/{\\\a}/, "\\&agrave;", s)
+ gsub(/{\\'a}/, "\\&aacute;", s)
+ gsub(/{\\[\^]a}/,"\\&acirc;", s)
+ gsub(/{\\~a}/, "\\&atilde;", s)
+ gsub(/{\\\"a}/, "\\&auml;", s)
+ gsub(/{\\aa}/, "\\&aring;", s)
+ gsub(/{\\ae}/, "\\&aelig;", s)
+
+ gsub(/{\\c{c}}/,"\\&ccedil;", s)
+
+ gsub(/{\\\e}/, "\\&egrave;", s)
+ gsub(/{\\'e}/, "\\&eacute;", s)
+ gsub(/{\\[\^]e}/,"\\&ecirc;", s)
+ gsub(/{\\\"e}/, "\\&euml;", s)
+
+ gsub(/{\\\i}/, "\\&igrave;", s)
+ gsub(/{\\'i}/, "\\&iacute;", s)
+ gsub(/{\\[\^]i}/,"\\&icirc;", s)
+ gsub(/{\\\"i}/, "\\&iuml;", s)
+
+ # ignore eth and thorn
+
+ gsub(/{\\~n}/, "\\&ntilde;", s)
+
+ gsub(/{\\\o}/, "\\&ograve;", s)
+ gsub(/{\\'o}/, "\\&oacute;", s)
+ gsub(/{\\[\^]o}/, "\\&ocirc;", s)
+ gsub(/{\\~o}/, "\\&otilde;", s)
+ gsub(/{\\\"o}/, "\\&ouml;", s)
+ gsub(/{\\o}/, "\\&oslash;", s)
+
+ gsub(/{\\\u}/, "\\&ugrave;", s)
+ gsub(/{\\'u}/, "\\&uacute;", s)
+ gsub(/{\\[\^]u}/,"\\&ucirc;", s)
+ gsub(/{\\\"u}/, "\\&uuml;", s)
+
+ gsub(/{\\'y}/, "\\&yacute;", s)
+ gsub(/{\\\"y}/, "\\&yuml;", s)
+
+ # Now do the same for upper-case accents
+
+ gsub(/{\\\A}/, "\\&Agrave;", s)
+ gsub(/{\\'A}/, "\\&Aacute;", s)
+ gsub(/{\\[\^]A}/, "\\&Acirc;", s)
+ gsub(/{\\~A}/, "\\&Atilde;", s)
+ gsub(/{\\\"A}/, "\\&Auml;", s)
+ gsub(/{\\AA}/, "\\&Aring;", s)
+ gsub(/{\\AE}/, "\\&AElig;", s)
+
+ gsub(/{\\c{C}}/,"\\&Ccedil;", s)
+
+ gsub(/{\\\e}/, "\\&Egrave;", s)
+ gsub(/{\\'E}/, "\\&Eacute;", s)
+ gsub(/{\\[\^]E}/, "\\&Ecirc;", s)
+ gsub(/{\\\"E}/, "\\&Euml;", s)
+
+ gsub(/{\\\I}/, "\\&Igrave;", s)
+ gsub(/{\\'I}/, "\\&Iacute;", s)
+ gsub(/{\\[\^]I}/, "\\&Icirc;", s)
+ gsub(/{\\\"I}/, "\\&Iuml;", s)
+
+ # ignore eth and thorn
+
+ gsub(/{\\~N}/, "\\&Ntilde;", s)
+
+ gsub(/{\\\O}/, "\\&Ograve;", s)
+ gsub(/{\\'O}/, "\\&Oacute;", s)
+ gsub(/{\\[\^]O}/, "\\&Ocirc;", s)
+ gsub(/{\\~O}/, "\\&Otilde;", s)
+ gsub(/{\\\"O}/, "\\&Ouml;", s)
+ gsub(/{\\O}/, "\\&Oslash;", s)
+
+ gsub(/{\\\U}/, "\\&Ugrave;", s)
+ gsub(/{\\'U}/, "\\&Uacute;", s)
+ gsub(/{\\[\^]U}/, "\\&Ucirc;", s)
+ gsub(/{\\\"U}/, "\\&Uuml;", s)
+
+ gsub(/{\\'Y}/, "\\&Yacute;", s)
+
+ gsub(/{\\ss}/, "\\&szlig;", s)
+
+ # Others not mentioned in Flynn's book
+ gsub(/{\\'\\i}/,"\\&iacute;", s)
+ gsub(/{\\'\\j}/,"j", s)
+ }
+ return (s)
+}
+
+
+function html_begin_issue()
+{
+ print_line("")
+ print_line(prefix(2) "<HR>")
+ print_line("")
+ print_line(prefix(2) "<H1>")
+ print_line(prefix(3) "<A NAME=\"" html_label() "\">")
+}
+
+
+function html_begin_pages()
+{
+ return ((HTML && (BIBFILEURL != "")) ? ("<A HREF=\"" BIBFILEURL "#" Citation_label "\">") : "")
+}
+
+
+function html_begin_pre()
+{
+ In_PRE = 1
+ print_line("<PRE>")
+}
+
+
+function html_begin_title()
+{
+ return ((HTML && (Url != "")) ? ("<A HREF=\"" Url "\">") : "")
+}
+
+
+function html_begin_toc()
+{
+ html_end_toc()
+ html_begin_pre()
+}
+
+
+function html_body( k)
+{
+ for (k = 1; k <= BodyLines; ++k)
+ print Body[k]
+}
+
+function html_breakpoint(title,maxlength, break_after,k)
+{
+ # Return the largest character position in title AFTER which we
+ # can break the title across lines, without exceeding maxlength
+ # visible characters.
+ if (html_length(title) > maxlength) # then need to split title across lines
+ {
+ # In the presence of HTML markup, the initialization of
+ # k here is complicated, because we need to advance it
+ # until html_length(title) is at least maxlength,
+ # without invoking the expensive html_length() function
+ # too frequently. The need to split the title makes the
+ # alternative of delayed insertion of HTML markup much
+ # more complicated.
+ break_after = 0
+ for (k = min(maxlength,length(title)); k < length(title); ++k)
+ {
+ if (substr(title,k+1,1) == " ")
+ { # could break after position k
+ if (html_length(substr(title,1,k)) <= maxlength)
+ break_after = k
+ else # advanced too far, retreat back to last break_after
+ break
+ }
+ }
+ if (break_after == 0) # no breakpoint found by forward scan
+ { # so switch to backward scan
+ for (k = min(maxlength,length(title)) - 1; \
+ (k > 0) && (substr(title,k+1,1) != " "); --k)
+ ; # find space at which to break title
+ if (k < 1) # no break point found
+ k = length(title) # so must print entire string
+ }
+ else
+ k = break_after
+ }
+ else # title fits on one line
+ k = length(title)
+ return (k)
+}
+
+
+
+function html_end_issue()
+{
+ print_line(prefix(3) "</A>")
+ print_line(prefix(2) "</H1>")
+}
+
+
+function html_end_pages()
+{
+ return ((HTML && (BIBFILEURL != "")) ? "</A>" : "")
+}
+
+
+function html_end_pre()
+{
+ if (In_PRE)
+ {
+ print_line("</PRE>")
+ In_PRE = 0
+ }
+}
+
+
+function html_end_title()
+{
+ return ((HTML && (Url != "")) ? "</A>" : "")
+}
+
+
+function html_end_toc()
+{
+ html_end_pre()
+}
+
+
+function html_fonts(s, arg,control_word,k,level,n,open_brace)
+{
+ open_brace = index(s,"{")
+ if (open_brace > 0) # important optimization
+ {
+ level = 1
+ for (k = open_brace + 1; (level != 0) && (k <= length(s)); ++k)
+ {
+ if (substr(s,k,1) == "{")
+ level++
+ else if (substr(s,k,1) == "}")
+ level--
+ }
+
+ # {...} is now found at open_brace ... (k-1)
+ for (control_word in Font_decl_map) # look for {\xxx ...}
+ {
+ if (substr(s,open_brace+1,length(control_word)+1) ~ \
+ ("\\" control_word "[^A-Za-z]"))
+ {
+ n = open_brace + 1 + length(control_word)
+ arg = trim(substr(s,n,k - n))
+ if (Font_decl_map[control_word] == "toupper") # arg -> ARG
+ arg = toupper(arg)
+ else if (Font_decl_map[control_word] != "") # arg -> <TAG>arg</TAG>
+ arg = "<" Font_decl_map[control_word] ">" arg "</" Font_decl_map[control_word] ">"
+ return (substr(s,1,open_brace-1) arg html_fonts(substr(s,k)))
+ }
+ }
+ for (control_word in Font_cmd_map) # look for \xxx{...}
+ {
+ if (substr(s,open_brace - length(control_word),length(control_word)) ~ \
+ ("\\" control_word))
+ {
+ n = open_brace + 1
+ arg = trim(substr(s,n,k - n))
+ if (Font_cmd_map[control_word] == "toupper") # arg -> ARG
+ arg = toupper(arg)
+ else if (Font_cmd_map[control_word] != "") # arg -> <TAG>arg</TAG>
+ arg = "<" Font_cmd_map[control_word] ">" arg "</" Font_cmd_map[control_word] ">"
+ n = open_brace - length(control_word) - 1
+ return (substr(s,1,n) arg html_fonts(substr(s,k)))
+ }
+ }
+ }
+ return (s)
+}
+
+
+function html_header()
+{
+ USER = ENVIRON["USER"]
+ if (USER == "")
+ USER = ENVIRON["LOGNAME"]
+ if (USER == "")
+ USER = "????"
+ "hostname" | getline HOSTNAME
+ "date" | getline DATE
+ ("ypcat passwd | grep '^" USER ":' | awk -F: '{print $5}'") | getline PERSONAL_NAME
+ if (PERSONAL_NAME == "")
+ ("grep '^" USER ":' /etc/passwd | awk -F: '{print $5}'") | getline PERSONAL_NAME
+
+
+ print "<!-- WARNING: Do NOT edit this file. It was converted from -->"
+ print "<!-- BibTeX format to HTML by journal-toc.awk version " VERSION_NUMBER " " VERSION_DATE " -->"
+ print "<!-- on " DATE " -->"
+ print "<!-- for " PERSONAL_NAME " (" USER "@" HOSTNAME ") -->"
+ print ""
+ print ""
+ print "<!DOCTYPE HTML public \"-//IETF//DTD HTML//EN\">"
+ print ""
+ print "<HTML>"
+ print prefix(1) "<HEAD>"
+ print prefix(2) "<TITLE>"
+ print prefix(3) Journal
+ print prefix(2) "</TITLE>"
+ print prefix(2) "<LINK REV=\"made\" HREF=\"mailto:" USER "@" HOSTNAME "\">"
+ print prefix(1) "</HEAD>"
+ print ""
+ print prefix(1) "<BODY>"
+}
+
+
+function html_label( label)
+{
+ label = Volume "(" Number "):" Month ":" Year
+ gsub(/[^A-Za-z0-9():,;.\/\-]/,"",label)
+ return (label)
+}
+
+
+function html_length(s)
+{ # Return visible length of s, ignoring any HTML markup
+ if (HTML)
+ {
+ gsub(/<\/?[^>]*>/,"",s) # remove SGML tags
+ gsub(/&[A-Za-z0-9]+;/,"",s) # remove SGML entities
+ }
+ return (length(s))
+}
+
+
+function html_toc()
+{
+ print prefix(2) "<H1>"
+ print prefix(3) "Table of contents for issues of " Journal
+ print prefix(2) "</H1>"
+ print HTML_TOC
+}
+
+
+function html_toc_entry()
+{
+ HTML_TOC = HTML_TOC " <A HREF=\"#" html_label() "\">"
+ HTML_TOC = HTML_TOC vol_no_month_year()
+ HTML_TOC = HTML_TOC "</A><BR>" "\n"
+}
+
+
+function html_trailer()
+{
+ html_end_pre()
+ print prefix(1) "</BODY>"
+ print "</HTML>"
+}
+
+
+function initialize()
+{
+ # NB: Update these when the program changes
+ VERSION_DATE = "[09-Oct-1996]"
+ VERSION_NUMBER = "1.00"
+
+ HTML = (HTML == "") ? 0 : (0 + HTML)
+
+ if (INDENT == "")
+ INDENT = 4
+
+ if (HTML == 0)
+ INDENT = 0 # indentation suppressed in ASCII mode
+
+ LEADERS = " . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ."
+
+ MAX_TITLE_CHARS = 36 # 36 produces a 79-char output line when there is
+ # just an initial page number. If this is
+ # increased, the LEADERS string may need to be
+ # lengthened.
+
+ MIN_LEADERS = 4 # Minimum number of characters from LEADERS
+ # required when leaders are used. The total
+ # number of characters that can appear in a
+ # title line is MAX_TITLE_CHARS + MIN_LEADERS.
+ # Leaders are omitted when the title length is
+ # between MAX_TITLE_CHARS and this sum.
+
+ MIN_LEADERS_SPACE = " " # must be at least MIN_LEADERS characters long
+
+ Month_expansion["jan"] = "January"
+ Month_expansion["feb"] = "February"
+ Month_expansion["mar"] = "March"
+ Month_expansion["apr"] = "April"
+ Month_expansion["may"] = "May"
+ Month_expansion["jun"] = "June"
+ Month_expansion["jul"] = "July"
+ Month_expansion["aug"] = "August"
+ Month_expansion["sep"] = "September"
+ Month_expansion["oct"] = "October"
+ Month_expansion["nov"] = "November"
+ Month_expansion["dec"] = "December"
+
+ Font_cmd_map["\\emph"] = "EM"
+ Font_cmd_map["\\textbf"] = "B"
+ Font_cmd_map["\\textit"] = "I"
+ Font_cmd_map["\\textmd"] = ""
+ Font_cmd_map["\\textrm"] = ""
+ Font_cmd_map["\\textsc"] = "toupper"
+ Font_cmd_map["\\textsl"] = "I"
+ Font_cmd_map["\\texttt"] = "t"
+ Font_cmd_map["\\textup"] = ""
+
+ Font_decl_map["\\bf"] = "B"
+ Font_decl_map["\\em"] = "EM"
+ Font_decl_map["\\it"] = "I"
+ Font_decl_map["\\rm"] = ""
+ Font_decl_map["\\sc"] = "toupper"
+ Font_decl_map["\\sf"] = ""
+ Font_decl_map["\\tt"] = "TT"
+ Font_decl_map["\\itshape"] = "I"
+ Font_decl_map["\\upshape"] = ""
+ Font_decl_map["\\slshape"] = "I"
+ Font_decl_map["\\scshape"] = "toupper"
+ Font_decl_map["\\mdseries"] = ""
+ Font_decl_map["\\bfseries"] = "B"
+ Font_decl_map["\\rmfamily"] = ""
+ Font_decl_map["\\sffamily"] = ""
+ Font_decl_map["\\ttfamily"] = "TT"
+}
+
+function min(a,b)
+{
+ return (a < b) ? a : b
+}
+
+
+function prefix(level)
+{
+ # Return a prefix of up to 60 blanks
+
+ if (In_PRE)
+ return ("")
+ else
+ return (substr(" ", \
+ 1, INDENT * level))
+}
+
+
+function print_line(line)
+{
+ if (HTML) # must buffer in memory so that we can accumulate TOC
+ Body[++BodyLines] = line
+ else
+ print line
+}
+
+
+function print_toc_line(author,title,pages, extra,leaders,n,t)
+{
+ # When we have a multiline title, the hypertext link goes only
+ # on the first line. A multiline hypertext link looks awful
+ # because of long underlines under the leading indentation.
+
+ if (pages == "") # then no leaders needed in title lines other than last one
+ t = sprintf("%31s %s%s%s", author, Title_prefix, title, Title_suffix)
+ else # last title line, with page number
+ {
+ n = html_length(title) # potentially expensive
+ extra = n % 2 # extra space for aligned leader dots
+ if (n <= MAX_TITLE_CHARS) # then need leaders
+ leaders = substr(LEADERS, 1, MAX_TITLE_CHARS + MIN_LEADERS - extra - \
+ min(MAX_TITLE_CHARS,n))
+ else # title (almost) fills line, so no leaders
+ leaders = substr(MIN_LEADERS_SPACE,1, \
+ (MAX_TITLE_CHARS + MIN_LEADERS - extra - n))
+ t = sprintf("%31s %s%s%s%s%s %4s", \
+ author, Title_prefix, title, Title_suffix, \
+ (extra ? " " : ""), leaders, pages)
+ }
+
+ Title_prefix = "" # forget any hypertext
+ Title_suffix = "" # link material
+
+ # Efficency note: an earlier version accumulated the body in a
+ # single scalar like this: "Body = Body t". Profiling revealed
+ # this statement as the major hot spot, and the change to array
+ # storage made the program more than twice as fast. This
+ # suggests that awk might benefit from an optimization of
+ # "s = s t" that uses realloc() instead of malloc().
+ if (HTML)
+ Body[++BodyLines] = t
+ else
+ print t
+}
+
+
+function protect_SGML_characters(s)
+{
+ gsub(/&/,"\\&amp;",s) # NB: this one MUST be first
+ gsub(/</,"\\&lt;",s)
+ gsub(/>/,"\\&gt;",s)
+ gsub(/\"/,"\\&quot;",s)
+ return (s)
+}
+
+
+function strip_braces(s, k)
+{ # strip non-backslashed braces from s and return the result
+
+ return (strip_char(strip_char(s,"{"),"}"))
+}
+
+
+function strip_char(s,c, k)
+{ # strip non-backslashed instances of c from s, and return the result
+ k = index(s,c)
+ if (k > 0) # then found the character
+ {
+ if (substr(s,k-1,1) != "\\") # then not backslashed char
+ s = substr(s,1,k-1) strip_char(substr(s,k+1),c) # so remove it (recursively)
+ else # preserve backslashed char
+ s = substr(s,1,k) strip_char(s,k+1,c)
+ }
+ return (s)
+}
+
+
+function strip_html(s)
+{
+ gsub(/<\/?[^>]*>/,"",s)
+ return (s)
+}
+
+
+function terminate()
+{
+ if (HTML)
+ {
+ html_end_pre()
+
+ HTML = 0 # NB: stop line buffering
+ html_header()
+ html_toc()
+ html_body()
+ html_trailer()
+ }
+}
+
+
+function TeX_to_HTML(s, k,n,parts)
+{
+ # First convert the four SGML reserved characters to SGML entities
+ if (HTML)
+ {
+ gsub(/>/, "\\&gt;", s)
+ gsub(/</, "\\&lt;", s)
+ gsub(/"/, "\\&quot;", s)
+ }
+
+ gsub(/[$][$]/,"$$",s) # change display math to triple dollars for split
+ n = split(s,parts,/[$]/)# split into non-math (odd) and math (even) parts
+
+ s = ""
+ for (k = 1; k <= n; ++k) # unbrace non-math part, leaving math mode intact
+ s = s ((k > 1) ? "$" : "") \
+ ((k % 2) ? strip_braces(TeX_to_HTML_nonmath(parts[k])) : \
+ TeX_to_HTML_math(parts[k]))
+
+ gsub(/[$][$][$]/,"$$",s) # restore display math
+
+ return (s)
+}
+
+
+function TeX_to_HTML_math(s)
+{
+ # Mostly a dummy for now, but HTML 3 could support some math translation
+
+ gsub(/\\&/,"\\&amp;",s) # reduce TeX ampersands to SGML entities
+
+ return (s)
+}
+
+
+function TeX_to_HTML_nonmath(s)
+{
+ if (index(s,"\\") > 0) # important optimization
+ {
+ gsub(/\\slash +/,"/",s) # replace TeX slashes with conventional ones
+ gsub(/ *\\emdash +/," --- ",s) # replace BibNet emdashes with conventional ones
+ gsub(/\\%/,"%",s) # reduce TeX percents to conventional ones
+ gsub(/\\[$]/,"$",s) # reduce TeX dollars to conventional ones
+ gsub(/\\#/,"#",s) # reduce TeX sharps to conventional ones
+
+ if (HTML) # translate TeX markup to HTML
+ {
+ gsub(/\\&/,"\\&amp;",s) # reduce TeX ampersands to SGML entities
+ s = html_accents(s)
+ s = html_fonts(s)
+ }
+ else # plain ASCII text output: discard all TeX markup
+ {
+ gsub(/\\\&/, "\\&", s) # reduce TeX ampersands to conventional ones
+
+ gsub(/\\[a-z][a-z] +/,"",s) # remove TeX font changes
+ gsub(/\\[^A-Za-z]/,"",s) # remove remaining TeX control symbols
+ }
+ }
+ return (s)
+}
+
+
+function trim(s)
+{
+ gsub(/^[ \t]+/,"",s)
+ gsub(/[ \t]+$/,"",s)
+ return (s)
+}
+
+
+function vol_no_month_year()
+{
+ return ("Volume " wrap(Volume) ", Number " wrap(Number) ", " wrap(Month) ", " wrap(Year))
+}
+
+
+function wrap(value)
+{
+ return (HTML ? ("<STRONG>" value "</STRONG>") : value)
+}
diff --git a/test/funstack.in b/test/funstack.in
new file mode 100644
index 0000000..7a29a25
--- /dev/null
+++ b/test/funstack.in
@@ -0,0 +1,206 @@
+%%% ====================================================================
+%%% BibTeX-file{
+%%% author = "Nelson H. F. Beebe",
+%%% version = "2.09",
+%%% date = "26 March 1997",
+%%% time = "08:21:19 MST",
+%%% filename = "cacm1970.bib",
+%%% address = "Center for Scientific Computing
+%%% Department of Mathematics
+%%% University of Utah
+%%% Salt Lake City, UT 84112
+%%% USA",
+%%% telephone = "+1 801 581 5254",
+%%% FAX = "+1 801 581 4148",
+%%% checksum = "50673 40670 196033 1787829",
+%%% email = "beebe at math.utah.edu (Internet)",
+%%% codetable = "ISO/ASCII",
+%%% keywords = "bibliography, CACM, Communications of the
+%%% ACM",
+%%% supported = "yes",
+%%% docstring = "This is a bibliography of the journal
+%%% Communications of the ACM, covering
+%%% (incompletely) 1970 -- 1979.
+%%%
+%%% At version 2.09, the year coverage looked
+%%% like this:
+%%%
+%%% 1961 ( 1) 1972 (168) 1983 ( 0)
+%%% 1962 ( 1) 1973 (158) 1984 ( 0)
+%%% 1963 ( 2) 1974 (127) 1985 ( 2)
+%%% 1964 ( 2) 1975 (107) 1986 ( 0)
+%%% 1965 ( 1) 1976 ( 97) 1987 ( 0)
+%%% 1966 ( 2) 1977 (117) 1988 ( 0)
+%%% 1967 ( 1) 1978 (118) 1989 ( 0)
+%%% 1968 ( 1) 1979 ( 78) 1990 ( 2)
+%%% 1969 ( 3) 1980 ( 1) 1991 ( 4)
+%%% 1970 (157) 1981 ( 2) 1992 ( 1)
+%%% 1971 (104) 1982 ( 1)
+%%%
+%%% Article: 1252
+%%% Book: 2
+%%% InProceedings: 1
+%%% Manual: 1
+%%% MastersThesis: 1
+%%% PhdThesis: 1
+%%%
+%%% Total entries: 1258
+%%%
+%%% The size of the original cacm.bib file
+%%% covering 1958--1996 became too large (about
+%%% 4000 entries) for BibTeX and TeX to handle,
+%%% so at version 1.44, it was split into
+%%% cacm1950.bib, cacm1960.bib, cacm1970.bib,
+%%% cacm1980.bib, and cacm1990.bib, each covering
+%%% the decade starting with the year embedded in
+%%% the filename. Version numbers for these
+%%% files begin at 2.00.
+%%%
+%%% Volumes from the 1990s average more than 200
+%%% articles yearly, so a complete bibliography
+%%% for this journal could contain more than 6000
+%%% entries from 1958 to 2000.
+%%%
+%%% These bibliographies also include ACM
+%%% Algorithms 1--492. For Algorithms 493--686,
+%%% including Algorithm 568, published in ACM
+%%% Transactions on Programming Languages and
+%%% Systems (TOPLAS), see the companion
+%%% bibliographies, toms.bib and toplas.bib.
+%%%
+%%% All published Remarks and Corrigenda are
+%%% cross-referenced in both directions, so
+%%% that citing a paper will automatically
+%%% generate citations for those Remarks and
+%%% Corrigenda. Cross-referenced entries are
+%%% duplicated in cacm19*.bib and toms.bib, so
+%%% that each is completely self-contained.
+%%%
+%%% Source code for ACM Algorithms from 380
+%%% onwards, with some omissions, is available
+%%% via the Netlib service at
+%%% http://netlib.ornl.gov/, and
+%%% ftp://netlib.bell-labs.com/netlib/toms.
+%%%
+%%% There is a World Wide Web search facility
+%%% for articles published in this journal from
+%%% 1959 to 1979 at
+%%% http://ciir.cs.umass.edu/cgi-bin/web_query_form/public/cacm2.1.
+%%%
+%%% The initial draft of entries for 1981 --
+%%% 1990 was extracted from the ACM Computing
+%%% Archive CD ROM for the 1980s, with manual
+%%% corrections and additions. Additions were
+%%% then made from all of the bibliographies in
+%%% the TeX User Group collection, from
+%%% bibliographies in the author's personal
+%%% files, from the Compendex database
+%%% (1970--1979), from the IEEE INSPEC database
+%%% (1970--1979), from tables of contents
+%%% information at http://www.acm.org/pubs/cacm/,
+%%% from Zentralblatt fur Mathematik Mathematics
+%%% Abstracts at
+%%% http://www.emis.de/cgi-bin/MATH/, from
+%%% bibliographies at Internet host
+%%% netlib.bell-labs.com, and from the computer
+%%% science bibliography collection on
+%%% ftp.ira.uka.de in /pub/bibliography to which
+%%% many people of have contributed. The
+%%% snapshot of this collection was taken on
+%%% 5-May-1994, and it consists of 441 BibTeX
+%%% files, 2,672,675 lines, 205,289 entries, and
+%%% 6,375 <at>String{} abbreviations, occupying
+%%% 94.8MB of disk space.
+%%%
+%%% Numerous errors in the sources noted above
+%%% have been corrected. Spelling has been
+%%% verified with the UNIX spell and GNU ispell
+%%% programs using the exception dictionary
+%%% stored in the companion file with extension
+%%% .sok.
+%%%
+%%% BibTeX citation tags are uniformly chosen
+%%% as name:year:abbrev, where name is the
+%%% family name of the first author or editor,
+%%% year is a 4-digit number, and abbrev is a
+%%% 3-letter condensation of important title
+%%% words. Citation tags were automatically
+%%% generated by software developed for the
+%%% BibNet Project.
+%%%
+%%% In this bibliography, entries are sorted in
+%%% publication order within each journal,
+%%% using bibsort -byvolume.
+%%%
+%%% The checksum field above contains a CRC-16
+%%% checksum as the first value, followed by the
+%%% equivalent of the standard UNIX wc (word
+%%% count) utility output of lines, words, and
+%%% characters. This is produced by Robert
+%%% Solovay's checksum utility.",
+%%% }
+%%% ====================================================================
+
+@Preamble{"\input bibnames.sty " # "\input path.sty " # "\def \TM {${}^{\sc TM}$} " # "\hyphenation{ al-pha-mer-ic Balz-er Blom-quist Bo-ta-fo-go Bran-din Brans-comb Bu-tera Chris-tina Christ-o-fi-des Col-lins Cor-dell data-base econ-omies Fletch-er
+ flow-chart flow-charts Fry-styk ge-dank-en Gar-fink-el Ge-ha-ni Glush-ko Goud-reau Gua-dan-go Hari-di Haw-thorn Hem-men-ding-er Hor-o-witz Hour-vitz Hirsch-berg Ike-da Ka-chi-tvi-chyan-u-kul Kat-ze-nel-son Kitz-miller Ko-ba-yashi Le-Me-tay-er Ken-ne-dy
+ Law-rence Mac-kay Mai-net-ti Mar-sa-glia Max-well Mer-ner Mo-ran-di Na-ray-an New-ell Nich-ols para-digm pat-ent-ed Phi-lo-kyp-rou Prep-a-ra-ta pseu-do-chain-ing QUIK-SCRIPT Rad-e-mach-er re-eval-u-a-tion re-wind Ros-witha Scheu-er-mann Schwach-heim
+ Schob-bens Schon-berg Sho-sha-ni Si-tha-ra-ma Skwa-rec-ki Streck-er Strin-gi-ni Tes-ler Te-zu-ka Teu-ho-la Till-quist Town-send Tsi-chri-tzis Tur-ski Vuille-min Wald-ing-er Za-bo-row-ski Za-mora }"}
+
+%=======================================================================
+% Acknowledgement abbreviations:
+
+@String{ack-nhfb = "Nelson H. F. Beebe, Center for Scientific Computing, Department of Mathematics, University of Utah, Salt Lake City, UT 84112, USA, Tel: +1 801 581 5254, FAX: +1 801 581 4148, e-mail: \path|beebe@math.utah.edu|"}
+
+@String{ack-nj = "Norbert Juffa, 2445 Mission College Blvd. Santa Clara, CA 95054 USA email: \path=norbert@iit.com="}
+
+%=======================================================================
+% Journal abbreviations:
+
+@String{j-CACM = "Communications of the ACM"}
+
+@String{j-COMP-SURV = "Computing Surveys"}
+
+@String{j-J-ACM = "Journal of the ACM"}
+
+@String{j-MANAGEMENT-SCIENCE = "Management Science"}
+
+@String{j-SIAM-J-COMPUT = "SIAM Journal of Computing"}
+
+@String{j-SPE = "Software --- Practice and Experience"}
+
+@String{j-TOMS = "ACM Transactions on Mathematical Software"}
+
+%=======================================================================
+% Publisher abbreviations:
+
+@String{pub-ANSI = "American National Standards Institute"}
+
+@String{pub-ANSI:adr = "1430 Broadway, New York, NY 10018, USA"}
+
+@String{pub-AW = "Ad{\-d}i{\-s}on-Wes{\-l}ey"}
+
+@String{pub-AW:adr = "Reading, MA, USA"}
+
+@String{pub-SUCSLI = "Stanford University Center for the Study of Language and Information"}
+
+@String{pub-SUCSLI:adr = "Stanford, CA, USA"}
+
+@String{pub-SV = "Spring{\-}er-Ver{\-}lag"}
+
+@String{pub-SV:adr = "Berlin, Germany~/ Heidelberg, Germany~/ London, UK~/ etc."}
+@MastersThesis{Dittmer:1976:IEP,
+ author = "Ingo Dittmer",
+ title = "{Implementation eines Einschrittcompilers f{\"u}r die Progammiersprache PASCAL auf der Rechenanlage IBM\slash 360 der Universit{\"a}t M{\"u}nster}. ({English} title: Implementation of a One-Step Compiler for the Programming Language
+ {PASCAL} on the {IBM}\slash 360 of the {University of Muenster})",
+ type = "Diplomearbeit",
+ school = "Universit{\"a}t M{\"u}nster",
+ address = "M{\"u}nster, Germany",
+ pages = "??",
+ month = "??",
+ year = "1976",
+ bibdate = "Sat Feb 17 13:24:29 1996",
+ note = "Diplomearbeit M{\"u}nster 1976 und doert angegebene Literatur (English: Muenster diploma work 1976 and the literature cited therein). The hashing method was rediscovered fourteen years later by Pearson \cite{Pearson:1990:FHV}, and then
+ commented on by several authors \cite{Dittmer:1991:NFH,Savoy:1991:NFH,Litsios:1991:NFH,Pearson:1991:NFH}.",
+ acknowledgement = ack-nhfb,
+ xxnote = "Cannot find in Dissertation Abstracts, European.",
+}
diff --git a/test/funstack.ok b/test/funstack.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/funstack.ok
diff --git a/test/gensub.awk b/test/gensub.awk
new file mode 100644
index 0000000..f91d84d
--- /dev/null
+++ b/test/gensub.awk
@@ -0,0 +1,7 @@
+BEGIN { a = "this is a test of gawk"
+ b = gensub(/(this).*(test).*(gawk)/, "3 = <\\3>, 2 = <\\2>, 1 = <\\1>", 1, a)
+ print b
+}
+NR == 1 { print gensub(/b/, "BB", 2) }
+NR == 2 { print gensub(/c/, "CC", "global") }
+END { print gensub(/foo/, "bar", 1, "DON'T PANIC") }
diff --git a/test/gensub.in b/test/gensub.in
new file mode 100644
index 0000000..96c9faf
--- /dev/null
+++ b/test/gensub.in
@@ -0,0 +1,2 @@
+a b c a b c a b c
+a b c a b c a b c
diff --git a/test/gensub.ok b/test/gensub.ok
new file mode 100644
index 0000000..b9ea3de
--- /dev/null
+++ b/test/gensub.ok
@@ -0,0 +1,4 @@
+3 = <gawk>, 2 = <test>, 1 = <this>
+a b c a BB c a b c
+a b CC a b CC a b CC
+DON'T PANIC
diff --git a/test/gensub2.awk b/test/gensub2.awk
new file mode 100644
index 0000000..53554da
--- /dev/null
+++ b/test/gensub2.awk
@@ -0,0 +1,5 @@
+BEGIN {
+ print gensub("x","y",2,"xx")
+ print gensub("x","y","2","xx")
+ print gensub("x","y","a","xx")
+}
diff --git a/test/gensub2.ok b/test/gensub2.ok
new file mode 100644
index 0000000..8982414
--- /dev/null
+++ b/test/gensub2.ok
@@ -0,0 +1,3 @@
+xy
+xy
+yx
diff --git a/test/getline.awk b/test/getline.awk
new file mode 100644
index 0000000..fc09f78
--- /dev/null
+++ b/test/getline.awk
@@ -0,0 +1,29 @@
+BEGIN {
+ x = y = "s"
+ a = (getline x y)
+ print a, x
+ a = (getline x + 1)
+ print a, x
+ a = (getline x - 2)
+ print a, x
+
+ cmd = "echo A"
+ a = (cmd | getline x y)
+ close(cmd)
+ print a, x
+
+ cmd = "echo B"
+ a = (cmd | getline x + 1)
+ close(cmd)
+ print a, x
+
+ cmd = "echo C"
+ a = (cmd | getline x - 2)
+ close(cmd)
+ print a, x
+
+ cmd = "echo D"
+ a = cmd | getline x
+ close(cmd)
+ print a, x
+}
diff --git a/test/getline.in b/test/getline.in
new file mode 100644
index 0000000..b1e6722
--- /dev/null
+++ b/test/getline.in
@@ -0,0 +1,3 @@
+A
+B
+C
diff --git a/test/getline.ok b/test/getline.ok
new file mode 100644
index 0000000..dd5bdb6
--- /dev/null
+++ b/test/getline.ok
@@ -0,0 +1,7 @@
+1s A
+2 B
+-1 C
+1s A
+2 B
+-1 C
+1 D
diff --git a/test/getline2.awk b/test/getline2.awk
new file mode 100644
index 0000000..f4e413f
--- /dev/null
+++ b/test/getline2.awk
@@ -0,0 +1 @@
+BEGIN { while( getline > 0) { print } }
diff --git a/test/getline2.ok b/test/getline2.ok
new file mode 100644
index 0000000..9b7f2b9
--- /dev/null
+++ b/test/getline2.ok
@@ -0,0 +1,2 @@
+BEGIN { while( getline > 0) { print } }
+BEGIN { while( getline > 0) { print } }
diff --git a/test/getline3.awk b/test/getline3.awk
new file mode 100644
index 0000000..03e1239
--- /dev/null
+++ b/test/getline3.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ cmd = "echo 3"
+ y = 7
+ cmd | getline x y
+ close(cmd)
+ print (cmd | getline x y)
+}
diff --git a/test/getline3.ok b/test/getline3.ok
new file mode 100644
index 0000000..98d9bcb
--- /dev/null
+++ b/test/getline3.ok
@@ -0,0 +1 @@
+17
diff --git a/test/getlnbuf.awk b/test/getlnbuf.awk
new file mode 100644
index 0000000..8a4483e
--- /dev/null
+++ b/test/getlnbuf.awk
@@ -0,0 +1,18 @@
+#Date: Tue, 21 Dec 1999 16:11:07 +0100
+#From: Daniel Schnell <Daniel.Schnell.GP@icn.siemens.de>
+#To: bug-gnu-utils@gnu.org
+#CC: arnold@gnu.org
+#Subject: BUG in gawk (version 3.0.4 linux, windows): Text mangeling in between
+
+# search for "@K@CODE" segment
+
+$0 ~ /@K@CODE/ {
+ # get next record
+ getline temp
+ printf ("@K@CODE\n")
+ printf ("%s\n",temp)
+ }
+
+$0 !~ /@K@CODE/ {
+ printf ("%s\n", $0)
+ }
diff --git a/test/getlnbuf.in b/test/getlnbuf.in
new file mode 100644
index 0000000..062b377
--- /dev/null
+++ b/test/getlnbuf.in
@@ -0,0 +1,1708 @@
+EXTRA_INFO.TYP3.EC := EC;
+EXTRA_INFO.TYP3.TEXT:= 'CONNECT_SERVICE TO OAM FAILED';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C003', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_SWERR, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+917596041
+@K@NAME
+T_ERR4_1
+@K@INSCRIPT
+ERROR_HANDLING:
+DB_OVERFLOW
+MP/NSEI
+@K@CODE
+/***@@@ ERROR ***/
+/*@@ERRORTEXT
+*@ DB-OVERFLOW
+*@
+*@
+*@@DESCRIPTION
+*@ THE INSTANCE-CREATION WAS NOT POSSIBLE
+*@ BECAUSE THE DATABASE WOULD OVERFLOW
+*@
+*@@EXTRA INFO
+*@ (EXTRA_INFO_4_STRUCT)
+*@ NSEI
+*@ NSVCI
+*@ TEXT
+*@
+*/
+
+EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0);
+EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1);
+EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSEI-OVERFLOW';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C004', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+920903219
+@K@NAME
+T_ERR4_2
+@K@INSCRIPT
+ERROR_HANDLING:
+DB_OVERFLOW
+MP/NSVCI
+@K@CODE
+/***@@@ ERROR ***/
+/*@@ERRORTEXT
+*@ DB-OVERFLOW
+*@
+*@
+*@@DESCRIPTION
+*@ THE INSTANCE-CREATION WAS NOT POSSIBLE
+*@ BECAUSE THE DATABASE WOULD OVERFLOW
+*@
+*@@EXTRA INFO
+*@ (EXTRA_INFO_4_STRUCT)
+*@ NSEI
+*@ NSVCI
+*@ TEXT
+*@
+*/
+
+EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0);
+EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1);
+EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSVCI-OVERFLOW';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C004', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+920903222
+@K@NAME
+T_ERR4_3
+@K@INSCRIPT
+ERROR_HANDLING:
+DB_OVERFLOW
+NSEI/NSVCI
+@K@CODE
+/***@@@ ERROR ***/
+/*@@ERRORTEXT
+*@ DB-OVERFLOW
+*@
+*@
+*@@DESCRIPTION
+*@ THE INSTANCE-CREATION WAS NOT POSSIBLE
+*@ BECAUSE THE DATABASE WOULD OVERFLOW
+*@
+*@@EXTRA INFO
+*@ (EXTRA_INFO_4_STRUCT)
+*@ NSEI
+*@ NSVCI
+*@ TEXT
+*@
+*/
+
+EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0);
+EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1);
+EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: NSEI/NSVC-OVERFLOW';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C004', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+920903226
+@K@NAME
+TR_RESET
+@K@INSCRIPT
+RESTART_
+TNS_RESET_
+TIMER
+@K@CODE
+/* TIMER EVENT DESCRIPTOR STILL THERE */
+
+/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR STILL VALID */
+NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_RESET_MAP;
+
+/* START TIMER */
+G9PX508_START_TIMER_P
+(
+NSVCI_CON_PTR->.TIM_EVD_PTR
+);
+
+@K@FREEZE
+924684867
+@K@NAME
+TX_AUDIT
+@K@INSCRIPT
+FOR
+AUDIT
+
+@K@NAME
+M_BLKOACKM
+@K@INSCRIPT
+NS_
+BLOCK_ACK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+
+IF
+/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL
+THEN
+/* USE THIS 'OTHER' FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+/* NSEI TO BE USED FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+/* NSVCI TO BE USED FOR TRANSPORT */
+ELSE
+/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+FI;
+
+
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D3);
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+938805885
+@K@NAME
+T_RCTRUE
+@K@INSCRIPT
+RC
+=
+TRUE
+@K@CODE
+RC:= TRUE;
+
+@K@FREEZE
+922176328
+@K@NAME
+M_AC_SBVCN
+@K@INSCRIPT
+G9IBME0_
+ACT_
+SIGN_BVC_C
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB512_GET_MSG_LESS_EV_DESCR_P
+(
+SID_GBNSVC,
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+TX_EVD_PTR->.EVENT_CMD:= G9IBME0_ACT_SIGN_BVC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0);
+TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+938788211
+@K@NAME
+T_RC_EOD
+@K@INSCRIPT
+RC
+=
+END OF DATA
+
+@K@CODE
+RC:= G9IBSM4_RC_END_OF_DATA;
+
+@K@FREEZE
+921083785
+@K@NAME
+T_RC_EMP
+@K@INSCRIPT
+RC
+=
+EMPTY
+
+@K@CODE
+RC:= G9IBSM4_RC_EMPTY;
+
+@K@FREEZE
+921083757
+@K@NAME
+T_RC_ERR
+@K@INSCRIPT
+RC
+=
+ERROR
+
+@K@CODE
+RC:= G9IBSM4_RC_ERROR;
+
+@K@FREEZE
+921083731
+@K@NAME
+S_UNUSED
+@K@INSCRIPT
+G9IBSM0_
+UNUSED
+@K@CODE
+
+
+@K@FREEZE
+919416670
+@K@NAME
+TA_UNBLOCK
+@K@INSCRIPT
+START_
+TNS_UNBLOCK_
+TIMER
+@K@CODE
+/* GET TIMER-EVENT DESCRIPTOR */
+G9PB513_GET_TIMER_EV_DESCR_P
+(
+SID_GBNSVC,
+NSVCI_CON_PTR->.TIM_EVD_PTR
+);
+
+/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR */
+NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_CMD:= G9IBSE4_TO_TNS_C;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_DESTINATION:= GBNSVC_HANDLE;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(1):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_UNBLOCK_MAP;
+
+/* START TIMER */
+G9PX508_START_TIMER_P
+(
+NSVCI_CON_PTR->.TIM_EVD_PTR
+);
+
+@K@FREEZE
+924686210
+@K@NAME
+M_BLK_ACKM
+@K@INSCRIPT
+NS_
+BLOCK_ACK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D3);
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+926348442
+@K@NAME
+TA_NXTALIV
+@K@INSCRIPT
+DEFINE
+NEW 'NEXT_
+ALIVE'
+@K@CODE
+IF
+/* ALIVE NSVC TO THE NSEI EXISTING? */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL
+
+THEN
+/* TAKE NEXT ELEMENT IN THE LINKED LIST AS THE NEXT ALIVE NSVC */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR:=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.NEXT_ALV_NSVCI_CON_PTR;
+
+FI;
+
+@K@FREEZE
+938801086
+@K@NAME
+M_DE_CBVCN
+@K@INSCRIPT
+G9IBME2_
+DEACT_
+CELL_BVC_C
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB512_GET_MSG_LESS_EV_DESCR_P
+(
+SID_GBNSVC,
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+TX_EVD_PTR->.EVENT_CMD:= G9IBME2_DEACT_CELL_BVC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+TX_EVD_PTR->.KEYS.INT_ARR(1):= EVD_PTR->.ADD_DATA(3);
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+933318270
+@K@NAME
+TA_NXTRESP
+@K@INSCRIPT
+DEFINE
+NEW 'NEXT_
+RESPONSIBLE'
+@K@CODE
+NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR:=
+ NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR->.NEXT_LSP_NSVCI_CON_PTR;
+
+
+@K@FREEZE
+938005006
+@K@NAME
+TA_NXTSUBS
+@K@INSCRIPT
+DEFINE
+NEW 'NEXT_
+SUBSTITUTE'
+@K@CODE
+NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR:=
+ NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR->.NEXT_UBL_NSVCI_CON_PTR;
+
+@K@NAME
+M_BLK_O__M
+@K@INSCRIPT
+NS_
+BLOCK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+
+IF
+/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL
+THEN
+/* USE THIS 'OTHER' FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+/* NSEI TO BE USED FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+/* NSVCI TO BE USED FOR TRANSPORT */
+ELSE
+/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+FI;
+
+
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D2);
+
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:=
+ G9IBBA2_NS_TRANSIT_NETWORK_FAILURE; /* CAUSE FOR BLOCK */
+NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@TEXT
+GSM 8.16 CHAP. 7.2:
+THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE
+(BLOCKED OR UNBLOCKED) NS-VC...
+@K@FREEZE
+938803215
+@K@NAME
+M_DE_SBVCN
+@K@INSCRIPT
+G9IBME1_
+DEACT_
+SIGN_BVC_C
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB512_GET_MSG_LESS_EV_DESCR_P
+(
+SID_GBNSVC,
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+TX_EVD_PTR->.EVENT_CMD:= G9IBME1_DEACT_SIGN_BVC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0);
+TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+938788201
+@K@NAME
+M_OAME401M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /*
+USED NSEI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* AFFECTED NSEI (FROM PDU) */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* AFFECTED NSVCI (FROM PDU) */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935766108
+@K@NAME
+M_OAME402M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935766407
+@K@NAME
+M_OAME411M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_ACK_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /*
+USED NSEI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_ACK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935767332
+@K@NAME
+M_OAME412M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_ACK_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_ACK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */
+
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935767189
+@K@NAME
+C_CON
+@K@INSCRIPT
+RC_DB
+@K@CODE
+RC_DB
+
+@K@FREEZE
+922176673
+@K@NAME
+M_BLK____M
+@K@INSCRIPT
+NS_
+BLOCK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D2);
+
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:=
+ G9IBBA2_NS_OAM_INTERVENTION; /* CAUSE FOR BLOCK */
+NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@TEXT
+GSM 8.16 CHAP. 7.2:
+THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE
+(BLOCKED OR UNBLOCKED) NS-VC...
+@K@FREEZE
+926348613
+@K@NAME
+S_BLOCKED
+@K@INSCRIPT
+G9IBSM0_
+BLOCKED
+@K@CODE
+
+
+@K@FREEZE
+922176496
+@K@NAME
+D_CON
+@K@INSCRIPT
+CONTEXT
+GOT
+@K@CODE
+RC_DB = G9IBSR0_RC_OK
+
+@K@FREEZE
+921772339
+@K@NAME
+M_OAME901M
+@K@INSCRIPT
+ERROR_MESSAGE:
+OPERATIONAL_STATE_CHANGE
+UBL->BLK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE;
+/* ADDITIONAL_OPERATIONAL_STATE_INFO */
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:=
+ G9OC102_ENABLED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:=
+ G9OC102_ENABLED;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+925970975
+@K@NAME
+M_OAME902M
+@K@INSCRIPT
+ERROR_MESSAGE:
+OPERATIONAL_STATE_CHANGE
+UBL->BLK
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE;
+/* ADDITIONAL_OPERATIONAL_STATE_INFO */
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:=
+ G9OC102_ENABLED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:=
+ G9OC102_DISABLED;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+925970987
+@K@NAME
+M_OAME10SM
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@NAME
+M_OAME911M
+@K@INSCRIPT
+ERROR_MESSAGE:
+OPERATIONAL_STATE_CHANGE
+BLK->UBL
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE;
+/* ADDITIONAL_OPERATIONAL_STATE_INFO */
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:=
+ G9OC102_ENABLED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:=
+ G9OC102_ENABLED;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+925970996
+@K@NAME
+M_OAME20SM
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_END_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@NAME
+M_OAME10_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443813
+@K@NAME
+D_SEM
+@K@INSCRIPT
+CALL_SEM
+=
+TRUE
+@K@CODE
+CALL_SEM = TRUE
+
+@K@FREEZE
+922176624
+@K@NAME
+D_N_0
+@K@INSCRIPT
+N = 0
+
+@K@CODE
+NSVCI_CON_PTR->.N = 0
+
+@K@FREEZE
+921511000
+@K@NAME
+M_OAME12_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ FALSE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_ALIVE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443829
+@K@NAME
+M_OAME21_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_END_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ FALSE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443856
+@K@NAME
+M_OAME13_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ FALSE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_ALIVE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443838
+@K@NAME
+M_OAME22_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_END_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ FALSE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_ALIVE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443864
+@K@NAME
+M_OAME30_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+NO_ANSWER_FORM_BSS
+RESET_PROCEDURE
+
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS;
+/* INITIATED_PROCEDURE */
+OAM_MSG_PTR->.INITIATED_PROCEDURE:=
+ G9OC123_RESET_PROCEDURE;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922175973
+@K@NAME
+M_OAME31_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+NO_ANSWER_FROM_BSS
+BLOCK_PROCEDURE
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS;
+/* INITIATED_PROCEDURE */
+OAM_MSG_PTR->.INITIATED_PROCEDURE:=
+ G9OC123_BLOCK_PROCEDURE;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922175976
+@K@NAME
+M_OAME32_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+NO_ANSWER_FROM_BSS
+UNBLOCK_PROCEDURE
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS;
+/* INITIATED_PROCEDURE */
+OAM_MSG_PTR->.INITIATED_PROCEDURE:=
+ G9OC123_UNBLOCK_PROCEDURE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922175980
+@K@NAME
+M_OAME42_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+BLOCK_PDU
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_BLOCK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */
+
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+934296141
+@K@NAME
+M_OAME50_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+STATUS_PDU_CONTAINS_ERROR_INFO
+RECEIVED
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR-CAUSE = STATUS_PDU_CONTAINS_ERROR_INFO */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_STATUS_PDU_CONTAINS_ERROR_INFO;
+/* ADDITIONAL_STATUS_PDU_INFO */
+INT_CAUSE_PTR.INT_PTR:= ADDR(EVD_PTR->.ADD_DATA(2));
+OAM_MSG_PTR->.ADDITIONAL_STATUS_PDU_INFO:=
+ INT_CAUSE_PTR.CAUSE_PTR->; /* CAUSE */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@TEXT
+NICHT OK
+
+@K@FREEZE
+934298924
+@K@NAME
+M_OAME43_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+BLOCK_ACK_PDU
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_BLOCK_ACK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+934297710
diff --git a/test/getlnbuf.ok b/test/getlnbuf.ok
new file mode 100644
index 0000000..062b377
--- /dev/null
+++ b/test/getlnbuf.ok
@@ -0,0 +1,1708 @@
+EXTRA_INFO.TYP3.EC := EC;
+EXTRA_INFO.TYP3.TEXT:= 'CONNECT_SERVICE TO OAM FAILED';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C003', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_SWERR, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+917596041
+@K@NAME
+T_ERR4_1
+@K@INSCRIPT
+ERROR_HANDLING:
+DB_OVERFLOW
+MP/NSEI
+@K@CODE
+/***@@@ ERROR ***/
+/*@@ERRORTEXT
+*@ DB-OVERFLOW
+*@
+*@
+*@@DESCRIPTION
+*@ THE INSTANCE-CREATION WAS NOT POSSIBLE
+*@ BECAUSE THE DATABASE WOULD OVERFLOW
+*@
+*@@EXTRA INFO
+*@ (EXTRA_INFO_4_STRUCT)
+*@ NSEI
+*@ NSVCI
+*@ TEXT
+*@
+*/
+
+EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0);
+EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1);
+EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSEI-OVERFLOW';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C004', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+920903219
+@K@NAME
+T_ERR4_2
+@K@INSCRIPT
+ERROR_HANDLING:
+DB_OVERFLOW
+MP/NSVCI
+@K@CODE
+/***@@@ ERROR ***/
+/*@@ERRORTEXT
+*@ DB-OVERFLOW
+*@
+*@
+*@@DESCRIPTION
+*@ THE INSTANCE-CREATION WAS NOT POSSIBLE
+*@ BECAUSE THE DATABASE WOULD OVERFLOW
+*@
+*@@EXTRA INFO
+*@ (EXTRA_INFO_4_STRUCT)
+*@ NSEI
+*@ NSVCI
+*@ TEXT
+*@
+*/
+
+EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0);
+EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1);
+EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: MP/NSVCI-OVERFLOW';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C004', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+920903222
+@K@NAME
+T_ERR4_3
+@K@INSCRIPT
+ERROR_HANDLING:
+DB_OVERFLOW
+NSEI/NSVCI
+@K@CODE
+/***@@@ ERROR ***/
+/*@@ERRORTEXT
+*@ DB-OVERFLOW
+*@
+*@
+*@@DESCRIPTION
+*@ THE INSTANCE-CREATION WAS NOT POSSIBLE
+*@ BECAUSE THE DATABASE WOULD OVERFLOW
+*@
+*@@EXTRA INFO
+*@ (EXTRA_INFO_4_STRUCT)
+*@ NSEI
+*@ NSVCI
+*@ TEXT
+*@
+*/
+
+EXTRA_INFO.TYP4.NSEI := EVD_PTR->.KEYS.INT_ARR(0);
+EXTRA_INFO.TYP4.NSVCI:= EVD_PTR->.KEYS.INT_ARR(1);
+EXTRA_INFO.TYP4.TEXT := 'NSVC-HAND.: NSEI/NSVC-OVERFLOW';
+
+G9PXYA1S!G9TE500_EHP_P(
+'G9IBSA1C004', /*@@ID*/
+G9PXYA1S!G9TE102_ERR_CLASS_ESC_MAX_ANY, /*@@CLASS*/
+ADDR(EXTRA_INFO.ERROR_HANDLER), /* EXTRA-INFO ADDR */
+G9PXYA1S!G9TE100_GB_LM, /* USER-ID */
+NULL /* OPTIONAL-SWET-INFO ADDR */
+);
+/***@@@ END OF ERROR ***/
+
+@K@FREEZE
+920903226
+@K@NAME
+TR_RESET
+@K@INSCRIPT
+RESTART_
+TNS_RESET_
+TIMER
+@K@CODE
+/* TIMER EVENT DESCRIPTOR STILL THERE */
+
+/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR STILL VALID */
+NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_RESET_MAP;
+
+/* START TIMER */
+G9PX508_START_TIMER_P
+(
+NSVCI_CON_PTR->.TIM_EVD_PTR
+);
+
+@K@FREEZE
+924684867
+@K@NAME
+TX_AUDIT
+@K@INSCRIPT
+FOR
+AUDIT
+
+@K@NAME
+M_BLKOACKM
+@K@INSCRIPT
+NS_
+BLOCK_ACK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+
+IF
+/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL
+THEN
+/* USE THIS 'OTHER' FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+/* NSEI TO BE USED FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+/* NSVCI TO BE USED FOR TRANSPORT */
+ELSE
+/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+FI;
+
+
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D3);
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+938805885
+@K@NAME
+T_RCTRUE
+@K@INSCRIPT
+RC
+=
+TRUE
+@K@CODE
+RC:= TRUE;
+
+@K@FREEZE
+922176328
+@K@NAME
+M_AC_SBVCN
+@K@INSCRIPT
+G9IBME0_
+ACT_
+SIGN_BVC_C
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB512_GET_MSG_LESS_EV_DESCR_P
+(
+SID_GBNSVC,
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+TX_EVD_PTR->.EVENT_CMD:= G9IBME0_ACT_SIGN_BVC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0);
+TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+938788211
+@K@NAME
+T_RC_EOD
+@K@INSCRIPT
+RC
+=
+END OF DATA
+
+@K@CODE
+RC:= G9IBSM4_RC_END_OF_DATA;
+
+@K@FREEZE
+921083785
+@K@NAME
+T_RC_EMP
+@K@INSCRIPT
+RC
+=
+EMPTY
+
+@K@CODE
+RC:= G9IBSM4_RC_EMPTY;
+
+@K@FREEZE
+921083757
+@K@NAME
+T_RC_ERR
+@K@INSCRIPT
+RC
+=
+ERROR
+
+@K@CODE
+RC:= G9IBSM4_RC_ERROR;
+
+@K@FREEZE
+921083731
+@K@NAME
+S_UNUSED
+@K@INSCRIPT
+G9IBSM0_
+UNUSED
+@K@CODE
+
+
+@K@FREEZE
+919416670
+@K@NAME
+TA_UNBLOCK
+@K@INSCRIPT
+START_
+TNS_UNBLOCK_
+TIMER
+@K@CODE
+/* GET TIMER-EVENT DESCRIPTOR */
+G9PB513_GET_TIMER_EV_DESCR_P
+(
+SID_GBNSVC,
+NSVCI_CON_PTR->.TIM_EVD_PTR
+);
+
+/* INITIALIZATION OF THE TIMER-EVENT-DESCRIPTOR */
+NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_CMD:= G9IBSE4_TO_TNS_C;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.EVENT_DESTINATION:= GBNSVC_HANDLE;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.KEYS.INT_ARR(1):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+NSVCI_CON_PTR->.TIM_EVD_PTR->.TIMER:= TNS_UNBLOCK_MAP;
+
+/* START TIMER */
+G9PX508_START_TIMER_P
+(
+NSVCI_CON_PTR->.TIM_EVD_PTR
+);
+
+@K@FREEZE
+924686210
+@K@NAME
+M_BLK_ACKM
+@K@INSCRIPT
+NS_
+BLOCK_ACK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D3);
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR2_NS_BLOCK_ACK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D3.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+926348442
+@K@NAME
+TA_NXTALIV
+@K@INSCRIPT
+DEFINE
+NEW 'NEXT_
+ALIVE'
+@K@CODE
+IF
+/* ALIVE NSVC TO THE NSEI EXISTING? */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL
+
+THEN
+/* TAKE NEXT ELEMENT IN THE LINKED LIST AS THE NEXT ALIVE NSVC */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR:=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.NEXT_ALV_NSVCI_CON_PTR;
+
+FI;
+
+@K@FREEZE
+938801086
+@K@NAME
+M_DE_CBVCN
+@K@INSCRIPT
+G9IBME2_
+DEACT_
+CELL_BVC_C
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB512_GET_MSG_LESS_EV_DESCR_P
+(
+SID_GBNSVC,
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+TX_EVD_PTR->.EVENT_CMD:= G9IBME2_DEACT_CELL_BVC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+TX_EVD_PTR->.KEYS.INT_ARR(1):= EVD_PTR->.ADD_DATA(3);
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+933318270
+@K@NAME
+TA_NXTRESP
+@K@INSCRIPT
+DEFINE
+NEW 'NEXT_
+RESPONSIBLE'
+@K@CODE
+NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR:=
+ NSEI_CON_PTR->.NEXT_RESP_NSVCI_CON_PTR->.NEXT_LSP_NSVCI_CON_PTR;
+
+
+@K@FREEZE
+938005006
+@K@NAME
+TA_NXTSUBS
+@K@INSCRIPT
+DEFINE
+NEW 'NEXT_
+SUBSTITUTE'
+@K@CODE
+NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR:=
+ NSEI_CON_PTR->.NEXT_SUBS_NSVCI_CON_PTR->.NEXT_UBL_NSVCI_CON_PTR;
+
+@K@NAME
+M_BLK_O__M
+@K@INSCRIPT
+NS_
+BLOCK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+
+IF
+/* 'OTHER' ALIVE NSVC TO THIS NSEI EXISTING? */
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR /= NULL
+THEN
+/* USE THIS 'OTHER' FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI;
+/* NSEI TO BE USED FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+
+NSVCI_CON_PTR->.OWN_NSEI_CON_PTR->.NEXT_ALIV_NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+/* NSVCI TO BE USED FOR TRANSPORT */
+ELSE
+/* USE AFFECTED NSVC AGAIN FOR TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+FI;
+
+
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D2);
+
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:=
+ G9IBBA2_NS_TRANSIT_NETWORK_FAILURE; /* CAUSE FOR BLOCK */
+NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@TEXT
+GSM 8.16 CHAP. 7.2:
+THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE
+(BLOCKED OR UNBLOCKED) NS-VC...
+@K@FREEZE
+938803215
+@K@NAME
+M_DE_SBVCN
+@K@INSCRIPT
+G9IBME1_
+DEACT_
+SIGN_BVC_C
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB512_GET_MSG_LESS_EV_DESCR_P
+(
+SID_GBNSVC,
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+TX_EVD_PTR->.EVENT_CMD:= G9IBME1_DEACT_SIGN_BVC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBBVC_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):= EVD_PTR->.KEYS.INT_ARR(0);
+TX_EVD_PTR->.KEYS.INT_ARR(1):= SIGN_BVCI;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+938788201
+@K@NAME
+M_OAME401M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /*
+USED NSEI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* AFFECTED NSEI (FROM PDU) */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* AFFECTED NSVCI (FROM PDU) */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935766108
+@K@NAME
+M_OAME402M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935766407
+@K@NAME
+M_OAME411M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_ACK_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSE */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSE;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSE_ID:= EVD_PTR->.KEYS.INT_ARR(0); /*
+USED NSEI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_ACK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935767332
+@K@NAME
+M_OAME412M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+RESET_ACK_PDU
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.KEYS.INT_ARR(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_RESET_ACK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.ADD_DATA(0); /* NSEI FROM PDU */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.ADD_DATA(1); /* NSVCI FROM PDU */
+
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+935767189
+@K@NAME
+C_CON
+@K@INSCRIPT
+RC_DB
+@K@CODE
+RC_DB
+
+@K@FREEZE
+922176673
+@K@NAME
+M_BLK____M
+@K@INSCRIPT
+NS_
+BLOCK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9IBDF4_NS_LM_M) + G9IBD44_NS_PDU_DATA_OFFSET_C),
+TX_EVD_PTR
+);
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9IBD40_NS_LM_PDU_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= GBDL_HANDLE;
+TX_EVD_PTR->.KEYS.INT_ARR(0):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSEI; /* NSEI TO BE USED FOR
+TRANSPORT */
+TX_EVD_PTR->.KEYS.INT_ARR(1):=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVCI TO BE USED FOR
+TRANSPORT */
+/* POINTER TO PDU IN POOL-ELEMENT */
+NS_PDU_PTR:= NS_PDU_REF_M (INT(TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT)
+ + G9IBD44_NS_PDU_DATA_OFFSET_C);
+/* OFFSET OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= G9IBD44_NS_PDU_DATA_OFFSET_C;
+/* LENGTH OF THE PDU IN POOL-ELEMENT */
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(NS_PDU_PTR->.G9IBDF4_PDU_TYPE) +
+SIZE(NS_PDU_PTR->.D2);
+
+
+/* NOW THE POOL-ELEMENT */
+NS_PDU_PTR->.G9IBDF4_PDU_TYPE:= G9IBDR1_NS_BLOCK_C; /* PDU-TYPE */
+
+NS_PDU_PTR->.D2.CAUSE_TLV.CAUSE_VAL:=
+ G9IBBA2_NS_OAM_INTERVENTION; /* CAUSE FOR BLOCK */
+NS_PDU_PTR->.D2.NSVCI_TLV.NSVCI_VAL :=
+ NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI; /* NSVC TO BE BLOCKED */
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@TEXT
+GSM 8.16 CHAP. 7.2:
+THE NS-BLOCK-PDU MAY BE SENT IN ANY ALIVE
+(BLOCKED OR UNBLOCKED) NS-VC...
+@K@FREEZE
+926348613
+@K@NAME
+S_BLOCKED
+@K@INSCRIPT
+G9IBSM0_
+BLOCKED
+@K@CODE
+
+
+@K@FREEZE
+922176496
+@K@NAME
+D_CON
+@K@INSCRIPT
+CONTEXT
+GOT
+@K@CODE
+RC_DB = G9IBSR0_RC_OK
+
+@K@FREEZE
+921772339
+@K@NAME
+M_OAME901M
+@K@INSCRIPT
+ERROR_MESSAGE:
+OPERATIONAL_STATE_CHANGE
+UBL->BLK
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE;
+/* ADDITIONAL_OPERATIONAL_STATE_INFO */
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:=
+ G9OC102_ENABLED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:=
+ G9OC102_ENABLED;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+925970975
+@K@NAME
+M_OAME902M
+@K@INSCRIPT
+ERROR_MESSAGE:
+OPERATIONAL_STATE_CHANGE
+UBL->BLK
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE;
+/* ADDITIONAL_OPERATIONAL_STATE_INFO */
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:=
+ G9OC102_ENABLED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:=
+ G9OC102_DISABLED;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+925970987
+@K@NAME
+M_OAME10SM
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@NAME
+M_OAME911M
+@K@INSCRIPT
+ERROR_MESSAGE:
+OPERATIONAL_STATE_CHANGE
+BLK->UBL
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = OPERATIONAL_STATE_CHANGE */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_OPERATIONAL_STATE_CHANGE;
+/* ADDITIONAL_OPERATIONAL_STATE_INFO */
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.OPER_STATE_NEW:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_OLD:=
+ G9OC102_ENABLED;
+OAM_MSG_PTR->.ADDITIONAL_OPERATIONAL_STATE_INFO.ADMIN_STATE_NEW:=
+ G9OC102_ENABLED;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+925970996
+@K@NAME
+M_OAME20SM
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_END_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@NAME
+M_OAME10_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443813
+@K@NAME
+D_SEM
+@K@INSCRIPT
+CALL_SEM
+=
+TRUE
+@K@CODE
+CALL_SEM = TRUE
+
+@K@FREEZE
+922176624
+@K@NAME
+D_N_0
+@K@INSCRIPT
+N = 0
+
+@K@CODE
+NSVCI_CON_PTR->.N = 0
+
+@K@FREEZE
+921511000
+@K@NAME
+M_OAME12_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ FALSE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_ALIVE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443829
+@K@NAME
+M_OAME21_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_END_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ TRUE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ FALSE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443856
+@K@NAME
+M_OAME13_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_BEGIN_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_BEGIN_NS_ALIVE_TEST*/
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_BEGIN_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ FALSE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_UNBLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_ALIVE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443838
+@K@NAME
+M_OAME22_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ALARM_END_NS_ALIVE_TEST
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = ALARM_END_NS_ALIVE_TEST */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ALARM_END_NS_ALIVE_TEST;
+/* ADDITIONAL_ALARM_INFO */
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.ADMINISTRATIVE_STATE_CHANGED:=
+ FALSE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_OLD:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.OPER_STATE_NEW:=
+ G9OC101_BLOCKED;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_OLD:=
+ G9OC103_DEAD;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.AVAIL_STATE_NEW:=
+ G9OC103_ALIVE;
+OAM_MSG_PTR->.ADDITIONAL_ALARM_INFO.CONFIGURATION_OF_NSVC:=
+ TRUE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922443864
+@K@NAME
+M_OAME30_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+NO_ANSWER_FORM_BSS
+RESET_PROCEDURE
+
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS;
+/* INITIATED_PROCEDURE */
+OAM_MSG_PTR->.INITIATED_PROCEDURE:=
+ G9OC123_RESET_PROCEDURE;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922175973
+@K@NAME
+M_OAME31_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+NO_ANSWER_FROM_BSS
+BLOCK_PROCEDURE
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS;
+/* INITIATED_PROCEDURE */
+OAM_MSG_PTR->.INITIATED_PROCEDURE:=
+ G9OC123_BLOCK_PROCEDURE;
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922175976
+@K@NAME
+M_OAME32_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+NO_ANSWER_FROM_BSS
+UNBLOCK_PROCEDURE
+
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR_CAUSE = NO_ANSWER_FROM_BSS */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_NO_ANSWER_FROM_BSS;
+/* INITIATED_PROCEDURE */
+OAM_MSG_PTR->.INITIATED_PROCEDURE:=
+ G9OC123_UNBLOCK_PROCEDURE;
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+922175980
+@K@NAME
+M_OAME42_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+BLOCK_PDU
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_BLOCK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */
+
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+934296141
+@K@NAME
+M_OAME50_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+STATUS_PDU_CONTAINS_ERROR_INFO
+RECEIVED
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:=
+NSVCI_CON_PTR->.DBMS.NSVC_INSTANCE.NSVCI;
+
+/* ERROR-CAUSE = STATUS_PDU_CONTAINS_ERROR_INFO */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_STATUS_PDU_CONTAINS_ERROR_INFO;
+/* ADDITIONAL_STATUS_PDU_INFO */
+INT_CAUSE_PTR.INT_PTR:= ADDR(EVD_PTR->.ADD_DATA(2));
+OAM_MSG_PTR->.ADDITIONAL_STATUS_PDU_INFO:=
+ INT_CAUSE_PTR.CAUSE_PTR->; /* CAUSE */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@TEXT
+NICHT OK
+
+@K@FREEZE
+934298924
+@K@NAME
+M_OAME43_M
+@K@INSCRIPT
+ERROR_MESSAGE:
+ERRONOUS_PDU
+BLOCK_ACK_PDU
+@K@CODE
+/* GETTING THE EVENT DESCRIPTOR */
+G9PB511_GET_MSG_BOUND_EV_DESCR_P
+(
+SID_GBNSVC,
+(SIZE(G9OC109_REPORTED_EVENT_STR_M)),
+TX_EVD_PTR
+);
+
+
+/* COMPOSING THE EVENT */
+/* FIRST THE DESCRIPTOR */
+TX_EVD_PTR->.EVENT_CMD:= G9PX040_SEND_MBC_C;
+TX_EVD_PTR->.EVENT_DESTINATION:= RXTX_HANDLE;
+TX_EVD_PTR->.KEYS.UBI_INDEX:= OAM_UBI_INDEX;
+TX_EVD_PTR->.BOUND.DATA_OFFSET:= 0;
+TX_EVD_PTR->.BOUND.DATA_LENGTH:= SIZE(G9OC109_REPORTED_EVENT_STR_M);
+
+/* NOW THE POOL-ELEMENT */
+/* INITIALIZATION OF THE POINTER WITH THE POOL-ELEMENT-START */
+OAM_MSG_PTR:= OAM_MSG_PTR_M (TX_EVD_PTR->.BOUND.PTR_TO_POOL_ELEMENT);
+
+/* COMPOSING THE MESSAGE */
+/* HANDLED OBJECT = AFFECTED INSTANCE, TYPE NSVC */
+OAM_MSG_PTR->.HANDLED_OBJECT.OBJECT_TYPE:= G9OC104_NSVC;
+OAM_MSG_PTR->.HANDLED_OBJECT.NSVC_ID:= EVD_PTR->.ADD_DATA(1); /*
+USED NSVCI (FROM ECI) */
+
+/* ERROR-CAUSE = ERRONEOUS_PDU */
+OAM_MSG_PTR->.ERROR_CAUSE:= G9OC108_ERRONEOUS_PDU;
+/* ADDITIONAL_PDU_INFO */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_PDU_TYPE:=
+ G9OC124_BLOCK_ACK_PDU;
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSEI:=
+ EVD_PTR->.KEYS.INT_ARR(0); /* AFFECTED NSEI (FROM PDU) */
+OAM_MSG_PTR->.ADDITIONAL_PDU_INFO.G9OC120_REPORTED_NSVC:=
+ EVD_PTR->.KEYS.INT_ARR(1); /* AFFECTED NSVCI (FROM PDU) */
+
+
+
+/* SENDING */
+G9PX503_POST_EVENT_P(TX_EVD_PTR);
+
+@K@FREEZE
+934297710
diff --git a/test/getlnhd.awk b/test/getlnhd.awk
new file mode 100644
index 0000000..f0f801b
--- /dev/null
+++ b/test/getlnhd.awk
@@ -0,0 +1,10 @@
+BEGIN { pipe = "cat <<EOF\n"
+ pipe = pipe "select * from user\n"
+ pipe = pipe " where Name = 'O\\'Donell'\n"
+ pipe = pipe "EOF\n"
+
+ while ((pipe | getline) > 0)
+ print
+
+ exit 0
+}
diff --git a/test/getlnhd.ok b/test/getlnhd.ok
new file mode 100644
index 0000000..d8cb453
--- /dev/null
+++ b/test/getlnhd.ok
@@ -0,0 +1,2 @@
+select * from user
+ where Name = 'O\'Donell'
diff --git a/test/getnr2tb.awk b/test/getnr2tb.awk
new file mode 100644
index 0000000..204acf4
--- /dev/null
+++ b/test/getnr2tb.awk
@@ -0,0 +1,111 @@
+#From vp@dmat.uevora.pt Thu Jun 18 09:10 EDT 1998
+#Received: from mescaline.gnu.org (we-refuse-to-spy-on-our-users@mescaline.gnu.org [158.121.106.21]) by cssun.mathcs.emory.edu (8.7.5/8.6.9-940818.01cssun) with ESMTP id JAA23649 for <arnold@mathcs.emory.edu>; Thu, 18 Jun 1998 09:10:54 -0400 (EDT)
+#Received: from khromeleque.dmat.uevora.pt by mescaline.gnu.org (8.8.5/8.6.12GNU) with ESMTP id JAA21732 for <arnold@gnu.ai.mit.edu>; Thu, 18 Jun 1998 09:11:19 -0400
+#Received: from khromeleque.dmat.uevora.pt (vp@localhost [127.0.0.1])
+# by khromeleque.dmat.uevora.pt (8.8.8/8.8.8/Debian/GNU) with ESMTP id OAA11817
+# for <arnold@gnu.ai.mit.edu>; Thu, 18 Jun 1998 14:13:57 +0100
+#Message-Id: <199806181313.OAA11817@khromeleque.dmat.uevora.pt>
+#To: arnold@gnu.org
+#Subject: concatenation bug in gawk 3.0.3
+#Date: Thu, 18 Jun 1998 14:13:57 +0200
+#From: Vasco Pedro <vp@dmat.uevora.pt>
+#Content-Type: text
+#Content-Length: 2285
+#Status: RO
+#
+#Hi,
+#
+#The gawk program '{print NR " " 10/NR}' will print:
+#
+#1 10
+#5 5
+#3 3.33333
+#2 2.5
+#2 2
+#1 1.66667
+#
+#instead of the correct:
+#
+#1 10
+#2 5
+#3 3.33333
+#4 2.5
+#5 2
+#6 1.66667
+#
+#You'll notice, on the incorrect output, that the first column is
+#the first digit of the second.
+#
+#I think the problem comes from the way builtin variables are handled.
+#Since the items to be concatenated are processed in reverse order and
+#the return value of tree_eval(``NR'') is a pointer to the value part
+#of `NR_node', the `unref()' of `NR_node' due to its second occurrence
+#will leave a dangling pointer in `strlist'. The reason that it doesn't
+#reuse the freed space with objects of the same type. (Using Electric
+#Fence with EF_PROTECT_FREE set confirms that freed space is being
+#accessed.)
+#
+#The enclosed patch (hack would be a better word to describe it) is
+#all I could come up with. With it installed, things seem to work ok,
+#but I doubt this is the correct way to do it. (If I treated the
+#case for `Node_field_spec' as the I did others, `make check' would
+#fail in several places.)
+#
+#Regards,
+#vasco
+#
+#*** eval.c~ Tue May 6 21:39:55 1997
+#--- eval.c Thu Jun 18 13:39:25 1998
+#***************
+#*** 685,697 ****
+# return func_call(tree->rnode, tree->lnode);
+#
+# /* unary operations */
+# case Node_NR:
+# case Node_FNR:
+# case Node_NF:
+# case Node_FIELDWIDTHS:
+# case Node_FS:
+# case Node_RS:
+#- case Node_field_spec:
+# case Node_subscript:
+# case Node_IGNORECASE:
+# case Node_OFS:
+#--- 685,700 ----
+# return func_call(tree->rnode, tree->lnode);
+#
+# /* unary operations */
+#+ case Node_field_spec:
+#+ lhs = get_lhs(tree, (Func_ptr *) NULL);
+#+ return *lhs;
+#+
+# case Node_NR:
+# case Node_FNR:
+# case Node_NF:
+# case Node_FIELDWIDTHS:
+# case Node_FS:
+# case Node_RS:
+# case Node_subscript:
+# case Node_IGNORECASE:
+# case Node_OFS:
+#***************
+#*** 699,705 ****
+# case Node_OFMT:
+# case Node_CONVFMT:
+# lhs = get_lhs(tree, (Func_ptr *) NULL);
+#! return *lhs;
+#
+# case Node_var_array:
+# fatal("attempt to use array `%s' in a scalar context",
+#--- 702,710 ----
+# case Node_OFMT:
+# case Node_CONVFMT:
+# lhs = get_lhs(tree, (Func_ptr *) NULL);
+#! r = dupnode(*lhs);
+#! r->flags |= TEMP;
+#! return r;
+#
+# case Node_var_array:
+# fatal("attempt to use array `%s' in a scalar context",
+#
+{ print NR " " 10/NR }
diff --git a/test/getnr2tb.in b/test/getnr2tb.in
new file mode 100644
index 0000000..f985857
--- /dev/null
+++ b/test/getnr2tb.in
@@ -0,0 +1,6 @@
+line 1
+line 2
+line 3
+line 4
+line 5
+line 6
diff --git a/test/getnr2tb.ok b/test/getnr2tb.ok
new file mode 100644
index 0000000..7b40e8d
--- /dev/null
+++ b/test/getnr2tb.ok
@@ -0,0 +1,6 @@
+1 10
+2 5
+3 3.33333
+4 2.5
+5 2
+6 1.66667
diff --git a/test/getnr2tm.awk b/test/getnr2tm.awk
new file mode 100644
index 0000000..dfe377a
--- /dev/null
+++ b/test/getnr2tm.awk
@@ -0,0 +1,75 @@
+#From dhw@gamgee.acad.emich.edu Sat Oct 31 22:54:07 1998
+#Return-Path: <dhw@gamgee.acad.emich.edu>
+#Received: from cssun.mathcs.emory.edu (cssun.mathcs.emory.edu [170.140.150.1])
+# by amx.netvision.net.il (8.9.0.Beta5/8.8.6) with ESMTP id HAA08891
+# for <arobbins@netvision.net.il>; Sat, 31 Oct 1998 07:14:07 +0200 (IST)
+#Received: from mescaline.gnu.org (we-refuse-to-spy-on-our-users@mescaline.gnu.org [158.121.106.21]) by cssun.mathcs.emory.edu (8.7.5/8.6.9-940818.01cssun) with ESMTP id AAA14947 for <arnold@mathcs.emory.edu>; Sat, 31 Oct 1998 00:14:32 -0500 (EST)
+#Received: from gamgee.acad.emich.edu (gamgee.acad.emich.edu [164.76.102.76])
+# by mescaline.gnu.org (8.9.1a/8.9.1) with SMTP id AAA20645
+# for <arnold@gnu.ai.mit.edu>; Sat, 31 Oct 1998 00:17:54 -0500
+#Received: by gamgee.acad.emich.edu (Smail3.1.29.1 #57)
+# id m0zZUKY-000IDSC; Sat, 31 Oct 98 00:16 CST
+#Message-Id: <m0zZUKY-000IDSC@gamgee.acad.emich.edu>
+#Date: Sat, 31 Oct 98 00:16 CST
+#From: dhw@gamgee.acad.emich.edu (David H. West)
+#To: bug-gnu-utils@gnu.org
+#Subject: gawk 3.0.3 bug report
+#Cc: arnold@gnu.org
+#X-UIDL: 7474b825cff989adf38f13883d84fdd7
+#Status: RO
+#
+#gawk version: 3.03
+#System used: Linux, kernel 2.0.28, libc 5.4.33, AMD K5PR133 (i586 clone)
+#Remark: There seems to be at least one bug shown by the demo below.
+# There may also be a Dark Corner involving the value of NR in an
+# END block, a topic on which the info file is silent. In gawk
+# 3.0.3, NR often seems to have the least-surprise value in an
+# END block, but sometimes it doesn't - see example below.
+#Problem descr: the log below shows a case where:
+# a) (this may be a red herring) the output of the gawk script
+# is different depending on whether its input file is named on
+# the command line or catted to stdin, without any use of the
+# legitimate means which could produce this effect.
+# b) NR is clearly getting clobbered; I have tried to simplify
+# the 19-line script "awkerr1" below, but seemingly unrelated
+# changes, like shortening constant strings which appear only in
+# print statements, or removing unexecuted or irrelevant code,
+# cause the clobbering to go away. Some previous (larger)
+# versions of this code would clobber NR also when reading from
+# stdin, but I thought you'd prefer a shorter example :-).
+#Reproduce-By: using the gawk script "awkerr1", the contents of
+# which appear in the transcript below as the output of the
+# command "cat awkerr1". Comments following # were added
+# to the transcript later as explanation.
+#---------------------------------------------- Script started on Fri
+#Oct 30 20:04:16 1998 chipmunk:/ram0# ls -l a1 awkerr1 -rw-r--r-- 1
+#root root 2 Oct 30 18:42 a1 -rwxr-xr-x 1 root root
+#389 Oct 30 19:54 awkerr1 chipmunk:/ram0# cat a1 #a1 contains
+#one printable char and a newline a chipmunk:/ram0# od -c xc a1
+#0000000 0a61
+# a \n
+#0000002 chipmunk:/ram0# cat a1 | awkerr1 #no surprises here
+#1 lines in 1 sec: 1 lines/sec; nlines=1 chipmunk:/ram0# awkerr1 a1 È
+#lines in 1 sec: 1 lines/sec; nlines=1 #?! first char is an uppercase
+#E-grave chipmunk:/ram0# awkerr1 a1 | od -N1 -xc 0000000 00c8
+# 310 \0
+#0000001 chipmunk:/ram0# cat awkerr1 #the apparent ^M's are not
+#actually in the file
+#!/usr/bin/awk -f
+function process(w) {
+ if(w in ws) {
+ printf " : found\n"; lc[p " " w]++; rc[w " " n]++; }
+ }
+BEGIN {IGNORECASE=1;
+ }
+/^/ {if(NR % 10 ==0)print "processing line " NR;
+ process($1); nlines++;
+ }
+END {p=w; w=n; n="";
+ if(w)process(w); t=1; print NR " lines in " t " sec: " NR+0 " lines/sec; nlines=" nlines;
+ }
+#chipmunk:/ram0# exit Script done on Fri Oct 30 20:07:31 1998
+#---------------------------------------------
+#
+#-David West dhw@gamgee.acad.emich.edu
+#
diff --git a/test/getnr2tm.in b/test/getnr2tm.in
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/test/getnr2tm.in
@@ -0,0 +1 @@
+a
diff --git a/test/getnr2tm.ok b/test/getnr2tm.ok
new file mode 100644
index 0000000..d63fca0
--- /dev/null
+++ b/test/getnr2tm.ok
@@ -0,0 +1 @@
+1 lines in 1 sec: 1 lines/sec; nlines=1
diff --git a/test/gnuops2.awk b/test/gnuops2.awk
new file mode 100644
index 0000000..1b0d4d7
--- /dev/null
+++ b/test/gnuops2.awk
@@ -0,0 +1,72 @@
+# From Servatius.Brandt@fujitsu-siemens.com Fri Dec 1 13:44:48 2000
+# Received: from mail.actcom.co.il
+# by localhost with POP3 (fetchmail-5.1.0)
+# for arnold@localhost (single-drop); Fri, 01 Dec 2000 13:44:48 +0200 (IST)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Fri Dec 1 13:44:10 2000)
+# X-From_: Servatius.Brandt@fujitsu-siemens.com Fri Dec 1 13:11:23 2000
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id NAA11033 for <arobbins@actcom.co.il>;
+# Fri, 1 Dec 2000 13:11:21 +0200 (EET)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+# Received: from billohost.com (10-209.196.35.dellhost.com [209.196.35.10] (may be forged))
+# by lmail.actcom.co.il (8.9.3/8.9.1) with ESMTP id NAA30286
+# for <arobbins@actcom.co.il>; Fri, 1 Dec 2000 13:12:25 +0200
+# Received: from fencepost.gnu.org (we-refuse-to-spy-on-our-users@fencepost.gnu.org [199.232.76.164])
+# by billohost.com (8.9.3/8.9.3) with ESMTP id GAA26074
+# for <arnold@skeeve.com>; Fri, 1 Dec 2000 06:09:08 -0500
+# Received: from energy.pdb.sbs.de ([192.109.2.19])
+# by fencepost.gnu.org with esmtp (Exim 3.16 #1 (Debian))
+# id 141o5z-0000RJ-00; Fri, 01 Dec 2000 06:11:16 -0500
+# Received: from trulli.pdb.fsc.net ([172.25.96.20])
+# by energy.pdb.sbs.de (8.9.3/8.9.3) with ESMTP id MAA32687;
+# Fri, 1 Dec 2000 12:11:13 +0100
+# Received: from pdbrd02e.pdb.fsc.net (pdbrd02e.pdb.fsc.net [172.25.96.15])
+# by trulli.pdb.fsc.net (8.9.3/8.9.3) with ESMTP id MAA27384;
+# Fri, 1 Dec 2000 12:11:13 +0100
+# Received: from Fujitsu-Siemens.com (pgtd1181.mch.fsc.net [172.25.126.152]) by pdbrd02e.pdb.fsc.net with SMTP (Microsoft Exchange Internet Mail Service Version 5.5.2650.21)
+# id XC2QLXS2; Fri, 1 Dec 2000 12:11:13 +0100
+# Message-ID: <3A2786CF.1000903@Fujitsu-Siemens.com>
+# Date: Fri, 01 Dec 2000 12:09:03 +0100
+# From: Servatius Brandt <Servatius.Brandt@fujitsu-siemens.com>
+# Organization: Fujitsu Siemens Computers
+# User-Agent: Mozilla/5.0 (Windows; U; Win95; en-US; m18) Gecko/20001108 Netscape6/6.0
+# X-Accept-Language: de, en
+# MIME-Version: 1.0
+# To: bug-gnu-utils@gnu.org
+# CC: arnold@gnu.org
+# Subject: Bug Report: \y, \B, \<, \> do not work with _
+# Content-Type: text/plain; charset=us-ascii; format=flowed
+# Content-Transfer-Encoding: 7bit
+# Status: R
+#
+# Hello,
+#
+# The \y, \B, \<, \> patterns do not regard _ as
+# word-constituent (unlike \w and \W, which do).
+#
+# Operating system: ReliantUNIX-Y 5.44 C2001 RM600 R10000
+# Version of gawk: 3.0.6
+# C-Compiler: Fujitsu Siemens Computers CDS++ V2.0C0004
+#
+# Test program:
+#
+#!/usr/local/bin/gawk -f
+
+BEGIN {
+ print match("X _abc Y", /\<_abc/) # bug
+ print match("X _abc Y", /\y_abc/) # bug
+ print match("X abc_ Y", /abc_\>/) # bug
+ print match("X abc_ Y", /abc_\y/) # bug
+ print match("X abc_def Y", /abc_\Bdef/) # bug
+
+ print match("X a_c Y", /a\wc/) # ok!
+ print match("X a.c Y", /a\Wc/) # ok!
+ exit
+}
+#
+#
+# Regards,
+# Servatius Brandt
+#
+#
diff --git a/test/gnuops2.ok b/test/gnuops2.ok
new file mode 100644
index 0000000..aa0ecae
--- /dev/null
+++ b/test/gnuops2.ok
@@ -0,0 +1,7 @@
+3
+3
+3
+3
+3
+3
+3
diff --git a/test/gnuops3.awk b/test/gnuops3.awk
new file mode 100644
index 0000000..bcd40aa
--- /dev/null
+++ b/test/gnuops3.awk
@@ -0,0 +1,14 @@
+# Mon Jan 31 09:57:30 IST 2005
+# test both dfa and regex matchers on \B
+# tests from Stepan Kasal, kasal@ucw.cz
+BEGIN {
+
+ print (" " ~ / \B /) # test dfa matcher
+ print ("a b" ~ /\B/)
+ print (" b" ~ /\B/)
+ print ("a " ~ /\B/)
+
+ a = " "
+ gsub(/\B/, "x", a) # test regex matcher
+ print a
+}
diff --git a/test/gnuops3.ok b/test/gnuops3.ok
new file mode 100644
index 0000000..27db307
--- /dev/null
+++ b/test/gnuops3.ok
@@ -0,0 +1,5 @@
+1
+0
+1
+1
+x x x
diff --git a/test/gnureops.awk b/test/gnureops.awk
new file mode 100644
index 0000000..15b9b84
--- /dev/null
+++ b/test/gnureops.awk
@@ -0,0 +1,45 @@
+# test the gnu regexp ops
+
+BEGIN {
+ if ("a rat is here" ~ /\yrat/) print "test 1 ok (\\y)"
+ else print "test 1 failed (\\y)"
+ if ("a rat is here" ~ /rat\y/) print "test 2 ok (\\y)"
+ else print "test 2 failed (\\y)"
+ if ("what a brat" !~ /\yrat/) print "test 3 ok (\\y)"
+ else print "test 3 failed (\\y)"
+
+ if ("in the crate" ~ /\Brat/) print "test 4 ok (\\B)"
+ else print "test 4 failed (\\B)"
+ if ("a rat" !~ /\Brat/) print "test 5 ok (\\B)"
+ else print "test 5 failed (\\B)"
+
+ if ("a word" ~ /\<word/) print "test 6 ok (\\<)"
+ else print "test 6 failed (\\<)"
+ if ("foreword" !~ /\<word/) print "test 7 ok (\\<)"
+ else print "test 7 failed (\\<)"
+
+ if ("a word" ~ /word\>/) print "test 8 ok (\\>)"
+ else print "test 8 failed (\\\\>)"
+ if ("wordy" !~ /word\>/) print "test 9 ok (\\>)"
+ else print "test 9 failed (\\>)"
+
+ if ("a" ~ /\w/) print "test 10 ok (\\w)"
+ else print "test 10 failed (\\\\w)"
+ if ("+" !~ /\w/) print "test 11 ok (\\w)"
+ else print "test 11 failed (\\w)"
+
+ if ("a" !~ /\W/) print "test 12 ok (\\W)"
+ else print "test 12 failed (\\W)"
+ if ("+" ~ /\W/) print "test 13 ok (\\W)"
+ else print "test 13 failed (\\W)"
+
+ if ("a" ~ /\`a/) print "test 14 ok (\\`)"
+ else print "test 14 failed (\\`)"
+ if ("b" !~ /\`a/) print "test 15 ok (\\`)"
+ else print "test 15 failed (\\`)"
+
+ if ("a" ~ /a\'/) print "test 16 ok (\\')"
+ else print "test 16 failed (\\')"
+ if ("b" !~ /a\'/) print "test 17 ok (\\')"
+ else print "test 17 failed (\\')"
+}
diff --git a/test/gnureops.ok b/test/gnureops.ok
new file mode 100644
index 0000000..0fb5f50
--- /dev/null
+++ b/test/gnureops.ok
@@ -0,0 +1,17 @@
+test 1 ok (\y)
+test 2 ok (\y)
+test 3 ok (\y)
+test 4 ok (\B)
+test 5 ok (\B)
+test 6 ok (\<)
+test 7 ok (\<)
+test 8 ok (\>)
+test 9 ok (\>)
+test 10 ok (\w)
+test 11 ok (\w)
+test 12 ok (\W)
+test 13 ok (\W)
+test 14 ok (\`)
+test 15 ok (\`)
+test 16 ok (\')
+test 17 ok (\')
diff --git a/test/gsubasgn.awk b/test/gsubasgn.awk
new file mode 100644
index 0000000..f0b7701
--- /dev/null
+++ b/test/gsubasgn.awk
@@ -0,0 +1,13 @@
+# tests for assigning to a function within that function
+
+#1 - should be bad
+function test1 (r) { gsub(r, "x", test1) }
+BEGIN { test1("") }
+
+#2 - should be bad
+function test2 () { gsub(/a/, "x", test2) }
+BEGIN { test2() }
+
+#3 - should be ok
+function test3 (r) { gsub(/a/, "x", r) }
+BEGIN { test3("") }
diff --git a/test/gsubasgn.ok b/test/gsubasgn.ok
new file mode 100644
index 0000000..8817c36
--- /dev/null
+++ b/test/gsubasgn.ok
@@ -0,0 +1,5 @@
+gawk: gsubasgn.awk:4: function test1 (r) { gsub(r, "x", test1) }
+gawk: gsubasgn.awk:4: ^ gsub third parameter is not a changeable object
+gawk: gsubasgn.awk:8: function test2 () { gsub(/a/, "x", test2) }
+gawk: gsubasgn.awk:8: ^ gsub third parameter is not a changeable object
+EXIT CODE: 1
diff --git a/test/gsubtest.awk b/test/gsubtest.awk
new file mode 100644
index 0000000..1d6fd1c
--- /dev/null
+++ b/test/gsubtest.awk
@@ -0,0 +1,9 @@
+BEGIN {
+ str = "abc"; print gsub("b+", "FOO", str), str
+ str = "abc"; print gsub("x*", "X", str), str
+ str = "abc"; print gsub("b*", "X", str), str
+ str = "abc"; print gsub("c", "X", str), str
+ str = "abc"; print gsub("c+", "X", str), str
+ str = "abc"; print gsub("x*$", "X", str), str
+ str = "abc"; print gsub("b|$", "X", str), str
+}
diff --git a/test/gsubtest.ok b/test/gsubtest.ok
new file mode 100644
index 0000000..f909d0d
--- /dev/null
+++ b/test/gsubtest.ok
@@ -0,0 +1,7 @@
+1 aFOOc
+4 XaXbXcX
+3 XaXcX
+1 abX
+1 abX
+1 abcX
+2 aXcX
diff --git a/test/gsubtst2.awk b/test/gsubtst2.awk
new file mode 100644
index 0000000..fafbf96
--- /dev/null
+++ b/test/gsubtst2.awk
@@ -0,0 +1,241 @@
+#From arnold Thu May 9 17:27:03 2002
+#Return-Path: <arnold@skeeve.com>
+#Received: (from arnold@localhost)
+# by skeeve.com (8.11.6/8.11.6) id g49ER3K27925
+# for arnold; Thu, 9 May 2002 17:27:03 +0300
+#Date: Thu, 9 May 2002 17:27:03 +0300
+#From: Aharon Robbins <arnold@skeeve.com>
+#Message-Id: <200205091427.g49ER3K27925@skeeve.com>
+#To: arnold@skeeve.com
+#Subject: fixme
+#X-SpamBouncer: 1.4 (10/07/01)
+#X-SBRule: Pattern Match (Other Patterns) (Score: 4850)
+#X-SBRule: Pattern Match (Spam Phone #) (Score: 0)
+#X-SBClass: Blocked
+#Status: O
+#
+#Path: ord-read.news.verio.net!dfw-artgen!iad-peer.news.verio.net!news.verio.net!fu-berlin.de!uni-berlin.de!host213-120-137-48.in-addr.btopenworld.COM!not-for-mail
+#From: laura@madonnaweb.com (laura fairhead)
+#Newsgroups: comp.lang.awk
+#Subject: bug in gawk3.1.0 regex code
+#Date: Wed, 08 May 2002 23:31:40 GMT
+#Organization: that'll be the daewooo :)
+#Lines: 211
+#Message-ID: <3cd9b0f7.29675926@NEWS.CIS.DFN.DE>
+#Reply-To: laura@madonnaweb.com
+#NNTP-Posting-Host: host213-120-137-48.in-addr.btopenworld.com (213.120.137.48)
+#X-Trace: fu-berlin.de 1020900891 18168286 213.120.137.48 (16 [53286])
+#X-Newsreader: Forte Free Agent 1.21/32.243
+#Xref: dfw-artgen comp.lang.awk:13059
+#
+#
+#I believe I've just found a bug in gawk3.1.0 implementation of
+#extended regular expressions. It seems to be down to the alternation
+#operator; when using an end anchor '$' as a subexpression in an
+#alternation and the entire matched RE is a nul-string it fails
+#to match the end of string, for example;
+#
+#gsub(/$|2/,"x")
+#print
+#
+#input = 12345
+#expected output = 1x345x
+#actual output = 1x345
+#
+#The start anchor '^' always works as expected;
+#
+#gsub(/^|2/,"x")
+#print
+#
+#input = 12345
+#expected output = x1x345
+#actual output = x1x345
+#
+#This was with POSIX compliance enabled althought that doesn't
+#effect the result.
+#
+#I checked on gawk3.0.6 and got exactly the same results however
+#gawk2.15.6 gives the expected results.
+#
+#I'm about to post a bug report about this into gnu.utils.bug
+#but I thought I'd post it here first in case anyone has
+#any input/comments/whatever ....
+#
+#Complete test results were as follows;
+#
+#input 12345
+#output gsub(/regex/,"x",input)
+#
+#regex output
+#(^) x12345
+#($) 12345x
+#(^)|($) x12345x
+#($)|(^) x12345x
+#(2) 1x345
+#(^)|2 x1x345
+#2|(^) x1x345
+#($)|2 1x345
+#2|($) 1x345
+#(2)|(^) x1x345
+#(^)|(2) x1x345
+#(2)|($) 1x345
+#($)|(2) 1x345
+#.((2)|(^)) x345
+#.((^)|(2)) x345
+#.((2)|($)) x34x
+#.(($)|(2)) x34x
+#x{0}((2)|(^)) x1x345
+#x{0}((^)|(2)) x1x345
+#x{0}((2)|($)) 1x345
+#x{0}(($)|(2)) 1x345
+#x*((2)|(^)) x1x345
+#x*((^)|(2)) x1x345
+#x*((2)|($)) 1x345
+#x*(($)|(2)) 1x345
+#
+#Here's the test program I used, a few of the cases use ERE {n[,[m]]}
+#operators so that will have to be commented out or have a check
+#added or something (should have put a conditional in I know... ;-)
+#
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+BEGIN{
+
+TESTSTR="12345"
+
+print "input "TESTSTR
+print "output gsub(/regex/,\"x\",input)"
+print ""
+
+print "regex output"
+$0=TESTSTR
+gsub(/(^)/,"x")
+print "(^) "$0
+
+$0=TESTSTR
+gsub(/($)/,"x")
+print "($) "$0
+
+$0=TESTSTR
+gsub(/(^)|($)/,"x")
+print "(^)|($) "$0
+
+$0=TESTSTR
+gsub(/($)|(^)/,"x")
+print "($)|(^) "$0
+
+$0=TESTSTR
+gsub(/2/,"x")
+print "(2) "$0
+
+$0=TESTSTR
+gsub(/(^)|2/,"x")
+print "(^)|2 "$0
+
+$0=TESTSTR
+gsub(/2|(^)/,"x")
+print "2|(^) "$0
+
+$0=TESTSTR
+gsub(/($)|2/,"x")
+print "($)|2 "$0
+
+$0=TESTSTR
+gsub(/2|($)/,"x")
+print "2|($) "$0
+
+$0=TESTSTR
+gsub(/(2)|(^)/,"x")
+print "(2)|(^) "$0
+
+$0=TESTSTR
+gsub(/(^)|(2)/,"x")
+print "(^)|(2) "$0
+
+$0=TESTSTR
+gsub(/(2)|($)/,"x")
+print "(2)|($) "$0
+
+$0=TESTSTR
+gsub(/($)|(2)/,"x")
+print "($)|(2) "$0
+
+$0=TESTSTR
+gsub(/.((2)|(^))/,"x")
+print ".((2)|(^)) "$0
+
+$0=TESTSTR
+gsub(/.((^)|(2))/,"x")
+print ".((^)|(2)) "$0
+
+$0=TESTSTR
+gsub(/.((2)|($))/,"x")
+print ".((2)|($)) "$0
+
+$0=TESTSTR
+gsub(/.(($)|(2))/,"x")
+print ".(($)|(2)) "$0
+
+# $0=TESTSTR
+# gsub(/x{0}((2)|(^))/,"x")
+# print "x{0}((2)|(^)) "$0
+#
+# $0=TESTSTR
+# gsub(/x{0}((^)|(2))/,"x")
+# print "x{0}((^)|(2)) "$0
+#
+# $0=TESTSTR
+# gsub(/x{0}((2)|($))/,"x")
+# print "x{0}((2)|($)) "$0
+#
+# $0=TESTSTR
+# gsub(/x{0}(($)|(2))/,"x")
+# print "x{0}(($)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x*((2)|(^))/,"x")
+print "x*((2)|(^)) "$0
+
+$0=TESTSTR
+gsub(/x*((^)|(2))/,"x")
+print "x*((^)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x*((2)|($))/,"x")
+print "x*((2)|($)) "$0
+
+$0=TESTSTR
+gsub(/x*(($)|(2))/,"x")
+print "x*(($)|(2)) "$0
+
+# $0=TESTSTR
+# gsub(/x{0}^/,"x")
+# print "x{0}^ "$0
+#
+# $0=TESTSTR
+# gsub(/x{0}$/,"x")
+# print "x{0}$ "$0
+#
+# $0=TESTSTR
+# gsub(/(x{0}^)|2/,"x")
+# print "(x{0}^)|2 "$0
+#
+# $0=TESTSTR
+# gsub(/(x{0}$)|2/,"x")
+# print "(x{0}$)|2 "$0
+
+
+}
+#
+#~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#byefrom
+#
+#--
+#laura fairhead # laura@madonnaweb.com http://lf.8k.com
+# # if you are bored crack my sig.
+#1F8B0808CABB793C0000666667002D8E410E83300C04EF91F2877D00CA138A7A
+#EAA98F30C494480157B623C4EF1B508FDED1CEFA9152A23DE35D661593C5318E
+#630C313CD701BE92E390563326EE17A3CA818F5266E4C2461547F1F5267659CA
+#8EE2092F76C329ED02CA430C5373CC62FF94BAC6210B36D9F9BC4AB53378D978
+#80F2978A1A6E5D6F5133B67B6113178DC1059526698AFE5C17A5187E7D930492
diff --git a/test/gsubtst2.ok b/test/gsubtst2.ok
new file mode 100644
index 0000000..a038528
--- /dev/null
+++ b/test/gsubtst2.ok
@@ -0,0 +1,25 @@
+input 12345
+output gsub(/regex/,"x",input)
+
+regex output
+(^) x12345
+($) 12345x
+(^)|($) x12345x
+($)|(^) x12345x
+(2) 1x345
+(^)|2 x1x345
+2|(^) x1x345
+($)|2 1x345x
+2|($) 1x345x
+(2)|(^) x1x345
+(^)|(2) x1x345
+(2)|($) 1x345x
+($)|(2) 1x345x
+.((2)|(^)) x345
+.((^)|(2)) x345
+.((2)|($)) x34x
+.(($)|(2)) x34x
+x*((2)|(^)) x1x345
+x*((^)|(2)) x1x345
+x*((2)|($)) 1x345x
+x*(($)|(2)) 1x345x
diff --git a/test/gsubtst3.awk b/test/gsubtst3.awk
new file mode 100644
index 0000000..1c4f4ea
--- /dev/null
+++ b/test/gsubtst3.awk
@@ -0,0 +1,290 @@
+# From laura_fairhead@talk21.com Fri May 10 11:24:41 2002
+# Return-Path: <laura_fairhead@talk21.com>
+# Received: from localhost (aahz [127.0.0.1])
+# by skeeve.com (8.11.2/8.11.2) with ESMTP id g4A8OdU01822
+# for <arnold@localhost>; Fri, 10 May 2002 11:24:40 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.7.4)
+# for arnold@localhost (single-drop); Fri, 10 May 2002 11:24:40 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Fri May 10 11:30:42 2002)
+# X-From_: laura_fairhead@talk21.com Fri May 10 05:39:57 2002
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id g4A2dpw26380 for <arobbins@actcom.co.il>;
+# Fri, 10 May 2002 05:39:52 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g4A2dxl10851
+# for <arobbins@actcom.co.il>; Fri, 10 May 2002 05:39:59 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.6/8.11.6) with ESMTP id g4A2dwN11097
+# for <arnold@skeeve.com>; Thu, 9 May 2002 22:39:58 -0400
+# Received: from [194.73.242.6] (helo=wmpmta04-app.mail-store.com)
+# by fencepost.gnu.org with smtp (Exim 3.34 #1 (Debian))
+# id 1760K4-0001QX-00
+# for <bug-gawk@gnu.org>; Thu, 09 May 2002 22:39:56 -0400
+# Received: from wmpmtavirtual ([10.216.84.15])
+# by wmpmta04-app.mail-store.com
+# (InterMail vM.5.01.02.00 201-253-122-103-101-20001108) with SMTP
+# id <20020510023921.EEW24107.wmpmta04-app.mail-store.com@wmpmtavirtual>
+# for <bug-gawk@gnu.org>; Fri, 10 May 2002 03:39:21 +0100
+# Received: from 213.1.102.243 by t21web05-lrs ([10.216.84.15]); Fri, 10 May 02 03:38:42 GMT+01:00
+# X-Mailer: talk21 v1.24 - http://talk21.btopenworld.com
+# From: laura_fairhead@talk21.com
+# To: bug-gawk@gnu.org
+# X-Talk21Ref: none
+# Date: Fri, 10 May 2002 03:38:42 GMT+01:00
+# Subject: bug in gawk 3.1.0 regex code
+# Mime-Version: 1.0
+# Content-type: multipart/mixed; boundary="--GgOuLpDpIyE--1020998322088--"
+# Message-Id: <20020510023921.EEW24107.wmpmta04-app.mail-store.com@wmpmtavirtual>
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# Multipart Message Boundary - attachment/bodypart follows:
+#
+#
+# ----GgOuLpDpIyE--1020998322088--
+# Content-Type: text/plain
+# Content-Transfer-Encoding: 7bit
+#
+#
+# I believe I've just found a bug in gawk3.1.0 implementation of
+# extended regular expressions. It seems to be down to the alternation
+# operator; when using an end anchor '$' as a subexpression in an
+# alternation and the entire matched RE is a nul-string it fails
+# to match the end of string, for example;
+#
+# gsub(/$|2/,"x")
+# print
+#
+# input = 12345
+# expected output = 1x345x
+# actual output = 1x345
+#
+# The start anchor '^' always works as expected;
+#
+# gsub(/^|2/,"x")
+# print
+#
+# input = 12345
+# expected output = x1x345
+# actual output = x1x345
+#
+# This was with POSIX compliance enabled althought that doesn't
+# effect the result.
+#
+# I checked on gawk3.0.6 and got exactly the same results however
+# gawk2.15.6 gives the expected results.
+#
+# All the follow platforms produced the same results;
+#
+# gawk3.0.6 / Win98 / i386
+# gawk3.1.0 / Win98 / i386
+# gawk3.0.5 / Linux2.2.16 / i386
+#
+# Complete test results were as follows;
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# regex input expected actual bug?
+# -------------------------------------------------------------
+# (^) 12345 x12345 x12345
+# ($) 12345 12345x 12345x
+# (^)|($) 12345 x12345x x12345x
+# ($)|(^) 12345 x12345x x12345x
+# 2 12345 1x345 1x345
+# (^)|2 12345 x1x345 x1x345
+# 2|(^) 12345 x1x345 x1x345
+# ($)|2 12345 1x345x 1x345 **BUG**
+# 2|($) 12345 1x345x 1x345 **BUG**
+# (2)|(^) 12345 x1x345 x1x345
+# (^)|(2) 12345 x1x345 x1x345
+# (2)|($) 12345 1x345x 1x345 **BUG**
+# ($)|(2) 12345 1x345x 1x345 **BUG**
+# ((2)|(^)). 12345 xx45 xx45
+# ((^)|(2)). 12345 xx45 xx45
+# .((2)|($)) 12345 x34x x34x
+# .(($)|(2)) 12345 x34x x34x
+# (^)|6 12345 x12345 x12345
+# 6|(^) 12345 x12345 x12345
+# ($)|6 12345 12345x 12345x
+# 6|($) 12345 12345x 12345x
+# 2|6|(^) 12345 x1x345 x1x345
+# 2|(^)|6 12345 x1x345 x1x345
+# 6|2|(^) 12345 x1x345 x1x345
+# 6|(^)|2 12345 x1x345 x1x345
+# (^)|6|2 12345 x1x345 x1x345
+# (^)|2|6 12345 x1x345 x1x345
+# 2|6|($) 12345 1x345x 1x345 **BUG**
+# 2|($)|6 12345 1x345x 1x345 **BUG**
+# 6|2|($) 12345 1x345x 1x345 **BUG**
+# 6|($)|2 12345 1x345x 1x345 **BUG**
+# ($)|6|2 12345 1x345x 1x345 **BUG**
+# ($)|2|6 12345 1x345x 1x345 **BUG**
+# 2|4|(^) 12345 x1x3x5 x1x3x5
+# 2|(^)|4 12345 x1x3x5 x1x3x5
+# 4|2|(^) 12345 x1x3x5 x1x3x5
+# 4|(^)|2 12345 x1x3x5 x1x3x5
+# (^)|4|2 12345 x1x3x5 x1x3x5
+# (^)|2|4 12345 x1x3x5 x1x3x5
+# 2|4|($) 12345 1x3x5x 1x3x5 **BUG**
+# 2|($)|4 12345 1x3x5x 1x3x5 **BUG**
+# 4|2|($) 12345 1x3x5x 1x3x5 **BUG**
+# 4|($)|2 12345 1x3x5x 1x3x5 **BUG**
+# ($)|4|2 12345 1x3x5x 1x3x5 **BUG**
+# ($)|2|4 12345 1x3x5x 1x3x5 **BUG**
+# x{0}((2)|(^)) 12345 x1x345 x1x345
+# x{0}((^)|(2)) 12345 x1x345 x1x345
+# x{0}((2)|($)) 12345 1x345x 1x345 **BUG**
+# x{0}(($)|(2)) 12345 1x345x 1x345 **BUG**
+# x*((2)|(^)) 12345 x1x345 x1x345
+# x*((^)|(2)) 12345 x1x345 x1x345
+# x*((2)|($)) 12345 1x345x 1x345 **BUG**
+# x*(($)|(2)) 12345 1x345x 1x345 **BUG**
+# x{0}^ 12345 x12345 x12345
+# x{0}$ 12345 12345x 12345x
+# (x{0}^)|2 12345 x1x345 x1x345
+# (x{0}$)|2 12345 1x345x 1x345 **BUG**
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+#
+# Here's the test program I used, a few of the cases use ERE {n[,[m]]}
+# operators so need '-W posix', (although the same results minus
+# those tests came out without POSIX compliance enabled)
+#
+# [ Invocation was 'gawk -W posix -f tregex.awk' ]
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# tregex.awk
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+BEGIN{
+print _=sprintf("%-20s%-10s%-10s%-10s%-10s\n","regex","input","expected","actual","bug?")
+OFS="-"
+$(length(_)+1)=""
+print $0
+
+while(getline <ARGV[1]) # ADR: was testre.dat
+{
+RE=$1;IN=$2;OUT=$3
+$0=IN
+gsub(RE,"x")
+printf "%-20s%-10s%-10s%-10s%-10s\n",RE,IN,OUT,$0,$0==OUT?"":"**BUG**"
+}
+}
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# This is the test data file used;
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# testre.dat
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+# (^) 12345 x12345
+# ($) 12345 12345x
+# (^)|($) 12345 x12345x
+# ($)|(^) 12345 x12345x
+# 2 12345 1x345
+# (^)|2 12345 x1x345
+# 2|(^) 12345 x1x345
+# ($)|2 12345 1x345x
+# 2|($) 12345 1x345x
+# (2)|(^) 12345 x1x345
+# (^)|(2) 12345 x1x345
+# (2)|($) 12345 1x345x
+# ($)|(2) 12345 1x345x
+# ((2)|(^)). 12345 xx45
+# ((^)|(2)). 12345 xx45
+# .((2)|($)) 12345 x34x
+# .(($)|(2)) 12345 x34x
+# (^)|6 12345 x12345
+# 6|(^) 12345 x12345
+# ($)|6 12345 12345x
+# 6|($) 12345 12345x
+# 2|6|(^) 12345 x1x345
+# 2|(^)|6 12345 x1x345
+# 6|2|(^) 12345 x1x345
+# 6|(^)|2 12345 x1x345
+# (^)|6|2 12345 x1x345
+# (^)|2|6 12345 x1x345
+# 2|6|($) 12345 1x345x
+# 2|($)|6 12345 1x345x
+# 6|2|($) 12345 1x345x
+# 6|($)|2 12345 1x345x
+# ($)|6|2 12345 1x345x
+# ($)|2|6 12345 1x345x
+# 2|4|(^) 12345 x1x3x5
+# 2|(^)|4 12345 x1x3x5
+# 4|2|(^) 12345 x1x3x5
+# 4|(^)|2 12345 x1x3x5
+# (^)|4|2 12345 x1x3x5
+# (^)|2|4 12345 x1x3x5
+# 2|4|($) 12345 1x3x5x
+# 2|($)|4 12345 1x3x5x
+# 4|2|($) 12345 1x3x5x
+# 4|($)|2 12345 1x3x5x
+# ($)|4|2 12345 1x3x5x
+# ($)|2|4 12345 1x3x5x
+# x{0}((2)|(^)) 12345 x1x345
+# x{0}((^)|(2)) 12345 x1x345
+# x{0}((2)|($)) 12345 1x345x
+# x{0}(($)|(2)) 12345 1x345x
+# x*((2)|(^)) 12345 x1x345
+# x*((^)|(2)) 12345 x1x345
+# x*((2)|($)) 12345 1x345x
+# x*(($)|(2)) 12345 1x345x
+# x{0}^ 12345 x12345
+# x{0}$ 12345 12345x
+# (x{0}^)|2 12345 x1x345
+# (x{0}$)|2 12345 1x345x
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# I've attached a full copy of this e-mail in ZIP format
+# in case of e-mail transport errors corrupting the data.
+#
+# I've posted the same bug report to gnu.utils.bug and
+# it's being discussed in this thread on comp.lang.awk;
+#
+# From: laura@madonnaweb.com (laura fairhead)
+# Newsgroups: comp.lang.awk
+# Subject: bug in gawk3.1.0 regex code
+# Date: Wed, 08 May 2002 23:31:40 GMT
+# Message-ID: <3cd9b0f7.29675926@NEWS.CIS.DFN.DE>
+#
+#
+# byefrom
+#
+# Laura Fairhead
+#
+#
+#
+#
+# --------------------
+# talk21 your FREE portable and private address on the net at http://www.talk21.com
+# ----GgOuLpDpIyE--1020998322088--
+# Content-Type: : application/zip;; Name="COPY.ZIP"
+# Content-Transfer-Encoding: base64
+# Content-Disposition: attachment; filename="COPY.ZIP"
+#
+# UEsDBBQAAAAIALoaqiyj8d/bjwMAAKsaAAADAAAARklMrVjfa+JAEH4P5H8ISwrRU9EYfbheKBR6
+# xRcLvevbYbFtzsqJlBrpQr3722+zMWZ31pk1MaG0Q/m+nR87O9kvruM6/5p4XOc9WSTc05/l
+# +m2bSivhb8lzmrx43vw53c5X2f+etourHOc63XMe1wlmLQ8+g3AYjaTFD2ZplY9g+xRbWly3
+# NPastYMrQN9cs4DvHYz+dHbomY8SOTctGDlcQfXND1Uz6cK3EXcVdpY37ltSuB55u339cNtu
+# F76NPTudHYR0zS2RZ/sd1maHVLdYI/cp31b2PvFW72jkvIi2tLTI94nXY/eCfeZK8Ap7GO1b
+# u7QAO8+8FjsLfFx7OowtfW6dLYRv22wZ031uYYc7M/aK5xvEfjp7vDPnQxW2OZuqndDxWeyw
+# dt6y5rXPt5xrqG8bW9a8tm8ZN1q1UyYTXvNT2HjN7VWLLL3GR7pl9nlUkx1Z+5xm2/qcYsu4
+# z2KHtfOWNad6jR92jGN9jvm2sSNbn1vYlj4n2TLus9h4zW1s/tn/e3iHV55MOXumvUarsvVX
+# +OknNGfrr/AK7DbMulLkbZh1VTa8uFSLHF5cqlVt5tW9eWRsH2VbVY10rp+TCu9Q6Rxj2/Ju
+# SJE2KG5TqW57848/jS15fXM7mX66ztv7cp16j/FGGr8DdtEN+5uL7sD49WvNOkwGIv5KaS3+
+# FsJamLmyFkYmrFnLde6+/4hZl7mOH6yS9SJ9DR5bXwatmLHCrd/PivTxulwlwSJJV8t14n1j
+# abIRCfde5mm2iojx/ib2B5eTaeyHl3cPP2N/KNbsx5Op6yw226fg/qbDeIbNc/DoHAR6Mu2I
+# dTp+X/zEsTCvGPvK9j0govsrfxqqdJN9cKhMY0vilwdPOebmRwqIy4+x+Tni+Hrc/PKAAnGZ
+# 7pXH2fyaYK6X4+B9CcPBt/RRt9z8FoDhoOpH/QJ9j+KAkkf9As2O4oA6N/xy6RWo8OMoqLYN
+# 1DDipqo+joIqEGtQqDWJRibXK9oO6igMB1Uu2XeKZwwHlSuO0zue6idVGVE4VQPheeiVIc8F
+# sV6Bg6oRx+knkup3Kl8VR+Vb5qGru2N14SNTx2E4qNhwnH1/+chUYRROvfvjeejK6khdeLm/
+# +HoFDqolHGfdX17sG5WviqPyLXBQ1WB9D/ULjSvHH9ZXUJOgOKA+UL9AZ1A4dThTftXxTOWh
+# qgRs7kI9gF4gwM0fnVfgjo/F19A96T9QSwECFAAUAAAACAC6Gqoso/Hf248DAACrGgAAAwAA
+# AAAAAAABACAAAAAAAAAARklMUEsFBgAAAAABAAEAMQAAALADAAAAAA==
+# ----GgOuLpDpIyE--1020998322088----
+#
+#
+#
diff --git a/test/gsubtst3.in b/test/gsubtst3.in
new file mode 100644
index 0000000..2dcf75a
--- /dev/null
+++ b/test/gsubtst3.in
@@ -0,0 +1,57 @@
+(^) 12345 x12345
+($) 12345 12345x
+(^)|($) 12345 x12345x
+($)|(^) 12345 x12345x
+2 12345 1x345
+(^)|2 12345 x1x345
+2|(^) 12345 x1x345
+($)|2 12345 1x345x
+2|($) 12345 1x345x
+(2)|(^) 12345 x1x345
+(^)|(2) 12345 x1x345
+(2)|($) 12345 1x345x
+($)|(2) 12345 1x345x
+((2)|(^)). 12345 xx45
+((^)|(2)). 12345 xx45
+.((2)|($)) 12345 x34x
+.(($)|(2)) 12345 x34x
+(^)|6 12345 x12345
+6|(^) 12345 x12345
+($)|6 12345 12345x
+6|($) 12345 12345x
+2|6|(^) 12345 x1x345
+2|(^)|6 12345 x1x345
+6|2|(^) 12345 x1x345
+6|(^)|2 12345 x1x345
+(^)|6|2 12345 x1x345
+(^)|2|6 12345 x1x345
+2|6|($) 12345 1x345x
+2|($)|6 12345 1x345x
+6|2|($) 12345 1x345x
+6|($)|2 12345 1x345x
+($)|6|2 12345 1x345x
+($)|2|6 12345 1x345x
+2|4|(^) 12345 x1x3x5
+2|(^)|4 12345 x1x3x5
+4|2|(^) 12345 x1x3x5
+4|(^)|2 12345 x1x3x5
+(^)|4|2 12345 x1x3x5
+(^)|2|4 12345 x1x3x5
+2|4|($) 12345 1x3x5x
+2|($)|4 12345 1x3x5x
+4|2|($) 12345 1x3x5x
+4|($)|2 12345 1x3x5x
+($)|4|2 12345 1x3x5x
+($)|2|4 12345 1x3x5x
+x{0}((2)|(^)) 12345 x1x345
+x{0}((^)|(2)) 12345 x1x345
+x{0}((2)|($)) 12345 1x345x
+x{0}(($)|(2)) 12345 1x345x
+x*((2)|(^)) 12345 x1x345
+x*((^)|(2)) 12345 x1x345
+x*((2)|($)) 12345 1x345x
+x*(($)|(2)) 12345 1x345x
+x{0}^ 12345 x12345
+x{0}$ 12345 12345x
+(x{0}^)|2 12345 x1x345
+(x{0}$)|2 12345 1x345x
diff --git a/test/gsubtst3.ok b/test/gsubtst3.ok
new file mode 100644
index 0000000..190a20a
--- /dev/null
+++ b/test/gsubtst3.ok
@@ -0,0 +1,60 @@
+regex input expected actual bug?
+
+-------------------------------------------------------------
+(^) 12345 x12345 x12345
+($) 12345 12345x 12345x
+(^)|($) 12345 x12345x x12345x
+($)|(^) 12345 x12345x x12345x
+2 12345 1x345 1x345
+(^)|2 12345 x1x345 x1x345
+2|(^) 12345 x1x345 x1x345
+($)|2 12345 1x345x 1x345x
+2|($) 12345 1x345x 1x345x
+(2)|(^) 12345 x1x345 x1x345
+(^)|(2) 12345 x1x345 x1x345
+(2)|($) 12345 1x345x 1x345x
+($)|(2) 12345 1x345x 1x345x
+((2)|(^)). 12345 xx45 xx45
+((^)|(2)). 12345 xx45 xx45
+.((2)|($)) 12345 x34x x34x
+.(($)|(2)) 12345 x34x x34x
+(^)|6 12345 x12345 x12345
+6|(^) 12345 x12345 x12345
+($)|6 12345 12345x 12345x
+6|($) 12345 12345x 12345x
+2|6|(^) 12345 x1x345 x1x345
+2|(^)|6 12345 x1x345 x1x345
+6|2|(^) 12345 x1x345 x1x345
+6|(^)|2 12345 x1x345 x1x345
+(^)|6|2 12345 x1x345 x1x345
+(^)|2|6 12345 x1x345 x1x345
+2|6|($) 12345 1x345x 1x345x
+2|($)|6 12345 1x345x 1x345x
+6|2|($) 12345 1x345x 1x345x
+6|($)|2 12345 1x345x 1x345x
+($)|6|2 12345 1x345x 1x345x
+($)|2|6 12345 1x345x 1x345x
+2|4|(^) 12345 x1x3x5 x1x3x5
+2|(^)|4 12345 x1x3x5 x1x3x5
+4|2|(^) 12345 x1x3x5 x1x3x5
+4|(^)|2 12345 x1x3x5 x1x3x5
+(^)|4|2 12345 x1x3x5 x1x3x5
+(^)|2|4 12345 x1x3x5 x1x3x5
+2|4|($) 12345 1x3x5x 1x3x5x
+2|($)|4 12345 1x3x5x 1x3x5x
+4|2|($) 12345 1x3x5x 1x3x5x
+4|($)|2 12345 1x3x5x 1x3x5x
+($)|4|2 12345 1x3x5x 1x3x5x
+($)|2|4 12345 1x3x5x 1x3x5x
+x{0}((2)|(^)) 12345 x1x345 x1x345
+x{0}((^)|(2)) 12345 x1x345 x1x345
+x{0}((2)|($)) 12345 1x345x 1x345x
+x{0}(($)|(2)) 12345 1x345x 1x345x
+x*((2)|(^)) 12345 x1x345 x1x345
+x*((^)|(2)) 12345 x1x345 x1x345
+x*((2)|($)) 12345 1x345x 1x345x
+x*(($)|(2)) 12345 1x345x 1x345x
+x{0}^ 12345 x12345 x12345
+x{0}$ 12345 12345x 12345x
+(x{0}^)|2 12345 x1x345 x1x345
+(x{0}$)|2 12345 1x345x 1x345x
diff --git a/test/gsubtst4.awk b/test/gsubtst4.awk
new file mode 100644
index 0000000..48b8413
--- /dev/null
+++ b/test/gsubtst4.awk
@@ -0,0 +1,242 @@
+# From arnold Thu May 9 17:27:03 2002
+# Return-Path: <arnold@skeeve.com>
+# Received: (from arnold@localhost)
+# by skeeve.com (8.11.6/8.11.6) id g49ER3K27925
+# for arnold; Thu, 9 May 2002 17:27:03 +0300
+# Date: Thu, 9 May 2002 17:27:03 +0300
+# From: Aharon Robbins <arnold@skeeve.com>
+# Message-Id: <200205091427.g49ER3K27925@skeeve.com>
+# To: arnold@skeeve.com
+# Subject: fixme
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBRule: Pattern Match (Other Patterns) (Score: 4850)
+# X-SBRule: Pattern Match (Spam Phone #) (Score: 0)
+# X-SBClass: Blocked
+# Status: RO
+#
+# Path: ord-read.news.verio.net!dfw-artgen!iad-peer.news.verio.net!news.verio.net!fu-berlin.de!uni-berlin.de!host213-120-137-48.in-addr.btopenworld.COM!not-for-mail
+# From: laura@madonnaweb.com (laura fairhead)
+# Newsgroups: comp.lang.awk
+# Subject: bug in gawk3.1.0 regex code
+# Date: Wed, 08 May 2002 23:31:40 GMT
+# Organization: that'll be the daewooo :)
+# Lines: 211
+# Message-ID: <3cd9b0f7.29675926@NEWS.CIS.DFN.DE>
+# Reply-To: laura@madonnaweb.com
+# NNTP-Posting-Host: host213-120-137-48.in-addr.btopenworld.com (213.120.137.48)
+# X-Trace: fu-berlin.de 1020900891 18168286 213.120.137.48 (16 [53286])
+# X-Newsreader: Forte Free Agent 1.21/32.243
+# Xref: dfw-artgen comp.lang.awk:13059
+#
+#
+# I believe I've just found a bug in gawk3.1.0 implementation of
+# extended regular expressions. It seems to be down to the alternation
+# operator; when using an end anchor '$' as a subexpression in an
+# alternation and the entire matched RE is a nul-string it fails
+# to match the end of string, for example;
+#
+# gsub(/$|2/,"x")
+# print
+#
+# input = 12345
+# expected output = 1x345x
+# actual output = 1x345
+#
+# The start anchor '^' always works as expected;
+#
+# gsub(/^|2/,"x")
+# print
+#
+# input = 12345
+# expected output = x1x345
+# actual output = x1x345
+#
+# This was with POSIX compliance enabled althought that doesn't
+# effect the result.
+#
+# I checked on gawk3.0.6 and got exactly the same results however
+# gawk2.15.6 gives the expected results.
+#
+# I'm about to post a bug report about this into gnu.utils.bug
+# but I thought I'd post it here first in case anyone has
+# any input/comments/whatever ....
+#
+# Complete test results were as follows;
+#
+# input 12345
+# output gsub(/regex/,"x",input)
+#
+# regex output
+# (^) x12345
+# ($) 12345x
+# (^)|($) x12345x
+# ($)|(^) x12345x
+# (2) 1x345
+# (^)|2 x1x345
+# 2|(^) x1x345
+# ($)|2 1x345
+# 2|($) 1x345
+# (2)|(^) x1x345
+# (^)|(2) x1x345
+# (2)|($) 1x345
+# ($)|(2) 1x345
+# .((2)|(^)) x345
+# .((^)|(2)) x345
+# .((2)|($)) x34x
+# .(($)|(2)) x34x
+# x{0}((2)|(^)) x1x345
+# x{0}((^)|(2)) x1x345
+# x{0}((2)|($)) 1x345
+# x{0}(($)|(2)) 1x345
+# x*((2)|(^)) x1x345
+# x*((^)|(2)) x1x345
+# x*((2)|($)) 1x345
+# x*(($)|(2)) 1x345
+#
+# Here's the test program I used, a few of the cases use ERE {n[,[m]]}
+# operators so that will have to be commented out or have a check
+# added or something (should have put a conditional in I know... ;-)
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+BEGIN{
+
+TESTSTR="12345"
+
+print "input "TESTSTR
+print "output gsub(/regex/,\"x\",input)"
+print ""
+
+print "regex output"
+$0=TESTSTR
+gsub(/(^)/,"x")
+print "(^) "$0
+
+$0=TESTSTR
+gsub(/($)/,"x")
+print "($) "$0
+
+$0=TESTSTR
+gsub(/(^)|($)/,"x")
+print "(^)|($) "$0
+
+$0=TESTSTR
+gsub(/($)|(^)/,"x")
+print "($)|(^) "$0
+
+$0=TESTSTR
+gsub(/2/,"x")
+print "(2) "$0
+
+$0=TESTSTR
+gsub(/(^)|2/,"x")
+print "(^)|2 "$0
+
+$0=TESTSTR
+gsub(/2|(^)/,"x")
+print "2|(^) "$0
+
+$0=TESTSTR
+gsub(/($)|2/,"x")
+print "($)|2 "$0
+
+$0=TESTSTR
+gsub(/2|($)/,"x")
+print "2|($) "$0
+
+$0=TESTSTR
+gsub(/(2)|(^)/,"x")
+print "(2)|(^) "$0
+
+$0=TESTSTR
+gsub(/(^)|(2)/,"x")
+print "(^)|(2) "$0
+
+$0=TESTSTR
+gsub(/(2)|($)/,"x")
+print "(2)|($) "$0
+
+$0=TESTSTR
+gsub(/($)|(2)/,"x")
+print "($)|(2) "$0
+
+$0=TESTSTR
+gsub(/.((2)|(^))/,"x")
+print ".((2)|(^)) "$0
+
+$0=TESTSTR
+gsub(/.((^)|(2))/,"x")
+print ".((^)|(2)) "$0
+
+$0=TESTSTR
+gsub(/.((2)|($))/,"x")
+print ".((2)|($)) "$0
+
+$0=TESTSTR
+gsub(/.(($)|(2))/,"x")
+print ".(($)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x{0}((2)|(^))/,"x")
+print "x{0}((2)|(^)) "$0
+
+$0=TESTSTR
+gsub(/x{0}((^)|(2))/,"x")
+print "x{0}((^)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x{0}((2)|($))/,"x")
+print "x{0}((2)|($)) "$0
+
+$0=TESTSTR
+gsub(/x{0}(($)|(2))/,"x")
+print "x{0}(($)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x*((2)|(^))/,"x")
+print "x*((2)|(^)) "$0
+
+$0=TESTSTR
+gsub(/x*((^)|(2))/,"x")
+print "x*((^)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x*((2)|($))/,"x")
+print "x*((2)|($)) "$0
+
+$0=TESTSTR
+gsub(/x*(($)|(2))/,"x")
+print "x*(($)|(2)) "$0
+
+$0=TESTSTR
+gsub(/x{0}^/,"x")
+print "x{0}^ "$0
+
+$0=TESTSTR
+gsub(/x{0}$/,"x")
+print "x{0}$ "$0
+
+$0=TESTSTR
+gsub(/(x{0}^)|2/,"x")
+print "(x{0}^)|2 "$0
+
+$0=TESTSTR
+gsub(/(x{0}$)|2/,"x")
+print "(x{0}$)|2 "$0
+
+
+}
+#
+# ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+#
+# byefrom
+#
+# --
+# laura fairhead # laura@madonnaweb.com http://lf.8k.com
+# # if you are bored crack my sig.
+# 1F8B0808CABB793C0000666667002D8E410E83300C04EF91F2877D00CA138A7A
+# EAA98F30C494480157B623C4EF1B508FDED1CEFA9152A23DE35D661593C5318E
+# 630C313CD701BE92E390563326EE17A3CA818F5266E4C2461547F1F5267659CA
+# 8EE2092F76C329ED02CA430C5373CC62FF94BAC6210B36D9F9BC4AB53378D978
+# 80F2978A1A6E5D6F5133B67B6113178DC1059526698AFE5C17A5187E7D930492
+#
diff --git a/test/gsubtst4.ok b/test/gsubtst4.ok
new file mode 100644
index 0000000..6d0e490
--- /dev/null
+++ b/test/gsubtst4.ok
@@ -0,0 +1,33 @@
+input 12345
+output gsub(/regex/,"x",input)
+
+regex output
+(^) x12345
+($) 12345x
+(^)|($) x12345x
+($)|(^) x12345x
+(2) 1x345
+(^)|2 x1x345
+2|(^) x1x345
+($)|2 1x345x
+2|($) 1x345x
+(2)|(^) x1x345
+(^)|(2) x1x345
+(2)|($) 1x345x
+($)|(2) 1x345x
+.((2)|(^)) x345
+.((^)|(2)) x345
+.((2)|($)) x34x
+.(($)|(2)) x34x
+x{0}((2)|(^)) 12345
+x{0}((^)|(2)) 12345
+x{0}((2)|($)) 12345
+x{0}(($)|(2)) 12345
+x*((2)|(^)) x1x345
+x*((^)|(2)) x1x345
+x*((2)|($)) 1x345x
+x*(($)|(2)) 1x345x
+x{0}^ 12345
+x{0}$ 12345
+(x{0}^)|2 1x345
+(x{0}$)|2 1x345
diff --git a/test/gsubtst5.awk b/test/gsubtst5.awk
new file mode 100644
index 0000000..4bef854
--- /dev/null
+++ b/test/gsubtst5.awk
@@ -0,0 +1,97 @@
+# From jose@monkey.org Thu Jun 5 11:48:35 2003
+# Return-Path: <jose@monkey.org>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h558eVvA012655
+# for <arnold@localhost>; Thu, 5 Jun 2003 11:48:35 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Thu, 05 Jun 2003 11:48:35 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Jun 5 11:47:59 2003)
+# X-From_: jose@monkey.org Thu Jun 5 07:14:45 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h554EdY08108 for <arobbins@actcom.co.il>;
+# Thu, 5 Jun 2003 07:14:41 +0300 (EET DST)
+# (rfc931-sender: smtp.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h554G3To008304
+# for <arobbins@actcom.co.il>; Thu, 5 Jun 2003 07:16:05 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7/8.11.6) with ESMTP id h554Ean08172
+# for <arnold@skeeve.com>; Thu, 5 Jun 2003 00:14:36 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.20)
+# id 19Nm96-0001xE-1i
+# for arnold@gnu.ai.mit.edu; Thu, 05 Jun 2003 00:14:36 -0400
+# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20)
+# id 19Nm8x-0005ge-Dz
+# for arnold@gnu.ai.mit.edu; Thu, 05 Jun 2003 00:14:28 -0400
+# Received: from naughty.monkey.org ([66.93.9.164])
+# by monty-python.gnu.org with esmtp (Exim 4.20)
+# id 19Nm8w-0005VM-Ko
+# for arnold@gnu.ai.mit.edu; Thu, 05 Jun 2003 00:14:26 -0400
+# Received: by naughty.monkey.org (Postfix, from userid 1203)
+# id C15511BA97B; Thu, 5 Jun 2003 00:14:19 -0400 (EDT)
+# Received: from localhost (localhost [127.0.0.1])
+# by naughty.monkey.org (Postfix) with ESMTP
+# id BF9821BA969; Thu, 5 Jun 2003 00:14:19 -0400 (EDT)
+# Date: Thu, 5 Jun 2003 00:14:19 -0400 (EDT)
+# From: Jose Nazario <jose@monkey.org>
+# To: bug-gnu-utils@prep.ai.mit.edu, arnold@gnu.ai.mit.edu,
+# netbsd-bugs@netbsd.org
+# Subject: bug in gawk/gsub() (not present in nawk)
+# Message-ID: <Pine.BSO.4.51.0306050007160.31577@naughty.monkey.org>
+# MIME-Version: 1.0
+# Content-Type: TEXT/PLAIN; charset=US-ASCII
+# X-Spam-Status: No, hits=-1.2 required=5.0
+# tests=SPAM_PHRASE_00_01,USER_AGENT_PINE
+# version=2.41
+# X-Spam-Level:
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: R
+#
+# while playing with some tools in data massaging, i had to migrate from an
+# openbsd/nawk system to a netbsd/gawk system. i found the folllowing
+# behavior, which seems to be a bug.
+#
+# the following gsub() pattern has a strange effect under gawk which is not
+# visible in nawk (at least as compiled on openbsd). the intention is to
+# take a string like "This Is a Title: My Title?" and turn it into a
+# normalized string: "ThisIsaTitleMyTitle". to do this, i wrote the
+# following gross gsub line in an awk script:
+#
+# gsub(/[\ \"-\/\\:;\[\]\@\?\.\,\$]/, "", $2)
+# print $2
+#
+# in gawk, as found in netbsd-macppc/1.5.2, this will drop the first letter
+# of every word. the resulting string will be "hissitleyitle", while in nawk
+# as built on openbsd-3.3 this will get it correct.
+#
+# any insights? the inconsistency with this relatively naive pattern seems a
+# bit odd. (i would up installing nawk built from openbsd sources.)
+#
+# thanks. sorry i didn't send a better bug report, netbsd folks, i'm not
+# much of a netbsd user, and i dont have send-pr set up. yes, this is a
+# slightly older version of netbsd and gawk:
+#
+# $ uname -a
+# NetBSD entropy 1.5.2 NetBSD 1.5.2 (GENERIC) #0: Sun Feb 10 02:00:04 EST
+# 2002 jose@entropy:/usr/src/sys/arch/macppc/compile/GENERIC macppc
+# $ awk --version
+# GNU Awk 3.0.3
+# Copyright (C) 1989, 1991-1997 Free Software Foundation.
+#
+#
+#
+# thanks.
+#
+# ___________________________
+# jose nazario, ph.d. jose@monkey.org
+# http://monkey.org/~jose/
+#
+#
+{
+ gsub(/[\ \"-\/\\:;\[\]\@\?\.\,\$]/, "")
+ print
+}
diff --git a/test/gsubtst5.in b/test/gsubtst5.in
new file mode 100644
index 0000000..5d1f1a9
--- /dev/null
+++ b/test/gsubtst5.in
@@ -0,0 +1 @@
+This Is a Title: My Title?
diff --git a/test/gsubtst5.ok b/test/gsubtst5.ok
new file mode 100644
index 0000000..b038c8a
--- /dev/null
+++ b/test/gsubtst5.ok
@@ -0,0 +1 @@
+ThisIsaTitleMyTitle
diff --git a/test/gtlnbufv.awk b/test/gtlnbufv.awk
new file mode 100644
index 0000000..ce7d243
--- /dev/null
+++ b/test/gtlnbufv.awk
@@ -0,0 +1,2 @@
+/@K@CODE/ { print ; getline temp ; print temp ;next }
+{print}
diff --git a/test/hex.awk b/test/hex.awk
new file mode 100644
index 0000000..f9d1ad5
--- /dev/null
+++ b/test/hex.awk
@@ -0,0 +1,22 @@
+# Test program from Paul Eggert, eggert@cs.ucla.edu, Jan. 14, 2005
+
+BEGIN {
+ e = "1(e)"
+ ex = "3e2(ex)"
+ x = "6e5(x)"
+
+ print e+0, x+0
+ print 0x
+ print 0e+x
+ print 0ex
+ print 010e2
+ print 0e9.3
+}
+
+# Expected results:
+# 1 600000
+# 06e5(x)
+# 0600001
+# 03e2(ex)
+# 1000
+# 00.3
diff --git a/test/hex.ok b/test/hex.ok
new file mode 100644
index 0000000..59714c3
--- /dev/null
+++ b/test/hex.ok
@@ -0,0 +1,6 @@
+1 600000
+06e5(x)
+0600001
+03e2(ex)
+1000
+00.3
diff --git a/test/hsprint.awk b/test/hsprint.awk
new file mode 100644
index 0000000..d17cede
--- /dev/null
+++ b/test/hsprint.awk
@@ -0,0 +1,74 @@
+# Test which attempts to repeat examples of formatted output
+# from "C a reference manual" by Harbison and Steele.
+#
+# In the second series of outputs formats of a type "%5%" are skipped
+# since my old copy of H&S explicitely requires padding ("...%05% will
+# print 0000%..."), whereas Standard says "...the complete conversion
+# specification shall be %%".
+#
+# Michal Jaegermann - michal@phys.ualberta.ca
+
+
+BEGIN {
+ zero = "0";
+ alt = "#";
+ spc = " ";
+ plus = "+";
+ just = "-";
+ value[0] = 45;
+ value[1] = 45;
+ value[2] = 45;
+ value[3] = 12.678;
+ value[4] = 12.678;
+ value[5] = 12.678;
+ value[6] = "zap";
+ value[7] = "*";
+ value[8] = -3.4567;
+ value[9] = -3.4567;
+ value[10]= -3.4567;
+ value[11]= -3.4567;
+ oper[0] = "5d";
+ oper[1] = "5o";
+ oper[2] = "5x";
+ oper[3] = "7.2f";
+ oper[4] = "10.2e";
+ oper[5] = "10.4g";
+ oper[6] = "5s";
+ oper[7] = "5c";
+ oper[8] = "7.1G";
+ oper[9] = "7.2f";
+ oper[10] = "10.2e";
+ oper[11] = "10.4g";
+
+
+ for (r = 0; r < 12; r += 6) {
+ for (j = 2; j > 0; --j) {
+ for (p = 2; p > 0; --p) {
+ for (s = 2; s > 0; --s) {
+ for (a = 2; a > 0; --a) {
+ for (z = 2; z > 0; --z) {
+ fmt = "%" substr(just,j,1) substr(plus,p,1) \
+ substr(spc,s,1) substr(alt,a,1) substr(zero,z,1);
+ fstr = sprintf(\
+ "%6s|%s%s|%s%s|%s%s|%s%s|%s%s|%s%s|\n",
+ fmt,
+ fmt, oper[r],
+ fmt, oper[r+1],
+ fmt, oper[r+2],
+ fmt, oper[r+3],
+ fmt, oper[r+4],
+ fmt, oper[r+5]);
+ printf(fstr, value[r], value[r+1],
+ value[r+2], value[r+3],
+ value[r+4], value[r+5]);
+ }
+ }
+ }
+ }
+ }
+ print "";
+ }
+}
+
+
+
diff --git a/test/hsprint.ok b/test/hsprint.ok
new file mode 100644
index 0000000..55fd16f
--- /dev/null
+++ b/test/hsprint.ok
@@ -0,0 +1,66 @@
+ %| 45| 55| 2d| 12.68| 1.27e+01| 12.68|
+ %0|00045|00055|0002d|0012.68|001.27e+01|0000012.68|
+ %#| 45| 055| 0x2d| 12.68| 1.27e+01| 12.68|
+ %#0|00045|00055|0x02d|0012.68|001.27e+01|0000012.68|
+ % | 45| 55| 2d| 12.68| 1.27e+01| 12.68|
+ % 0| 0045|00055|0002d| 012.68| 01.27e+01| 000012.68|
+ % #| 45| 055| 0x2d| 12.68| 1.27e+01| 12.68|
+ % #0| 0045|00055|0x02d| 012.68| 01.27e+01| 000012.68|
+ %+| +45| 55| 2d| +12.68| +1.27e+01| +12.68|
+ %+0|+0045|00055|0002d|+012.68|+01.27e+01|+000012.68|
+ %+#| +45| 055| 0x2d| +12.68| +1.27e+01| +12.68|
+ %+#0|+0045|00055|0x02d|+012.68|+01.27e+01|+000012.68|
+ %+ | +45| 55| 2d| +12.68| +1.27e+01| +12.68|
+ %+ 0|+0045|00055|0002d|+012.68|+01.27e+01|+000012.68|
+ %+ #| +45| 055| 0x2d| +12.68| +1.27e+01| +12.68|
+ %+ #0|+0045|00055|0x02d|+012.68|+01.27e+01|+000012.68|
+ %-|45 |55 |2d |12.68 |1.27e+01 |12.68 |
+ %-0|45 |55 |2d |12.68 |1.27e+01 |12.68 |
+ %-#|45 |055 |0x2d |12.68 |1.27e+01 |12.68 |
+ %-#0|45 |055 |0x2d |12.68 |1.27e+01 |12.68 |
+ %- | 45 |55 |2d | 12.68 | 1.27e+01 | 12.68 |
+ %- 0| 45 |55 |2d | 12.68 | 1.27e+01 | 12.68 |
+ %- #| 45 |055 |0x2d | 12.68 | 1.27e+01 | 12.68 |
+ %- #0| 45 |055 |0x2d | 12.68 | 1.27e+01 | 12.68 |
+ %-+|+45 |55 |2d |+12.68 |+1.27e+01 |+12.68 |
+ %-+0|+45 |55 |2d |+12.68 |+1.27e+01 |+12.68 |
+ %-+#|+45 |055 |0x2d |+12.68 |+1.27e+01 |+12.68 |
+ %-+#0|+45 |055 |0x2d |+12.68 |+1.27e+01 |+12.68 |
+ %-+ |+45 |55 |2d |+12.68 |+1.27e+01 |+12.68 |
+ %-+ 0|+45 |55 |2d |+12.68 |+1.27e+01 |+12.68 |
+ %-+ #|+45 |055 |0x2d |+12.68 |+1.27e+01 |+12.68 |
+%-+ #0|+45 |055 |0x2d |+12.68 |+1.27e+01 |+12.68 |
+
+ %| zap| *| -3| -3.46| -3.46e+00| -3.457|
+ %0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457|
+ %#| zap| *| -3.| -3.46| -3.46e+00| -3.457|
+ %#0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457|
+ % | zap| *| -3| -3.46| -3.46e+00| -3.457|
+ % 0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457|
+ % #| zap| *| -3.| -3.46| -3.46e+00| -3.457|
+ % #0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457|
+ %+| zap| *| -3| -3.46| -3.46e+00| -3.457|
+ %+0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457|
+ %+#| zap| *| -3.| -3.46| -3.46e+00| -3.457|
+ %+#0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457|
+ %+ | zap| *| -3| -3.46| -3.46e+00| -3.457|
+ %+ 0|00zap|0000*|-000003|-003.46|-03.46e+00|-00003.457|
+ %+ #| zap| *| -3.| -3.46| -3.46e+00| -3.457|
+ %+ #0|00zap|0000*|-00003.|-003.46|-03.46e+00|-00003.457|
+ %-|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %-0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %-#|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+ %-#0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+ %- |zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %- 0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %- #|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+ %- #0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+ %-+|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %-+0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %-+#|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+ %-+#0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+ %-+ |zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %-+ 0|zap |* |-3 |-3.46 |-3.46e+00 |-3.457 |
+ %-+ #|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+%-+ #0|zap |* |-3. |-3.46 |-3.46e+00 |-3.457 |
+
diff --git a/test/icasefs.awk b/test/icasefs.awk
new file mode 100644
index 0000000..86481d8
--- /dev/null
+++ b/test/icasefs.awk
@@ -0,0 +1,43 @@
+BEGIN {
+ # 1. Should print aCa
+ IGNORECASE = 1
+ FS = "[c]"
+ IGNORECASE = 0
+ $0 = "aCa"
+ print $1
+
+ # 2. Should print a
+ IGNORECASE = 1
+ FS = "[c]"
+ $0 = "aCa"
+ print $1
+
+ # 3. Should print a
+ IGNORECASE = 1
+ FS = "C"
+ IGNORECASE = 0
+ $0 = "aCa"
+ print $1
+
+ # 4. Should print aCa
+ IGNORECASE = 1
+ FS = "c"
+ $0 = "aCa"
+ print $1
+
+ # 5. Should print aCa
+ FS = "xy"
+ IGNORECASE = 0
+ FS = "c"
+ IGNORECASE = 1
+ $0 = "aCa"
+ print $1
+
+ # 6. Should print aCa
+ FS = "xy"
+ IGNORECASE = 0
+ FS = "c"
+ IGNORECASE = 1
+ split("aCa",a)
+ print a[1]
+}
diff --git a/test/icasefs.ok b/test/icasefs.ok
new file mode 100644
index 0000000..658fac7
--- /dev/null
+++ b/test/icasefs.ok
@@ -0,0 +1,6 @@
+aCa
+a
+a
+aCa
+aCa
+aCa
diff --git a/test/icasers.awk b/test/icasers.awk
new file mode 100644
index 0000000..933e3bf
--- /dev/null
+++ b/test/icasers.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "[[:upper:]]+" }
+{ print ; IGNORECASE = ! IGNORECASE }
diff --git a/test/icasers.in b/test/icasers.in
new file mode 100644
index 0000000..b347699
--- /dev/null
+++ b/test/icasers.in
@@ -0,0 +1 @@
+1111AAAA2222bbbb \ No newline at end of file
diff --git a/test/icasers.ok b/test/icasers.ok
new file mode 100644
index 0000000..4f142ee
--- /dev/null
+++ b/test/icasers.ok
@@ -0,0 +1,2 @@
+1111
+2222
diff --git a/test/igncdym.awk b/test/igncdym.awk
new file mode 100644
index 0000000..3119c3e
--- /dev/null
+++ b/test/igncdym.awk
@@ -0,0 +1,56 @@
+#From Jeffrey.B.Woodward@Hitchcock.ORG Mon Feb 21 09:33:32 2000
+#Message-id: <12901034@mailbox2.Hitchcock.ORG>
+#Date: 20 Feb 2000 18:14:11 EST
+#From: Jeffrey.B.Woodward@Hitchcock.ORG (Jeffrey B. Woodward)
+#Subject: gawk 3.0.4 bug
+#To: bug-gnu-utils@gnu.org
+#Cc: arnold@gnu.org
+#
+#O/S: Digital UNIX 4.0D
+#
+#C Compiler: DEC C
+#
+#gawk version: 3.0.4
+#
+#Sample Program:
+#gawk '
+ BEGIN {
+ pattern[1] = "bar" ; ignore[1] = 1
+ pattern[2] = "foo" ; ignore[2] = 0
+ }
+
+ {
+ for (i = 1 ; i <= 2 ; i++) {
+ IGNORECASE = ignore[i]
+ print match($0, pattern[i]) " " pattern[i] ":" $0
+ }
+ }
+#' << -EOF-
+#This is foo
+#This is bar
+#-EOF-
+#
+#Program Output:
+#0 bar:This is foo
+#0 foo:This is foo
+#9 bar:This is bar
+#9 foo:This is bar
+#
+#
+#**Expected** Output:
+#0 bar:This is foo
+#9 foo:This is foo
+#9 bar:This is bar
+#0 foo:This is bar
+#
+#
+#This problem appears to be directly related to IGNORECASE. If
+#IGNORECASE remains constant, the program behaves as expected;
+#however, switching IGNORECASE seems to causes problems - it is
+#almost as though the pattern stored in the variable is treated
+#as a constant and the regexp() is not recompiled(?) - just a
+#guess...
+#
+#
+#Thanks,
+#-Jeff Woodward
diff --git a/test/igncdym.in b/test/igncdym.in
new file mode 100644
index 0000000..43e361a
--- /dev/null
+++ b/test/igncdym.in
@@ -0,0 +1,2 @@
+This is foo
+This is bar
diff --git a/test/igncdym.ok b/test/igncdym.ok
new file mode 100644
index 0000000..e715a6d
--- /dev/null
+++ b/test/igncdym.ok
@@ -0,0 +1,4 @@
+0 bar:This is foo
+9 foo:This is foo
+9 bar:This is bar
+0 foo:This is bar
diff --git a/test/igncfs.awk b/test/igncfs.awk
new file mode 100644
index 0000000..ebb58b2
--- /dev/null
+++ b/test/igncfs.awk
@@ -0,0 +1,8 @@
+BEGIN {
+ IGNORECASE=1
+ FS="[^a-z]+"
+}
+{
+ for (i=1; i<NF; i++) printf "%s, ", $i
+ printf "%s\n", $NF
+}
diff --git a/test/igncfs.in b/test/igncfs.in
new file mode 100644
index 0000000..5598017
--- /dev/null
+++ b/test/igncfs.in
@@ -0,0 +1,2 @@
+this is handled ok
+This is Not hanDLed Well
diff --git a/test/igncfs.ok b/test/igncfs.ok
new file mode 100644
index 0000000..41df9a4
--- /dev/null
+++ b/test/igncfs.ok
@@ -0,0 +1,2 @@
+this, is, handled, ok
+This, is, Not, hanDLed, Well
diff --git a/test/ignrcas2.awk b/test/ignrcas2.awk
new file mode 100644
index 0000000..b7ef0cd
--- /dev/null
+++ b/test/ignrcas2.awk
@@ -0,0 +1,13 @@
+# Based on test program submitted by:
+# Date: Sun, 7 Sep 2003 23:11:51 +0200
+# From: Michael Mauch <michael.mauch@gmx.de>
+# To: bug-gawk@gnu.org
+# Subject: Internal error in gawk-3.1.3 with character class
+
+BEGIN {
+ IGNORECASE = 1
+ if ("a" ~ /[[:alnum:]]/)
+ print "OK"
+ else
+ print "NOT OK"
+}
diff --git a/test/ignrcas2.ok b/test/ignrcas2.ok
new file mode 100644
index 0000000..d86bac9
--- /dev/null
+++ b/test/ignrcas2.ok
@@ -0,0 +1 @@
+OK
diff --git a/test/ignrcase.awk b/test/ignrcase.awk
new file mode 100644
index 0000000..61d7a83
--- /dev/null
+++ b/test/ignrcase.awk
@@ -0,0 +1,2 @@
+BEGIN { IGNORECASE = 1 }
+{ sub(/y/, ""); print }
diff --git a/test/ignrcase.in b/test/ignrcase.in
new file mode 100644
index 0000000..aba8e51
--- /dev/null
+++ b/test/ignrcase.in
@@ -0,0 +1 @@
+xYz
diff --git a/test/ignrcase.ok b/test/ignrcase.ok
new file mode 100644
index 0000000..d66e95c
--- /dev/null
+++ b/test/ignrcase.ok
@@ -0,0 +1 @@
+xz
diff --git a/test/inftest.awk b/test/inftest.awk
new file mode 100644
index 0000000..a822617
--- /dev/null
+++ b/test/inftest.awk
@@ -0,0 +1,8 @@
+BEGIN {
+ k = 0
+ x = 100
+ # Added k limit test after finding some systems that didn't terminate
+ # the loop correctly, sigh...
+ do { k++; y = x ; x *= 1000; print x,y } while ( y < x && k < 1700)
+ print "loop terminated"
+}
diff --git a/test/inftest.ok b/test/inftest.ok
new file mode 100644
index 0000000..83a93d0
--- /dev/null
+++ b/test/inftest.ok
@@ -0,0 +1,105 @@
+100000 100
+100000000 100000
+1e+11 100000000
+1e+14 1e+11
+1e+17 1e+14
+1e+20 1e+17
+1e+23 1e+20
+1e+26 1e+23
+1e+29 1e+26
+1e+32 1e+29
+1e+35 1e+32
+1e+38 1e+35
+1e+41 1e+38
+1e+44 1e+41
+1e+47 1e+44
+1e+50 1e+47
+1e+53 1e+50
+1e+56 1e+53
+1e+59 1e+56
+1e+62 1e+59
+1e+65 1e+62
+1e+68 1e+65
+1e+71 1e+68
+1e+74 1e+71
+1e+77 1e+74
+1e+80 1e+77
+1e+83 1e+80
+1e+86 1e+83
+1e+89 1e+86
+1e+92 1e+89
+1e+95 1e+92
+1e+98 1e+95
+1e+101 1e+98
+1e+104 1e+101
+1e+107 1e+104
+1e+110 1e+107
+1e+113 1e+110
+1e+116 1e+113
+1e+119 1e+116
+1e+122 1e+119
+1e+125 1e+122
+1e+128 1e+125
+1e+131 1e+128
+1e+134 1e+131
+1e+137 1e+134
+1e+140 1e+137
+1e+143 1e+140
+1e+146 1e+143
+1e+149 1e+146
+1e+152 1e+149
+1e+155 1e+152
+1e+158 1e+155
+1e+161 1e+158
+1e+164 1e+161
+1e+167 1e+164
+1e+170 1e+167
+1e+173 1e+170
+1e+176 1e+173
+1e+179 1e+176
+1e+182 1e+179
+1e+185 1e+182
+1e+188 1e+185
+1e+191 1e+188
+1e+194 1e+191
+1e+197 1e+194
+1e+200 1e+197
+1e+203 1e+200
+1e+206 1e+203
+1e+209 1e+206
+1e+212 1e+209
+1e+215 1e+212
+1e+218 1e+215
+1e+221 1e+218
+1e+224 1e+221
+1e+227 1e+224
+1e+230 1e+227
+1e+233 1e+230
+1e+236 1e+233
+1e+239 1e+236
+1e+242 1e+239
+1e+245 1e+242
+1e+248 1e+245
+1e+251 1e+248
+1e+254 1e+251
+1e+257 1e+254
+1e+260 1e+257
+1e+263 1e+260
+1e+266 1e+263
+1e+269 1e+266
+1e+272 1e+269
+1e+275 1e+272
+1e+278 1e+275
+1e+281 1e+278
+1e+284 1e+281
+1e+287 1e+284
+1e+290 1e+287
+1e+293 1e+290
+1e+296 1e+293
+1e+299 1e+296
+1e+302 1e+299
+1e+305 1e+302
+1e+308 1e+305
+Inf 1e+308
+Inf Inf
+loop terminated
diff --git a/test/inputred.awk b/test/inputred.awk
new file mode 100644
index 0000000..6524df6
--- /dev/null
+++ b/test/inputred.awk
@@ -0,0 +1 @@
+BEGIN { print getline < "file" ".txt" }
diff --git a/test/inputred.ok b/test/inputred.ok
new file mode 100644
index 0000000..7de4d5d
--- /dev/null
+++ b/test/inputred.ok
@@ -0,0 +1 @@
+-1.txt
diff --git a/test/intest.awk b/test/intest.awk
new file mode 100644
index 0000000..f030d07
--- /dev/null
+++ b/test/intest.awk
@@ -0,0 +1,4 @@
+BEGIN {
+ bool = ((b = 1) in c);
+ print bool, b # gawk-3.0.1 prints "0 "; should print "0 1"
+}
diff --git a/test/intest.ok b/test/intest.ok
new file mode 100644
index 0000000..6e8183b
--- /dev/null
+++ b/test/intest.ok
@@ -0,0 +1 @@
+0 1
diff --git a/test/intprec.awk b/test/intprec.awk
new file mode 100644
index 0000000..978e9ea
--- /dev/null
+++ b/test/intprec.awk
@@ -0,0 +1 @@
+BEGIN { printf "%.10d:%.10x\n", 5, 14 }
diff --git a/test/intprec.ok b/test/intprec.ok
new file mode 100644
index 0000000..8783fac
--- /dev/null
+++ b/test/intprec.ok
@@ -0,0 +1 @@
+0000000005:000000000e
diff --git a/test/iobug1.awk b/test/iobug1.awk
new file mode 100644
index 0000000..5606d02
--- /dev/null
+++ b/test/iobug1.awk
@@ -0,0 +1,53 @@
+# From arnold@f7.net Fri Nov 26 11:53:12 2004
+# X-Envelope-From: james@nocrew.org
+# X-Envelope-To: <arnold@skeeve.com>
+# To: bug-gawk@gnu.org
+# Subject: gawk 3.1.4: reproducible hang, regression from 3.1.3
+# From: James Troup <james@nocrew.org>
+# Date: Fri, 26 Nov 2004 03:14:05 +0000
+# Message-ID: <877jo9qp36.fsf@shiri.gloaming.local>
+# User-Agent: Gnus/5.1006 (Gnus v5.10.6) Emacs/21.3 (gnu/linux)
+# MIME-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+#
+#
+# Hi,
+#
+# A Debian user reported[0] gawk 3.1.4 broke a (relatively) complex
+# program that makes extensive use of awk, called 'apt-move'. I finally
+# managed to reduced the problem down to a 3 line test case, enclosed
+# below[1].
+#
+# I believe the problem comes from the following code, introduced in
+# 3.1.4:
+#
+# [io.c, line 560]
+# | for (rp = red_head; rp != NULL; rp = rp->next) {
+# | if ((rp->flag & RED_EOF) && tree->type == Node_redirect_pipein) {
+# | if (rp->pid != -1)
+# | wait_any(0);
+# | }
+#
+# The problem is that, if we have an existing redirect which is a simple
+# file redirect[b] and it's hit EOF and we try to create a new '|'
+# redirect[c], this new code will try to wait(2) and if there are any
+# other redirects which _did_ spawn a child (like [a]) the wait() will
+# hang indefinitely waiting for it to exit.
+#
+# Hope that makes sense :)
+#
+# --
+# James
+#
+# [0] http://bugs.debian.org/263964
+#
+# [1]
+# ================================================================================
+#!/usr/bin/gawk -f
+
+BEGIN {
+ printf "" | "cat" # [a]
+ getline line < "/dev/null" # [b]
+ "true" | getline line # [c]
+}
+# ================================================================================
diff --git a/test/iobug1.ok b/test/iobug1.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/iobug1.ok
diff --git a/test/leaddig.awk b/test/leaddig.awk
new file mode 100644
index 0000000..6c001ba
--- /dev/null
+++ b/test/leaddig.awk
@@ -0,0 +1,7 @@
+# check that values with leading digits get converted the
+# right way, based on a note in comp.lang.awk.
+#
+# run with gawk -v x=2E -f leaddig.awk
+BEGIN {
+ print "x =", x, (x == 2), (x == 2E0), (x == 2E), (x == 2D)
+}
diff --git a/test/leaddig.ok b/test/leaddig.ok
new file mode 100644
index 0000000..7a9d866
--- /dev/null
+++ b/test/leaddig.ok
@@ -0,0 +1 @@
+x = 2E 0 0 0 0
diff --git a/test/leadnl.awk b/test/leadnl.awk
new file mode 100644
index 0000000..0b7d0a9
--- /dev/null
+++ b/test/leadnl.awk
@@ -0,0 +1,10 @@
+BEGIN {
+ RS = ""; FS = "\n"
+}
+
+{
+ print "Name is: ", $1
+ print "Address is: ", $2
+ print "City and State are: ", $3
+ print ""
+}
diff --git a/test/leadnl.in b/test/leadnl.in
new file mode 100644
index 0000000..67c0239
--- /dev/null
+++ b/test/leadnl.in
@@ -0,0 +1,9 @@
+
+Jane Doe
+123 Main Street
+Anywhere, SE 12345-6789
+
+John Smith
+456 Tree-lined Avenue
+Smallville, MW 98765-4321
+
diff --git a/test/leadnl.ok b/test/leadnl.ok
new file mode 100644
index 0000000..19cb299
--- /dev/null
+++ b/test/leadnl.ok
@@ -0,0 +1,8 @@
+Name is: Jane Doe
+Address is: 123 Main Street
+City and State are: Anywhere, SE 12345-6789
+
+Name is: John Smith
+Address is: 456 Tree-lined Avenue
+City and State are: Smallville, MW 98765-4321
+
diff --git a/test/lib/awkpath.awk b/test/lib/awkpath.awk
new file mode 100644
index 0000000..6663ca4
--- /dev/null
+++ b/test/lib/awkpath.awk
@@ -0,0 +1 @@
+BEGIN { print "Found it." }
diff --git a/test/lint.awk b/test/lint.awk
new file mode 100644
index 0000000..ea7b8e3
--- /dev/null
+++ b/test/lint.awk
@@ -0,0 +1,14 @@
+# lint.awk --- test lint variable
+
+BEGIN {
+ a[1] = 1
+ LINT = 1
+ delete a[2]
+ LINT = ""
+ delete a[3]
+ LINT = "true"
+ delete a[4]
+ LINT = 0
+ delete a[5]
+ print "done"
+}
diff --git a/test/lint.ok b/test/lint.ok
new file mode 100644
index 0000000..fb6e3df
--- /dev/null
+++ b/test/lint.ok
@@ -0,0 +1,5 @@
+gawk: lint.awk:6: warning: delete: index `2' not in array `a'
+gawk: lint.awk:7: warning: turning off `--lint' due to assignment to `LINT'
+gawk: lint.awk:10: warning: delete: index `4' not in array `a'
+gawk: lint.awk:11: warning: turning off `--lint' due to assignment to `LINT'
+done
diff --git a/test/litoct.awk b/test/litoct.awk
new file mode 100644
index 0000000..5cfc128
--- /dev/null
+++ b/test/litoct.awk
@@ -0,0 +1 @@
+{ if (/a\52b/) print "match" ; else print "no match" }
diff --git a/test/litoct.ok b/test/litoct.ok
new file mode 100644
index 0000000..4c0be97
--- /dev/null
+++ b/test/litoct.ok
@@ -0,0 +1 @@
+no match
diff --git a/test/longdbl.awk b/test/longdbl.awk
new file mode 100644
index 0000000..bbe8aba
--- /dev/null
+++ b/test/longdbl.awk
@@ -0,0 +1,159 @@
+# From arnold@f7.net Wed Apr 27 09:48:37 2005
+# Return-Path: <arnold@f7.net>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.11/8.12.11) with ESMTP id j3R6mZVm015791
+# for <arnold@localhost>; Wed, 27 Apr 2005 09:48:37 +0300
+# Received: from pop.012.net.il [84.95.5.221]
+# by localhost with POP3 (fetchmail-6.2.5)
+# for arnold@localhost (single-drop); Wed, 27 Apr 2005 09:48:37 +0300 (IDT)
+# Received: from mtain3.012.net.il ([10.220.5.7])
+# by i_mss3.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0IFK00L1DIZ02530@i_mss3.012.net.il> for arobbins@012.net.il;
+# Tue, 26 Apr 2005 22:18:36 +0300 (IDT)
+# Received: from VScan3 ([10.220.20.3])
+# by i_mtain3.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0IFK007U1IZ0U980@i_mtain3.012.net.il> for arobbins@012.net.il
+# (ORCPT arobbins@012.net.il); Tue, 26 Apr 2005 22:18:36 +0300 (IDT)
+# Received: from i_mtain1.012.net.il ([10.220.5.1])
+# by VScan3 with InterScan Messaging Security Suite; Tue,
+# 26 Apr 2005 22:15:22 +0300
+# Received: from f7.net ([209.61.216.22])
+# by i_mtain1.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0IFK009SIIYRN7G0@i_mtain1.012.net.il> for arobbins@012.net.il;
+# Tue, 26 Apr 2005 22:18:33 +0300 (IDT)
+# Received: (from arnold@localhost) by f7.net (8.11.7-20030920/8.11.7)
+# id j3QJFAg18376 for arobbins@012.net.il; Tue, 26 Apr 2005 15:15:10 -0400
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7-20030920/8.11.7) with ESMTP id j3QJF5J18304 for
+# <arnold@skeeve.com>; Tue, 26 Apr 2005 15:15:06 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.34)
+# id 1DQVVh-0004gD-CH for bug-gawk@gnu.org; Tue, 26 Apr 2005 15:14:17 -0400
+# Received: from Debian-exim by monty-python.gnu.org with spam-scanned
+# (Exim 4.34) id 1DQVYa-0002PR-2b for bug-gawk@gnu.org; Tue,
+# 26 Apr 2005 15:17:56 -0400
+# Received: from [129.183.4.8] (helo=ecfrec.frec.bull.fr)
+# by monty-python.gnu.org with esmtp (Exim 4.34)
+# id 1DQVYZ-0002Lr-EF for bug-gawk@gnu.org; Tue, 26 Apr 2005 15:17:15 -0400
+# Received: from localhost (localhost [127.0.0.1])
+# by ecfrec.frec.bull.fr (Postfix) with ESMTP id 5782819D907 for
+# <bug-gawk@gnu.org>; Tue, 26 Apr 2005 21:12:53 +0200 (CEST)
+# Received: from ecfrec.frec.bull.fr ([127.0.0.1])
+# by localhost (ecfrec.frec.bull.fr [127.0.0.1]) (amavisd-new, port 10024)
+# with ESMTP id 06763-10 for <bug-gawk@gnu.org>; Tue,
+# 26 Apr 2005 21:12:51 +0200 (CEST)
+# Received: from ecn002.frec.bull.fr (ecn002.frec.bull.fr [129.183.4.6])
+# by ecfrec.frec.bull.fr (Postfix) with ESMTP id 4488B19D906 for
+# <bug-gawk@gnu.org>; Tue, 26 Apr 2005 21:12:51 +0200 (CEST)
+# Received: from daphne ([129.183.192.6])
+# by ecn002.frec.bull.fr (Lotus Domino Release 5.0.12)
+# with ESMTP id 2005042621231613:3312 ; Tue, 26 Apr 2005 21:23:16 +0200
+# Date: Tue, 26 Apr 2005 21:12:49 +0200 (CEST)
+# From: Jean-Marc Saffroy <jean-marc.saffroy@ext.bull.net>
+# Subject: GNU awk unable to handle 64-bit ints on IA64
+# X-X-Sender: saffroyj@daphne.frec.bull.fr
+# To: bug-gawk@gnu.org
+# Message-id: <Pine.LNX.4.61.0504261916140.22370@daphne.frec.bull.fr>
+# MIME-version: 1.0
+# Content-type: TEXT/PLAIN; charset=US-ASCII; format=flowed
+# X-MIMETrack: Itemize by SMTP Server on ECN002/FR/BULL(Release 5.0.12 |February
+# 13, 2003) at 26/04/2005 21:23:16,
+# Serialize by Router on ECN002/FR/BULL(Release 5.0.12 |February 13,
+# 2003) at 26/04/2005 21:23:16, Serialize complete at 26/04/2005 21:23:16
+# X-Virus-Scanned: by amavisd-new at frec.bull.fr
+# Original-recipient: rfc822;arobbins@012.net.il
+# X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on skeeve.com
+# X-Spam-Level:
+# X-Spam-Status: No, hits=-4.9 required=5.0 tests=BAYES_00 autolearn=ham
+# version=2.63
+# Status: RO
+#
+#
+# Hello,
+#
+# I have rounding problems when manipulating 64-bit ints (actually they are
+# addresses) on Linux/IA64:
+#
+# $ echo 0xa000000100000813|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0xa000000100000800
+# $ echo 0xffffffffffffffff|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0x8000000000000000
+# $ ./gawk --version|head -1
+# GNU Awk 3.1.4
+#
+# The problem seems to be that AWKNUM is defined to be a double, which has a
+# 53-bit mantissa. On IA64 with gcc 3.2.3 (maybe other compilers as well)
+# there is a long double type with a larger mantissa:
+#
+# $ grep define.*LDBL_MANT_DIG /usr/lib/gcc-lib/ia64-redhat-linux/3.2.3/include/float.h
+# #define LDBL_MANT_DIG 64
+#
+# So I changed AWKNUM to be a long double; this does not seem to be
+# sufficient, because of some dubious casts to double (there may be others
+# left, I didn't check), see patch below. Now it's much nicer:
+#
+# $ echo 0xa000000100000813|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0xa000000100000813
+# $ echo 0xffffffffffffffff|./gawk '{printf("0x%lx\n",strtonum($1));}'
+# 0xffffffffffffffff
+#
+# Maybe the gawk configure script should set AWKNUM to be a long double on
+# Linux/IA64?
+#
+#
+# Regards,
+#
+# --
+# Jean-Marc Saffroy - jean-marc.saffroy@ext.bull.net
+#
+#
+# diff -ru gawk-3.1.4/awk.h gawk/awk.h
+# --- gawk-3.1.4/awk.h 2004-07-26 16:11:05.000000000 +0200
+# +++ gawk/awk.h 2005-04-26 19:19:10.545419273 +0200
+# @@ -273,7 +273,7 @@
+# /* ------------------ Constants, Structures, Typedefs ------------------ */
+#
+# #ifndef AWKNUM
+# -#define AWKNUM double
+# +#define AWKNUM long double
+# #endif
+#
+# #ifndef TRUE
+# diff -ru gawk-3.1.4/builtin.c gawk/builtin.c
+# --- gawk-3.1.4/builtin.c 2004-07-13 09:55:28.000000000 +0200
+# +++ gawk/builtin.c 2005-04-26 20:53:41.211365432 +0200
+# @@ -578,7 +578,7 @@
+# char *cend = &cpbuf[30];/* chars, we lose, but seems unlikely */
+# char *cp;
+# const char *fill;
+# - double tmpval;
+# + AWKNUM tmpval;
+# char signchar = FALSE;
+# size_t len;
+# int zero_flag = FALSE;
+# @@ -2773,16 +2773,16 @@
+# do_strtonum(NODE *tree)
+# {
+# NODE *tmp;
+# - double d;
+# + AWKNUM d;
+#
+# tmp = tree_eval(tree->lnode);
+#
+# if ((tmp->flags & (NUMBER|NUMCUR)) != 0)
+# - d = (double) force_number(tmp);
+# + d = (AWKNUM) force_number(tmp);
+# else if (isnondecimal(tmp->stptr))
+# d = nondec2awknum(tmp->stptr, tmp->stlen);
+# else
+# - d = (double) force_number(tmp);
+# + d = (AWKNUM) force_number(tmp);
+#
+# free_temp(tmp);
+# return tmp_number((AWKNUM) d);
+#
+#
+# #####################################################################################
+# This Mail Was Scanned by 012.net Anti Virus Service - Powered by TrendMicro Interscan
+#
+{ printf("0x%lx\n",strtonum($1)); }
diff --git a/test/longdbl.in b/test/longdbl.in
new file mode 100644
index 0000000..d50f0c4
--- /dev/null
+++ b/test/longdbl.in
@@ -0,0 +1,2 @@
+0xa000000100000813
+0xffffffffffffffff
diff --git a/test/longdbl.ok b/test/longdbl.ok
new file mode 100644
index 0000000..d50f0c4
--- /dev/null
+++ b/test/longdbl.ok
@@ -0,0 +1,2 @@
+0xa000000100000813
+0xffffffffffffffff
diff --git a/test/longsub.awk b/test/longsub.awk
new file mode 100644
index 0000000..07a4a85
--- /dev/null
+++ b/test/longsub.awk
@@ -0,0 +1 @@
+{sub( "^.*AA", "BB"); print}
diff --git a/test/longsub.in b/test/longsub.in
new file mode 100644
index 0000000..ab95ee1
--- /dev/null
+++ b/test/longsub.in
@@ -0,0 +1 @@
+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
diff --git a/test/longsub.ok b/test/longsub.ok
new file mode 100644
index 0000000..a85633e
--- /dev/null
+++ b/test/longsub.ok
@@ -0,0 +1 @@
+BB000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000
diff --git a/test/longwrds.awk b/test/longwrds.awk
new file mode 100644
index 0000000..d4b4d92
--- /dev/null
+++ b/test/longwrds.awk
@@ -0,0 +1,27 @@
+# From Gawk Manual modified by bug fix and removal of punctuation
+
+# Invoker can customize sort command if necessary.
+BEGIN {
+ if (!SORT) SORT = "LC_ALL=C sort"
+}
+
+# Record every word which is used at least once
+{
+ for (i = 1; i <= NF; i++) {
+ tmp = tolower($i)
+ if (0 != (pos = match(tmp, /([a-z]|-)+/)))
+ used[substr(tmp, pos, RLENGTH)] = 1
+ }
+}
+
+#Find a number of distinct words longer than 10 characters
+END {
+ num_long_words = 0
+ for (x in used)
+ if (length(x) > 10) {
+ ++num_long_words
+ print x | SORT
+ }
+ print(num_long_words, "long words") | SORT
+ close(SORT)
+}
diff --git a/test/longwrds.in b/test/longwrds.in
new file mode 100644
index 0000000..09c3948
--- /dev/null
+++ b/test/longwrds.in
@@ -0,0 +1,200 @@
+.ds PX \s-1POSIX\s+1
+.ds UX \s-1UNIX\s+1
+.ds AN \s-1ANSI\s+1
+.TH GAWK 1 "May 28 1991" "Free Software Foundation" "Utility Commands"
+.SH NAME
+gawk \- pattern scanning and processing language
+.SH SYNOPSIS
+.B gawk
+[
+.B \-W
+.I gawk-options
+] [
+.BI \-F\^ fs
+] [
+.B \-v
+.IR var = val
+]
+.B \-f
+.I program-file
+[
+.B \-\^\-
+] file .\^.\^.
+.br
+.B gawk
+[
+.B \-W
+.I gawk-options
+] [
+.BI \-F\^ fs
+] [
+.B \-v
+.IR var = val
+] [
+.B \-\^\-
+]
+.I program-text
+file .\^.\^.
+.SH DESCRIPTION
+.I Gawk
+is the GNU Project's implementation of the AWK programming language.
+It conforms to the definition of the language in
+the \*(PX 1003.2 Command Language And Utilities Standard
+(draft 11).
+This version in turn is based on the description in
+.IR "The AWK Programming Language" ,
+by Aho, Kernighan, and Weinberger,
+with the additional features defined in the System V Release 4 version
+of \*(UX
+.IR awk .
+.I Gawk
+also provides some GNU-specific extensions.
+.PP
+The command line consists of options to
+.I gawk
+itself, the AWK program text (if not supplied via the
+.B \-f
+option), and values to be made
+available in the
+.B ARGC
+and
+.B ARGV
+pre-defined AWK variables.
+.SH OPTIONS
+.PP
+.I Gawk
+accepts the following options, which should be available on any implementation
+of the AWK language.
+.TP
+.BI \-F fs
+Use
+.I fs
+for the input field separator (the value of the
+.B FS
+predefined
+variable).
+.TP
+\fB\-v\fI var\fR\^=\^\fIval\fR
+Assign the value
+.IR val ,
+to the variable
+.IR var ,
+before execution of the program begins.
+Such variable values are available to the
+.B BEGIN
+block of an AWK program.
+.TP
+.BI \-f " program-file"
+Read the AWK program source from the file
+.IR program-file ,
+instead of from the first command line argument.
+Multiple
+.B \-f
+options may be used.
+.TP
+.B \-\^\-
+Signal the end of options. This is useful to allow further arguments to the
+AWK program itself to start with a ``\-''.
+This is mainly for consistency with the argument parsing convention used
+by most other \*(PX programs.
+.PP
+Following the \*(PX standard,
+.IR gawk -specific
+options are supplied via arguments to the
+.B \-W
+option. Multiple
+.B \-W
+options may be supplied, or multiple arguments may be supplied together
+if they are separated by commas, or enclosed in quotes and separated
+by white space.
+Case is ignored in arguments to the
+.B \-W
+option.
+.PP
+The
+.B \-W
+option accepts the following arguments:
+.TP \w'\fBcopyright\fR'u+1n
+.B compat
+Run in
+.I compatibility
+mode. In compatibility mode,
+.I gawk
+behaves identically to \*(UX
+.IR awk ;
+none of the GNU-specific extensions are recognized.
+.TP
+.PD 0
+.B copyleft
+.TP
+.PD
+.B copyright
+Print the short version of the GNU copyright information message on
+the error output.
+.TP
+.B lint
+Provide warnings about constructs that are
+dubious or non-portable to other AWK implementations.
+.TP
+.B posix
+This turns on
+.I compatibility
+mode, with the following additional restrictions:
+.RS
+.TP \w'\(bu'u+1n
+\(bu
+.B \ex
+escape sequences are not recognized.
+.TP
+\(bu
+The synonym
+.B func
+for the keyword
+.B function
+is not recognized.
+.TP
+\(bu
+The operators
+.B **
+and
+.B **=
+cannot be used in place of
+.B ^
+and
+.BR ^= .
+.RE
+.TP
+.B version
+Print version information for this particular copy of
+.I gawk
+on the error output.
+This is useful mainly for knowing if the current copy of
+.I gawk
+on your system
+is up to date with respect to whatever the Free Software Foundation
+is distributing.
+.PP
+Any other options are flagged as illegal, but are otherwise ignored.
+.SH AWK PROGRAM EXECUTION
+.PP
+An AWK program consists of a sequence of pattern-action statements
+and optional function definitions.
+.RS
+.PP
+\fIpattern\fB { \fIaction statements\fB }\fR
+.br
+\fBfunction \fIname\fB(\fIparameter list\fB) { \fIstatements\fB }\fR
+.RE
+.PP
+.I Gawk
+first reads the program source from the
+.IR program-file (s)
+if specified, or from the first non-option argument on the command line.
+The
+.B \-f
+option may be used multiple times on the command line.
+.I Gawk
+will read the program text as if all the
+.IR program-file s
+had been concatenated together. This is useful for building libraries
+of AWK functions, without having to include them in each new AWK
diff --git a/test/longwrds.ok b/test/longwrds.ok
new file mode 100644
index 0000000..01faa84
--- /dev/null
+++ b/test/longwrds.ok
@@ -0,0 +1,21 @@
+20 long words
+compatibility
+concatenated
+consistency
+definitions
+description
+distributing
+fistatements
+gawk-options
+gnu-specific
+identically
+implementation
+implementations
+information
+non-portable
+pattern-action
+pre-defined
+program-file
+program-text
+programming
+restrictions
diff --git a/test/manglprm.awk b/test/manglprm.awk
new file mode 100644
index 0000000..3a4306c
--- /dev/null
+++ b/test/manglprm.awk
@@ -0,0 +1,41 @@
+# From beebe@sunshine.math.utah.edu Thu Jul 10 00:36:16 2003
+# Date: Wed, 9 Jul 2003 06:42:54 -0600 (MDT)
+# From: "Nelson H. F. Beebe" <beebe@math.utah.edu>
+# To: "Arnold Robbins" <arnold@skeeve.com>
+# Cc: beebe@math.utah.edu
+# X-US-Mail: "Center for Scientific Computing, Department of Mathematics, 110
+# LCB, University of Utah, 155 S 1400 E RM 233, Salt Lake City, UT
+# 84112-0090, USA"
+# X-Telephone: +1 801 581 5254
+# X-FAX: +1 801 585 1640, +1 801 581 4148
+# X-URL: http://www.math.utah.edu/~beebe
+# Subject: gawk-3.1.3 (and earlier): reproducible core dump
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+#
+# I have a reproducible core dump in gawk-3.1.3, and recent gawk
+# versions.
+#
+# Consider the following test program, reduced from a much larger one:
+#
+# % cat gawk-dump.awk
+
+ { process($0) }
+
+ function out_debug(s)
+ {
+ print s
+ }
+
+ function process(s, n,parts)
+ {
+ out_debug("Buffer = [" protect(Buffer) "]")
+ Buffer = Buffer s
+ n = split(Buffer,parts,"\n")
+ }
+
+ function protect(s)
+ {
+ gsub("\n", "\\n", s)
+ return (s)
+ }
diff --git a/test/manglprm.in b/test/manglprm.in
new file mode 100644
index 0000000..73709ba
--- /dev/null
+++ b/test/manglprm.in
@@ -0,0 +1 @@
+Testing
diff --git a/test/manglprm.ok b/test/manglprm.ok
new file mode 100644
index 0000000..b13c456
--- /dev/null
+++ b/test/manglprm.ok
@@ -0,0 +1 @@
+Buffer = []
diff --git a/test/manyfiles.awk b/test/manyfiles.awk
new file mode 100644
index 0000000..8651a3a
--- /dev/null
+++ b/test/manyfiles.awk
@@ -0,0 +1 @@
+{ print $2 > ("junk/" $1) }
diff --git a/test/manyfiles.ok b/test/manyfiles.ok
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test/manyfiles.ok
@@ -0,0 +1 @@
+1
diff --git a/test/match1.awk b/test/match1.awk
new file mode 100644
index 0000000..6d4791b
--- /dev/null
+++ b/test/match1.awk
@@ -0,0 +1,9 @@
+BEGIN {
+ data = "foooobazbarrrrr"
+ match(data, /(fo+).+(bar*)/, arr)
+ for (i = 0; i in arr; i++) {
+ printf("arr[%d] = \"%s\"\n", i, arr[i])
+ printf("arr[%d, \"start\"] = %s, arr[%d, \"length\"] = %s\n",
+ i, arr[i, "start"], i, arr[i, "length"])
+ }
+}
diff --git a/test/match1.ok b/test/match1.ok
new file mode 100644
index 0000000..4490db2
--- /dev/null
+++ b/test/match1.ok
@@ -0,0 +1,6 @@
+arr[0] = "foooobazbarrrrr"
+arr[0, "start"] = 1, arr[0, "length"] = 15
+arr[1] = "foooo"
+arr[1, "start"] = 1, arr[1, "length"] = 5
+arr[2] = "barrrrr"
+arr[2, "start"] = 9, arr[2, "length"] = 7
diff --git a/test/match2.awk b/test/match2.awk
new file mode 100644
index 0000000..b4d9544
--- /dev/null
+++ b/test/match2.awk
@@ -0,0 +1,6 @@
+function f(a, b, c)
+{
+ print match("foo", "bar", f)
+}
+
+BEGIN { f(1, 2, 3) }
diff --git a/test/match2.ok b/test/match2.ok
new file mode 100644
index 0000000..a4a91e8
--- /dev/null
+++ b/test/match2.ok
@@ -0,0 +1,2 @@
+gawk: match2.awk:3: fatal: match: third argument is not an array
+EXIT CODE: 2
diff --git a/test/math.awk b/test/math.awk
new file mode 100644
index 0000000..90a01dd
--- /dev/null
+++ b/test/math.awk
@@ -0,0 +1,10 @@
+BEGIN {
+ pi = 3.1415927
+ printf "cos(%f) = %f\n", pi/4, cos(pi/4)
+ printf "sin(%f) = %f\n", pi/4, sin(pi/4)
+ e = exp(1)
+ printf "e = %f\n", e
+ printf "log(e) = %f\n", log(e)
+ printf "sqrt(pi ^ 2) = %f\n", sqrt(pi ^ 2)
+ printf "atan2(1, 1) = %f\n", atan2(1, 1)
+}
diff --git a/test/math.ok b/test/math.ok
new file mode 100644
index 0000000..a396a5b
--- /dev/null
+++ b/test/math.ok
@@ -0,0 +1,6 @@
+cos(0.785398) = 0.707107
+sin(0.785398) = 0.707107
+e = 2.718282
+log(e) = 1.000000
+sqrt(pi ^ 2) = 3.141593
+atan2(1, 1) = 0.785398
diff --git a/test/membug1.awk b/test/membug1.awk
new file mode 100644
index 0000000..cb76958
--- /dev/null
+++ b/test/membug1.awk
@@ -0,0 +1 @@
+{ one != one = $1 }
diff --git a/test/membug1.in b/test/membug1.in
new file mode 100644
index 0000000..af7e09d
--- /dev/null
+++ b/test/membug1.in
@@ -0,0 +1,2 @@
+yes
+yes
diff --git a/test/membug1.ok b/test/membug1.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/membug1.ok
diff --git a/test/messages.awk b/test/messages.awk
new file mode 100644
index 0000000..555f6e3
--- /dev/null
+++ b/test/messages.awk
@@ -0,0 +1,9 @@
+# This is a demo of different ways of printing with gawk. Try it
+# with and without -c (compatibility) flag, redirecting output
+# from gawk to a file or not. Some results can be quite unexpected.
+BEGIN {
+ print "Goes to a file out1" > "out1"
+ print "Normal print statement"
+ print "This printed on stdout" > "/dev/stdout"
+ print "You blew it!" > "/dev/stderr"
+}
diff --git a/test/minusstr.awk b/test/minusstr.awk
new file mode 100644
index 0000000..d427719
--- /dev/null
+++ b/test/minusstr.awk
@@ -0,0 +1 @@
+BEGIN { print-"6" }
diff --git a/test/minusstr.ok b/test/minusstr.ok
new file mode 100644
index 0000000..3cfb5ef
--- /dev/null
+++ b/test/minusstr.ok
@@ -0,0 +1 @@
+-6
diff --git a/test/mmap8k.in b/test/mmap8k.in
new file mode 100644
index 0000000..0500ddf
--- /dev/null
+++ b/test/mmap8k.in
@@ -0,0 +1,143 @@
+XXXXXXXX.com ALTERNET 9305 930528 1500.00 startup
+XXXXXXXX.com ALTERNET 9305 930624 94.38 Line-9305
+XXXXXXXX.com ALTERNET 9306 930624 104.49 Line-9306
+XXXXXXXX.com ALTERNET 9306 930624 649.16 Line-install
+XXXXXXXX.com ALTERNET 9306 930624 166.67 TCP-slip
+XXXXXXXX.com ALTERNET 9307 930624 104.49 Line-9307
+XXXXXXXX.com ALTERNET 9307 930624 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9308 930701 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9308 930701 104.49 line-9308
+XXXXXXXX.com PAYMENT 9307 930731 1500.00 1870
+XXXXXXXX.com ALTERNET 9309 930801 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9309 930801 104.49 line-9309
+XXXXXXXX.com INTEREST 9307 930801 22.50
+XXXXXXXX.com CREDADJ 9308 930805 22.50 waive interest
+XXXXXXXX.com PAYMENT 9308 930820 1723.68 1982
+XXXXXXXX.com ALTERNET 9310 930901 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9310 930901 104.49 line-9310
+XXXXXXXX.com PAYMENT 9310 931001 708.98 2313
+XXXXXXXX.com ALTERNET 9311 931001 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9311 931001 104.49 line-9311
+XXXXXXXX.com INTEREST 9309 931001 5.32
+XXXXXXXX.com CREDADJ 9310 931007 5.32 waive int-9309
+XXXXXXXX.com ALTERNET 9312 931101 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9312 931101 104.49 line-9312
+XXXXXXXX.com PAYMENT 9311 931120 354.49 002701
+XXXXXXXX.com ALTERNET 9401 931201 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9401 931201 104.49 line-9401
+XXXXXXXX.com PAYMENT 9312 931218 354.49 2884
+XXXXXXXX.com ALTERNET 9402 940101 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9402 940101 104.49 line-9402
+XXXXXXXX.com INTEREST 9312 940101 5.32
+XXXXXXXX.com PAYMENT 9401 940122 354.49 3084
+XXXXXXXX.com ALTERNET 9403 940201 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9403 940201 104.49 line-9403
+XXXXXXXX.com INTEREST 9401 940201 5.40
+XXXXXXXX.com PAYMENT 9402 940207 354.49 3140
+XXXXXXXX.com CREDADJ 9402 940211 5.32 interest-9402
+XXXXXXXX.com CREDADJ 9402 940211 5.40 interest-9403
+XXXXXXXX.com ALTERNET 9404 940301 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9404 940301 104.49 line-9404
+XXXXXXXX.com INTEREST 9402 940301 5.32
+XXXXXXXX.com PAYMENT 9403 940310 354.49 003307
+XXXXXXXX.com PAYMENT 9403 940324 354.49 3446
+XXXXXXXX.com ALTERNET 9405 940401 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9405 940401 104.49 line-9405
+XXXXXXXX.com ALTERNET 9406 940501 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9406 940501 104.49 line-9406
+XXXXXXXX.com INTEREST 9404 940501 5.40
+XXXXXXXX.com PAYMENT 9405 940509 359.81 003819
+XXXXXXXX.com ALTERNET 9407 940601 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9407 940601 104.49 line-9407
+XXXXXXXX.com INTEREST 9405 940601 5.40
+XXXXXXXX.com PAYMENT 9406 940603 354.49 004025
+XXXXXXXX.com ALTERNET 9408 940701 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9408 940701 104.49 line-9408
+XXXXXXXX.com INTEREST 9406 940701 5.48
+XXXXXXXX.com PAYMENT 9407 940725 354.49 004350
+XXXXXXXX.com ALTERNET 9409 940801 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9409 940801 104.49 line-9409
+XXXXXXXX.com INTEREST 9407 940801 5.56
+XXXXXXXX.com PAYMENT 9408 940808 354.49 004454
+XXXXXXXX.com ALTERNET 9409 940811 0.00 startup
+XXXXXXXX.com EQUIPMENT 9408 940831 399.00 ATL6402-1
+XXXXXXXX.com EQUIPMENT 9408 940831 2295.00 NBClassicPac-1
+XXXXXXXX.com EQUIPMENT 9408 940831 1060.00 Syn35-1+ship
+XXXXXXXX.com ALTERNET 9410 940901 250.00 TCP-slip
+XXXXXXXX.com ALTERNET 9410 940901 104.49 line-9410
+XXXXXXXX.com INTEREST 9408 940901 5.64
+XXXXXXXX.com PAYMENT 9409 940906 354.49 004677
+XXXXXXXX.com CREDADJ 9409 940921 124.95 TCP-slip-9409
+XXXXXXXX.com CREDADJ 9409 940921 52.20 line-9409
+XXXXXXXX.com CREDADJ 9410 940921 250.00 TCP-slip-9410
+XXXXXXXX.com CREDADJ 9410 940921 104.49 line-9410
+XXXXXXXX.com ALTERNET 9409 940921 397.50 TCP-56k-local recon
+XXXXXXXX.com ALTERNET 9409 940921 87.45 line-9409 recon
+XXXXXXXX.com ALTERNET 9410 940921 795.00 TCP-56k-local recon
+XXXXXXXX.com ALTERNET 9410 940921 174.90 line-9410 recon
+XXXXXXXX.com ALTERNET 9411 941001 795.00 TCP-56k-local
+XXXXXXXX.com ALTERNET 9411 941001 174.90 line-9411
+XXXXXXXX.com INTEREST 9409 941001 54.06
+XXXXXXXX.com PAYMENT 9410 941017 354.49 5026
+XXXXXXXX.com ALTERNET 9412 941101 795.00 TCP-56k-local
+XXXXXXXX.com ALTERNET 9412 941101 174.90 line-9412
+XXXXXXXX.com INTEREST 9410 941101 85.93
+XXXXXXXX.com PAYMENT 9411 941114 969.90 005274
+XXXXXXXX.com ALTERNET 9501 941201 795.00 TCP-56k-local
+XXXXXXXX.com ALTERNET 9501 941201 174.90 line-9501
+XXXXXXXX.com INTEREST 9411 941201 87.22
+XXXXXXXX.com PAYMENT 9412 941219 4723.90 5590
+XXXXXXXX.com ALTERNET 9502 950101 795.00 TCP-56k-local
+XXXXXXXX.com ALTERNET 9502 950101 174.90 line-9502
+XXXXXXXX.com INTEREST 9412 950101 32.22
+XXXXXXXX.com PAYMENT 9501 950103 1893.11 5766
+XXXXXXXX.com ALTERNET 9503 950201 795.00 TCP-56k-local-old
+XXXXXXXX.com ALTERNET 9503 950201 174.90 line-9503
+XXXXXXXX.com INTEREST 9501 950201 18.85
+XXXXXXXX.com PAYMENT 9502 950207 969.90 6044
+XXXXXXXX.com ALTERNET 9504 950301 795.00 TCP-56k-local-old
+XXXXXXXX.com ALTERNET 9504 950301 174.90 line-9504
+XXXXXXXX.com INTEREST 9502 950301 19.13
+XXXXXXXX.com PAYMENT 9503 950307 969.90 6408
+XXXXXXXX.com ALTERNET 9504 950316 3000.00 startup TCP-bt1-128k%5
+XXXXXXXX.com PAYMENT 9503 950327 969.90 6594
+XXXXXXXX.com ALTERNET 9505 950401 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9505 950401 556.60 line-9505
+XXXXXXXX.com EQUIPMENT 9504 950410 1595.00 cisco2501-1
+XXXXXXXX.com CREDADJ 9504 950417 503.50 TCP-56k-local
+XXXXXXXX.com CREDADJ 9504 950417 116.60 line-9504
+XXXXXXXX.com ALTERNET 9504 950417 448.80 line-install
+XXXXXXXX.com ALTERNET 9504 950417 752.02 TCP-bt1-128k%5 recon
+XXXXXXXX.com ALTERNET 9504 950417 371.00 line-9504 recon
+XXXXXXXX.com PAYMENT 9504 950424 3000.00 6841
+XXXXXXXX.com ALTERNET 9506 950501 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9506 950501 556.60 line-9506
+XXXXXXXX.com PAYMENT 9505 950505 2049.86 6985
+XXXXXXXX.com PAYMENT 9505 950531 3924.22 7179
+XXXXXXXX.com ALTERNET 9507 950601 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9507 950601 556.60 line-9507
+XXXXXXXX.com PAYMENT 9506 950607 1744.10 7232
+XXXXXXXX.com ALTERNET 9508 950701 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9508 950701 556.60 line-9508
+XXXXXXXX.com PAYMENT 9507 950705 1744.10 7641
+XXXXXXXX.com ALTERNET 9509 950801 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9509 950801 556.60 line-9509
+XXXXXXXX.com PAYMENT 9508 950803 1744.10 7914
+XXXXXXXX.com ALTERNET 9510 950901 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9510 950901 556.60 line-9510
+XXXXXXXX.com PAYMENT 9509 950905 1744.10 8203
+XXXXXXXX.com ALTERNET 9511 951001 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9511 951001 556.60 line-9511
+XXXXXXXX.com PAYMENT 9510 951003 1744.10 8508
+XXXXXXXX.com ALTERNET 9512 951101 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9512 951101 556.60 line-9512
+XXXXXXXX.com PAYMENT 9511 951103 2129.83 8837
+XXXXXXXX.com ALTERNET 9601 951201 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9601 951201 556.60 line-9601
+XXXXXXXX.com PAYMENT 9512 951204 2129.83 9131
+XXXXXXXX.com ALTERNET 9602 960101 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9602 960101 556.60 line-9602
+XXXXXXXX.com PAYMENT 9601 960103 1744.10 9456
+XXXXXXXX.com ALTERNET 9603 960201 1187.50 TCP-bt1-128k%5.00
+XXXXXXXX.com ALTERNET 9603 960201 556.60 line-9603
+XXXXXXXX.com PAYMENT 9602 960205 1358.37 9834
diff --git a/test/nasty.awk b/test/nasty.awk
new file mode 100644
index 0000000..b9c20c8
--- /dev/null
+++ b/test/nasty.awk
@@ -0,0 +1,92 @@
+#From hankedr@manatee.dms.auburn.edu Tue Oct 13 22:15:59 1998
+#Return-Path: <hankedr@manatee.dms.auburn.edu>
+#Received: from cssun.mathcs.emory.edu (cssun.mathcs.emory.edu [170.140.150.1])
+# by dmx.netvision.net.il (8.9.0.Beta5/8.8.6) with ESMTP id PAA03924
+# for <arobbins@netvision.net.il>; Tue, 13 Oct 1998 15:32:13 +0200 (IST)
+#Received: from mescaline.gnu.org (we-refuse-to-spy-on-our-users@mescaline.gnu.org [158.121.106.21]) by cssun.mathcs.emory.edu (8.7.5/8.6.9-940818.01cssun) with ESMTP id KAA11644 for <arnold@mathcs.emory.edu>; Tue, 13 Oct 1998 10:22:32 -0400 (EDT)
+#Received: from manatee.dms.auburn.edu (manatee.dms.auburn.edu [131.204.53.104])
+# by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id KAA03250
+# for <arnold@gnu.org>; Tue, 13 Oct 1998 10:25:32 -0400
+#Received: (from hankedr@localhost)
+# by manatee.dms.auburn.edu (8.9.1a/8.9.1) id JAA13348;
+# Tue, 13 Oct 1998 09:22:29 -0500 (CDT)
+#Date: Tue, 13 Oct 1998 09:22:29 -0500 (CDT)
+#Message-Id: <199810131422.JAA13348@manatee.dms.auburn.edu>
+#From: Darrel Hankerson <hankedr@dms.auburn.edu>
+#To: arnold@gnu.org
+#In-reply-to: <199810131313.QAA31784@alpha.netvision.net.il> (message from
+# Aharon Robbins on Tue, 13 Oct 1998 16:10:36 +0200)
+#Subject: Re: full text of bug report?
+#Mime-Version: 1.0
+#Content-Type: text/plain; charset=US-ASCII
+#X-UIDL: bf3fce492dad4ab030c561e7b2f27d0a
+#Status: RO
+#
+# Do you have the full text of the a = a "\n" f() bug report?
+# I can't find it.... I'm not sure there really is a bug.
+#
+#Yes, see below.
+#
+#His example has unnecessary fragments (in particular, the use of
+#gensub is irrelevant). As I wrote to you earlier, the interesting
+#question for me is:
+#
+# Is the concatenation result undefined? If the result is defined or
+# implementation-dependent, then gawk has a bug.
+#
+#
+#=== Original report =====================================================
+#From: Attila Torcsvari <arcdev@mail.matav.hu>
+#To: "'bug-gnu-utils@prep.ai.mit.edu'" <bug-gnu-utils@gnu.org>
+#Subject: gawk 3.0.3 bug
+#Date: Thu, 17 Sep 1998 18:12:13 +0200
+#MIME-Version: 1.0
+#Content-Transfer-Encoding: 7bit
+#Resent-From: bug-gnu-utils@gnu.org
+#X-Mailing-List: <bug-gnu-utils@gnu.org> archive/latest/3396
+#X-Loop: bug-gnu-utils@gnu.org
+#Precedence: list
+#Resent-Sender: bug-gnu-utils-request@gnu.org
+#Content-Transfer-Encoding: 7bit
+#Content-Type: text/plain; charset="us-ascii"
+#Content-Length: 618
+#
+#Bug-gnuers,
+#please pass it to the responsible.
+#
+#The following generates something interesting:
+#
+BEGIN{
+a="aaaaa"
+a=a a #10
+a=a a #20
+a=a a #40
+a=a a #80
+a=a a #160
+a=a a # i.e. a is long enough
+
+a=a"\n"f() # this causes the trouble
+print a # guess the result
+}
+
+function f()
+{
+#print "a before: ", a
+#a=gensub("a","123,","g",a) # 'a' will be just a bit longer (4 times, but still should fit: 4*160=640)
+gsub(/a/, "123", a)
+#print "a after: ", a
+return "X"
+}
+#
+#Possible reason:
+#during f the a is modified,
+#it can be even freed, because gensub modifies its size
+#the printout contains trash.
+#
+#Used version: VC compiled WinNT 32 bit Intel.
+#
+#Regards,
+#
+#Attila Torcsvari
+#Arcanum Development
+#
diff --git a/test/nasty.ok b/test/nasty.ok
new file mode 100644
index 0000000..0ee1a73
--- /dev/null
+++ b/test/nasty.ok
@@ -0,0 +1,2 @@
+aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
+X
diff --git a/test/nasty2.awk b/test/nasty2.awk
new file mode 100644
index 0000000..cb0bd6d
--- /dev/null
+++ b/test/nasty2.awk
@@ -0,0 +1,20 @@
+# Based on nasty.awk, test same thing for printf
+#
+BEGIN {
+a="aaaaa"
+a=a a #10
+a=a a #20
+a=a a #40
+a=a a #80
+a=a a #160
+a=a a # i.e. a is long enough
+
+printf("a = %s, f() = %s\n", a, f())
+print a
+}
+
+function f()
+{
+gsub(/a/, "123", a)
+return "X"
+}
diff --git a/test/nasty2.ok b/test/nasty2.ok
new file mode 100644
index 0000000..9b62bf0
--- /dev/null
+++ b/test/nasty2.ok
@@ -0,0 +1,2 @@
+a = aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa, f() = X
+123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123123
diff --git a/test/negexp.awk b/test/negexp.awk
new file mode 100644
index 0000000..3b3a3c0
--- /dev/null
+++ b/test/negexp.awk
@@ -0,0 +1 @@
+BEGIN { a = -2; print 10^a }
diff --git a/test/negexp.ok b/test/negexp.ok
new file mode 100644
index 0000000..6e6566c
--- /dev/null
+++ b/test/negexp.ok
@@ -0,0 +1 @@
+0.01
diff --git a/test/nested.awk b/test/nested.awk
new file mode 100644
index 0000000..5284b55
--- /dev/null
+++ b/test/nested.awk
@@ -0,0 +1,123 @@
+# From james@ruari-quinn.demon.co.uk Thu Jun 5 11:43:58 2003
+# Return-Path: <james@ruari-quinn.demon.co.uk>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h558eVui012655
+# for <arnold@localhost>; Thu, 5 Jun 2003 11:43:58 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Thu, 05 Jun 2003 11:43:58 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Thu Jun 5 11:43:29 2003)
+# X-From_: james@ruari-quinn.demon.co.uk Wed Jun 4 20:09:54 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h54H9oY05088 for <arobbins@actcom.co.il>;
+# Wed, 4 Jun 2003 20:09:52 +0300 (EET DST)
+# (rfc931-sender: smtp.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h54HB8To002721
+# for <arobbins@actcom.co.il>; Wed, 4 Jun 2003 20:11:09 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7/8.11.6) with ESMTP id h54H9li15411
+# for <arnold@skeeve.com>; Wed, 4 Jun 2003 13:09:47 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.20)
+# id 19Nbli-0001kD-BL
+# for bug-gawk@gnu.org; Wed, 04 Jun 2003 13:09:46 -0400
+# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.20)
+# id 19NbZ5-0004V2-71
+# for bug-gawk@gnu.org; Wed, 04 Jun 2003 12:56:43 -0400
+# Received: from cicero.e-mis.co.uk ([212.240.194.162])
+# by monty-python.gnu.org with esmtp (Exim 4.20)
+# id 19NbYK-0003c7-AP
+# for bug-gawk@gnu.org; Wed, 04 Jun 2003 12:55:56 -0400
+# Received: from [10.139.58.254] (helo=tacitus)
+# by cicero.e-mis.co.uk with esmtp (Exim 3.35 #1 (Debian))
+# id 19NbWO-0007Qv-00
+# for <bug-gawk@gnu.org>; Wed, 04 Jun 2003 17:53:56 +0100
+# Received: from james by tacitus with local (Exim 3.36 #1 (Debian))
+# id 19NbWO-0000cK-00
+# for <bug-gawk@gnu.org>; Wed, 04 Jun 2003 17:53:56 +0100
+# To: bug-gawk@gnu.org
+# Subject: 3.1.0 regression
+# Mail-Copies-To: never
+# From: James Troup <james@nocrew.org>
+# User-Agent: Gnus/5.090017 (Oort Gnus v0.17) Emacs/20.7 (gnu/linux)
+# Date: Wed, 04 Jun 2003 17:53:56 +0100
+# Message-ID: <874r35wzq3.fsf@nocrew.org>
+# MIME-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Sender: James Troup <james@ruari-quinn.demon.co.uk>
+# X-Spam-Status: No, hits=-3.9 required=5.0
+# tests=EMAIL_ATTRIBUTION,SIGNATURE_SHORT_DENSE,SPAM_PHRASE_00_01,
+# USER_AGENT
+# version=2.41
+# X-Spam-Level:
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: R
+#
+# Hi Aharon,
+#
+# This bug report comes from the Debian bug tracking system. You can
+# view the full log at:
+#
+# http://bugs.debian.org/188345
+#
+# Like my other bug, this is a regression from 3.1.0 and I've reproduced
+# this problem with 3.1.2d.
+#
+# "Nikita V. Youshchenko" <yoush@cs.msu.su> writes:
+#
+# | Package: gawk
+# | Version: 1:3.1.2-2
+# | Severity: normal
+# | Tags: sid
+# |
+# | After upgrading gawk from woody to sid, I found one of my scripts not
+# | working. I explored this a little and found minimal script to reproduce
+# | the problem.
+# |
+# | File bug.awk is the following:
+# |
+BEGIN {
+ WI_total = 0
+}
+{
+ WI_total++
+ {
+ split ( $1, sws, "_" )
+ a = sws[1]
+ }
+ print(sws[1])
+ print(a)
+}
+# |
+# | The second print should output the same what first print poutputs, but
+# | with gawk 3.1.2-2 it outputs nothing:
+# | > echo a_b | gawk -f bug.awk
+# | a
+# |
+# | >
+# |
+# | With gawk from stable I get what expexted:
+# | > echo a_b | gawk -f bug.awk
+# | a
+# | a
+# | >
+# |
+# | If I remove "WI_total++" line, bug disapperas
+# |
+# | -- System Information:
+# | Debian Release: 3.0
+# | Architecture: i386
+# | Kernel: Linux zigzag 2.4.19 16:49:13 MSK 2003 i686
+# | Locale: LANG=ru_RU.KOI8-R, LC_CTYPE=ru_RU.KOI8-R
+# |
+# | Versions of packages gawk depends on:
+# | ii libc6 2.3.1-16 GNU C Library: Shared libraries an
+# |
+# | -- no debconf information
+#
+# --
+# James
+#
diff --git a/test/nested.in b/test/nested.in
new file mode 100644
index 0000000..31b658b
--- /dev/null
+++ b/test/nested.in
@@ -0,0 +1 @@
+a_b
diff --git a/test/nested.ok b/test/nested.ok
new file mode 100644
index 0000000..7e8a165
--- /dev/null
+++ b/test/nested.ok
@@ -0,0 +1,2 @@
+a
+a
diff --git a/test/nfldstr.awk b/test/nfldstr.awk
new file mode 100644
index 0000000..09b4a2b
--- /dev/null
+++ b/test/nfldstr.awk
@@ -0,0 +1,13 @@
+$1 == 0 {
+ print "bug"
+}
+{
+ $0 = "0"
+ if (!$0)
+ print "another bug"
+ $0 = a = "0"
+ if (!$0)
+ print "yet another bug"
+ if ($1)
+ print "a buggie"
+}
diff --git a/test/nfldstr.in b/test/nfldstr.in
new file mode 100644
index 0000000..8b13789
--- /dev/null
+++ b/test/nfldstr.in
@@ -0,0 +1 @@
+
diff --git a/test/nfldstr.ok b/test/nfldstr.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/nfldstr.ok
diff --git a/test/nfneg.awk b/test/nfneg.awk
new file mode 100644
index 0000000..6d54ee0
--- /dev/null
+++ b/test/nfneg.awk
@@ -0,0 +1 @@
+BEGIN { NF -= 2 ; print }
diff --git a/test/nfneg.ok b/test/nfneg.ok
new file mode 100644
index 0000000..bcdb037
--- /dev/null
+++ b/test/nfneg.ok
@@ -0,0 +1,2 @@
+gawk: nfneg.awk:1: fatal: NF set to negative value
+EXIT CODE: 2
diff --git a/test/nfset.awk b/test/nfset.awk
new file mode 100644
index 0000000..09ebd08
--- /dev/null
+++ b/test/nfset.awk
@@ -0,0 +1 @@
+{ NF = 5 ; print }
diff --git a/test/nfset.in b/test/nfset.in
new file mode 100644
index 0000000..43329b5
--- /dev/null
+++ b/test/nfset.in
@@ -0,0 +1,5 @@
+1 2
+1 2 3 4
+1 2 3 4 5
+1 2 3 4 5 6 7 8
+1
diff --git a/test/nfset.ok b/test/nfset.ok
new file mode 100644
index 0000000..3ba48ae
--- /dev/null
+++ b/test/nfset.ok
@@ -0,0 +1,5 @@
+1 2
+1 2 3 4
+1 2 3 4 5
+1 2 3 4 5
+1
diff --git a/test/nlfldsep.awk b/test/nlfldsep.awk
new file mode 100644
index 0000000..4fac81d
--- /dev/null
+++ b/test/nlfldsep.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "A" }
+{print NF; for (i = 1; i <= NF; i++) print $i ; print ""}
diff --git a/test/nlfldsep.in b/test/nlfldsep.in
new file mode 100644
index 0000000..7b2317f
--- /dev/null
+++ b/test/nlfldsep.in
@@ -0,0 +1,5 @@
+some stuff
+more stuffA
+junk
+stuffA
+final
diff --git a/test/nlfldsep.ok b/test/nlfldsep.ok
new file mode 100644
index 0000000..6684916
--- /dev/null
+++ b/test/nlfldsep.ok
@@ -0,0 +1,13 @@
+4
+some
+stuff
+more
+stuff
+
+2
+junk
+stuff
+
+1
+final
+
diff --git a/test/nlinstr.awk b/test/nlinstr.awk
new file mode 100644
index 0000000..f403715
--- /dev/null
+++ b/test/nlinstr.awk
@@ -0,0 +1,8 @@
+BEGIN { RS = "" }
+
+{
+ if (/^@/)
+ print "not ok"
+ else
+ print "ok"
+}
diff --git a/test/nlinstr.in b/test/nlinstr.in
new file mode 100644
index 0000000..65aaaf9
--- /dev/null
+++ b/test/nlinstr.in
@@ -0,0 +1,2 @@
+line 1
+@line 2
diff --git a/test/nlinstr.ok b/test/nlinstr.ok
new file mode 100644
index 0000000..9766475
--- /dev/null
+++ b/test/nlinstr.ok
@@ -0,0 +1 @@
+ok
diff --git a/test/nlstrina.awk b/test/nlstrina.awk
new file mode 100644
index 0000000..41dbd5f
--- /dev/null
+++ b/test/nlstrina.awk
@@ -0,0 +1,77 @@
+# From E.Ab@chem.rug.nl Wed Aug 2 13:16:53 2000
+# Received: from mail.actcom.co.il
+# by localhost with POP3 (fetchmail-5.1.2)
+# for arnold@localhost (single-drop); Wed, 02 Aug 2000 13:16:53 -0400 (EDT)
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id MAA21699 for <arobbins@actcom.co.il>;
+# Wed, 2 Aug 2000 12:20:38 +0300 (EET DST)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+# Received: from freefriends.org (freefriends.org [63.85.55.109])
+# by lmail.actcom.co.il (8.9.3/8.9.1) with ESMTP id LAA22723
+# for <arobbins@actcom.co.il>; Wed, 2 Aug 2000 11:23:22 +0300
+# Received: from mescaline.gnu.org (mescaline.gnu.org [158.121.106.21])
+# by freefriends.org (8.9.3/8.9.3) with ESMTP id FAA23582
+# for <arnold@skeeve.com>; Wed, 2 Aug 2000 05:18:59 -0400
+# Received: from dep.chem.rug.nl (dep.chem.rug.nl [129.125.7.81])
+# by mescaline.gnu.org (8.9.1a/8.9.1) with ESMTP id FAA30670;
+# Wed, 2 Aug 2000 05:20:24 -0400
+# Received: from rugmd34.chem.rug.nl (rugmd34.chem.rug.nl [129.125.42.34])
+# by dep.chem.rug.nl (8.9.3/8.9.3/Debian 8.9.3-21) with ESMTP id LAA17089;
+# Wed, 2 Aug 2000 11:20:23 +0200
+# Received: from chem.rug.nl (localhost [127.0.0.1]) by rugmd34.chem.rug.nl (980427.SGI.8.8.8/980728.SGI.AUTOCF) via ESMTP id LAA25392; Wed, 2 Aug 2000 11:20:22 +0200 (MDT)
+# Sender: E.Ab@chem.rug.nl
+# Message-ID: <3987E7D5.2BDC5FD3@chem.rug.nl>
+# Date: Wed, 02 Aug 2000 11:20:21 +0200
+# From: Eiso AB <E.Ab@chem.rug.nl>
+# X-Mailer: Mozilla 4.72C-SGI [en] (X11; I; IRIX 6.5 IP32)
+# X-Accept-Language: en
+# MIME-Version: 1.0
+# To: bug-gnu-utils@gnu.org, arnold@gnu.org
+# Subject: bug? [GNU Awk 3.0.5]
+#
+# Content-Type: text/plain; charset=us-ascii
+# Content-Transfer-Encoding: 7bit
+# X-UIDL: \f8"!(8G!!ZL$#!h>X!!
+# Status: R
+#
+# hi Arnold,
+#
+#
+# Please try the script beneath...
+# I'm not sure if this is a bug or not, but I would expect
+# the empty string as an array index just to be treated
+# like any other string
+#
+# so if ("" in ta) would be true, and for ( i in ta ) should loop only once.
+#
+BEGIN {
+ v=""
+ ta[v]++
+ if ( v in ta) print "a",v,++ta[v],ta[v]
+ print "b",v,++ta[v],ta[v]
+ for( i in ta) print "c",++c,i,ta[i]
+}
+#
+# goodluck, Eiso
+#
+# --
+# _________
+# _______________________________/ Eiso AB \_________________________
+#
+# o
+#
+# o Dept. of Biochemistry
+# University of Groningen
+# The Netherlands
+# o
+# . .
+# o ^ mailto:eiso@chem.rug.nl
+# | - _ mailto:eiso@dds.nl
+# \__|__/ http://md.chem.rug.nl/~eiso
+# | tel 4326
+# |
+# / \
+# / \
+# | |
+# ________ ._| |_. ________________________________________________
+#
diff --git a/test/nlstrina.ok b/test/nlstrina.ok
new file mode 100644
index 0000000..690f1a2
--- /dev/null
+++ b/test/nlstrina.ok
@@ -0,0 +1,3 @@
+a 2 2
+b 3 3
+c 1 3
diff --git a/test/noeffect.awk b/test/noeffect.awk
new file mode 100644
index 0000000..b67a5c5
--- /dev/null
+++ b/test/noeffect.awk
@@ -0,0 +1,5 @@
+BEGIN {
+ s == "hello, world";
+ s + 1
+ ;;
+}
diff --git a/test/noeffect.ok b/test/noeffect.ok
new file mode 100644
index 0000000..d2da47a
--- /dev/null
+++ b/test/noeffect.ok
@@ -0,0 +1,4 @@
+gawk: noeffect.awk:3: warning: statement may have no effect
+gawk: noeffect.awk:4: warning: statement may have no effect
+gawk: noeffect.awk:2: warning: reference to uninitialized variable `s'
+gawk: noeffect.awk:3: warning: reference to uninitialized variable `s'
diff --git a/test/nofmtch.awk b/test/nofmtch.awk
new file mode 100644
index 0000000..2ea2249
--- /dev/null
+++ b/test/nofmtch.awk
@@ -0,0 +1 @@
+BEGIN { printf "%3\n" }
diff --git a/test/nofmtch.ok b/test/nofmtch.ok
new file mode 100644
index 0000000..297d159
--- /dev/null
+++ b/test/nofmtch.ok
@@ -0,0 +1,2 @@
+gawk: nofmtch.awk:1: warning: [s]printf: format specifier does not have control letter
+%3
diff --git a/test/noloop1.awk b/test/noloop1.awk
new file mode 100644
index 0000000..ae461e3
--- /dev/null
+++ b/test/noloop1.awk
@@ -0,0 +1,70 @@
+# From jhart@avcnet.bates.edu Sun Oct 6 16:05:21 2002
+# Return-Path: <jhart@avcnet.bates.edu>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.11.6/8.11.6) with ESMTP id g96D5Jf28053
+# for <arnold@localhost>; Sun, 6 Oct 2002 16:05:21 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Sun, 06 Oct 2002 16:05:21 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Oct 6 16:06:39 2002)
+# X-From_: jhart@avcnet.bates.edu Sun Oct 6 15:31:59 2002
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id g96CVrS27315 for <arobbins@actcom.co.il>;
+# Sun, 6 Oct 2002 15:31:54 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g96CVqY01629
+# for <arobbins@actcom.co.il>; Sun, 6 Oct 2002 15:31:52 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.6/8.11.6) with ESMTP id g96CVp418974
+# for <arnold@skeeve.com>; Sun, 6 Oct 2002 08:31:51 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.10)
+# id 17yAZa-00055o-00
+# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:50 -0400
+# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10)
+# id 17yAZE-0007eB-00
+# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:29 -0400
+# Received: from avcnet.bates.edu ([134.181.128.62])
+# by monty-python.gnu.org with esmtp (Exim 4.10)
+# id 17yAZ9-0007X3-00
+# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:23 -0400
+# Received: from a5514a.bates.edu (www.bates.edu [134.181.128.62])
+# by avcnet.bates.edu (8.9.3/8.9.3) with ESMTP id IAA05400
+# for <bug-gawk@gnu.org>; Sun, 6 Oct 2002 08:31:20 -0400
+# Date: Sun, 6 Oct 2002 08:36:54 -0400
+# Mime-Version: 1.0 (Apple Message framework v482)
+# Content-Type: text/plain; charset=US-ASCII; format=flowed
+# Subject: Infinite loop in sub/gsub
+# From: jhart@avcnet.bates.edu
+# To: bug-gawk@gnu.org
+# Content-Transfer-Encoding: 7bit
+# Message-Id: <4BC4A4F0-D928-11D6-8E78-00039384A9CC@mail.avcnet.org>
+# X-Mailer: Apple Mail (2.482)
+# X-Spam-Status: No, hits=0.3 required=5.0
+# tests=NO_REAL_NAME,SPAM_PHRASE_00_01,USER_AGENT_APPLEMAIL
+# version=2.41
+# X-Spam-Level:
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# This command line:
+#
+# echo "''Italics with an apostrophe'' embedded''"|gawk -f test.awk
+#
+# where test.awk contains this instruction:
+#
+/''/ { sub(/''(.?[^']+)*''/, "<em>&</em>"); }
+#
+# puts gawk 3.11 into an infinite loop. Whereas, this command works:
+#
+# echo "''Italics with an apostrophe' embedded''"|gawk -f test.awk
+#
+#
+#
+# Platform: Mac OS X 10.1.5/Darwin Kernel Version 5.5: Thu May 30 14:51:26
+# PDT 2002; root:xnu/xnu-201.42.3.obj~1/RELEASE_PPC
+#
+#
diff --git a/test/noloop1.in b/test/noloop1.in
new file mode 100644
index 0000000..da2c2f2
--- /dev/null
+++ b/test/noloop1.in
@@ -0,0 +1 @@
+''Italics with an apostrophe'' embedded''
diff --git a/test/noloop1.ok b/test/noloop1.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/noloop1.ok
diff --git a/test/noloop2.awk b/test/noloop2.awk
new file mode 100644
index 0000000..ae461e3
--- /dev/null
+++ b/test/noloop2.awk
@@ -0,0 +1,70 @@
+# From jhart@avcnet.bates.edu Sun Oct 6 16:05:21 2002
+# Return-Path: <jhart@avcnet.bates.edu>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.11.6/8.11.6) with ESMTP id g96D5Jf28053
+# for <arnold@localhost>; Sun, 6 Oct 2002 16:05:21 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Sun, 06 Oct 2002 16:05:21 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Oct 6 16:06:39 2002)
+# X-From_: jhart@avcnet.bates.edu Sun Oct 6 15:31:59 2002
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id g96CVrS27315 for <arobbins@actcom.co.il>;
+# Sun, 6 Oct 2002 15:31:54 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g96CVqY01629
+# for <arobbins@actcom.co.il>; Sun, 6 Oct 2002 15:31:52 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.6/8.11.6) with ESMTP id g96CVp418974
+# for <arnold@skeeve.com>; Sun, 6 Oct 2002 08:31:51 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.10)
+# id 17yAZa-00055o-00
+# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:50 -0400
+# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10)
+# id 17yAZE-0007eB-00
+# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:29 -0400
+# Received: from avcnet.bates.edu ([134.181.128.62])
+# by monty-python.gnu.org with esmtp (Exim 4.10)
+# id 17yAZ9-0007X3-00
+# for bug-gawk@gnu.org; Sun, 06 Oct 2002 08:31:23 -0400
+# Received: from a5514a.bates.edu (www.bates.edu [134.181.128.62])
+# by avcnet.bates.edu (8.9.3/8.9.3) with ESMTP id IAA05400
+# for <bug-gawk@gnu.org>; Sun, 6 Oct 2002 08:31:20 -0400
+# Date: Sun, 6 Oct 2002 08:36:54 -0400
+# Mime-Version: 1.0 (Apple Message framework v482)
+# Content-Type: text/plain; charset=US-ASCII; format=flowed
+# Subject: Infinite loop in sub/gsub
+# From: jhart@avcnet.bates.edu
+# To: bug-gawk@gnu.org
+# Content-Transfer-Encoding: 7bit
+# Message-Id: <4BC4A4F0-D928-11D6-8E78-00039384A9CC@mail.avcnet.org>
+# X-Mailer: Apple Mail (2.482)
+# X-Spam-Status: No, hits=0.3 required=5.0
+# tests=NO_REAL_NAME,SPAM_PHRASE_00_01,USER_AGENT_APPLEMAIL
+# version=2.41
+# X-Spam-Level:
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# This command line:
+#
+# echo "''Italics with an apostrophe'' embedded''"|gawk -f test.awk
+#
+# where test.awk contains this instruction:
+#
+/''/ { sub(/''(.?[^']+)*''/, "<em>&</em>"); }
+#
+# puts gawk 3.11 into an infinite loop. Whereas, this command works:
+#
+# echo "''Italics with an apostrophe' embedded''"|gawk -f test.awk
+#
+#
+#
+# Platform: Mac OS X 10.1.5/Darwin Kernel Version 5.5: Thu May 30 14:51:26
+# PDT 2002; root:xnu/xnu-201.42.3.obj~1/RELEASE_PPC
+#
+#
diff --git a/test/noloop2.in b/test/noloop2.in
new file mode 100644
index 0000000..b5cb226
--- /dev/null
+++ b/test/noloop2.in
@@ -0,0 +1 @@
+''Italics with an apostrophe' embedded''
diff --git a/test/noloop2.ok b/test/noloop2.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/noloop2.ok
diff --git a/test/nondec.awk b/test/nondec.awk
new file mode 100644
index 0000000..a070c91
--- /dev/null
+++ b/test/nondec.awk
@@ -0,0 +1 @@
+BEGIN { print 0x81c3e8, 0x744018, 00.34 }
diff --git a/test/nondec.ok b/test/nondec.ok
new file mode 100644
index 0000000..8f0404a
--- /dev/null
+++ b/test/nondec.ok
@@ -0,0 +1 @@
+8504296 7618584 0.34
diff --git a/test/nondec2.awk b/test/nondec2.awk
new file mode 100644
index 0000000..681d283
--- /dev/null
+++ b/test/nondec2.awk
@@ -0,0 +1,104 @@
+# From arnold@f7.net Wed Jun 15 08:25:21 2005
+# Return-Path: <arnold@f7.net>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.11/8.12.11) with ESMTP id j5F5P3VC014658
+# for <arnold@localhost>; Wed, 15 Jun 2005 08:25:21 +0300
+# Received: from pop.012.net.il [84.95.5.221]
+# by localhost with POP3 (fetchmail-6.2.5)
+# for arnold@localhost (single-drop); Wed, 15 Jun 2005 08:25:21 +0300 (IDT)
+# Received: from mtain2.012.net.il ([10.220.5.4])
+# by i_mss3.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0II300LQOPS7DA10@i_mss3.012.net.il> for arobbins@012.net.il;
+# Wed, 15 Jun 2005 04:07:19 +0300 (IDT)
+# Received: from VSCAN1 ([10.220.20.1])
+# by i_mtain2.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0II300ETQPS7IEZ4@i_mtain2.012.net.il> for arobbins@012.net.il
+# (ORCPT arobbins@012.net.il); Wed, 15 Jun 2005 04:07:19 +0300 (IDT)
+# Received: from i_mtain2.012.net.il ([10.220.5.4])
+# by VSCAN1 with InterScan Messaging Security Suite; Wed,
+# 15 Jun 2005 04:03:15 +0300
+# Received: from f7.net ([209.61.216.22])
+# by i_mtain2.012.net.il (HyperSendmail v2004.12)
+# with ESMTP id <0II300H7VPS5P1O2@i_mtain2.012.net.il> for arobbins@012.net.il;
+# Wed, 15 Jun 2005 04:07:18 +0300 (IDT)
+# Received: (from arnold@localhost) by f7.net (8.11.7-20030920/8.11.7)
+# id j5F13DT21530 for arobbins@012.net.il; Tue, 14 Jun 2005 21:03:14 -0400
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7-20030920/8.11.7) with ESMTP id j5F136p21454 for
+# <arnold@skeeve.com>; Tue, 14 Jun 2005 21:03:06 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.34)
+# id 1DiMJ6-0002fe-Av for bug-gawk@gnu.org; Tue, 14 Jun 2005 21:03:04 -0400
+# Received: from Debian-exim by monty-python.gnu.org with spam-scanned
+# (Exim 4.34) id 1DiMIp-0003lM-I4 for bug-gawk@gnu.org; Tue,
+# 14 Jun 2005 21:02:47 -0400
+# Received: from [66.187.233.31] (helo=mx1.redhat.com)
+# by monty-python.gnu.org with esmtp (TLS-1.0:DHE_RSA_3DES_EDE_CBC_SHA:24)
+# (Exim 4.34) id 1DiMIp-0003l4-8g for bug-gawk@gnu.org; Tue,
+# 14 Jun 2005 21:02:47 -0400
+# Received: from int-mx1.corp.redhat.com
+# (int-mx1.corp.redhat.com [172.16.52.254]) by mx1.redhat.com (8.12.11/8.12.11)
+# with ESMTP id j5F11EGn027669 for <bug-gawk@gnu.org>; Tue,
+# 14 Jun 2005 21:01:14 -0400
+# Received: from lacrosse.corp.redhat.com
+# (lacrosse.corp.redhat.com [172.16.52.154]) by int-mx1.corp.redhat.com
+# (8.11.6/8.11.6) with ESMTP id j5F11Eu01536 for <bug-gawk@gnu.org>; Tue,
+# 14 Jun 2005 21:01:14 -0400
+# Received: from [192.168.7.71] (vpn50-10.rdu.redhat.com [172.16.50.10])
+# by lacrosse.corp.redhat.com (8.11.6/8.11.6) with ESMTP id j5F118s03225 for
+# <bug-gawk@gnu.org>; Tue, 14 Jun 2005 21:01:09 -0400
+# Date: Tue, 14 Jun 2005 17:57:55 -0700
+# From: Ulrich Drepper <drepper@redhat.com>
+# Subject: non-decimal variable parameters cause crashes
+# To: bug-gawk@gnu.org
+# Message-id: <42AF7D13.5010901@redhat.com>
+# Organization: Red Hat, Inc.
+# MIME-version: 1.0
+# Content-type: multipart/signed; micalg=pgp-sha1;
+# protocol="application/pgp-signature";
+# boundary=------------enig9DEC74140126C224E7DE3E54
+# X-Accept-Language: en-us, en
+# X-Enigmail-Version: 0.91.0.0
+# User-Agent: Mozilla Thunderbird 1.0.2-6 (X11/20050513)
+# Original-recipient: rfc822;arobbins@012.net.il
+# X-Spam-Checker-Version: SpamAssassin 2.63 (2004-01-11) on skeeve.com
+# X-Spam-Level:
+# X-Spam-Status: No, hits=-4.3 required=5.0 tests=AWL,BAYES_00 autolearn=ham
+# version=2.63
+# Status: R
+#
+# This is an OpenPGP/MIME signed message (RFC 2440 and 3156)
+# --------------enig9DEC74140126C224E7DE3E54
+# Content-Type: text/plain; charset=UTF-8
+# Content-Transfer-Encoding: quoted-printable
+#
+# Running
+#
+# gawk --non-decimal-data -v a=3D0x1 'BEGIN { print a+0 }'
+#
+# currently crashes. More details including a patch at
+#
+# https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=3D160421
+#
+# --=20
+# =E2=9E=A7 Ulrich Drepper =E2=9E=A7 Red Hat, Inc. =E2=9E=A7 444 Castro St =
+# =E2=9E=A7 Mountain View, CA =E2=9D=96
+#
+#
+# --------------enig9DEC74140126C224E7DE3E54
+# Content-Type: application/pgp-signature; name="signature.asc"
+# Content-Description: OpenPGP digital signature
+# Content-Disposition: attachment; filename="signature.asc"
+#
+# -----BEGIN PGP SIGNATURE-----
+# Version: GnuPG v1.4.1 (GNU/Linux)
+# Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org
+#
+# iD8DBQFCr30T2ijCOnn/RHQRAp9LAKC+w/vhXW73ps1Pxcy+VGPrT1Su+ACguPnV
+# VstZcFJgJ5GZ1YvDExsOZZI=
+# =xmXh
+# -----END PGP SIGNATURE-----
+#
+# --------------enig9DEC74140126C224E7DE3E54--
+#
+BEGIN { print a+0 }
diff --git a/test/nondec2.ok b/test/nondec2.ok
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test/nondec2.ok
@@ -0,0 +1 @@
+1
diff --git a/test/nonl.awk b/test/nonl.awk
new file mode 100644
index 0000000..c227083
--- /dev/null
+++ b/test/nonl.awk
@@ -0,0 +1 @@
+0 \ No newline at end of file
diff --git a/test/nonl.ok b/test/nonl.ok
new file mode 100644
index 0000000..24bd9b7
--- /dev/null
+++ b/test/nonl.ok
@@ -0,0 +1 @@
+gawk: nonl.awk:1: warning: source file does not end in newline
diff --git a/test/noparms.awk b/test/noparms.awk
new file mode 100644
index 0000000..2c7ccc7
--- /dev/null
+++ b/test/noparms.awk
@@ -0,0 +1 @@
+function x(a, b, c , ,) {}
diff --git a/test/noparms.ok b/test/noparms.ok
new file mode 100644
index 0000000..504c4e4
--- /dev/null
+++ b/test/noparms.ok
@@ -0,0 +1,5 @@
+gawk: noparms.awk:1: function x(a, b, c , ,) {}
+gawk: noparms.awk:1: ^ syntax error
+gawk: noparms.awk:1: function x(a, b, c , ,) {}
+gawk: noparms.awk:1: ^ syntax error
+EXIT CODE: 1
diff --git a/test/nors.in b/test/nors.in
new file mode 100644
index 0000000..f90d9ec
--- /dev/null
+++ b/test/nors.in
@@ -0,0 +1 @@
+A B C D E \ No newline at end of file
diff --git a/test/nors.ok b/test/nors.ok
new file mode 100644
index 0000000..54d5aab
--- /dev/null
+++ b/test/nors.ok
@@ -0,0 +1,2 @@
+E
+E
diff --git a/test/nulrsend.awk b/test/nulrsend.awk
new file mode 100644
index 0000000..6b8cb8c
--- /dev/null
+++ b/test/nulrsend.awk
@@ -0,0 +1,112 @@
+# From murata@nips.ac.jp Tue Aug 6 08:02:14 2002
+# Return-Path: <murata@nips.ac.jp>
+# Received: from localhost (aahz [127.0.0.1])
+# by skeeve.com (8.11.2/8.11.2) with ESMTP id g7652Ej01784
+# for <arnold@localhost>; Tue, 6 Aug 2002 08:02:14 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.7.4)
+# for arnold@localhost (single-drop); Mon, 05 Aug 2002 22:02:14 -0700 (PDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue Aug 6 08:13:06 2002)
+# X-From_: murata@nips.ac.jp Tue Aug 6 07:26:32 2002
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id g764QTu27770 for <arobbins@actcom.co.il>;
+# Tue, 6 Aug 2002 07:26:30 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by lmail.actcom.co.il (8.11.6/8.11.6) with ESMTP id g764QRi04673
+# for <arobbins@actcom.co.il>; Tue, 6 Aug 2002 07:26:28 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.6/8.11.6) with ESMTP id g764QQ920486
+# for <arnold@skeeve.com>; Tue, 6 Aug 2002 00:26:26 -0400
+# Received: from ccms.nips.ac.jp ([133.48.72.2])
+# by fencepost.gnu.org with smtp (Exim 3.35 #1 (Debian))
+# id 17bvvL-00011b-00
+# for <bug-gawk@gnu.org>; Tue, 06 Aug 2002 00:26:23 -0400
+# Received: (from murata@localhost)
+# by ccms.nips.ac.jp (8.9.3+3.2W/3.7W) id NAA01026;
+# Tue, 6 Aug 2002 13:26:21 +0900
+# Date: Tue, 6 Aug 2002 13:26:21 +0900
+# Message-Id: <200208060426.NAA01026@ccms.nips.ac.jp>
+# To: bug-gawk@gnu.org
+# Cc: murata@nips.ac.jp
+# Subject: Bug Report (gawk)
+# From: murata@nips.ac.jp (MURATA Yasuhisa)
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=US-ASCII
+# X-Mailer: mnews [version 1.21PL5] 1999-04/04(Sun)
+#
+# Hello, I report a bug.
+#
+#
+# == PROGRAM (filename: atest.awk) ==
+BEGIN {
+ RS=""
+}
+
+NR==1 {
+ print 1
+ RS="\n"
+ next
+}
+
+NR==2 {
+ print 2
+ RS=""
+ next
+}
+
+NR==3 {
+ print 3
+ RS="\n"
+ next
+}
+# ====
+#
+# == DATA (filename: atest.txt) ==
+# 1111
+#
+# 2222
+#
+# ====
+# note: last line is "\n".
+#
+#
+# == RUN (gawk) ==
+# > gawk -f atest.awk atest.txt
+# 1
+# 2
+# (no stop!)
+# ====
+#
+# == RUN (nawk) ==
+# > nawk -f atest.awk atest.txt
+# 1
+# 2
+# 3
+# ====
+#
+# == VERSION ==
+# > gawk --version
+# GNU Awk 3.1.1
+# Copyright (C) 1989, 1991-2002 Free Software Foundation.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+# ==
+#
+# --
+# MURATA Yasuhisa, Technical Staff
+# National Institute for Physiological Sciences
+# E-mail: murata@nips.ac.jp
diff --git a/test/nulrsend.in b/test/nulrsend.in
new file mode 100644
index 0000000..af3eba1
--- /dev/null
+++ b/test/nulrsend.in
@@ -0,0 +1,4 @@
+1111
+
+2222
+
diff --git a/test/nulrsend.ok b/test/nulrsend.ok
new file mode 100644
index 0000000..1191247
--- /dev/null
+++ b/test/nulrsend.ok
@@ -0,0 +1,2 @@
+1
+2
diff --git a/test/numindex.awk b/test/numindex.awk
new file mode 100644
index 0000000..1762e45
--- /dev/null
+++ b/test/numindex.awk
@@ -0,0 +1,55 @@
+#To: bug-gnu-utils@gnu.org
+#cc: arnold@gnu.org
+#Subject: Possible bug in GNU Awk 3.0.4
+#Date: Wed, 24 Nov 1999 21:47:24 +0000
+#From: Daniel Elphick <de397@ecs.soton.ac.uk>
+#Message-Id: <E11qkG4-0000l0-00@cameron>
+#
+#This is a multipart MIME message.
+#
+#--==_Exmh_-11192982200
+#Content-Type: text/plain; charset=us-ascii
+#
+#
+#When I use the attached awk script unique on the attached data file, it
+#reports that all 4 lines of the data are the same. Using mawk it correctly
+#reports that there are no repeats.
+#
+#I don't know if there are limits on the size of associative array keys for the
+#purposes of reliable indexing but if there is then it is not (obviously)
+#documented.
+#
+#
+#--==_Exmh_-11192982200
+#Content-Type: text/plain ; name="data"; charset=us-ascii
+#Content-Description: data
+#Content-Disposition: attachment; filename="data"
+#
+#322322111111112232231111
+#322322111111112213223111
+#322322111111112211132231
+#322322111111112211113223
+#
+#--==_Exmh_-11192982200
+#Content-Type: text/plain ; name="unique"; charset=us-ascii
+#Content-Description: unique
+#Content-Disposition: attachment; filename="unique"
+#
+{
+ if($0 in a)
+ {
+ printf("line %d has been seen before at line %d\n", NR, a[$0])
+ repeat_count += 1
+ }
+ else
+ {
+ a[$0] = NR
+ }
+ count += 1
+}
+END {
+# printf("%d %f%%\n", repeat_count, (float)repeat_count / count * 100)
+ printf("%d %f%%\n", repeat_count, repeat_count / count * 100)
+}
+#
+#--==_Exmh_-11192982200--
diff --git a/test/numindex.in b/test/numindex.in
new file mode 100644
index 0000000..3852058
--- /dev/null
+++ b/test/numindex.in
@@ -0,0 +1,4 @@
+322322111111112232231111
+322322111111112213223111
+322322111111112211132231
+322322111111112211113223
diff --git a/test/numindex.ok b/test/numindex.ok
new file mode 100644
index 0000000..8e086f6
--- /dev/null
+++ b/test/numindex.ok
@@ -0,0 +1 @@
+0 0.000000%
diff --git a/test/numsubstr.awk b/test/numsubstr.awk
new file mode 100644
index 0000000..7a30993
--- /dev/null
+++ b/test/numsubstr.awk
@@ -0,0 +1 @@
+{ print substr(1000+$1, 2) }
diff --git a/test/numsubstr.in b/test/numsubstr.in
new file mode 100644
index 0000000..ac65c36
--- /dev/null
+++ b/test/numsubstr.in
@@ -0,0 +1,3 @@
+5000
+10000
+5000
diff --git a/test/numsubstr.ok b/test/numsubstr.ok
new file mode 100644
index 0000000..86ec13c
--- /dev/null
+++ b/test/numsubstr.ok
@@ -0,0 +1,3 @@
+000
+1000
+000
diff --git a/test/octsub.awk b/test/octsub.awk
new file mode 100644
index 0000000..65e9689
--- /dev/null
+++ b/test/octsub.awk
@@ -0,0 +1 @@
+BEGIN{ ++x[03]; print "/" x[0] "/" x[3] "/"}
diff --git a/test/octsub.ok b/test/octsub.ok
new file mode 100644
index 0000000..95cbdc7
--- /dev/null
+++ b/test/octsub.ok
@@ -0,0 +1 @@
+//1/
diff --git a/test/ofmt.awk b/test/ofmt.awk
new file mode 100644
index 0000000..a7b63d6
--- /dev/null
+++ b/test/ofmt.awk
@@ -0,0 +1,53 @@
+# From dragon!knorke.saar.de!florian Wed Jul 16 10:47:27 1997
+# Return-Path: <dragon!knorke.saar.de!florian>
+# Message-ID: <19970716164451.63610@knorke.saar.de>
+# Date: Wed, 16 Jul 1997 16:44:51 +0200
+# From: Florian La Roche <florian@knorke.saar.de>
+# To: bug-gnu-utils@prep.ai.mit.edu
+# CC: arnold@gnu.ai.mit.edu
+# Subject: bug in gawk 3.0.3
+# MIME-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# X-Mailer: Mutt 0.76
+# Status: R
+# Content-Length: 1725
+# X-Lines: 177
+# X-Display-Position: 0
+#
+# I have a problem with gawk 3.0.3 on linux with libc 5.4.33.
+# The memory is corrupted, if I use OFMT = "%.12g".
+# With OFMT = "%.6g" evrything works fine, but I don't have enough
+# digits for the computation.
+#
+# Thanks a lot,
+# Florian La Roche
+#
+# Here is the sample awk-Script together with sample data:
+#
+BEGIN {
+ OFMT = "%.12g"
+ big = 99999999999
+ lowest = big
+ small = 0
+ highest = small
+ dir = ""
+ }
+$0 ~ /^[0-9]+$/ {
+ # some old awks do not think $0 is numeric, so use $1
+ if ($1 < lowest)
+ lowest = $1
+ if ($1 > highest)
+ highest = $1
+ next
+}
+$0 ~ /\/\.:$/ {
+ if (dir != "") {
+ if (highest != small)
+ print dir, highest, lowest
+ else
+ print dir, "-", "-"
+ }
+ dir = substr($0, 1, length($0)-3) # trim off /.:
+ lowest = big
+ highest = small
+}
diff --git a/test/ofmt.in b/test/ofmt.in
new file mode 100644
index 0000000..6fffdfe
--- /dev/null
+++ b/test/ofmt.in
@@ -0,0 +1,136 @@
+alt/binaries/warez/crypto/.:
+..
+...
+
+alt/fan/douglas-adams/.:
+..
+...
+7478
+7479
+7480
+7481
+7482
+7483
+7484
+7485
+7486
+7490
+7488
+7489
+7491
+7407
+7408
+7409
+7410
+7411
+7412
+7413
+7414
+7415
+7416
+7417
+7418
+7419
+7420
+7421
+7422
+7423
+7424
+7425
+7426
+7427
+7428
+7429
+7430
+7431
+7432
+7433
+7434
+7435
+7436
+7437
+7438
+7439
+7440
+7441
+7442
+7443
+7444
+7445
+7446
+7447
+7455
+7449
+7450
+7451
+7452
+7453
+7454
+7456
+7457
+7458
+7459
+7460
+7461
+7462
+7463
+7464
+7465
+7466
+7467
+7468
+7469
+7470
+7471
+7472
+7473
+7475
+7477
+
+alt/os/linux/.:
+..
+...
+
+
+alt/security/.:
+..
+...
+pgp
+ripem
+keydist
+index
+9617
+9618
+9619
+9620
+9625
+9621
+9626
+9622
+9623
+9624
+9627
+9628
+9629
+9630
+9631
+9632
+9633
+9634
+9636
+9637
+9638
+9639
+9640
+9641
+
+alt/security/index/.:
+..
+...
+
+alt/security/keydist/.:
+..
+...
+253
+
+/.:
diff --git a/test/ofmt.ok b/test/ofmt.ok
new file mode 100644
index 0000000..389c1ef
--- /dev/null
+++ b/test/ofmt.ok
@@ -0,0 +1,6 @@
+alt/binaries/warez/crypto - -
+alt/fan/douglas-adams 7491 7407
+alt/os/linux - -
+alt/security 9641 9617
+alt/security/index - -
+alt/security/keydist 253 253
diff --git a/test/ofmtbig.awk b/test/ofmtbig.awk
new file mode 100644
index 0000000..f1b2384
--- /dev/null
+++ b/test/ofmtbig.awk
@@ -0,0 +1,125 @@
+#
+# [USEMAP]
+#
+# Problem Report gnu/7821
+#
+# awk in free(): warning: chunk is already free.
+#
+# Confidential
+# no
+#
+# Severity
+# serious
+#
+# Priority
+# medium
+#
+# Responsible
+# freebsd-bugs@freebsd.org
+#
+# State
+# suspended
+#
+# Class
+# sw-bug
+#
+# Submitter-Id
+# current-users
+#
+# Arrival-Date
+# Thu Sep 3 10:30:00 PDT 1998
+#
+# Last-Modified
+# Thu Sep 17 02:04:26 PDT 1998
+#
+# Originator
+# Alexander Litvin archer@lucky.net
+#
+# Organization
+#
+#
+#Lucky Net ltd.
+#
+# Release
+# FreeBSD 3.0-CURRENT i386
+#
+# Environment
+#
+#
+#FreeBSD grape.carrier.kiev.ua 3.0-CURRENT FreeBSD 3.0-CURRENT #121: Thu Sep 3
+#1
+#1:21:44 EEST 1998 archer@grape.carrier.kiev.ua:/usr/src/sys/compile/GRAPE
+#i
+#386
+#
+# Description
+#
+#
+#The problem first appeared when GNU awk in 3.0-CURRENT was apgraded to
+#3.0.3. I run C-News, which uses awk extensively. After awk apgrade C-News
+#expire stopped to work. It appeared that some GNU awk 3.0.3 programms when
+#given absolutely legitimate input fail, giving out a number of messages:
+#
+#awk in free(): warning: chunk is already free.
+#
+# How-To-Repeat
+#
+#
+#Run the following awk program (it is cut out of C-News expire scripts).
+#I was not able to cut it down more -- omitting some portions of the
+#code (e.g. OFMT line), make error go away in this case, though it
+#certainly does not fix awk.
+#
+#----------------cut-here----------------
+#!/usr/bin/awk -f
+BEGIN {
+ OFMT = "%.12g"
+ big = 99999999999
+ lowest = big
+ small = 0
+ highest = small
+}
+
+$0 ~ /^[0-9]+$/ {
+ if ($1 < lowest)
+ lowest = $1
+ if ($1 > highest)
+ highest = $1
+ next
+}
+
+$0 ~ /^[a-z]+/ {
+ print dir, highest, lowest
+ dir = $0
+ lowest = big
+ highest = small
+}
+#----------------cut-here----------------
+#
+#To get the error, just give this script the following input:
+#----------------cut-here----------------
+#a
+#1
+#b
+#----------------cut-here----------------
+#
+# Fix
+#
+#
+#I was not able to track the error in awk sources. As a workaround,
+#I just reverted to GNU awk 2.15.5.
+#
+# Audit-Trail
+#
+#
+#State-Changed-From-To: open-suspended
+#State-Changed-By: phk
+#State-Changed-When: Thu Sep 17 02:04:08 PDT 1998
+#State-Changed-Why:
+#reported to GNU maintainer.
+#
+# Submit Followup
+# _________________________________________________________________
+#
+#
+# www@freebsd.org
diff --git a/test/ofmtbig.in b/test/ofmtbig.in
new file mode 100644
index 0000000..f1e80ce
--- /dev/null
+++ b/test/ofmtbig.in
@@ -0,0 +1,3 @@
+a
+1
+b
diff --git a/test/ofmtbig.ok b/test/ofmtbig.ok
new file mode 100644
index 0000000..0fe9251
--- /dev/null
+++ b/test/ofmtbig.ok
@@ -0,0 +1,2 @@
+ 0 99999999999
+a 1 1
diff --git a/test/ofmtfidl.awk b/test/ofmtfidl.awk
new file mode 100644
index 0000000..181e071
--- /dev/null
+++ b/test/ofmtfidl.awk
@@ -0,0 +1,85 @@
+# From djones@zoonami.com Wed Jun 13 17:46:27 2001
+# Received: from mail.actcom.co.il [192.114.47.13]
+# by localhost with POP3 (fetchmail-5.5.0)
+# for arnold@localhost (single-drop); Wed, 13 Jun 2001 17:46:27 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Wed Jun 13 17:47:09 2001)
+# X-From_: djones@zoonami.com Wed Jun 13 17:45:40 2001
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id RAA07057 for <arobbins@actcom.co.il>;
+# Wed, 13 Jun 2001 17:45:34 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from billohost.com (www.billohost.com [209.196.35.10])
+# by lmail.actcom.co.il (8.11.2/8.11.2) with ESMTP id f5DEjSO24028
+# for <arobbins@actcom.co.il>; Wed, 13 Jun 2001 17:45:33 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by billohost.com (8.9.3/8.9.3) with ESMTP id KAA24625
+# for <arnold@skeeve.com>; Wed, 13 Jun 2001 10:44:43 -0400
+# Received: from topcat.zoonami.com ([193.112.141.198])
+# by fencepost.gnu.org with esmtp (Exim 3.16 #1 (Debian))
+# id 15ABtZ-0000FQ-00
+# for <bug-gawk@gnu.org>; Wed, 13 Jun 2001 10:45:21 -0400
+# Received: from topcat.zoonami.com (localhost [127.0.0.1])
+# by topcat.zoonami.com (8.9.3/8.9.3) with ESMTP id OAA28329;
+# Wed, 13 Jun 2001 14:45:54 GMT
+# (envelope-from djones@topcat.zoonami.com)
+# Message-Id: <200106131445.OAA28329@topcat.zoonami.com>
+# To: bug-gawk@gnu.org
+# cc: David Jones <drj@pobox.com>
+# Subject: 3.1.0 core dumps. Fiddling with OFMT?
+# Date: Wed, 13 Jun 2001 14:45:54 +0000
+# From: David Jones <djones@zoonami.com>
+# Status: R
+#
+# The following program causes gawk to dump core:
+#
+# jot 10|./gawk '{OFMT="%."NR"f";print NR}'
+#
+# 'jot 10', if you didn't know, produces the numbers 1 to 10 each on its
+# own line (ie it's like awk 'BEGIN{for(i=1;i<=10;++i)print i}')
+#
+# Here's an example run:
+#
+# -- run being
+# 1
+# 2
+# 3
+# 4
+# gawk: cmd. line:1: (FILENAME=- FNR=5) fatal error: internal error
+# Abort trap - core dumped
+# -- run end
+#
+# Ah. print NR appears to be not interesting. The following program also
+# has the same problem:
+#
+# jot 10|./gawk '{OFMT="%."NR"f"}'
+#
+# Cheers,
+# djones
+# (version info follows)
+#
+# I'm running on FreeBSD 4.1, here's the output of uname -a
+#
+# FreeBSD topcat.zoonami.com 4.1-RELEASE FreeBSD 4.1-RELEASE #0: Fri Jul 28 14:30:31 GMT 2000 jkh@ref4.freebsd.org:/usr/src/sys/compile/GENERIC i386
+#
+# And ./gnu --version
+#
+# GNU Awk 3.1.0
+# Copyright (C) 1989, 1991-2001 Free Software Foundation.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program; if not, write to the Free Software
+# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+#
+#
+{ OFMT="%."NR"f"; print NR }
diff --git a/test/ofmtfidl.in b/test/ofmtfidl.in
new file mode 100644
index 0000000..f00c965
--- /dev/null
+++ b/test/ofmtfidl.in
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
diff --git a/test/ofmtfidl.ok b/test/ofmtfidl.ok
new file mode 100644
index 0000000..f00c965
--- /dev/null
+++ b/test/ofmtfidl.ok
@@ -0,0 +1,10 @@
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
diff --git a/test/ofmts.awk b/test/ofmts.awk
new file mode 100644
index 0000000..6ee3705
--- /dev/null
+++ b/test/ofmts.awk
@@ -0,0 +1,2 @@
+BEGIN { OFMT= "%s" }
+{ $1 + $2; print $1, $2 }
diff --git a/test/ofmts.in b/test/ofmts.in
new file mode 100644
index 0000000..50c37ec
--- /dev/null
+++ b/test/ofmts.in
@@ -0,0 +1 @@
+1.2 2.2
diff --git a/test/ofmts.ok b/test/ofmts.ok
new file mode 100644
index 0000000..50c37ec
--- /dev/null
+++ b/test/ofmts.ok
@@ -0,0 +1 @@
+1.2 2.2
diff --git a/test/onlynl.awk b/test/onlynl.awk
new file mode 100644
index 0000000..97a8d94
--- /dev/null
+++ b/test/onlynl.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "" }
+{ print "got", $0 }
diff --git a/test/onlynl.in b/test/onlynl.in
new file mode 100644
index 0000000..fd40910
--- /dev/null
+++ b/test/onlynl.in
@@ -0,0 +1,4 @@
+
+
+
+
diff --git a/test/onlynl.ok b/test/onlynl.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/onlynl.ok
diff --git a/test/opasnidx.awk b/test/opasnidx.awk
new file mode 100644
index 0000000..e398860
--- /dev/null
+++ b/test/opasnidx.awk
@@ -0,0 +1 @@
+BEGIN { b = 1; a[b] = 2; a[b++] += 1; print b,a[1] }
diff --git a/test/opasnidx.ok b/test/opasnidx.ok
new file mode 100644
index 0000000..654d526
--- /dev/null
+++ b/test/opasnidx.ok
@@ -0,0 +1 @@
+2 3
diff --git a/test/opasnslf.awk b/test/opasnslf.awk
new file mode 100644
index 0000000..46cd2b8
--- /dev/null
+++ b/test/opasnslf.awk
@@ -0,0 +1,6 @@
+BEGIN {
+ print b += b += 1
+ b = 6
+ print b += b++
+ print b
+}
diff --git a/test/opasnslf.ok b/test/opasnslf.ok
new file mode 100644
index 0000000..2fa9fd5
--- /dev/null
+++ b/test/opasnslf.ok
@@ -0,0 +1,3 @@
+2
+13
+13
diff --git a/test/out1.ok b/test/out1.ok
new file mode 100644
index 0000000..f54b2b4
--- /dev/null
+++ b/test/out1.ok
@@ -0,0 +1 @@
+Goes to a file out1
diff --git a/test/out2.ok b/test/out2.ok
new file mode 100644
index 0000000..66b7d2f
--- /dev/null
+++ b/test/out2.ok
@@ -0,0 +1,2 @@
+Normal print statement
+This printed on stdout
diff --git a/test/out3.ok b/test/out3.ok
new file mode 100644
index 0000000..7eb822f
--- /dev/null
+++ b/test/out3.ok
@@ -0,0 +1 @@
+You blew it!
diff --git a/test/paramdup.awk b/test/paramdup.awk
new file mode 100644
index 0000000..1f1cc7a
--- /dev/null
+++ b/test/paramdup.awk
@@ -0,0 +1,8 @@
+BEGIN { foo(0, 1, 2) }
+
+function foo(a, b, c, b, a)
+{
+ print "a =", a
+ print "b =", b
+ print "c =", c
+}
diff --git a/test/paramdup.ok b/test/paramdup.ok
new file mode 100644
index 0000000..9a9df80
--- /dev/null
+++ b/test/paramdup.ok
@@ -0,0 +1,3 @@
+gawk: paramdup.awk:4: error: function `foo': parameter #4, `b', duplicates parameter #2
+gawk: paramdup.awk:4: error: function `foo': parameter #5, `a', duplicates parameter #1
+EXIT CODE: 1
diff --git a/test/paramtyp.awk b/test/paramtyp.awk
new file mode 100644
index 0000000..58848bb
--- /dev/null
+++ b/test/paramtyp.awk
@@ -0,0 +1,20 @@
+# Sun Apr 25 13:28:58 IDT 1999
+# from Juegen Khars. This program should not core dump.
+ function ReadPGM(f, d) {
+print "ReadPGM"
+ d[1] = 1
+ }
+
+ function WritePGM(f, d) {
+print "WritePGM"
+ d[1] = 0
+ }
+
+ BEGIN {
+print "before ReadPGM"
+ ReadPGM("", d)
+print "after ReadPGM"
+print "before WritePGM"
+ WritePGM("", d)
+print "after WritePGM"
+ }
diff --git a/test/paramtyp.ok b/test/paramtyp.ok
new file mode 100644
index 0000000..793f857
--- /dev/null
+++ b/test/paramtyp.ok
@@ -0,0 +1,6 @@
+before ReadPGM
+ReadPGM
+after ReadPGM
+before WritePGM
+WritePGM
+after WritePGM
diff --git a/test/parseme.awk b/test/parseme.awk
new file mode 100644
index 0000000..4d6ba94
--- /dev/null
+++ b/test/parseme.awk
@@ -0,0 +1 @@
+BEGIN { toupper(substr*line,1,12)) }
diff --git a/test/parseme.ok b/test/parseme.ok
new file mode 100644
index 0000000..5e6552a
--- /dev/null
+++ b/test/parseme.ok
@@ -0,0 +1,4 @@
+gawk: parseme.awk:1: BEGIN { toupper(substr*line,1,12)) }
+gawk: parseme.awk:1: ^ syntax error
+gawk: parseme.awk:1: fatal: 0 is invalid as number of arguments for toupper
+EXIT CODE: 2
diff --git a/test/pcntplus.awk b/test/pcntplus.awk
new file mode 100644
index 0000000..13999ac
--- /dev/null
+++ b/test/pcntplus.awk
@@ -0,0 +1 @@
+BEGIN { printf "%+d %d\n", 3, 4 }
diff --git a/test/pcntplus.ok b/test/pcntplus.ok
new file mode 100644
index 0000000..b790269
--- /dev/null
+++ b/test/pcntplus.ok
@@ -0,0 +1 @@
++3 4
diff --git a/test/pid.awk b/test/pid.awk
new file mode 100644
index 0000000..9b47d90
--- /dev/null
+++ b/test/pid.awk
@@ -0,0 +1,44 @@
+# From: John C. Oppenheimer <jco@slinky.convex.com>
+# Subject: gawk-3.0.2 pid test
+# To: arnold@skeeve.atl.ga.us
+# Date: Mon, 10 Feb 1997 08:31:55 -0600 (CST)
+#
+# Thanks for the very quick reply.
+#
+# This all started when I was looking for how to do the equivalent of
+# "nextfile." I was after documentation and found our gawk down a few
+# revs.
+#
+# Looks like the nextfile functionality was added somewhere around
+# 2.15.5. There wasn't a way to do it, until now! Thanks for the
+# functionality!
+#
+# Saw the /dev/xxx capability and just tried it.
+#
+# Anyway, I wrote a pid test. I hope that it is portable. Wanted to
+# make a user test, but looks like id(1) is not very portable. But a
+# little test is better than none.
+#
+# John
+#
+# pid.ok is a zero length file
+#
+# ================== pid.awk ============
+BEGIN {
+ getline pid <"/dev/pid"
+ getline ppid <"/dev/ppid"
+}
+NR == 1 {
+ if (pid != $0) {
+ printf "Bad pid %d, wanted %d\n", $0, pid
+ }
+}
+NR == 2 {
+ if (ppid != $0) {
+ printf "Bad ppid %d, wanted %d\n", $0, ppid
+ }
+}
+END { # ADR --- added
+ close("/dev/pid")
+ close("/dev/ppid")
+}
diff --git a/test/pid.ok b/test/pid.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/pid.ok
diff --git a/test/pid.sh b/test/pid.sh
new file mode 100755
index 0000000..901637a
--- /dev/null
+++ b/test/pid.sh
@@ -0,0 +1,5 @@
+#! /bin/sh
+AWK=${AWK-../gawk}
+echo $$ > _pid.in
+echo $1 >> _pid.in
+exec $AWK -f pid.awk _pid.in 2>/dev/null
diff --git a/test/pipeio1.awk b/test/pipeio1.awk
new file mode 100644
index 0000000..66f50ad
--- /dev/null
+++ b/test/pipeio1.awk
@@ -0,0 +1,31 @@
+# From dragon!gamgee.acad.emich.edu!dhw Tue Mar 18 01:12:15 1997
+# Return-Path: <dragon!gamgee.acad.emich.edu!dhw>
+# Message-ID: <m0w6owW-000IDSC@gamgee.acad.emich.edu>
+# Date: Mon, 17 Mar 97 20:48 CST
+# From: dhw@gamgee.acad.emich.edu (David H. West)
+# To: arnold@gnu.ai.mit.edu
+# Subject: gawk 3.0.2 bug report (cc of msg to bug-gnu-utils)
+# Status: OR
+# Content-Length: 869
+# X-Lines: 20
+# X-Display-Position: 2
+#
+# Nature of bug: operation on a pipe side-effects a different pipe.
+# Observed-With: gawk 3.0.2, Linux kernel 2.0.28
+# Reproduce-By: running the following script, without and with the "close"
+# statement uncommented.
+# -----------------cut here--------------------------
+BEGIN {FILE1="test1"; FILE2="test2";
+ print "1\n" > FILE1; close(FILE1);
+ print "2\n" > FILE2; close(FILE2);
+ cmd1="cat " FILE1; cmd2="cat " FILE2;
+ #end of preparing commands which give easily-predictable output
+
+ while( (cmd1 | getline)==1) { #terminates as file has only 1 line
+ #and we never close cmd1
+ cmd2 | getline L;
+ #BUG: uncommenting the following line causes an infinite loop
+ close(cmd2);
+ print $0,L;
+ }
+ }
diff --git a/test/pipeio1.ok b/test/pipeio1.ok
new file mode 100644
index 0000000..706b09e
--- /dev/null
+++ b/test/pipeio1.ok
@@ -0,0 +1,2 @@
+1 2
+ 2
diff --git a/test/pipeio2.awk b/test/pipeio2.awk
new file mode 100644
index 0000000..dbf354b
--- /dev/null
+++ b/test/pipeio2.awk
@@ -0,0 +1,70 @@
+# From: megaadm@rina.quantum.de
+# Subject: Bug report - closing down pipes which read from shell com
+# To: bug-gnu-utils@prep.ai.mit.edu
+# Date: Thu, 27 Feb 1997 23:19:16 +0100 (CET)
+# CC: arnold@gnu.ai.mit.edu
+#
+# Hello people,
+#
+# i think i found a bug or something mysterious behaviour in
+# gawk Version 3.0 patchlevel 0.
+#
+# I am running on linux 2.0.25 under bash.
+#
+# Could you please have a look at the following awk program
+# an let me please know, if this is what i expect it to,
+# namely a bug.
+#
+# ----------- cut here --------------------------------------------
+BEGIN {
+ # OS is linux 2.0.25
+ # shell is bash
+ # Gnu Awk (gawk) 3.0, patchlevel 0
+ # The command i typed on the shell was "gawk -f <this_prog> -"
+
+ #com = "cal 01 1997"
+ com = ("cat " SRCDIR "/pipeio2.in")
+
+ while ((com | getline fnam) > 0) {
+
+# com_tr = "echo " fnam " | tr [0-9]. ..........."
+# com_tr = "echo " fnam " | sed 's/[0-9]/./g'"
+ com_tr = "echo " fnam " | sed \"s/[0-9]/./g\""
+ # print "\'" com_tr "\'"
+ print "'" com_tr "'"
+
+ com_tr | getline nam
+ print nam
+
+ # please run that program and take a look at the
+ # output. I think this is what was expected.
+
+ # Then comment in the following 4 lines and see
+ # what happens. I expect the first pipe "com | getline"
+ # not to be close, but i think this is exactly what happens
+ # So, is this ok ?
+
+ if (close(com_tr) < 0) {
+ print ERRNO
+ break
+ }
+ }
+
+ close(com)
+ }
+# ----------- cut here --------------------------------------------
+#
+# There is another thing i do not understand.
+# Why doesn't the awk - command "close" reports an
+# error, if i would say close("abc") which i had never
+# openend ?
+#
+# Regards,
+# Ulrich Gvbel
+# --
+# /********************************************************\
+# * Ulrich Gvbel, goebel@quantum.de *
+# * Quantum Gesellschaft f|r Software mbH, Dortmund *
+# * phone : +49-231-9749-201 fax: +49-231-9749-3 *
+# * private: +49-231-803994 fax: +49-231-803994 *
+# \********************************************************/
diff --git a/test/pipeio2.in b/test/pipeio2.in
new file mode 100644
index 0000000..2652b0e
--- /dev/null
+++ b/test/pipeio2.in
@@ -0,0 +1,8 @@
+ January 1997
+ S M Tu W Th F S
+ 1 2 3 4
+ 5 6 7 8 9 10 11
+12 13 14 15 16 17 18
+19 20 21 22 23 24 25
+26 27 28 29 30 31
+
diff --git a/test/pipeio2.ok b/test/pipeio2.ok
new file mode 100644
index 0000000..13b0b9b
--- /dev/null
+++ b/test/pipeio2.ok
@@ -0,0 +1,16 @@
+'echo January 1997 | sed "s/[0-9]/./g"'
+January ....
+'echo S M Tu W Th F S | sed "s/[0-9]/./g"'
+S M Tu W Th F S
+'echo 1 2 3 4 | sed "s/[0-9]/./g"'
+. . . .
+'echo 5 6 7 8 9 10 11 | sed "s/[0-9]/./g"'
+. . . . . .. ..
+'echo 12 13 14 15 16 17 18 | sed "s/[0-9]/./g"'
+.. .. .. .. .. .. ..
+'echo 19 20 21 22 23 24 25 | sed "s/[0-9]/./g"'
+.. .. .. .. .. .. ..
+'echo 26 27 28 29 30 31 | sed "s/[0-9]/./g"'
+.. .. .. .. .. ..
+'echo | sed "s/[0-9]/./g"'
+
diff --git a/test/posix.awk b/test/posix.awk
new file mode 100644
index 0000000..79474f3
--- /dev/null
+++ b/test/posix.awk
@@ -0,0 +1,69 @@
+BEGIN {
+ a = "+2"; b = 2; c = "+2a"; d = "+2 "; e = " 2"
+
+ printf "Test #1: "
+ if (b == a) print "\"" a "\"" " compares as a number"
+ else print "\"" a "\"" " compares as a string"
+
+ printf "Test #2: "
+ if (b == c) print "\"" c "\"" " compares as a number"
+ else print "\"" c "\"" " compares as a string"
+
+ printf "Test #3: "
+ if (b == d) print "\"" d "\"" " compares as a number"
+ else print "\"" d "\"" " compares as a string"
+
+ printf "Test #4: "
+ if (b == e) print "\"" e "\"" " compares as a number"
+ else print "\"" e "\"" " compares as a string"
+
+ f = a + b + c + d + e
+ print "after addition"
+
+ printf "Test #5: "
+ if (b == a) print "\"" a "\"" " compares as a number"
+ else print "\"" a "\"" " compares as a string"
+
+ printf "Test #6: "
+ if (b == c) print "\"" c "\"" " compares as a number"
+ else print "\"" c "\"" " compares as a string"
+
+ printf "Test #7: "
+ if (b == d) print "\"" d "\"" " compares as a number"
+ else print "\"" d "\"" " compares as a string"
+
+ printf "Test #8: "
+ if (b == e) print "\"" e "\"" " compares as a number"
+ else print "\"" e "\"" " compares as a string"
+
+ printf "Test #9: "
+ if ("3e5" > "5") print "\"3e5\" > \"5\""
+ else print "\"3e5\" <= \"5\""
+
+ printf "Test #10: "
+ x = 32.14
+ y[x] = "test"
+ OFMT = "%e"
+ print y[x]
+
+ printf "Test #11: "
+ x = x + 0
+ print y[x]
+
+ printf "Test #12: "
+ OFMT="%f"
+ CONVFMT="%e"
+ print 1.5, 1.5 ""
+
+ printf "Test #13: "
+ if ( 1000000 "" == 1000001 "") print "match"
+ else print "nomatch"
+}
+{
+ printf "Test #14: "
+ FS = ":"
+ print $1
+ FS = ","
+ printf "Test #15: "
+ print $2
+}
diff --git a/test/posix.in b/test/posix.in
new file mode 100644
index 0000000..c16777b
--- /dev/null
+++ b/test/posix.in
@@ -0,0 +1 @@
+1:2,3 4
diff --git a/test/posix.ok b/test/posix.ok
new file mode 100644
index 0000000..100b150
--- /dev/null
+++ b/test/posix.ok
@@ -0,0 +1,16 @@
+Test #1: "+2" compares as a string
+Test #2: "+2a" compares as a string
+Test #3: "+2 " compares as a string
+Test #4: " 2" compares as a string
+after addition
+Test #5: "+2" compares as a string
+Test #6: "+2a" compares as a string
+Test #7: "+2 " compares as a string
+Test #8: " 2" compares as a string
+Test #9: "3e5" <= "5"
+Test #10: test
+Test #11: test
+Test #12: 1.500000 1.500000e+00
+Test #13: nomatch
+Test #14: 1:2,3
+Test #15: 4
diff --git a/test/poundbang.awk b/test/poundbang.awk
new file mode 100755
index 0000000..a6440ff
--- /dev/null
+++ b/test/poundbang.awk
@@ -0,0 +1,2 @@
+#! /tmp/gawk -f
+{ print }
diff --git a/test/prdupval.awk b/test/prdupval.awk
new file mode 100644
index 0000000..32c67dc
--- /dev/null
+++ b/test/prdupval.awk
@@ -0,0 +1 @@
+{ print NF, $NF, "abc" $NF }
diff --git a/test/prdupval.in b/test/prdupval.in
new file mode 100644
index 0000000..5626abf
--- /dev/null
+++ b/test/prdupval.in
@@ -0,0 +1 @@
+one
diff --git a/test/prdupval.ok b/test/prdupval.ok
new file mode 100644
index 0000000..6253616
--- /dev/null
+++ b/test/prdupval.ok
@@ -0,0 +1 @@
+1 one abcone
diff --git a/test/prec.awk b/test/prec.awk
new file mode 100644
index 0000000..8b37734
--- /dev/null
+++ b/test/prec.awk
@@ -0,0 +1,7 @@
+# check the precedence of operators:
+BEGIN {
+ $1 = i = 1
+ $+i++
+ $- -i++
+ print
+}
diff --git a/test/prec.ok b/test/prec.ok
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test/prec.ok
@@ -0,0 +1 @@
+1
diff --git a/test/printf0.awk b/test/printf0.awk
new file mode 100644
index 0000000..ac8ad3c
--- /dev/null
+++ b/test/printf0.awk
@@ -0,0 +1,5 @@
+BEGIN {
+ # bwk accepts this silently:
+ printf
+ print "X"
+}
diff --git a/test/printf0.ok b/test/printf0.ok
new file mode 100644
index 0000000..62d8fe9
--- /dev/null
+++ b/test/printf0.ok
@@ -0,0 +1 @@
+X
diff --git a/test/printf1.awk b/test/printf1.awk
new file mode 100644
index 0000000..1cd7b99
--- /dev/null
+++ b/test/printf1.awk
@@ -0,0 +1,19 @@
+# Tue May 25 16:36:16 IDT 1999
+#
+# Test cases based on email from Andreas Schwab, schwab@gnu.org
+
+BEGIN {
+ fmt[1] = "%8.5d"; data[1] = 100
+ fmt[2] = "%#o"; data[2] = 0
+ fmt[3] = "%#.1o"; data[3] = 0
+ fmt[4] = "%#.0o"; data[4] = 0
+ fmt[5] = "%#x"; data[5] = 0
+ fmt[6] = "%.0d"; data[6] = 0
+ fmt[7] = "%5.0d"; data[7] = 0
+
+ for (i = 1; i <= 7; i++) {
+ format = "%s, %d --- |" fmt[i] "|\n"
+ printf(format, fmt[i], data[i], data[i])
+ }
+
+}
diff --git a/test/printf1.ok b/test/printf1.ok
new file mode 100644
index 0000000..32b3a7d
--- /dev/null
+++ b/test/printf1.ok
@@ -0,0 +1,7 @@
+%8.5d, 100 --- | 00100|
+%#o, 0 --- |0|
+%#.1o, 0 --- |0|
+%#.0o, 0 --- |0|
+%#x, 0 --- |0|
+%.0d, 0 --- ||
+%5.0d, 0 --- | |
diff --git a/test/printfbad1.awk b/test/printfbad1.awk
new file mode 100644
index 0000000..1b478df
--- /dev/null
+++ b/test/printfbad1.awk
@@ -0,0 +1,65 @@
+#Date: Mon, 7 Jun 2004 10:40:28 -0500
+#From: mary1john8@earthlink.net
+#To: arnold@skeeve.com
+#Subject: gawk internal errors
+#Message-ID: <20040607154028.GA2457@apollo>
+#
+#Hello,
+#
+# gawk-3.1.3i internal errors:
+#
+#[1]
+#
+#$> ./gawk 'BEGIN { for (i in a) delete a; }'
+#gawk: fatal error: internal error
+#Aborted
+#
+#------------------------------------------------------------------
+#--- awkgram.y.orig 2004-06-07 09:42:14.000000000 -0500
+#+++ awkgram.y 2004-06-07 09:45:58.000000000 -0500
+#@@ -387,7 +387,7 @@
+# * Check that the body is a `delete a[i]' statement,
+# * and that both the loop var and array names match.
+# */
+#- if ($8 != NULL && $8->type == Node_K_delete) {
+#+ if ($8 != NULL && $8->type == Node_K_delete && $8->rnode != NULL) {
+# NODE *arr, *sub;
+#
+# assert($8->rnode->type == Node_expression_list);
+#------------------------------------------------------------------
+#
+#
+#[2]
+#
+#$> ./gawk 'BEGIN { printf("%3$*10$.*1$s\n", 20, 10, "hello"); }'
+BEGIN { printf("%3$*10$.*1$s\n", 20, 10, "hello"); }
+#gawk: fatal error: internal error
+#Aborted
+#
+#------------------------------------------------------------------
+#--- builtin.c.orig 2004-06-07 10:04:20.000000000 -0500
+#+++ builtin.c 2004-06-07 10:06:08.000000000 -0500
+#@@ -780,7 +780,10 @@
+# s1++;
+# n0--;
+# }
+#-
+#+ if (val >= num_args) {
+#+ toofew = TRUE;
+#+ break;
+#+ }
+# arg = the_args[val];
+# } else {
+# parse_next_arg();
+#------------------------------------------------------------------
+#
+#
+# Finally, a test for the rewritten get_src_buf():
+#
+#$> AWKBUFSIZE=2 make check
+#
+#I get 3 failed tests. Not sure this is of any interest.
+#
+#
+#Thanks,
+#John
diff --git a/test/printfbad1.ok b/test/printfbad1.ok
new file mode 100644
index 0000000..d02140a
--- /dev/null
+++ b/test/printfbad1.ok
@@ -0,0 +1,5 @@
+gawk: printfbad1.awk:35: fatal: not enough arguments to satisfy format string
+ `%3$*10$.*1$s
+'
+ ^ ran out for this one
+EXIT CODE: 2
diff --git a/test/printfloat.awk b/test/printfloat.awk
new file mode 100644
index 0000000..1cb4066
--- /dev/null
+++ b/test/printfloat.awk
@@ -0,0 +1,62 @@
+# Test program for checking sprintf operation with various floating
+# point formats
+#
+# Watch out - full output of this program will have 3000 * tot lines,
+# which will take a chunk of space if you will write it to your disk.
+# --mj
+
+BEGIN {
+ just = "-"
+ plus = "+ "
+ alt = "#"
+ zero = "0"
+ spec = "feEgG"
+ fw[1] = ""
+ fw[2] = "1"
+ fw[3] = "5"
+ fw[4] = "10"
+ fw[5] = "15"
+ prec[1] = ".-1"
+ prec[2] = ""
+ prec[3] = ".2"
+ prec[4] = ".5"
+ prec[5] = ".10"
+
+ num = 123.6
+ factor = 1.0e-12
+ tot = 8
+ data[1] = 0
+ data[2] = 1
+ for (i = 3; i <= tot; i++) {
+ data[i] = num * factor
+ factor *= 1000
+ }
+
+ for (j = 1; j <= 2; j++) {
+ for (p = 1; p <= 3; p++) {
+ for (a = 1; a <= 2; a++) {
+ for (z = 1; z <= 2; z++) {
+ for (s = 1; s <= 5; s++) {
+ for (w = 1; w <= 5; w++) {
+ for (r = 1; r <= 5; r++) {
+ frmt = "|%" substr(just, j, 1)
+ frmt = frmt substr(plus, p, 1)
+ frmt = frmt substr(alt, a, 1)
+ frmt = frmt substr(zero, z, 1)
+ frmt = frmt fw[w] prec[r]
+ frmt = frmt substr(spec, s, 1) "|"
+ for (i = 1; i <= tot; i++) {
+ result = sprintf(frmt, data[i])
+# "normalize" if you must
+# sub(/\|\./, "|0.", result)
+ printf("%-16s %-25s\t%g\n", frmt,
+ result,data[i])
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/test/printlang.awk b/test/printlang.awk
new file mode 100644
index 0000000..03e06c0
--- /dev/null
+++ b/test/printlang.awk
@@ -0,0 +1,4 @@
+BEGIN {
+ printf "\nLocale environment:\n\tLC_ALL=\"%s\" LANG=\"%s\"\n\n",
+ ENVIRON["LC_ALL"], ENVIRON["LANG"]
+}
diff --git a/test/prmarscl.awk b/test/prmarscl.awk
new file mode 100644
index 0000000..3caf3d9
--- /dev/null
+++ b/test/prmarscl.awk
@@ -0,0 +1,6 @@
+function test(a)
+{
+ print a[1]
+}
+
+BEGIN { j = 4; test(j) }
diff --git a/test/prmarscl.ok b/test/prmarscl.ok
new file mode 100644
index 0000000..a0f7ab8
--- /dev/null
+++ b/test/prmarscl.ok
@@ -0,0 +1,2 @@
+gawk: prmarscl.awk:3: fatal: attempt to use scalar parameter `a' as an array
+EXIT CODE: 2
diff --git a/test/prmreuse.awk b/test/prmreuse.awk
new file mode 100644
index 0000000..c1ffa17
--- /dev/null
+++ b/test/prmreuse.awk
@@ -0,0 +1,14 @@
+# from Pat Rankin, rankin@eql.caltech.edu, now rankin@pactechdata.com
+
+BEGIN { dummy(1); legit(); exit }
+
+function dummy(arg)
+{
+ return arg
+}
+
+function legit( scratch)
+{
+ split("1 2 3", scratch)
+ return ""
+}
diff --git a/test/prmreuse.ok b/test/prmreuse.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/prmreuse.ok
diff --git a/test/procinfs.awk b/test/procinfs.awk
new file mode 100644
index 0000000..53cfa97
--- /dev/null
+++ b/test/procinfs.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ printf "Initially, PROCINFO[\"FS\"] = %s\n", PROCINFO["FS"]
+ FIELDWIDTHS = "3 4 5 6"
+ printf "After assign to FIELDWIDTHS, PROCINFO[\"FS\"] = %s\n", PROCINFO["FS"]
+ FS = FS
+ printf "After assign to FS, PROCINFO[\"FS\"] = %s\n", PROCINFO["FS"]
+}
diff --git a/test/procinfs.ok b/test/procinfs.ok
new file mode 100644
index 0000000..23aaeff
--- /dev/null
+++ b/test/procinfs.ok
@@ -0,0 +1,3 @@
+Initially, PROCINFO["FS"] = FS
+After assign to FIELDWIDTHS, PROCINFO["FS"] = FIELDWIDTHS
+After assign to FS, PROCINFO["FS"] = FS
diff --git a/test/prt1eval.awk b/test/prt1eval.awk
new file mode 100644
index 0000000..4ecd368
--- /dev/null
+++ b/test/prt1eval.awk
@@ -0,0 +1,6 @@
+function tst () {
+ sum += 1
+ return sum
+}
+
+BEGIN { OFMT = "%.0f" ; print tst() }
diff --git a/test/prt1eval.ok b/test/prt1eval.ok
new file mode 100644
index 0000000..d00491f
--- /dev/null
+++ b/test/prt1eval.ok
@@ -0,0 +1 @@
+1
diff --git a/test/prtoeval.awk b/test/prtoeval.awk
new file mode 100644
index 0000000..77880d8
--- /dev/null
+++ b/test/prtoeval.awk
@@ -0,0 +1,4 @@
+function returns_a_str() { print "<in function>" ; return "'A STRING'" }
+BEGIN {
+ print "partial line:", returns_a_str()
+}
diff --git a/test/prtoeval.ok b/test/prtoeval.ok
new file mode 100644
index 0000000..13e122b
--- /dev/null
+++ b/test/prtoeval.ok
@@ -0,0 +1,2 @@
+<in function>
+partial line: 'A STRING'
diff --git a/test/psx96sub.awk b/test/psx96sub.awk
new file mode 100644
index 0000000..3c7c9b7
--- /dev/null
+++ b/test/psx96sub.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ text = "here is some text"
+ repl = "<FOO&BAR \\q \\ \\\\ \\& \\\\& \\\\\\&>"
+ printf "orig = \"%s\", repl = \"%s\"\n", text, repl
+ sub(/some/, repl, text)
+ printf "result is \"%s\"\n", text
+}
diff --git a/test/psx96sub.ok b/test/psx96sub.ok
new file mode 100644
index 0000000..d6b89ee
--- /dev/null
+++ b/test/psx96sub.ok
@@ -0,0 +1,2 @@
+orig = "here is some text", repl = "<FOO&BAR \q \ \\ \& \\& \\\&>"
+result is "here is <FOOsomeBAR \q \ \\ & \some \&> text"
diff --git a/test/rand.awk b/test/rand.awk
new file mode 100644
index 0000000..6378f3d
--- /dev/null
+++ b/test/rand.awk
@@ -0,0 +1,6 @@
+BEGIN {
+ srand(2)
+ for (i = 0; i < 19; i++)
+ printf "%3d ", (1 + int(100 * rand()))
+ print ""
+}
diff --git a/test/rand.ok b/test/rand.ok
new file mode 100644
index 0000000..60432b9
--- /dev/null
+++ b/test/rand.ok
@@ -0,0 +1 @@
+ 62 67 88 6 35 77 3 68 30 96 90 26 35 8 88 93 49 53 37
diff --git a/test/rebt8b1.awk b/test/rebt8b1.awk
new file mode 100644
index 0000000..8fa43fb
--- /dev/null
+++ b/test/rebt8b1.awk
@@ -0,0 +1,138 @@
+# From hankedr@dms.auburn.edu Sun Jan 28 12:25:43 2001
+# Received: from mail.actcom.co.il [192.114.47.13]
+# by localhost with POP3 (fetchmail-5.5.0)
+# for arnold@localhost (single-drop); Sun, 28 Jan 2001 12:25:43 +0200 (IST)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Jan 28 12:27:08 2001)
+# X-From_: hankedr@dms.auburn.edu Sat Jan 27 15:15:57 2001
+# Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id PAA23801 for <arobbins@actcom.co.il>;
+# Sat, 27 Jan 2001 15:15:55 +0200 (EET)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+# Received: from billohost.com (www.billohost.com [209.196.35.10])
+# by lmail.actcom.co.il (8.9.3/8.9.1) with ESMTP id PAA15998
+# for <arobbins@actcom.co.il>; Sat, 27 Jan 2001 15:16:27 +0200
+# Received: from yak.dms.auburn.edu (yak.dms.auburn.edu [131.204.53.2])
+# by billohost.com (8.9.3/8.9.3) with ESMTP id IAA00467
+# for <arnold@skeeve.com>; Sat, 27 Jan 2001 08:15:52 -0500
+# Received: (from hankedr@localhost)
+# by yak.dms.auburn.edu (8.9.3/8.9.3/Debian/GNU) id HAA24441;
+# Sat, 27 Jan 2001 07:15:44 -0600
+# Date: Sat, 27 Jan 2001 07:15:44 -0600
+# Message-Id: <200101271315.HAA24441@yak.dms.auburn.edu>
+# From: Darrel Hankerson <hankedr@dms.auburn.edu>
+# To: arnold@skeeve.com
+# Subject: [stolfi@ic.unicamp.br: Bug in [...]* matching with acute-u]
+# Mime-Version: 1.0 (generated by tm-edit 7.106)
+# Content-Type: message/rfc822
+# Status: R
+#
+# From: Jorge Stolfi <stolfi@ic.unicamp.br>
+# To: bug-gnu-utils@gnu.org
+# Subject: Bug in [...]* matching with acute-u
+# MIME-Version: 1.0
+# Reply-To: stolfi@ic.unicamp.br
+# X-MIME-Autoconverted: from 8bit to quoted-printable by grande.dcc.unicamp.br id GAA10716
+# Sender: bug-gnu-utils-admin@gnu.org
+# Errors-To: bug-gnu-utils-admin@gnu.org
+# X-BeenThere: bug-gnu-utils@gnu.org
+# X-Mailman-Version: 2.0
+# Precedence: bulk
+# List-Help: <mailto:bug-gnu-utils-request@gnu.org?subject=help>
+# List-Post: <mailto:bug-gnu-utils@gnu.org>
+# List-Subscribe: <http://mail.gnu.org/mailman/listinfo/bug-gnu-utils>,
+# <mailto:bug-gnu-utils-request@gnu.org?subject=subscribe>
+# List-Id: Bug reports for the GNU utilities <bug-gnu-utils.gnu.org>
+# List-Unsubscribe: <http://mail.gnu.org/mailman/listinfo/bug-gnu-utils>,
+# <mailto:bug-gnu-utils-request@gnu.org?subject=unsubscribe>
+# List-Archive: <http://mail.gnu.org/pipermail/bug-gnu-utils/>
+# Date: Sat, 27 Jan 2001 06:46:11 -0200 (EDT)
+# Content-Transfer-Encoding: 8bit
+# X-MIME-Autoconverted: from quoted-printable to 8bit by manatee.dms.auburn.edu id CAA14936
+# Content-Type: text/plain; charset=iso-8859-1
+# <mailto:bug-gnu-utils-request@gnu.org?subject=subscribe>
+# <mailto:bug-gnu-utils-request@gnu.org?subject=uns
+# Content-Length: 3137
+#
+#
+#
+# Hi,
+#
+# I think I have run into a bug in gawk's handling of REs of the
+# form [...]* when the bracketed list includes certain 8-bit characters,
+# specifically u-acute (octal \372).
+#
+# The problem occurs in GNU Awk 3.0.4, both under
+# Linux 2.2.14-5.0 (intel i686) and SunOS 5.5 (Sun sparc).
+#
+# Here is a program that illustrates the bug, and its output.
+# The first two lines of the output should be equal, shouldn't they?
+#
+# ----------------------------------------------------------------------
+#! /usr/bin/gawk -f
+
+BEGIN {
+ s = "bananas and ananases in canaan";
+ t = s; gsub(/[an]*n/, "AN", t); printf "%-8s %s\n", "[an]*n", t;
+ t = s; gsub(/[anú]*n/, "AN", t); printf "%-8s %s\n", "[anú]*n", t;
+ print "";
+ t = s; gsub(/[aú]*n/, "AN", t); printf "%-8s %s\n", "[aú]*n", t;
+ print "";
+ t = s; gsub(/[an]n/, "AN", t); printf "%-8s %s\n", "[an]n", t;
+ t = s; gsub(/[aú]n/, "AN", t); printf "%-8s %s\n", "[aú]n", t;
+ t = s; gsub(/[anú]n/, "AN", t); printf "%-8s %s\n", "[anú]n", t;
+ print "";
+ t = s; gsub(/[an]?n/, "AN", t); printf "%-8s %s\n", "[an]?n", t;
+ t = s; gsub(/[aú]?n/, "AN", t); printf "%-8s %s\n", "[aú]?n", t;
+ t = s; gsub(/[anú]?n/, "AN", t); printf "%-8s %s\n", "[anú]?n", t;
+ print "";
+ t = s; gsub(/[an]+n/, "AN", t); printf "%-8s %s\n", "[an]+n", t;
+ t = s; gsub(/[aú]+n/, "AN", t); printf "%-8s %s\n", "[aú]+n", t;
+ t = s; gsub(/[anú]+n/, "AN", t); printf "%-8s %s\n", "[anú]+n", t;
+}
+# ----------------------------------------------------------------------
+# [an]*n bANas ANd ANases iAN cAN
+# [anú]*n bananas and ananases in canaan
+#
+# [aú]*n bANANas ANd ANANases iAN cANAN
+#
+# [an]n bANANas ANd ANANases in cANaAN
+# [aú]n bANANas ANd ANANases in cANaAN
+# [anú]n bANANas ANd ANANases in cANaAN
+#
+# [an]?n bANANas ANd ANANases iAN cANaAN
+# [aú]?n bANANas ANd ANANases iAN cANaAN
+# [anú]?n bANANas ANd ANANases iAN cANaAN
+#
+# [an]+n bANas ANd ANases in cAN
+# [aú]+n bANANas ANd ANANases in cANAN
+# [anú]+n bananas and ananases in canaan
+# ----------------------------------------------------------------------
+#
+# Apparently the problem is specific to u-acute; I've tried several
+# other 8-bit characters and they seem to behave as expected.
+#
+# By comparing the second and third output lines, it would seem that the
+# problem involves backtracking out of a partial match of [...]* in
+# order to match the next sub-expression, when the latter begins with
+# one of the given characters.
+#
+#
+# All the best,
+#
+# --stolfi
+#
+# ------------------------------------------------------------------------
+# Jorge Stolfi | http://www.dcc.unicamp.br/~stolfi | stolfi@dcc.unicamp.br
+# Institute of Computing (formerly DCC-IMECC) | Wrk +55 (19)3788-5858
+# Universidade Estadual de Campinas (UNICAMP) | +55 (19)3788-5840
+# Av. Albert Einstein 1251 - Caixa Postal 6176 | Fax +55 (19)3788-5847
+# 13083-970 Campinas, SP -- Brazil | Hom +55 (19)3287-4069
+# ------------------------------------------------------------------------
+#
+# _______________________________________________
+# Bug-gnu-utils mailing list
+# Bug-gnu-utils@gnu.org
+# http://mail.gnu.org/mailman/listinfo/bug-gnu-utils
+#
+#
diff --git a/test/rebt8b1.ok b/test/rebt8b1.ok
new file mode 100644
index 0000000..5b8a009
--- /dev/null
+++ b/test/rebt8b1.ok
@@ -0,0 +1,16 @@
+[an]*n bANas ANd ANases iAN cAN
+[anú]*n bANas ANd ANases iAN cAN
+
+[aú]*n bANANas ANd ANANases iAN cANAN
+
+[an]n bANANas ANd ANANases in cANaAN
+[aú]n bANANas ANd ANANases in cANaAN
+[anú]n bANANas ANd ANANases in cANaAN
+
+[an]?n bANANas ANd ANANases iAN cANaAN
+[aú]?n bANANas ANd ANANases iAN cANaAN
+[anú]?n bANANas ANd ANANases iAN cANaAN
+
+[an]+n bANas ANd ANases in cAN
+[aú]+n bANANas ANd ANANases in cANAN
+[anú]+n bANas ANd ANases in cAN
diff --git a/test/rebt8b2.awk b/test/rebt8b2.awk
new file mode 100644
index 0000000..4cb8373
--- /dev/null
+++ b/test/rebt8b2.awk
@@ -0,0 +1,88 @@
+#From stolfi@ic.unicamp.br Sun Jan 28 19:02:09 2001
+#Received: from mail.actcom.co.il [192.114.47.13]
+# by localhost with POP3 (fetchmail-5.5.0)
+# for arnold@localhost (single-drop); Sun, 28 Jan 2001 19:02:09 +0200 (IST)
+#Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Sun Jan 28 19:03:34 2001)
+#X-From_: stolfi@ic.unicamp.br Sun Jan 28 18:46:02 2001
+#Received: from lmail.actcom.co.il by actcom.co.il with ESMTP
+# (8.9.1a/actcom-0.2) id SAA22932 for <arobbins@actcom.co.il>;
+# Sun, 28 Jan 2001 18:46:00 +0200 (EET)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+#Received: from billohost.com (www.billohost.com [209.196.35.10])
+# by lmail.actcom.co.il (8.9.3/8.9.1) with ESMTP id SAA18523
+# for <arobbins@actcom.co.il>; Sun, 28 Jan 2001 18:46:35 +0200
+#Received: from grande.dcc.unicamp.br (grande.dcc.unicamp.br [143.106.7.8])
+# by billohost.com (8.9.3/8.9.3) with ESMTP id LAA20063
+# for <arnold@skeeve.com>; Sun, 28 Jan 2001 11:45:54 -0500
+#Received: from amazonas.dcc.unicamp.br (amazonas.dcc.unicamp.br [143.106.7.11])
+# by grande.dcc.unicamp.br (8.9.3/8.9.3) with ESMTP id OAA29726;
+# Sun, 28 Jan 2001 14:45:47 -0200 (EDT)
+#Received: from coruja.dcc.unicamp.br (coruja.dcc.unicamp.br [143.106.24.80])
+# by amazonas.dcc.unicamp.br (8.8.5/8.8.5) with ESMTP id OAA06542;
+# Sun, 28 Jan 2001 14:45:45 -0200 (EDT)
+#Received: (from stolfi@localhost)
+# by coruja.dcc.unicamp.br (8.11.0/8.11.0) id f0SGjib16703;
+# Sun, 28 Jan 2001 14:45:44 -0200 (EDT)
+#Date: Sun, 28 Jan 2001 14:45:44 -0200 (EDT)
+#Message-Id: <200101281645.f0SGjib16703@coruja.dcc.unicamp.br>
+#From: Jorge Stolfi <stolfi@ic.unicamp.br>
+#To: Michal Jaegermann <michal@ellpspace.math.ualberta.ca>
+#Cc: Aharon Robbins <arnold@skeeve.com>, oliva@ic.unicamp.br,
+# celio@ic.unicamp.br, ducatte@ic.unicamp.br, machado@ic.unicamp.br
+#Subject: Re: a regex.c problem
+#MIME-Version: 1.0
+#Content-Transfer-Encoding: 8bit
+#Content-Type: text/plain; charset=iso-8859-1
+#In-Reply-To: <20010128090314.A5820@ellpspace.math.ualberta.ca>
+#References: <200101281207.f0SC7Un08435@skeeve.com>
+# <20010128090314.A5820@ellpspace.math.ualberta.ca>
+#Reply-To: stolfi@ic.unicamp.br
+#Status: RO
+#
+#
+# > [Michal] Are there any other examples of "certain characters"
+# > which would throw this regex engine off?
+#
+#I now tested [anX]*n for X ranging trough all characters from \000 and
+#\377, and got that unexpected result only for the following ones:
+#
+# \370 | =F8 | ø | Small o, slash
+# \371 | =F9 | ù | Small u, grave accent
+# \372 | =FA | ú | Small u, acute accent
+# \373 | =FB | û | Small u, circumflex accent
+# \374 | =FC | ü | Small u, dieresis or umlaut mark
+# \375 | =FD | ý | Small y, acute accent
+# \376 | =FE | þ | Small thorn, Icelandic
+# \377 | =FF | ÿ | Small y, dieresis or umlaut mark
+#
+#I have also tried those offending REs from inside emacs (20.7.1), with
+#query-replace-regexp, and it seems to be working fine. So presumably
+#the bug lies in gawk itself, or in the RE parsing code, rather than in
+#the matching engine?
+#
+#Could it be an underdimensioned table somewhere?
+#
+#Thanks for the help, and all the best
+#
+#--stolfi
+#
+# ----------------------------------------------------------------------
+ #! /usr/bin/gawk -f
+
+ BEGIN {
+ for (c = 0; c < 256; c++)
+ { do_test(c); }
+ }
+
+ function do_test(char, pat,s,t)
+ {
+ if (char == 92) { printf "(error for \\%03o)\n", char; return; }
+ pat = sprintf("[an\\%03o]*n", char);
+ s = "bananas and ananases in canaan";
+ t = s; gsub(pat, "AN", t); printf "%-8s %s\n", pat, t;
+# ADR: Added:
+ if (s ~ pat) printf "\tmatch\n" ; else printf "\tno-match\n"
+ }
+
+# ----------------------------------------------------------------------
diff --git a/test/rebt8b2.ok b/test/rebt8b2.ok
new file mode 100644
index 0000000..661109c
--- /dev/null
+++ b/test/rebt8b2.ok
@@ -0,0 +1,511 @@
+[an\000]*n bANas ANd ANases iAN cAN
+ match
+[an\001]*n bANas ANd ANases iAN cAN
+ match
+[an\002]*n bANas ANd ANases iAN cAN
+ match
+[an\003]*n bANas ANd ANases iAN cAN
+ match
+[an\004]*n bANas ANd ANases iAN cAN
+ match
+[an\005]*n bANas ANd ANases iAN cAN
+ match
+[an\006]*n bANas ANd ANases iAN cAN
+ match
+[an\007]*n bANas ANd ANases iAN cAN
+ match
+[an\010]*n bANas ANd ANases iAN cAN
+ match
+[an\011]*n bANas ANd ANases iAN cAN
+ match
+[an\012]*n bANas ANd ANases iAN cAN
+ match
+[an\013]*n bANas ANd ANases iAN cAN
+ match
+[an\014]*n bANas ANd ANases iAN cAN
+ match
+[an\015]*n bANas ANd ANases iAN cAN
+ match
+[an\016]*n bANas ANd ANases iAN cAN
+ match
+[an\017]*n bANas ANd ANases iAN cAN
+ match
+[an\020]*n bANas ANd ANases iAN cAN
+ match
+[an\021]*n bANas ANd ANases iAN cAN
+ match
+[an\022]*n bANas ANd ANases iAN cAN
+ match
+[an\023]*n bANas ANd ANases iAN cAN
+ match
+[an\024]*n bANas ANd ANases iAN cAN
+ match
+[an\025]*n bANas ANd ANases iAN cAN
+ match
+[an\026]*n bANas ANd ANases iAN cAN
+ match
+[an\027]*n bANas ANd ANases iAN cAN
+ match
+[an\030]*n bANas ANd ANases iAN cAN
+ match
+[an\031]*n bANas ANd ANases iAN cAN
+ match
+[an\032]*n bANas ANd ANases iAN cAN
+ match
+[an\033]*n bANas ANd ANases iAN cAN
+ match
+[an\034]*n bANas ANd ANases iAN cAN
+ match
+[an\035]*n bANas ANd ANases iAN cAN
+ match
+[an\036]*n bANas ANd ANases iAN cAN
+ match
+[an\037]*n bANas ANd ANases iAN cAN
+ match
+[an\040]*n bANasANdANases iAN cAN
+ match
+[an\041]*n bANas ANd ANases iAN cAN
+ match
+[an\042]*n bANas ANd ANases iAN cAN
+ match
+[an\043]*n bANas ANd ANases iAN cAN
+ match
+[an\044]*n bANas ANd ANases iAN cAN
+ match
+[an\045]*n bANas ANd ANases iAN cAN
+ match
+[an\046]*n bANas ANd ANases iAN cAN
+ match
+[an\047]*n bANas ANd ANases iAN cAN
+ match
+[an\050]*n bANas ANd ANases iAN cAN
+ match
+[an\051]*n bANas ANd ANases iAN cAN
+ match
+[an\052]*n bANas ANd ANases iAN cAN
+ match
+[an\053]*n bANas ANd ANases iAN cAN
+ match
+[an\054]*n bANas ANd ANases iAN cAN
+ match
+[an\055]*n bANas ANd ANases iAN cAN
+ match
+[an\056]*n bANas ANd ANases iAN cAN
+ match
+[an\057]*n bANas ANd ANases iAN cAN
+ match
+[an\060]*n bANas ANd ANases iAN cAN
+ match
+[an\061]*n bANas ANd ANases iAN cAN
+ match
+[an\062]*n bANas ANd ANases iAN cAN
+ match
+[an\063]*n bANas ANd ANases iAN cAN
+ match
+[an\064]*n bANas ANd ANases iAN cAN
+ match
+[an\065]*n bANas ANd ANases iAN cAN
+ match
+[an\066]*n bANas ANd ANases iAN cAN
+ match
+[an\067]*n bANas ANd ANases iAN cAN
+ match
+[an\070]*n bANas ANd ANases iAN cAN
+ match
+[an\071]*n bANas ANd ANases iAN cAN
+ match
+[an\072]*n bANas ANd ANases iAN cAN
+ match
+[an\073]*n bANas ANd ANases iAN cAN
+ match
+[an\074]*n bANas ANd ANases iAN cAN
+ match
+[an\075]*n bANas ANd ANases iAN cAN
+ match
+[an\076]*n bANas ANd ANases iAN cAN
+ match
+[an\077]*n bANas ANd ANases iAN cAN
+ match
+[an\100]*n bANas ANd ANases iAN cAN
+ match
+[an\101]*n bANas ANd ANases iAN cAN
+ match
+[an\102]*n bANas ANd ANases iAN cAN
+ match
+[an\103]*n bANas ANd ANases iAN cAN
+ match
+[an\104]*n bANas ANd ANases iAN cAN
+ match
+[an\105]*n bANas ANd ANases iAN cAN
+ match
+[an\106]*n bANas ANd ANases iAN cAN
+ match
+[an\107]*n bANas ANd ANases iAN cAN
+ match
+[an\110]*n bANas ANd ANases iAN cAN
+ match
+[an\111]*n bANas ANd ANases iAN cAN
+ match
+[an\112]*n bANas ANd ANases iAN cAN
+ match
+[an\113]*n bANas ANd ANases iAN cAN
+ match
+[an\114]*n bANas ANd ANases iAN cAN
+ match
+[an\115]*n bANas ANd ANases iAN cAN
+ match
+[an\116]*n bANas ANd ANases iAN cAN
+ match
+[an\117]*n bANas ANd ANases iAN cAN
+ match
+[an\120]*n bANas ANd ANases iAN cAN
+ match
+[an\121]*n bANas ANd ANases iAN cAN
+ match
+[an\122]*n bANas ANd ANases iAN cAN
+ match
+[an\123]*n bANas ANd ANases iAN cAN
+ match
+[an\124]*n bANas ANd ANases iAN cAN
+ match
+[an\125]*n bANas ANd ANases iAN cAN
+ match
+[an\126]*n bANas ANd ANases iAN cAN
+ match
+[an\127]*n bANas ANd ANases iAN cAN
+ match
+[an\130]*n bANas ANd ANases iAN cAN
+ match
+[an\131]*n bANas ANd ANases iAN cAN
+ match
+[an\132]*n bANas ANd ANases iAN cAN
+ match
+[an\133]*n bANas ANd ANases iAN cAN
+ match
+(error for \134)
+[an\135]*n bANANas ANd ANANases in cANaAN
+ match
+[an\136]*n bANas ANd ANases iAN cAN
+ match
+[an\137]*n bANas ANd ANases iAN cAN
+ match
+[an\140]*n bANas ANd ANases iAN cAN
+ match
+[an\141]*n bANas ANd ANases iAN cAN
+ match
+[an\142]*n ANas ANd ANases iAN cAN
+ match
+[an\143]*n bANas ANd ANases iAN AN
+ match
+[an\144]*n bANas ANd ANases iAN cAN
+ match
+[an\145]*n bANas ANd ANases iAN cAN
+ match
+[an\146]*n bANas ANd ANases iAN cAN
+ match
+[an\147]*n bANas ANd ANases iAN cAN
+ match
+[an\150]*n bANas ANd ANases iAN cAN
+ match
+[an\151]*n bANas ANd ANases AN cAN
+ match
+[an\152]*n bANas ANd ANases iAN cAN
+ match
+[an\153]*n bANas ANd ANases iAN cAN
+ match
+[an\154]*n bANas ANd ANases iAN cAN
+ match
+[an\155]*n bANas ANd ANases iAN cAN
+ match
+[an\156]*n bANas ANd ANases iAN cAN
+ match
+[an\157]*n bANas ANd ANases iAN cAN
+ match
+[an\160]*n bANas ANd ANases iAN cAN
+ match
+[an\161]*n bANas ANd ANases iAN cAN
+ match
+[an\162]*n bANas ANd ANases iAN cAN
+ match
+[an\163]*n bANas ANd ANases iAN cAN
+ match
+[an\164]*n bANas ANd ANases iAN cAN
+ match
+[an\165]*n bANas ANd ANases iAN cAN
+ match
+[an\166]*n bANas ANd ANases iAN cAN
+ match
+[an\167]*n bANas ANd ANases iAN cAN
+ match
+[an\170]*n bANas ANd ANases iAN cAN
+ match
+[an\171]*n bANas ANd ANases iAN cAN
+ match
+[an\172]*n bANas ANd ANases iAN cAN
+ match
+[an\173]*n bANas ANd ANases iAN cAN
+ match
+[an\174]*n bANas ANd ANases iAN cAN
+ match
+[an\175]*n bANas ANd ANases iAN cAN
+ match
+[an\176]*n bANas ANd ANases iAN cAN
+ match
+[an\177]*n bANas ANd ANases iAN cAN
+ match
+[an\200]*n bANas ANd ANases iAN cAN
+ match
+[an\201]*n bANas ANd ANases iAN cAN
+ match
+[an\202]*n bANas ANd ANases iAN cAN
+ match
+[an\203]*n bANas ANd ANases iAN cAN
+ match
+[an\204]*n bANas ANd ANases iAN cAN
+ match
+[an\205]*n bANas ANd ANases iAN cAN
+ match
+[an\206]*n bANas ANd ANases iAN cAN
+ match
+[an\207]*n bANas ANd ANases iAN cAN
+ match
+[an\210]*n bANas ANd ANases iAN cAN
+ match
+[an\211]*n bANas ANd ANases iAN cAN
+ match
+[an\212]*n bANas ANd ANases iAN cAN
+ match
+[an\213]*n bANas ANd ANases iAN cAN
+ match
+[an\214]*n bANas ANd ANases iAN cAN
+ match
+[an\215]*n bANas ANd ANases iAN cAN
+ match
+[an\216]*n bANas ANd ANases iAN cAN
+ match
+[an\217]*n bANas ANd ANases iAN cAN
+ match
+[an\220]*n bANas ANd ANases iAN cAN
+ match
+[an\221]*n bANas ANd ANases iAN cAN
+ match
+[an\222]*n bANas ANd ANases iAN cAN
+ match
+[an\223]*n bANas ANd ANases iAN cAN
+ match
+[an\224]*n bANas ANd ANases iAN cAN
+ match
+[an\225]*n bANas ANd ANases iAN cAN
+ match
+[an\226]*n bANas ANd ANases iAN cAN
+ match
+[an\227]*n bANas ANd ANases iAN cAN
+ match
+[an\230]*n bANas ANd ANases iAN cAN
+ match
+[an\231]*n bANas ANd ANases iAN cAN
+ match
+[an\232]*n bANas ANd ANases iAN cAN
+ match
+[an\233]*n bANas ANd ANases iAN cAN
+ match
+[an\234]*n bANas ANd ANases iAN cAN
+ match
+[an\235]*n bANas ANd ANases iAN cAN
+ match
+[an\236]*n bANas ANd ANases iAN cAN
+ match
+[an\237]*n bANas ANd ANases iAN cAN
+ match
+[an\240]*n bANas ANd ANases iAN cAN
+ match
+[an\241]*n bANas ANd ANases iAN cAN
+ match
+[an\242]*n bANas ANd ANases iAN cAN
+ match
+[an\243]*n bANas ANd ANases iAN cAN
+ match
+[an\244]*n bANas ANd ANases iAN cAN
+ match
+[an\245]*n bANas ANd ANases iAN cAN
+ match
+[an\246]*n bANas ANd ANases iAN cAN
+ match
+[an\247]*n bANas ANd ANases iAN cAN
+ match
+[an\250]*n bANas ANd ANases iAN cAN
+ match
+[an\251]*n bANas ANd ANases iAN cAN
+ match
+[an\252]*n bANas ANd ANases iAN cAN
+ match
+[an\253]*n bANas ANd ANases iAN cAN
+ match
+[an\254]*n bANas ANd ANases iAN cAN
+ match
+[an\255]*n bANas ANd ANases iAN cAN
+ match
+[an\256]*n bANas ANd ANases iAN cAN
+ match
+[an\257]*n bANas ANd ANases iAN cAN
+ match
+[an\260]*n bANas ANd ANases iAN cAN
+ match
+[an\261]*n bANas ANd ANases iAN cAN
+ match
+[an\262]*n bANas ANd ANases iAN cAN
+ match
+[an\263]*n bANas ANd ANases iAN cAN
+ match
+[an\264]*n bANas ANd ANases iAN cAN
+ match
+[an\265]*n bANas ANd ANases iAN cAN
+ match
+[an\266]*n bANas ANd ANases iAN cAN
+ match
+[an\267]*n bANas ANd ANases iAN cAN
+ match
+[an\270]*n bANas ANd ANases iAN cAN
+ match
+[an\271]*n bANas ANd ANases iAN cAN
+ match
+[an\272]*n bANas ANd ANases iAN cAN
+ match
+[an\273]*n bANas ANd ANases iAN cAN
+ match
+[an\274]*n bANas ANd ANases iAN cAN
+ match
+[an\275]*n bANas ANd ANases iAN cAN
+ match
+[an\276]*n bANas ANd ANases iAN cAN
+ match
+[an\277]*n bANas ANd ANases iAN cAN
+ match
+[an\300]*n bANas ANd ANases iAN cAN
+ match
+[an\301]*n bANas ANd ANases iAN cAN
+ match
+[an\302]*n bANas ANd ANases iAN cAN
+ match
+[an\303]*n bANas ANd ANases iAN cAN
+ match
+[an\304]*n bANas ANd ANases iAN cAN
+ match
+[an\305]*n bANas ANd ANases iAN cAN
+ match
+[an\306]*n bANas ANd ANases iAN cAN
+ match
+[an\307]*n bANas ANd ANases iAN cAN
+ match
+[an\310]*n bANas ANd ANases iAN cAN
+ match
+[an\311]*n bANas ANd ANases iAN cAN
+ match
+[an\312]*n bANas ANd ANases iAN cAN
+ match
+[an\313]*n bANas ANd ANases iAN cAN
+ match
+[an\314]*n bANas ANd ANases iAN cAN
+ match
+[an\315]*n bANas ANd ANases iAN cAN
+ match
+[an\316]*n bANas ANd ANases iAN cAN
+ match
+[an\317]*n bANas ANd ANases iAN cAN
+ match
+[an\320]*n bANas ANd ANases iAN cAN
+ match
+[an\321]*n bANas ANd ANases iAN cAN
+ match
+[an\322]*n bANas ANd ANases iAN cAN
+ match
+[an\323]*n bANas ANd ANases iAN cAN
+ match
+[an\324]*n bANas ANd ANases iAN cAN
+ match
+[an\325]*n bANas ANd ANases iAN cAN
+ match
+[an\326]*n bANas ANd ANases iAN cAN
+ match
+[an\327]*n bANas ANd ANases iAN cAN
+ match
+[an\330]*n bANas ANd ANases iAN cAN
+ match
+[an\331]*n bANas ANd ANases iAN cAN
+ match
+[an\332]*n bANas ANd ANases iAN cAN
+ match
+[an\333]*n bANas ANd ANases iAN cAN
+ match
+[an\334]*n bANas ANd ANases iAN cAN
+ match
+[an\335]*n bANas ANd ANases iAN cAN
+ match
+[an\336]*n bANas ANd ANases iAN cAN
+ match
+[an\337]*n bANas ANd ANases iAN cAN
+ match
+[an\340]*n bANas ANd ANases iAN cAN
+ match
+[an\341]*n bANas ANd ANases iAN cAN
+ match
+[an\342]*n bANas ANd ANases iAN cAN
+ match
+[an\343]*n bANas ANd ANases iAN cAN
+ match
+[an\344]*n bANas ANd ANases iAN cAN
+ match
+[an\345]*n bANas ANd ANases iAN cAN
+ match
+[an\346]*n bANas ANd ANases iAN cAN
+ match
+[an\347]*n bANas ANd ANases iAN cAN
+ match
+[an\350]*n bANas ANd ANases iAN cAN
+ match
+[an\351]*n bANas ANd ANases iAN cAN
+ match
+[an\352]*n bANas ANd ANases iAN cAN
+ match
+[an\353]*n bANas ANd ANases iAN cAN
+ match
+[an\354]*n bANas ANd ANases iAN cAN
+ match
+[an\355]*n bANas ANd ANases iAN cAN
+ match
+[an\356]*n bANas ANd ANases iAN cAN
+ match
+[an\357]*n bANas ANd ANases iAN cAN
+ match
+[an\360]*n bANas ANd ANases iAN cAN
+ match
+[an\361]*n bANas ANd ANases iAN cAN
+ match
+[an\362]*n bANas ANd ANases iAN cAN
+ match
+[an\363]*n bANas ANd ANases iAN cAN
+ match
+[an\364]*n bANas ANd ANases iAN cAN
+ match
+[an\365]*n bANas ANd ANases iAN cAN
+ match
+[an\366]*n bANas ANd ANases iAN cAN
+ match
+[an\367]*n bANas ANd ANases iAN cAN
+ match
+[an\370]*n bANas ANd ANases iAN cAN
+ match
+[an\371]*n bANas ANd ANases iAN cAN
+ match
+[an\372]*n bANas ANd ANases iAN cAN
+ match
+[an\373]*n bANas ANd ANases iAN cAN
+ match
+[an\374]*n bANas ANd ANases iAN cAN
+ match
+[an\375]*n bANas ANd ANases iAN cAN
+ match
+[an\376]*n bANas ANd ANases iAN cAN
+ match
+[an\377]*n bANas ANd ANases iAN cAN
+ match
diff --git a/test/rebuf.awk b/test/rebuf.awk
new file mode 100644
index 0000000..69b5f05
--- /dev/null
+++ b/test/rebuf.awk
@@ -0,0 +1,73 @@
+# From lole@epost.de Wed Sep 4 09:54:19 IDT 2002
+# Article: 14288 of comp.lang.awk
+# Path: iad-read.news.verio.net!dfw-artgen!iad-peer.news.verio.net!news.verio.net!news.maxwell.syr.edu!fu-berlin.de!uni-berlin.de!213.70.124.113!not-for-mail
+# From: LorenzAtWork <familie.lenhardt@epost.de>
+# Newsgroups: comp.lang.awk
+# Subject: bug in gawk 3.1.1?
+# Date: Wed, 28 Aug 2002 10:34:50 +0200
+# Lines: 45
+# Message-ID: <7g1pmukv07c56ep3qav3uebnipdaohqh2l@4ax.com>
+# Reply-To: lole@epost.de
+# NNTP-Posting-Host: 213.70.124.113
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Transfer-Encoding: 7bit
+# X-Trace: fu-berlin.de 1030523788 53278293 213.70.124.113 (16 [68559])
+# X-Newsreader: Forte Agent 1.91/32.564
+# Xref: dfw-artgen comp.lang.awk:14288
+#
+# hello all,
+#
+# I'm using the following script
+#
+BEGIN {
+ RS="ti1\n(dwv,)?"
+ s = 0
+ i = 0
+}
+{
+ if ($1 != "")
+ s = $1
+ print ++i, s
+}
+#
+# to extract values from a file of the form
+#
+# ti1
+# dwv,98.22
+# ti1
+# dwv,103.08
+# ti1
+# ti1
+# dwv,196.25
+# ti1
+# dwv,210.62
+# ti1
+# dwv,223.53
+#
+# The desired result for this example looks like
+#
+# 1 0
+# 2 98.22
+# 3 103.08
+# 4 103.08
+# 5 196.25
+# 6 210.62
+# 7 223.53
+#
+# The script work fine the most time, but when run on the attached file
+# (sorry for the size, but the error would not appear with less data) I
+# get some (three with the attached file) lines that look like
+#
+# 1262 dwv,212.97
+# 1277 dwv,174.33
+# 1279 dwv,151.79
+#
+# I can't think of a other reason for this than a bug in gawk!
+#
+# I'm running gawk 3.1.1 on winnt 4.0
+#
+# best regards
+# Lorenz
+#
+#
diff --git a/test/rebuf.in b/test/rebuf.in
new file mode 100644
index 0000000..46d2210
--- /dev/null
+++ b/test/rebuf.in
@@ -0,0 +1,2350 @@
+ti1
+dwv,214.59
+ti1
+dwv,230.31
+ti1
+dwv,242.64
+ti1
+dwv,253.94
+ti1
+dwv,264.33
+ti1
+dwv,270.94
+ti1
+dwv,273.52
+ti1
+dwv,270.08
+ti1
+dwv,263.19
+ti1
+dwv,254.45
+ti1
+dwv,244.91
+ti1
+dwv,234.55
+ti1
+dwv,222.49
+ti1
+dwv,209.94
+ti1
+dwv,197.17
+ti1
+dwv,182.89
+ti1
+dwv,169.76
+ti1
+dwv,158.59
+ti1
+dwv,145.37
+ti1
+dwv,135.46
+ti1
+dwv,124.77
+ti1
+dwv,115.98
+ti1
+dwv,108.77
+ti1
+dwv,101.12
+ti1
+dwv,94.45
+ti1
+dwv,89.08
+ti1
+dwv,84.63
+ti1
+dwv,81.05
+ti1
+dwv,78.93
+ti1
+dwv,76.65
+ti1
+dwv,75.59
+ti1
+ti1
+ti1
+dwv,77.47
+ti1
+dwv,80.17
+ti1
+dwv,83.90
+ti1
+dwv,88.56
+ti1
+dwv,95.69
+ti1
+dwv,97.48
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,203.08
+ti1
+dwv,218.22
+ti1
+dwv,229.37
+ti1
+dwv,238.49
+ti1
+dwv,247.43
+ti1
+dwv,255.22
+ti1
+dwv,261.31
+ti1
+dwv,262.36
+ti1
+dwv,260.66
+ti1
+dwv,256.33
+ti1
+dwv,249.34
+ti1
+dwv,240.03
+ti1
+dwv,228.55
+ti1
+dwv,215.42
+ti1
+dwv,203.37
+ti1
+dwv,190.01
+ti1
+dwv,177.81
+ti1
+dwv,165.44
+ti1
+dwv,152.92
+ti1
+dwv,142.03
+ti1
+dwv,132.91
+ti1
+dwv,124.48
+ti1
+dwv,116.45
+ti1
+dwv,109.06
+ti1
+dwv,103.27
+ti1
+dwv,98.87
+ti1
+dwv,94.95
+ti1
+dwv,92.56
+ti1
+dwv,90.47
+ti1
+dwv,89.48
+ti1
+ti1
+dwv,90.53
+ti1
+dwv,93.07
+ti1
+dwv,97.12
+ti1
+dwv,101.82
+ti1
+dwv,108.18
+ti1
+dwv,109.73
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,202.97
+ti1
+dwv,217.38
+ti1
+dwv,231.73
+ti1
+dwv,243.11
+ti1
+dwv,255.37
+ti1
+dwv,264.12
+ti1
+dwv,269.64
+ti1
+dwv,270.98
+ti1
+dwv,269.65
+ti1
+dwv,264.55
+ti1
+dwv,257.16
+ti1
+dwv,246.01
+ti1
+dwv,232.88
+ti1
+dwv,219.85
+ti1
+dwv,208.79
+ti1
+dwv,197.00
+ti1
+dwv,183.93
+ti1
+dwv,172.00
+ti1
+dwv,160.55
+ti1
+dwv,150.59
+ti1
+dwv,141.47
+ti1
+dwv,133.02
+ti1
+dwv,126.21
+ti1
+dwv,120.64
+ti1
+dwv,115.79
+ti1
+dwv,111.62
+ti1
+dwv,108.41
+ti1
+dwv,106.41
+ti1
+ti1
+ti1
+dwv,109.08
+ti1
+dwv,113.23
+ti1
+dwv,118.57
+ti1
+dwv,122.57
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,208.07
+ti1
+dwv,224.14
+ti1
+dwv,236.28
+ti1
+dwv,248.12
+ti1
+dwv,258.97
+ti1
+dwv,267.74
+ti1
+dwv,272.47
+ti1
+dwv,271.52
+ti1
+dwv,266.80
+ti1
+dwv,258.61
+ti1
+dwv,249.30
+ti1
+dwv,239.19
+ti1
+dwv,228.28
+ti1
+dwv,215.79
+ti1
+dwv,203.86
+ti1
+dwv,190.08
+ti1
+dwv,177.40
+ti1
+dwv,163.81
+ti1
+dwv,152.60
+ti1
+dwv,141.33
+ti1
+dwv,130.98
+ti1
+dwv,121.98
+ti1
+dwv,114.08
+ti1
+dwv,106.61
+ti1
+dwv,99.75
+ti1
+dwv,93.10
+ti1
+dwv,86.57
+ti1
+dwv,80.62
+ti1
+dwv,76.05
+ti1
+dwv,71.52
+ti1
+dwv,68.85
+ti1
+dwv,67.46
+ti1
+dwv,66.86
+ti1
+dwv,67.51
+ti1
+dwv,69.75
+ti1
+dwv,72.85
+ti1
+dwv,76.23
+ti1
+dwv,82.85
+ti1
+dwv,89.33
+ti1
+dwv,93.39
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,188.37
+ti1
+dwv,204.42
+ti1
+dwv,217.16
+ti1
+dwv,228.89
+ti1
+dwv,238.83
+ti1
+dwv,247.70
+ti1
+dwv,253.59
+ti1
+dwv,257.17
+ti1
+ti1
+dwv,254.00
+ti1
+dwv,248.24
+ti1
+dwv,240.14
+ti1
+dwv,229.42
+ti1
+dwv,218.97
+ti1
+dwv,205.09
+ti1
+dwv,192.61
+ti1
+dwv,179.74
+ti1
+dwv,166.76
+ti1
+dwv,155.36
+ti1
+dwv,143.58
+ti1
+dwv,131.40
+ti1
+dwv,121.84
+ti1
+dwv,112.46
+ti1
+dwv,105.41
+ti1
+dwv,97.15
+ti1
+dwv,90.09
+ti1
+dwv,84.79
+ti1
+dwv,80.52
+ti1
+dwv,75.58
+ti1
+dwv,72.59
+ti1
+dwv,69.39
+ti1
+dwv,67.51
+ti1
+dwv,66.42
+ti1
+ti1
+ti1
+dwv,67.82
+ti1
+dwv,69.76
+ti1
+dwv,73.19
+ti1
+dwv,77.35
+ti1
+dwv,82.36
+ti1
+dwv,87.82
+ti1
+dwv,93.30
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,190.58
+ti1
+dwv,203.43
+ti1
+dwv,216.48
+ti1
+dwv,228.89
+ti1
+dwv,241.91
+ti1
+dwv,251.60
+ti1
+dwv,257.78
+ti1
+dwv,262.18
+ti1
+dwv,263.13
+ti1
+dwv,260.91
+ti1
+dwv,255.34
+ti1
+dwv,247.17
+ti1
+dwv,236.85
+ti1
+dwv,225.24
+ti1
+dwv,213.39
+ti1
+dwv,201.46
+ti1
+dwv,187.77
+ti1
+dwv,175.31
+ti1
+dwv,162.95
+ti1
+dwv,152.55
+ti1
+dwv,142.56
+ti1
+dwv,132.94
+ti1
+dwv,125.00
+ti1
+dwv,117.69
+ti1
+dwv,110.96
+ti1
+dwv,105.02
+ti1
+dwv,101.78
+ti1
+dwv,98.48
+ti1
+dwv,97.06
+ti1
+dwv,96.50
+ti1
+ti1
+dwv,98.48
+ti1
+dwv,101.18
+ti1
+dwv,104.56
+ti1
+dwv,109.67
+ti1
+dwv,115.86
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,200.02
+ti1
+dwv,217.51
+ti1
+dwv,233.21
+ti1
+dwv,245.72
+ti1
+dwv,258.21
+ti1
+dwv,267.24
+ti1
+dwv,273.79
+ti1
+dwv,273.20
+ti1
+dwv,270.38
+ti1
+dwv,260.76
+ti1
+dwv,250.05
+ti1
+dwv,241.32
+ti1
+dwv,231.14
+ti1
+dwv,219.83
+ti1
+dwv,206.13
+ti1
+dwv,193.24
+ti1
+dwv,180.73
+ti1
+dwv,167.82
+ti1
+dwv,156.94
+ti1
+dwv,144.13
+ti1
+dwv,134.40
+ti1
+dwv,125.23
+ti1
+dwv,116.13
+ti1
+dwv,107.34
+ti1
+dwv,99.71
+ti1
+dwv,94.11
+ti1
+dwv,88.91
+ti1
+dwv,84.51
+ti1
+dwv,81.50
+ti1
+dwv,78.66
+ti1
+dwv,76.57
+ti1
+dwv,75.82
+ti1
+ti1
+dwv,76.88
+ti1
+dwv,79.03
+ti1
+dwv,82.12
+ti1
+dwv,85.73
+ti1
+dwv,91.05
+ti1
+dwv,96.31
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,184.18
+ti1
+dwv,201.10
+ti1
+dwv,214.21
+ti1
+dwv,226.18
+ti1
+dwv,237.72
+ti1
+dwv,247.57
+ti1
+dwv,254.36
+ti1
+dwv,258.34
+ti1
+dwv,259.80
+ti1
+dwv,257.76
+ti1
+dwv,253.17
+ti1
+dwv,246.51
+ti1
+dwv,237.92
+ti1
+dwv,227.09
+ti1
+dwv,214.13
+ti1
+dwv,202.20
+ti1
+dwv,189.21
+ti1
+dwv,177.65
+ti1
+dwv,166.18
+ti1
+dwv,154.03
+ti1
+dwv,142.21
+ti1
+dwv,131.51
+ti1
+dwv,121.28
+ti1
+dwv,111.80
+ti1
+dwv,104.47
+ti1
+dwv,98.80
+ti1
+dwv,94.76
+ti1
+dwv,91.81
+ti1
+dwv,89.17
+ti1
+dwv,88.00
+ti1
+ti1
+ti1
+dwv,89.20
+ti1
+dwv,91.17
+ti1
+dwv,94.35
+ti1
+dwv,99.00
+ti1
+dwv,105.43
+ti1
+dwv,109.34
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,194.84
+ti1
+dwv,212.05
+ti1
+dwv,226.30
+ti1
+dwv,239.03
+ti1
+dwv,250.94
+ti1
+dwv,259.73
+ti1
+dwv,266.64
+ti1
+dwv,269.67
+ti1
+dwv,269.03
+ti1
+dwv,265.03
+ti1
+dwv,258.23
+ti1
+dwv,249.32
+ti1
+dwv,238.03
+ti1
+dwv,226.20
+ti1
+dwv,213.46
+ti1
+dwv,200.53
+ti1
+dwv,187.65
+ti1
+dwv,174.89
+ti1
+dwv,163.22
+ti1
+dwv,152.47
+ti1
+dwv,142.65
+ti1
+dwv,133.97
+ti1
+dwv,126.59
+ti1
+dwv,120.52
+ti1
+dwv,115.57
+ti1
+dwv,111.49
+ti1
+dwv,108.03
+ti1
+dwv,106.01
+ti1
+dwv,105.28
+ti1
+ti1
+dwv,106.91
+ti1
+dwv,109.73
+ti1
+dwv,114.91
+ti1
+dwv,120.66
+ti1
+dwv,123.74
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,211.57
+ti1
+dwv,227.06
+ti1
+dwv,240.57
+ti1
+dwv,252.26
+ti1
+dwv,262.67
+ti1
+dwv,270.66
+ti1
+dwv,273.40
+ti1
+dwv,270.25
+ti1
+dwv,263.76
+ti1
+dwv,256.03
+ti1
+dwv,246.87
+ti1
+dwv,237.10
+ti1
+dwv,225.11
+ti1
+dwv,211.53
+ti1
+dwv,197.77
+ti1
+dwv,185.75
+ti1
+dwv,173.00
+ti1
+dwv,159.31
+ti1
+dwv,147.18
+ti1
+dwv,134.84
+ti1
+dwv,125.07
+ti1
+dwv,115.82
+ti1
+dwv,107.33
+ti1
+dwv,100.07
+ti1
+dwv,93.55
+ti1
+dwv,87.60
+ti1
+dwv,81.75
+ti1
+dwv,77.03
+ti1
+dwv,73.39
+ti1
+dwv,70.97
+ti1
+dwv,67.94
+ti1
+dwv,66.64
+ti1
+dwv,65.80
+ti1
+ti1
+dwv,66.85
+ti1
+dwv,68.78
+ti1
+dwv,71.47
+ti1
+dwv,74.20
+ti1
+dwv,78.68
+ti1
+dwv,85.08
+ti1
+dwv,87.47
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,185.81
+ti1
+dwv,201.66
+ti1
+dwv,215.07
+ti1
+dwv,227.26
+ti1
+dwv,238.00
+ti1
+dwv,247.64
+ti1
+dwv,255.03
+ti1
+dwv,257.12
+ti1
+dwv,256.17
+ti1
+dwv,253.47
+ti1
+dwv,248.93
+ti1
+dwv,241.39
+ti1
+dwv,231.45
+ti1
+dwv,220.49
+ti1
+dwv,208.48
+ti1
+dwv,196.04
+ti1
+dwv,182.73
+ti1
+dwv,169.40
+ti1
+dwv,157.24
+ti1
+dwv,145.56
+ti1
+dwv,133.54
+ti1
+dwv,124.01
+ti1
+dwv,114.55
+ti1
+dwv,105.75
+ti1
+dwv,98.32
+ti1
+dwv,91.91
+ti1
+dwv,86.08
+ti1
+dwv,81.35
+ti1
+dwv,77.78
+ti1
+dwv,73.85
+ti1
+dwv,71.12
+ti1
+dwv,68.53
+ti1
+dwv,67.09
+ti1
+dwv,66.34
+ti1
+ti1
+ti1
+dwv,67.92
+ti1
+dwv,70.08
+ti1
+dwv,73.78
+ti1
+dwv,78.68
+ti1
+dwv,84.33
+ti1
+dwv,90.25
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,183.19
+ti1
+dwv,198.96
+ti1
+dwv,213.55
+ti1
+dwv,225.91
+ti1
+dwv,237.33
+ti1
+dwv,246.66
+ti1
+dwv,254.98
+ti1
+dwv,259.46
+ti1
+dwv,261.02
+ti1
+dwv,260.02
+ti1
+dwv,255.96
+ti1
+dwv,249.08
+ti1
+dwv,240.15
+ti1
+dwv,229.51
+ti1
+dwv,217.21
+ti1
+dwv,205.06
+ti1
+dwv,192.62
+ti1
+dwv,177.43
+ti1
+dwv,165.06
+ti1
+dwv,152.36
+ti1
+dwv,142.35
+ti1
+dwv,134.58
+ti1
+dwv,126.20
+ti1
+dwv,119.86
+ti1
+dwv,113.67
+ti1
+dwv,108.20
+ti1
+dwv,104.71
+ti1
+dwv,100.83
+ti1
+dwv,98.96
+ti1
+dwv,98.38
+ti1
+ti1
+dwv,100.29
+ti1
+dwv,103.47
+ti1
+dwv,107.73
+ti1
+dwv,113.04
+ti1
+dwv,118.90
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,200.70
+ti1
+dwv,217.77
+ti1
+dwv,232.45
+ti1
+dwv,244.28
+ti1
+dwv,256.61
+ti1
+dwv,265.93
+ti1
+dwv,272.01
+ti1
+ti1
+dwv,268.67
+ti1
+dwv,260.53
+ti1
+dwv,252.09
+ti1
+dwv,243.72
+ti1
+dwv,232.68
+ti1
+dwv,220.49
+ti1
+dwv,206.88
+ti1
+dwv,193.98
+ti1
+dwv,181.33
+ti1
+dwv,168.61
+ti1
+dwv,156.50
+ti1
+dwv,145.54
+ti1
+dwv,136.43
+ti1
+dwv,125.95
+ti1
+dwv,117.26
+ti1
+dwv,109.81
+ti1
+dwv,103.36
+ti1
+dwv,97.15
+ti1
+dwv,92.86
+ti1
+dwv,89.02
+ti1
+dwv,86.39
+ti1
+dwv,84.44
+ti1
+dwv,83.72
+ti1
+ti1
+dwv,85.89
+ti1
+dwv,88.39
+ti1
+dwv,92.31
+ti1
+dwv,96.00
+ti1
+dwv,100.24
+ti1
+dwv,102.55
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,197.15
+ti1
+dwv,212.33
+ti1
+dwv,225.48
+ti1
+dwv,236.75
+ti1
+dwv,247.52
+ti1
+dwv,255.21
+ti1
+dwv,260.74
+ti1
+dwv,262.81
+ti1
+dwv,262.09
+ti1
+dwv,258.08
+ti1
+dwv,250.83
+ti1
+dwv,242.39
+ti1
+dwv,230.86
+ti1
+dwv,219.62
+ti1
+dwv,206.80
+ti1
+dwv,193.41
+ti1
+dwv,180.60
+ti1
+dwv,168.20
+ti1
+dwv,157.77
+ti1
+dwv,145.25
+ti1
+dwv,136.23
+ti1
+dwv,126.28
+ti1
+dwv,118.10
+ti1
+dwv,110.74
+ti1
+dwv,105.29
+ti1
+dwv,99.75
+ti1
+dwv,95.61
+ti1
+dwv,92.16
+ti1
+dwv,89.93
+ti1
+dwv,88.45
+ti1
+ti1
+dwv,89.11
+ti1
+dwv,90.87
+ti1
+dwv,94.21
+ti1
+dwv,98.16
+ti1
+dwv,104.24
+ti1
+dwv,108.98
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,195.81
+ti1
+dwv,211.95
+ti1
+dwv,226.36
+ti1
+dwv,240.61
+ti1
+dwv,251.93
+ti1
+dwv,259.13
+ti1
+dwv,265.36
+ti1
+dwv,269.71
+ti1
+dwv,270.27
+ti1
+dwv,266.44
+ti1
+dwv,260.44
+ti1
+dwv,251.94
+ti1
+dwv,240.79
+ti1
+dwv,228.95
+ti1
+dwv,215.90
+ti1
+dwv,203.25
+ti1
+dwv,190.01
+ti1
+dwv,177.92
+ti1
+dwv,165.60
+ti1
+dwv,155.49
+ti1
+dwv,144.32
+ti1
+dwv,136.07
+ti1
+dwv,127.64
+ti1
+dwv,120.28
+ti1
+dwv,114.57
+ti1
+dwv,109.99
+ti1
+dwv,106.36
+ti1
+dwv,104.49
+ti1
+dwv,103.84
+ti1
+ti1
+dwv,105.77
+ti1
+dwv,107.83
+ti1
+dwv,112.41
+ti1
+dwv,117.71
+ti1
+dwv,120.66
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,210.13
+ti1
+dwv,225.03
+ti1
+dwv,238.76
+ti1
+dwv,250.50
+ti1
+dwv,261.18
+ti1
+dwv,269.22
+ti1
+dwv,274.18
+ti1
+dwv,272.28
+ti1
+dwv,266.66
+ti1
+dwv,258.68
+ti1
+dwv,249.88
+ti1
+dwv,239.94
+ti1
+dwv,227.14
+ti1
+dwv,213.22
+ti1
+dwv,197.58
+ti1
+dwv,184.86
+ti1
+dwv,172.52
+ti1
+dwv,160.19
+ti1
+dwv,149.20
+ti1
+dwv,137.49
+ti1
+dwv,127.86
+ti1
+dwv,118.91
+ti1
+dwv,110.49
+ti1
+dwv,102.73
+ti1
+dwv,96.33
+ti1
+dwv,90.95
+ti1
+dwv,86.38
+ti1
+dwv,82.72
+ti1
+dwv,79.65
+ti1
+dwv,77.61
+ti1
+dwv,75.70
+ti1
+dwv,74.49
+ti1
+ti1
+ti1
+dwv,76.48
+ti1
+dwv,79.14
+ti1
+dwv,82.84
+ti1
+dwv,87.86
+ti1
+dwv,92.69
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,181.33
+ti1
+dwv,196.86
+ti1
+dwv,210.98
+ti1
+dwv,223.13
+ti1
+dwv,233.90
+ti1
+dwv,243.19
+ti1
+dwv,250.57
+ti1
+dwv,255.00
+ti1
+dwv,256.36
+ti1
+dwv,255.16
+ti1
+dwv,250.15
+ti1
+dwv,242.80
+ti1
+dwv,233.82
+ti1
+dwv,223.41
+ti1
+dwv,210.81
+ti1
+dwv,199.04
+ti1
+dwv,187.39
+ti1
+dwv,174.14
+ti1
+dwv,162.62
+ti1
+dwv,151.39
+ti1
+dwv,139.59
+ti1
+dwv,128.71
+ti1
+dwv,119.17
+ti1
+dwv,111.02
+ti1
+dwv,103.91
+ti1
+dwv,96.78
+ti1
+dwv,91.56
+ti1
+dwv,87.13
+ti1
+dwv,83.22
+ti1
+dwv,80.50
+ti1
+dwv,76.83
+ti1
+dwv,74.24
+ti1
+dwv,70.80
+ti1
+dwv,69.04
+ti1
+dwv,67.12
+ti1
+dwv,66.51
+ti1
+ti1
+dwv,68.77
+ti1
+dwv,72.19
+ti1
+dwv,77.34
+ti1
+dwv,84.04
+ti1
+dwv,88.55
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,190.51
+ti1
+dwv,207.14
+ti1
+dwv,220.57
+ti1
+dwv,232.51
+ti1
+dwv,243.35
+ti1
+dwv,252.41
+ti1
+dwv,258.62
+ti1
+dwv,262.18
+ti1
+ti1
+dwv,259.10
+ti1
+dwv,253.54
+ti1
+dwv,245.44
+ti1
+dwv,235.55
+ti1
+dwv,223.43
+ti1
+dwv,209.91
+ti1
+dwv,197.52
+ti1
+dwv,185.90
+ti1
+dwv,172.13
+ti1
+dwv,161.09
+ti1
+dwv,150.58
+ti1
+dwv,140.37
+ti1
+dwv,130.27
+ti1
+dwv,122.13
+ti1
+dwv,114.99
+ti1
+dwv,108.76
+ti1
+dwv,104.67
+ti1
+dwv,100.36
+ti1
+dwv,97.61
+ti1
+dwv,95.48
+ti1
+dwv,94.83
+ti1
+dwv,95.45
+ti1
+dwv,97.15
+ti1
+dwv,100.73
+ti1
+dwv,105.10
+ti1
+dwv,111.46
+ti1
+dwv,118.27
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,202.92
+ti1
+dwv,220.25
+ti1
+dwv,233.35
+ti1
+dwv,243.48
+ti1
+dwv,254.85
+ti1
+dwv,265.75
+ti1
+dwv,272.62
+ti1
+ti1
+dwv,269.36
+ti1
+dwv,261.82
+ti1
+dwv,252.85
+ti1
+dwv,244.08
+ti1
+dwv,232.96
+ti1
+dwv,219.59
+ti1
+dwv,207.32
+ti1
+dwv,193.87
+ti1
+dwv,181.77
+ti1
+dwv,168.60
+ti1
+dwv,155.76
+ti1
+dwv,144.03
+ti1
+dwv,134.07
+ti1
+dwv,123.46
+ti1
+dwv,114.47
+ti1
+dwv,107.64
+ti1
+dwv,100.46
+ti1
+dwv,94.53
+ti1
+dwv,89.28
+ti1
+dwv,84.59
+ti1
+dwv,80.96
+ti1
+dwv,78.54
+ti1
+dwv,76.28
+ti1
+dwv,75.51
+ti1
+ti1
+dwv,76.55
+ti1
+dwv,78.55
+ti1
+dwv,81.57
+ti1
+dwv,85.18
+ti1
+dwv,90.61
+ti1
+dwv,96.01
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,184.51
+ti1
+dwv,201.57
+ti1
+dwv,216.33
+ti1
+dwv,228.69
+ti1
+dwv,239.90
+ti1
+dwv,250.41
+ti1
+dwv,257.91
+ti1
+dwv,262.29
+ti1
+dwv,263.41
+ti1
+dwv,261.70
+ti1
+dwv,256.75
+ti1
+dwv,246.82
+ti1
+dwv,236.35
+ti1
+dwv,225.17
+ti1
+dwv,212.90
+ti1
+dwv,201.61
+ti1
+dwv,188.42
+ti1
+dwv,175.92
+ti1
+dwv,163.70
+ti1
+dwv,153.18
+ti1
+dwv,142.89
+ti1
+dwv,132.95
+ti1
+dwv,125.18
+ti1
+dwv,117.61
+ti1
+dwv,110.36
+ti1
+dwv,104.56
+ti1
+dwv,100.13
+ti1
+dwv,96.64
+ti1
+dwv,93.52
+ti1
+dwv,91.91
+ti1
+ti1
+ti1
+dwv,93.84
+ti1
+dwv,97.13
+ti1
+dwv,101.08
+ti1
+dwv,107.19
+ti1
+dwv,111.89
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,195.89
+ti1
+dwv,212.65
+ti1
+dwv,226.60
+ti1
+dwv,239.28
+ti1
+dwv,251.28
+ti1
+dwv,259.92
+ti1
+dwv,266.03
+ti1
+dwv,269.76
+ti1
+ti1
+dwv,265.55
+ti1
+dwv,258.92
+ti1
+dwv,250.42
+ti1
+dwv,240.04
+ti1
+dwv,229.03
+ti1
+dwv,216.69
+ti1
+dwv,204.21
+ti1
+dwv,191.25
+ti1
+dwv,178.40
+ti1
+dwv,168.31
+ti1
+dwv,157.47
+ti1
+dwv,148.62
+ti1
+dwv,139.12
+ti1
+dwv,129.54
+ti1
+dwv,121.65
+ti1
+dwv,114.59
+ti1
+dwv,109.30
+ti1
+dwv,106.39
+ti1
+dwv,104.71
+ti1
+ti1
+dwv,106.41
+ti1
+dwv,109.22
+ti1
+dwv,113.62
+ti1
+dwv,118.31
+ti1
+dwv,124.34
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,205.67
+ti1
+dwv,221.25
+ti1
+dwv,235.02
+ti1
+dwv,247.47
+ti1
+dwv,258.37
+ti1
+dwv,267.42
+ti1
+dwv,272.60
+ti1
+dwv,272.00
+ti1
+dwv,267.91
+ti1
+dwv,260.38
+ti1
+dwv,251.10
+ti1
+dwv,241.32
+ti1
+dwv,230.96
+ti1
+dwv,217.34
+ti1
+dwv,204.99
+ti1
+dwv,191.24
+ti1
+dwv,178.58
+ti1
+dwv,164.79
+ti1
+dwv,153.07
+ti1
+dwv,141.06
+ti1
+dwv,129.86
+ti1
+dwv,119.79
+ti1
+dwv,111.13
+ti1
+dwv,103.53
+ti1
+dwv,96.95
+ti1
+dwv,89.42
+ti1
+dwv,85.22
+ti1
+dwv,80.54
+ti1
+dwv,76.85
+ti1
+dwv,74.41
+ti1
+dwv,72.12
+ti1
+dwv,71.21
+ti1
+ti1
+ti1
+dwv,72.13
+ti1
+dwv,74.22
+ti1
+dwv,76.95
+ti1
+dwv,80.65
+ti1
+dwv,85.36
+ti1
+dwv,90.60
+ti1
+dwv,92.36
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,191.27
+ti1
+dwv,205.03
+ti1
+dwv,218.89
+ti1
+dwv,230.87
+ti1
+dwv,241.63
+ti1
+dwv,249.83
+ti1
+dwv,255.42
+ti1
+dwv,257.98
+ti1
+dwv,257.33
+ti1
+dwv,252.87
+ti1
+dwv,245.90
+ti1
+dwv,237.78
+ti1
+dwv,227.14
+ti1
+dwv,214.67
+ti1
+dwv,202.31
+ti1
+dwv,188.68
+ti1
+dwv,175.96
+ti1
+dwv,163.25
+ti1
+dwv,151.43
+ti1
+dwv,139.79
+ti1
+dwv,130.40
+ti1
+dwv,118.92
+ti1
+dwv,110.88
+ti1
+dwv,101.92
+ti1
+dwv,94.45
+ti1
+dwv,88.13
+ti1
+dwv,83.19
+ti1
+dwv,79.11
+ti1
+dwv,74.60
+ti1
+dwv,71.86
+ti1
+dwv,68.77
+ti1
+dwv,66.57
+ti1
+dwv,65.24
+ti1
+dwv,64.41
+ti1
+ti1
+dwv,64.92
+ti1
+dwv,66.62
+ti1
+dwv,68.93
+ti1
+dwv,72.77
+ti1
+dwv,77.76
+ti1
+dwv,83.41
+ti1
+dwv,89.19
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,182.68
+ti1
+dwv,199.88
+ti1
+dwv,214.62
+ti1
+dwv,227.29
+ti1
+dwv,238.62
+ti1
+dwv,249.01
+ti1
+dwv,256.68
+ti1
+dwv,262.71
+ti1
+dwv,263.44
+ti1
+dwv,259.87
+ti1
+dwv,254.66
+ti1
+dwv,248.11
+ti1
+dwv,240.01
+ti1
+dwv,229.30
+ti1
+dwv,216.52
+ti1
+dwv,205.15
+ti1
+dwv,192.49
+ti1
+dwv,179.70
+ti1
+dwv,167.51
+ti1
+dwv,156.31
+ti1
+dwv,145.97
+ti1
+dwv,135.93
+ti1
+dwv,128.06
+ti1
+dwv,119.45
+ti1
+dwv,113.01
+ti1
+dwv,108.31
+ti1
+dwv,103.79
+ti1
+dwv,100.92
+ti1
+dwv,98.90
+ti1
+dwv,98.28
+ti1
+ti1
+dwv,100.12
+ti1
+dwv,102.38
+ti1
+dwv,106.07
+ti1
+dwv,111.06
+ti1
+dwv,117.00
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,202.42
+ti1
+dwv,217.46
+ti1
+dwv,232.83
+ti1
+dwv,245.05
+ti1
+dwv,256.39
+ti1
+dwv,265.28
+ti1
+dwv,271.80
+ti1
+ti1
+dwv,268.63
+ti1
+dwv,261.21
+ti1
+dwv,253.57
+ti1
+dwv,244.41
+ti1
+dwv,233.79
+ti1
+dwv,220.80
+ti1
+dwv,209.24
+ti1
+dwv,196.54
+ti1
+dwv,183.38
+ti1
+dwv,170.14
+ti1
+dwv,157.79
+ti1
+dwv,144.31
+ti1
+dwv,131.53
+ti1
+dwv,122.20
+ti1
+dwv,113.46
+ti1
+dwv,106.57
+ti1
+dwv,100.93
+ti1
+dwv,96.80
+ti1
+dwv,92.10
+ti1
+dwv,88.77
+ti1
+dwv,86.07
+ti1
+dwv,83.75
+ti1
+dwv,82.40
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,84.82
+ti1
+dwv,88.34
+ti1
+dwv,92.06
+ti1
+dwv,98.22
+ti1
+dwv,103.08
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,196.25
+ti1
+dwv,210.62
+ti1
+dwv,223.53
+ti1
+dwv,235.01
+ti1
+dwv,245.30
+ti1
+dwv,253.56
+ti1
+dwv,259.86
+ti1
+dwv,261.87
+ti1
+ti1
+dwv,257.71
+ti1
+dwv,251.10
+ti1
+dwv,242.25
+ti1
+dwv,232.00
+ti1
+dwv,219.62
+ti1
+dwv,207.54
+ti1
+dwv,194.54
+ti1
+dwv,182.85
+ti1
+dwv,170.49
+ti1
+dwv,158.24
+ti1
+dwv,147.54
+ti1
+dwv,137.40
+ti1
+dwv,129.81
+ti1
+dwv,121.07
+ti1
+dwv,114.39
+ti1
+dwv,109.32
+ti1
+dwv,103.67
+ti1
+dwv,99.51
+ti1
+dwv,96.53
+ti1
+dwv,94.67
+ti1
+dwv,93.79
+ti1
+ti1
+dwv,95.31
+ti1
+dwv,98.43
+ti1
+dwv,102.95
+ti1
+dwv,109.01
+ti1
+dwv,115.86
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,209.63
+ti1
+dwv,224.03
+ti1
+dwv,236.93
+ti1
+dwv,249.17
+ti1
+dwv,259.34
+ti1
+dwv,267.41
+ti1
+dwv,271.07
+ti1
+dwv,270.51
+ti1
+dwv,263.93
+ti1
+dwv,255.80
+ti1
+dwv,246.03
+ti1
+dwv,235.96
+ti1
+dwv,223.79
+ti1
+dwv,209.68
+ti1
+dwv,196.98
+ti1
+dwv,184.70
+ti1
+dwv,171.16
+ti1
+dwv,157.06
+ti1
+dwv,145.05
+ti1
+dwv,133.80
+ti1
+dwv,123.45
+ti1
+dwv,114.06
+ti1
+dwv,106.78
+ti1
+dwv,98.12
+ti1
+dwv,91.19
+ti1
+dwv,84.78
+ti1
+dwv,80.10
+ti1
+dwv,74.95
+ti1
+dwv,71.88
+ti1
+dwv,68.51
+ti1
+dwv,66.13
+ti1
+dwv,64.64
+ti1
+dwv,63.65
+ti1
+dwv,63.06
+ti1
+ti1
+dwv,64.29
+ti1
+dwv,66.41
+ti1
+dwv,68.95
+ti1
+dwv,73.12
+ti1
+dwv,78.00
+ti1
+dwv,83.67
+ti1
+dwv,85.55
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,187.86
+ti1
+dwv,202.65
+ti1
+dwv,216.23
+ti1
+dwv,228.24
+ti1
+dwv,239.81
+ti1
+dwv,248.77
+ti1
+dwv,252.97
+ti1
+dwv,254.72
+ti1
+ti1
+dwv,253.22
+ti1
+dwv,247.80
+ti1
+dwv,239.99
+ti1
+dwv,229.87
+ti1
+dwv,218.26
+ti1
+dwv,205.99
+ti1
+dwv,193.09
+ti1
+dwv,180.59
+ti1
+dwv,167.42
+ti1
+dwv,154.33
+ti1
+dwv,142.32
+ti1
+dwv,131.88
+ti1
+dwv,122.32
+ti1
+dwv,112.84
+ti1
+dwv,104.07
+ti1
+dwv,96.62
+ti1
+dwv,90.02
+ti1
+dwv,84.43
+ti1
+dwv,79.90
+ti1
+dwv,74.59
+ti1
+dwv,71.27
+ti1
+dwv,67.37
+ti1
+dwv,64.97
+ti1
+dwv,62.82
+ti1
+dwv,61.60
+ti1
+ti1
+ti1
+dwv,62.99
+ti1
+dwv,64.80
+ti1
+dwv,68.51
+ti1
+dwv,72.70
+ti1
+dwv,77.97
+ti1
+dwv,84.10
+ti1
+dwv,88.07
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+ti1
+dwv,184.25
+ti1
+dwv,199.56
+ti1
+dwv,212.97
+ti1
+dwv,226.37
+ti1
+dwv,237.23
+ti1
+dwv,247.66
+ti1
+dwv,254.97
+ti1
+dwv,259.77
+ti1
+dwv,261.89
+ti1
+dwv,260.39
+ti1
+dwv,255.67
+ti1
+dwv,248.49
+ti1
+dwv,238.75
+ti1
+dwv,228.34
+ti1
+dwv,215.95
+ti1
+dwv,201.71
+ti1
+dwv,187.12
+ti1
+dwv,174.33
+ti1
+dwv,162.05
+ti1
+dwv,151.79
+ti1
+dwv,142.67
+ti1
+dwv,134.03
+ti1
+dwv,126.03
+ti1
+dwv,118.64
+ti1
+dwv,112.00
+ti1
+dwv,107.16
+ti1
+dwv,103.71
+ti1
+dwv,100.06
+ti1
+dwv,98.59
+ti1
+dwv,97.68
+ti1
+ti1
diff --git a/test/rebuf.ok b/test/rebuf.ok
new file mode 100644
index 0000000..f452f55
--- /dev/null
+++ b/test/rebuf.ok
@@ -0,0 +1,1290 @@
+1 0
+2 214.59
+3 230.31
+4 242.64
+5 253.94
+6 264.33
+7 270.94
+8 273.52
+9 270.08
+10 263.19
+11 254.45
+12 244.91
+13 234.55
+14 222.49
+15 209.94
+16 197.17
+17 182.89
+18 169.76
+19 158.59
+20 145.37
+21 135.46
+22 124.77
+23 115.98
+24 108.77
+25 101.12
+26 94.45
+27 89.08
+28 84.63
+29 81.05
+30 78.93
+31 76.65
+32 75.59
+33 75.59
+34 75.59
+35 77.47
+36 80.17
+37 83.90
+38 88.56
+39 95.69
+40 97.48
+41 97.48
+42 97.48
+43 97.48
+44 97.48
+45 97.48
+46 97.48
+47 97.48
+48 203.08
+49 218.22
+50 229.37
+51 238.49
+52 247.43
+53 255.22
+54 261.31
+55 262.36
+56 260.66
+57 256.33
+58 249.34
+59 240.03
+60 228.55
+61 215.42
+62 203.37
+63 190.01
+64 177.81
+65 165.44
+66 152.92
+67 142.03
+68 132.91
+69 124.48
+70 116.45
+71 109.06
+72 103.27
+73 98.87
+74 94.95
+75 92.56
+76 90.47
+77 89.48
+78 89.48
+79 90.53
+80 93.07
+81 97.12
+82 101.82
+83 108.18
+84 109.73
+85 109.73
+86 109.73
+87 109.73
+88 109.73
+89 109.73
+90 109.73
+91 202.97
+92 217.38
+93 231.73
+94 243.11
+95 255.37
+96 264.12
+97 269.64
+98 270.98
+99 269.65
+100 264.55
+101 257.16
+102 246.01
+103 232.88
+104 219.85
+105 208.79
+106 197.00
+107 183.93
+108 172.00
+109 160.55
+110 150.59
+111 141.47
+112 133.02
+113 126.21
+114 120.64
+115 115.79
+116 111.62
+117 108.41
+118 106.41
+119 106.41
+120 106.41
+121 109.08
+122 113.23
+123 118.57
+124 122.57
+125 122.57
+126 122.57
+127 122.57
+128 122.57
+129 122.57
+130 122.57
+131 208.07
+132 224.14
+133 236.28
+134 248.12
+135 258.97
+136 267.74
+137 272.47
+138 271.52
+139 266.80
+140 258.61
+141 249.30
+142 239.19
+143 228.28
+144 215.79
+145 203.86
+146 190.08
+147 177.40
+148 163.81
+149 152.60
+150 141.33
+151 130.98
+152 121.98
+153 114.08
+154 106.61
+155 99.75
+156 93.10
+157 86.57
+158 80.62
+159 76.05
+160 71.52
+161 68.85
+162 67.46
+163 66.86
+164 67.51
+165 69.75
+166 72.85
+167 76.23
+168 82.85
+169 89.33
+170 93.39
+171 93.39
+172 93.39
+173 93.39
+174 93.39
+175 93.39
+176 93.39
+177 93.39
+178 188.37
+179 204.42
+180 217.16
+181 228.89
+182 238.83
+183 247.70
+184 253.59
+185 257.17
+186 257.17
+187 254.00
+188 248.24
+189 240.14
+190 229.42
+191 218.97
+192 205.09
+193 192.61
+194 179.74
+195 166.76
+196 155.36
+197 143.58
+198 131.40
+199 121.84
+200 112.46
+201 105.41
+202 97.15
+203 90.09
+204 84.79
+205 80.52
+206 75.58
+207 72.59
+208 69.39
+209 67.51
+210 66.42
+211 66.42
+212 66.42
+213 67.82
+214 69.76
+215 73.19
+216 77.35
+217 82.36
+218 87.82
+219 93.30
+220 93.30
+221 93.30
+222 93.30
+223 93.30
+224 93.30
+225 93.30
+226 93.30
+227 190.58
+228 203.43
+229 216.48
+230 228.89
+231 241.91
+232 251.60
+233 257.78
+234 262.18
+235 263.13
+236 260.91
+237 255.34
+238 247.17
+239 236.85
+240 225.24
+241 213.39
+242 201.46
+243 187.77
+244 175.31
+245 162.95
+246 152.55
+247 142.56
+248 132.94
+249 125.00
+250 117.69
+251 110.96
+252 105.02
+253 101.78
+254 98.48
+255 97.06
+256 96.50
+257 96.50
+258 98.48
+259 101.18
+260 104.56
+261 109.67
+262 115.86
+263 115.86
+264 115.86
+265 115.86
+266 115.86
+267 115.86
+268 115.86
+269 200.02
+270 217.51
+271 233.21
+272 245.72
+273 258.21
+274 267.24
+275 273.79
+276 273.20
+277 270.38
+278 260.76
+279 250.05
+280 241.32
+281 231.14
+282 219.83
+283 206.13
+284 193.24
+285 180.73
+286 167.82
+287 156.94
+288 144.13
+289 134.40
+290 125.23
+291 116.13
+292 107.34
+293 99.71
+294 94.11
+295 88.91
+296 84.51
+297 81.50
+298 78.66
+299 76.57
+300 75.82
+301 75.82
+302 76.88
+303 79.03
+304 82.12
+305 85.73
+306 91.05
+307 96.31
+308 96.31
+309 96.31
+310 96.31
+311 96.31
+312 96.31
+313 96.31
+314 96.31
+315 184.18
+316 201.10
+317 214.21
+318 226.18
+319 237.72
+320 247.57
+321 254.36
+322 258.34
+323 259.80
+324 257.76
+325 253.17
+326 246.51
+327 237.92
+328 227.09
+329 214.13
+330 202.20
+331 189.21
+332 177.65
+333 166.18
+334 154.03
+335 142.21
+336 131.51
+337 121.28
+338 111.80
+339 104.47
+340 98.80
+341 94.76
+342 91.81
+343 89.17
+344 88.00
+345 88.00
+346 88.00
+347 89.20
+348 91.17
+349 94.35
+350 99.00
+351 105.43
+352 109.34
+353 109.34
+354 109.34
+355 109.34
+356 109.34
+357 109.34
+358 109.34
+359 194.84
+360 212.05
+361 226.30
+362 239.03
+363 250.94
+364 259.73
+365 266.64
+366 269.67
+367 269.03
+368 265.03
+369 258.23
+370 249.32
+371 238.03
+372 226.20
+373 213.46
+374 200.53
+375 187.65
+376 174.89
+377 163.22
+378 152.47
+379 142.65
+380 133.97
+381 126.59
+382 120.52
+383 115.57
+384 111.49
+385 108.03
+386 106.01
+387 105.28
+388 105.28
+389 106.91
+390 109.73
+391 114.91
+392 120.66
+393 123.74
+394 123.74
+395 123.74
+396 123.74
+397 123.74
+398 123.74
+399 123.74
+400 211.57
+401 227.06
+402 240.57
+403 252.26
+404 262.67
+405 270.66
+406 273.40
+407 270.25
+408 263.76
+409 256.03
+410 246.87
+411 237.10
+412 225.11
+413 211.53
+414 197.77
+415 185.75
+416 173.00
+417 159.31
+418 147.18
+419 134.84
+420 125.07
+421 115.82
+422 107.33
+423 100.07
+424 93.55
+425 87.60
+426 81.75
+427 77.03
+428 73.39
+429 70.97
+430 67.94
+431 66.64
+432 65.80
+433 65.80
+434 66.85
+435 68.78
+436 71.47
+437 74.20
+438 78.68
+439 85.08
+440 87.47
+441 87.47
+442 87.47
+443 87.47
+444 87.47
+445 87.47
+446 87.47
+447 87.47
+448 185.81
+449 201.66
+450 215.07
+451 227.26
+452 238.00
+453 247.64
+454 255.03
+455 257.12
+456 256.17
+457 253.47
+458 248.93
+459 241.39
+460 231.45
+461 220.49
+462 208.48
+463 196.04
+464 182.73
+465 169.40
+466 157.24
+467 145.56
+468 133.54
+469 124.01
+470 114.55
+471 105.75
+472 98.32
+473 91.91
+474 86.08
+475 81.35
+476 77.78
+477 73.85
+478 71.12
+479 68.53
+480 67.09
+481 66.34
+482 66.34
+483 66.34
+484 67.92
+485 70.08
+486 73.78
+487 78.68
+488 84.33
+489 90.25
+490 90.25
+491 90.25
+492 90.25
+493 90.25
+494 90.25
+495 90.25
+496 90.25
+497 183.19
+498 198.96
+499 213.55
+500 225.91
+501 237.33
+502 246.66
+503 254.98
+504 259.46
+505 261.02
+506 260.02
+507 255.96
+508 249.08
+509 240.15
+510 229.51
+511 217.21
+512 205.06
+513 192.62
+514 177.43
+515 165.06
+516 152.36
+517 142.35
+518 134.58
+519 126.20
+520 119.86
+521 113.67
+522 108.20
+523 104.71
+524 100.83
+525 98.96
+526 98.38
+527 98.38
+528 100.29
+529 103.47
+530 107.73
+531 113.04
+532 118.90
+533 118.90
+534 118.90
+535 118.90
+536 118.90
+537 118.90
+538 118.90
+539 200.70
+540 217.77
+541 232.45
+542 244.28
+543 256.61
+544 265.93
+545 272.01
+546 272.01
+547 268.67
+548 260.53
+549 252.09
+550 243.72
+551 232.68
+552 220.49
+553 206.88
+554 193.98
+555 181.33
+556 168.61
+557 156.50
+558 145.54
+559 136.43
+560 125.95
+561 117.26
+562 109.81
+563 103.36
+564 97.15
+565 92.86
+566 89.02
+567 86.39
+568 84.44
+569 83.72
+570 83.72
+571 85.89
+572 88.39
+573 92.31
+574 96.00
+575 100.24
+576 102.55
+577 102.55
+578 102.55
+579 102.55
+580 102.55
+581 102.55
+582 102.55
+583 102.55
+584 197.15
+585 212.33
+586 225.48
+587 236.75
+588 247.52
+589 255.21
+590 260.74
+591 262.81
+592 262.09
+593 258.08
+594 250.83
+595 242.39
+596 230.86
+597 219.62
+598 206.80
+599 193.41
+600 180.60
+601 168.20
+602 157.77
+603 145.25
+604 136.23
+605 126.28
+606 118.10
+607 110.74
+608 105.29
+609 99.75
+610 95.61
+611 92.16
+612 89.93
+613 88.45
+614 88.45
+615 89.11
+616 90.87
+617 94.21
+618 98.16
+619 104.24
+620 108.98
+621 108.98
+622 108.98
+623 108.98
+624 108.98
+625 108.98
+626 108.98
+627 195.81
+628 211.95
+629 226.36
+630 240.61
+631 251.93
+632 259.13
+633 265.36
+634 269.71
+635 270.27
+636 266.44
+637 260.44
+638 251.94
+639 240.79
+640 228.95
+641 215.90
+642 203.25
+643 190.01
+644 177.92
+645 165.60
+646 155.49
+647 144.32
+648 136.07
+649 127.64
+650 120.28
+651 114.57
+652 109.99
+653 106.36
+654 104.49
+655 103.84
+656 103.84
+657 105.77
+658 107.83
+659 112.41
+660 117.71
+661 120.66
+662 120.66
+663 120.66
+664 120.66
+665 120.66
+666 120.66
+667 120.66
+668 210.13
+669 225.03
+670 238.76
+671 250.50
+672 261.18
+673 269.22
+674 274.18
+675 272.28
+676 266.66
+677 258.68
+678 249.88
+679 239.94
+680 227.14
+681 213.22
+682 197.58
+683 184.86
+684 172.52
+685 160.19
+686 149.20
+687 137.49
+688 127.86
+689 118.91
+690 110.49
+691 102.73
+692 96.33
+693 90.95
+694 86.38
+695 82.72
+696 79.65
+697 77.61
+698 75.70
+699 74.49
+700 74.49
+701 74.49
+702 76.48
+703 79.14
+704 82.84
+705 87.86
+706 92.69
+707 92.69
+708 92.69
+709 92.69
+710 92.69
+711 92.69
+712 92.69
+713 92.69
+714 181.33
+715 196.86
+716 210.98
+717 223.13
+718 233.90
+719 243.19
+720 250.57
+721 255.00
+722 256.36
+723 255.16
+724 250.15
+725 242.80
+726 233.82
+727 223.41
+728 210.81
+729 199.04
+730 187.39
+731 174.14
+732 162.62
+733 151.39
+734 139.59
+735 128.71
+736 119.17
+737 111.02
+738 103.91
+739 96.78
+740 91.56
+741 87.13
+742 83.22
+743 80.50
+744 76.83
+745 74.24
+746 70.80
+747 69.04
+748 67.12
+749 66.51
+750 66.51
+751 68.77
+752 72.19
+753 77.34
+754 84.04
+755 88.55
+756 88.55
+757 88.55
+758 88.55
+759 88.55
+760 88.55
+761 88.55
+762 88.55
+763 190.51
+764 207.14
+765 220.57
+766 232.51
+767 243.35
+768 252.41
+769 258.62
+770 262.18
+771 262.18
+772 259.10
+773 253.54
+774 245.44
+775 235.55
+776 223.43
+777 209.91
+778 197.52
+779 185.90
+780 172.13
+781 161.09
+782 150.58
+783 140.37
+784 130.27
+785 122.13
+786 114.99
+787 108.76
+788 104.67
+789 100.36
+790 97.61
+791 95.48
+792 94.83
+793 95.45
+794 97.15
+795 100.73
+796 105.10
+797 111.46
+798 118.27
+799 118.27
+800 118.27
+801 118.27
+802 118.27
+803 118.27
+804 118.27
+805 202.92
+806 220.25
+807 233.35
+808 243.48
+809 254.85
+810 265.75
+811 272.62
+812 272.62
+813 269.36
+814 261.82
+815 252.85
+816 244.08
+817 232.96
+818 219.59
+819 207.32
+820 193.87
+821 181.77
+822 168.60
+823 155.76
+824 144.03
+825 134.07
+826 123.46
+827 114.47
+828 107.64
+829 100.46
+830 94.53
+831 89.28
+832 84.59
+833 80.96
+834 78.54
+835 76.28
+836 75.51
+837 75.51
+838 76.55
+839 78.55
+840 81.57
+841 85.18
+842 90.61
+843 96.01
+844 96.01
+845 96.01
+846 96.01
+847 96.01
+848 96.01
+849 96.01
+850 96.01
+851 184.51
+852 201.57
+853 216.33
+854 228.69
+855 239.90
+856 250.41
+857 257.91
+858 262.29
+859 263.41
+860 261.70
+861 256.75
+862 246.82
+863 236.35
+864 225.17
+865 212.90
+866 201.61
+867 188.42
+868 175.92
+869 163.70
+870 153.18
+871 142.89
+872 132.95
+873 125.18
+874 117.61
+875 110.36
+876 104.56
+877 100.13
+878 96.64
+879 93.52
+880 91.91
+881 91.91
+882 91.91
+883 93.84
+884 97.13
+885 101.08
+886 107.19
+887 111.89
+888 111.89
+889 111.89
+890 111.89
+891 111.89
+892 111.89
+893 111.89
+894 195.89
+895 212.65
+896 226.60
+897 239.28
+898 251.28
+899 259.92
+900 266.03
+901 269.76
+902 269.76
+903 265.55
+904 258.92
+905 250.42
+906 240.04
+907 229.03
+908 216.69
+909 204.21
+910 191.25
+911 178.40
+912 168.31
+913 157.47
+914 148.62
+915 139.12
+916 129.54
+917 121.65
+918 114.59
+919 109.30
+920 106.39
+921 104.71
+922 104.71
+923 106.41
+924 109.22
+925 113.62
+926 118.31
+927 124.34
+928 124.34
+929 124.34
+930 124.34
+931 124.34
+932 124.34
+933 124.34
+934 205.67
+935 221.25
+936 235.02
+937 247.47
+938 258.37
+939 267.42
+940 272.60
+941 272.00
+942 267.91
+943 260.38
+944 251.10
+945 241.32
+946 230.96
+947 217.34
+948 204.99
+949 191.24
+950 178.58
+951 164.79
+952 153.07
+953 141.06
+954 129.86
+955 119.79
+956 111.13
+957 103.53
+958 96.95
+959 89.42
+960 85.22
+961 80.54
+962 76.85
+963 74.41
+964 72.12
+965 71.21
+966 71.21
+967 71.21
+968 72.13
+969 74.22
+970 76.95
+971 80.65
+972 85.36
+973 90.60
+974 92.36
+975 92.36
+976 92.36
+977 92.36
+978 92.36
+979 92.36
+980 92.36
+981 92.36
+982 191.27
+983 205.03
+984 218.89
+985 230.87
+986 241.63
+987 249.83
+988 255.42
+989 257.98
+990 257.33
+991 252.87
+992 245.90
+993 237.78
+994 227.14
+995 214.67
+996 202.31
+997 188.68
+998 175.96
+999 163.25
+1000 151.43
+1001 139.79
+1002 130.40
+1003 118.92
+1004 110.88
+1005 101.92
+1006 94.45
+1007 88.13
+1008 83.19
+1009 79.11
+1010 74.60
+1011 71.86
+1012 68.77
+1013 66.57
+1014 65.24
+1015 64.41
+1016 64.41
+1017 64.92
+1018 66.62
+1019 68.93
+1020 72.77
+1021 77.76
+1022 83.41
+1023 89.19
+1024 89.19
+1025 89.19
+1026 89.19
+1027 89.19
+1028 89.19
+1029 89.19
+1030 89.19
+1031 182.68
+1032 199.88
+1033 214.62
+1034 227.29
+1035 238.62
+1036 249.01
+1037 256.68
+1038 262.71
+1039 263.44
+1040 259.87
+1041 254.66
+1042 248.11
+1043 240.01
+1044 229.30
+1045 216.52
+1046 205.15
+1047 192.49
+1048 179.70
+1049 167.51
+1050 156.31
+1051 145.97
+1052 135.93
+1053 128.06
+1054 119.45
+1055 113.01
+1056 108.31
+1057 103.79
+1058 100.92
+1059 98.90
+1060 98.28
+1061 98.28
+1062 100.12
+1063 102.38
+1064 106.07
+1065 111.06
+1066 117.00
+1067 117.00
+1068 117.00
+1069 117.00
+1070 117.00
+1071 117.00
+1072 117.00
+1073 202.42
+1074 217.46
+1075 232.83
+1076 245.05
+1077 256.39
+1078 265.28
+1079 271.80
+1080 271.80
+1081 268.63
+1082 261.21
+1083 253.57
+1084 244.41
+1085 233.79
+1086 220.80
+1087 209.24
+1088 196.54
+1089 183.38
+1090 170.14
+1091 157.79
+1092 144.31
+1093 131.53
+1094 122.20
+1095 113.46
+1096 106.57
+1097 100.93
+1098 96.80
+1099 92.10
+1100 88.77
+1101 86.07
+1102 83.75
+1103 82.40
+1104 82.40
+1105 82.40
+1106 82.40
+1107 82.40
+1108 84.82
+1109 88.34
+1110 92.06
+1111 98.22
+1112 103.08
+1113 103.08
+1114 103.08
+1115 103.08
+1116 103.08
+1117 103.08
+1118 196.25
+1119 210.62
+1120 223.53
+1121 235.01
+1122 245.30
+1123 253.56
+1124 259.86
+1125 261.87
+1126 261.87
+1127 257.71
+1128 251.10
+1129 242.25
+1130 232.00
+1131 219.62
+1132 207.54
+1133 194.54
+1134 182.85
+1135 170.49
+1136 158.24
+1137 147.54
+1138 137.40
+1139 129.81
+1140 121.07
+1141 114.39
+1142 109.32
+1143 103.67
+1144 99.51
+1145 96.53
+1146 94.67
+1147 93.79
+1148 93.79
+1149 95.31
+1150 98.43
+1151 102.95
+1152 109.01
+1153 115.86
+1154 115.86
+1155 115.86
+1156 115.86
+1157 115.86
+1158 115.86
+1159 115.86
+1160 115.86
+1161 209.63
+1162 224.03
+1163 236.93
+1164 249.17
+1165 259.34
+1166 267.41
+1167 271.07
+1168 270.51
+1169 263.93
+1170 255.80
+1171 246.03
+1172 235.96
+1173 223.79
+1174 209.68
+1175 196.98
+1176 184.70
+1177 171.16
+1178 157.06
+1179 145.05
+1180 133.80
+1181 123.45
+1182 114.06
+1183 106.78
+1184 98.12
+1185 91.19
+1186 84.78
+1187 80.10
+1188 74.95
+1189 71.88
+1190 68.51
+1191 66.13
+1192 64.64
+1193 63.65
+1194 63.06
+1195 63.06
+1196 64.29
+1197 66.41
+1198 68.95
+1199 73.12
+1200 78.00
+1201 83.67
+1202 85.55
+1203 85.55
+1204 85.55
+1205 85.55
+1206 85.55
+1207 85.55
+1208 85.55
+1209 85.55
+1210 187.86
+1211 202.65
+1212 216.23
+1213 228.24
+1214 239.81
+1215 248.77
+1216 252.97
+1217 254.72
+1218 254.72
+1219 253.22
+1220 247.80
+1221 239.99
+1222 229.87
+1223 218.26
+1224 205.99
+1225 193.09
+1226 180.59
+1227 167.42
+1228 154.33
+1229 142.32
+1230 131.88
+1231 122.32
+1232 112.84
+1233 104.07
+1234 96.62
+1235 90.02
+1236 84.43
+1237 79.90
+1238 74.59
+1239 71.27
+1240 67.37
+1241 64.97
+1242 62.82
+1243 61.60
+1244 61.60
+1245 61.60
+1246 62.99
+1247 64.80
+1248 68.51
+1249 72.70
+1250 77.97
+1251 84.10
+1252 88.07
+1253 88.07
+1254 88.07
+1255 88.07
+1256 88.07
+1257 88.07
+1258 88.07
+1259 88.07
+1260 184.25
+1261 199.56
+1262 212.97
+1263 226.37
+1264 237.23
+1265 247.66
+1266 254.97
+1267 259.77
+1268 261.89
+1269 260.39
+1270 255.67
+1271 248.49
+1272 238.75
+1273 228.34
+1274 215.95
+1275 201.71
+1276 187.12
+1277 174.33
+1278 162.05
+1279 151.79
+1280 142.67
+1281 134.03
+1282 126.03
+1283 118.64
+1284 112.00
+1285 107.16
+1286 103.71
+1287 100.06
+1288 98.59
+1289 97.68
+1290 97.68
diff --git a/test/redfilnm.awk b/test/redfilnm.awk
new file mode 100644
index 0000000..83cb6aa
--- /dev/null
+++ b/test/redfilnm.awk
@@ -0,0 +1,98 @@
+#Date: Tue, 18 May 1999 12:48:07 -0500 (CDT)
+#From: Darrel Hankerson <hankedr@dms.auburn.edu>
+#To: arnold@gnu.org
+#Subject: [christopher.procter@bt.com: RE: Getline bug in Gawk 3.0.3]
+#
+#Here's a reply that came directly to me. --darrel
+#
+#
+#From: christopher.procter@bt.com
+#To: hankedr@dms.auburn.edu
+#Subject: RE: Getline bug in Gawk 3.0.3
+#Date: Tue, 18 May 1999 18:42:28 +0100
+#
+#Sorry that was me getting carried away and cut and pasting the wrong thing
+#into my email
+#
+#The real problem seems to be that :
+#BEGIN {
+#for (i=1;i<10;i++){
+# while((getline < "hello.txt")>0){
+# print $0
+# }
+# close("hello.txt")
+# }
+#}
+#works (printing the contents of hello.txt 9 times), where as:-
+#
+#END{
+#for (i=1;i<10;i++){
+# while((getline < "hello.txt")>0){
+# print $0
+# }
+# close("hello.txt")
+# }
+#}
+#
+#doesn't, (it prints out hello.txt once followed by the iteration numbers
+#from 1 to 9).
+#The only difference is that one is in the BEGIN block and one in the END
+#block.
+#
+#Sorry about the first post, I'm not a bad awk programmer, just a tired one
+#:)
+#
+#chris
+#
+#> -----Original Message-----
+#> From: Darrel Hankerson [SMTP:hankedr@dms.auburn.edu]
+#> Sent: 18 May 1999 18:28
+#> To: christopher.procter@bt.com
+#> Subject: Re: Getline bug in Gawk 3.0.3
+#>
+#> Could you clarify? Your first script uses an apparently undefined
+#> variable f.
+#>
+#>
+#> christopher.procter@bt.com writes:
+#>
+#> BEGIN {
+#> for (i=1;i<10;i++){
+#> while((getline < "hello.txt")>0){
+#> print $0
+#> }
+#> close(f)
+#> }
+#> }
+#>
+#> refuses to close the file and so prints the contents of hello.txt just
+#> once.
+#> However:-
+#>
+#> BEGIN {
+#> f="hello.txt"
+#> for (i=1;i<10;i++){
+#> while((getline < f)>0){
+#> print $0
+#> }
+#> close(f)
+#> }
+#> }
+#>
+#> works as advertised (printing the contents of hello.txt 9 times)
+#> It seems like a bug in the close statement.
+#>
+#> --
+#> --Darrel Hankerson hankedr@mail.auburn.edu
+#
+
+# srcdir is assigned on command line --- ADR
+END {
+ f = srcdir "/redfilnm.in"
+ for (i = 1; i < 10; i++){
+ while((getline < f) > 0){
+ print $0
+ }
+ close(f)
+ }
+}
diff --git a/test/redfilnm.in b/test/redfilnm.in
new file mode 100644
index 0000000..4b5fa63
--- /dev/null
+++ b/test/redfilnm.in
@@ -0,0 +1 @@
+hello, world
diff --git a/test/redfilnm.ok b/test/redfilnm.ok
new file mode 100644
index 0000000..f9e095a
--- /dev/null
+++ b/test/redfilnm.ok
@@ -0,0 +1,9 @@
+hello, world
+hello, world
+hello, world
+hello, world
+hello, world
+hello, world
+hello, world
+hello, world
+hello, world
diff --git a/test/reg/Obsolete/exp.awk b/test/reg/Obsolete/exp.awk
new file mode 100644
index 0000000..4e707f8
--- /dev/null
+++ b/test/reg/Obsolete/exp.awk
@@ -0,0 +1 @@
+BEGIN { print exp(0), exp(1000000), exp(0.5) }
diff --git a/test/reg/Obsolete/exp.good b/test/reg/Obsolete/exp.good
new file mode 100644
index 0000000..07b8853
--- /dev/null
+++ b/test/reg/Obsolete/exp.good
@@ -0,0 +1,2 @@
+1 gawk: reg/exp.awk:1: warning: exp argument 1e+06 is out of range
+Inf 1.64872
diff --git a/test/reg/Obsolete/exp.in b/test/reg/Obsolete/exp.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/reg/Obsolete/exp.in
diff --git a/test/reg/Obsolete/log.awk b/test/reg/Obsolete/log.awk
new file mode 100644
index 0000000..bcae90b
--- /dev/null
+++ b/test/reg/Obsolete/log.awk
@@ -0,0 +1 @@
+BEGIN { print log(0), log(-1), log(100) }
diff --git a/test/reg/Obsolete/log.good b/test/reg/Obsolete/log.good
new file mode 100644
index 0000000..857ab77
--- /dev/null
+++ b/test/reg/Obsolete/log.good
@@ -0,0 +1,4 @@
+log: SING error
+-Inf gawk: reg/log.awk:1: warning: log called with negative argument -1
+log: DOMAIN error
+NaN 4.60517
diff --git a/test/reg/Obsolete/log.in b/test/reg/Obsolete/log.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/reg/Obsolete/log.in
diff --git a/test/reg/exp-eq.awk b/test/reg/exp-eq.awk
new file mode 100644
index 0000000..fed6a69
--- /dev/null
+++ b/test/reg/exp-eq.awk
@@ -0,0 +1 @@
+{ $0 ^= 3 ; print $1}
diff --git a/test/reg/exp-eq.good b/test/reg/exp-eq.good
new file mode 100644
index 0000000..d8d59aa
--- /dev/null
+++ b/test/reg/exp-eq.good
@@ -0,0 +1,3 @@
+1
+8
+27
diff --git a/test/reg/exp-eq.in b/test/reg/exp-eq.in
new file mode 100644
index 0000000..01e79c3
--- /dev/null
+++ b/test/reg/exp-eq.in
@@ -0,0 +1,3 @@
+1
+2
+3
diff --git a/test/reg/func.awk b/test/reg/func.awk
new file mode 100644
index 0000000..e32cd4e
--- /dev/null
+++ b/test/reg/func.awk
@@ -0,0 +1 @@
+BEGIN { print dummy(1) }
diff --git a/test/reg/func.good b/test/reg/func.good
new file mode 100644
index 0000000..d3c7c71
--- /dev/null
+++ b/test/reg/func.good
@@ -0,0 +1 @@
+gawk: reg/func.awk:1: fatal: function `dummy' not defined
diff --git a/test/reg/func.in b/test/reg/func.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/reg/func.in
diff --git a/test/reg/func2.awk b/test/reg/func2.awk
new file mode 100644
index 0000000..2abf2c1
--- /dev/null
+++ b/test/reg/func2.awk
@@ -0,0 +1,2 @@
+function dummy() { ; }
+BEGIN { print dummy (1) }
diff --git a/test/reg/func2.good b/test/reg/func2.good
new file mode 100644
index 0000000..3d7b5ba
--- /dev/null
+++ b/test/reg/func2.good
@@ -0,0 +1,2 @@
+gawk: reg/func2.awk:2: fatal: function `dummy' called with space between name and `(',
+or used in other expression context
diff --git a/test/reg/func2.in b/test/reg/func2.in
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/reg/func2.in
diff --git a/test/reg/func2.out b/test/reg/func2.out
new file mode 100644
index 0000000..a6515c9
--- /dev/null
+++ b/test/reg/func2.out
@@ -0,0 +1,2 @@
+gawk: reg/func2.awk:2: fatal: function `dummy' called with space between name and `(',
+or used as a variable or an array
diff --git a/test/regeq.awk b/test/regeq.awk
new file mode 100644
index 0000000..0208eb2
--- /dev/null
+++ b/test/regeq.awk
@@ -0,0 +1,29 @@
+#Date: Sat, 8 May 1999 17:42:20 +0200
+#From: Iva Cabric <ivac@fly.srk.fer.hr>
+#To: bug-gnu-utils@gnu.org
+#Cc: arnold@gnu.org
+#Subject: Problem in gawk with match
+#
+#Hello,
+#
+#gawk reports fatal error in match when first character in regexp is "=" :
+#
+#$ gawk '{ where = match($0, /=a/); print where}'
+#gawk: cmd. line:1: { where = match($0, /=a/); print where}
+#gawk: cmd. line:1: ^ parse error
+#gawk: cmd. line:1: fatal: match() cannot have 0 arguments
+#
+#Using "\=" instead "=" works without problems :
+#
+#$ gawk '{ where = match($0, /\=a/); print where}'
+#sdgfa
+#0
+#asdfds=a
+#7
+#
+#Other versions of awk have no problems with "/=/" (except oawk on SunOS).
+#
+#--
+# @
+#
+{ where = match($0, /=a/); print where}
diff --git a/test/regeq.in b/test/regeq.in
new file mode 100644
index 0000000..2428df3
--- /dev/null
+++ b/test/regeq.in
@@ -0,0 +1,2 @@
+sdgfa
+asdfds=a
diff --git a/test/regeq.ok b/test/regeq.ok
new file mode 100644
index 0000000..4596f88
--- /dev/null
+++ b/test/regeq.ok
@@ -0,0 +1,2 @@
+0
+7
diff --git a/test/regtest.sh b/test/regtest.sh
new file mode 100755
index 0000000..37472b1
--- /dev/null
+++ b/test/regtest.sh
@@ -0,0 +1,18 @@
+#! /bin/sh
+
+case "$AWK" in
+"") AWK=../gawk ;;
+esac
+#AWK=${AWK:-../gawk}
+
+for i in reg/*.awk
+do
+ it=`basename $i .awk`
+ $AWK -f $i <reg/$it.in >reg/$it.out 2>&1
+ if diff reg/$it.out reg/$it.good
+ then
+ rm -f reg/$it.out
+ else
+ echo "regtest: $it fails"
+ fi
+done
diff --git a/test/regx8bit.awk b/test/regx8bit.awk
new file mode 100644
index 0000000..5ecd7eb
--- /dev/null
+++ b/test/regx8bit.awk
@@ -0,0 +1,26 @@
+# The full test will only work in a Swedish localte
+# Try things that should work across the board
+# BEGIN {
+# s = "så är det"
+# print match(s,/\yså\y/), s ~ /\yså\y/, "å" ~ /\w/
+# }
+BEGIN {
+ printf "\"å\" = %c\n", "å"
+ printf "\"ä\" = %c\n", "ä"
+ s = "så är det"
+ printf "s = \"%s\"\n", s
+ printf "match(s,/\\yså/) = %d\n", match(s, /\yså/)
+# printf "match(s,/så\\y/) = %d\n", match(s, /så\y/)
+# printf "match(s,/\\yså\\y/) = %d\n", match(s, /\yså\y/)
+ printf "s ~ /å/ = %d\n", s ~ /å/
+ printf "s ~ /så/ = %d\n", s ~ /så/
+ printf "s ~ /\\yså/ = %d\n", s ~ /\yså/
+# printf "s ~ /så\\y/ = %d\n", s ~ /så\y/
+# printf "s ~ /\\yså\\y/ = %d\n", s ~ /\yså\y/
+# printf "\"å\" ~ /\\w/ = %d\n", "å" ~ /\w/
+# printf "\"ä\" ~ /\\w/ = %d\n", "ä" ~ /\w/
+# printf "\"å\" ~ /\\yä\\y/ = %d\n", "å" ~ /\yå\y/
+# printf "\"ä\" ~ /\\yä\\y/ = %d\n", "ä" ~ /\yä\y/
+# printf "\"å\" ~ /[[:alpha:]]/ = %d\n", "å" ~ /[[:alpha:]]/
+# printf "\"ä\" ~ /[[:alpha:]]/ = %d\n", "ä" ~ /[[:alpha:]]/
+}
diff --git a/test/regx8bit.ok b/test/regx8bit.ok
new file mode 100644
index 0000000..76e1c0b
--- /dev/null
+++ b/test/regx8bit.ok
@@ -0,0 +1,7 @@
+"å" = å
+"ä" = ä
+s = "så är det"
+match(s,/\yså/) = 1
+s ~ /å/ = 1
+s ~ /så/ = 1
+s ~ /\yså/ = 1
diff --git a/test/reindops.awk b/test/reindops.awk
new file mode 100644
index 0000000..13ae657
--- /dev/null
+++ b/test/reindops.awk
@@ -0,0 +1,6 @@
+{
+ if ($1 !~ /^+[2-9]/)
+ print "gawk is broken"
+ else
+ print "gawk is ok"
+}
diff --git a/test/reindops.in b/test/reindops.in
new file mode 100644
index 0000000..b1e5435
--- /dev/null
+++ b/test/reindops.in
@@ -0,0 +1 @@
++44 123 456
diff --git a/test/reindops.ok b/test/reindops.ok
new file mode 100644
index 0000000..f9605fd
--- /dev/null
+++ b/test/reindops.ok
@@ -0,0 +1 @@
+gawk is ok
diff --git a/test/reint.awk b/test/reint.awk
new file mode 100644
index 0000000..add0f2a
--- /dev/null
+++ b/test/reint.awk
@@ -0,0 +1 @@
+{ print match($0, /a{3}/) }
diff --git a/test/reint.in b/test/reint.in
new file mode 100644
index 0000000..43caa2a
--- /dev/null
+++ b/test/reint.in
@@ -0,0 +1 @@
+match this: aaa
diff --git a/test/reint.ok b/test/reint.ok
new file mode 100644
index 0000000..b1bd38b
--- /dev/null
+++ b/test/reint.ok
@@ -0,0 +1 @@
+13
diff --git a/test/reparse.awk b/test/reparse.awk
new file mode 100644
index 0000000..433ecbb
--- /dev/null
+++ b/test/reparse.awk
@@ -0,0 +1,7 @@
+{
+ gsub(/x/, " ")
+ $0 = $0
+ print $1
+ print $0
+ print $1, $2, $3
+}
diff --git a/test/reparse.in b/test/reparse.in
new file mode 100644
index 0000000..6f31cde
--- /dev/null
+++ b/test/reparse.in
@@ -0,0 +1 @@
+1 axbxc 2
diff --git a/test/reparse.ok b/test/reparse.ok
new file mode 100644
index 0000000..6bdfacf
--- /dev/null
+++ b/test/reparse.ok
@@ -0,0 +1,3 @@
+1
+1 a b c 2
+1 a b
diff --git a/test/resplit.awk b/test/resplit.awk
new file mode 100644
index 0000000..f75fe39
--- /dev/null
+++ b/test/resplit.awk
@@ -0,0 +1 @@
+{ FS = ":"; $0 = $0; print $2 }
diff --git a/test/resplit.in b/test/resplit.in
new file mode 100644
index 0000000..5f06f10
--- /dev/null
+++ b/test/resplit.in
@@ -0,0 +1 @@
+a:b:c d:e:f
diff --git a/test/resplit.ok b/test/resplit.ok
new file mode 100644
index 0000000..6178079
--- /dev/null
+++ b/test/resplit.ok
@@ -0,0 +1 @@
+b
diff --git a/test/rs.awk b/test/rs.awk
new file mode 100644
index 0000000..d3a3cf0
--- /dev/null
+++ b/test/rs.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "" }
+{ print $1, $2 }
diff --git a/test/rs.in b/test/rs.in
new file mode 100644
index 0000000..edef835
--- /dev/null
+++ b/test/rs.in
@@ -0,0 +1,15 @@
+
+
+a
+b
+
+
+c d
+
+
+
+e
+
+
+
+
diff --git a/test/rs.ok b/test/rs.ok
new file mode 100644
index 0000000..9dd6bd3
--- /dev/null
+++ b/test/rs.ok
@@ -0,0 +1,3 @@
+a b
+c d
+e
diff --git a/test/rsnul1nl.awk b/test/rsnul1nl.awk
new file mode 100644
index 0000000..d8da7a6
--- /dev/null
+++ b/test/rsnul1nl.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "" }
+{ print }
diff --git a/test/rsnul1nl.in b/test/rsnul1nl.in
new file mode 100644
index 0000000..76de96f
--- /dev/null
+++ b/test/rsnul1nl.in
@@ -0,0 +1,3 @@
+
+This is...
+the first record.
diff --git a/test/rsnul1nl.ok b/test/rsnul1nl.ok
new file mode 100644
index 0000000..7ce0957
--- /dev/null
+++ b/test/rsnul1nl.ok
@@ -0,0 +1,2 @@
+This is...
+the first record.
diff --git a/test/rsnulbig.ok b/test/rsnulbig.ok
new file mode 100644
index 0000000..10a5209
--- /dev/null
+++ b/test/rsnulbig.ok
@@ -0,0 +1 @@
+16386
diff --git a/test/rsnulbig2.ok b/test/rsnulbig2.ok
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/test/rsnulbig2.ok
@@ -0,0 +1 @@
+2
diff --git a/test/rsstart1.awk b/test/rsstart1.awk
new file mode 100644
index 0000000..53e5b42
--- /dev/null
+++ b/test/rsstart1.awk
@@ -0,0 +1,32 @@
+# From arnold@f7.net Wed Dec 15 11:32:46 2004
+# Date: Tue, 14 Dec 2004 14:48:58 +0100
+# From: Stepan Kasal <kasal@ucw.cz>
+# Subject: gawk bug with RS="^..."
+# To: bug-gawk@gnu.org
+# Message-id: <20041214134858.GA15490@matsrv.math.cas.cz>
+#
+# Hello,
+# I've noticed a problem with "^" in RS in gawk. In most cases, it seems
+# to match only the beginning of the file. But in fact it matches the
+# beginning of gawk's internal buffer.
+#
+# Observe the following example:
+#
+# $ gawk 'BEGIN{for(i=1;i<=100;i++) print "Axxxxxx"}' >file
+# $ gawk 'BEGIN{RS="^A"} END{print NR}' file
+# 2
+# $ gawk 'BEGIN{RS="^Ax*\n"} END{print NR}' file
+# 100
+# $ head file | gawk 'BEGIN{RS="^Ax*\n"} END{print NR}'
+# 10
+# $
+#
+# I think this calls for some clarification/fix. But I don't have any
+# fixed opinion how the solution should look like.
+#
+# Have a nice day,
+# Stepan Kasal
+#
+# PS: See also the discussion of the issue in the comp.lang.awk newsgroup.
+BEGIN { RS = "^A" }
+END { print NR }
diff --git a/test/rsstart1.in b/test/rsstart1.in
new file mode 100644
index 0000000..aabdf02
--- /dev/null
+++ b/test/rsstart1.in
@@ -0,0 +1,10000 @@
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
+Axxxxxx
diff --git a/test/rsstart1.ok b/test/rsstart1.ok
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/test/rsstart1.ok
@@ -0,0 +1 @@
+2
diff --git a/test/rsstart2.awk b/test/rsstart2.awk
new file mode 100644
index 0000000..14c1415
--- /dev/null
+++ b/test/rsstart2.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "^Ax*\n" }
+END { print NR }
diff --git a/test/rsstart2.ok b/test/rsstart2.ok
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/test/rsstart2.ok
@@ -0,0 +1 @@
+2
diff --git a/test/rsstart3.ok b/test/rsstart3.ok
new file mode 100644
index 0000000..0cfbf08
--- /dev/null
+++ b/test/rsstart3.ok
@@ -0,0 +1 @@
+2
diff --git a/test/rstest1.awk b/test/rstest1.awk
new file mode 100644
index 0000000..3eb8836
--- /dev/null
+++ b/test/rstest1.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ RS = ""
+ FS = ":"
+ s = "a:b\nc:d"
+ print split(s,a)
+ print length(a[2])
+}
diff --git a/test/rstest1.ok b/test/rstest1.ok
new file mode 100644
index 0000000..a5c8806
--- /dev/null
+++ b/test/rstest1.ok
@@ -0,0 +1,2 @@
+3
+3
diff --git a/test/rstest2.awk b/test/rstest2.awk
new file mode 100644
index 0000000..5ed4701
--- /dev/null
+++ b/test/rstest2.awk
@@ -0,0 +1,6 @@
+BEGIN {
+ RS = ""
+ FS = "\\"
+ $0 = "a\\b"
+ print $1
+}
diff --git a/test/rstest2.ok b/test/rstest2.ok
new file mode 100644
index 0000000..7898192
--- /dev/null
+++ b/test/rstest2.ok
@@ -0,0 +1 @@
+a
diff --git a/test/rstest3.awk b/test/rstest3.awk
new file mode 100644
index 0000000..3238ffa
--- /dev/null
+++ b/test/rstest3.awk
@@ -0,0 +1,73 @@
+# From spcecdt@armory.com Tue Apr 15 17:35:01 2003
+# Return-Path: <spcecdt@armory.com>
+# Received: from localhost (aahz [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h3FEYA6o001541
+# for <arnold@localhost>; Tue, 15 Apr 2003 17:35:01 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Tue, 15 Apr 2003 17:35:01 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue Apr 15 17:38:46 2003)
+# X-From_: spcecdt@armory.com Tue Apr 15 11:09:12 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h3F88uC19825 for <arobbins@actcom.co.il>;
+# Tue, 15 Apr 2003 11:09:04 +0300 (EET DST)
+# (rfc931-sender: smtp.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h3F8CgQ7019081
+# for <arobbins@actcom.co.il>; Tue, 15 Apr 2003 11:12:47 +0300
+# Received: from fencepost.gnu.org (fencepost.gnu.org [199.232.76.164])
+# by f7.net (8.11.7/8.11.6) with ESMTP id h3F88oW23381
+# for <arnold@skeeve.com>; Tue, 15 Apr 2003 04:08:50 -0400
+# Received: from monty-python.gnu.org ([199.232.76.173])
+# by fencepost.gnu.org with esmtp (Exim 4.10)
+# id 195LUo-0001cv-00
+# for bug-gawk@gnu.org; Tue, 15 Apr 2003 04:08:50 -0400
+# Received: from mail by monty-python.gnu.org with spam-scanned (Exim 4.10.13)
+# id 195LUh-0006n0-00
+# for bug-gawk@gnu.org; Tue, 15 Apr 2003 04:08:44 -0400
+# Received: from deepthought.armory.com ([192.122.209.42] helo=armory.com)
+# by monty-python.gnu.org with smtp (Exim 4.10.13)
+# id 195LUC-0006JM-00
+# for bug-gawk@gnu.org; Tue, 15 Apr 2003 04:08:13 -0400
+# Date: Tue, 15 Apr 2003 01:08:11 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: bug-gawk@gnu.org
+# Subject: gawk 3.1.2 fatal bug
+# Message-ID: <20030415080811.GA14963@armory.com>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Disposition: inline
+# User-Agent: Mutt/1.3.28i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# X-Spam-Status: No, hits=-7.9 required=5.0
+# tests=SIGNATURE_SHORT_DENSE,SPAM_PHRASE_01_02,USER_AGENT,
+# USER_AGENT_MUTT
+# version=2.41
+# X-Spam-Level:
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# This program:
+#
+# BEGIN { RS = ""; "/bin/echo -n x" | getline }
+#
+# fails in exactly the same way under SCO OpenServer 5.0.6a using gawk 3.1.2
+# built with gcc 2.95.3 and linux using gawk 3.1.2 built with gcc 3.2.2:
+#
+# gawk: gawktest:1: fatal error: internal error
+# Abort
+#
+# The same program does not fail with gawk 3.1.1.
+#
+# John
+# --
+# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/
+#
+#
+BEGIN {
+ RS = ""
+ "echo x | tr -d '\\12'" | getline
+}
diff --git a/test/rstest3.ok b/test/rstest3.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/rstest3.ok
diff --git a/test/rstest4.awk b/test/rstest4.awk
new file mode 100644
index 0000000..ddf0691
--- /dev/null
+++ b/test/rstest4.awk
@@ -0,0 +1,67 @@
+# From spcecdt@armory.com Mon May 5 14:37:09 2003
+# Return-Path: <spcecdt@armory.com>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h45B1GvT031993
+# for <arnold@localhost>; Mon, 5 May 2003 14:37:09 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Mon, 05 May 2003 14:37:09 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Mon May 5 14:35:11 2003)
+# X-From_: spcecdt@armory.com Mon May 5 12:20:20 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h459KC529186 for <arobbins@actcom.co.il>;
+# Mon, 5 May 2003 12:20:15 +0300 (EET DST)
+# (rfc931-sender: smtp.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h459LMfl025854
+# for <arobbins@actcom.co.il>; Mon, 5 May 2003 12:21:24 +0300
+# Received: from armory.com (deepthought.armory.com [192.122.209.42])
+# by f7.net (8.11.7/8.11.6) with SMTP id h459K9I26841
+# for <arnold@skeeve.com>; Mon, 5 May 2003 05:20:09 -0400
+# Date: Mon, 5 May 2003 02:20:08 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: Aharon Robbins <arnold@skeeve.com>
+# Subject: Re: gawk 3.1.2b now available
+# Message-ID: <20030505092008.GA15970@armory.com>
+# References: <200305041149.h44BnLcm005484@localhost.localdomain>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Disposition: inline
+# In-Reply-To: <200305041149.h44BnLcm005484@localhost.localdomain>
+# User-Agent: Mutt/1.3.28i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# This is a curious one:
+#
+# gawk-3.1.2b 'BEGIN {
+# while (("echo" | getline) == 1)
+# ;
+# RS = ""
+# "echo \"a\n\nb\"" | getline y
+# print x
+# }' | hd
+#
+# The output is:
+#
+# 0000 00 13 0a ...
+# 0003
+#
+# (the uninitialized variable 'x' is somehow getting the value <null><control-S>)
+#
+# John
+# --
+# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/
+#
+BEGIN {
+ while (("echo" | getline) == 1)
+ ;
+ RS = ""
+ "echo \"a\n\nb\"" | getline y
+ printf "y = <%s>\n", y # ADR
+ printf "x = <%s>\n", x # ADR
+}
diff --git a/test/rstest4.ok b/test/rstest4.ok
new file mode 100644
index 0000000..430442f
--- /dev/null
+++ b/test/rstest4.ok
@@ -0,0 +1,2 @@
+y = <a>
+x = <>
diff --git a/test/rstest5.awk b/test/rstest5.awk
new file mode 100644
index 0000000..09abb4a
--- /dev/null
+++ b/test/rstest5.awk
@@ -0,0 +1,60 @@
+# From spcecdt@armory.com Tue May 6 13:42:34 2003
+# Return-Path: <spcecdt@armory.com>
+# Received: from localhost (aahz [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h46AgG53003519
+# for <arnold@localhost>; Tue, 6 May 2003 13:42:34 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Tue, 06 May 2003 13:42:34 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue May 6 13:48:46 2003)
+# X-From_: spcecdt@armory.com Tue May 6 13:26:09 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h46AQ6520133 for <arobbins@actcom.co.il>;
+# Tue, 6 May 2003 13:26:07 +0300 (EET DST)
+# (rfc931-sender: lmail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h46ARSfl010998
+# for <arobbins@actcom.co.il>; Tue, 6 May 2003 13:27:31 +0300
+# Received: from armory.com (deepthought.armory.com [192.122.209.42])
+# by f7.net (8.11.7/8.11.6) with SMTP id h46AQ1I18183
+# for <arnold@skeeve.com>; Tue, 6 May 2003 06:26:01 -0400
+# Date: Tue, 6 May 2003 03:25:59 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: Aharon Robbins <arnold@skeeve.com>
+# Subject: Re: gawk 3.1.2b now available
+# Message-ID: <20030506102559.GA16105@armory.com>
+# References: <200305051157.h45Bv4XO003106@localhost.localdomain>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Disposition: inline
+# In-Reply-To: <200305051157.h45Bv4XO003106@localhost.localdomain>
+# User-Agent: Mutt/1.3.28i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: RO
+#
+# The patch fixed the previous case, but here's another one - this prints
+# <null><control-S>:
+#
+# BEGIN {
+# RS = ""
+# "echo 'foo\n\nbaz'" | getline
+# "echo 'foo\n\nbaz'" | getline
+# "echo 'bar\n\nbaz'" | getline
+# print x
+# }
+#
+# John
+# --
+# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/
+#
+BEGIN {
+ RS = ""
+ "echo 'foo\n\nbaz'" | getline ; print
+ "echo 'foo\n\nbaz'" | getline ; print
+ "echo 'bar\n\nbaz'" | getline ; print
+ printf "x = <%s>\n", x
+}
diff --git a/test/rstest5.ok b/test/rstest5.ok
new file mode 100644
index 0000000..bf45151
--- /dev/null
+++ b/test/rstest5.ok
@@ -0,0 +1,4 @@
+foo
+baz
+bar
+x = <>
diff --git a/test/rstest6.awk b/test/rstest6.awk
new file mode 100644
index 0000000..3481c0a
--- /dev/null
+++ b/test/rstest6.awk
@@ -0,0 +1,6 @@
+# Wed Jul 14 16:02:45 IDT 2004
+# Test case from John Haque mary1john8@earthlink.net
+
+BEGIN { RS = "XYZ" }
+
+{ print }
diff --git a/test/rstest6.in b/test/rstest6.in
new file mode 100644
index 0000000..a6bddc4
--- /dev/null
+++ b/test/rstest6.in
@@ -0,0 +1 @@
+ABCD \ No newline at end of file
diff --git a/test/rstest6.ok b/test/rstest6.ok
new file mode 100644
index 0000000..9ed4614
--- /dev/null
+++ b/test/rstest6.ok
@@ -0,0 +1 @@
+ABCD
diff --git a/test/rswhite.awk b/test/rswhite.awk
new file mode 100644
index 0000000..0048765
--- /dev/null
+++ b/test/rswhite.awk
@@ -0,0 +1,2 @@
+BEGIN { RS = "" }
+{ printf("<%s>\n", $0) }
diff --git a/test/rswhite.in b/test/rswhite.in
new file mode 100644
index 0000000..39f7756
--- /dev/null
+++ b/test/rswhite.in
@@ -0,0 +1,2 @@
+ a b
+c d
diff --git a/test/rswhite.ok b/test/rswhite.ok
new file mode 100644
index 0000000..a029e47
--- /dev/null
+++ b/test/rswhite.ok
@@ -0,0 +1,2 @@
+< a b
+c d>
diff --git a/test/scalar.awk b/test/scalar.awk
new file mode 100644
index 0000000..9027389
--- /dev/null
+++ b/test/scalar.awk
@@ -0,0 +1,4 @@
+BEGIN{
+ sub(/x/,"",a)
+ a[1]
+}
diff --git a/test/scalar.ok b/test/scalar.ok
new file mode 100644
index 0000000..6aea31a
--- /dev/null
+++ b/test/scalar.ok
@@ -0,0 +1,2 @@
+gawk: scalar.awk:3: fatal: attempt to use scalar `a' as array
+EXIT CODE: 2
diff --git a/test/sclforin.awk b/test/sclforin.awk
new file mode 100644
index 0000000..335e854
--- /dev/null
+++ b/test/sclforin.awk
@@ -0,0 +1 @@
+BEGIN { j = 4; for (i in j) print j[i] }
diff --git a/test/sclforin.ok b/test/sclforin.ok
new file mode 100644
index 0000000..948df43
--- /dev/null
+++ b/test/sclforin.ok
@@ -0,0 +1,2 @@
+gawk: sclforin.awk:1: fatal: attempt to use scalar `j' as array
+EXIT CODE: 2
diff --git a/test/sclifin.awk b/test/sclifin.awk
new file mode 100644
index 0000000..64f5d0d
--- /dev/null
+++ b/test/sclifin.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ j = 4
+ if ("foo" in j)
+ print "ouch"
+ else
+ print "ok"
+}
diff --git a/test/sclifin.ok b/test/sclifin.ok
new file mode 100644
index 0000000..5bc9301
--- /dev/null
+++ b/test/sclifin.ok
@@ -0,0 +1,2 @@
+gawk: sclifin.awk:7: fatal: attempt to use scalar `j' as array
+EXIT CODE: 2
diff --git a/test/shadow.awk b/test/shadow.awk
new file mode 100644
index 0000000..9a58720
--- /dev/null
+++ b/test/shadow.awk
@@ -0,0 +1,21 @@
+function foo()
+{
+ print "foo"
+}
+
+function bar(A, Z, q)
+{
+ print "bar"
+}
+
+function baz(C, D)
+{
+ print "baz"
+}
+
+BEGIN {
+ A = C = D = Z = y = 1
+ foo()
+ bar()
+ baz()
+}
diff --git a/test/shadow.ok b/test/shadow.ok
new file mode 100644
index 0000000..f543a88
--- /dev/null
+++ b/test/shadow.ok
@@ -0,0 +1,7 @@
+gawk: shadow.awk:22: warning: function `bar': parameter `A' shadows global variable
+gawk: shadow.awk:22: warning: function `bar': parameter `Z' shadows global variable
+gawk: shadow.awk:22: warning: function `baz': parameter `C' shadows global variable
+gawk: shadow.awk:22: warning: function `baz': parameter `D' shadows global variable
+foo
+bar
+baz
diff --git a/test/sort1.awk b/test/sort1.awk
new file mode 100644
index 0000000..3800c40
--- /dev/null
+++ b/test/sort1.awk
@@ -0,0 +1,31 @@
+BEGIN{
+ a[1] = "barz";
+ a[2] = "blattt";
+ a[3] = "Zebra";
+ a[4] = 1234;
+
+ testit1(a)
+
+ delete a
+
+ a[1] = "barz";
+ a[2] = "blattt";
+ a[3] = "Zebra";
+ a[4] = 1234;
+
+ n = asort(a, b);
+
+ print "N = ", n;
+
+ for(i=1; i <= n; i++)
+ print i, a[i], b[i];
+}
+
+function testit1(a, count, j)
+{
+ print "start testit"
+ count = asort(a)
+ for (j = 1; j <= count; j++)
+ print j, a[j]
+ print "end testit"
+}
diff --git a/test/sort1.ok b/test/sort1.ok
new file mode 100644
index 0000000..4838dab
--- /dev/null
+++ b/test/sort1.ok
@@ -0,0 +1,11 @@
+start testit
+1 1234
+2 Zebra
+3 barz
+4 blattt
+end testit
+N = 4
+1 barz 1234
+2 blattt Zebra
+3 Zebra barz
+4 1234 blattt
diff --git a/test/sortempty.awk b/test/sortempty.awk
new file mode 100644
index 0000000..6848d95
--- /dev/null
+++ b/test/sortempty.awk
@@ -0,0 +1 @@
+BEGIN { print asort(a) }
diff --git a/test/sortempty.ok b/test/sortempty.ok
new file mode 100644
index 0000000..573541a
--- /dev/null
+++ b/test/sortempty.ok
@@ -0,0 +1 @@
+0
diff --git a/test/space.ok b/test/space.ok
new file mode 100644
index 0000000..0f76956
--- /dev/null
+++ b/test/space.ok
@@ -0,0 +1,2 @@
+gawk: fatal: can't open source file ` ' for reading (No such file or directory)
+EXIT CODE: 2
diff --git a/test/splitargv.awk b/test/splitargv.awk
new file mode 100644
index 0000000..10886ef
--- /dev/null
+++ b/test/splitargv.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ for (idx = 1; idx < ARGC; idx++)
+ split(ARGV[idx], temp, ".");
+ }
+ {
+ print $0;
+ }
diff --git a/test/splitargv.in b/test/splitargv.in
new file mode 100644
index 0000000..10886ef
--- /dev/null
+++ b/test/splitargv.in
@@ -0,0 +1,7 @@
+BEGIN {
+ for (idx = 1; idx < ARGC; idx++)
+ split(ARGV[idx], temp, ".");
+ }
+ {
+ print $0;
+ }
diff --git a/test/splitargv.ok b/test/splitargv.ok
new file mode 100644
index 0000000..10886ef
--- /dev/null
+++ b/test/splitargv.ok
@@ -0,0 +1,7 @@
+BEGIN {
+ for (idx = 1; idx < ARGC; idx++)
+ split(ARGV[idx], temp, ".");
+ }
+ {
+ print $0;
+ }
diff --git a/test/splitarr.awk b/test/splitarr.awk
new file mode 100644
index 0000000..c1185a4
--- /dev/null
+++ b/test/splitarr.awk
@@ -0,0 +1,5 @@
+BEGIN {
+ a[1] = "elephantie"
+ a[2] = "e"
+ print split(a[1],a,a[2]), a[2], a[3], split(a[2],a,a[2])
+}
diff --git a/test/splitarr.ok b/test/splitarr.ok
new file mode 100644
index 0000000..9402b94
--- /dev/null
+++ b/test/splitarr.ok
@@ -0,0 +1 @@
+4 l phanti 2
diff --git a/test/splitdef.awk b/test/splitdef.awk
new file mode 100644
index 0000000..694db80
--- /dev/null
+++ b/test/splitdef.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ data = "abc:easy:as:one:two:three"
+ FS = ":"
+ FIELDWIDTHS = "3 1 4 1 2 1 3 1 3 1 5"
+ n = split(data, a)
+ printf "n = %d, a[3] = %s\n", n, a[3]
+}
diff --git a/test/splitdef.ok b/test/splitdef.ok
new file mode 100644
index 0000000..5f13505
--- /dev/null
+++ b/test/splitdef.ok
@@ -0,0 +1 @@
+n = 6, a[3] = as
diff --git a/test/splitvar.awk b/test/splitvar.awk
new file mode 100644
index 0000000..9e1ac79
--- /dev/null
+++ b/test/splitvar.awk
@@ -0,0 +1,5 @@
+{
+ sep = "=+"
+ n = split($0, a, sep)
+ print n
+}
diff --git a/test/splitvar.in b/test/splitvar.in
new file mode 100644
index 0000000..85be8ee
--- /dev/null
+++ b/test/splitvar.in
@@ -0,0 +1 @@
+Here===Is=Some=====Data
diff --git a/test/splitvar.ok b/test/splitvar.ok
new file mode 100644
index 0000000..b8626c4
--- /dev/null
+++ b/test/splitvar.ok
@@ -0,0 +1 @@
+4
diff --git a/test/splitwht.awk b/test/splitwht.awk
new file mode 100644
index 0000000..6163d72
--- /dev/null
+++ b/test/splitwht.awk
@@ -0,0 +1,7 @@
+BEGIN {
+ str = "a b\t\tc d"
+ n = split(str, a, " ")
+ print n
+ m = split(str, b, / /)
+ print m
+}
diff --git a/test/splitwht.ok b/test/splitwht.ok
new file mode 100644
index 0000000..61c83cb
--- /dev/null
+++ b/test/splitwht.ok
@@ -0,0 +1,2 @@
+4
+5
diff --git a/test/sprintfc.awk b/test/sprintfc.awk
new file mode 100644
index 0000000..ee1e5a7
--- /dev/null
+++ b/test/sprintfc.awk
@@ -0,0 +1 @@
+{ print sprintf("%c", $1), $1 }
diff --git a/test/sprintfc.in b/test/sprintfc.in
new file mode 100644
index 0000000..4602d28
--- /dev/null
+++ b/test/sprintfc.in
@@ -0,0 +1,3 @@
+65
+66
+foo
diff --git a/test/sprintfc.ok b/test/sprintfc.ok
new file mode 100644
index 0000000..33769a8
--- /dev/null
+++ b/test/sprintfc.ok
@@ -0,0 +1,3 @@
+A 65
+B 66
+f foo
diff --git a/test/strcat1.awk b/test/strcat1.awk
new file mode 100644
index 0000000..0d28017
--- /dev/null
+++ b/test/strcat1.awk
@@ -0,0 +1,6 @@
+
+function f1(b) { b = b "c"; print f(b); }
+
+function f(a) { a = a "b"; return a; }
+
+BEGIN { A = "a"; f1(A); }
diff --git a/test/strcat1.ok b/test/strcat1.ok
new file mode 100644
index 0000000..66a2f4b
--- /dev/null
+++ b/test/strcat1.ok
@@ -0,0 +1 @@
+acb
diff --git a/test/strftime.awk b/test/strftime.awk
new file mode 100644
index 0000000..775cd4e
--- /dev/null
+++ b/test/strftime.awk
@@ -0,0 +1,19 @@
+# strftime.awk ; test the strftime code
+#
+# input is the output of `date', see Makefile.in
+#
+# The mucking about with $0 and $N is to avoid problems
+# on cygwin, where the timezone field is empty and there
+# are two consecutive blanks.
+
+# Additional mucking about to lop off the seconds field;
+# helps decrease chance of difference due to a second boundary
+
+{
+ $3 = sprintf("%02d", $3 + 0)
+ $4 = substr($4, 1, 5)
+ print > "strftime.ok"
+ $0 = strftime("%a %b %d %H:%M %Z %Y")
+ $NF = $NF
+ print > OUTPUT
+}
diff --git a/test/strftlng.awk b/test/strftlng.awk
new file mode 100644
index 0000000..0ef8195
--- /dev/null
+++ b/test/strftlng.awk
@@ -0,0 +1,11 @@
+# test file from Paul Eggert, eggert@twinsun.com
+# modified for portability (%c doesn't cut it)
+
+BEGIN {
+ BUFSIZ = 1024
+ simpleformat = format = "%m/%d/%y %H:%M:%S\n"
+ clen = length(strftime(format, 0))
+ for (i = 1; i < BUFSIZ / clen + 1; i++)
+ format = format simpleformat
+ printf "%s", strftime(format, 0)
+}
diff --git a/test/strftlng.ok b/test/strftlng.ok
new file mode 100644
index 0000000..3008aa2
--- /dev/null
+++ b/test/strftlng.ok
@@ -0,0 +1,58 @@
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
+01/01/70 00:00:00
diff --git a/test/strtod.awk b/test/strtod.awk
new file mode 100644
index 0000000..3326478
--- /dev/null
+++ b/test/strtod.awk
@@ -0,0 +1,5 @@
+{
+ x = "0x" $1 ; print x, x + 0
+ for (i=1; i<=NF; i++)
+ if ($i) print $i, "is not zero"
+}
diff --git a/test/strtod.in b/test/strtod.in
new file mode 100644
index 0000000..d7f71aa
--- /dev/null
+++ b/test/strtod.in
@@ -0,0 +1 @@
+345 0 00 0e0 0E1 00E0 000e-5 .0e+0
diff --git a/test/strtod.ok b/test/strtod.ok
new file mode 100644
index 0000000..a47a9b1
--- /dev/null
+++ b/test/strtod.ok
@@ -0,0 +1,2 @@
+0x345 0
+345 is not zero
diff --git a/test/strtonum.awk b/test/strtonum.awk
new file mode 100644
index 0000000..22ad41e
--- /dev/null
+++ b/test/strtonum.awk
@@ -0,0 +1,6 @@
+BEGIN {
+ print strtonum("0x13")
+ print strtonum("013")
+ print strtonum("13")
+ print strtonum(13)
+}
diff --git a/test/strtonum.ok b/test/strtonum.ok
new file mode 100644
index 0000000..9d1e557
--- /dev/null
+++ b/test/strtonum.ok
@@ -0,0 +1,4 @@
+19
+11
+13
+13
diff --git a/test/subamp.awk b/test/subamp.awk
new file mode 100644
index 0000000..2638e6e
--- /dev/null
+++ b/test/subamp.awk
@@ -0,0 +1 @@
+{ sub(/[a-z]/, "&") ; print }
diff --git a/test/subamp.in b/test/subamp.in
new file mode 100644
index 0000000..72943a1
--- /dev/null
+++ b/test/subamp.in
@@ -0,0 +1 @@
+aaa
diff --git a/test/subamp.ok b/test/subamp.ok
new file mode 100644
index 0000000..72943a1
--- /dev/null
+++ b/test/subamp.ok
@@ -0,0 +1 @@
+aaa
diff --git a/test/subsepnm.awk b/test/subsepnm.awk
new file mode 100644
index 0000000..976eef9
--- /dev/null
+++ b/test/subsepnm.awk
@@ -0,0 +1 @@
+BEGIN { SUBSEP = 10; a[1, 1] = 100 ; print a[1 SUBSEP 1] }
diff --git a/test/subsepnm.ok b/test/subsepnm.ok
new file mode 100644
index 0000000..29d6383
--- /dev/null
+++ b/test/subsepnm.ok
@@ -0,0 +1 @@
+100
diff --git a/test/subslash.awk b/test/subslash.awk
new file mode 100644
index 0000000..87ab029
--- /dev/null
+++ b/test/subslash.awk
@@ -0,0 +1,6 @@
+BEGIN {
+ i = 2
+ a[i] = 5
+ a[i] /= 2
+ printf "a[%s] = %f\n", i, a[i]
+}
diff --git a/test/subslash.ok b/test/subslash.ok
new file mode 100644
index 0000000..4f3beff
--- /dev/null
+++ b/test/subslash.ok
@@ -0,0 +1 @@
+a[2] = 2.500000
diff --git a/test/substr.awk b/test/substr.awk
new file mode 100644
index 0000000..6016369
--- /dev/null
+++ b/test/substr.awk
@@ -0,0 +1,14 @@
+BEGIN {
+ x = "A"
+ printf("%-39s\n", substr(x,1,39))
+ print substr("abcdef", 0, 2)
+ print substr("abcdef", 2.3, 2)
+ print substr("abcdef", -1, 2)
+ print substr("abcdef", 1, 0)
+ print substr("abcdef", 1, -3)
+ print substr("abcdef", 1, 2.3)
+ print substr("", 1, 2)
+ print substr("abcdef", 5, 5)
+ print substr("abcdef", 7, 2)
+ exit (0)
+}
diff --git a/test/substr.ok b/test/substr.ok
new file mode 100644
index 0000000..be6889d
--- /dev/null
+++ b/test/substr.ok
@@ -0,0 +1,10 @@
+A
+ab
+bc
+ab
+
+
+ab
+
+ef
+
diff --git a/test/swaplns.awk b/test/swaplns.awk
new file mode 100644
index 0000000..6bf2240
--- /dev/null
+++ b/test/swaplns.awk
@@ -0,0 +1,7 @@
+{
+ if ((getline tmp) > 0) {
+ print tmp
+ print
+ } else
+ print
+}
diff --git a/test/swaplns.in b/test/swaplns.in
new file mode 100644
index 0000000..71fb162
--- /dev/null
+++ b/test/swaplns.in
@@ -0,0 +1,9 @@
+This directory contains some examples/test-cases for different
+features of gawk - mostly not present in an old awk. Some are from
+"The GAWK Manual", some are original, and some are mixture of the two.
+Read header comments before attempting to use. Have fun and remember
+that program which consists only of BEGIN block does not need an input
+file.
+
+ --mj
+
diff --git a/test/swaplns.ok b/test/swaplns.ok
new file mode 100644
index 0000000..d38b7ca
--- /dev/null
+++ b/test/swaplns.ok
@@ -0,0 +1,9 @@
+features of gawk - mostly not present in an old awk. Some are from
+This directory contains some examples/test-cases for different
+Read header comments before attempting to use. Have fun and remember
+"The GAWK Manual", some are original, and some are mixture of the two.
+file.
+that program which consists only of BEGIN block does not need an input
+ --mj
+
+
diff --git a/test/switch2.awk b/test/switch2.awk
new file mode 100644
index 0000000..f788edb
--- /dev/null
+++ b/test/switch2.awk
@@ -0,0 +1,59 @@
+# From spcecdt@armory.com Tue Jun 3 11:41:49 2003
+# Return-Path: <spcecdt@armory.com>
+# Received: from localhost (skeeve [127.0.0.1])
+# by skeeve.com (8.12.5/8.12.5) with ESMTP id h538fVuW018115
+# for <arnold@localhost>; Tue, 3 Jun 2003 11:41:49 +0300
+# Received: from actcom.co.il [192.114.47.1]
+# by localhost with POP3 (fetchmail-5.9.0)
+# for arnold@localhost (single-drop); Tue, 03 Jun 2003 11:41:49 +0300 (IDT)
+# Received: by actcom.co.il (mbox arobbins)
+# (with Cubic Circle's cucipop (v1.31 1998/05/13) Tue Jun 3 11:41:37 2003)
+# X-From_: spcecdt@armory.com Mon Jun 2 20:17:30 2003
+# Received: from smtp1.actcom.net.il by actcom.co.il with ESMTP
+# (8.11.6/actcom-0.2) id h52HHNY23516 for <arobbins@actcom.co.il>;
+# Mon, 2 Jun 2003 20:17:24 +0300 (EET DST)
+# (rfc931-sender: mail.actcom.co.il [192.114.47.13])
+# Received: from f7.net (consort.superb.net [209.61.216.22])
+# by smtp1.actcom.net.il (8.12.8/8.12.8) with ESMTP id h52HIHqv028728
+# for <arobbins@actcom.co.il>; Mon, 2 Jun 2003 20:18:18 +0300
+# Received: from armory.com (deepthought.armory.com [192.122.209.42])
+# by f7.net (8.11.7/8.11.6) with SMTP id h52HHKl31637
+# for <arnold@skeeve.com>; Mon, 2 Jun 2003 13:17:20 -0400
+# Date: Mon, 2 Jun 2003 10:17:11 -0700
+# From: "John H. DuBois III" <spcecdt@armory.com>
+# To: arnold@skeeve.com
+# Subject: gawk 3.1.2c coredump
+# Message-ID: <20030602171711.GA3958@armory.com>
+# Mime-Version: 1.0
+# Content-Type: text/plain; charset=us-ascii
+# Content-Disposition: inline
+# User-Agent: Mutt/1.3.28i
+# X-Www: http://www.armory.com./~spcecdt/
+# Sender: spcecdt@armory.com
+# X-SpamBouncer: 1.4 (10/07/01)
+# X-SBClass: OK
+# Status: R
+#
+#!/usr/local/bin/gawk -f
+BEGIN {
+ switch (substr("x",1,1)) {
+ case /ask.com/:
+ break
+ case "google":
+ break
+ }
+}
+#
+# The stack says:
+#
+# #0 0x0806fac2 in r_tree_eval (tree=0x8092000, iscond=0) at eval.c:813
+# #1 0x08070413 in r_tree_eval (tree=0x0, iscond=0) at eval.c:1071
+# #2 0x08070413 in r_tree_eval (tree=0x8092000, iscond=0) at eval.c:1071
+# #3 0x08070413 in r_tree_eval (tree=0x8092000, iscond=0) at eval.c:1071
+# [ this continues on indefinitely - I suppose it ran out of stack eventually ]
+#
+# John
+# --
+# John DuBois spcecdt@armory.com KC6QKZ/AE http://www.armory.com/~spcecdt/
+#
+#
diff --git a/test/synerr1.awk b/test/synerr1.awk
new file mode 100644
index 0000000..131708d
--- /dev/null
+++ b/test/synerr1.awk
@@ -0,0 +1,4 @@
+# program to make sure we don't infinite
+# syntax errors
+
+print "hi"
diff --git a/test/synerr1.ok b/test/synerr1.ok
new file mode 100644
index 0000000..e180f13
--- /dev/null
+++ b/test/synerr1.ok
@@ -0,0 +1,3 @@
+gawk: synerr1.awk:4: print "hi"
+gawk: synerr1.awk:4: ^ syntax error
+EXIT CODE: 1
diff --git a/test/tradanch.awk b/test/tradanch.awk
new file mode 100644
index 0000000..0cd45d1
--- /dev/null
+++ b/test/tradanch.awk
@@ -0,0 +1,2 @@
+/foo^bar/
+/foo$bar/
diff --git a/test/tradanch.in b/test/tradanch.in
new file mode 100644
index 0000000..e5c8a09
--- /dev/null
+++ b/test/tradanch.in
@@ -0,0 +1,2 @@
+foo^bar
+foo$bar
diff --git a/test/tradanch.ok b/test/tradanch.ok
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/test/tradanch.ok
diff --git a/test/tweakfld.awk b/test/tweakfld.awk
new file mode 100644
index 0000000..e7b538f
--- /dev/null
+++ b/test/tweakfld.awk
@@ -0,0 +1,296 @@
+# To: bug-gnu-utils@prep.ai.mit.edu
+# Cc: arnold@gnu.ai.mit.edu
+# Date: Mon, 20 Nov 1995 11:39:29 -0500
+# From: "R. Hank Donnelly" <emory!head-cfa.harvard.edu!donnelly>
+#
+# Operating system: Linux1.2.13 (Slackware distrib)
+# GAWK version: 2.15 (?)
+# compiler: GCC (?)
+#
+# The following enclosed script does not want to fully process the input data
+# file. It correctly executes the operations on the first record, and then dies
+# on the second one. My true data file is much longer but this is
+# representative and it does fail on a file even as short as this one.
+# The failure appears to occur in the declared function add2output. Between the
+# steps of incrementing NF by one and setting $NF to the passed variable
+# the passed variable appears to vanish (i.e. NF does go from 68 to 69
+# and before incrementing it "variable" equals what it should but after
+# "variable" has no value at all.)
+#
+# The scripts have been developed using nawk on a Sun (where they run fine)
+# I have tried gawk there but get a different crash which I have not yet traced
+# down. Ideally I would like to keep the script the same so that it would run
+# on either gawk or nawk (that way I can step back and forth between laptop and
+# workstation.
+#
+# Any ideas why the laptop installation is having problems?
+# Hank
+#
+#
+# #!/usr/bin/gawk -f
+
+BEGIN {
+ # set a few values
+ FS = "\t"
+ OFS = "\t"
+ pi = atan2(0, -1)
+# distance from HRMA to focal plane in mm
+ fullradius = 10260.54
+
+ # set locations of parameters on input line
+ nf_nrg = 1
+ nf_order = 3
+ nf_item = 4
+ nf_suite = 5
+ nf_grating = 8
+ nf_shutter = 9
+ nf_type = 13
+ nf_src = 14
+ nf_target = 15
+ nf_voltage = 16
+ nf_flux = 17
+ nf_filt1 = 20
+ nf_filt1_th = 21
+ nf_filt2 = 22
+ nf_filt2_th = 23
+ nf_bnd = 24
+ nf_hrma_polar = 27
+ nf_hrma_az = 28
+ nf_detector = 30
+ nf_acis_read = 32
+ nf_acis_proc = 33
+ nf_acis_frame = 34
+ nf_hxda_aplist = 36
+ nf_hxda_y_range = 37
+ nf_hxda_z_range = 38
+ nf_hxda_y_step = 39
+ nf_hxda_z_step = 40
+ nf_sim_z = 41
+ nf_fam_polar = 43
+ nf_fam_az = 44
+ nf_fam_dither_type = 45
+ nf_mono_init = 51
+ nf_mono_range = 52
+ nf_mono_step = 53
+ nf_defocus = 54
+ nf_acis_temp = 55
+ nf_tight = 59
+ nf_offset_y = 64
+ nf_offset_z = 65
+
+ while( getline < "xrcf_mnemonics.dat" > 0 ) {
+ mnemonic[$1] = $2
+ }
+
+# "date" | getline date_line
+# ADR: use a fixed date so that testing will work
+ date_line = "Sun Mar 10 23:00:27 EST 1996"
+ split(date_line, in_date, " ")
+ out_date = in_date[2] " " in_date[3] ", " in_date[6]
+}
+
+function add2output( variable ) {
+#print("hi1") >> "debug"
+ NF++
+#print("hi2") >> "debug"
+ $NF = variable
+#print("hi3") >> "debug"
+}
+
+function error( ekey, message ) {
+ print "Error at input line " NR ", anode " ekey >> "errors.cleanup"
+ print " " message "." >> "errors.cleanup"
+}
+
+function hxda_na() {
+ $nf_hxda_aplist = $nf_hxda_y_range = $nf_hxda_z_range = "N/A"
+ $nf_hxda_y_step = $nf_hxda_z_step = "N/A"
+}
+
+function acis_na() {
+ $nf_acis_read = $nf_acis_proc = $nf_acis_frame = $nf_acis_temp = "N/A"
+}
+
+function hrc_na() {
+# print ("hi") >> "debug"
+}
+
+function fpsi_na() {
+ acis_na()
+ hrc_na()
+ $nf_sim_z = $nf_fam_polar = $nf_fam_az = $nf_fam_dither_type = "N/A"
+}
+
+function mono_na() {
+ $nf_mono_init = $nf_mono_range = $nf_mono_step = "N/A"
+}
+
+# this gives the pitch and yaw of the HRMA and FAM
+# positive pitch is facing the source "looking down"
+# positive yaw is looking left
+# 0 az is north 90 is up
+# this also adds in the FAM X,Y,Z positions
+
+function polaz2yawpitch(polar, az) {
+ theta = az * pi / 180
+ phi = polar * pi / 180 / 60
+
+
+ if( polar == 0 ) {
+ add2output( 0 )
+ add2output( 0 )
+ } else {
+ if(az == 0 || az == 180)
+ add2output( 0 )
+ else
+ add2output( - polar * sin(theta) )
+
+
+# x = cos (phi)
+# y = sin (phi) * cos (theta)
+# add2output( atan2(y,x)*180 / pi * 60 )
+
+ if(az == 90 || az ==270 )
+ add2output( 0 )
+ else
+ add2output( - polar * cos(theta) )
+
+ }
+# x = cos (phi)
+# z= sin (phi) * sin (theta)
+# add2output( atan2(z,x)*180 / pi * 60 )
+
+ if(config !~ /HXDA/) {
+# negative values of defocus move us farther from the source thus
+# increasing radius
+ radius = fullradius - defocus
+
+# FAM_x; FAM_y; FAM_z
+ if((offset_y == 0) && (offset_z == 0)){
+ add2output( fullradius - radius * cos (phi) )
+
+ if (az == 90 || az ==270)
+ add2output( 0 )
+ else
+ add2output( radius * sin (phi) * cos (theta) )
+
+ if (az == 0 || az == 180)
+ add2output( 0 )
+ else
+ add2output( - radius * sin (phi) * sin (theta) )
+ } else {
+# ******* THIS SEGMENT OF CODE IS NOT MATHEMATICALLY CORRECT FOR ****
+# OFF AXIS ANGLES AND IS SUPPLIED AS A WORKAROUND SINCE IT WILL
+# PROBABLY ONLY BE USED ON AXIS.
+ add2output( defocus )
+ add2output( offset_y )
+ add2output( offset_z )
+ }
+
+ } else {
+ add2output( "N/A" )
+ add2output( "N/A" )
+ add2output( "N/A" )
+ }
+}
+
+# set TIGHT/LOOSE to N/A if it is not one of the two allowed values
+function tight_na() {
+ if( $nf_tight !~ /TIGHT|LOOSE/ ) {
+ $nf_tight == "N/A"
+ }
+}
+
+# this entry is used to give certain entries names
+{
+ type = $nf_type
+ item = $nf_item
+ suite = $nf_suite
+ order = $nf_order
+ detector = $nf_detector
+ grating = $nf_grating
+ offset_y= $nf_offset_y
+ offset_z= $nf_offset_z
+ bnd = $nf_bnd
+ defocus = $nf_defocus
+}
+
+{
+ # make configuration parameter
+ # as well as setting configuration-dependent N/A values
+
+ if( $nf_bnd ~ "SCAN" ) {
+ # BND is scanning beam
+ config = "BND"
+ hxda_na()
+ fpsi_na()
+ } else {
+ if( grating == "NONE" ) {
+ config = "HRMA"
+ } else {
+ if( grating == "HETG" ) {
+ if( order != "Both" ) {
+ $nf_shutter = order substr($nf_shutter, \
+ index($nf_shutter, ",") )
+ }
+ } else {
+ order = "N/A"
+ }
+ config = "HRMA/" grating
+ }
+
+ if( detector ~ /ACIS|HRC/ ) {
+ detsys = detector
+ nsub = sub("-", ",", detsys)
+ config = config "/" detsys
+ hxda_na()
+ } else {
+ config = config "/HXDA"
+ fpsi_na()
+ if( detector == "HSI" ) {
+ hxda_na()
+ }
+ }
+ }
+
+ add2output( config )
+
+ if( $nf_src ~ /EIPS|Penning/ ) mono_na()
+
+ if( $nf_src == "Penning" ) $nf_voltage = "N/A"
+
+ itm = sprintf("%03d", item)
+
+ if(config in mnemonic) {
+ if( type in mnemonic ) {
+ ID = mnemonic[config] "-" mnemonic[type] "-" suite "." itm
+ add2output( ID )
+ } else {
+ error(type, "measurement type not in list")
+ }
+ } else {
+ error(config, "measurement configuration not in list")
+ }
+
+ # add date to output line
+ add2output( out_date )
+
+ # Convert HRMA polar and azimuthal angles to yaw and pitch
+ polaz2yawpitch($nf_hrma_polar, $nf_hrma_az)
+
+ # set TIGHT/LOOSE to N/A if it is not one of the two allowed values
+ tight_na()
+
+ # compute number of HXDA apertures
+ if( config ~ /HXDA/ && $nf_hxda_aplist != "N/A")
+ add2output( split( $nf_hxda_aplist, dummy, "," ) )
+ else
+ add2output( "N/A" )
+
+ # make sure the BND value is properly set
+ if($nf_bnd == "FIXED" && detector ~ /ACIS/)
+ $nf_bnd =bnd"-SYNC"
+ else
+ $nf_bnd = bnd"-FREE"
+ print
+}
diff --git a/test/tweakfld.in b/test/tweakfld.in
new file mode 100644
index 0000000..e27a9dd
--- /dev/null
+++ b/test/tweakfld.in
@@ -0,0 +1,3 @@
+0.277 N/A N/A 1 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS C-Ka 1.108 0.13484 N/A N/A C8H8 10.32 C8H8 20.64 FIXED 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 44.7175 44.7175 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate
+1.486 N/A N/A 2 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Al-Ka 4.458 0.642119 N/A N/A Al 18.38 Al 36.76 FIXED 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate
+4.51 N/A N/A 3 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Ti-Ka 22.55 3.02894 N/A N/A Ti 40.6 N/A N/A FIXED 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate
diff --git a/test/tweakfld.ok b/test/tweakfld.ok
new file mode 100644
index 0000000..3c4d894
--- /dev/null
+++ b/test/tweakfld.ok
@@ -0,0 +1,3 @@
+0.277 N/A N/A 1 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS C-Ka 1.108 0.13484 N/A N/A C8H8 10.32 C8H8 20.64 FIXED-FREE 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 44.7175 44.7175 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate HRMA/HRC,I Mar 10, 1996 0 0 0 0 0 N/A
+1.486 N/A N/A 2 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Al-Ka 4.458 0.642119 N/A N/A Al 18.38 Al 36.76 FIXED-FREE 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate HRMA/HRC,I Mar 10, 1996 0 0 0 0 0 N/A
+4.51 N/A N/A 3 1 ASC/Hank Donnelly N/A NONE ALL,ALL N/A N/A N/A Count Rate Linearity EIPS Ti-Ka 22.55 3.02894 N/A N/A Ti 40.6 N/A N/A FIXED-FREE 1000 NO 0 0 0 HRC,I 1000 N/A N/A N/A N/A N/A N/A N/A N/A N/A 0 N/A APT APT LISSAJOUS 5.55556 5.55556 1 N/A N/A N/A N/A N/A 0 N/A HRCCTRTLIN 0 N/A N/A N/A 10 N/A 180 0 0 N/A N/A FPSI rate HRMA/HRC,I Mar 10, 1996 0 0 0 0 0 N/A
diff --git a/test/uninit2.awk b/test/uninit2.awk
new file mode 100644
index 0000000..9ded557
--- /dev/null
+++ b/test/uninit2.awk
@@ -0,0 +1,2 @@
+BEGIN { a = a + 1; x = a; print a}
+BEGIN { ++b; x = b; print b}
diff --git a/test/uninit2.ok b/test/uninit2.ok
new file mode 100644
index 0000000..2001a39
--- /dev/null
+++ b/test/uninit2.ok
@@ -0,0 +1,4 @@
+gawk: uninit2.awk:1: warning: reference to uninitialized variable `a'
+1
+gawk: uninit2.awk:2: warning: reference to uninitialized variable `b'
+1
diff --git a/test/uninit3.awk b/test/uninit3.awk
new file mode 100644
index 0000000..d0140d5
--- /dev/null
+++ b/test/uninit3.awk
@@ -0,0 +1,7 @@
+function f(x){
+ print x
+}
+
+BEGIN {
+ f(x)
+}
diff --git a/test/uninit3.ok b/test/uninit3.ok
new file mode 100644
index 0000000..a98ddb0
--- /dev/null
+++ b/test/uninit3.ok
@@ -0,0 +1,3 @@
+gawk: uninit3.awk:8: warning: function `f': parameter `x' shadows global variable
+gawk: uninit3.awk:2: warning: reference to uninitialized variable `x'
+
diff --git a/test/uninit4.awk b/test/uninit4.awk
new file mode 100644
index 0000000..89de732
--- /dev/null
+++ b/test/uninit4.awk
@@ -0,0 +1,13 @@
+# test whether --lint catches uninitialized fields:
+function pr()
+{
+ print
+}
+
+BEGIN {
+ pr()
+ print $0
+ print $(1-1)
+ print $1
+ NF=3; print $2
+}
diff --git a/test/uninit4.ok b/test/uninit4.ok
new file mode 100644
index 0000000..3ea4da3
--- /dev/null
+++ b/test/uninit4.ok
@@ -0,0 +1,10 @@
+gawk: uninit4.awk:4: warning: reference to uninitialized field `$0'
+
+gawk: uninit4.awk:9: warning: reference to uninitialized field `$0'
+
+gawk: uninit4.awk:10: warning: reference to uninitialized field `$0'
+
+gawk: uninit4.awk:11: warning: reference to uninitialized field `$1'
+
+gawk: uninit4.awk:12: warning: reference to uninitialized field `$2'
+
diff --git a/test/uninitialized.awk b/test/uninitialized.awk
new file mode 100644
index 0000000..09bb643
--- /dev/null
+++ b/test/uninitialized.awk
@@ -0,0 +1,3 @@
+BEGIN {
+ a += 2
+}
diff --git a/test/uninitialized.ok b/test/uninitialized.ok
new file mode 100644
index 0000000..86ab474
--- /dev/null
+++ b/test/uninitialized.ok
@@ -0,0 +1 @@
+gawk: uninitialized.awk:2: warning: reference to uninitialized variable `a'
diff --git a/test/unterm.awk b/test/unterm.awk
new file mode 100644
index 0000000..c420c47
--- /dev/null
+++ b/test/unterm.awk
@@ -0,0 +1 @@
+BEGIN{x=".........................................................................................................................................................................................................................................................} \ No newline at end of file
diff --git a/test/unterm.ok b/test/unterm.ok
new file mode 100644
index 0000000..a8e7e59
--- /dev/null
+++ b/test/unterm.ok
@@ -0,0 +1,3 @@
+gawk: unterm.awk:1: BEGIN{x=".........................................................................................................................................................................................................................................................}
+gawk: unterm.awk:1: ^ unterminated string
+EXIT CODE: 1
diff --git a/test/whiny.awk b/test/whiny.awk
new file mode 100644
index 0000000..dc86694
--- /dev/null
+++ b/test/whiny.awk
@@ -0,0 +1,5 @@
+{ word[$0]++ }
+END {
+ for (i in word)
+ print i
+}
diff --git a/test/whiny.in b/test/whiny.in
new file mode 100644
index 0000000..6c8a2e3
--- /dev/null
+++ b/test/whiny.in
@@ -0,0 +1,178 @@
+gawk
+pattern
+scanning
+and
+processing
+language
+or
+style
+options
+file
+or
+style
+options
+file
+or
+style
+options
+file
+or
+style
+options
+file
+is
+the
+Project's
+implementation
+of
+the
+programming
+language.
+It
+conforms
+to
+the
+definition
+of
+the
+language
+in
+the
+Command
+Language
+And
+Utilities
+Standard.
+This
+version
+in
+turn
+is
+based
+on
+the
+description
+in
+by
+Aho,
+Kernighan,
+and
+Weinberger,
+with
+the
+additional
+features
+found
+in
+the
+System
+V
+Release
+version
+of
+also
+provides
+more
+recent
+Bell
+Laboratories
+extensions,
+and
+a
+number
+of
+extensions.
+is
+the
+profiling
+version
+of
+It
+is
+identical
+in
+every
+way
+to
+except
+that
+programs
+run
+more
+slowly,
+and
+it
+automatically
+produces
+an
+execution
+profile
+in
+the
+file
+when
+done.
+See
+the
+option,
+below.
+The
+command
+line
+consists
+of
+options
+to
+itself,
+the
+program
+text
+not
+supplied
+via
+the
+or
+options),
+and
+values
+to
+be
+made
+available
+in
+the
+and
+pre-defined
+variables.
+options
+may
+be
+either
+traditional
+one
+letter
+options,
+or
+style
+long
+options.
+options
+start
+with
+a
+single
+while
+long
+options
+start
+with
+Long
+options
+are
+provided
+for
+both
+features
+and
+for
+features.
diff --git a/test/whiny.ok b/test/whiny.ok
new file mode 100644
index 0000000..973aa5d
--- /dev/null
+++ b/test/whiny.ok
@@ -0,0 +1,108 @@
+Aho,
+And
+Bell
+Command
+It
+Kernighan,
+Laboratories
+Language
+Long
+Project's
+Release
+See
+Standard.
+System
+The
+This
+Utilities
+V
+Weinberger,
+a
+additional
+also
+an
+and
+are
+automatically
+available
+based
+be
+below.
+both
+by
+command
+conforms
+consists
+definition
+description
+done.
+either
+every
+except
+execution
+extensions,
+extensions.
+features
+features.
+file
+for
+found
+gawk
+identical
+implementation
+in
+is
+it
+itself,
+language
+language.
+letter
+line
+long
+made
+may
+more
+not
+number
+of
+on
+one
+option,
+options
+options),
+options,
+options.
+or
+pattern
+pre-defined
+processing
+produces
+profile
+profiling
+program
+programming
+programs
+provided
+provides
+recent
+run
+scanning
+single
+slowly,
+start
+style
+supplied
+text
+that
+the
+to
+traditional
+turn
+values
+variables.
+version
+via
+way
+when
+while
+with
diff --git a/test/wjposer1.awk b/test/wjposer1.awk
new file mode 100644
index 0000000..396089b
--- /dev/null
+++ b/test/wjposer1.awk
@@ -0,0 +1,75 @@
+# From arnold@f7.net Sun Sep 5 12:30:53 2004
+# Date: Fri, 3 Sep 2004 00:54:32 -0400 (EDT)
+# From: William J Poser <wjposer@ldc.upenn.edu>
+# To: arnold@skeeve.com
+# Subject: gawk bug
+# Message-ID: <20040903004347.W80049@lorax.ldc.upenn.edu>
+#
+# Here is a revised version of my previous message, modified to describe
+# the accompanying files.
+#
+# IhSplit.awk should replicate every record with exactly one entry in the
+# IH field, delete records lacking an IH field, and produce as many copies
+# of records with two or more entries in the IH field as there are entries.
+# In the latter case, the original IH field should be relabelled OIH and
+# a new IH field be added at the beginning of the record.
+#
+# This has worked properly for many years, since at least 1997. It worked properly with gawk 3.0.5
+# and possibly later versions. Unfortunately I didn't keep track of exactly what version it
+# broke on, but it was whatever came with Mandrake Linux 9.0. It continued to fail with version
+# 3.1.2. However, the problem was eliminated with version 3.1.3 and remains
+# eliminated in version 3.1.4.
+#
+# The problem was that an apparently random subset of records would loose some
+# or all of their fields. Running the script on the same input always produces
+# the same output with the same errors.
+#
+# The file Input is a subset of a real lexicon that produces errors using
+# gawk 3.1.2. GoodOutput is the expected output. BadOutput is the erroneous
+# output. A diff will show that there are actually two errors. One record
+# has fields stripped as described above. Another is omitted in its entirety.
+#
+#
+# Bill Poser, Linguistics, University of Pennsylvania
+# http://www.ling.upenn.edu/~wjposer/ billposer@alum.mit.edu
+# ----------------------------------------------------------------------------
+#For each record that contains multiple items in its inverse headword (IH)
+#field, generate a set of new records each containing exactly one item
+#in the inverse headword field, otherwise copies of the original.
+
+function CleanUp() #Clean up for next input record.
+{
+ for(i in rec) delete rec[i];
+}
+
+BEGIN {
+RS = "";
+FS = "\n?%"
+}
+{
+
+# First, create an associative array with the tags as indices.
+ for(i = 2; i <= NF; i++) { # The leading FS creates an initial empty field
+ split($i, f, ":");
+ rec[f[1]]=substr($i,index($i,":")+1);
+ }
+
+ if(!("IH" in rec)) next;
+
+# Parse out the inverse headwords
+
+ items = split(rec["IH"],ihs,"/");
+
+# Replace the old IH field.
+
+ sub(/%IH:/,"%OIH:",$0);
+
+# Generate a new copy of the record for each inverse headword
+
+ for(i = 1; i <= items; i++){
+ entries+=1;
+ printf("%%IH:%s\n",ihs[i]);
+ printf("%s\n\n",$0);
+ }
+ CleanUp();
+ }
diff --git a/test/wjposer1.in b/test/wjposer1.in
new file mode 100644
index 0000000..bdcd4a8
--- /dev/null
+++ b/test/wjposer1.in
@@ -0,0 +1,1527 @@
+%P:nut'i
+%G:exertion
+%IH:exertion
+%C:N
+%SF:abstractions-misc
+%S:JOPA/EDFR/VESE
+%ES:000088
+%UID:002463
+%MD:1999/03/15
+
+%P:ts'iyantsuk t'eooninzun
+%G:information
+%IH:information
+%C:N
+%SF:abstractions-misc
+%S:JOPA/BRBI
+%UID:000986
+%MD:1997/12/17
+
+%P:k'et'uk
+%G:interval
+%IH:interval
+%C:N
+%SF:abstractions-misc
+%S:MAGO
+%ES:001077
+%UID:000873
+%MD:1997/12/11
+
+%P:khunek
+%G:language, word, message
+%IH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%P:gal
+%G:running
+%IH:running
+%C:N
+%R:Dugal ndesda. He got hurt while running.
+%SF:abstractions-misc
+%S:JOPA
+%ES:000535
+%UID:002462
+%MD:1999/03/15
+
+%P:t'en
+%G:work
+%IH:work
+%C:N
+%SF:abstractions-misc
+%S:VESE/PEJO
+%ES:000672
+%UID:003028
+%POCKET:N
+%MD:2000/10/04
+
+%P:'ut'en
+%G:work
+%IH:work
+%C:N
+%SF:abstractions-misc
+%P1p:neye'ut'en
+%S:JOPA
+%ES:001041
+%UID:004264
+%POCKET:Y
+%MD:2001/03/15
+
+%P:dulkw'ah
+%G:Spotted Frog
+%IH:Spotted Frog/Frog, Spotted
+%SN:Rana pretiosa
+%MN:Lives in water and has red markings on the belly.
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps
+%CAPTION:{\qc Tsasdli} --- Spotted Frog
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}.
+%C:N
+%SF:amphibiansandreptiles
+%S:EDFR
+%UID:004111
+%POCKET:Y
+%MD:2001/03/07
+
+%P:chunlai
+%G:salamander, lizard
+%IH:lizard/salamander
+%MN:The only species of salamander found in the region is the
+ Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards
+ are found in the region. However, this term is applied to other
+ varieties of salamander and to lizards, such as the gekkos sold as
+ pets.
+%FGREF:Corkran \& Thoms (1996;39)
+%SN:Ambystoma macrodactylum
+%C:N
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI
+%UID:000157
+%MD:1998/05/16
+
+%P:tl'ughus
+%G:snake
+%IH:snake
+%C:N
+%MN:The only snake found in the region is the Common Garter Snake
+ {\it Thamnophis sirtalis\/}. However, the term is applied to all snakes.
+%SN:Thamnophis sirtalis
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000250
+%MD:1998/12/07
+
+%P:tsasdli
+%G:Western Toad
+%SN:Bufo boreas
+%IH:Western Toad/Toad, Western
+%MN:Lives on land.
+%SF:amphibiansandreptiles
+%C:N
+%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR
+%UID:000059
+%MD:2001/03/07
+
+%P:lhits'e
+%G:bitch, female dog
+%IH:bitch/dog, female
+%C:N
+%SF:animals-domestic
+%S:JOPA/EDFR/VESE
+%UID:002446
+%MD:1999/03/15
+
+%P:musdus
+%G:cow
+%IH:cow
+%C:N
+%P2s:nmusdus
+%ETYM:Loan from Cree {\qf mostos} ``buffalo''.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000036
+%MD:1997/06/12
+
+%P:lhi
+%G:dog
+%IH:dog
+%C:N
+%DUOPLURAL:lhike
+%SF:animals-domestic
+%POSS:lik
+%P1s:slik
+%P1p:nelik
+%DUOPLURAL:lhike
+%S:LITM/JOPA/BRBI/STJA/VESE/EDFR/JEKO
+%UID:000270
+%MD:2001/02/15
+
+%P:budzocho
+%G:donkey, mule
+%IH:donkey/mule
+%SF:animals-domestic
+%ETYM:``big ears''.
+%C:N
+%S:JOPA/BRBI
+%UID:000376
+%MD:1997/11/14
+
+%P:yeztli
+%G:horse
+%IH:horse
+%SF:animals-domestic
+%ETYM:A contraction of {\qc yezihlhi} ``elk dog''.
+%C:N
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000042
+%MD:2000/10/21
+
+%P:lhike
+%G:Irregular plural of {\qc lhi}, q.v.
+%IH:dogs
+%C:N
+%SF:animals-domestic
+%S:LITM/BRBI/JOPA/STJA
+%UID:000293
+%MD:1999/01/26
+
+%P:sbaiyaz
+%G:lamb
+%IH:lamb
+%C:N
+%SF:animals-domestic
+%S:LITM
+%UID:000254
+%MD:1997/06/16
+
+%P:gugoos
+%G:pig
+%IH:pig
+%C:N
+%ETYM:Ultimately borrowed from French {\qf coche}, probably via Cree.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI
+%UID:000133
+%MD:1997/06/16
+
+%P:'ut'az
+%G:bat
+%IH:bat
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000390
+%MD:1997/11/14
+
+%P:liyabdut'ai
+%G:bat
+%MN:The only kind of bat found in the region is the Little Brown Myotis.
+%IH:bat
+%SF:animals-land
+%SN:Myotis lucifugus
+%ETYM:Literally, ``devil bird'', a compound of {\qc liyab} ``devil'', a loan from
+ French {\qf le diable}, and {\qc dut'ai} ``bird''.
+%LOANSOURCE:French
+%C:N
+%S:JOPA/BRBI
+%UID:000215
+%MD:1997/06/16
+
+%P:sus
+%G:black bear
+%IH:black bear
+%C:N
+%SF:animals-land
+%SN:Ursus americanus
+%S:LITM/JOPA/BRBI/STJA/EDFR/VESE/JEKO
+%UID:000048
+%MD:1998/12/19
+
+%P:musduscho dughai
+%G:buffalo
+%IH:buffalo
+%SF:animals-land
+%C:N
+%ETYM:``big hairy cow''.
+%S:JOPA/EDFR
+%UID:003478
+%POCKET:Y
+%MD:2000/11/04
+
+%P:tl'ok'umusdus
+%G:buffalo
+%IH:buffalo
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000374
+%MD:2000/11/01
+
+%P:jenyo
+%G:bull moose
+%IH:bull moose/moose, bull
+%SF:animals-land
+%C:N
+%S:MAGO/JOPA/VESE/EDFR/JEKO
+%UID:000474
+%MD:1999/05/11
+
+%P:denyo
+%G:bull moose
+%IH:moose, bull
+%SF:animals-land
+%C:N
+%S:LITM/JOPA
+%UID:000348
+%MD:1997/06/18
+
+%P:tsiyeyaz
+%G:calf moose
+%IH:calf moose/moose, calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000380
+%MD:1997/11/14
+
+%P:duniyaz
+%G:calf moose
+%IH:calf moose/moose, calf
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000245
+%MD:1997/06/16
+
+%P:whudzih
+%G:caribou
+%IH:caribou
+%C:N
+%SF:animals-land
+%SN:Rangifer tarandus
+%S:JOPA/BRBI/MAGO/EDFR/VESE/JEKO
+%UID:000274
+%MD:1999/05/11
+
+%P:boos
+%G:cat
+%IH:cat
+%C:N
+%SN:Felis domesticus
+%ETYM:Loan from English {\qf puss}, possibly via Chinook Jargon.
+%LOANSOURCE:English
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000137
+%MD:1997/12/17
+
+%P:ts'uwhuljos
+%G:chipmunk
+%IH:chipmunk
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000146
+%MD:1997/06/16
+
+%P:booscho
+%G:cougar
+%IH:cougar
+%SF:animals-land
+%SN:Felis concolor
+%C:N
+%ETYM:Literally, ``big cat'', where {\qc boos} ``cat'' is a loan from English
+ {\qf puss}, possibly via Chinook Jargon.
+%S:JOPA/BRBI
+%UID:000050
+%MD:1997/11/14
+
+%P:duni'at
+%G:cow moose
+%IH:cow moose/moose, cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000377
+%MD:1997/11/14
+
+%P:tintulhi
+%G:coyote
+%IH:coyote
+%C:N
+%SF:animals-land
+%SN:Canis latrans
+%S:JOPA/BRBI
+%R:LITM has chuntulhi.
+%UID:000155
+%MD:1997/06/16
+
+%P:yests'e
+%G:deer
+%IH:deer
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/BRBI/EDFR
+%UID:000132
+%MD:1998/12/16
+
+%P:dets'it
+%G:dry cow moose
+%IH:dry cow moose/moose, dry cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000378
+%MD:1997/11/14
+
+%P:yezih
+%G:elk
+%IH:elk
+%SF:animals-land
+%C:N
+%R:STJA doesn't use this.
+%S:JOPA/BRBI
+%UID:000382
+%MD:1997/11/14
+
+%P:tsa'at
+%G:female beaver
+%IH:beaver, female
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:001295
+%MD:1998/12/08
+
+%P:chunihcho
+%G:fisher
+%IH:fisher
+%ETYM:``big marten''.
+%SF:animals-land
+%SN:Martes pennanti
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000385
+%MD:2000/06/18
+
+%P:ts'unalhbuz
+%G:flying squirrel
+%IH:flying squirrel
+%SF:animals-land
+%SN:Glaucomys sabrinus alpinus
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/FlyingSquirrel.ps
+%CAPTION:{\qc ts'unulhbuz} --- Flying Squirrel
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Flying Squirrel from {\it The Mammals of British Columbia\/}.
+%C:N
+%S:JOPA/BRBI
+%UID:000389
+%MD:1997/11/14
+
+%P:nanguz
+%G:fox
+%IH:fox
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:000139
+%MD:2001/02/26
+
+%P:shas
+%G:grizzly bear
+%IH:grizzly bear
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/VESE/EDFR/JEKO
+%UID:000039
+%MD:1997/06/12
+
+%P:shasyaz
+%G:grizzly bear cub
+%IH:grizzly bear cub/cub, grizzly bear
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:002114
+%MD:1999/02/20
+
+%P:shas'at
+%G:grizzly bear sow
+%IH:grizzly bear sow/sow, grizzly bear
+%C:N
+%SF:animals-land
+%ETYM:``grizzly bear's wife''.
+%S:STJA
+%UID:002113
+%MD:1999/02/20
+
+%P:-lik
+%G:irregular possessed stem of {\qc lhi}, q.v.
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:000564
+%MD:1997/12/11
+
+%P:wasi
+%G:lynx
+%IH:lynx
+%C:N
+%SF:animals-land
+%SN:Felis lynx
+%ETYM:Loan from Gitksan {\qf wish}.
+%LOANSOURCE:Gitksan
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%UID:000049
+%MD:2001/04/20
+
+%P:k'ani
+%G:woodchuck
+%IH:woodchuck
+%C:N
+%SF:animals-land
+%SN:Marmota monax
+%S:JOPA/BRBI/PEJO
+%R:Clarified with Josie and Peter 2001/05/28.
+%UID:000391
+%POCKET:Y
+%MD:2001/05/28
+
+%P:dutni
+%G:marmot
+%IH:marmot
+%SF:animals-land
+%C:N
+%SN:Marmota caligata
+%R:Josie and Peter are not really familiar with marmots but have heard older
+ people talk about them.
+%S:JOPA/PEJO
+%UID:000143
+%MD:1998/02/10
+
+%P:chunih
+%G:marten
+%IH:marten
+%SF:animals-land
+%SN:Martes americana
+%C:N
+%S:JOPA/BRBI/VESE/EDFR/JEKO/MAGO
+%UID:000016
+%MD:2001/04/20
+
+%P:telhjoos
+%G:mink
+%IH:mink
+%C:N
+%SF:animals-land
+%SN:Mustela vison
+%S:LITM/JOPA/BRBI
+%UID:000167
+%MD:1997/06/16
+
+%P:duni
+%G:moose
+%IH:moose
+%C:N
+%SF:animals-land
+%SN:Alces alces andersoni
+%S:LITM-EDFR/JOPA/BRBI
+%UID:000346
+%MD:1997/06/18
+
+%P:dats'ooz
+%G:mouse
+%IH:mouse
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/MAGO/VESE/JEKO
+%UID:000156
+%MD:2001/01/22
+
+%P:tsek'et
+%G:muskrat
+%IH:muskrat
+%C:N
+%SF:animals-land
+%SN:Ondatra zibethicus
+%S:JOPA/BRBI/STJA/MAGO
+%UID:000335
+%MD:1998/12/08
+
+%P:chanjo
+%G:newly sexually mature cow moose
+%IH:moose, newly sexually mature cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000379
+%MD:1997/11/14
+
+%P:looncho
+%G:pack rat
+%IH:pack rat
+%C:N
+%SF:animals-land
+%S:VESE/JEKO/MAGO
+%UID:000149
+%MD:1999/05/10
+
+%P:dlooncho
+%G:packrat
+%IH:packrat
+%C:N
+%SF:animals-land
+%S:JOPA
+%UID:002701
+%MD:1999/05/11
+
+%P:duneza
+%G:porcupine
+%IH:porcupine
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000388
+%MD:2001/03/06
+
+%P:ts'it
+%G:porcupine
+%IH:porcupine
+%SF:animals-land
+%SN:Erethizon dorsatum
+%C:N
+%ETYM:Perhaps derived from the interjection {\qc ts'it} ``don't touch it!''.
+%S:JOPA/BRBI/MAGO/BEMC/STJA
+%UID:000387
+%MD:1998/12/08
+
+%P:lhiyaz
+%G:puppy
+%IH:puppy
+%C:N
+%SF:animals-land
+%DUOPLURAL:lhiyazke
+%DUOPLURAL:lhikeyaz
+%R:Josie prefers {\qc lhikeyaz}.
+%S:LITM/BRBI/JOPA/EDFR/MAGO-JEKO
+%UID:000182
+%MD:2001/05/26
+
+%P:nats'ildelh
+%G:Red Squirrel
+%IH:squirrel/Red Squirrel
+%SN:Tamiasciurus hudsonicus colum.
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/STJA
+%UID:000034
+%MD:1999/02/17
+
+%P:goh
+%G:rabbit
+%IH:rabbit
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/VESE/EDFR/JEKO
+%UID:000023
+%MD:1999/05/11
+
+%P:ooch'ainischoot
+%G:recently weaned calf moose
+%IH:moose, recently weaned calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000381
+%MD:1997/11/14
+
+%P:sbai
+%G:sheep
+%IH:sheep
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:001131
+%MD:1998/02/10
+
+%P:'usbai
+%G:sheep
+%IH:sheep
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000375
+%MD:1997/11/14
+
+%P:'ulhguk
+%G:shrew
+%IH:shrew
+%SF:animals-land
+%C:N
+%S:MAGO/VESE/JEKO
+%UID:000526
+%MD:2001/01/22
+
+%P:hoonliz
+%G:skunk
+%IH:skunk
+%C:N
+%P2s:unhoonliz
+%SF:animals-land
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000052
+%MD:1997/06/12
+
+%P:nohbai
+%G:weasel
+%IH:weasel
+%C:N
+%SF:animals-land
+%S:JOPA/BRBI/MAGO
+%UID:000141
+%MD:1997/06/16
+
+%P:yus
+%G:wolf
+%IH:wolf
+%C:N
+%SF:animals-land
+%SN:Canis lupus
+%S:LITM/JOPA/BRBI
+%UID:000051
+%MD:1997/06/12
+
+%P:noostel
+%G:wolverine
+%IH:wolverine
+%C:N
+%SF:animals-land
+%SN:Gulo gulo
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000140
+%MD:2001/04/20
+
+%P:tsatsul
+%G:young beaver
+%IH:beaver, young
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/STJA
+%UID:000384
+%MD:1998/12/08
+
+%P:lht'at
+%G:beaver dam
+%IH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001287
+%MD:1998/12/08
+
+%P:'ulh
+%G:beaver dam
+%IH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001288
+%MD:1998/12/08
+
+%P:tsaken
+%G:beaver lodge
+%IH:beaver lodge
+%C:N
+%SF:animals-misc
+%S:JOPA/BRBI/STJA
+%UID:000405
+%MD:1998/12/08
+
+%P:tunyohtsati
+%G:beaver path under the ice
+%IH:beaver path under the ice
+%C:N
+%SF:animals-misc
+%S:JOPA/EDFR
+%UID:003769
+%POCKET:Y
+%MD:2001/02/13
+
+%P:sus'an
+%G:black bear den
+%IH:black bear den
+%C:N
+%SF:animals-misc
+%S:LITM/STJA
+%UID:000131
+%MD:1998/12/08
+
+%P:shask'oh
+%G:grizzly bear tracks
+%IH:tracks, grizzly bear
+%C:N
+%SF:animals-misc
+%S:MAGO
+%UID:001132
+%MD:1998/02/10
+
+%P:hoolht'ukw
+%G:leech
+%IH:leech
+%SF:animals-misc
+%C:N
+%S:JOPA/PEJO/EDFR
+%UID:003410
+%POCKET:Y
+%MD:2000/11/01
+
+%P:hoot'ub
+%G:leech
+%IH:leech
+%SF:bugs
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000370
+%MD:2000/11/01
+
+%P:dunik'oh
+%G:moose tracks
+%IH:moose tracks
+%C:N
+%SF:animals-misc
+%S:PEJO/JOPA
+%ES:000491
+%UID:003121
+%POCKET:Y
+%MD:2000/09/28
+
+%P:gohk'oh
+%G:rabbit tracks
+%IH:tracks, rabbit
+%C:N
+%SF:animals-misc
+%S:LITM
+%UID:000073
+%MD:1997/06/12
+
+%P:tsa
+%G:beaver
+%IH:beaver
+%C:N
+%SN:Castor canadensis
+%UID:000044
+%SF:animals-water
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%MD:2001/04/18
+
+%P:tsayaz
+%G:beaver kit
+%IH:kit, beaver/beaver, baby
+%SF:animals-water
+%C:N
+%S:STJA
+%UID:001294
+%MD:2000/06/18
+
+%P:tsati
+%G:big beaver, old beaver
+%IH:beaver, big/beaver, old
+%C:N
+%SF:animals-water
+%S:LITM/JOPA/BRBI/STJA
+%UID:000206
+%MD:1998/12/08
+
+%P:tsis
+%G:otter
+%IH:otter
+%SF:animals-water
+%SN:Lutra canadensis
+%C:N
+%S:JOPA/BRBI
+%UID:000386
+%MD:1997/11/14
+
+%P:datsan
+%G:American Crow
+%C:N
+%SF:bird-gen
+%SN:Corvus brachyrhynchos
+%IH:crow/American Crow
+%S:LITM/PEJO
+%UID:000158
+%MD:2000/10/21
+
+%P:sewh
+%G:American Robin
+%IH:Robin, American
+%SN:Turdus migratorius
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000181
+%MD:2000/10/21
+
+%P:tsebalyan
+%G:Bald Eagle
+%IH:Bald Eagle
+%C:N
+%SF:bird-gen
+%SN:Haliaeetus leucocephalus
+%S:LITM/JOPA/BRBI
+%UID:000150
+%MD:1997/06/16
+
+%P:dut'ai
+%G:bird, duck
+%IH:bird/duck
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO
+%UID:000081
+%MD:2000/09/28
+
+%P:delh
+%G:crane
+%IH:crane
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000255
+%MD:1997/06/16
+
+%P:khoh
+%G:goose
+%IH:goose
+%C:N
+%P1s:skhoh
+%P2s:nkhoh
+%P1p:nekhoh
+%POSS:khoh
+%SF:bird-gen
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000031
+%MD:2001/02/15
+
+%P:ts'unalhduz
+%G:hummingbird
+%IH:hummingbird
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA
+%UID:000242
+%MD:1997/06/16
+
+%P:gagiyaz
+%G:little bird
+%IH:bird, little
+%C:N
+%QCHECK:Any little bird?
+%SF:bird-gen
+%S:PEJO
+%UID:003115
+%POCKET:Y
+%MD:2000/09/28
+
+%P:dut'aiyaz
+%G:little bird
+%IH:bird, little
+%C:N
+%SF:bird-gen
+%S:STJA/JOPA/EDFR/VESE/PEJO
+%UID:001818
+%MD:2000/09/28
+
+%P:dadzi
+%G:loon
+%IH:loon
+%SF:bird-gen
+%SN:Gavia immer
+%C:N
+%S:LITM/JOPA/BRBI
+%UID:000020
+%MD:1997/06/12
+
+%P:t'ugicho
+%G:Mallard Duck
+%IH:Mallard Duck
+%C:N
+%SN:Anas platyrhynchos
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000041
+%MD:1999/05/11
+
+%P:musdzoon
+%G:owl
+%IH:owl
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA/MAGO
+%UID:000135
+%MD:1997/12/11
+
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%IH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%P:'utsut
+%G:Ruffed grouse
+%IH:Ruffed grouse
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000218
+%MD:1997/06/16
+
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%IH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%IH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%P:wedlew
+%G:sandpiper
+%IH:sandpiper
+%C:N
+%SN:Eremophila alpestris et sim.
+%SF:bird-gen
+%S:LITM
+%UID:000237
+%MD:2002/07/19
+
+%P:besk'i
+%G:seagull
+%IH:seagull
+%C:N
+%SN:Larus species
+%SF:bird-gen
+%S:LITM
+%UID:000136
+%MD:2002/07/19
+
+%P:ts'incho
+%G:swan
+%IH:swan
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000222
+%MD:1997/06/16
+
+%P:'uschas
+%G:Tree Swallow
+%IH:Tree Swallow
+%SF:bird-gen
+%SN:Tachycineta bicolor
+%C:N
+%S:MAGO
+%UID:000535
+%MD:1997/11/22
+
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%IH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%P:chundulkw'uz
+%G:woodpecker
+%IH:woodpecker
+%C:N
+%SF:bird-gen
+%S:JOPA/BRBI/STJA
+%UID:000138
+%MD:1999/03/31
+
+%P:-t'o
+%G:nest
+%IH:nest
+%C:N
+%Pind:'ut'o
+%P3s:but'o
+%Pref:dut'o
+%SF:bird-misc/bugs
+%S:STJA/PEJO/JOPA/BRBI/EDFR
+%ES:001353
+%UID:000226
+%MD:2001/03/07
+
+%P:-nak'uz
+%G:a single eye
+%IH:eye, a single
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000457
+%UID:003770
+%POCKET:Y
+%MD:2001/02/13
+
+%P:-kechunoh
+%G:ankle
+%IH:ankle
+%P1s:skechunoh
+%P2s:nkechunoh
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%UID:000865
+%MD:1999/03/03
+
+%P:-de
+%G:antler, horn
+%IH:antler/horn
+%C:N
+%SF:body-ext
+%P3s:bude
+%S:STJA
+%UID:002266
+%MD:1999/03/02
+
+%P:-de_zu_s
+%G:antler velvet
+%IH:velvet, antler
+%C:N
+%SF:body-ext
+%P3s:bude_zu_s
+%S:STJA
+%UID:002267
+%MD:1999/03/02
+
+%P:-tsul
+%G:anus, asshole
+%IH:anus/asshole
+%C:N
+%P1s:stsul
+%SF:body-ext
+%S:STJA
+%UID:002171
+%MD:1999/02/23
+
+%P:-gan
+%G:arm
+%IH:arm
+%P1s:sgan
+%P2s:ngan
+%Pref:dugan
+%C:N
+%S:LITM/MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%SF:body-ext
+%UID:000863
+%MD:1999/02/22
+
+%P:-chak'ests'oh
+%G:armpit
+%IH:armpit
+%P1s:schak'ests'oh
+%C:N
+%S:MAGO
+%UID:000859
+%SF:body-ext
+%MD:1997/12/11
+
+%P:-t'ak
+%G:back (of body)
+%IH:back (of body)
+%P1s:st'ak
+%P3s:but'ak
+%C:N
+%S:MAGO/EDFR/VESE/JEKO
+%SF:body-ext
+%UID:000899
+%MD:1997/12/11
+
+%P:-lat'ak
+%G:back of hand
+%IH:back of hand
+%P1s:slat'ak
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000871
+%MD:1997/12/11
+
+%P:tsake
+%G:beaver paws
+%IH:beaver paws
+%C:N
+%SF:body-ext
+%S:LITM-EDFR
+%UID:000329
+%MD:1997/06/18
+
+%P:tsache
+%G:beaver tail
+%IH:beaver tail
+%C:N
+%SF:body-ext
+%S:LITM
+%UID:000207
+%MD:1997/06/16
+
+%P:-but
+%G:belly
+%IH:belly
+%P1s:sbut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000937
+%MD:1997/12/11
+
+%P:-ts'oo
+%G:breast
+%IH:breast
+%P1s:sts'oo
+%C:N
+%S:MAGO
+%UID:000855
+%SF:body-ext
+%MD:1997/12/11
+
+%P:-tl'a
+%G:bum, buttocks
+%IH:bum/buttocks
+%P1s:stl'a
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000936
+%MD:1997/12/11
+
+%P:-kechunch'ooz
+%G:calf of leg
+%IH:calf of leg
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%UID:004458
+%POCKET:Y
+%MD:2001/04/20
+
+%P:-nembus
+%G:cheek
+%IH:cheek
+%P1s:snimbus
+%C:N
+%S:MAGO/JOPA/BRBI
+%SF:body-ext
+%UID:000889
+%MD:1997/12/11
+
+%P:-yoh
+%G:chest
+%IH:chest
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000660
+%UID:003777
+%POCKET:Y
+%MD:2001/02/13
+
+%P:-yeda'
+%G:chin
+%IH:chin
+%P1s:syeda'
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000882
+%MD:1997/12/11
+
+%P:-tsidakwhudutle
+%G:cranial fontanelle, baby's soft spot
+%IH:cranial fontanelle/baby's soft spot
+%C:N
+%P3s:butsidakwhudutle
+%S:MAGO
+%SF:body-ext
+%UID:000898
+%MD:1997/12/11
+
+%P:-dzo
+%G:ear
+%IH:ear
+%MN:This refers to the ear considered as a whole, especially the exterior.
+ When the canal in particular is referred to, one uses {\qc -dzek}, q.v.
+%C:N
+%P1s:sdzo
+%S:MAGO
+%SF:body-ext
+%UID:000879
+%MD:1997/12/11
+
+%P:-dzobal
+%G:earlobe
+%IH:earlobe
+%C:N
+%P1s:sdzobal
+%SF:body-ext
+%S:BRBI/MAGO
+%UID:000641
+%MD:1997/12/17
+
+%P:-nints'uzti
+%G:elbow
+%IH:elbow
+%P1s:snints'uzti
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000916
+%MD:1997/12/11
+
+%P:-na
+%G:eye
+%IH:eye
+%P1s:sna
+%P3s:buna
+%C:N
+%S:MAGO/JOPA/EDFR
+%SF:body-ext
+%UID:000891
+%MD:1998/12/18
+
+%P:-nak'et
+%G:eye socket
+%IH:eye socket
+%P1s:snak'et
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000892
+%MD:1997/12/11
+
+%P:-nach'usdooz
+%G:eyebrow
+%IH:eyebrow
+%P1s:snach'usdooz
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000896
+%MD:1997/12/11
+
+%P:-nalusgha
+%G:eyelash
+%IH:eyelash
+%P1s:snalusgha
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000895
+%MD:1997/12/11
+
+%P:-nalus
+%G:eyelid
+%IH:eyelid
+%P1s:snalus
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000894
+%MD:1997/12/11
+
+%P:-nen
+%G:face
+%IH:face
+%P1s:snen
+%P2s:nyunen
+%P3s:bunen
+%C:N
+%S:MAGO/PEJO/STJA/JOPA/VESE/EDFR
+%SF:body-ext
+%ES:000369
+%UID:000890
+%MD:2001/04/20
+
+%P:ts'uz
+%G:feather, down
+%IH:feather/down
+%C:N
+%SF:body-ext
+%S:LITM/STJA/PEJO
+%UID:000271
+%MD:2000/10/16
+
+%P:dut'aits'uz
+%G:feathers, down
+%IH:feathers/down
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002647
+%MD:2001/02/27
+
+%P:-lasge
+%G:finger other than thumb or pinkie
+%IH:finger other than thumb or pinkie
+%P1s:slasge
+%C:N
+%S:MAGO/STJA/JOPA/PEJO/EDFR
+%SF:body-ext
+%UID:000869
+%MD:2000/11/01
+
+%P:-lagui
+%G:fingernails, claws of forepaws
+%IH:fingernails/claws of forepaws
+%P1s:slagui
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000875
+%MD:1997/12/11
+
+%P:-ke
+%G:foot
+%IH:foot
+%C:N
+%P1s:ske
+%Pref:duke
+%S:MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%UID:000851
+%SF:body-ext
+%MD:1999/05/11
+
+%P:-gha
+%G:hair
+%MN:This refers to hair in general and where no more specific term exists, as on the
+ arms and chest. It is not used to refer to the hair of the head, for which the
+ more specific term {\qc -tsigha} is always used.
+%IH:hair
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000888
+%MD:1997/12/11
+
+%P:-tsigha
+%G:hair of the head
+%IH:hair of the head
+%P1s:stsigha
+%P2s:ntsigha
+%P3s:butsigha
+%C:N
+%S:MAGO/LITM/PEJO
+%SF:body-ext
+%UID:000887
+%MD:2000/10/20
+
+%P:-la
+%G:hand
+%IH:hand
+%P1s:sla
+%P2s:nla
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%POCKET:Y
+%UID:000866
+%MD:1999/02/17
+
+%P:-tsi
+%G:head
+%IH:head
+%Pref:dutsi
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002965
+%POCKET:Y
+%MD:1999/06/24
+
+%P:-kelatsul
+%G:heel
+%IH:heel
+%P1s:skelatsul
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000917
+%MD:1997/12/11
+
+%P:-k'ui
+%G:hip
+%IH:hip
+%P1s:sk'ui
+%C:N
+%S:MAGO/JOPA
+%SF:body-ext
+%UID:000923
+%MD:2001/03/15
+
+%P:-gwut
+%G:knee
+%IH:knee
+%P1s:sgwut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000933
+%MD:1997/12/11
+
+%P:-gwutlasi'ai
+%G:kneecap
+%IH:kneecap
+%P1s:sgwutlasi'ai
+%R:has something to do with floating at tip of knee
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000925
+%MD:1997/12/11
+
+%P:-langwut
+%G:knuckles at boundary between hand and fingers
+%IH:knuckles at boundary between hand and fingers
+%P1s:slangwut
+%SF:body-ext
+%C:N
+%S:JOPA/BRBI
+%UID:000967
+%MD:1997/12/17
+
+%P:-kechun
+%G:leg
+%IH:leg
+%P1s:skechun
+%C:N
+%S:MAGO
+%UID:000852
+%SF:body-ext
+%MD:1997/12/11
diff --git a/test/wjposer1.ok b/test/wjposer1.ok
new file mode 100644
index 0000000..16cde6a
--- /dev/null
+++ b/test/wjposer1.ok
@@ -0,0 +1,2068 @@
+%IH:exertion
+%P:nut'i
+%G:exertion
+%OIH:exertion
+%C:N
+%SF:abstractions-misc
+%S:JOPA/EDFR/VESE
+%ES:000088
+%UID:002463
+%MD:1999/03/15
+
+%IH:information
+%P:ts'iyantsuk t'eooninzun
+%G:information
+%OIH:information
+%C:N
+%SF:abstractions-misc
+%S:JOPA/BRBI
+%UID:000986
+%MD:1997/12/17
+
+%IH:interval
+%P:k'et'uk
+%G:interval
+%OIH:interval
+%C:N
+%SF:abstractions-misc
+%S:MAGO
+%ES:001077
+%UID:000873
+%MD:1997/12/11
+
+%IH:language
+%P:khunek
+%G:language, word, message
+%OIH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%IH:word
+%P:khunek
+%G:language, word, message
+%OIH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%IH:message
+%P:khunek
+%G:language, word, message
+%OIH:language/word/message
+%POSS:ghunek
+%P1p:neghunek
+%C:N
+%SF:abstractions-misc
+%S:MAGO/BRBI/JOPA/EDFR/VESE/JEKO
+%UID:000928
+%MD:2001/02/10
+
+%IH:running
+%P:gal
+%G:running
+%OIH:running
+%C:N
+%R:Dugal ndesda. He got hurt while running.
+%SF:abstractions-misc
+%S:JOPA
+%ES:000535
+%UID:002462
+%MD:1999/03/15
+
+%IH:work
+%P:t'en
+%G:work
+%OIH:work
+%C:N
+%SF:abstractions-misc
+%S:VESE/PEJO
+%ES:000672
+%UID:003028
+%POCKET:N
+%MD:2000/10/04
+
+%IH:work
+%P:'ut'en
+%G:work
+%OIH:work
+%C:N
+%SF:abstractions-misc
+%P1p:neye'ut'en
+%S:JOPA
+%ES:001041
+%UID:004264
+%POCKET:Y
+%MD:2001/03/15
+
+%IH:Spotted Frog
+%P:dulkw'ah
+%G:Spotted Frog
+%OIH:Spotted Frog/Frog, Spotted
+%SN:Rana pretiosa
+%MN:Lives in water and has red markings on the belly.
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps
+%CAPTION:{\qc Tsasdli} --- Spotted Frog
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}.
+%C:N
+%SF:amphibiansandreptiles
+%S:EDFR
+%UID:004111
+%POCKET:Y
+%MD:2001/03/07
+
+%IH:Frog, Spotted
+%P:dulkw'ah
+%G:Spotted Frog
+%OIH:Spotted Frog/Frog, Spotted
+%SN:Rana pretiosa
+%MN:Lives in water and has red markings on the belly.
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/SpottedFrog.ps
+%CAPTION:{\qc Tsasdli} --- Spotted Frog
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Spotted Frog from {\it The Amphibians of British Columbia\/}.
+%C:N
+%SF:amphibiansandreptiles
+%S:EDFR
+%UID:004111
+%POCKET:Y
+%MD:2001/03/07
+
+%IH:lizard
+%P:chunlai
+%G:salamander, lizard
+%OIH:lizard/salamander
+%MN:The only species of salamander found in the region is the
+ Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards
+ are found in the region. However, this term is applied to other
+ varieties of salamander and to lizards, such as the gekkos sold as
+ pets.
+%FGREF:Corkran \& Thoms (1996;39)
+%SN:Ambystoma macrodactylum
+%C:N
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI
+%UID:000157
+%MD:1998/05/16
+
+%IH:salamander
+%P:chunlai
+%G:salamander, lizard
+%OIH:lizard/salamander
+%MN:The only species of salamander found in the region is the
+ Long-toed Salamander {\it Ambystoma macrodactylum\/}. No lizards
+ are found in the region. However, this term is applied to other
+ varieties of salamander and to lizards, such as the gekkos sold as
+ pets.
+%FGREF:Corkran \& Thoms (1996;39)
+%SN:Ambystoma macrodactylum
+%C:N
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI
+%UID:000157
+%MD:1998/05/16
+
+%IH:snake
+%P:tl'ughus
+%G:snake
+%OIH:snake
+%C:N
+%MN:The only snake found in the region is the Common Garter Snake
+ {\it Thamnophis sirtalis\/}. However, the term is applied to all snakes.
+%SN:Thamnophis sirtalis
+%SF:amphibiansandreptiles
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000250
+%MD:1998/12/07
+
+%IH:Western Toad
+%P:tsasdli
+%G:Western Toad
+%SN:Bufo boreas
+%OIH:Western Toad/Toad, Western
+%MN:Lives on land.
+%SF:amphibiansandreptiles
+%C:N
+%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR
+%UID:000059
+%MD:2001/03/07
+
+%IH:Toad, Western
+%P:tsasdli
+%G:Western Toad
+%SN:Bufo boreas
+%OIH:Western Toad/Toad, Western
+%MN:Lives on land.
+%SF:amphibiansandreptiles
+%C:N
+%S:LITM/JOPA/BRBI/MAGO/STJA/EDFR
+%UID:000059
+%MD:2001/03/07
+
+%IH:bitch
+%P:lhits'e
+%G:bitch, female dog
+%OIH:bitch/dog, female
+%C:N
+%SF:animals-domestic
+%S:JOPA/EDFR/VESE
+%UID:002446
+%MD:1999/03/15
+
+%IH:dog, female
+%P:lhits'e
+%G:bitch, female dog
+%OIH:bitch/dog, female
+%C:N
+%SF:animals-domestic
+%S:JOPA/EDFR/VESE
+%UID:002446
+%MD:1999/03/15
+
+%IH:cow
+%P:musdus
+%G:cow
+%OIH:cow
+%C:N
+%P2s:nmusdus
+%ETYM:Loan from Cree {\qf mostos} ``buffalo''.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000036
+%MD:1997/06/12
+
+%IH:dog
+%P:lhi
+%G:dog
+%OIH:dog
+%C:N
+%DUOPLURAL:lhike
+%SF:animals-domestic
+%POSS:lik
+%P1s:slik
+%P1p:nelik
+%DUOPLURAL:lhike
+%S:LITM/JOPA/BRBI/STJA/VESE/EDFR/JEKO
+%UID:000270
+%MD:2001/02/15
+
+%IH:donkey
+%P:budzocho
+%G:donkey, mule
+%OIH:donkey/mule
+%SF:animals-domestic
+%ETYM:``big ears''.
+%C:N
+%S:JOPA/BRBI
+%UID:000376
+%MD:1997/11/14
+
+%IH:mule
+%P:budzocho
+%G:donkey, mule
+%OIH:donkey/mule
+%SF:animals-domestic
+%ETYM:``big ears''.
+%C:N
+%S:JOPA/BRBI
+%UID:000376
+%MD:1997/11/14
+
+%IH:horse
+%P:yeztli
+%G:horse
+%OIH:horse
+%SF:animals-domestic
+%ETYM:A contraction of {\qc yezihlhi} ``elk dog''.
+%C:N
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000042
+%MD:2000/10/21
+
+%IH:dogs
+%P:lhike
+%G:Irregular plural of {\qc lhi}, q.v.
+%OIH:dogs
+%C:N
+%SF:animals-domestic
+%S:LITM/BRBI/JOPA/STJA
+%UID:000293
+%MD:1999/01/26
+
+%IH:lamb
+%P:sbaiyaz
+%G:lamb
+%OIH:lamb
+%C:N
+%SF:animals-domestic
+%S:LITM
+%UID:000254
+%MD:1997/06/16
+
+%IH:pig
+%P:gugoos
+%G:pig
+%OIH:pig
+%C:N
+%ETYM:Ultimately borrowed from French {\qf coche}, probably via Cree.
+%LOANSOURCE:Cree
+%SF:animals-domestic
+%S:LITM/JOPA/BRBI
+%UID:000133
+%MD:1997/06/16
+
+%IH:bat
+%P:'ut'az
+%G:bat
+%OIH:bat
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000390
+%MD:1997/11/14
+
+%IH:bat
+%P:liyabdut'ai
+%G:bat
+%MN:The only kind of bat found in the region is the Little Brown Myotis.
+%OIH:bat
+%SF:animals-land
+%SN:Myotis lucifugus
+%ETYM:Literally, ``devil bird'', a compound of {\qc liyab} ``devil'', a loan from
+ French {\qf le diable}, and {\qc dut'ai} ``bird''.
+%LOANSOURCE:French
+%C:N
+%S:JOPA/BRBI
+%UID:000215
+%MD:1997/06/16
+
+%IH:black bear
+%P:sus
+%G:black bear
+%OIH:black bear
+%C:N
+%SF:animals-land
+%SN:Ursus americanus
+%S:LITM/JOPA/BRBI/STJA/EDFR/VESE/JEKO
+%UID:000048
+%MD:1998/12/19
+
+%IH:buffalo
+%P:musduscho dughai
+%G:buffalo
+%OIH:buffalo
+%SF:animals-land
+%C:N
+%ETYM:``big hairy cow''.
+%S:JOPA/EDFR
+%UID:003478
+%POCKET:Y
+%MD:2000/11/04
+
+%IH:buffalo
+%P:tl'ok'umusdus
+%G:buffalo
+%OIH:buffalo
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000374
+%MD:2000/11/01
+
+%IH:bull moose
+%P:jenyo
+%G:bull moose
+%OIH:bull moose/moose, bull
+%SF:animals-land
+%C:N
+%S:MAGO/JOPA/VESE/EDFR/JEKO
+%UID:000474
+%MD:1999/05/11
+
+%IH:moose, bull
+%P:jenyo
+%G:bull moose
+%OIH:bull moose/moose, bull
+%SF:animals-land
+%C:N
+%S:MAGO/JOPA/VESE/EDFR/JEKO
+%UID:000474
+%MD:1999/05/11
+
+%IH:moose, bull
+%P:denyo
+%G:bull moose
+%OIH:moose, bull
+%SF:animals-land
+%C:N
+%S:LITM/JOPA
+%UID:000348
+%MD:1997/06/18
+
+%IH:calf moose
+%P:tsiyeyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000380
+%MD:1997/11/14
+
+%IH:moose, calf
+%P:tsiyeyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000380
+%MD:1997/11/14
+
+%IH:calf moose
+%P:duniyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000245
+%MD:1997/06/16
+
+%IH:moose, calf
+%P:duniyaz
+%G:calf moose
+%OIH:calf moose/moose, calf
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000245
+%MD:1997/06/16
+
+%IH:caribou
+%P:whudzih
+%G:caribou
+%OIH:caribou
+%C:N
+%SF:animals-land
+%SN:Rangifer tarandus
+%S:JOPA/BRBI/MAGO/EDFR/VESE/JEKO
+%UID:000274
+%MD:1999/05/11
+
+%IH:cat
+%P:boos
+%G:cat
+%OIH:cat
+%C:N
+%SN:Felis domesticus
+%ETYM:Loan from English {\qf puss}, possibly via Chinook Jargon.
+%LOANSOURCE:English
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000137
+%MD:1997/12/17
+
+%IH:chipmunk
+%P:ts'uwhuljos
+%G:chipmunk
+%OIH:chipmunk
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI
+%UID:000146
+%MD:1997/06/16
+
+%IH:cougar
+%P:booscho
+%G:cougar
+%OIH:cougar
+%SF:animals-land
+%SN:Felis concolor
+%C:N
+%ETYM:Literally, ``big cat'', where {\qc boos} ``cat'' is a loan from English
+ {\qf puss}, possibly via Chinook Jargon.
+%S:JOPA/BRBI
+%UID:000050
+%MD:1997/11/14
+
+%IH:cow moose
+%P:duni'at
+%G:cow moose
+%OIH:cow moose/moose, cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000377
+%MD:1997/11/14
+
+%IH:moose, cow
+%P:duni'at
+%G:cow moose
+%OIH:cow moose/moose, cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000377
+%MD:1997/11/14
+
+%IH:coyote
+%P:tintulhi
+%G:coyote
+%OIH:coyote
+%C:N
+%SF:animals-land
+%SN:Canis latrans
+%S:JOPA/BRBI
+%R:LITM has chuntulhi.
+%UID:000155
+%MD:1997/06/16
+
+%IH:deer
+%P:yests'e
+%G:deer
+%OIH:deer
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/BRBI/EDFR
+%UID:000132
+%MD:1998/12/16
+
+%IH:dry cow moose
+%P:dets'it
+%G:dry cow moose
+%OIH:dry cow moose/moose, dry cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000378
+%MD:1997/11/14
+
+%IH:moose, dry cow
+%P:dets'it
+%G:dry cow moose
+%OIH:dry cow moose/moose, dry cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000378
+%MD:1997/11/14
+
+%IH:elk
+%P:yezih
+%G:elk
+%OIH:elk
+%SF:animals-land
+%C:N
+%R:STJA doesn't use this.
+%S:JOPA/BRBI
+%UID:000382
+%MD:1997/11/14
+
+%IH:beaver, female
+%P:tsa'at
+%G:female beaver
+%OIH:beaver, female
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:001295
+%MD:1998/12/08
+
+%IH:fisher
+%P:chunihcho
+%G:fisher
+%OIH:fisher
+%ETYM:``big marten''.
+%SF:animals-land
+%SN:Martes pennanti
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000385
+%MD:2000/06/18
+
+%IH:flying squirrel
+%P:ts'unalhbuz
+%G:flying squirrel
+%OIH:flying squirrel
+%SF:animals-land
+%SN:Glaucomys sabrinus alpinus
+%PICTURE:/home/poser/Research/Dakelh/Pictures/psfiles/FlyingSquirrel.ps
+%CAPTION:{\qc ts'unulhbuz} --- Flying Squirrel
+%PICPERMISSION:N
+%PICCREDIT:Drawing of Flying Squirrel from {\it The Mammals of British Columbia\/}.
+%C:N
+%S:JOPA/BRBI
+%UID:000389
+%MD:1997/11/14
+
+%IH:fox
+%P:nanguz
+%G:fox
+%OIH:fox
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:000139
+%MD:2001/02/26
+
+%IH:grizzly bear
+%P:shas
+%G:grizzly bear
+%OIH:grizzly bear
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/VESE/EDFR/JEKO
+%UID:000039
+%MD:1997/06/12
+
+%IH:grizzly bear cub
+%P:shasyaz
+%G:grizzly bear cub
+%OIH:grizzly bear cub/cub, grizzly bear
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:002114
+%MD:1999/02/20
+
+%IH:cub, grizzly bear
+%P:shasyaz
+%G:grizzly bear cub
+%OIH:grizzly bear cub/cub, grizzly bear
+%C:N
+%SF:animals-land
+%S:STJA
+%UID:002114
+%MD:1999/02/20
+
+%IH:grizzly bear sow
+%P:shas'at
+%G:grizzly bear sow
+%OIH:grizzly bear sow/sow, grizzly bear
+%C:N
+%SF:animals-land
+%ETYM:``grizzly bear's wife''.
+%S:STJA
+%UID:002113
+%MD:1999/02/20
+
+%IH:sow, grizzly bear
+%P:shas'at
+%G:grizzly bear sow
+%OIH:grizzly bear sow/sow, grizzly bear
+%C:N
+%SF:animals-land
+%ETYM:``grizzly bear's wife''.
+%S:STJA
+%UID:002113
+%MD:1999/02/20
+
+%IH:lynx
+%P:wasi
+%G:lynx
+%OIH:lynx
+%C:N
+%SF:animals-land
+%SN:Felis lynx
+%ETYM:Loan from Gitksan {\qf wish}.
+%LOANSOURCE:Gitksan
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%UID:000049
+%MD:2001/04/20
+
+%IH:woodchuck
+%P:k'ani
+%G:woodchuck
+%OIH:woodchuck
+%C:N
+%SF:animals-land
+%SN:Marmota monax
+%S:JOPA/BRBI/PEJO
+%R:Clarified with Josie and Peter 2001/05/28.
+%UID:000391
+%POCKET:Y
+%MD:2001/05/28
+
+%IH:marmot
+%P:dutni
+%G:marmot
+%OIH:marmot
+%SF:animals-land
+%C:N
+%SN:Marmota caligata
+%R:Josie and Peter are not really familiar with marmots but have heard older
+ people talk about them.
+%S:JOPA/PEJO
+%UID:000143
+%MD:1998/02/10
+
+%IH:marten
+%P:chunih
+%G:marten
+%OIH:marten
+%SF:animals-land
+%SN:Martes americana
+%C:N
+%S:JOPA/BRBI/VESE/EDFR/JEKO/MAGO
+%UID:000016
+%MD:2001/04/20
+
+%IH:mink
+%P:telhjoos
+%G:mink
+%OIH:mink
+%C:N
+%SF:animals-land
+%SN:Mustela vison
+%S:LITM/JOPA/BRBI
+%UID:000167
+%MD:1997/06/16
+
+%IH:moose
+%P:duni
+%G:moose
+%OIH:moose
+%C:N
+%SF:animals-land
+%SN:Alces alces andersoni
+%S:LITM-EDFR/JOPA/BRBI
+%UID:000346
+%MD:1997/06/18
+
+%IH:mouse
+%P:dats'ooz
+%G:mouse
+%OIH:mouse
+%SF:animals-land
+%C:N
+%S:LITM/JOPA/MAGO/VESE/JEKO
+%UID:000156
+%MD:2001/01/22
+
+%IH:muskrat
+%P:tsek'et
+%G:muskrat
+%OIH:muskrat
+%C:N
+%SF:animals-land
+%SN:Ondatra zibethicus
+%S:JOPA/BRBI/STJA/MAGO
+%UID:000335
+%MD:1998/12/08
+
+%IH:moose, newly sexually mature cow
+%P:chanjo
+%G:newly sexually mature cow moose
+%OIH:moose, newly sexually mature cow
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000379
+%MD:1997/11/14
+
+%IH:pack rat
+%P:looncho
+%G:pack rat
+%OIH:pack rat
+%C:N
+%SF:animals-land
+%S:VESE/JEKO/MAGO
+%UID:000149
+%MD:1999/05/10
+
+%IH:packrat
+%P:dlooncho
+%G:packrat
+%OIH:packrat
+%C:N
+%SF:animals-land
+%S:JOPA
+%UID:002701
+%MD:1999/05/11
+
+%IH:porcupine
+%P:duneza
+%G:porcupine
+%OIH:porcupine
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000388
+%MD:2001/03/06
+
+%IH:porcupine
+%P:ts'it
+%G:porcupine
+%OIH:porcupine
+%SF:animals-land
+%SN:Erethizon dorsatum
+%C:N
+%ETYM:Perhaps derived from the interjection {\qc ts'it} ``don't touch it!''.
+%S:JOPA/BRBI/MAGO/BEMC/STJA
+%UID:000387
+%MD:1998/12/08
+
+%IH:puppy
+%P:lhiyaz
+%G:puppy
+%OIH:puppy
+%C:N
+%SF:animals-land
+%DUOPLURAL:lhiyazke
+%DUOPLURAL:lhikeyaz
+%R:Josie prefers {\qc lhikeyaz}.
+%S:LITM/BRBI/JOPA/EDFR/MAGO-JEKO
+%UID:000182
+%MD:2001/05/26
+
+%IH:squirrel
+%P:nats'ildelh
+%G:Red Squirrel
+%OIH:squirrel/Red Squirrel
+%SN:Tamiasciurus hudsonicus colum.
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/STJA
+%UID:000034
+%MD:1999/02/17
+
+%IH:Red Squirrel
+%P:nats'ildelh
+%G:Red Squirrel
+%OIH:squirrel/Red Squirrel
+%SN:Tamiasciurus hudsonicus colum.
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/BRBI/STJA
+%UID:000034
+%MD:1999/02/17
+
+%IH:rabbit
+%P:goh
+%G:rabbit
+%OIH:rabbit
+%C:N
+%SF:animals-land
+%S:LITM/JOPA/VESE/EDFR/JEKO
+%UID:000023
+%MD:1999/05/11
+
+%IH:moose, recently weaned calf
+%P:ooch'ainischoot
+%G:recently weaned calf moose
+%OIH:moose, recently weaned calf
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000381
+%MD:1997/11/14
+
+%IH:sheep
+%P:sbai
+%G:sheep
+%OIH:sheep
+%C:N
+%SF:animals-land
+%S:MAGO
+%UID:001131
+%MD:1998/02/10
+
+%IH:sheep
+%P:'usbai
+%G:sheep
+%OIH:sheep
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI
+%UID:000375
+%MD:1997/11/14
+
+%IH:shrew
+%P:'ulhguk
+%G:shrew
+%OIH:shrew
+%SF:animals-land
+%C:N
+%S:MAGO/VESE/JEKO
+%UID:000526
+%MD:2001/01/22
+
+%IH:skunk
+%P:hoonliz
+%G:skunk
+%OIH:skunk
+%C:N
+%P2s:unhoonliz
+%SF:animals-land
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000052
+%MD:1997/06/12
+
+%IH:weasel
+%P:nohbai
+%G:weasel
+%OIH:weasel
+%C:N
+%SF:animals-land
+%S:JOPA/BRBI/MAGO
+%UID:000141
+%MD:1997/06/16
+
+%IH:wolf
+%P:yus
+%G:wolf
+%OIH:wolf
+%C:N
+%SF:animals-land
+%SN:Canis lupus
+%S:LITM/JOPA/BRBI
+%UID:000051
+%MD:1997/06/12
+
+%IH:wolverine
+%P:noostel
+%G:wolverine
+%OIH:wolverine
+%C:N
+%SF:animals-land
+%SN:Gulo gulo
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000140
+%MD:2001/04/20
+
+%IH:beaver, young
+%P:tsatsul
+%G:young beaver
+%OIH:beaver, young
+%SF:animals-land
+%C:N
+%S:JOPA/BRBI/STJA
+%UID:000384
+%MD:1998/12/08
+
+%IH:beaver dam
+%P:lht'at
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001287
+%MD:1998/12/08
+
+%IH:dam, beaver
+%P:lht'at
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001287
+%MD:1998/12/08
+
+%IH:beaver dam
+%P:'ulh
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001288
+%MD:1998/12/08
+
+%IH:dam, beaver
+%P:'ulh
+%G:beaver dam
+%OIH:beaver dam/dam, beaver
+%C:N
+%SF:animals-misc
+%S:STJA
+%UID:001288
+%MD:1998/12/08
+
+%IH:beaver lodge
+%P:tsaken
+%G:beaver lodge
+%OIH:beaver lodge
+%C:N
+%SF:animals-misc
+%S:JOPA/BRBI/STJA
+%UID:000405
+%MD:1998/12/08
+
+%IH:beaver path under the ice
+%P:tunyohtsati
+%G:beaver path under the ice
+%OIH:beaver path under the ice
+%C:N
+%SF:animals-misc
+%S:JOPA/EDFR
+%UID:003769
+%POCKET:Y
+%MD:2001/02/13
+
+%IH:black bear den
+%P:sus'an
+%G:black bear den
+%OIH:black bear den
+%C:N
+%SF:animals-misc
+%S:LITM/STJA
+%UID:000131
+%MD:1998/12/08
+
+%IH:tracks, grizzly bear
+%P:shask'oh
+%G:grizzly bear tracks
+%OIH:tracks, grizzly bear
+%C:N
+%SF:animals-misc
+%S:MAGO
+%UID:001132
+%MD:1998/02/10
+
+%IH:leech
+%P:hoolht'ukw
+%G:leech
+%OIH:leech
+%SF:animals-misc
+%C:N
+%S:JOPA/PEJO/EDFR
+%UID:003410
+%POCKET:Y
+%MD:2000/11/01
+
+%IH:leech
+%P:hoot'ub
+%G:leech
+%OIH:leech
+%SF:bugs
+%C:N
+%S:JOPA/BRBI/MAGO
+%UID:000370
+%MD:2000/11/01
+
+%IH:moose tracks
+%P:dunik'oh
+%G:moose tracks
+%OIH:moose tracks
+%C:N
+%SF:animals-misc
+%S:PEJO/JOPA
+%ES:000491
+%UID:003121
+%POCKET:Y
+%MD:2000/09/28
+
+%IH:tracks, rabbit
+%P:gohk'oh
+%G:rabbit tracks
+%OIH:tracks, rabbit
+%C:N
+%SF:animals-misc
+%S:LITM
+%UID:000073
+%MD:1997/06/12
+
+%IH:beaver
+%P:tsa
+%G:beaver
+%OIH:beaver
+%C:N
+%SN:Castor canadensis
+%UID:000044
+%SF:animals-water
+%S:JOPA/BRBI/STJA/EDFR/VESE/JEKO/MAGO
+%MD:2001/04/18
+
+%IH:kit, beaver
+%P:tsayaz
+%G:beaver kit
+%OIH:kit, beaver/beaver, baby
+%SF:animals-water
+%C:N
+%S:STJA
+%UID:001294
+%MD:2000/06/18
+
+%IH:beaver, baby
+%P:tsayaz
+%G:beaver kit
+%OIH:kit, beaver/beaver, baby
+%SF:animals-water
+%C:N
+%S:STJA
+%UID:001294
+%MD:2000/06/18
+
+%IH:beaver, big
+%P:tsati
+%G:big beaver, old beaver
+%OIH:beaver, big/beaver, old
+%C:N
+%SF:animals-water
+%S:LITM/JOPA/BRBI/STJA
+%UID:000206
+%MD:1998/12/08
+
+%IH:beaver, old
+%P:tsati
+%G:big beaver, old beaver
+%OIH:beaver, big/beaver, old
+%C:N
+%SF:animals-water
+%S:LITM/JOPA/BRBI/STJA
+%UID:000206
+%MD:1998/12/08
+
+%IH:otter
+%P:tsis
+%G:otter
+%OIH:otter
+%SF:animals-water
+%SN:Lutra canadensis
+%C:N
+%S:JOPA/BRBI
+%UID:000386
+%MD:1997/11/14
+
+%IH:crow
+%P:datsan
+%G:American Crow
+%C:N
+%SF:bird-gen
+%SN:Corvus brachyrhynchos
+%OIH:crow/American Crow
+%S:LITM/PEJO
+%UID:000158
+%MD:2000/10/21
+
+%IH:American Crow
+%P:datsan
+%G:American Crow
+%C:N
+%SF:bird-gen
+%SN:Corvus brachyrhynchos
+%OIH:crow/American Crow
+%S:LITM/PEJO
+%UID:000158
+%MD:2000/10/21
+
+%IH:Robin, American
+%P:sewh
+%G:American Robin
+%OIH:Robin, American
+%SN:Turdus migratorius
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/PEJO
+%UID:000181
+%MD:2000/10/21
+
+%IH:Bald Eagle
+%P:tsebalyan
+%G:Bald Eagle
+%OIH:Bald Eagle
+%C:N
+%SF:bird-gen
+%SN:Haliaeetus leucocephalus
+%S:LITM/JOPA/BRBI
+%UID:000150
+%MD:1997/06/16
+
+%IH:bird
+%P:dut'ai
+%G:bird, duck
+%OIH:bird/duck
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO
+%UID:000081
+%MD:2000/09/28
+
+%IH:duck
+%P:dut'ai
+%G:bird, duck
+%OIH:bird/duck
+%C:N
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/STJA/PEJO
+%UID:000081
+%MD:2000/09/28
+
+%IH:crane
+%P:delh
+%G:crane
+%OIH:crane
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000255
+%MD:1997/06/16
+
+%IH:goose
+%P:khoh
+%G:goose
+%OIH:goose
+%C:N
+%P1s:skhoh
+%P2s:nkhoh
+%P1p:nekhoh
+%POSS:khoh
+%SF:bird-gen
+%S:JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000031
+%MD:2001/02/15
+
+%IH:hummingbird
+%P:ts'unalhduz
+%G:hummingbird
+%OIH:hummingbird
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA
+%UID:000242
+%MD:1997/06/16
+
+%IH:bird, little
+%P:gagiyaz
+%G:little bird
+%OIH:bird, little
+%C:N
+%QCHECK:Any little bird?
+%SF:bird-gen
+%S:PEJO
+%UID:003115
+%POCKET:Y
+%MD:2000/09/28
+
+%IH:bird, little
+%P:dut'aiyaz
+%G:little bird
+%OIH:bird, little
+%C:N
+%SF:bird-gen
+%S:STJA/JOPA/EDFR/VESE/PEJO
+%UID:001818
+%MD:2000/09/28
+
+%IH:loon
+%P:dadzi
+%G:loon
+%OIH:loon
+%SF:bird-gen
+%SN:Gavia immer
+%C:N
+%S:LITM/JOPA/BRBI
+%UID:000020
+%MD:1997/06/12
+
+%IH:Mallard Duck
+%P:t'ugicho
+%G:Mallard Duck
+%OIH:Mallard Duck
+%C:N
+%SN:Anas platyrhynchos
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO/VESE/EDFR/JEKO
+%UID:000041
+%MD:1999/05/11
+
+%IH:owl
+%P:musdzoon
+%G:owl
+%OIH:owl
+%C:N
+%SF:bird-gen
+%S:LITM/BRBI/JOPA/MAGO
+%UID:000135
+%MD:1997/12/11
+
+%IH:Red-Necked Grebe
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%IH:Helldiver
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%IH:Grebe, Red-Necked
+%P:ts'olh
+%G:Red-necked Grebe
+%MN:A variety of duck locally known as the Helldiver.
+%OIH:Red-Necked Grebe/Helldiver/Grebe, Red-Necked
+%SN:Podiceps grisegena
+%SF:bird-gen
+%C:N
+%S:BRBI/JOPA
+%UID:000263
+%MD:2001/03/08
+
+%IH:Ruffed grouse
+%P:'utsut
+%G:Ruffed grouse
+%OIH:Ruffed grouse
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000218
+%MD:1997/06/16
+
+%IH:Spruce Grouse
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%IH:Grouse, Spruce
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%IH:Fool Hen
+%P:nat'oh
+%G:Spruce Grouse, Fool Hen
+%OIH:Spruce Grouse/Grouse, Spruce/Fool Hen
+%SF:bird-gen
+%SN:Dendragapus canadensis
+%C:N
+%S:MAGO/LITM
+%UID:000539
+%MD:1997/12/04
+
+%IH:Steller's Jay
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%IH:jay, Steller's
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%IH:Bluejay (Steller's Jay)
+%P:tehgwuzeh
+%G:Steller's Jay, commonly known locally as ``bluejay''.
+%OIH:Steller's Jay/jay, Steller's/Bluejay (Steller's Jay)
+%SF:bird-gen
+%SN:Cyanocitta stelleri
+%C:N
+%S:JOPA/BRBI
+%UID:000356
+%MD:1997/11/14
+
+%IH:sandpiper
+%P:wedlew
+%G:sandpiper
+%OIH:sandpiper
+%C:N
+%SN:Eremophila alpestris et sim.
+%SF:bird-gen
+%S:LITM
+%UID:000237
+%MD:2002/07/19
+
+%IH:seagull
+%P:besk'i
+%G:seagull
+%OIH:seagull
+%C:N
+%SN:Larus species
+%SF:bird-gen
+%S:LITM
+%UID:000136
+%MD:2002/07/19
+
+%IH:swan
+%P:ts'incho
+%G:swan
+%OIH:swan
+%C:N
+%SF:bird-gen
+%S:LITM
+%UID:000222
+%MD:1997/06/16
+
+%IH:Tree Swallow
+%P:'uschas
+%G:Tree Swallow
+%OIH:Tree Swallow
+%SF:bird-gen
+%SN:Tachycineta bicolor
+%C:N
+%S:MAGO
+%UID:000535
+%MD:1997/11/22
+
+%IH:Whiskey Jack
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%IH:Jay, Gray
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%IH:Jay, Canadian
+%P:gwuzeh
+%G:Whiskey Jack, Gray Jay, Canadian Jay
+%OIH:Whiskey Jack/Jay, Gray/Jay, Canadian
+%C:N
+%SN:Perisoreus canadensis
+%SF:bird-gen
+%S:LITM/JOPA/BRBI/MAGO
+%UID:000148
+%MD:1997/11/22
+
+%IH:woodpecker
+%P:chundulkw'uz
+%G:woodpecker
+%OIH:woodpecker
+%C:N
+%SF:bird-gen
+%S:JOPA/BRBI/STJA
+%UID:000138
+%MD:1999/03/31
+
+%IH:nest
+%P:-t'o
+%G:nest
+%OIH:nest
+%C:N
+%Pind:'ut'o
+%P3s:but'o
+%Pref:dut'o
+%SF:bird-misc/bugs
+%S:STJA/PEJO/JOPA/BRBI/EDFR
+%ES:001353
+%UID:000226
+%MD:2001/03/07
+
+%IH:eye, a single
+%P:-nak'uz
+%G:a single eye
+%OIH:eye, a single
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000457
+%UID:003770
+%POCKET:Y
+%MD:2001/02/13
+
+%IH:ankle
+%P:-kechunoh
+%G:ankle
+%OIH:ankle
+%P1s:skechunoh
+%P2s:nkechunoh
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%UID:000865
+%MD:1999/03/03
+
+%IH:antler
+%P:-de
+%G:antler, horn
+%OIH:antler/horn
+%C:N
+%SF:body-ext
+%P3s:bude
+%S:STJA
+%UID:002266
+%MD:1999/03/02
+
+%IH:horn
+%P:-de
+%G:antler, horn
+%OIH:antler/horn
+%C:N
+%SF:body-ext
+%P3s:bude
+%S:STJA
+%UID:002266
+%MD:1999/03/02
+
+%IH:velvet, antler
+%P:-de_zu_s
+%G:antler velvet
+%OIH:velvet, antler
+%C:N
+%SF:body-ext
+%P3s:bude_zu_s
+%S:STJA
+%UID:002267
+%MD:1999/03/02
+
+%IH:anus
+%P:-tsul
+%G:anus, asshole
+%OIH:anus/asshole
+%C:N
+%P1s:stsul
+%SF:body-ext
+%S:STJA
+%UID:002171
+%MD:1999/02/23
+
+%IH:asshole
+%P:-tsul
+%G:anus, asshole
+%OIH:anus/asshole
+%C:N
+%P1s:stsul
+%SF:body-ext
+%S:STJA
+%UID:002171
+%MD:1999/02/23
+
+%IH:arm
+%P:-gan
+%G:arm
+%OIH:arm
+%P1s:sgan
+%P2s:ngan
+%Pref:dugan
+%C:N
+%S:LITM/MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%SF:body-ext
+%UID:000863
+%MD:1999/02/22
+
+%IH:armpit
+%P:-chak'ests'oh
+%G:armpit
+%OIH:armpit
+%P1s:schak'ests'oh
+%C:N
+%S:MAGO
+%UID:000859
+%SF:body-ext
+%MD:1997/12/11
+
+%IH:back (of body)
+%P:-t'ak
+%G:back (of body)
+%OIH:back (of body)
+%P1s:st'ak
+%P3s:but'ak
+%C:N
+%S:MAGO/EDFR/VESE/JEKO
+%SF:body-ext
+%UID:000899
+%MD:1997/12/11
+
+%IH:back of hand
+%P:-lat'ak
+%G:back of hand
+%OIH:back of hand
+%P1s:slat'ak
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000871
+%MD:1997/12/11
+
+%IH:beaver paws
+%P:tsake
+%G:beaver paws
+%OIH:beaver paws
+%C:N
+%SF:body-ext
+%S:LITM-EDFR
+%UID:000329
+%MD:1997/06/18
+
+%IH:beaver tail
+%P:tsache
+%G:beaver tail
+%OIH:beaver tail
+%C:N
+%SF:body-ext
+%S:LITM
+%UID:000207
+%MD:1997/06/16
+
+%IH:belly
+%P:-but
+%G:belly
+%OIH:belly
+%P1s:sbut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000937
+%MD:1997/12/11
+
+%IH:breast
+%P:-ts'oo
+%G:breast
+%OIH:breast
+%P1s:sts'oo
+%C:N
+%S:MAGO
+%UID:000855
+%SF:body-ext
+%MD:1997/12/11
+
+%IH:bum
+%P:-tl'a
+%G:bum, buttocks
+%OIH:bum/buttocks
+%P1s:stl'a
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000936
+%MD:1997/12/11
+
+%IH:buttocks
+%P:-tl'a
+%G:bum, buttocks
+%OIH:bum/buttocks
+%P1s:stl'a
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000936
+%MD:1997/12/11
+
+%IH:calf of leg
+%P:-kechunch'ooz
+%G:calf of leg
+%OIH:calf of leg
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%UID:004458
+%POCKET:Y
+%MD:2001/04/20
+
+%IH:cheek
+%P:-nembus
+%G:cheek
+%OIH:cheek
+%P1s:snimbus
+%C:N
+%S:MAGO/JOPA/BRBI
+%SF:body-ext
+%UID:000889
+%MD:1997/12/11
+
+%IH:chest
+%P:-yoh
+%G:chest
+%OIH:chest
+%C:N
+%SF:body-ext
+%S:JOPA/EDFR
+%ES:000660
+%UID:003777
+%POCKET:Y
+%MD:2001/02/13
+
+%IH:chin
+%P:-yeda'
+%G:chin
+%OIH:chin
+%P1s:syeda'
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000882
+%MD:1997/12/11
+
+%IH:cranial fontanelle
+%P:-tsidakwhudutle
+%G:cranial fontanelle, baby's soft spot
+%OIH:cranial fontanelle/baby's soft spot
+%C:N
+%P3s:butsidakwhudutle
+%S:MAGO
+%SF:body-ext
+%UID:000898
+%MD:1997/12/11
+
+%IH:baby's soft spot
+%P:-tsidakwhudutle
+%G:cranial fontanelle, baby's soft spot
+%OIH:cranial fontanelle/baby's soft spot
+%C:N
+%P3s:butsidakwhudutle
+%S:MAGO
+%SF:body-ext
+%UID:000898
+%MD:1997/12/11
+
+%IH:ear
+%P:-dzo
+%G:ear
+%OIH:ear
+%MN:This refers to the ear considered as a whole, especially the exterior.
+ When the canal in particular is referred to, one uses {\qc -dzek}, q.v.
+%C:N
+%P1s:sdzo
+%S:MAGO
+%SF:body-ext
+%UID:000879
+%MD:1997/12/11
+
+%IH:earlobe
+%P:-dzobal
+%G:earlobe
+%OIH:earlobe
+%C:N
+%P1s:sdzobal
+%SF:body-ext
+%S:BRBI/MAGO
+%UID:000641
+%MD:1997/12/17
+
+%IH:elbow
+%P:-nints'uzti
+%G:elbow
+%OIH:elbow
+%P1s:snints'uzti
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000916
+%MD:1997/12/11
+
+%IH:eye
+%P:-na
+%G:eye
+%OIH:eye
+%P1s:sna
+%P3s:buna
+%C:N
+%S:MAGO/JOPA/EDFR
+%SF:body-ext
+%UID:000891
+%MD:1998/12/18
+
+%IH:eye socket
+%P:-nak'et
+%G:eye socket
+%OIH:eye socket
+%P1s:snak'et
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000892
+%MD:1997/12/11
+
+%IH:eyebrow
+%P:-nach'usdooz
+%G:eyebrow
+%OIH:eyebrow
+%P1s:snach'usdooz
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000896
+%MD:1997/12/11
+
+%IH:eyelash
+%P:-nalusgha
+%G:eyelash
+%OIH:eyelash
+%P1s:snalusgha
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000895
+%MD:1997/12/11
+
+%IH:eyelid
+%P:-nalus
+%G:eyelid
+%OIH:eyelid
+%P1s:snalus
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000894
+%MD:1997/12/11
+
+%IH:face
+%P:-nen
+%G:face
+%OIH:face
+%P1s:snen
+%P2s:nyunen
+%P3s:bunen
+%C:N
+%S:MAGO/PEJO/STJA/JOPA/VESE/EDFR
+%SF:body-ext
+%ES:000369
+%UID:000890
+%MD:2001/04/20
+
+%IH:feather
+%P:ts'uz
+%G:feather, down
+%OIH:feather/down
+%C:N
+%SF:body-ext
+%S:LITM/STJA/PEJO
+%UID:000271
+%MD:2000/10/16
+
+%IH:down
+%P:ts'uz
+%G:feather, down
+%OIH:feather/down
+%C:N
+%SF:body-ext
+%S:LITM/STJA/PEJO
+%UID:000271
+%MD:2000/10/16
+
+%IH:feathers
+%P:dut'aits'uz
+%G:feathers, down
+%OIH:feathers/down
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002647
+%MD:2001/02/27
+
+%IH:down
+%P:dut'aits'uz
+%G:feathers, down
+%OIH:feathers/down
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002647
+%MD:2001/02/27
+
+%IH:finger other than thumb or pinkie
+%P:-lasge
+%G:finger other than thumb or pinkie
+%OIH:finger other than thumb or pinkie
+%P1s:slasge
+%C:N
+%S:MAGO/STJA/JOPA/PEJO/EDFR
+%SF:body-ext
+%UID:000869
+%MD:2000/11/01
+
+%IH:fingernails
+%P:-lagui
+%G:fingernails, claws of forepaws
+%OIH:fingernails/claws of forepaws
+%P1s:slagui
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000875
+%MD:1997/12/11
+
+%IH:claws of forepaws
+%P:-lagui
+%G:fingernails, claws of forepaws
+%OIH:fingernails/claws of forepaws
+%P1s:slagui
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000875
+%MD:1997/12/11
+
+%IH:foot
+%P:-ke
+%G:foot
+%OIH:foot
+%C:N
+%P1s:ske
+%Pref:duke
+%S:MAGO/STJA/JOPA/VESE/EDFR/JEKO
+%UID:000851
+%SF:body-ext
+%MD:1999/05/11
+
+%IH:hair
+%P:-gha
+%G:hair
+%MN:This refers to hair in general and where no more specific term exists, as on the
+ arms and chest. It is not used to refer to the hair of the head, for which the
+ more specific term {\qc -tsigha} is always used.
+%OIH:hair
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000888
+%MD:1997/12/11
+
+%IH:hair of the head
+%P:-tsigha
+%G:hair of the head
+%OIH:hair of the head
+%P1s:stsigha
+%P2s:ntsigha
+%P3s:butsigha
+%C:N
+%S:MAGO/LITM/PEJO
+%SF:body-ext
+%UID:000887
+%MD:2000/10/20
+
+%IH:hand
+%P:-la
+%G:hand
+%OIH:hand
+%P1s:sla
+%P2s:nla
+%C:N
+%S:MAGO/STJA
+%SF:body-ext
+%POCKET:Y
+%UID:000866
+%MD:1999/02/17
+
+%IH:head
+%P:-tsi
+%G:head
+%OIH:head
+%Pref:dutsi
+%C:N
+%SF:body-ext
+%S:STJA
+%UID:002965
+%POCKET:Y
+%MD:1999/06/24
+
+%IH:heel
+%P:-kelatsul
+%G:heel
+%OIH:heel
+%P1s:skelatsul
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000917
+%MD:1997/12/11
+
+%IH:hip
+%P:-k'ui
+%G:hip
+%OIH:hip
+%P1s:sk'ui
+%C:N
+%S:MAGO/JOPA
+%SF:body-ext
+%UID:000923
+%MD:2001/03/15
+
+%IH:knee
+%P:-gwut
+%G:knee
+%OIH:knee
+%P1s:sgwut
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000933
+%MD:1997/12/11
+
+%IH:kneecap
+%P:-gwutlasi'ai
+%G:kneecap
+%OIH:kneecap
+%P1s:sgwutlasi'ai
+%R:has something to do with floating at tip of knee
+%C:N
+%S:MAGO
+%SF:body-ext
+%UID:000925
+%MD:1997/12/11
+
+%IH:knuckles at boundary between hand and fingers
+%P:-langwut
+%G:knuckles at boundary between hand and fingers
+%OIH:knuckles at boundary between hand and fingers
+%P1s:slangwut
+%SF:body-ext
+%C:N
+%S:JOPA/BRBI
+%UID:000967
+%MD:1997/12/17
+
+%IH:leg
+%P:-kechun
+%G:leg
+%OIH:leg
+%P1s:skechun
+%C:N
+%S:MAGO
+%UID:000852
+%SF:body-ext
+%MD:1997/12/11
+
diff --git a/test/zeroe0.awk b/test/zeroe0.awk
new file mode 100644
index 0000000..5dc9c6b
--- /dev/null
+++ b/test/zeroe0.awk
@@ -0,0 +1,40 @@
+# From sbohdjal@matrox.com Tue Dec 31 11:41:25 2002
+# Return-Path: <sbohdjal@matrox.com>
+# X-From_: sbohdjal@matrox.com Mon Dec 30 17:34:41 2002
+# Message-Id: <4.3.1.1.20021230101824.00fc4bd8@mailbox.matrox.com>
+# Date: Mon, 30 Dec 2002 10:33:10 -0500
+# To: bug-gawk@gnu.org
+# From: Serge Bohdjalian <sbohdjal@matrox.com>
+# Subject: GAWK 3.1.1 bug, DJGPP port
+#
+# When I run the following AWK file...
+#
+BEGIN {
+ $0 = "00E0";
+ print $0 ", " ($0 && 1) ", " ($0 != "");
+ $1 = "00E0";
+ print $1 ", " ($1 && 1) ", " ($1 != "");
+}
+#
+# With the SimTel version of GAWK 3.1.1 for Windows (downloadable from
+# ftp://ftp.cdrom.com/pub/simtelnet/gnu/djgpp/v2gnu/), I get the following
+# output...
+#
+# 00E0, 0, 1
+# 00E0, 1, 1
+#
+# With the Cygwin version of GAWK 3.1.1 for Windows, I get...
+#
+# 00E0, 1, 1
+# 00E0, 1, 1
+#
+# As far as I know, if "$0" isn't blank, the value of "($0 && 1)" should be
+# "1" (true). I get the same problem if I substitute "00E0" with "00E1" to
+# "00E9". Other strings don't have have this problem (for example, "00EA").
+# The problem occurs whether I use file input or whether I manually assign
+# "$0" (as above).
+#
+# The problem is also discussed in a comp.lang.awk posting ("Bug in GAWK
+# 3.1.1?", Dec. 27, 2002).
+#
+# -Serge
diff --git a/test/zeroe0.ok b/test/zeroe0.ok
new file mode 100644
index 0000000..cdf28fb
--- /dev/null
+++ b/test/zeroe0.ok
@@ -0,0 +1,2 @@
+00E0, 1, 1
+00E0, 1, 1
diff --git a/test/zeroflag.awk b/test/zeroflag.awk
new file mode 100644
index 0000000..526ed0e
--- /dev/null
+++ b/test/zeroflag.awk
@@ -0,0 +1 @@
+BEGIN { printf("%2.1d---%02.1d\n", 2, 2) }
diff --git a/test/zeroflag.ok b/test/zeroflag.ok
new file mode 100644
index 0000000..937c0ed
--- /dev/null
+++ b/test/zeroflag.ok
@@ -0,0 +1 @@
+ 2--- 2