## Automatically generated incremental diff
## From:   linux-2.2.14-pre18
## To:     linux-2.2.14
## Robot:  $Id: make-incremental-diff,v 1.7 2001/12/04 05:19:54 hpa Exp $

diff -urN linux-2.2.14-pre18/CREDITS linux/CREDITS
--- linux-2.2.14-pre18/CREDITS	Mon Dec  3 21:57:16 2001
+++ linux/CREDITS	Mon Dec  3 21:57:23 2001
@@ -297,6 +297,10 @@
 S: Amsterdam
 S: The Netherlands
 
+N: Zach Brown
+E: zab@zabbo.net
+D: maestro pci sound
+
 N: Ray Burr
 E: ryb@nightmare.com
 D: Original author of Amiga FFS filesystem
diff -urN linux-2.2.14-pre18/Documentation/Configure.help linux/Documentation/Configure.help
--- linux-2.2.14-pre18/Documentation/Configure.help	Mon Dec  3 21:57:17 2001
+++ linux/Documentation/Configure.help	Mon Dec  3 21:57:23 2001
@@ -10084,6 +10084,12 @@
 
   See Documentation/sound/NM256 for further information.
 
+ESS Maestro sound chipsets
+CONFIG_SOUND_MAESTRO
+  Say Y or M if you have a sound system driven by ESS's Maestro line
+  of PCI sound chips.  These include the Maestro 1, Maestro 2, and
+  Maestro 2E.  See Documentation/sound/Maestro for more details.
+
 Are you using a crosscompiler
 CONFIG_CROSSCOMPILE
   Say Y here if you are compiling the kernel on a different
diff -urN linux-2.2.14-pre18/Documentation/computone.txt linux/Documentation/computone.txt
--- linux-2.2.14-pre18/Documentation/computone.txt	Wed Aug 25 17:29:45 1999
+++ linux/Documentation/computone.txt	Mon Dec  3 21:57:23 2001
@@ -7,7 +7,7 @@
 kernel and have been tested on Linux kernels 2.0, 2.2, and 2.3.
 
 Version: 1.2.4
-Date: 08/04/99
+Date: 12/15/99
 Author: Andrew Manison <amanison@america.net>
 Testing: larryg@computone.com
 Support: support@computone.com
@@ -28,7 +28,7 @@
 products previous to the Intelliport II.
 
 This driver was developed on the v2.0.x Linux tree and has been tested up
-to v2.2.9; it will probably not work with earlier v1.X kernels,.
+to v2.2.13; it will probably not work with earlier v1.X kernels,.
 
 
 2. QUICK INSTALLATION
@@ -204,9 +204,94 @@
 
 7. ip2mkdev shell script
 
-===== Cut Here ===== 
+Previously, this script was simply attached here.  It is now attached as a
+shar archive to make it easier to extract the script from the documentation.
+To create the ip2mkdev shell script change to a convenient directory (/tmp
+works just fine) and run the following command:
+
+	unshar /usr/src/linux/Documentation/computone.txt
+		(This file)
+
+You should now have a file ip2mkdev in your current working directory with
+permissions set to execute.  Running that script with then create the
+necessary devices for the Computone boards, interfaces, and ports which
+are present on you system at the time it is run.
+
+
+#!/bin/sh
+# This is a shell archive (produced by GNU sharutils 4.2).
+# To extract the files from this archive, save it to some FILE, remove
+# everything before the `!/bin/sh' line above, then type `sh FILE'.
+#
+# Made on 1999-12-17 16:06 EST by <root@alcove.wittsend.com>.
+# Source directory was `/mnt2/src/linux-2.3.33/Documentation'.
+#
+# Existing files will *not* be overwritten unless `-c' is specified.
+#
+# This shar contains:
+# length mode       name
+# ------ ---------- ------------------------------------------
+#   3300 -rwxr-xr-x ip2mkdev
+#
+save_IFS="${IFS}"
+IFS="${IFS}:"
+gettext_dir=FAILED
+locale_dir=FAILED
+first_param="$1"
+for dir in $PATH
+do
+  if test "$gettext_dir" = FAILED && test -f $dir/gettext \
+     && ($dir/gettext --version >/dev/null 2>&1)
+  then
+    set `$dir/gettext --version 2>&1`
+    if test "$3" = GNU
+    then
+      gettext_dir=$dir
+    fi
+  fi
+  if test "$locale_dir" = FAILED && test -f $dir/shar \
+     && ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
+  then
+    locale_dir=`$dir/shar --print-text-domain-dir`
+  fi
+done
+IFS="$save_IFS"
+if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
+then
+  echo=echo
+else
+  TEXTDOMAINDIR=$locale_dir
+  export TEXTDOMAINDIR
+  TEXTDOMAIN=sharutils
+  export TEXTDOMAIN
+  echo="$gettext_dir/gettext -s"
+fi
+touch -am 1231235999 $$.touch >/dev/null 2>&1
+if test ! -f 1231235999 && test -f $$.touch; then
+  shar_touch=touch
+else
+  shar_touch=:
+  echo
+  $echo 'WARNING: not restoring timestamps.  Consider getting and'
+  $echo "installing GNU \`touch', distributed in GNU File Utilities..."
+  echo
+fi
+rm -f 1231235999 $$.touch
+#
+if mkdir _sh06360; then
+  $echo 'x -' 'creating lock directory'
+else
+  $echo 'failed to create lock directory'
+  exit 1
+fi
+# ============= ip2mkdev ==============
+if test -f 'ip2mkdev' && test "$first_param" != -c; then
+  $echo 'x -' SKIPPING 'ip2mkdev' '(file already exists)'
+else
+  $echo 'x -' extracting 'ip2mkdev' '(text)'
+  sed 's/^X//' << 'SHAR_EOF' > 'ip2mkdev' &&
 #!/bin/sh -
-
+X
 #	ip2mkdev
 #
 #	Make or remove devices as needed for Computone Intelliport drivers
@@ -227,117 +312,134 @@
 #
 if test ! -f /proc/tty/drivers
 then
-	echo "\
+X	echo "\
 Unable to check driver status.
 Make sure proc file system is mounted."
-
-	exit 255
+X
+X	exit 255
 fi
-
+X
 if test ! -f /proc/tty/driver/ip2
 then
-	echo "\
+X	echo "\
 Unable to locate ip2 proc file.
 Attempting to load driver"
-
-	if insmod ip2
-	then
-		if test ! -f /proc/tty/driver/ip2
-		then
-			echo "\
+X
+X	if /sbin/insmod ip2
+X	then
+X		if test ! -f /proc/tty/driver/ip2
+X		then
+X			echo "\
 Unable to locate ip2 proc file after loading driver.
 Driver initialization failure or driver version error.
 "
-		exit 255
-		fi
-	else
-		echo "Unable to load ip2 driver."
-		exit 255
-	fi
+X		exit 255
+X		fi
+X	else
+X		echo "Unable to load ip2 driver."
+X		exit 255
+X	fi
 fi
-
+X
 # Ok...  So we got the driver loaded and we can locate the procfs files.
 # Next we need our major numbers.
-
+X
 TTYMAJOR=`sed -e '/^ip2/!d' -e '/\/dev\/tty/!d' -e 's/.*tty.[ 	]*\([0-9]*\)[ 	]*.*/\1/' < /proc/tty/drivers`
 CUAMAJOR=`sed -e '/^ip2/!d' -e '/\/dev\/cu/!d' -e 's/.*cu.[ 	]*\([0-9]*\)[ 	]*.*/\1/' < /proc/tty/drivers`
 BRDMAJOR=`sed -e '/^Driver: /!d' -e 's/.*IMajor=\([0-9]*\)[ 	]*.*/\1/' < /proc/tty/driver/ip2`
-
+X
 echo "\
 TTYMAJOR = $TTYMAJOR
 CUAMAJOR = $CUAMAJOR
 BRDMAJOR = $BRDMAJOR
 "
-
+X
 # Ok...  Now we should know our major numbers, if appropriate...
 # Now we need our boards and start the device loops.
-
+X
 grep '^Board [0-9]:' /proc/tty/driver/ip2 | while read token number type alltherest
 do
-	# The test for blank "type" will catch the stats lead-in lines
-	# if they exist in the file
-	if test "$type" = "vacant" -o "$type" = "Vacant" -o "$type" = ""
-	then
-		continue
-	fi
-
-	BOARDNO=`expr "$number" : '\([0-9]\):'`
-	PORTS=`expr "$alltherest" : '.*ports=\([0-9]*\)' | tr ',' ' '`
-	MINORS=`expr "$alltherest" : '.*minors=\([0-9,]*\)' | tr ',' ' '`
-
-	if test "$BOARDNO" = "" -o "$PORTS" = ""
-	then
+X	# The test for blank "type" will catch the stats lead-in lines
+X	# if they exist in the file
+X	if test "$type" = "vacant" -o "$type" = "Vacant" -o "$type" = ""
+X	then
+X		continue
+X	fi
+X
+X	BOARDNO=`expr "$number" : '\([0-9]\):'`
+X	PORTS=`expr "$alltherest" : '.*ports=\([0-9]*\)' | tr ',' ' '`
+X	MINORS=`expr "$alltherest" : '.*minors=\([0-9,]*\)' | tr ',' ' '`
+X
+X	if test "$BOARDNO" = "" -o "$PORTS" = ""
+X	then
 #	This may be a bug.  We should at least get this much information
-		echo "Unable to process board line"
-		continue
-	fi
-
-	if test "$MINORS" = ""
-	then
+X		echo "Unable to process board line"
+X		continue
+X	fi
+X
+X	if test "$MINORS" = ""
+X	then
 #	Silently skip this one.  This board seems to have no boxes
-		continue
-	fi
-
-	echo "board $BOARDNO: $type ports = $PORTS; port numbers = $MINORS"
-
-	if test "$BRDMAJOR" != ""
-	then
-		BRDMINOR=`expr $BOARDNO \* 4`
-		STSMINOR=`expr $BRDMINOR + 1`
-		if test ! -c /dev/ip2ipl$BOARDNO ; then
-			mknod /dev/ip2ipl$BOARDNO c $BRDMAJOR $BRDMINOR
-		fi
-		if test ! -c /dev/ip2stat$BOARDNO ; then
-			mknod /dev/ip2stat$BOARDNO c $BRDMAJOR $STSMINOR
-		fi
-	fi
-
-	if test "$TTYMAJOR" != ""
-	then
-		PORTNO=$BOARDBASE
-
-		for PORTNO in $MINORS
-		do
-			if test ! -c /dev/ttyF$PORTNO ; then
-				# We got the harware but no device - make it
-				mknod /dev/ttyF$PORTNO c $TTYMAJOR $PORTNO
-			fi	
-		done
-	fi
-
-	if test "$CUAMAJOR" != ""
-	then
-		PORTNO=$BOARDBASE
-
-		for PORTNO in $MINORS
-		do
-			if test ! -c /dev/cuf$PORTNO ; then
-				# We got the harware but no device - make it
-				mknod /dev/cuf$PORTNO c $CUAMAJOR $PORTNO
-			fi	
-		done
-	fi
+X		continue
+X	fi
+X
+X	echo "board $BOARDNO: $type ports = $PORTS; port numbers = $MINORS"
+X
+X	if test "$BRDMAJOR" != ""
+X	then
+X		BRDMINOR=`expr $BOARDNO \* 4`
+X		STSMINOR=`expr $BRDMINOR + 1`
+X		if test ! -c /dev/ip2ipl$BOARDNO ; then
+X			mknod /dev/ip2ipl$BOARDNO c $BRDMAJOR $BRDMINOR
+X		fi
+X		if test ! -c /dev/ip2stat$BOARDNO ; then
+X			mknod /dev/ip2stat$BOARDNO c $BRDMAJOR $STSMINOR
+X		fi
+X	fi
+X
+X	if test "$TTYMAJOR" != ""
+X	then
+X		PORTNO=$BOARDBASE
+X
+X		for PORTNO in $MINORS
+X		do
+X			if test ! -c /dev/ttyF$PORTNO ; then
+X				# We got the harware but no device - make it
+X				mknod /dev/ttyF$PORTNO c $TTYMAJOR $PORTNO
+X			fi	
+X		done
+X	fi
+X
+X	if test "$CUAMAJOR" != ""
+X	then
+X		PORTNO=$BOARDBASE
+X
+X		for PORTNO in $MINORS
+X		do
+X			if test ! -c /dev/cuf$PORTNO ; then
+X				# We got the harware but no device - make it
+X				mknod /dev/cuf$PORTNO c $CUAMAJOR $PORTNO
+X			fi	
+X		done
+X	fi
 done
-
+X
+Xexit 0
+SHAR_EOF
+  $shar_touch -am 1217160599 'ip2mkdev' &&
+  chmod 0755 'ip2mkdev' ||
+  $echo 'restore of' 'ip2mkdev' 'failed'
+  if ( md5sum --help 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
+  && ( md5sum --version 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
+    md5sum -c << SHAR_EOF >/dev/null 2>&1 \
+    || $echo 'ip2mkdev:' 'MD5 check failed'
+eccd181f4a2005e47a969fc83885df61  ip2mkdev
+SHAR_EOF
+  else
+    shar_count="`LC_ALL= LC_CTYPE= LANG= wc -c < 'ip2mkdev'`"
+    test 3300 -eq "$shar_count" ||
+    $echo 'ip2mkdev:' 'original size' '3300,' 'current size' "$shar_count!"
+  fi
+fi
+rm -fr _sh06360
 exit 0
-===== Cut Here ===== 
diff -urN linux-2.2.14-pre18/Documentation/sound/Maestro linux/Documentation/sound/Maestro
--- linux-2.2.14-pre18/Documentation/sound/Maestro	Wed Dec 31 16:00:00 1969
+++ linux/Documentation/sound/Maestro	Mon Dec  3 21:57:23 2001
@@ -0,0 +1,98 @@
+	An OSS/Lite Driver for the ESS Maestro family of sound cards
+
+			Zach Brown, December 1999
+
+Driver Status and Availability
+------------------------------
+
+The most recent version of this driver will hopefully always be available at
+	http://people.redhat.com/zab/maestro/
+
+I will try and maintain the most recent stable version of the driver
+in both the stable and development kernel lines.
+
+ESS Maestro Chip Family
+-----------------------
+
+There are 3 main variants of the ESS Maestro PCI sound chip.  The first
+is the Maestro 1.  It was originally produced by Platform Tech as the
+'AGOGO'.  It can be recognized by Platform Tech's PCI ID 0x1285 with
+0x0100 as the device ID.  It was put on some sound boards and a few laptops.  
+ESS bought the design and cleaned it up as the Maestro 2.  This starts
+their marking with the ESS vendor ID 0x125D and the 'year' device IDs.
+The Maestro 2 claims 0x1968 while the Maestro 2e has 0x1978.
+
+The various families of Maestro are mostly identical as far as this 
+driver is concerned.  It doesn't touch the DSP parts that differ (though
+it could for FM synthesis)
+
+Driver OSS Behavior
+--------------------
+
+This OSS driver exports /dev/mixer and /dev/dsp to applications, which
+mostly adhere to the OSS spec.   This driver doesn't register itself
+with /dev/sndstat, so don't expect information to appear there.
+
+The /dev/dsp device exported behaves almost as expected.  Playback is
+supported in all the various lovely formats.  8/16bit stereo/mono from
+8khz to 48khz, and mmap()ing for playback behaves.  Capture/recording
+is limited due to oddities with the Maestro hardware.  One can only
+record in 16bit stereo.  For recording the maestro uses non interleaved
+stereo buffers so that mmap()ing the incoming data does not result in
+a ring buffer of LRLR data.  mmap()ing of the read buffers is therefore
+disallowed until this can be cleaned up.
+
+/dev/mixer is an interface to the AC'97 codec on the Maestro.  It is
+worth noting that there are a variety of AC'97s that can be wired to
+the Maestro.  Which is used is entirely up to the hardware implementor.
+This should only be visible to the user by the presence, or lack, of
+'Bass' and 'Treble' sliders in the mixer.  Not all AC'97s have them.
+
+The driver doesn't support MIDI or FM playback at the moment.  Typically
+the Maestro is wired to an MPU MIDI chip, but some hardware implementations
+don't.  We need to assemble a white list of hardware implementations that
+have MIDI wired properly before we can claim to support it safely.
+
+Compiling and Installing
+------------------------
+
+With the drivers inclusion into the kernel, compiling and installing
+is the same as most OSS/Lite modular sound drivers.  Compilation
+of the driver is enabled through the CONFIG_SOUND_MAESTRO variable
+in the config system.  
+
+It may be modular or statically linked.  If it is modular it should be
+installed with the rest of the modules for the kernel on the system.
+Typically this will be in /lib/modules/ somewhere.  'alias sound maestro'
+should also be added to your module configs (typically /etc/conf.modules)
+if you're using modular OSS/Lite sound and want to default to using a
+maestro chip.
+
+As this is a PCI device, the module does not need to be informed of
+any IO or IRQ resources it should use, it devines these from the
+system.  Somtimes, on sucky PCs, the BIOS fails to allocated resources
+for the maestro.  This will result in a message like:
+	maestro: PCI subsystem reports IRQ 0, this might not be correct.
+from the kernel.  Should this happen the sound chip most likely will
+not operate correctly.  To solve this one has to dig through their BIOS
+(typically entered by hitting a hot key at boot time) and figure out
+what magic needs to happen so that the BIOS will reward the maestro with
+an IRQ.  This operation is incredibly system specific, so you're on your
+own.  Sometimes the magic lies in 'PNP Capable Operating System' settings.
+
+There are very few options to the driver.  One is 'debug' which will 
+tell the driver to print minimal debugging information as it runs.  This
+can be collected with 'dmesg' or through the klogd daemon.
+
+The other, more interesting option, is 'dsps_order'.  Typically at
+install time the driver will only register one available /dev/dsp device
+for its use.  The 'dsps_order' module parameter allows for more devices
+to be allocated, as a power of two.  Up to 4 devices can be registered
+( dsps_order=2 ).  These devices act as fully distinct units and use
+separate channels in the maestro.
+
+.. more details ..
+-----------------
+
+drivers/sound/maestro.c contains comments that hopefully explain
+the maestro implementation.
diff -urN linux-2.2.14-pre18/MAINTAINERS linux/MAINTAINERS
--- linux-2.2.14-pre18/MAINTAINERS	Mon Dec  3 21:57:17 2001
+++ linux/MAINTAINERS	Mon Dec  3 21:57:23 2001
@@ -501,6 +501,12 @@
 W:    http://linux.msede.com/lvm
 S:    Maintained
 
+MAESTRO PCI SOUND DRIVER
+P:	Zach Brown
+M:	zab@redhat.com
+W:	http://people.redhat.com/zab/maestro/
+S:	Supported
+
 M68K
 P:	Jes Sorensen
 M:	Jes.Sorensen@cern.ch
diff -urN linux-2.2.14-pre18/Makefile linux/Makefile
--- linux-2.2.14-pre18/Makefile	Mon Dec  3 21:57:17 2001
+++ linux/Makefile	Mon Dec  3 21:57:23 2001
@@ -1,7 +1,7 @@
 VERSION = 2
 PATCHLEVEL = 2
 SUBLEVEL = 14
-EXTRAVERSION = pre18
+EXTRAVERSION = 
 
 ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
 
diff -urN linux-2.2.14-pre18/drivers/isdn/eicon/eicon_mod.c linux/drivers/isdn/eicon/eicon_mod.c
--- linux-2.2.14-pre18/drivers/isdn/eicon/eicon_mod.c	Mon Dec  3 21:57:17 2001
+++ linux/drivers/isdn/eicon/eicon_mod.c	Mon Dec  3 21:57:24 2001
@@ -849,8 +849,7 @@
 }
 
 /* jiftime() copied from HiSax */
-inline int
-jiftime(char *s, long mark)
+static inline int jiftime(char *s, long mark)
 {
         s += 8;
 
diff -urN linux-2.2.14-pre18/drivers/misc/parport_pc.c linux/drivers/misc/parport_pc.c
--- linux-2.2.14-pre18/drivers/misc/parport_pc.c	Mon Dec  3 21:57:17 2001
+++ linux/drivers/misc/parport_pc.c	Mon Dec  3 21:57:24 2001
@@ -855,12 +855,12 @@
 static int parport_pc_init_pci (int irq, int dma)
 {
 	struct {
-		unsigned int vendor;
-		unsigned int device;
-		unsigned int numports;
+		unsigned short vendor;
+		unsigned short device;
+		int numports;
 		struct {
-			unsigned long lo;
-			unsigned long hi; /* -ve if not there */
+			int lo;
+			int hi; /* -ve if not there */
 		} addr[4];
 	} cards[] = {
 		{ PCI_VENDOR_ID_SIIG, PCI_DEVICE_ID_SIIG_1S1P_10x_550, 1,
@@ -924,8 +924,8 @@
 						  pcidev)) != NULL) {
 			int n;
 			for (n = 0; n < cards[i].numports; n++) {
-				unsigned long lo = cards[i].addr[n].lo;
-				unsigned long hi = cards[i].addr[n].hi;
+				int lo = cards[i].addr[n].lo;
+				int hi = cards[i].addr[n].hi;
 				unsigned long io_lo, io_hi;
 				io_lo = pcidev->base_address[lo];
 				io_hi = ((hi < 0) ? 0 :
diff -urN linux-2.2.14-pre18/drivers/scsi/seagate.c linux/drivers/scsi/seagate.c
--- linux-2.2.14-pre18/drivers/scsi/seagate.c	Mon Dec  3 21:57:18 2001
+++ linux/drivers/scsi/seagate.c	Mon Dec  3 21:57:24 2001
@@ -250,6 +250,10 @@
                                                    boards */
 static int irq = IRQ;
 
+MODULE_PARM(base_address, "i");
+MODULE_PARM(controller_type, "b");
+MODULE_PARM(irq, "i");
+
 #define retcode(result) (((result) << 16) | (message << 8) | status)
 #define STATUS ((u8) readb(st0x_cr_sr))
 #define DATA ((u8) readb(st0x_dr))
diff -urN linux-2.2.14-pre18/drivers/telephony/ixj.c linux/drivers/telephony/ixj.c
--- linux-2.2.14-pre18/drivers/telephony/ixj.c	Mon Dec  3 21:57:18 2001
+++ linux/drivers/telephony/ixj.c	Mon Dec  3 21:57:25 2001
@@ -523,7 +523,7 @@
 			}
 			if (!j->flags.ringing) {
 				if (ixj_hookstate(board)) {
-					if (j->dsp.low == 0x21 &&
+					if ((j->dsp.low == 0x21 || j->dsp.low == 0x22 )&&
 					    j->pld_slicr.bits.state != PLD_SLIC_STATE_ACTIVE)
                // Internet LineJACK
 					{
@@ -539,7 +539,7 @@
 							kill_fasync(j->async_queue, SIGIO);	// Send apps notice of change
 					}
 				} else {
-					if (j->dsp.low == 0x21 &&
+					if ((j->dsp.low == 0x21 || j->dsp.low == 0x22) &&
 					    j->pld_slicr.bits.state == PLD_SLIC_STATE_ACTIVE)
                // Internet LineJACK
 					{
diff -urN linux-2.2.14-pre18/drivers/video/matroxfb.c linux/drivers/video/matroxfb.c
--- linux-2.2.14-pre18/drivers/video/matroxfb.c	Mon Dec  3 21:57:18 2001
+++ linux/drivers/video/matroxfb.c	Mon Dec  3 21:57:25 2001
@@ -63,6 +63,9 @@
  *               "Mark Vojkovich" <mvojkovi@ucsd.edu>
  *                     G400 support
  *
+ *               "Samuel Hocevar" <sam@via.ecp.fr>
+ *                     Fixes
+ *
  * (following author is not in any relation with this code, but his code
  *  is included in this driver)
  *
@@ -5022,7 +5025,7 @@
 static struct { struct fb_bitfield red, green, blue, transp; int bits_per_pixel; } colors[] __initdata = {
 	{ {  0, 8, 0}, { 0, 8, 0}, { 0, 8, 0}, {  0, 0, 0},  8 },
 	{ { 10, 5, 0}, { 5, 5, 0}, { 0, 5, 0}, { 15, 1, 0}, 16 },
-	{ { 11, 5, 0}, { 6, 5, 0}, { 0, 5, 0}, {  0, 0, 0}, 16 },
+	{ { 11, 5, 0}, { 5, 6, 0}, { 0, 5, 0}, {  0, 0, 0}, 16 },
 	{ { 16, 8, 0}, { 8, 8, 0}, { 0, 8, 0}, { 24, 8, 0}, 32 },
 	{ {  0, 8, 0}, { 0, 8, 0}, { 0, 8, 0}, {  0, 0, 0},  4 },
 	{ { 16, 8, 0}, { 8, 8, 0}, { 0, 8, 0}, {  0, 0, 0}, 24 },
