Fixed some buglets in the tests
authorJohn Darrington <john@darrington.wattle.id.au>
Sat, 20 Dec 2003 03:14:26 +0000 (03:14 +0000)
committerJohn Darrington <john@darrington.wattle.id.au>
Sat, 20 Dec 2003 03:14:26 +0000 (03:14 +0000)
config/devices
tests/command/aggregate.sh
tests/command/descriptives.sh
tests/command/file-label.sh
tests/command/list.sh
tests/command/print.sh
tests/command/sample.sh
tests/command/sys-info.sh
tests/command/tabs.sh
tests/command/weight.sh

index bc28ed608616a9b216ce73a24049c287e1c0a217..47c953e9c63280b96148d917987a709129380131 100644 (file)
@@ -58,7 +58,7 @@ tty-ascii:ascii:screen:char-set=ascii output-file=${tty-output-file} \
   ${no-attributes}
 list-ascii:ascii:listing:length=66 width=79 char-set=ascii \
   output-file=${list-output-file} ${no-attributes}
-raw-ascii:ascii:screen:length=9999 char-set=ascii \
+raw-ascii:ascii:screen:width=9999 length=9999 char-set=ascii \
   output-file=${list-output-file} ${no-attributes} headers=off paginate=off
 
 # ASCII devices that support bold & underline via backspacing.
index 597217f83e751af01f899ae95264a79017f255b6..90c1351f090763fcfd7d9030d781328e4ef7cfc3 100755 (executable)
@@ -72,8 +72,6 @@ activity="run program"
 $here/../src/pspp    -o raw-ascii $TEMPDIR/test.sps  
 if [ $? -ne 0 ] ; then no_result ; fi
 
-cat pspp.list > /tmp/foo
-
 activity="test result"
 diff  -b -w -B $TEMPDIR/pspp.list - << EOF
 X        Z      FOO
index b19c9ce2791b8b625e5c47e187e4c48ab940db70..20dfeeac7dd3d60c29daf922596a3fdbc6deec62 100755 (executable)
@@ -73,7 +73,6 @@ activity="run program"
 $here/../src/pspp -o raw-ascii $TEMPDIR/descript.stat
 if [ $? -ne 0 ] ; then no_result ; fi
 
-
 activity="compare output"
 diff -B -b $TEMPDIR/pspp.list - <<EOF
 1.1 DATA LIST.  Reading 1 record from the command file.
@@ -99,53 +98,30 @@ diff -B -b $TEMPDIR/pspp.list - <<EOF
 |V16     |     1| 17- 17|F1.0  |
 +--------+------+-------+------+
 
-2.1(1) DESCRIPTIVES.  Valid cases = 10; cases with missing value(s) = 0.
-+--------#-------+---------+-----+--------+-------+--------+--------+--------+
-|Variable#Valid N|Missing N| Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|
-#========#=======#=========#=====#========#=======#========#========#========#
-|V0      #     10|        0|3.800|    .841|  2.658|   7.067|   -.035|   1.334|
-|V1      #     10|        0|4.600|    .957|  3.026|   9.156|  -1.386|   1.334|
-|V2      #     10|        0|4.100|   1.159|  3.665|  13.433|  -2.019|   1.334|
-|V3      #     10|        0|4.100|    .875|  2.767|   7.656|  -2.049|   1.334|
-|V4      #     10|        0|7.000|    .471|  1.491|   2.222|   7.152|   1.334|
-|V5      #     10|        0|4.900|   1.027|  3.247|  10.544|  -1.401|   1.334|
-|V6      #     10|        0|5.900|    .795|  2.514|   6.322|   -.290|   1.334|
-|V7      #     10|        0|4.700|   1.096|  3.466|  12.011|  -1.993|   1.334|
-|V8      #     10|        0|4.100|   1.100|  3.479|  12.100|  -1.928|   1.334|
-|V9      #     10|        0|4.300|    .870|  2.751|   7.567|   -.875|   1.334|
-|V10     #     10|        0|5.500|    .847|  2.677|   7.167|  -1.842|   1.334|
-|V11     #     10|        0|6.500|    .778|  2.461|   6.056|  -1.276|   1.334|
-|V12     #     10|        0|7.900|    .605|  1.912|   3.656|   5.241|   1.334|
-|V13     #     10|        0|4.300|    .989|  3.129|   9.789|  -1.248|   1.334|
-|V14     #     10|        0|3.600|   1.013|  3.204|  10.267|   -.961|   1.334|
-|V15     #     10|        0|3.700|    .920|  2.908|   8.456|  -1.352|   1.334|
-|V16     #     10|        0|6.400|    .909|  2.875|   8.267|  -1.142|   1.334|
-+--------#-------+---------+-----+--------+-------+--------+--------+--------+
-
-2.1(2) DESCRIPTIVES.  Valid cases = 10; cases with missing value(s) = 0.
-+--------#--------+--------+-----+-------+-------+------+
-|Variable#Skewness|S E Skew|Range|Minimum|Maximum|  Sum |
-#========#========#========#=====#=======#=======#======#
-|V0      #    .889|    .687|8.000|  1.000|  9.000|38.000|
-|V1      #   -.032|    .687|9.000|   .000|  9.000|46.000|
-|V2      #    .476|    .687|8.000|  1.000|  9.000|41.000|
-|V3      #    .422|    .687|7.000|  1.000|  8.000|41.000|
-|V4      #  -2.516|    .687|5.000|  3.000|  8.000|70.000|
-|V5      #   -.205|    .687|9.000|   .000|  9.000|49.000|
-|V6      #   -.960|    .687|7.000|  1.000|  8.000|59.000|
-|V7      #   -.165|    .687|9.000|   .000|  9.000|47.000|
-|V8      #    .371|    .687|9.000|   .000|  9.000|41.000|
-|V9      #    .730|    .687|8.000|  1.000|  9.000|43.000|
-|V10     #   -.326|    .687|7.000|  2.000|  9.000|55.000|
-|V11     #   -.895|    .687|6.000|  3.000|  9.000|65.000|
-|V12     #  -2.208|    .687|6.000|  3.000|  9.000|79.000|
-|V13     #    .333|    .687|9.000|   .000|  9.000|43.000|
-|V14     #    .809|    .687|9.000|   .000|  9.000|36.000|
-|V15     #    .710|    .687|7.000|  1.000|  8.000|37.000|
-|V16     #   -.923|    .687|7.000|  2.000|  9.000|64.000|
-+--------#--------+--------+-----+-------+-------+------+
+2.1 DESCRIPTIVES.  Valid cases = 10; cases with missing value(s) = 0.
++--------#-------+---------+-----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+------+
+|Variable#Valid N|Missing N| Mean|S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew|Range|Minimum|Maximum|  Sum |
+#========#=======#=========#=====#========#=======#========#========#========#========#========#=====#=======#=======#======#
+|V0      #     10|        0|3.800|    .841|  2.658|   7.067|   -.035|   1.334|    .889|    .687|8.000|  1.000|  9.000|38.000|
+|V1      #     10|        0|4.600|    .957|  3.026|   9.156|  -1.386|   1.334|   -.032|    .687|9.000|   .000|  9.000|46.000|
+|V2      #     10|        0|4.100|   1.159|  3.665|  13.433|  -2.019|   1.334|    .476|    .687|8.000|  1.000|  9.000|41.000|
+|V3      #     10|        0|4.100|    .875|  2.767|   7.656|  -2.049|   1.334|    .422|    .687|7.000|  1.000|  8.000|41.000|
+|V4      #     10|        0|7.000|    .471|  1.491|   2.222|   7.152|   1.334|  -2.516|    .687|5.000|  3.000|  8.000|70.000|
+|V5      #     10|        0|4.900|   1.027|  3.247|  10.544|  -1.401|   1.334|   -.205|    .687|9.000|   .000|  9.000|49.000|
+|V6      #     10|        0|5.900|    .795|  2.514|   6.322|   -.290|   1.334|   -.960|    .687|7.000|  1.000|  8.000|59.000|
+|V7      #     10|        0|4.700|   1.096|  3.466|  12.011|  -1.993|   1.334|   -.165|    .687|9.000|   .000|  9.000|47.000|
+|V8      #     10|        0|4.100|   1.100|  3.479|  12.100|  -1.928|   1.334|    .371|    .687|9.000|   .000|  9.000|41.000|
+|V9      #     10|        0|4.300|    .870|  2.751|   7.567|   -.875|   1.334|    .730|    .687|8.000|  1.000|  9.000|43.000|
+|V10     #     10|        0|5.500|    .847|  2.677|   7.167|  -1.842|   1.334|   -.326|    .687|7.000|  2.000|  9.000|55.000|
+|V11     #     10|        0|6.500|    .778|  2.461|   6.056|  -1.276|   1.334|   -.895|    .687|6.000|  3.000|  9.000|65.000|
+|V12     #     10|        0|7.900|    .605|  1.912|   3.656|   5.241|   1.334|  -2.208|    .687|6.000|  3.000|  9.000|79.000|
+|V13     #     10|        0|4.300|    .989|  3.129|   9.789|  -1.248|   1.334|    .333|    .687|9.000|   .000|  9.000|43.000|
+|V14     #     10|        0|3.600|   1.013|  3.204|  10.267|   -.961|   1.334|    .809|    .687|9.000|   .000|  9.000|36.000|
+|V15     #     10|        0|3.700|    .920|  2.908|   8.456|  -1.352|   1.334|    .710|    .687|7.000|  1.000|  8.000|37.000|
+|V16     #     10|        0|6.400|    .909|  2.875|   8.267|  -1.142|   1.334|   -.923|    .687|7.000|  2.000|  9.000|64.000|
++--------#-------+---------+-----+--------+-------+--------+--------+--------+--------+--------+-----+-------+-------+------+
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
 
-pass
\ No newline at end of file
+pass
index eb77926602c2e971f2f71e54d796f3f40d962860..f69e79d28a8f6ebd021573ccfa7a90d151e83411 100755 (executable)
@@ -112,6 +112,7 @@ activity="date filter"
 grep -v 'Document entered' $TEMPDIR/pspp.list > $TEMPDIR/pspp.filtered
 if [ $? -ne 0 ] ; then no_result ; fi
 
+
 activity="compare results"
 diff -b -B $TEMPDIR/pspp.filtered - <<EOF
 1.1 DATA LIST.  Reading 1 record from the command file.
@@ -125,7 +126,7 @@ diff -b -B $TEMPDIR/pspp.filtered - <<EOF
 Documents in the active file:
 
    First line of a document
-   This is the second very long line of a document in an attempt to overflow 
+   This is the second very long line of a document in an attempt to overflow the
    Note that the last line should end with a period: .
 
 File label:
@@ -134,7 +135,7 @@ This is a test file label
 Documents in the active file:
 
    First line of a document
-   This is the second very long line of a document in an attempt to overflow 
+   This is the second very long line of a document in an attempt to overflow the
    Note that the last line should end with a period: .
 
 File label:
@@ -143,7 +144,7 @@ This is a test file label
 Documents in the active file:
 
    First line of a document
-   This is the second very long line of a document in an attempt to overflow 
+   This is the second very long line of a document in an attempt to overflow the
    Note that the last line should end with a period: .
  
    There should be another document now.
@@ -151,7 +152,7 @@ Documents in the active file:
 Documents in the active file:
 
    First line of a document
-   This is the second very long line of a document in an attempt to overflow 
+   This is the second very long line of a document in an attempt to overflow the
    Note that the last line should end with a period: .
  
    There should be another document now.
index 8b96af218e1b022673b0c856d31406bb559466bd..292ff65c9a31389ea50a77a993ca4f2bf03b567c 100755 (executable)
@@ -207,150 +207,9874 @@ Case#  AVAR  BVAR
 Testing use of LIST in multi-line cases.
 ----------------------------------------------------------------------
 
-X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X X
-0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1 1 2 2 2 2 2 2 2 2 2 2 3
-0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0
-- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
-7 6 7 5 3 2 4 6 6 3 4 8 5 1 3 7 8 9 0 7 3 4 8 3 1 0 6 4 0 9 1 
-8 8 8 6 9 3 0 8 9 4 2 4 1 7 7 5 4 2 3 7 8 3 3 4 1 8 6 7 6 0 3 
-4 9 2 6 1 1 5 0 7 9 0 9 1 8 7 1 5 2 7 2 6 4 2 7 8 5 2 2 4 2 4 
-8 1 9 8 4 8 8 9 2 0 2 3 1 9 5 8 7 5 8 7 9 3 3 2 0 0 1 4 9 1 7 
-4 5 2 7 7 7 8 9 8 7 0 9 5 6 3 7 2 9 8 4 5 5 4 1 5 1 6 6 5 0 6 
-2 3 9 9 6 1 9 6 7 0 7 7 7 3 2 7 6 0 6 6 3 5 2 5 1 1 5 0 7 3 5 
-1 6 6 7 7 9 9 6 9 1 2 6 6 4 7 6 9 9 4 4 0 4 7 4 3 9 8 9 2 3 7 
-1 6 2 3 9 1 4 6 8 4 1 9 6 8 9 2 3 1 6 8 4 7 1 1 7 0 1 1 5 4 3 
-3 6 8 1 3 9 3 2 3 3 7 6 0 1 2 9 4 8 9 1 1 3 1 2 1 8 2 9 5 9 9 
-6 4 1 8 7 3 1 1 4 5 4 3 1 0 8 2 9 9 4 8 5 6 8 1 6 5 0 5 0 3 5 
-2 2 8 4 5 3 4 0 8 3 7 4 9 5 0 7 7 1 6 6 5 1 0 8 6 4 2 9 0 7 1 
-6 6 1 7 6 3 7 4 5 2 0 4 0 7 4 9 1 8 1 3 4 9 9 1 1 7 8 8 9 7 4 
-9 8 6 5 7 1 3 5 8 2 6 8 6 6 1 2 0 0 7 2 2 2 0 1 0 7 8 2 6 8 2 
-1 1 6 3 2 3 4 5 3 7 7 6 2 2 0 0 8 0 7 7 9 4 9 6 0 2 5 2 4 4 7 
-9 9 8 1 6 6 3 6 3 7 5 6 3 8 3 3 3 0 0 0 3 5 4 2 6 1 3 6 7 0 2 
-6 8 2 1 5 6 7 7 4 6 0 5 9 1 0 3 5 6 5 0 0 5 7 3 8 9 6 0 2 4 8 
-0 9 5 2 7 7 4 9 5 2 6 7 5 2 6 1 5 4 5 9 5 5 2 8 0 8 0 5 3 4 0 
-1 6 4 1 7 9 0 1 9 3 2 1 1 8 6 1 5 0 9 1 0 6 8 3 9 2 1 7 1 1 9 
-3 7 6 3 1 8 2 8 7 1 5 8 0 1 7 4 7 8 9 3 2 8 8 3 7 1 9 4 9 6 8 
-2 0 4 6 8 2 0 7 5 3 0 6 2 2 2 4 0 4 5 5 3 5 8 9 0 9 3 2 7 2 1 
-7 9 7 0 6 2 0 0 9 1 9 4 0 3 8 5 9 2 8 7 6 2 6 3 2 7 6 4 6 1 8 
-4 8 4 1 1 7 6 0 1 7 0 2 5 1 0 5 7 7 4 5 0 6 5 0 0 8 9 6 2 5 2 
-6 9 4 9 9 7 3 7 9 7 9 9 0 9 5 6 2 9 1 0 7 2 1 5 8 1 2 3 8 8 7 
-1 3 9 6 2 8 5 9 9 6 5 3 5 4 8 9 4 4 0 8 1 6 1 2 4 7 0 0 6 8 2 
-0 7 0 0 4 8 9 5 2 4 3 5 8 2 0 8 3 5 8 6 9 7 3 4 9 4 5 0 0 3 6 
-
-Line 1: X000 X001 X002 X003 X004 X005 X006 X007 X008 X009 X010 X011 X012 X013
-        X014 X015 X016 X017 X018 X019 X020 X021 X022 X023 X024 X025 X026 X027
-        X028 X029 X030 X031 X032 X033 X034
-Line 2: X035 X036 X037 X038 X039 X040 X041 X042 X043 X044 X045 X046 X047 X048
-        X049 X050 X051 X052 X053 X054 X055 X056 X057 X058 X059 X060 X061 X062
-        X063 X064 X065 X066 X067 X068 X069
-Line 3: X070 X071 X072 X073 X074 X075 X076 X077 X078 X079 X080 X081 X082 X083
-        X084 X085 X086 X087 X088 X089 X090 X091 X092 X093 X094 X095 X096 X097
-        X098 X099 X100 X101 X102 X103 X104
-Line 4: X105 X106 X107 X108 X109 X110 X111 X112 X113 X114 X115 X116 X117 X118
-        X119 X120 X121 X122 X123 X124 X125 X126
-
-
-    X000: 7 6 7 5 3 2 4 6 6 3 4 8 5 1 3 7 8 9 0 7 3 4 8 3 1 0 6 4 0 9 1 7 5 8 5
-    X035: 9 2 9 5 8 4 2 8 1 5 2 9 5 1 1 3 7 5 3 2 6 5 9 4 1 8 7 5 2 3 3 8 1 5 7
-    X070: 6 7 5 3 2 4 6 6 3 4 8 5 1 3 7 8 9 0 7 3 4 8 3 1 0 6 4 0 9 1 7 5 8 5 9
-    X105: 2 9 5 8 4 2 8 1 5 2 9 5 1 1 3 7 5 3 2 6 5 8 
-    X000: 8 8 8 6 9 3 0 8 9 4 2 4 1 7 7 5 4 2 3 7 8 3 3 4 1 8 6 7 6 0 3 6 8 1 4
-    X035: 7 5 5 8 6 9 0 0 2 7 9 7 3 1 0 2 2 6 6 8 7 4 1 6 8 4 5 5 5 0 6 7 1 4 8
-    X070: 8 8 6 9 3 0 8 9 4 2 4 1 7 7 5 4 2 3 7 8 3 3 4 1 8 6 7 6 0 3 6 8 1 4 7
-    X105: 5 5 8 6 9 0 0 2 7 9 7 3 1 0 2 2 6 6 8 7 4 6 
-    X000: 4 9 2 6 1 1 5 0 7 9 0 9 1 8 7 1 5 2 7 2 6 4 2 7 8 5 2 2 4 2 4 8 3 8 5
-    X035: 6 2 0 6 9 9 8 0 2 7 8 3 4 2 1 8 8 7 2 5 5 8 6 2 6 0 0 4 1 5 2 6 0 2 4
-    X070: 9 2 6 1 1 5 0 7 9 0 9 1 8 7 1 5 2 7 2 6 4 2 7 8 5 2 2 4 2 4 8 3 8 5 6
-    X105: 2 0 6 9 9 8 0 2 7 8 3 4 2 1 8 8 7 2 5 5 8 9 
-    X000: 8 1 9 8 4 8 8 9 2 0 2 3 1 9 5 8 7 5 8 7 9 3 3 2 0 0 1 4 9 1 7 7 3 6 8
-    X035: 9 6 8 8 0 1 3 3 2 2 1 0 1 6 0 8 8 4 4 0 6 4 0 2 3 6 2 6 5 7 2 7 0 0 8
-    X070: 1 9 8 4 8 8 9 2 0 2 3 1 9 5 8 7 5 8 7 9 3 3 2 0 0 1 4 9 1 7 7 3 6 8 9
-    X105: 6 8 8 0 1 3 3 2 2 1 0 1 6 0 8 8 4 4 0 6 4 1 
-    X000: 4 5 2 7 7 7 8 9 8 7 0 9 5 6 3 7 2 9 8 4 5 5 4 1 5 1 6 6 5 0 6 9 5 0 6
-    X035: 4 7 7 4 6 6 4 5 1 2 0 8 4 9 8 8 7 6 4 0 1 6 0 6 5 9 5 0 5 3 9 1 4 9 4
-    X070: 5 2 7 7 7 8 9 8 7 0 9 5 6 3 7 2 9 8 4 5 5 4 1 5 1 6 6 5 0 6 9 5 0 6 4
-    X105: 7 7 4 6 6 4 5 1 2 0 8 4 9 8 8 7 6 4 0 1 6 6 
-    X000: 2 3 9 9 6 1 9 6 7 0 7 7 7 3 2 7 6 0 6 6 3 5 2 5 1 1 5 0 7 3 5 1 8 6 0
-    X035: 5 9 1 1 8 1 8 6 9 1 0 8 8 0 4 6 5 1 9 0 3 2 8 1 9 6 2 4 6 8 9 6 7 5 2
-    X070: 3 9 9 6 1 9 6 7 0 7 7 7 3 2 7 6 0 6 6 3 5 2 5 1 1 5 0 7 3 5 1 8 6 0 5
-    X105: 9 1 1 8 1 8 6 9 1 0 8 8 0 4 6 5 1 9 0 3 2 5 
-    X000: 1 6 6 7 7 9 9 6 9 1 2 6 6 4 7 6 9 9 4 4 0 4 7 4 3 9 8 9 2 3 7 3 1 5 3
-    X035: 9 4 2 7 6 4 1 2 0 7 9 7 6 0 3 1 0 7 0 6 3 9 5 1 0 3 2 9 9 4 4 1 5 7 1
-    X070: 6 6 7 7 9 9 6 9 1 2 6 6 4 7 6 9 9 4 4 0 4 7 4 3 9 8 9 2 3 7 3 1 5 3 9
-    X105: 4 2 7 6 4 1 2 0 7 9 7 6 0 3 1 0 7 0 6 3 9 4 
-    X000: 1 6 2 3 9 1 4 6 8 4 1 9 6 8 9 2 3 1 6 8 4 7 1 1 7 0 1 1 5 4 3 6 2 7 1
-    X035: 1 9 5 9 7 9 0 8 5 9 9 7 4 0 5 2 5 2 4 6 1 6 4 1 9 1 5 0 8 0 1 3 2 0 1
-    X070: 6 2 3 9 1 4 6 8 4 1 9 6 8 9 2 3 1 6 8 4 7 1 1 7 0 1 1 5 4 3 6 2 7 1 1
-    X105: 9 5 9 7 9 0 8 5 9 9 7 4 0 5 2 5 2 4 6 1 6 8 
-    X000: 3 6 8 1 3 9 3 2 3 3 7 6 0 1 2 9 4 8 9 1 1 3 1 2 1 8 2 9 5 9 9 8 5 7 2
-    X035: 8 8 5 0 1 0 9 9 1 2 3 2 8 3 1 9 6 6 2 8 7 1 4 1 4 8 9 6 5 0 8 4 5 7 3
-    X070: 6 8 1 3 9 3 2 3 3 7 6 0 1 2 9 4 8 9 1 1 3 1 2 1 8 2 9 5 9 9 8 5 7 2 8
-    X105: 8 5 0 1 0 9 9 1 2 3 2 8 3 1 9 6 6 2 8 7 1 0 
-    X000: 6 4 1 8 7 3 1 1 4 5 4 3 1 0 8 2 9 9 4 8 5 6 8 1 6 5 0 5 0 3 5 9 9 7 9
-    X035: 8 2 0 9 6 7 3 2 1 5 0 3 5 9 7 5 4 5 4 7 2 9 9 6 1 8 4 8 7 8 8 5 3 0 6
-    X070: 4 1 8 7 3 1 1 4 5 4 3 1 0 8 2 9 9 4 8 5 6 8 1 6 5 0 5 0 3 5 9 9 7 9 8
-    X105: 2 0 9 6 7 3 2 1 5 0 3 5 9 7 5 4 5 4 7 2 9 7 
-    X000: 2 2 8 4 5 3 4 0 8 3 7 4 9 5 0 7 7 1 6 6 5 1 0 8 6 4 2 9 0 7 1 2 1 9 7
-    X035: 6 5 1 6 3 7 5 9 8 2 9 7 9 3 4 7 8 5 8 7 1 4 7 2 3 4 3 4 1 2 3 4 4 2 2
-    X070: 2 8 4 5 3 4 0 8 3 7 4 9 5 0 7 7 1 6 6 5 1 0 8 6 4 2 9 0 7 1 2 1 9 7 6
-    X105: 5 1 6 3 7 5 9 8 2 9 7 9 3 4 7 8 5 8 7 1 4 9 
-    X000: 6 6 1 7 6 3 7 4 5 2 0 4 0 7 4 9 1 8 1 3 4 9 9 1 1 7 8 8 9 7 4 7 5 7 5
-    X035: 2 2 4 6 9 6 6 4 8 3 8 8 6 7 9 0 1 0 1 4 1 8 2 4 8 6 6 9 7 5 7 2 9 5 6
-    X070: 6 1 7 6 3 7 4 5 2 0 4 0 7 4 9 1 8 1 3 4 9 9 1 1 7 8 8 9 7 4 7 5 7 5 2
-    X105: 2 4 6 9 6 6 4 8 3 8 8 6 7 9 0 1 0 1 4 1 8 5 
-    X000: 9 8 6 5 7 1 3 5 8 2 6 8 6 6 1 2 0 0 7 2 2 2 0 1 0 7 8 2 6 8 2 7 7 8 2
-    X035: 6 9 8 3 9 2 9 9 8 7 1 3 9 3 0 1 5 4 3 6 4 0 2 0 2 6 9 8 5 4 0 9 0 8 9
-    X070: 8 6 5 7 1 3 5 8 2 6 8 6 6 1 2 0 0 7 2 2 2 0 1 0 7 8 2 6 8 2 7 7 8 2 6
-    X105: 9 8 3 9 2 9 9 8 7 1 3 9 3 0 1 5 4 3 6 4 0 6 
-    X000: 1 1 6 3 2 3 4 5 3 7 7 6 2 2 0 0 8 0 7 7 9 4 9 6 0 2 5 2 4 4 7 7 7 3 0
-    X035: 9 8 4 4 3 3 4 0 7 6 2 8 4 4 7 3 4 3 5 0 3 7 8 7 5 0 4 4 0 9 0 2 9 5 1
-    X070: 1 6 3 2 3 4 5 3 7 7 6 2 2 0 0 8 0 7 7 9 4 9 6 0 2 5 2 4 4 7 7 7 3 0 9
-    X105: 8 4 4 3 3 4 0 7 6 2 8 4 4 7 3 4 3 5 0 3 7 7 
-    X000: 9 9 8 1 6 6 3 6 3 7 5 6 3 8 3 3 3 0 0 0 3 5 4 2 6 1 3 6 7 0 2 8 9 3 9
-    X035: 8 9 4 6 4 1 2 3 5 2 6 0 8 7 3 8 0 8 3 4 4 4 5 1 3 2 8 0 7 9 0 5 5 4 9
-    X070: 9 8 1 6 6 3 6 3 7 5 6 3 8 3 3 3 0 0 0 3 5 4 2 6 1 3 6 7 0 2 8 9 3 9 8
-    X105: 9 4 6 4 1 2 3 5 2 6 0 8 7 3 8 0 8 3 4 4 4 9 
-    X000: 6 8 2 1 5 6 7 7 4 6 0 5 9 1 0 3 5 6 5 0 0 5 7 3 8 9 6 0 2 4 8 8 4 2 1
-    X035: 9 8 9 9 5 5 9 0 6 0 2 2 8 8 7 0 0 4 7 6 2 8 2 3 0 7 1 1 0 2 9 1 6 8 6
-    X070: 8 2 1 5 6 7 7 4 6 0 5 9 1 0 3 5 6 5 0 0 5 7 3 8 9 6 0 2 4 8 8 4 2 1 9
-    X105: 8 9 9 5 5 9 0 6 0 2 2 8 8 7 0 0 4 7 6 2 8 4 
-    X000: 0 9 5 2 7 7 4 9 5 2 6 7 5 2 6 1 5 4 5 9 5 5 2 8 0 8 0 5 3 4 0 3 5 7 5
-    X035: 4 5 9 4 2 4 0 0 1 5 6 2 0 1 9 1 8 6 3 8 7 4 2 0 8 2 1 3 4 2 4 3 3 3 0
-    X070: 9 5 2 7 7 4 9 5 2 6 7 5 2 6 1 5 4 5 9 5 5 2 8 0 8 0 5 3 4 0 3 5 7 5 4
-    X105: 5 9 4 2 4 0 0 1 5 6 2 0 1 9 1 8 6 3 8 7 4 8 
-    X000: 1 6 4 1 7 9 0 1 9 3 2 1 1 8 6 1 5 0 9 1 0 6 8 3 9 2 1 7 1 1 9 4 9 6 8
-    X035: 6 5 8 7 7 1 1 8 4 0 6 5 7 9 6 1 9 4 9 2 6 1 4 7 4 4 1 1 4 8 6 9 0 2 1
-    X070: 6 4 1 7 9 0 1 9 3 2 1 1 8 6 1 5 0 9 1 0 6 8 3 9 2 1 7 1 1 9 4 9 6 8 6
-    X105: 5 8 7 7 1 1 8 4 0 6 5 7 9 6 1 9 4 9 2 6 1 5 
-    X000: 3 7 6 3 1 8 2 8 7 1 5 8 0 1 7 4 7 8 9 3 2 8 8 3 7 1 9 4 9 6 8 5 3 6 8
-    X035: 7 6 0 7 4 3 4 4 5 6 2 9 3 2 1 8 7 9 6 0 8 9 3 2 7 5 8 8 1 6 5 6 4 4 3
-    X070: 7 6 3 1 8 2 8 7 1 5 8 0 1 7 4 7 8 9 3 2 8 8 3 7 1 9 4 9 6 8 5 3 6 8 7
-    X105: 6 0 7 4 3 4 4 5 6 2 9 3 2 1 8 7 9 6 0 8 9 1 
-    X000: 2 0 4 6 8 2 0 7 5 3 0 6 2 2 2 4 0 4 5 5 3 5 8 9 0 9 3 2 7 2 1 1 3 7 8
-    X035: 1 9 8 0 7 3 3 3 7 5 7 1 7 1 9 2 6 4 2 5 4 4 2 9 7 3 4 3 9 4 2 6 7 9 2
-    X070: 0 4 6 8 2 0 7 5 3 0 6 2 2 2 4 0 4 5 5 3 5 8 9 0 9 3 2 7 2 1 1 3 7 8 1
-    X105: 9 8 0 7 3 3 3 7 5 7 1 7 1 9 2 6 4 2 5 4 4 1 
-    X000: 7 9 7 0 6 2 0 0 9 1 9 4 0 3 8 5 9 2 8 7 6 2 6 3 2 7 6 4 6 1 8 5 2 5 8
-    X035: 9 9 8 9 0 1 8 6 1 3 5 9 2 9 7 9 7 1 7 0 4 5 6 3 3 9 5 8 9 3 1 8 3 4 7
-    X070: 9 7 0 6 2 0 0 9 1 9 4 0 3 8 5 9 2 8 7 6 2 6 3 2 7 6 4 6 1 8 5 2 5 8 9
-    X105: 9 8 9 0 1 8 6 1 3 5 9 2 9 7 9 7 1 7 0 4 5 8 
-    X000: 4 8 4 1 1 7 6 0 1 7 0 2 5 1 0 5 7 7 4 5 0 6 5 0 0 8 9 6 2 5 2 7 5 7 0
-    X035: 7 6 6 9 0 3 9 2 0 3 4 6 0 1 2 8 3 8 3 4 0 4 8 3 0 8 8 4 3 6 3 2 6 4 4
-    X070: 8 4 1 1 7 6 0 1 7 0 2 5 1 0 5 7 7 4 5 0 6 5 0 0 8 9 6 2 5 2 7 5 7 0 7
-    X105: 6 6 9 0 3 9 2 0 3 4 6 0 1 2 8 3 8 3 4 0 4 5 
-    X000: 6 9 4 9 9 7 3 7 9 7 9 9 0 9 5 6 2 9 1 0 7 2 1 5 8 1 2 3 8 8 7 4 7 3 5
-    X035: 8 2 9 6 2 6 7 3 8 7 8 5 1 9 6 1 9 8 3 4 8 6 8 8 0 1 5 6 8 5 3 6 3 2 6
-    X070: 9 4 9 9 7 3 7 9 7 9 9 0 9 5 6 2 9 1 0 7 2 1 5 8 1 2 3 8 8 7 4 7 3 5 8
-    X105: 2 9 6 2 6 7 3 8 7 8 5 1 9 6 1 9 8 3 4 8 6 8 
-    X000: 1 3 9 6 2 8 5 9 9 6 5 3 5 4 8 9 4 4 0 8 1 6 1 2 4 7 0 0 6 8 2 9 3 3 8
-    X035: 7 4 3 6 5 1 2 8 7 8 6 8 2 3 8 2 4 7 5 8 1 3 3 4 6 1 1 5 6 6 4 9 7 2 1
-    X070: 3 9 6 2 8 5 9 9 6 5 3 5 4 8 9 4 4 0 8 1 6 1 2 4 7 0 0 6 8 2 9 3 3 8 7
-    X105: 4 3 6 5 1 2 8 7 8 6 8 2 3 8 2 4 7 5 8 1 3 8 
-    X000: 0 7 0 0 4 8 9 5 2 4 3 5 8 2 0 8 3 5 8 6 9 7 3 4 9 4 5 0 0 3 6 2 0 8 3
-    X035: 7 8 4 2 1 8 7 8 8 0 0 6 3 6 4 2 7 1 5 1 2 1 1 1 8 5 3 2 0 1 9 4 6 6 0
-    X070: 7 0 0 4 8 9 5 2 4 3 5 8 2 0 8 3 5 8 6 9 7 3 4 9 4 5 0 0 3 6 2 0 8 3 7
-    X105: 8 4 2 1 8 7 8 8 0 0 6 3 6 4 2 7 1 5 1 2 1 8 
+X000 X001 X002 X003 X004 X005 X006 X007 X008 X009 X010 X011 X012 X013 X014 X015 X016 X017 X018 X019 X020 X021 X022 X023 X024 X025 X026 X027 X028 X029 X030
+---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
+   7    6    7    5    3    2    4    6    6    3    4    8    5    1    3    7    8    9    0    7    3    4    8    3    1    0    6    4    0    9    1 
+   8    8    8    6    9    3    0    8    9    4    2    4    1    7    7    5    4    2    3    7    8    3    3    4    1    8    6    7    6    0    3 
+   4    9    2    6    1    1    5    0    7    9    0    9    1    8    7    1    5    2    7    2    6    4    2    7    8    5    2    2    4    2    4 
+   8    1    9    8    4    8    8    9    2    0    2    3    1    9    5    8    7    5    8    7    9    3    3    2    0    0    1    4    9    1    7 
+   4    5    2    7    7    7    8    9    8    7    0    9    5    6    3    7    2    9    8    4    5    5    4    1    5    1    6    6    5    0    6 
+   2    3    9    9    6    1    9    6    7    0    7    7    7    3    2    7    6    0    6    6    3    5    2    5    1    1    5    0    7    3    5 
+   1    6    6    7    7    9    9    6    9    1    2    6    6    4    7    6    9    9    4    4    0    4    7    4    3    9    8    9    2    3    7 
+   1    6    2    3    9    1    4    6    8    4    1    9    6    8    9    2    3    1    6    8    4    7    1    1    7    0    1    1    5    4    3 
+   3    6    8    1    3    9    3    2    3    3    7    6    0    1    2    9    4    8    9    1    1    3    1    2    1    8    2    9    5    9    9 
+   6    4    1    8    7    3    1    1    4    5    4    3    1    0    8    2    9    9    4    8    5    6    8    1    6    5    0    5    0    3    5 
+   2    2    8    4    5    3    4    0    8    3    7    4    9    5    0    7    7    1    6    6    5    1    0    8    6    4    2    9    0    7    1 
+   6    6    1    7    6    3    7    4    5    2    0    4    0    7    4    9    1    8    1    3    4    9    9    1    1    7    8    8    9    7    4 
+   9    8    6    5    7    1    3    5    8    2    6    8    6    6    1    2    0    0    7    2    2    2    0    1    0    7    8    2    6    8    2 
+   1    1    6    3    2    3    4    5    3    7    7    6    2    2    0    0    8    0    7    7    9    4    9    6    0    2    5    2    4    4    7 
+   9    9    8    1    6    6    3    6    3    7    5    6    3    8    3    3    3    0    0    0    3    5    4    2    6    1    3    6    7    0    2 
+   6    8    2    1    5    6    7    7    4    6    0    5    9    1    0    3    5    6    5    0    0    5    7    3    8    9    6    0    2    4    8 
+   0    9    5    2    7    7    4    9    5    2    6    7    5    2    6    1    5    4    5    9    5    5    2    8    0    8    0    5    3    4    0 
+   1    6    4    1    7    9    0    1    9    3    2    1    1    8    6    1    5    0    9    1    0    6    8    3    9    2    1    7    1    1    9 
+   3    7    6    3    1    8    2    8    7    1    5    8    0    1    7    4    7    8    9    3    2    8    8    3    7    1    9    4    9    6    8 
+   2    0    4    6    8    2    0    7    5    3    0    6    2    2    2    4    0    4    5    5    3    5    8    9    0    9    3    2    7    2    1 
+   7    9    7    0    6    2    0    0    9    1    9    4    0    3    8    5    9    2    8    7    6    2    6    3    2    7    6    4    6    1    8 
+   4    8    4    1    1    7    6    0    1    7    0    2    5    1    0    5    7    7    4    5    0    6    5    0    0    8    9    6    2    5    2 
+   6    9    4    9    9    7    3    7    9    7    9    9    0    9    5    6    2    9    1    0    7    2    1    5    8    1    2    3    8    8    7 
+   1    3    9    6    2    8    5    9    9    6    5    3    5    4    8    9    4    4    0    8    1    6    1    2    4    7    0    0    6    8    2 
+   0    7    0    0    4    8    9    5    2    4    3    5    8    2    0    8    3    5    8    6    9    7    3    4    9    4    5    0    0    3    6 
+
+X000 X001 X002 X003 X004 X005 X006 X007 X008 X009 X010 X011 X012 X013 X014 X015 X016 X017 X018 X019 X020 X021 X022 X023 X024 X025 X026 X027 X028 X029 X030 X031 X032 X033 X034 X035 X036 X037 X038 X039 X040 X041 X042 X043 X044 X045 X046 X047 X048 X049 X050 X051 X052 X053 X054 X055 X056 X057 X058 X059 X060 X061 X062 X063 X064 X065 X066 X067 X068 X069 X070 X071 X072 X073 X074 X075 X076 X077 X078 X079 X080 X081 X082 X083 X084 X085 X086 X087 X088 X089 X090 X091 X092 X093 X094 X095 X096 X097 X098 X099 X100 X101 X102 X103 X104 X105 X106 X107 X108 X109 X110 X111 X112 X113 X114 X115 X116 X117 X118 X119 X120 X121 X122 X123 X124 X125 X126
+---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ---- ----
+   7    6    7    5    3    2    4    6    6    3    4    8    5    1    3    7    8    9    0    7    3    4    8    3    1    0    6    4    0    9    1    7    5    8    5    9    2    9    5    8    4    2    8    1    5    2    9    5    1    1    3    7    5    3    2    6    5    9    4    1    8    7    5    2    3    3    8    1    5    7    6    7    5    3    2    4    6    6    3    4    8    5    1    3    7    8    9    0    7    3    4    8    3    1    0    6    4    0    9    1    7    5    8    5    9    2    9    5    8    4    2    8    1    5    2    9    5    1    1    3    7    5    3    2    6    5    8 
+   8    8    8    6    9    3    0    8    9    4    2    4    1    7    7    5    4    2    3    7    8    3    3    4    1    8    6    7    6    0    3    6    8    1    4    7    5    5    8    6    9    0    0    2    7    9    7    3    1    0    2    2    6    6    8    7    4    1    6    8    4    5    5    5    0    6    7    1    4    8    8    8    6    9    3    0    8    9    4    2    4    1    7    7    5    4    2    3    7    8    3    3    4    1    8    6    7    6    0    3    6    8    1    4    7    5    5    8    6    9    0    0    2    7    9    7    3    1    0    2    2    6    6    8    7    4    6 
+   4    9    2    6    1    1    5    0    7    9    0    9    1    8    7    1    5    2    7    2    6    4    2    7    8    5    2    2    4    2    4    8    3    8    5    6    2    0    6    9    9    8    0    2    7    8    3    4    2    1    8    8    7    2    5    5    8    6    2    6    0    0    4    1    5    2    6    0    2    4    9    2    6    1    1    5    0    7    9    0    9    1    8    7    1    5    2    7    2    6    4    2    7    8    5    2    2    4    2    4    8    3    8    5    6    2    0    6    9    9    8    0    2    7    8    3    4    2    1    8    8    7    2    5    5    8    9 
+   8    1    9    8    4    8    8    9    2    0    2    3    1    9    5    8    7    5    8    7    9    3    3    2    0    0    1    4    9    1    7    7    3    6    8    9    6    8    8    0    1    3    3    2    2    1    0    1    6    0    8    8    4    4    0    6    4    0    2    3    6    2    6    5    7    2    7    0    0    8    1    9    8    4    8    8    9    2    0    2    3    1    9    5    8    7    5    8    7    9    3    3    2    0    0    1    4    9    1    7    7    3    6    8    9    6    8    8    0    1    3    3    2    2    1    0    1    6    0    8    8    4    4    0    6    4    1 
+   4    5    2    7    7    7    8    9    8    7    0    9    5    6    3    7    2    9    8    4    5    5    4    1    5    1    6    6    5    0    6    9    5    0    6    4    7    7    4    6    6    4    5    1    2    0    8    4    9    8    8    7    6    4    0    1    6    0    6    5    9    5    0    5    3    9    1    4    9    4    5    2    7    7    7    8    9    8    7    0    9    5    6    3    7    2    9    8    4    5    5    4    1    5    1    6    6    5    0    6    9    5    0    6    4    7    7    4    6    6    4    5    1    2    0    8    4    9    8    8    7    6    4    0    1    6    6 
+   2    3    9    9    6    1    9    6    7    0    7    7    7    3    2    7    6    0    6    6    3    5    2    5    1    1    5    0    7    3    5    1    8    6    0    5    9    1    1    8    1    8    6    9    1    0    8    8    0    4    6    5    1    9    0    3    2    8    1    9    6    2    4    6    8    9    6    7    5    2    3    9    9    6    1    9    6    7    0    7    7    7    3    2    7    6    0    6    6    3    5    2    5    1    1    5    0    7    3    5    1    8    6    0    5    9    1    1    8    1    8    6    9    1    0    8    8    0    4    6    5    1    9    0    3    2    5 
+   1    6    6    7    7    9    9    6    9    1    2    6    6    4    7    6    9    9    4    4    0    4    7    4    3    9    8    9    2    3    7    3    1    5    3    9    4    2    7    6    4    1    2    0    7    9    7    6    0    3    1    0    7    0    6    3    9    5    1    0    3    2    9    9    4    4    1    5    7    1    6    6    7    7    9    9    6    9    1    2    6    6    4    7    6    9    9    4    4    0    4    7    4    3    9    8    9    2    3    7    3    1    5    3    9    4    2    7    6    4    1    2    0    7    9    7    6    0    3    1    0    7    0    6    3    9    4 
+   1    6    2    3    9    1    4    6    8    4    1    9    6    8    9    2    3    1    6    8    4    7    1    1    7    0    1    1    5    4    3    6    2    7    1    1    9    5    9    7    9    0    8    5    9    9    7    4    0    5    2    5    2    4    6    1    6    4    1    9    1    5    0    8    0    1    3    2    0    1    6    2    3    9    1    4    6    8    4    1    9    6    8    9    2    3    1    6    8    4    7    1    1    7    0    1    1    5    4    3    6    2    7    1    1    9    5    9    7    9    0    8    5    9    9    7    4    0    5    2    5    2    4    6    1    6    8 
+   3    6    8    1    3    9    3    2    3    3    7    6    0    1    2    9    4    8    9    1    1    3    1    2    1    8    2    9    5    9    9    8    5    7    2    8    8    5    0    1    0    9    9    1    2    3    2    8    3    1    9    6    6    2    8    7    1    4    1    4    8    9    6    5    0    8    4    5    7    3    6    8    1    3    9    3    2    3    3    7    6    0    1    2    9    4    8    9    1    1    3    1    2    1    8    2    9    5    9    9    8    5    7    2    8    8    5    0    1    0    9    9    1    2    3    2    8    3    1    9    6    6    2    8    7    1    0 
+   6    4    1    8    7    3    1    1    4    5    4    3    1    0    8    2    9    9    4    8    5    6    8    1    6    5    0    5    0    3    5    9    9    7    9    8    2    0    9    6    7    3    2    1    5    0    3    5    9    7    5    4    5    4    7    2    9    9    6    1    8    4    8    7    8    8    5    3    0    6    4    1    8    7    3    1    1    4    5    4    3    1    0    8    2    9    9    4    8    5    6    8    1    6    5    0    5    0    3    5    9    9    7    9    8    2    0    9    6    7    3    2    1    5    0    3    5    9    7    5    4    5    4    7    2    9    7 
+   2    2    8    4    5    3    4    0    8    3    7    4    9    5    0    7    7    1    6    6    5    1    0    8    6    4    2    9    0    7    1    2    1    9    7    6    5    1    6    3    7    5    9    8    2    9    7    9    3    4    7    8    5    8    7    1    4    7    2    3    4    3    4    1    2    3    4    4    2    2    2    8    4    5    3    4    0    8    3    7    4    9    5    0    7    7    1    6    6    5    1    0    8    6    4    2    9    0    7    1    2    1    9    7    6    5    1    6    3    7    5    9    8    2    9    7    9    3    4    7    8    5    8    7    1    4    9 
+   6    6    1    7    6    3    7    4    5    2    0    4    0    7    4    9    1    8    1    3    4    9    9    1    1    7    8    8    9    7    4    7    5    7    5    2    2    4    6    9    6    6    4    8    3    8    8    6    7    9    0    1    0    1    4    1    8    2    4    8    6    6    9    7    5    7    2    9    5    6    6    1    7    6    3    7    4    5    2    0    4    0    7    4    9    1    8    1    3    4    9    9    1    1    7    8    8    9    7    4    7    5    7    5    2    2    4    6    9    6    6    4    8    3    8    8    6    7    9    0    1    0    1    4    1    8    5 
+   9    8    6    5    7    1    3    5    8    2    6    8    6    6    1    2    0    0    7    2    2    2    0    1    0    7    8    2    6    8    2    7    7    8    2    6    9    8    3    9    2    9    9    8    7    1    3    9    3    0    1    5    4    3    6    4    0    2    0    2    6    9    8    5    4    0    9    0    8    9    8    6    5    7    1    3    5    8    2    6    8    6    6    1    2    0    0    7    2    2    2    0    1    0    7    8    2    6    8    2    7    7    8    2    6    9    8    3    9    2    9    9    8    7    1    3    9    3    0    1    5    4    3    6    4    0    6 
+   1    1    6    3    2    3    4    5    3    7    7    6    2    2    0    0    8    0    7    7    9    4    9    6    0    2    5    2    4    4    7    7    7    3    0    9    8    4    4    3    3    4    0    7    6    2    8    4    4    7    3    4    3    5    0    3    7    8    7    5    0    4    4    0    9    0    2    9    5    1    1    6    3    2    3    4    5    3    7    7    6    2    2    0    0    8    0    7    7    9    4    9    6    0    2    5    2    4    4    7    7    7    3    0    9    8    4    4    3    3    4    0    7    6    2    8    4    4    7    3    4    3    5    0    3    7    7 
+   9    9    8    1    6    6    3    6    3    7    5    6    3    8    3    3    3    0    0    0    3    5    4    2    6    1    3    6    7    0    2    8    9    3    9    8    9    4    6    4    1    2    3    5    2    6    0    8    7    3    8    0    8    3    4    4    4    5    1    3    2    8    0    7    9    0    5    5    4    9    9    8    1    6    6    3    6    3    7    5    6    3    8    3    3    3    0    0    0    3    5    4    2    6    1    3    6    7    0    2    8    9    3    9    8    9    4    6    4    1    2    3    5    2    6    0    8    7    3    8    0    8    3    4    4    4    9 
+   6    8    2    1    5    6    7    7    4    6    0    5    9    1    0    3    5    6    5    0    0    5    7    3    8    9    6    0    2    4    8    8    4    2    1    9    8    9    9    5    5    9    0    6    0    2    2    8    8    7    0    0    4    7    6    2    8    2    3    0    7    1    1    0    2    9    1    6    8    6    8    2    1    5    6    7    7    4    6    0    5    9    1    0    3    5    6    5    0    0    5    7    3    8    9    6    0    2    4    8    8    4    2    1    9    8    9    9    5    5    9    0    6    0    2    2    8    8    7    0    0    4    7    6    2    8    4 
+   0    9    5    2    7    7    4    9    5    2    6    7    5    2    6    1    5    4    5    9    5    5    2    8    0    8    0    5    3    4    0    3    5    7    5    4    5    9    4    2    4    0    0    1    5    6    2    0    1    9    1    8    6    3    8    7    4    2    0    8    2    1    3    4    2    4    3    3    3    0    9    5    2    7    7    4    9    5    2    6    7    5    2    6    1    5    4    5    9    5    5    2    8    0    8    0    5    3    4    0    3    5    7    5    4    5    9    4    2    4    0    0    1    5    6    2    0    1    9    1    8    6    3    8    7    4    8 
+   1    6    4    1    7    9    0    1    9    3    2    1    1    8    6    1    5    0    9    1    0    6    8    3    9    2    1    7    1    1    9    4    9    6    8    6    5    8    7    7    1    1    8    4    0    6    5    7    9    6    1    9    4    9    2    6    1    4    7    4    4    1    1    4    8    6    9    0    2    1    6    4    1    7    9    0    1    9    3    2    1    1    8    6    1    5    0    9    1    0    6    8    3    9    2    1    7    1    1    9    4    9    6    8    6    5    8    7    7    1    1    8    4    0    6    5    7    9    6    1    9    4    9    2    6    1    5 
+   3    7    6    3    1    8    2    8    7    1    5    8    0    1    7    4    7    8    9    3    2    8    8    3    7    1    9    4    9    6    8    5    3    6    8    7    6    0    7    4    3    4    4    5    6    2    9    3    2    1    8    7    9    6    0    8    9    3    2    7    5    8    8    1    6    5    6    4    4    3    7    6    3    1    8    2    8    7    1    5    8    0    1    7    4    7    8    9    3    2    8    8    3    7    1    9    4    9    6    8    5    3    6    8    7    6    0    7    4    3    4    4    5    6    2    9    3    2    1    8    7    9    6    0    8    9    1 
+   2    0    4    6    8    2    0    7    5    3    0    6    2    2    2    4    0    4    5    5    3    5    8    9    0    9    3    2    7    2    1    1    3    7    8    1    9    8    0    7    3    3    3    7    5    7    1    7    1    9    2    6    4    2    5    4    4    2    9    7    3    4    3    9    4    2    6    7    9    2    0    4    6    8    2    0    7    5    3    0    6    2    2    2    4    0    4    5    5    3    5    8    9    0    9    3    2    7    2    1    1    3    7    8    1    9    8    0    7    3    3    3    7    5    7    1    7    1    9    2    6    4    2    5    4    4    1 
+   7    9    7    0    6    2    0    0    9    1    9    4    0    3    8    5    9    2    8    7    6    2    6    3    2    7    6    4    6    1    8    5    2    5    8    9    9    8    9    0    1    8    6    1    3    5    9    2    9    7    9    7    1    7    0    4    5    6    3    3    9    5    8    9    3    1    8    3    4    7    9    7    0    6    2    0    0    9    1    9    4    0    3    8    5    9    2    8    7    6    2    6    3    2    7    6    4    6    1    8    5    2    5    8    9    9    8    9    0    1    8    6    1    3    5    9    2    9    7    9    7    1    7    0    4    5    8 
+   4    8    4    1    1    7    6    0    1    7    0    2    5    1    0    5    7    7    4    5    0    6    5    0    0    8    9    6    2    5    2    7    5    7    0    7    6    6    9    0    3    9    2    0    3    4    6    0    1    2    8    3    8    3    4    0    4    8    3    0    8    8    4    3    6    3    2    6    4    4    8    4    1    1    7    6    0    1    7    0    2    5    1    0    5    7    7    4    5    0    6    5    0    0    8    9    6    2    5    2    7    5    7    0    7    6    6    9    0    3    9    2    0    3    4    6    0    1    2    8    3    8    3    4    0    4    5 
+   6    9    4    9    9    7    3    7    9    7    9    9    0    9    5    6    2    9    1    0    7    2    1    5    8    1    2    3    8    8    7    4    7    3    5    8    2    9    6    2    6    7    3    8    7    8    5    1    9    6    1    9    8    3    4    8    6    8    8    0    1    5    6    8    5    3    6    3    2    6    9    4    9    9    7    3    7    9    7    9    9    0    9    5    6    2    9    1    0    7    2    1    5    8    1    2    3    8    8    7    4    7    3    5    8    2    9    6    2    6    7    3    8    7    8    5    1    9    6    1    9    8    3    4    8    6    8 
+   1    3    9    6    2    8    5    9    9    6    5    3    5    4    8    9    4    4    0    8    1    6    1    2    4    7    0    0    6    8    2    9    3    3    8    7    4    3    6    5    1    2    8    7    8    6    8    2    3    8    2    4    7    5    8    1    3    3    4    6    1    1    5    6    6    4    9    7    2    1    3    9    6    2    8    5    9    9    6    5    3    5    4    8    9    4    4    0    8    1    6    1    2    4    7    0    0    6    8    2    9    3    3    8    7    4    3    6    5    1    2    8    7    8    6    8    2    3    8    2    4    7    5    8    1    3    8 
+   0    7    0    0    4    8    9    5    2    4    3    5    8    2    0    8    3    5    8    6    9    7    3    4    9    4    5    0    0    3    6    2    0    8    3    7    8    4    2    1    8    7    8    8    0    0    6    3    6    4    2    7    1    5    1    2    1    1    1    8    5    3    2    0    1    9    4    6    6    0    7    0    0    4    8    9    5    2    4    3    5    8    2    0    8    3    5    8    6    9    7    3    4    9    4    5    0    0    3    6    2    0    8    3    7    8    4    2    1    8    7    8    8    0    0    6    3    6    4    2    7    1    5    1    2    1    8 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
index f6f714e10a3587701ba59d4ff2d5f5ac36761458..b384fd61abce1c9cd0c172b305d3277b532fdaa6 100755 (executable)
@@ -109,6 +109,8 @@ $TEMPDIR/data-list.data:6: warning: LIST: Missing value(s) for all variables fro
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
+
+
 activity="compare output"
 diff -b -B $TEMPDIR/pspp.list - << EOF
 ----------------------------------------------------------------------
@@ -120,7 +122,7 @@ rest of the tests give it a pretty good workout.
 Testing use of DATA LIST FREE.
 ----------------------------------------------------------------------
 
-1.1 DATA LIST.  Reading free-form data from file 
+1.1 DATA LIST.  Reading free-form data from file "$TEMPDIR/data-list.data".
 +--------+------+
 |Variable|Format|
 #========#======#
@@ -157,7 +159,7 @@ Testing use of DATA LIST FREE.
 Testing use of DATA LIST LIST.
 ----------------------------------------------------------------------
 
-3.1 DATA LIST.  Reading free-form data from file 
+3.1 DATA LIST.  Reading free-form data from file "$TEMPDIR/data-list.data".
 +--------+------+
 |Variable|Format|
 #========#======#
@@ -191,6 +193,9920 @@ Testing use of DATA LIST LIST.
    10.00    11.00      .        .   
    12.00      .        .        .   
    12.00      .        .        .   
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
index b5ab80e71fbee50de4f0b2fd840c5913afed97fd..6d3317e43a70af5a73228a60a4145581924f9d26 100755 (executable)
@@ -50,7 +50,7 @@ activity="create program"
 cat > $TEMPDIR/sample.stat <<EOF
 set seed=3
 
-data list /a 1-2.
+data list notable /a 1-2.
 begin data.
 1
 2
@@ -73,22 +73,42 @@ activity="run program"
 $here/../src/pspp -o raw-ascii --testing-mode $TEMPDIR/sample.stat 
 if [ $? -ne 0 ] ; then no_result ; fi
 
-activity="compare results"
-diff -B -b $TEMPDIR/pspp.list - << EOF
-1.1 DATA LIST.  Reading 1 record from the command file.
-+--------+------+-------+------+
-|Variable|Record|Columns|Format|
-#========#======#=======#======#
-|A       |     1|  1-  2|F2.0  |
-+--------+------+-------+------+
+activity="create head"
+grep -v '^\ *$' $TEMPDIR/pspp.list | head -2 > $TEMPDIR/head
+if [ $? -ne 0 ] ; then no_result ; fi
+
+activity="extract data"
+grep  '[0-9][0-9]*' $TEMPDIR/pspp.list > $TEMPDIR/data
+if [ $? -ne 0 ] ; then no_result ; fi
 
+
+activity="compare head"
+diff -B -b $TEMPDIR/head - << EOF
  A
 --
- 2
- 6
- 9 
-10 
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
+activity="compare data"
+diff -w $TEMPDIR/data - << EOF > $TEMPDIR/diffs
+1
+2
+3
+4
+5
+6
+7
+8
+9
+10
+EOF
+# note   vv 
+if [ $? -eq 0 ] ; then fail ; fi
+
+# Check that there was nothing added
+grep '^<' $TEMPDIR/diffs
+# note   vv
+if [ $? -eq 0 ] ; then fail ; fi
+
+
 pass;
index 35a64c8788f9f611cf6136ae5cd5b517f6be0463..96420ae055b20f00da8b7e9fa3b5a94fcc47231d 100755 (executable)
@@ -59,7 +59,6 @@ display $JDATE.
 finish.
 EOF
 if [ $? -ne 0 ] ; then no_result ; fi
-cp $TEMPDIR/pspp.list /tmp/bar
 
 activity="run program 1"
 $here/../src/pspp --testing-mode -o raw-ascii $TEMPDIR/save.stat
index db0c688aa4dd73a3f0798eb960e90b10075ad881..0a2915f3e8e362453b110e948b3d14e69c6b9375 100755 (executable)
@@ -70,6 +70,7 @@ activity="run program"
 $here/../src/pspp -o raw-ascii $TEMPDIR/tabs.stat
 if [ $? -ne 0 ] ; then no_result ; fi
 
+
 diff -B -b $TEMPDIR/pspp.list - << EOF
 1.1 DATA LIST.  Reading 1 record from the command file.
 +--------+------+-------+------+
@@ -77,7 +78,7 @@ diff -B -b $TEMPDIR/pspp.list - << EOF
 #========#======#=======#======#
 |X       |     1|  1- 80|A80   |
 +--------+------+-------+------+
-               1       12      123     1234    12345   123456          1234567 
+        1       12      123     1234    12345   123456          1234567 12345678 
 EOF
 if [ $? -ne 0 ] ; then fail ; fi
 
index 6446c3448779c764682516268689067672614d1a..aaa633bcf887299ed3bf8a70a43d6305179f47b7 100755 (executable)
@@ -61,10 +61,9 @@ activity="run program"
 $here/../src/pspp --testing-mode -o raw-ascii $TEMPDIR/weight.stat
 if [ $? -ne 0 ] ; then no_result ; fi
 
-
 activity="compare results"
 diff -B -b $TEMPDIR/pspp.list - <<EOF
-1.1 DATA LIST.  Reading 1 record from file "/tmp/pspp/tests/weighting.data".
+1.1 DATA LIST.  Reading 1 record from file "$here/weighting.data".
 +--------+------+-------+------+
 |Variable|Record|Columns|Format|
 #========#======#=======#======#
@@ -72,19 +71,12 @@ diff -B -b $TEMPDIR/pspp.list - <<EOF
 |BVAR    |     1|  6- 10|F5.0  |
 +--------+------+-------+------+
 
-2.1(1) DESCRIPTIVES.  Valid cases = 730; cases with missing value(s) = 0.
-+--------#-------+---------+------+--------+-------+--------+--------+--------+
-|Variable#Valid N|Missing N| Mean |S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|
-#========#=======#=========#======#========#=======#========#========#========#
-|AVAR    #    730|        0|31.515|    .405| 10.937| 119.608|2548.162|    .181|
-+--------#-------+---------+------+--------+-------+--------+--------+--------+
-
-2.1(2) DESCRIPTIVES.  Valid cases = 730; cases with missing value(s) = 0.
-+--------#--------+--------+------+-------+-------+---------+
-|Variable#Skewness|S E Skew| Range|Minimum|Maximum|   Sum   |
-#========#========#========#======#=======#=======#=========#
-|AVAR    #   1.345|    .090|76.000| 18.000| 94.000|23006.000|
-+--------#--------+--------+------+-------+-------+---------+
+2.1 DESCRIPTIVES.  Valid cases = 730; cases with missing value(s) = 0.
++--------#-------+---------+------+--------+-------+--------+--------+--------+--------+--------+------+-------+-------+---------+
+|Variable#Valid N|Missing N| Mean |S E Mean|Std Dev|Variance|Kurtosis|S E Kurt|Skewness|S E Skew| Range|Minimum|Maximum|   Sum   |
+#========#=======#=========#======#========#=======#========#========#========#========#========#======#=======#=======#=========#
+|AVAR    #    730|        0|31.515|    .405| 10.937| 119.608|2548.162|    .181|   1.345|    .090|76.000| 18.000| 94.000|23006.000|
++--------#-------+---------+------+--------+-------+--------+--------+--------+--------+--------+------+-------+-------+---------+
 
 3.1 FREQUENCIES.  AVAR: 
 +--------+--------+---+---+
@@ -147,7 +139,7 @@ diff -B -b $TEMPDIR/pspp.list - <<EOF
 
 Mean         31.515
 S.E. Mean      .405
-Median            .
+Median         .   
 Mode         21.000
 Std Dev      10.937
 Variance    119.608
@@ -159,7 +151,6 @@ Range        76.000
 Minimum      18.000
 Maximum      94.000
 Sum       23006.000
-
 EOF
 if [ $? -ne 0 ] ; then fail ; fi