diff -N -r -u -X .ignore gnugo-copy/doc/patterns.texi gnugo/doc/patterns.texi
--- gnugo-copy/doc/patterns.texi	2005-04-16 22:47:36.000000000 +0200
+++ gnugo/doc/patterns.texi	2007-02-18 18:41:23.531250000 +0100
@@ -1397,6 +1397,12 @@
 @file{patterns.h}) by a standalone program @file{mkpat.c}, and the resulting 
 @file{.c} files are compiled and linked into the main GNU Go executable.
 
+IMPORTANT: After any change in patterns, which uses DFA pattern matching, one
+should optimize pattern databases, in which the changes was made. This is done
+by running a part of @file{optimize} script in @file{patterns} directory. Run
+only parts of this script, which refers to desired databases, because it takes
+a very long time to execute.
+
 Each pattern is compiled to a header, and a sequence of elements,
 which are (notionally) checked sequentially at every position and
 orientation of the board. These elements are relative to the pattern
diff -N -r -u -X .ignore gnugo-copy/engine/matchpat.c gnugo/engine/matchpat.c
--- gnugo-copy/engine/matchpat.c	2007-02-04 15:52:52.890625000 +0100
+++ gnugo/engine/matchpat.c	2007-02-10 21:54:42.362125000 +0100
@@ -649,25 +649,26 @@
 static int
 scan_for_patterns(dfa_rt_t *pdfa, int l, int *dfa_pos, int *pat_list)
 {
-  int delta;
-  const state_rt_t *state = pdfa->states + 1; /* initial state */
+  int act = 1; /* initial state */
+  const state_rt_t *state, *start = pdfa->states;
   int row = 0; /* initial row */
   int id = 0; /* position in id_list */
+  int att;
 
   for (;;) {
+    state = start + act;
+
     /* collect patterns indexes */
-    int att = state->att;
+    att = state->att;
     while (att != 0) {
       pat_list[id++] = pdfa->indexes[att].val;
       att = pdfa->indexes[att].next;
     }
 
     /* go to next state */
-    delta = state->next[*(dfa_pos + spiral[row++][l])];
-    if (!delta)
+    act = state->next[*(dfa_pos + spiral[row++][l])];
+    if (!act)
       return id; /* error state */
-
-    state += delta;
   }
 }
 
diff -N -r -u -X .ignore gnugo-copy/engine/owl.c gnugo/engine/owl.c
--- gnugo-copy/engine/owl.c	2007-02-17 14:38:08.906250000 +0100
+++ gnugo/engine/owl.c	2007-02-18 18:27:58.812500000 +0100
@@ -5079,6 +5079,7 @@
     signed char component[MAX_CUTS];
     signed char component2[BOARDMAX];
     int component_size[MAX_CUTS];
+    int component_libs[MAX_CUTS];
     int num_components;
     int biggest_component = -1;
     struct connection_data *conn_data;
@@ -5103,6 +5104,7 @@
      */
     memset(component2, -1, BOARDMAX);
     memset(component_size, 0, sizeof(int) * num_components);
+    memset(component_libs, 0, sizeof(int) * num_components);
     conn_data = malloc(sizeof(struct connection_data) * num_components);
     for (c_id = 0; c_id < num_components; c_id++) {
       signed char this_goal[BOARDMAX];
@@ -5138,17 +5140,27 @@
       if (closest_component != -1) {
 	mark_string(pos, component2, closest_component);
 	component_size[closest_component] += countstones(pos);
+	component_libs[closest_component] += countlib(pos);
       }
     }
 
-    /* Now find the biggest_component. */
+    /* Now find the biggest_component. If some components have the same
+     * size, one with the fewest number of liberties is chosen.
+     */
     {
       int biggest_size = 0;
+      int fewest_libs = (size_t)-1;
       for (c_id = 0; c_id < num_components; c_id++)
 	if (component_size[c_id] > biggest_size) {
 	  biggest_size = component_size[c_id];
+	  fewest_libs = component_libs[c_id];
 	  biggest_component = c_id;
 	}
+	else if (component_size[c_id] == biggest_size
+		 && component_libs[c_id] < fewest_libs) {
+	    fewest_libs = component_libs[c_id];
+	    biggest_component = c_id;
+	}
       gg_assert(biggest_component != -1);
     }
 
diff -N -r -u -X .ignore gnugo-copy/patterns/Makefile.am gnugo/patterns/Makefile.am
--- gnugo-copy/patterns/Makefile.am	2005-10-01 00:25:04.000000000 +0200
+++ gnugo/patterns/Makefile.am	2007-02-10 21:16:38.221500000 +0100
@@ -3,7 +3,9 @@
 
 DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp
 DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \
-       owl_vital_apats.dtr
+       owl_vital_apats.dtr attack.dtr defense.dtr conn.dtr \
+       barriers.dtr endgame.dtr handicap.dtr influence.dtr \
+       patterns.dtr
 
 EXTRA_DIST = $(DSP)\
         $(DTR)\
@@ -121,33 +123,39 @@
 takamoku.db : $(srcdir)/takamoku.sgf joseki$(EXEEXT)
 	./joseki JT $(srcdir)/takamoku.sgf >takamoku.db
 
-patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db mkpat$(EXEEXT)
-	./mkpat -b pat -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db \
-               -o patterns.c
+patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db $(srcdir)/patterns.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/patterns.dtr pat \
+               -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db -o patterns.c
 
 josekidb.c : $(DBBUILT) mkpat$(EXEEXT)
 	./mkpat -C joseki $(DBBUILT_INPUT) -o josekidb.c
 
-apatterns.c : $(srcdir)/attack.db mkpat$(EXEEXT)
-	./mkpat -X attpat -i $(srcdir)/attack.db -o apatterns.c
-
-dpatterns.c : $(srcdir)/defense.db mkpat$(EXEEXT)
-	./mkpat defpat -i $(srcdir)/defense.db -o dpatterns.c
-
-conn.c : $(srcdir)/conn.db mkpat$(EXEEXT)
-	./mkpat -c conn -i $(srcdir)/conn.db -o conn.c
-
-endgame.c : $(srcdir)/endgame.db mkpat$(EXEEXT)
-	./mkpat -b endpat -i $(srcdir)/endgame.db -o endgame.c
+apatterns.c : $(srcdir)/attack.db $(srcdir)/attack.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -X -t $(srcdir)/attack.dtr attpat \
+               -i $(srcdir)/attack.db -o apatterns.c
+
+dpatterns.c : $(srcdir)/defense.db $(srcdir)/defense.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -t $(srcdir)/defense.dtr defpat \
+               -i $(srcdir)/defense.db -o dpatterns.c
+
+conn.c : $(srcdir)/conn.db $(srcdir)/conn.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/conn.dtr conn \
+               -i $(srcdir)/conn.db -o conn.c
+
+endgame.c : $(srcdir)/endgame.db $(srcdir)/endgame.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/endgame.dtr endpat \
+               -i $(srcdir)/endgame.db -o endgame.c
 
 eyes.c: $(srcdir)/eyes.db mkeyes$(EXEEXT)
 	./mkeyes < $(srcdir)/eyes.db >eyes.c
 
-influence.c : $(srcdir)/influence.db mkpat$(EXEEXT)
-	./mkpat -c influencepat -i $(srcdir)/influence.db -o influence.c
-
-barriers.c : $(srcdir)/barriers.db mkpat$(EXEEXT)
-	./mkpat -c -b barrierspat -i $(srcdir)/barriers.db -o barriers.c
+influence.c : $(srcdir)/influence.db $(srcdir)/influence.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/influence.dtr influencepat \
+               -i $(srcdir)/influence.db -o influence.c
+
+barriers.c : $(srcdir)/barriers.db $(srcdir)/barriers.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -b -t $(srcdir)/barriers.dtr barrierspat \
+               -i $(srcdir)/barriers.db -o barriers.c
 
 aa_attackpat.c : $(srcdir)/aa_attackpats.db $(srcdir)/aa_attackpats.dtr mkpat$(EXEEXT)
 	./mkpat $(DFAFLAGS) -b -t $(srcdir)/aa_attackpats.dtr aa_attackpat \
@@ -169,7 +177,7 @@
                -i $(srcdir)/owl_defendpats.db -o owl_defendpat.c
 
 fusekipat.c : $(srcdir)/fuseki.db mkpat$(EXEEXT)
-	./mkpat -b fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
+	./mkpat -b -m fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
 
 fuseki9.c : $(srcdir)/fuseki9.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 9 $(srcdir)/fuseki9.dbz c >fuseki9.c
@@ -180,8 +188,9 @@
 fuseki19.c : $(srcdir)/fuseki19.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 19 $(srcdir)/fuseki19.dbz c >fuseki19.c
 
-handipat.c : $(srcdir)/handicap.db mkpat$(EXEEXT)
-	./mkpat -b handipat -i $(srcdir)/handicap.db -o handipat.c
+handipat.c : $(srcdir)/handicap.db $(srcdir)/handicap.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/handicap.dtr handipat \
+               -i $(srcdir)/handicap.db -o handipat.c
 
 
 ETAGS_ARGS = --language none --regex '/^Pattern[ \t]+[a-zA-Z0-9]+/' $(DB_TO_TAG)\
diff -N -r -u -X .ignore gnugo-copy/patterns/Makefile.in gnugo/patterns/Makefile.in
--- gnugo-copy/patterns/Makefile.in	2005-10-10 06:05:18.000000000 +0200
+++ gnugo/patterns/Makefile.in	2007-02-10 21:16:21.643375000 +0100
@@ -80,7 +80,9 @@
 
 DSP = dfa.dsp patterns.dsp joseki.dsp mkeyes.dsp mkpat.dsp fuseki.dsp
 DTR = aa_attackpats.dtr owl_attackpats.dtr owl_defendpats.dtr \
-       owl_vital_apats.dtr
+       owl_vital_apats.dtr attack.dtr defense.dtr conn.dtr \
+       barriers.dtr endgame.dtr handicap.dtr influence.dtr \
+       patterns.dtr
 
 
 EXTRA_DIST = $(DSP)\
@@ -526,33 +528,39 @@
 takamoku.db : $(srcdir)/takamoku.sgf joseki$(EXEEXT)
 	./joseki JT $(srcdir)/takamoku.sgf >takamoku.db
 
-patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db mkpat$(EXEEXT)
-	./mkpat -b pat -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db \
-               -o patterns.c
+patterns.c : $(srcdir)/patterns.db $(srcdir)/patterns2.db $(srcdir)/patterns.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/patterns.dtr pat \
+               -i $(srcdir)/patterns.db -i$(srcdir)/patterns2.db -o patterns.c
 
 josekidb.c : $(DBBUILT) mkpat$(EXEEXT)
 	./mkpat -C joseki $(DBBUILT_INPUT) -o josekidb.c
 
-apatterns.c : $(srcdir)/attack.db mkpat$(EXEEXT)
-	./mkpat -X attpat -i $(srcdir)/attack.db -o apatterns.c
-
-dpatterns.c : $(srcdir)/defense.db mkpat$(EXEEXT)
-	./mkpat defpat -i $(srcdir)/defense.db -o dpatterns.c
-
-conn.c : $(srcdir)/conn.db mkpat$(EXEEXT)
-	./mkpat -c conn -i $(srcdir)/conn.db -o conn.c
-
-endgame.c : $(srcdir)/endgame.db mkpat$(EXEEXT)
-	./mkpat -b endpat -i $(srcdir)/endgame.db -o endgame.c
+apatterns.c : $(srcdir)/attack.db $(srcdir)/attack.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -X -t $(srcdir)/attack.dtr attpat \
+               -i $(srcdir)/attack.db -o apatterns.c
+
+dpatterns.c : $(srcdir)/defense.db $(srcdir)/defense.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -t $(srcdir)/defense.dtr defpat \
+               -i $(srcdir)/defense.db -o dpatterns.c
+
+conn.c : $(srcdir)/conn.db $(srcdir)/conn.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/conn.dtr conn \
+               -i $(srcdir)/conn.db -o conn.c
+
+endgame.c : $(srcdir)/endgame.db $(srcdir)/endgame.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/endgame.dtr endpat \
+               -i $(srcdir)/endgame.db -o endgame.c
 
 eyes.c: $(srcdir)/eyes.db mkeyes$(EXEEXT)
 	./mkeyes < $(srcdir)/eyes.db >eyes.c
 
-influence.c : $(srcdir)/influence.db mkpat$(EXEEXT)
-	./mkpat -c influencepat -i $(srcdir)/influence.db -o influence.c
-
-barriers.c : $(srcdir)/barriers.db mkpat$(EXEEXT)
-	./mkpat -c -b barrierspat -i $(srcdir)/barriers.db -o barriers.c
+influence.c : $(srcdir)/influence.db $(srcdir)/influence.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -t $(srcdir)/influence.dtr influencepat \
+               -i $(srcdir)/influence.db -o influence.c
+
+barriers.c : $(srcdir)/barriers.db $(srcdir)/barriers.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -c -b -t $(srcdir)/barriers.dtr barrierspat \
+               -i $(srcdir)/barriers.db -o barriers.c
 
 aa_attackpat.c : $(srcdir)/aa_attackpats.db $(srcdir)/aa_attackpats.dtr mkpat$(EXEEXT)
 	./mkpat $(DFAFLAGS) -b -t $(srcdir)/aa_attackpats.dtr aa_attackpat \
@@ -574,7 +582,7 @@
                -i $(srcdir)/owl_defendpats.db -o owl_defendpat.c
 
 fusekipat.c : $(srcdir)/fuseki.db mkpat$(EXEEXT)
-	./mkpat -b fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
+	./mkpat -b -m fusekipat -i $(srcdir)/fuseki.db -o fusekipat.c
 
 fuseki9.c : $(srcdir)/fuseki9.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 9 $(srcdir)/fuseki9.dbz c >fuseki9.c
@@ -585,8 +593,9 @@
 fuseki19.c : $(srcdir)/fuseki19.dbz uncompress_fuseki$(EXEEXT)
 	./uncompress_fuseki 19 $(srcdir)/fuseki19.dbz c >fuseki19.c
 
-handipat.c : $(srcdir)/handicap.db mkpat$(EXEEXT)
-	./mkpat -b handipat -i $(srcdir)/handicap.db -o handipat.c
+handipat.c : $(srcdir)/handicap.db $(srcdir)/handicap.dtr mkpat$(EXEEXT)
+	./mkpat $(DFAFLAGS) -b -t $(srcdir)/handicap.dtr handipat \
+               -i $(srcdir)/handicap.db -o handipat.c
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
 # Otherwise a system limit (for SysV at least) may be exceeded.
 .NOEXPORT:
diff -N -r -u -X .ignore gnugo-copy/patterns/aa_attackpats.dtr gnugo/patterns/aa_attackpats.dtr
--- gnugo-copy/patterns/aa_attackpats.dtr	2003-07-10 14:58:24.000000000 +0200
+++ gnugo/patterns/aa_attackpats.dtr	2007-02-08 10:23:11.875000000 +0100
@@ -1,11 +1,13 @@
-A1	1
+A1	0
 A2	3
 A3	0
 A4	0
 A5	1
 A6	1
 A7	1
-A8	1
+A7b	4
+A7c	1
+A8	5
 A9	0
 A10	2
 A11	4
@@ -16,8 +18,11 @@
 A16	6
 A17	0
 A18	6
-A19	1
-A20	6
+A19	6
+A20	4
 A21	0
 A22	1
-A23	5
+A23	2
+A24	1
+A25	0
+A26	1
diff -N -r -u -X .ignore gnugo-copy/patterns/attack.dtr gnugo/patterns/attack.dtr
--- gnugo-copy/patterns/attack.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/attack.dtr	2007-02-08 14:50:30.828125000 +0100
@@ -0,0 +1,14 @@
+Attack1	0
+Attack2	0
+Attack4	2
+Attack5	0
+Attack6	6
+Attack10	0
+Attack11	6
+Attack13	1
+Attack14	2
+Attack15	0
+Attack16	5
+Attack17	0
+Attack18	6
+Attack19	4
diff -N -r -u -X .ignore gnugo-copy/patterns/barriers.dtr gnugo/patterns/barriers.dtr
--- gnugo-copy/patterns/barriers.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/barriers.dtr	2007-02-10 21:49:12.096500000 +0100
@@ -0,0 +1,218 @@
+Barrier1	1
+Barrier1b	1
+Barrier2	1
+Barrier3	1
+Barrier4a	3
+Barrier4b	4
+Barrier5	0
+Barrier6	7
+Barrier6b	0
+Barrier7	0
+Barrier8	1
+Barrier9	1
+Barrier10	0
+Barrier11	0
+Barrier12	6
+Barrier13	0
+Barrier14	0
+Barrier15	6
+Barrier16	5
+Barrier16b	6
+Barrier17	6
+Barrier18	6
+Barrier19	0
+Barrier20	0
+Barrier21	1
+Barrier22	0
+Barrier22a	6
+Barrier22b	0
+Barrier23	5
+Barrier24	0
+Barrier25	6
+Barrier26	5
+Barrier27	0
+Barrier28	0
+Barrier29	7
+Barrier30	0
+Barrier31	0
+Barrier32	7
+Barrier33	0
+Barrier34	7
+Barrier34b	0
+Barrier35	0
+Barrier36	0
+Barrier37	7
+Barrier38	7
+Barrier39	6
+Barrier40	0
+Barrier41a	3
+Barrier41b	3
+Barrier42	7
+Barrier43	6
+Barrier44	0
+Barrier45	0
+Barrier46	6
+Barrier47	0
+Barrier48	0
+Barrier49	0
+Barrier50	0
+Barrier51	5
+Barrier52	7
+Barrier53	7
+Barrier54	0
+Barrier55	6
+Barrier56	6
+Barrier56b	0
+Barrier57	6
+Barrier58	4
+Barrier59	1
+Barrier60a	3
+Barrier60b	3
+Barrier61	0
+Barrier62	6
+Barrier63	0
+Barrier64	0
+Barrier65	6
+Barrier66	7
+Barrier67	0
+Intrusion1	7
+Intrusion1a	7
+Intrusion1b	3
+Intrusion1c	3
+Intrusion1d	3
+Intrusion2	3
+Intrusion3	7
+Intrusion4	0
+Intrusion5a	7
+Intrusion5b	0
+Intrusion6	7
+Intrusion7b	6
+Intrusion8a	6
+Intrusion8b	1
+Intrusion9	1
+Intrusion10	7
+Intrusion11	0
+Intrusion12a	0
+Intrusion12b	0
+Intrusion13	7
+Intrusion14	0
+Intrusion15	7
+Intrusion16	0
+Intrusion17	6
+Intrusion18	1
+Intrusion19	6
+Intrusion20	0
+Intrusion21	0
+Intrusion21b	6
+Intrusion22	0
+Intrusion23	0
+Intrusion24	0
+Intrusion25	7
+Intrusion26	7
+Intrusion27	6
+Intrusion28	0
+Intrusion29	6
+Intrusion30	7
+Intrusion30a	0
+Intrusion31	7
+Intrusion32	7
+Intrusion33	5
+Intrusion34	0
+Intrusion35	7
+Intrusion36	1
+Intrusion37	1
+Intrusion38	7
+Intrusion39	1
+Intrusion40	5
+Intrusion41	5
+Intrusion42	7
+Intrusion43	4
+Intrusion44a	3
+Intrusion44b	4
+Intrusion45	7
+Intrusion46	0
+Intrusion47	6
+Intrusion48	5
+Intrusion49	0
+Intrusion50	6
+Intrusion51a	0
+Intrusion51b	0
+Intrusion52	6
+Intrusion53	1
+Intrusion54	4
+Intrusion55	7
+Intrusion56	7
+Intrusion57	3
+Intrusion58	7
+Intrusion59	2
+Intrusion60	7
+Intrusion61	3
+Intrusion62	0
+Intrusion63	0
+Nonterritory1	0
+Nonterritory1b	6
+Nonterritory1c	6
+Nonterritory2	4
+Nonterritory3	4
+Nonterritory4	7
+Nonterritory5	7
+Nonterritory6	7
+Nonterritory7	0
+Nonterritory7b	0
+Nonterritory7c	7
+Nonterritory8	0
+Nonterritory8b	0
+Nonterritory9	0
+Nonterritory10	5
+Nonterritory11	7
+Nonterritory12	1
+Nonterritory13	0
+Nonterritory14	5
+Nonterritory15	2
+Nonterritory16	7
+Nonterritory17	6
+Nonterritory17b	0
+Nonterritory18a	0
+Nonterritory18b	0
+Nonterritory19	3
+Nonterritory20	7
+Nonterritory21	3
+Nonterritory22	3
+Nonterritory23	1
+Nonterritory24	0
+Nonterritory25	6
+Nonterritory26	0
+Nonterritory27	1
+Nonterritory28	0
+Nonterritory29	0
+Nonterritory30	0
+Nonterritory31	7
+Nonterritory32	1
+Nonterritory33	0
+Nonterritory34	0
+Nonterritory35	3
+Nonterritory36	0
+Nonterritory37	1
+Nonterritory38	6
+Nonterritory39	1
+Nonterritory40	3
+Nonterritory41	5
+Nonterritory42	6
+Nonterritory43	0
+Nonterritory44	7
+Nonterritory45	2
+Nonterritory46	6
+Nonterritory47	1
+Nonterritory48	6
+Nonterritory49	0
+Nonterritory50	6
+Nonterritory51	0
+Nonterritory52	6
+Nonterritory53	1
+Nonterritory54	3
+Nonterritory55	7
+Nonterritory56	6
+Nonterritory57	3
+Nonterritory58	3
+Nonterritory59	0
+Nonterritory60	6
diff -N -r -u -X .ignore gnugo-copy/patterns/conn.db gnugo/patterns/conn.db
--- gnugo-copy/patterns/conn.db	2007-01-24 19:29:56.953125000 +0100
+++ gnugo/patterns/conn.db	2007-02-10 23:19:11.377750000 +0100
@@ -161,12 +161,12 @@
 XO
 O*
 
-:\,B,cutstone2_helper
+:\,B
 
-AO
-O*
+Ac
+b*
 
-;attack(A)
+;attack(A) && cutstone2_helper(A,b,c)
 
 
 Pattern CB11b
diff -N -r -u -X .ignore gnugo-copy/patterns/conn.dtr gnugo/patterns/conn.dtr
--- gnugo-copy/patterns/conn.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/conn.dtr	2007-02-10 21:01:28.299625000 +0100
@@ -0,0 +1,35 @@
+CB1b	0
+CB2b	0
+CB3b	2
+CB3c	1
+CB7	1
+CB11b	3
+CB15b	0
+CB16	2
+CB17	0
+CB18	1
+EC1	0
+EC1b	0
+EC3a	0
+CC101	1
+CC103	1
+CC104	6
+CC105	1
+CC106	2
+CC107	6
+CC108	2
+CC109	5
+CC401	0
+CC402	0
+CC501	1
+CC502	1
+CC502b	1
+CC503	0
+CC504	1
+CC505	1
+CC506	0
+CC506b	6
+CC507	3
+CC508	0
+CC509	3
+CC511	1
diff -N -r -u -X .ignore gnugo-copy/patterns/defense.dtr gnugo/patterns/defense.dtr
--- gnugo-copy/patterns/defense.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/defense.dtr	2007-02-08 14:51:08.843750000 +0100
@@ -0,0 +1,33 @@
+Def1	1
+Def2	0
+Def4	0
+Def5	0
+Def6	0
+Def9	5
+Def10	7
+Def12	6
+Def16	4
+Def17	4
+Def21	2
+Def25	6
+Def26	3
+Def28	1
+Def29	0
+Def39	0
+Def44	0
+Def45	3
+Def49	3
+Def50	0
+Def52	4
+Def55	6
+Def56	0
+Def57	3
+Def58	0
+Def59	0
+Def60	0
+Def61	7
+Def62	7
+Def63	1
+Def68	0
+Def69	5
+Def70	7
diff -N -r -u -X .ignore gnugo-copy/patterns/dfa.c gnugo/patterns/dfa.c
--- gnugo-copy/patterns/dfa.c	2007-01-09 17:57:16.343750000 +0100
+++ gnugo/patterns/dfa.c	2007-02-19 10:40:27.734375000 +0100
@@ -40,6 +40,17 @@
 #include <unistd.h>
 #endif
 
+#if TIME_WITH_SYS_TIME
+# include <sys/time.h>
+# include <time.h>
+#else
+# if HAVE_SYS_TIME_H
+#  include <sys/time.h>
+# else
+#  include <time.h>
+# endif
+#endif
+
 
 /*********************
  *   Public data     *
@@ -418,13 +429,6 @@
     exit(EXIT_FAILURE);
   }
 
-  assert(dfa_minmax_delta(pdfa, -1, 1) > -32768);
-  if (dfa_minmax_delta(pdfa, -1, 0)  > 32768) {
-    fprintf(of, "#error too many states");
-    fprintf(stderr, "Error: The dfa states are too disperse. Can't fit delta into a short.\n");
-    exit(EXIT_FAILURE);
-  }
-
   if (pdfa->last_index + 1 > 65535) {
     fprintf(of, "#error too many states");
     fprintf(stderr, "Error: Too many index entries. Can't fit delta into a short.\n");
@@ -441,8 +445,8 @@
     fprintf(of, "{{");
     for (j = 0; j < 4; j++) {
       int n = pdfa->states[i].next[j];
-      assert((n == 0) || (abs(n - i) < 32768));
-      fprintf(of, "%d", n ? n - i : 0);
+      assert((n >= 0) && (n <= 65535));
+      fprintf(of, "%d", n);
       if (j != 3)
         fprintf(of, ",");
     }
@@ -781,44 +785,6 @@
 }
 
 
-/*
- * Returns max or min jump distance from state to next[next_index] for
- * all states.  If next_index < 0, then max/min for all for states.
- */
-
-int 
-dfa_minmax_delta(dfa_t *pdfa, int next_index, int isMin)
-{
-
-  int ret, i, j;
-  assert(next_index <= 3);
- 
-  if (isMin)
-    ret = 99999;
-  else
-    ret = -1;
-
-  for (i = 0; i <= pdfa->last_state; i++) {
-    for (j = 0; j < 4; j++) {
-      if (j == next_index || next_index < 0) { 
-        int next = pdfa->states[i].next[j];
-        if (!next)
-          continue;
-        if (isMin) {
-          if (ret > next - i)
-            ret = next - i;
-        }
-	else {
-          if (ret < next - i)
-            ret = next - i;
-        }
-      }
-    }
-  }
-
-  return ret;
-}
-
 #define DFA_ALIGN 	2
 
 /*
@@ -955,8 +921,11 @@
 dfa_finalize(dfa_t *pdfa) 
 {
   int j;
-  int next_bin = aux_count;
-  int last_bin = aux_count + DFA_BINS - 1;
+  int next_bin;
+  int last_bin;
+  aux_count += DFA_BINS; /* To avoid negative values of aux_count. */
+  next_bin = aux_count;
+  last_bin = aux_count + DFA_BINS - 1;
   while (next_bin + 1 != last_bin) {
     for (j = aux_count + 1; j <= last_bin; j += 2) {
       if (j+1 == next_bin)
@@ -1198,7 +1167,7 @@
     if (j == pat->minj)
       borders &= ~WEST_EDGE;
     
-    assert(m + i < DFA_MAX_BOARD * 3 && m + i < DFA_MAX_BOARD * 3);
+    assert(m + i < DFA_MAX_BOARD * 4 && n + j < DFA_MAX_BOARD * 4);
     str[k] = work_space[m + i][n + j];
     assert(strchr("XOxo.,a!?$#|-+", str[k]));
     
@@ -1866,7 +1835,7 @@
   fprintf(stderr, "Original number of DFA states: %d\n", min_nodes_so_far - 1);
   fprintf(stderr, "Trying to optimize in %d iterations\n", iterations);
 
-  gg_srand(num_nodes_original + patterns->num_patterns);
+  gg_srand(time(0));
 
   while (iterations--) {
     int changed_variations = 0;
diff -N -r -u -X .ignore gnugo-copy/patterns/dfa.h gnugo/patterns/dfa.h
--- gnugo-copy/patterns/dfa.h	2007-02-02 18:57:49.031250000 +0100
+++ gnugo/patterns/dfa.h	2007-02-10 21:27:54.830875000 +0100
@@ -75,7 +75,7 @@
 /* DFA state. */
 typedef struct state_rt
 {
-  short next[4]; /* Next state to jump to. */
+  unsigned short next[4]; /* Next state to jump to. */
   short att;     /* An index in the attributes table. */
 } state_rt_t;
 
diff -N -r -u -X .ignore gnugo-copy/patterns/endgame.dtr gnugo/patterns/endgame.dtr
--- gnugo-copy/patterns/endgame.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/endgame.dtr	2007-02-08 15:42:49.281250000 +0100
@@ -0,0 +1,102 @@
+EE1	0
+EE1a	0
+EE2	0
+EE2b	0
+EE2c	0
+EE4	7
+EE5	3
+EE6	0
+EE7	7
+EE101	0
+EE102	0
+EE103	0
+EE104	0
+EE105	0
+EE106	7
+EE107	4
+EE108	0
+EE109	0
+EE110	0
+EE201	7
+EE201b	7
+EE202	0
+EE203	0
+EE204	0
+EE205	0
+EE206	0
+EE301	0
+EE302	0
+EE303	0
+EE401	3
+EE402	0
+EE403	0
+EE404	3
+EE404b	7
+EE405	7
+EE406	6
+EE407	7
+EE408	7
+EE409	3
+EE410	7
+EE411	0
+EE412	0
+EE413	0
+EE414	7
+EE415	4
+EE416	7
+EE501	0
+EE502	0
+EE504	3
+EE601	0
+EE801	0
+EE802	7
+EE803	1
+EE804	0
+EE805	7
+EE806	0
+EE851	7
+EE901	0
+EE902	0
+EE903	0
+EE1002	0
+EE1003	0
+EF101	0
+EF102	0
+CE1	3
+CE2	1
+CE3	1
+CE4a	1
+CE4b	1
+CE6	0
+CE9	7
+CE12	1
+CE13	0
+CE14	0
+CE15	0
+CE15b	0
+CE16	0
+CE16b	0
+CE17	6
+CE18	6
+CE19	0
+CE20a	1
+CE20b	1
+CE20c	1
+CE21	7
+CE22	1
+CE23	7
+CE24	1
+CE26	0
+CE27	1
+CE28	6
+CE28b	6
+CE29	0
+CE31	2
+CE32	6
+CE33	6
+CE34	2
+EY1	5
+EY2	1
+EY3	2
+EY4	1
+EY5	1
diff -N -r -u -X .ignore gnugo-copy/patterns/handicap.dtr gnugo/patterns/handicap.dtr
--- gnugo-copy/patterns/handicap.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/handicap.dtr	2007-02-08 16:04:11.796875000 +0100
@@ -0,0 +1,49 @@
+H1	0
+H2	0
+H3	0
+H4	0
+H5	0
+H6	0
+H7	0
+H10	7
+H11	7
+H12	7
+H13	7
+H14	3
+H15	3
+H16	7
+H17	7
+H18	3
+H19	3
+H20	4
+H21	4
+H22	7
+H23	3
+H24	3
+H30	7
+H31	0
+H32	0
+H40	3
+H41	3
+H42	6
+H43	6
+H44	6
+H45	6
+H50	6
+H51	5
+H52	0
+H53	7
+H60	0
+H61	0
+H62	0
+H63	0
+H70	3
+H71	3
+H80	3
+H81	6
+H82	1
+H83	1
+H84	1
+H85	1
+H86	1
+H87	6
diff -N -r -u -X .ignore gnugo-copy/patterns/helpers.c gnugo/patterns/helpers.c
--- gnugo-copy/patterns/helpers.c	2007-01-26 21:10:46.578125000 +0100
+++ gnugo/patterns/helpers.c	2007-02-19 10:43:30.093750000 +0100
@@ -26,7 +26,6 @@
 
 
 #define TRYMOVE(pos, color) trymove(pos, color, "helper", NO_MOVE)
-#define OFFSET_BY(x, y) AFFINE_TRANSFORM(OFFSET(x, y), trans, move)
 #define ARGS struct pattern *pattern, int trans, int move, int color
 
 
@@ -134,18 +133,13 @@
  */
 
 int
-throw_in_atari_helper(ARGS)
+throw_in_atari_helper(int move, int color, int apos, int cpos, int dpos)
 {
-  int apos, bpos, cpos, dpos;
+  int bpos;
   int success = 0;
   int other = OTHER_COLOR(color);
   int libs[2];
-  UNUSED(pattern);
   
-  apos = OFFSET_BY(0, 1);
-  cpos = OFFSET_BY(-1, 1);
-  dpos = OFFSET_BY(1, 1);
-
   /* Find second liberty of the stone a. */
   findlib(apos, 2, libs);
   if (libs[0] != move)
@@ -210,22 +204,13 @@
  */
 
 int 
-cutstone2_helper(ARGS)
+cutstone2_helper(int move, int apos, int bpos, int cpos)
 {
-  int apos;
-  int bpos;
-  int cpos;
   int dpos;
-  UNUSED(pattern);
-  UNUSED(color);
 
   if (stackp > 0)
     return 0;
   
-  apos = OFFSET_BY(-1, -1);
-  bpos = OFFSET_BY(-1,  0);
-  cpos = OFFSET_BY( 0, -1);
-
   if (worm[apos].defense_codes[0] == 0)
     return 0;
   
diff -N -r -u -X .ignore gnugo-copy/patterns/influence.dtr gnugo/patterns/influence.dtr
--- gnugo-copy/patterns/influence.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/influence.dtr	2007-02-08 16:43:23.437500000 +0100
@@ -0,0 +1,50 @@
+Enhance1	1
+Enhance2	0
+Enhance3	3
+Enhance4	0
+Enhance5	6
+Enhance6	0
+Enhance7	4
+Enhance8	7
+Enhance9	4
+Enhance10	7
+Enhance11	0
+Enhance12	3
+Enhance13	3
+Enhance14	0
+Enhance15	0
+Enhance16	1
+Enhance17	1
+Enhance18	0
+Enhance19	0
+Enhance20	3
+Enhance21	0
+Enhance22	4
+Enhance23	3
+Enhance24	0
+Enhance25	4
+Enhance26	2
+Invade1	3
+Invade2	2
+Invade3	2
+Invade4	3
+Invade4b	3
+Invade4c	3
+Invade5	2
+Invade6	3
+Invade6b	3
+Invade6c	3
+Invade7a	0
+Invade7b	1
+Invade7c	1
+Invade7d	6
+Invade8	5
+Invade9	5
+Invade10	3
+Invade11	3
+Invade12	2
+Invade13	0
+Invade14	7
+Invade15	3
+Invade16	2
+Invade17	3
diff -N -r -u -X .ignore gnugo-copy/patterns/mkpat.c gnugo/patterns/mkpat.c
--- gnugo-copy/patterns/mkpat.c	2007-01-24 19:29:56.968750000 +0100
+++ gnugo/patterns/mkpat.c	2007-02-19 10:44:14.765625000 +0100
@@ -55,6 +55,7 @@
 	-p = compile general pattern database (the default)\n\
 	-c = compile connections database\n\
 	-C = compile a corner pattern database\n\
+  Usage of DFA (cannot be used with a corner pattern database):\n\
 	-D = compile a DFA database (allows fast matching)\n\
 	-d <iterations> = don't generate database, but optimize a DFA\n\
 			  transformation file instead\n\
@@ -91,7 +92,7 @@
 #define DB_GENERAL	((int) 'p')
 #define DB_CONNECTIONS	((int) 'c')
 #define DB_CORNER	((int) 'C')
-#define DB_DFA		((int) 'D')
+#define USE_DFA		((int) 'D')
 #define OPTIMIZE_DFA	((int) 'd')
 
 /* code assumes that ATT_O and ATT_X are 1 and 2 (in either order)
@@ -150,6 +151,7 @@
 
 static int ci = -1, cj = -1;    /* position of origin (first piece element)
 				   relative to top-left */
+static int fixed_pat_anchor = 0; /* if anchor for checked pattern is fixed */
 static int patno;		/* current pattern */
 static int discard_pattern = 0;	/* Set to nonzero to discard a pattern (if e.g.
 				 * it is too large or duplicated). */
@@ -437,7 +439,9 @@
                 "adjacent_to_defendable_stone_in_atari(%s)"},
   {"good_attack_threat",	2, 0, 0.01, "register_good_attack_threat(%s, %s)"},
   {"known_safe_move",		1, 0, 0.01, "register_known_safe_move(%s)"},
-  {"break_mirror_helper",	1, 0, 0.01, "break_mirror_helper(%s, color)"}
+  {"break_mirror_helper",	1, 0, 0.01, "break_mirror_helper(%s, color)"},
+  {"throw_in_atari_helper",	3, 0, 3.00, "throw_in_atari_helper(move, color, %s, %s, %s)"},
+  {"cutstone2_helper",		3, 0, 3.00, "cutstone2_helper(move, %s, %s, %s)"}
 };
 
 
@@ -482,7 +486,8 @@
 
 /* options */
 int verbose = 0;	       /* -v */
-static int database_type = 0;  /* -p (default), -c, -f, -C, -D or -T */
+static int database_type = 0;  /* -p (default), -c or -C */
+static int use_dfa = 0;        /* -D or -d */
 static int anchor = 0; 	       /* Whether both O and/or X may be anchors.
 				* -b for both. -X for only X.
 				*/
@@ -547,14 +552,14 @@
 {
   struct hint_data *hint;
 
-  if (database_type == DB_DFA || database_type == OPTIMIZE_DFA) {
+  if (use_dfa) {
     for (hint = first_hint; hint; hint = hint->next) {
       if (!strcmp(hint->name, pattern_name))
 	return hint->transformation_hint;
     }
   }
 
-  return database_type == OPTIMIZE_DFA ? -1 : 0;
+  return use_dfa == OPTIMIZE_DFA ? -1 : 0;
 }
 
 
@@ -706,7 +711,7 @@
   if (verbose)
     fprintf(stderr, "Add   :%s\n", pattern[index].name);
 
-  if (database_type == DB_DFA) {
+  if (use_dfa == USE_DFA) {
     float ratio;
 
     dfa_rotate_string(strrot, str, transformation_hint);
@@ -729,7 +734,7 @@
     int rot_start = 0;
     int rot_stop = pattern[index].trfno;
 
-    assert(database_type == OPTIMIZE_DFA);
+    assert(use_dfa == OPTIMIZE_DFA);
 
     if (rot_stop == 5) {
       rot_start = 2;
@@ -900,6 +905,7 @@
     }
 
     if (off == ATT_Q) {
+      fixed_pat_anchor = 1;
       off = ATT_O;
       ci = maxi;
       cj = j;
@@ -908,6 +914,7 @@
     }
 
     if (off == ATT_Y) {
+      fixed_pat_anchor = 1;
       off = ATT_X;
       ci = maxi;
       cj = j;
@@ -1108,7 +1115,8 @@
     ci = 0;
     cj = 0;
   }
-  else if (choose_best_anchor) { 
+  else if (choose_best_anchor
+	   && (!fixed_pat_anchor || database_type != DB_CONNECTIONS)) {
 
     /* Try to find a better anchor if
      * the -m option is set.
@@ -1785,7 +1793,7 @@
   int used_nodes = 0;
 
   assert(ci != -1 && cj != -1);
-  assert(database_type == DB_DFA || transformation_hint == 0);
+  assert(use_dfa == USE_DFA || transformation_hint == 0);
 
   /* sort the elements so that least-likely elements are tested first. */
   gg_sort(elements, el, sizeof(struct patval_b), compare_elements);
@@ -1826,7 +1834,7 @@
        * elements for all possible transformations).
        */
       if ((database_type == DB_GENERAL || database_type == DB_CONNECTIONS)
-	  && ci-1 <= x && x <= ci+1 && cj-1 <= y && y <= cj+1)
+	  && !use_dfa && ci-1 <= x && x <= ci+1 && cj-1 <= y && y <= cj+1)
 	continue;
 #endif /* GRID_OPT == 1 */
 
@@ -1834,7 +1842,7 @@
        * they might be needed for goal checking or by callback function, so
        * we check it before discarding an element.
        */
-      if (database_type == DB_DFA)
+      if (use_dfa)
 	continue;
     } /* If the element is discardable. */
 
@@ -2409,7 +2417,7 @@
   fprintf(outfile, "  -1,\n");  /* fixed_for_size */
   fprintf(outfile, "  %d,\n", fixed_anchor);
   fprintf(outfile, "  %s\n", prefix);
-  if (database_type == DB_DFA)
+  if (use_dfa)
     fprintf(outfile, " ,& dfa_%s\n", prefix); /* pointer to the wired dfa */
   else
     fprintf(outfile, " , NULL\n"); /* pointer to a possible dfa */
@@ -2459,16 +2467,22 @@
 
       case 'p':
       case 'c':
-      case 'f':
       case 'C':
-      case 'D':
-      case 'd':
 	if (database_type) {
 	  fprintf(stderr, "Error : More than one database type specified (-%c and -%c)\n",
 		  database_type, i);
 	  return 1;
 	}
+	if (i == 'C' && use_dfa) {
+	  fprintf(stderr, "Error : Cannot use DFA with a corner pattern database\n");
+	  return 1;
+	}
 	database_type = i;
+	break;
+
+      case 'd':
+      case 'D':
+	use_dfa = i;
 	if (i == 'd') {
 	  iterations = strtol(gg_optarg, NULL, 10);
 	  if (iterations < 0) {
@@ -2476,6 +2490,10 @@
 	    return 1;
 	  }
 	}
+	if (database_type == 'C') {
+	  fprintf(stderr, "Error : Cannot use DFA with a corner pattern database\n");
+	  return 1;
+	}
 	break;
 
       case 'O':
@@ -2517,21 +2535,20 @@
 
     if (!input_files)
       input_file_names[input_files++] = stdin_name;
-    if (output_file_name && database_type != OPTIMIZE_DFA) {
+    if (output_file_name && use_dfa != OPTIMIZE_DFA) {
       output_FILE = fopen(output_file_name, "wb");
       if (output_FILE == NULL) {
 	fprintf(stderr, "Error : Cannot write to file %s\n", output_file_name);
 	return 1;
       }
     }
-    if (transformations_file_name
-	&& (database_type == DB_DFA || database_type == OPTIMIZE_DFA)) {
+    if (transformations_file_name && use_dfa) {
       transformations_FILE = fopen(transformations_file_name, "r");
       if (transformations_FILE) {
 	parse_transformations_file(transformations_FILE);
 	fclose(transformations_FILE);
       }
-      else if (database_type == DB_DFA) {
+      else if (use_dfa == USE_DFA) {
 	fprintf(stderr, "Error : Cannot read file %s\n",
 		transformations_file_name);
 	return 1;
@@ -2549,14 +2566,14 @@
 
   prefix = argv[gg_optind];
 
-  if (database_type == DB_DFA) {
+  if (use_dfa == USE_DFA) {
     dfa_init();
     new_dfa(&dfa, "mkpat's dfa");
   }
   else if (database_type == DB_CORNER)
     corner_init();
 
-  if (database_type == OPTIMIZE_DFA) {
+  if (use_dfa == OPTIMIZE_DFA) {
     if (transformations_file_name == NULL) {
       fprintf(stderr, "error : transformation file required (use -t option)\n");
       return 1;
@@ -2842,13 +2859,14 @@
       else if (line[0] == ':') {
 	if (state == 2 || state == 3) {
 	  finish_pattern(line);
+	  fixed_pat_anchor = 0;
 	  
 	  if (!discard_pattern) {
-	    if (database_type == DB_DFA || database_type == OPTIMIZE_DFA)
+	    if (use_dfa)
 	      write_to_dfa(patno);
 	    if (database_type == DB_CORNER)
 	      corner_add_pattern();
-	    else if (database_type != OPTIMIZE_DFA)
+	    else if (use_dfa != OPTIMIZE_DFA)
 	      write_elements(output_FILE);
 	  }
 
@@ -2943,7 +2961,7 @@
     fprintf(stderr, "%d / %d patterns have edge-constraints\n",
 	    pats_with_constraints, patno);
 
-  if (database_type != OPTIMIZE_DFA) {
+  if (use_dfa != OPTIMIZE_DFA) {
     /* Forward declaration, which autohelpers might need. */
     if (database_type != DB_CORNER)
       fprintf(output_FILE, "static struct pattern %s[%d];\n\n", prefix, patno + 1);
@@ -2960,7 +2978,7 @@
 
     write_patterns(output_FILE);
 
-    if (database_type == DB_DFA) {
+    if (use_dfa) {
       fprintf(stderr, "---------------------------\n");
 
       dfa_finalize(&dfa);
@@ -3004,7 +3022,7 @@
 	      current_file);
     }
   }
-  else {	/* database_type == OPTIMIZE_DFA */
+  else {	/* use_dfa == OPTIMIZE_DFA */
     int k;
     int *optimized_variations;
 
@@ -3017,8 +3035,10 @@
     optimized_variations = dfa_patterns_optimize_variations(&dfa_pats,
 							    iterations);
     for (k = 0; k < patno; k++) {
-      fprintf(transformations_FILE, "%s\t%d\n", pattern_names[k],
-	      optimized_variations[k]);
+      int var = optimized_variations[k];
+      if (pattern[k].trfno == 5)
+	var += 2;
+      fprintf(transformations_FILE, "%s\t%d\n", pattern_names[k], var);
     }
 
     dfa_patterns_clear(&dfa_pats);
diff -N -r -u -X .ignore gnugo-copy/patterns/optimize gnugo/patterns/optimize
--- gnugo-copy/patterns/optimize	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/optimize	2007-02-10 22:01:56.909000000 +0100
@@ -0,0 +1,15 @@
+# number of iterations should be about (size of db_file x 20) to find the
+# best (or almost the best) optimization
+
+mkpat -d 120000 -b -m -i aa_attackpats.db aa_attackpats -t aa_attackpats.dtr
+mkpat -d 1400000 -b -m -i owl_attackpats.db owl_attackpats -t owl_attackpats.dtr
+mkpat -d 1700000 -b -m -i owl_defendpats.db owl_defendpats -t owl_defendpats.dtr
+mkpat -d 260000 -b -m -i owl_vital_apats.db owl_vital_apats -t owl_vital_apats.dtr
+mkpat -d 80000 -X -m -i attack.db attack -t attack.dtr
+mkpat -d 100000 -m -i defense.db defense -t defense.dtr
+mkpat -d 200000 -c -m -i conn.db conn -t conn.dtr
+mkpat -d 640000 -c -b -m -i barriers.db barriers -t barriers.dtr
+mkpat -d 500000 -b -m -i endgame.db endgame -t endgame.dtr
+mkpat -d 260000 -b -m -i handicap.db handicap -t handicap.dtr
+mkpat -d 150000 -c -m -i influence.db influence -t influence.dtr
+mkpat -d 3700000 -b -m -i patterns.db -i patterns2.db patterns -t patterns.dtr
diff -N -r -u -X .ignore gnugo-copy/patterns/owl_attackpats.dtr gnugo/patterns/owl_attackpats.dtr
--- gnugo-copy/patterns/owl_attackpats.dtr	2003-07-10 14:58:24.000000000 +0200
+++ gnugo/patterns/owl_attackpats.dtr	2007-02-08 11:55:40.234375000 +0100
@@ -1,23 +1,23 @@
 A1	0
 A2	0
-A3	1
+A3	7
 A101	5
 A102	0
-A103	7
+A103	1
 A104	7
 A105	7
 A106	7
 A107	6
-A108	0
+A108	3
 A109	1
 A110	0
 A111	6
-A112	1
+A112	7
 A113	4
-A114	0
+A114	7
 A115	0
 A201	7
-A203	7
+A203	0
 A204	0
 A205	7
 A205b	0
@@ -27,16 +27,18 @@
 A207b	7
 A207c	7
 A207d	7
-A208a	4
+A208a	3
 A208b	3
 A208c	6
-A209	0
-A210	0
+A208d	3
+A208e	3
+A209	5
+A210	6
 A211	0
-A214	1
-A215	1
-A216	0
-A216b	0
+A214	6
+A215	6
+A216	6
+A216b	6
 A217	0
 A217b	0
 A217c	0
@@ -59,79 +61,91 @@
 A230	0
 A231	6
 A232	0
-A233	7
+A232b	6
+A233	0
 A234	1
 A235	5
 A236	0
 A237	0
-A238	6
+A238	7
+A239	0
+A240	7
+A241	6
+A242	3
 A301	0
 A302	0
 A305	0
-A401	5
-A401a	5
-A402	5
-A403	1
-A403b	1
+A401	1
+A401a	1
+A402	1
+A403	6
+A403b	6
 A404	1
 A406	3
 A406b	3
-A406c	4
-A407	2
+A406c	3
+A406d	3
+A407	5
+A407b	5
 A408	4
 A409	6
 A410	0
-A411	4
-A411a	4
-A413a	3
-A414	2
-A414a	2
+A411	2
+A411a	2
+A413a	4
+A414	5
+A414a	5
 A415	3
 A416	6
-A417	0
+A417	6
 A418	0
 A419	6
 A419b	6
-A420	0
+A420	6
 A421	3
 A422	0
 A422a	0
 A423	1
 A423a	1
-A424	7
+A424	0
+A425	0
 A501	7
 A502	6
-A503	0
+A503	6
+A503b	7
 A504	0
 A505	0
 A506	6
 A507	1
 A508	7
-A509	1
-A510	3
+A509	6
+A510	0
 A511	0
-A512	3
-A513	0
+A512	7
+A513	6
 A514	6
 A515	7
 A516	0
 A517	0
+A518	7
 A601	1
 A602	1
 A603	0
 A603b	0
-A604	7
+A604	0
 A605	7
 A606	0
-A607	7
-A607b	7
-A608	7
+A607a	0
+A607b	0
+A607c	0
+A607d	6
+A608	0
 A609	0
 A610	7
 A611	0
 A612	0
-A613	3
-A614	3
+A613	7
+A614	7
 A615	0
 A616	6
 A617	0
@@ -139,13 +153,16 @@
 A619	3
 A620	0
 A621	7
-A701	4
-A702	4
+A622	0
+A623	0
+A626	7
+A701	2
+A702	2
 A703	6
-A704	1
-A705b	1
+A704	6
+A705b	6
 A706	6
-A707	6
+A707	1
 A708	0
 A709	1
 A710	0
@@ -153,14 +170,15 @@
 A712	0
 A713	6
 A714	6
-A715	0
+A715	7
 A716	6
 A717	7
-A718	7
-A719	0
+A718	0
+A719	7
+A719b	0
 A720	7
-A721	0
-A801	0
+A721	7
+A801	7
 A802	1
 A803	0
 A804	0
@@ -170,41 +188,46 @@
 A808	7
 A809	6
 A810	1
-A811	1
+A811	6
 A812	2
+A813	7
+A814	0
 A901	3
 A902	0
-A902b	0
+A902b	7
 A903	0
 A904	3
-A905	1
+A905	6
+A906a	0
+A906b	0
 A907	0
 A908	0
 A909	7
 A910	0
 A911	0
 A912	7
-A913	6
-A914	6
+A913	0
+A914	0
 A915	0
 A916	0
-A917	3
-A918	7
+A917	0
+A918	4
 A919	0
-A920	7
+A920	0
+A921	0
 A1001	0
 A1001b	0
 A1002	3
 A1003	3
 A1005	3
 A1005b	3
-A1006	7
-A1006b	7
+A1006	0
+A1006b	0
 A1008	2
 A1008b	6
-A1009	6
+A1009	0
 A1010	3
-A1011	7
+A1011	0
 A1012	0
 A1013	6
 A1014	7
@@ -212,13 +235,15 @@
 A1015a	6
 A1016	7
 A1016a	7
-A1017	1
+A1017	2
 A1018	0
 A1019	1
-A1020	2
+A1020	1
 A1021	6
-A1022	2
+A1022	5
 A1023	7
+A1024a	0
+A1024b	0
 A1100	0
 A1101	1
 A1101b	1
@@ -227,52 +252,69 @@
 A1104	4
 A1105	0
 A1106	0
-A1107	1
+A1107	0
 A1107b	1
 A1107c	1
 A1108	0
 A1109	7
 A1110	0
-A1111	6
-A1112	6
-A1113	2
-A1114	3
+A1111	0
+A1112	0
+A1113	4
+A1114	4
 A1115	6
 A1116	0
-A1117	2
-A1117a	2
-A1118	0
+A1117	5
+A1117a	5
+A1118	3
 A1119	6
 A1121	1
 A1122	0
 A1122a	0
+A1122b	0
 A1123	7
 A1123a	7
-A1124	7
-A1124a	7
+A1124	0
+A1124a	0
+A1124b	0
 A1125	1
 A1126	2
 A1127	2
 A1127a	2
-A1128	7
+A1128	0
 A1129	6
 A1130	3
-A1131	6
+A1131	0
 A1132	0
-A1133a	0
-A1133b	0
-A1201	0
-A1203	2
+A1133a	6
+A1133b	6
+A1134	0
+A1134b	0
+A1134c	0
+A1134d	0
+A1135	7
+A1136	6
+A1137	7
+A1138	7
+A1139	1
+A1140a	0
+A1140b	0
+A1141	1
+A1141b	1
+A1201	7
+A1203	1
 A1204	5
-A1205	1
-A1206	1
+A1205	5
+A1206	5
 A1207	3
-A1208	6
+A1208	3
 A1209	0
+A1210	0
 A1301	0
-A1302	3
-A1303	4
+A1302	7
+A1303	3
 A1303b	7
+A1303c	3
 A1304	7
 A1305	0
 A1305b	7
@@ -282,69 +324,74 @@
 A1309	7
 A1310	0
 A1310b	0
-A1311	6
-A1311b	6
+A1311	0
+A1311b	0
 A1312	7
-A1313	6
+A1313	7
 A1314	7
 A1315	0
-A1316	0
-A1317	7
-A1318	0
+A1316	7
+A1317	0
+A1318	7
 A1319	7
 A1319b	0
 A1319c	7
 A1320	3
-A1321	0
-A1322	4
+A1321	7
+A1322	3
 A1323	0
-A1324	7
+A1324	5
 A1325	0
-A1326	2
-A1327	0
+A1326	7
+A1327	7
 A1328	7
 A1329	7
-A1330	0
+A1330	7
 A1331	3
-A1332	7
-A1333	7
-A1334	7
+A1332	0
+A1333	3
+A1334	0
 A1335	7
 A1335b	0
-A1336	0
-A1337	0
-A1338	6
+A1336	7
+A1337	7
+A1338	0
 A1339	0
 A1340	7
 A1341	0
 A1342	3
-A1343	3
+A1343	7
 A1344	0
-A1345	3
-A1346	3
+A1345	7
+A1346	6
 A1347	7
-A1348	0
-A1349a	0
-A1349b	0
+A1348	7
+A1349a	6
+A1349b	6
 A1350	7
+A1351	3
+A1352a	7
+A1352b	7
 A1401	0
-A1403	7
+A1403	0
 A1501	1
 A1502	1
 A1503	5
 A1503a	5
-A1504	6
+A1504	0
 A1601	6
 A1602	3
-A1603	7
+A1603	0
 A1604	0
 A1605	0
 A1606	3
-A1607	7
+A1607	0
 A1608	3
 A1608b	0
 A1609	0
 A1610	0
 A1611	0
-A1612	0
+A1612	6
 A1613	0
+AC01	0
+AE01	3
diff -N -r -u -X .ignore gnugo-copy/patterns/owl_defendpats.dtr gnugo/patterns/owl_defendpats.dtr
--- gnugo-copy/patterns/owl_defendpats.dtr	2003-07-10 14:58:24.000000000 +0200
+++ gnugo/patterns/owl_defendpats.dtr	2007-02-08 14:48:41.406250000 +0100
@@ -1,20 +1,20 @@
-D1	5
-D2	7
-D3	7
+D1	1
+D2	3
+D3	0
 D4	1
 D100	0
-D101	4
+D101	7
 D102	0
 D103	0
-D104	0
+D104	7
 D104b	0
-D105	5
+D105	4
 D106	7
 D107	0
 D108	0
-D109	0
+D109	6
 D110	0
-D111	7
+D111	0
 D112	0
 D113	7
 D114	6
@@ -23,25 +23,28 @@
 D117	0
 D118	7
 D119	7
-D120	0
+D120	6
 D121	7
-D122	0
+D122	6
 D123	6
 D124	7
+D125	6
+D126	0
+D127	0
 D200	0
 D201	0
 D202	0
-D203	0
-D204	6
+D203	7
+D204	0
 D205	0
 D206	0
 D207	0
 D208	6
-D209	0
-D209a	0
-D209b	0
+D209	6
+D209a	6
+D209b	7
 D210	0
-D211	4
+D211	1
 D212	0
 D213	6
 D214	0
@@ -54,8 +57,9 @@
 D218	0
 D220	0
 D221	0
+D221b	0
 D222	0
-D223	7
+D223	3
 D224	6
 D225	7
 D226	6
@@ -64,107 +68,112 @@
 D229	3
 D230	7
 D231	4
-D232	0
+D232	7
 D233	0
+D234	3
 D300	1
-D301	6
+D301	1
 D302	7
 D303	6
 D304	6
 D305	7
 D306	6
-D307	7
+D307	0
 D308	3
 D309	6
 D309a	6
 D309b	6
-D310a	0
-D310b	0
+D310a	5
+D310b	5
 D311	0
-D313	3
+D313	7
 D314	7
-D315	1
+D315	0
 D316	6
 D317	6
 D318	6
-D319	7
-D320	2
-D400	1
-D401	1
-D402	6
-D403	5
+D319	0
+D320	5
+D400	5
+D401	5
+D402	0
+D403	0
 D404	6
 D405	7
-D406	0
-D407	0
+D406	6
+D407	7
 D408	0
 D409	0
 D500	0
 D502	0
 D503	3
-D504	1
+D503b	3
+D504	5
 D505	0
 D506	0
 D507	0
 D508	0
-D509	7
-D510	6
-D511	7
+D509	0
+D510	1
+D511	3
 D512	0
 D513	0
-D514	6
+D514	0
 D515	0
-D600	2
-D600a	2
+D600	0
+D600a	0
 D602	1
-D603	1
+D603	0
 D604	0
 D604a	0
 D605	7
-D606	1
+D606	0
 D607	7
 D608	0
 D608b	6
 D609	6
 D610	0
-D611	6
-D612	7
-D613	3
+D611	0
+D612	0
+D613	0
 D614	0
 D614b	0
 D615	3
-D616	2
+D616	7
 D616a	0
-D617	2
-D618	2
+D617	7
+D618	0
 D619	2
 D620	7
 D621	0
 D622	0
 D623	0
 D624	7
-D625	7
+D625	0
 D626	0
 D627	0
 D628	0
 D629	7
-D630	5
+D630	3
 D631	6
 D632	0
-D633	3
-D634	7
-D635	7
+D633	7
+D634	0
+D635	0
 D636	7
 D637	2
-D638	7
+D638	0
 D639	0
 D640	7
 D641	0
-D642	7
+D642	3
 D643	6
+D643b	6
+D644	0
+D645	7
 D700	1
 D701	6
-D702	6
+D702	1
 D703	0
 D704	1
 D704b	7
@@ -172,68 +181,78 @@
 D706	0
 D707	0
 D708	4
-D709	1
+D709	0
 D710	1
 D711	0
-D712	1
+D712	6
 D713	0
-D714	7
-D715	1
-D715b	7
+D714	0
+D715	0
+D715b	0
 D715c	6
-D716	6
-D717	1
+D716	1
+D717	5
 D718	6
 D720	7
 D721	3
-D722	4
+D722	2
+D723	1
 D800	0
-D801	0
+D801	6
 D802	0
 D803	6
 D804	0
+D804a	7
 D804b	0
-D805	0
-D805a	6
+D805	7
+D805a	0
 D805b	7
-D806	0
-D807	0
+D806	7
+D807	7
 D808	0
 D809	0
-D810	7
+D810	3
 D811	7
 D811a	3
-D812	0
-D813	7
+D812	7
+D813	3
 D814	7
 D815	7
-D816	3
-D817	3
-D818	0
-D818b	0
+D816	0
+D817	0
+D818	6
+D818b	6
 D819	3
 D820	0
 D820b	0
 D821	7
 D822	7
-D823a	5
+D823a	2
 D823b	0
 D824	0
 D825	7
 D826	3
 D827	0
-D828	5
-D829	7
+D828	6
+D829	3
 D830	3
-D831	0
+D831	7
 D832	7
-D833	0
-D834	0
-D835	7
+D833	6
+D834	6
+D835	3
 D836	0
 D837	0
 D838	7
-D839	0
+D839	7
+D840	4
+D841	3
+D842	0
+D843	7
+D844	3
+D845	0
+D846	0
+D847	0
 D900	7
 D902	7
 D903	7
@@ -243,14 +262,14 @@
 D907	3
 D908	3
 D909	1
-D910a	6
-D910b	6
-D911	0
+D910a	0
+D910b	0
+D911	4
 D1000	0
 D1000a	1
-D1001	5
+D1001	2
 D1001b	0
-D1002	5
+D1002	2
 D1003	1
 D1004	1
 D1004b	1
@@ -259,111 +278,115 @@
 D1006b	0
 D1007	0
 D1100	0
+D1100b	0
 D1101	1
 D1102	1
 D1102a	1
-D1103	0
-D1104	6
+D1103	6
+D1104	0
 D1105	0
 D1106	1
-D1107	0
+D1107	7
 D1108	7
 D1108b	7
 D1109	6
 D1110	1
 D1111	6
-D1112	6
-D1113	4
-D1114	4
+D1112	0
+D1113	3
+D1114	3
 D1115	6
-D1116	3
-D1117	3
-D1117a	0
+D1116	7
+D1117	5
+D1117a	6
 D1118	1
 D1119	5
 D1120	2
-D1120b	0
+D1120b	7
 D1121a	5
 D1121b	0
 D1121c	6
 D1122	0
 D1123	0
-D1124	7
-D1125	3
+D1124	0
+D1125	7
 D1126	1
 D1127	5
 D1128	3
 D1129	1
 D1130	0
-D1131	6
+D1131	1
 D1132	6
-D1133	0
-D1134	5
+D1133	7
+D1134	2
 D1135	6
-D1136	1
 D1137	6
 D1138	0
 D1139	6
 D1140	0
 D1141	2
+D1142	0
+D1143	6
+D1144	0
+D1144b	0
 D1200	0
-D1201	0
-D1202	1
+D1201a	0
+D1201b	0
+D1202	7
 D1203	7
 D1204	7
 D1205	1
 D1206	1
+D1207	0
 D1300	0
 D1300b	0
 D1301	0
 D1301b	0
 D1302	0
-D1303	0
-D1304	0
+D1303	1
+D1304	1
 D1305	3
-D1306	7
+D1306	0
 D1307	4
 D1308	0
 D1309	0
-D1309b	0
-D1310	0
+D1309b	6
+D1310	6
 D1311	1
 D1312	2
 D1313	1
 D1314	3
 D1315	6
-D1316	6
-D1316b	6
-D1317	3
-D1318	4
+D1316	0
+D1316b	0
+D1317	7
+D1318	2
 D1319	5
 D1320	1
 D1320a	6
 D1320b	1
 D1321	1
 D1321b	1
-D1322	1
+D1322	2
 D1323	1
 D1323a	6
 D1324	1
-D1325	1
+D1325	2
 D1326	1
-D1327	1
-D1328	1
 D1329	1
 D1330	0
-D1331	6
-D1332	0
+D1331	7
+D1332	7
 D1333	0
-D1333b	7
+D1333b	0
 D1334	2
 D1335	1
 D1336	5
 D1337	0
-D1338	3
+D1338	4
 D1339	1
 D1340	0
-D1341	0
+D1341	7
 D1342	2
 D1343a	3
 D1343b	5
@@ -372,45 +395,47 @@
 D1344	6
 D1345	0
 D1346	0
-D1347	0
+D1347	7
 D1348	6
 D1348b	6
 D1348c	6
 D1348d	6
 D1350	1
 D1351	7
-D1352	6
-D1353	6
-D1354	4
+D1352	0
+D1353	0
+D1354	5
 D1355	0
 D1356	1
 D1356a	1
+D1356b	0
 D1357	5
 D1358	0
 D1359	7
 D1360	0
-D1361	1
-D1362	0
+D1361a	1
+D1361b	1
+D1362	1
 D1363	6
 D1364	0
 D1365	7
-D1366	1
+D1366	5
 D1367	1
-D1368	0
+D1368	7
 D1370	3
 D1371	0
-D1372	7
+D1372	0
 D1373	3
-D1374	0
+D1374	7
 D1375	7
 D1376	7
-D1377	7
+D1377	0
 D1378	2
 D1379	6
-D1380	1
-D1381	2
-D1382	4
-D1383	0
+D1380	5
+D1381	5
+D1382	3
+D1383	7
 D1384	6
 D1385	6
 D1386a	0
@@ -418,31 +443,46 @@
 D1387	0
 D1388	0
 D1389	0
-D1400	7
-D1400b	7
-D1401	7
+D1390	6
+D1391	0
+D1392	2
+D1393	7
+D1394	7
+D1395	7
+D1400	2
+D1400b	2
+D1401	2
 D1402	0
-D1403	7
-D1404	3
-D1405	3
+D1403	0
+D1404	6
+D1405	6
 D1405b	3
-D1406	3
-D1407	7
-D1408	7
-D1409	7
+D1406	6
+D1407	3
+D1408	1
+D1409	0
 D1410	6
-D1411	7
-D1411b	7
-D1412	7
-D1413	7
-D1414	3
-D1415	1
+D1411	3
+D1411b	3
+D1412	6
+D1413	6
+D1414	7
+D1415	6
 D1416	1
-D1417	1
+D1417	6
 D1418	1
-D1419	2
-D1420	2
-D1421	7
+D1419	7
+D1420	7
+D1421	0
 D1422	0
 D1423	7
-D1424	4
+D1424	7
+DC01a	6
+DC01b	6
+DC02	0
+DE01a	0
+DE01b	0
+DE02	7
+DE03	7
+DE04	0
+DR01	7
diff -N -r -u -X .ignore gnugo-copy/patterns/owl_vital_apats.dtr gnugo/patterns/owl_vital_apats.dtr
--- gnugo-copy/patterns/owl_vital_apats.dtr	2003-07-10 14:58:24.000000000 +0200
+++ gnugo/patterns/owl_vital_apats.dtr	2007-02-08 14:50:19.125000000 +0100
@@ -1,55 +1,59 @@
 VA1	1
 VA2	6
-VA3	7
+VA3	3
 VA4	0
-VA5	3
-VA6	7
+VA5	7
+VA6	0
 VA7	5
-VA8	1
+VA8	6
 VA9	1
 VA10	1
 VA11	0
-VA12	7
+VA12	0
 VA13	7
-VA14	0
+VA14	6
 VA15	6
-VA16	4
+VA16	2
 VA17	1
 VA18	3
-VA19	0
-VA20	0
+VA19	7
+VA20	2
 VA21	0
 VA22	3
 VA23	7
 VA24	1
-VA25	7
+VA25	0
 VA26	0
 VA26b	0
-VA27	0
+VA27	7
 VA28	0
 VA29	7
-VA30	6
+VA30	0
 VA31	1
 VA32	0
-VA33	6
+VA33	0
 VA34	0
-VA35	0
+VA35	7
 VA36	1
 VA37	0
-VA38	3
-VA39	6
+VA38	7
+VA39	5
 VA40	1
 VA41	0
 VA42	7
 VA43	0
-VA44	1
+VA44	0
 VA45	0
-VA46	0
-VA47	0
+VA46	3
+VA47a	0
+VA47b	0
 VA48	2
 VA49	0
 VA50	0
 VA51	0
 VA52a	0
 VA52b	0
-VA53	7
+VA53	0
+VA54	5
+VA55	2
+VA56	3
diff -N -r -u -X .ignore gnugo-copy/patterns/patterns.db gnugo/patterns/patterns.db
--- gnugo-copy/patterns/patterns.db	2007-01-17 19:42:44.062500000 +0100
+++ gnugo/patterns/patterns.db	2007-02-10 23:24:29.705875000 +0100
@@ -9929,14 +9929,14 @@
 X.*X
 ----
 
-# helper sets followup value
-:8,sXa,throw_in_atari_helper
+:8,sXa
 
 ?bba
 Xc*A
 ----
 
-;lib(A)==2 && lib(a)>1 && !alive(b) && proper_eye(c)
+# helper sets followup value
+;lib(A)==2 && lib(a)>1 && !alive(b) && proper_eye(c) && throw_in_atari_helper(A,a,?)
 
 
 Pattern ED40
@@ -9946,15 +9946,15 @@
 X.X
 ---
 
-# helper sets followup value
-:8,sXa,throw_in_atari_helper
+:8,sXa
 
 aAb
 X*X
 X.X
 ---
 
-;lib(A)==2 && lib(a)>1 && lib(b)>1
+# helper sets followup value
+;lib(A)==2 && lib(a)>1 && lib(b)>1 && throw_in_atari_helper(A,a,b)
 
 
 Pattern ED41
@@ -9963,14 +9963,14 @@
 |.*X
 +---
 
-# helper sets followup value
-:8,sXa,throw_in_atari_helper
+:8,sXa
 
 |XXa
 |.*A
 +---
 
-;lib(A)==2 && lib(a)>1
+# helper sets followup value
+;lib(A)==2 && lib(a)>1 && throw_in_atari_helper(A,a,?)
 
 
 Pattern ED42
@@ -11284,14 +11284,14 @@
 X.*X
 ?XXO
 
-# helper sets followup value
-:8,sXa,throw_in_atari_helper
+:8,sXa
 
 ?XXa
 Xc*A
 ?XXb
 
-;lib(A)==2 && lib(a)>1 && lib(b)>1 && proper_eye(c)
+# helper sets followup value
+;lib(A)==2 && lib(a)>1 && lib(b)>1 && proper_eye(c) && throw_in_atari_helper(A,a,b)
 
 
 Pattern CD67
diff -N -r -u -X .ignore gnugo-copy/patterns/patterns.dtr gnugo/patterns/patterns.dtr
--- gnugo-copy/patterns/patterns.dtr	1970-01-01 01:00:00.000000000 +0100
+++ gnugo/patterns/patterns.dtr	2007-02-10 16:59:49.768375000 +0100
@@ -0,0 +1,1220 @@
+CC1	6
+CC2	1
+CC3	1
+CC4	6
+CC5	1
+CC6	3
+CC7	1
+CC8	6
+CC9	0
+CC10	0
+CC10b	0
+CC11	4
+CC12	6
+CC13	3
+CC13b	3
+CC14	1
+CC15	6
+CC16	4
+CC17	6
+CC19	0
+CC20	0
+CC21	0
+CC22	0
+CC23	0
+CC24	6
+CC25	6
+CC26	2
+CC27	1
+CC28	1
+CC29	1
+CC30	1
+CC31	1
+CC32	1
+CC33	7
+CC34	1
+CC35	1
+CC36	7
+CC37	7
+CC38	7
+CC39	0
+CC40	1
+CC41	0
+CC42	0
+CC43	0
+CC44	3
+CC45	6
+CC46	0
+CC47	6
+CC48	6
+CC49	1
+CC50	7
+CC51	5
+CC52a	7
+CC52b	3
+CC53	5
+CC54	0
+CC55	0
+CC57	0
+CC58	0
+CC59	0
+CC60	3
+CC61	1
+CC62	0
+CC63	0
+CC64	0
+CC65	2
+CC66	2
+CC67	6
+CC68	5
+CC69	0
+CC70	1
+CC71	1
+CC72	0
+CC73	0
+CC74	6
+CC74b	6
+CC75	4
+CC76	6
+CC77	3
+CC78	1
+CC79	4
+CC80	2
+CC81	7
+CC82	0
+CC83	1
+CC84	3
+CC85	6
+CC86	6
+CC87	5
+CC88	1
+EC1	0
+EC2	7
+EC4	7
+EC5	7
+EC6	7
+EC7	0
+EC8	7
+EC8a	0
+EC9	0
+EC10	0
+EC11	0
+EC12	7
+EC13	0
+EC14	6
+EC15	0
+EC16	0
+EC16a	0
+EC17	7
+EC18	7
+EC19	0
+EC20	0
+EC21	0
+EC22	2
+EC23	3
+EC24	0
+EC25	0
+EC26	0
+EC27	6
+EC28	6
+EC29	3
+EC30	0
+EC31	0
+EC32	0
+EC33	0
+EC34	6
+EC35	7
+EC36	6
+EC42	0
+EC43	7
+EC44	0
+EC45	0
+EC46	7
+EC47	0
+EC48	0
+EC49	0
+EC50	0
+EC51	0
+EC52	0
+EC53	0
+EC54	6
+EC55	0
+EC56	0
+EC57	0
+EC58	7
+EC59	0
+EC60	6
+EC60a	6
+EC61	6
+EC62	7
+EC63	0
+EC64	7
+EC65	6
+EC66	7
+EC67	0
+EC68	7
+EC69	1
+EC70	0
+EC71	7
+EC73	7
+EC74	0
+EC75	6
+EC76	7
+EC77	4
+EC78	7
+EC79	0
+EC80	0
+EC81	7
+EC101	0
+EC102	0
+EC103	0
+EC104	0
+EC105	7
+EC106	0
+EC107	0
+EC108	0
+EC109	0
+EC110	0
+EC201	3
+EC202	3
+EC203	3
+EC204	3
+EC205	3
+EC206	0
+EC207	0
+EC208	0
+EC209	0
+EC210	0
+EC211	7
+EC212	7
+EC213	0
+EC214	6
+EC215	0
+EC216	0
+EC217	7
+EC218	7
+CS1	1
+CS2	6
+CS3	4
+CS4	3
+CS5	6
+CS6	6
+CS7	1
+CS8	1
+CS9	6
+CS10	0
+CS11	4
+CS12	6
+CS13	0
+CS14	0
+CS15	7
+CS16	7
+CS17	6
+CS18	0
+CS19	6
+CS20a	1
+CS20b	1
+CS21	5
+CS22	7
+CS23	0
+CS24	4
+CS25	1
+CS26	5
+ES1	0
+ES2	7
+ES3a	0
+ES3b	0
+EB4	7
+EB5	0
+EB6	0
+EB7	4
+EB8	7
+EB9	7
+EB10	6
+EB11	0
+EB102	7
+EB104	0
+EB105	0
+EB106	0
+EB107	7
+EB108	0
+EB109	7
+EB110	7
+EB111	7
+EB112	0
+EB113	3
+EB114	7
+EB201	0
+EB202	6
+EB203	5
+EB204	7
+EB205	0
+EB206	0
+EB207	0
+EB208	2
+EB209	7
+EB210	7
+EB211	7
+EB301	7
+EB302	0
+EB303	0
+EB304	7
+EB305	7
+EB306	6
+EB307	6
+EB308	7
+EB309	0
+EB310	0
+EB311	7
+EB312	7
+EB313	0
+EB314	6
+EB315	7
+EB316	0
+EB317	6
+EB401	0
+EB402	0
+EB403	0
+EB404	7
+EB405	7
+EB406	7
+EB407	7
+EB408	0
+EB409	0
+EB410	7
+EB411	7
+EB412	0
+EB501	5
+EB501a	2
+EB502	7
+EB503	7
+EB504	0
+EB505	0
+EB506	6
+EB507	7
+EB507a	7
+EB508	7
+EB509	7
+EB510	7
+EB511	0
+EB512	7
+EB513	2
+EB514	2
+EB515	7
+EB516	0
+EB517	7
+EB518	0
+EB519	3
+EB520	3
+EB521	7
+EB601	7
+EB602	2
+EB603	3
+EB604	6
+EB605	6
+EB606	0
+EB608	7
+EB609	0
+EB610	0
+EB611	6
+EB612	0
+EB615	0
+EB615b	0
+EB616	0
+EB617	0
+EB618	0
+EB619	0
+EB624	7
+EB626	7
+EB627	7
+EB628	0
+EB629	0
+EB630	0
+EB631	0
+EB632	0
+EB633	0
+EB634	0
+EB635	7
+EB637	7
+EB638	0
+EB639	0
+EB640a	0
+EB640b	7
+EB640c	0
+EB641a	7
+EB641b	7
+EB641c	6
+EB642	6
+EB643	6
+EB701	1
+EB702a	0
+EB702b	0
+EB703	6
+EB704	0
+EB705	7
+EB706	7
+EB707	7
+EB708	3
+EB709	5
+EB709b	5
+EB710	7
+EB711	7
+EB712	0
+EB712b	0
+EB713	7
+EB714	0
+EB715	0
+EB716	0
+EB717	0
+EB718	0
+EB719	0
+EB801	0
+EB802	6
+EB803	7
+EB804	7
+EB805	7
+EB806	7
+EB808	0
+EB909	3
+EB910	1
+EB911	6
+EB912	2
+EB913	0
+EB913b	0
+EB914	0
+EB915	0
+EB917	0
+EB918	6
+EB919	0
+EB920	0
+EB921	0
+EB922	3
+EB923	7
+EB924	0
+EB924a	0
+EB924b	0
+EB925	0
+EB1001	0
+EB1003	2
+EB1004	5
+EB1005	5
+EB1006	7
+EB1007	0
+EB1008	0
+EB1008b	0
+EB1008c	0
+EB1009	5
+EB1011	0
+EB1012	0
+EB1013	0
+EB1014	0
+EB1015	7
+EB1016	0
+EB1017	0
+EB1018	7
+EB1019	7
+EB1020	2
+EB1021	0
+EB1022	7
+EB1101	0
+EB1201	3
+EB1202	7
+EB1203	0
+EB1301	1
+EB1302	1
+EB1303	5
+EB1304	0
+EB1305	0
+EB1306	0
+EB1307	0
+EB1308	7
+EB1309	7
+EB1310	0
+EB1311	7
+EB1401	7
+EB1402	7
+EB1403	7
+EB1404a	6
+EB1404c	6
+EB1405	0
+EB1501	0
+EB1502	0
+EB1503	0
+EB1601	0
+EB1603	7
+EB1604	7
+EB1605	7
+EB1606	0
+EB1606b	0
+EB1607	3
+EB1608	6
+EB1609	3
+EB1610	7
+EB1611	0
+EB1701	0
+EB1702	0
+EB1702b	0
+EB1703	4
+EB1704	0
+EB1705	4
+EB1706	4
+EB1707	0
+EB1708	6
+EB1709	0
+EB1710	5
+EB1711	5
+EB1801	0
+EB1802	7
+EB1803	4
+EB1804	7
+EB1805	6
+EB1806	7
+EB1807	1
+EB1808	0
+EB1808a	0
+EB1809	7
+EB1810	0
+EB1901	7
+EB1902	6
+EB1903	0
+EB1904	7
+EB1905	7
+EB1906	6
+EB2001	0
+EB2002	6
+EB2003	6
+CB1	3
+CB2	6
+CB3	6
+CB4	1
+CB5	2
+CB6	7
+CB7	2
+CB8	7
+CB9	6
+CB10	5
+CB12	0
+CB13	4
+CB14	1
+CB14a	1
+CB14b	1
+CB15	6
+CB101	6
+CB103	6
+CB104	0
+CB105	6
+CB105b	6
+CB106	0
+CB207	6
+CB209	6
+CB210	1
+CB217	3
+CB217a	3
+CB277	5
+CB327	3
+CB328	3
+CB202	6
+CB212	3
+CB213	3
+CB216	7
+CB219	0
+CB220	0
+CB221	0
+CB223	1
+CB231	6
+CB232	0
+CB236	1
+CB240	5
+CB241a	0
+CB241b	1
+CB244	6
+CB245	4
+CB247	0
+CB262	6
+CB271	7
+CB275	6
+CB281	0
+CB288	1
+CB296	2
+CB297	2
+CB298	1
+CB307	7
+CB309	1
+CB310	7
+CB313	2
+CB323	6
+CB329a	0
+CB335	1
+CB339	3
+CB205	1
+CB225	1
+CB235	6
+CB251	7
+CB256	7
+CB257	6
+CB260	6
+CB267	2
+CB289	5
+CB203	6
+CB204	1
+CB204b	1
+CB206	1
+CB214	7
+CB215	7
+CB218	7
+CB224	1
+CB226	1
+CB227	5
+CB228	4
+CB229	2
+CB230	1
+CB233	6
+CB234	1
+CB237	6
+CB238	1
+CB239	1
+CB241c	6
+CB242	5
+CB243	1
+CB243b	1
+CB246	5
+CB248	6
+CB250	6
+CB252	0
+CB254	3
+CB255	3
+CB258	6
+CB259	6
+CB261	2
+CB263	5
+CB263b	5
+CB264	1
+CB265	3
+CB266	7
+CB268	6
+CB269	1
+CB270	3
+CB272	4
+CB273	7
+CB274	0
+CB276	0
+CB278	0
+CB279	0
+CB280	7
+CB282	3
+CB283	4
+CB284	3
+CB285	1
+CB286	1
+CB287	4
+CB290	6
+CB291	2
+CB292	0
+CB293	2
+CB294	5
+CB295	2
+CB299	1
+CB300	0
+CB301	7
+CB302	2
+CB303	7
+CB304	3
+CB305	2
+CB306	7
+CB308	1
+CB311	6
+CB312	5
+CB314	7
+CB315	0
+CB316	6
+CB317	4
+CB318	1
+CB319	3
+CB320	0
+CB321	1
+CB322	1
+CB322a	1
+CB324	1
+CB325	4
+CB326	6
+CB330	1
+CB331	1
+CB332	6
+CB333	0
+CB334	6
+CB337	1
+CB338	1
+CB338b	3
+CB340	7
+CB341	3
+CB342	7
+CB343	2
+CB344a	0
+CB344b	0
+CB344c	0
+ED1	0
+ED2	0
+ED3	0
+ED4	7
+ED6	0
+ED7	0
+ED8	7
+ED9	0
+ED10	0
+ED11	3
+ED12	0
+ED13	0
+ED14	6
+ED15	0
+ED16	0
+ED17	7
+ED18	0
+ED19	0
+ED20	0
+ED21	6
+ED22	7
+ED22b	7
+ED23	7
+ED24	6
+ED25	7
+ED26	7
+ED27	6
+ED28	0
+ED29	1
+ED30	0
+ED31	7
+ED31b	3
+ED31c	0
+ED32	0
+ED33	3
+ED34	0
+ED35	0
+ED36	0
+ED37	3
+ED38	3
+ED39	0
+ED40	1
+ED41	7
+ED42	7
+ED43	7
+ED44	7
+ED45	7
+ED46	1
+ED47	7
+ED48	6
+ED49	0
+ED49b	7
+ED50	0
+ED51	7
+ED52	0
+ED53	7
+ED54	0
+ED55	0
+ED56	3
+ED57	7
+ED58	6
+ED59	6
+ED61	0
+ED62	3
+ED63	0
+ED64	7
+ED65	3
+ED68	1
+ED69	3
+ED70	5
+ED71	6
+ED72	7
+ED73	7
+ED74	4
+ED75	4
+ED76	3
+ED77	7
+ED78	3
+ED79	7
+ED80	0
+ED81	0
+ED82	4
+ED83	1
+ED84	4
+ED85	7
+ED86	7
+ED87	0
+ED87a	0
+ED88	7
+ED89	7
+ED90	3
+ED91	7
+ED92	0
+ED93	7
+ED94	6
+ED95	0
+ED96	0
+ED97	0
+ED98	6
+ED99a	0
+ED100	7
+ED101	3
+CD1	7
+CD3	0
+CD7	1
+CD28	5
+CD31	2
+CD39	4
+CD40	1
+CD43	0
+CD48	5
+CD49	4
+CD55	3
+CD56	7
+CD64	0
+CD67	0
+CD76	2
+CD77	4
+CD79	0
+CD82	4
+CD83	0
+CD87	0
+CD88	6
+CD89	4
+CD90	5
+CD91	6
+CD92	7
+CD92a	7
+CD92b	7
+CD93	2
+CD94	2
+CD94b	4
+CD95	1
+CD96	6
+CD99	0
+CD102	1
+CD104a	4
+CD104b	4
+CD105	6
+CD107	0
+CD108	7
+CD109	0
+EJ1	6
+EJ2	5
+EJ2b	0
+EJ3	0
+EJ4	7
+EJ6	0
+EJ7	7
+EJ7b	7
+EJ8	0
+EJ9	0
+EJ12	6
+EJ13	0
+EJ13b	6
+EJ14	0
+EJ15	6
+EJ17	7
+EJ18	0
+EJ19	0
+EJ20	0
+EJ21	0
+EJ22	0
+EJ23	0
+EJ24	5
+EJ25	7
+EJ26	0
+EJ27	0
+EJ28	6
+EJ29	0
+EJ30	3
+EJ31	0
+EJ32	7
+EJ33	0
+EJ34	7
+EJ35	3
+EJ37	6
+EJ39	7
+EJ40	7
+EJ41	0
+EJ42	3
+EJ43	5
+EJ44	6
+EJ45	0
+EJ46	6
+EJ47	0
+EJ49b	6
+EJ50	0
+EJ51	3
+EJ52	0
+EJ53	7
+EJ54	6
+EJ55	7
+EJ56	7
+EJ57	0
+EJ58	7
+EJ59	0
+EJ60	0
+EJ62a	4
+EJ62b	4
+EJ63a	0
+EJ63	0
+EJ64	0
+EJ65	0
+EJ66	0
+EJ67	6
+EJ68	0
+EJ69	0
+EJ71	6
+EJ72	0
+EJ73	6
+EJ74	6
+EJ75	7
+EJ76	5
+EJ77	0
+EJ78	7
+EJ79	4
+EJ80	4
+EJ81	0
+EJ81b	7
+EJ81c	7
+EJ82	0
+EJ84	7
+EJ85	0
+EJ86	5
+EJ87	0
+EJ88	7
+EJ89	7
+EJ90	0
+EJ91	7
+EJ92	7
+EJ93	3
+EJ94	0
+EJ95	7
+EJ96	7
+EJ97	5
+EJ98	0
+EJ99	0
+EJ100	0
+EJ101	0
+S1	3
+S2	3
+S3	7
+S4	0
+S5	6
+S6	7
+S6b	0
+S6c	0
+S7	7
+S8	0
+S9	0
+S10	7
+S10b	0
+S10c	7
+S10d	0
+S11	0
+S12	7
+S13	0
+S14b	2
+HH1	1
+HH2	1
+HH3	0
+HH4	0
+HH5	3
+HH6	7
+HH7	5
+HH8	0
+HH9	6
+HH10	1
+HH11	6
+HH12	1
+HH13	6
+HH14	7
+HH15	3
+HH16	7
+HH17	7
+Reinforce1	0
+Reinforce2	0
+Reinforce3	0
+Reinforce4	4
+Reinforce5	4
+Reinforce102	0
+LE1	3
+LE2	7
+LE3	5
+LE5	0
+LE6	5
+LE8	0
+LE9	0
+LE10	0
+LE12	7
+LE13	7
+LE15	1
+LE16	2
+RE1	5
+RE2	7
+RE3	0
+RE5	1
+RE6	7
+RE7	3
+RE8	7
+RE9	0
+RE10	0
+RE12	0
+RE13	0
+RE14	4
+Th1	0
+Th2	0
+Th3	7
+Th4	0
+Th5	6
+Th6	6
+Th7	6
+Th8	0
+Th9	6
+Th10	1
+Th11	1
+Th12	1
+Th13	0
+Th14	1
+Th15	7
+Th16	0
+Th17	7
+Th18	7
+Th19	6
+Th20	3
+Th21	6
+Th22	7
+Th23	0
+Th24	0
+M1	0
+M2	0
+M3	7
+M4	0
+M5	6
+M6	6
+M7	6
+M8	6
+Conn101	1
+Conn102	1
+Conn103	6
+Conn104	6
+Conn105	0
+Conn106	6
+Conn201	1
+Conn202	5
+Conn203	1
+Conn204	7
+Conn205	7
+Conn206	6
+Conn207	1
+Conn301	6
+Conn302	6
+Conn303	2
+Conn304	2
+Conn305	2
+Conn306	4
+Conn307	7
+Conn308	6
+Conn309	6
+Conn310	1
+Conn311	2
+Conn312	5
+Conn313	1
+Conn314	6
+Conn315	5
+Conn401	4
+Conn402	4
+Conn403	6
+Conn501	1
+Conn502	6
+Conn503	6
+Conn504	6
+Conn505	6
+Conn506	0
+Conn507	6
+Conn508	5
+Conn509	6
+Conn509b	6
+Conn510	1
+Conn601	1
+Conn602	6
+Conn603	1
+Conn603b	1
+Conn604	6
+Conn605	6
+Conn606	6
+Conn607	1
+Conn608	1
+Conn609	7
+Conn610	0
+Conn611	7
+Conn701	6
+Conn702	3
+Conn703	4
+Conn704	6
+Conn705	6
+Conn706	0
+Conn707	0
+Conn708	1
+Conn801	7
+Cut101	0
+Cut201	0
+Cut302	5
+Cut303	5
+Cut304	1
+Cut501	7
+Cut601	0
+AS1	0
+AS2	0
+AS3	7
+AS4	6
+AS5	7
+AS6	6
+AS7	0
+Shape1	6
+Shape2	1
+Shape3	0
+Shape4	6
+Shape5	6
+Shape6	3
+Shape6b	3
+Shape7	3
+Shape8a	3
+Shape8b	3
+Shape8c	3
+Shape8d	7
+Shape9a	0
+Shape9b	0
+Shape9c	0
+Shape10	1
+Shape11	6
+Shape12	6
+Shape12b	7
+Shape13	0
+Shape14	1
+Shape15	1
+Shape16	5
+Shape17	4
+Shape18	6
+Shape18b	6
+Shape18c	7
+Shape19	6
+Shape20	1
+Shape21	6
+Shape22	4
+Shape23	7
+Shape24	7
+Shape25	7
+Shape26	1
+Shape27	7
+Shape28	3
+Shape29	2
+Shape30	0
+Shape31	0
+Shape32	1
+Shape33	6
+Shape34	7
+Shape35	2
+Shape36	2
+Shape37	2
+Shape38	0
+Shape39	3
+Shape40	3
+Shape41	3
+Shape42	6
+Shape43	0
+Shape44	6
+Shape45	1
+Shape46	0
+Shape47	1
+Shape48	0
+Shape49	7
+Shape50	0
+Shape51	0
+Shape53	0
+Shape54	0
+Shape55	1
+Shape56	7
+Shape57	1
+Shape58	3
+Shape59	0
+Shape60	7
+Shape60b	7
+Shape60c	0
+Shape61	5
+Shape62	7
+Shape63	7
+Shape64	0
+Shape65	0
+Shape66	1
+Shape67	3
+Shape68	7
+Shape69	7
+Shape70	7
+Shape71	7
+Shape72	7
+Shape73	1
+Shape73b	1
+Shape74	4
+Shape75	0
+Shape76	5
+Shape77	0
+Shape78	0
+Shape79	6
+Shape80	4
+Shape81	6
+Shape82	4
+Shape83	1
+Shape84	5
+Shape85	5
+Shape86	0
+Shape87	1
+Shape88	0
+Sente1	4
+Sente1b	4
+Sente1c	4
+Sente1d	1
+Sente2	1
+Sente3	0
+Sente4	0
+Sente5	1
+Sente6	6
+Sente7	0
+Sente8	0
+Sente9	1
+Sente10	0
+Sente11	6
+Sente13	3
+Sente13b	3
+Sente13c	6
+Sente13d	7
+Sente13e	2
+Sente14	5
+Sente15	5
+Sente16	0
+Sente17	0
+Sente18	0
+Sente19	5
+Sente20	5
+Sente21	5
+Sente22	0
+Sente23	6
+Sente24	0
+DD1	1
+DD2	2
+DD2b	2
+DD3	1
+DD4	1
+DD5	1
+DD6	1
+DD7	0
+DD8	2
+DD8b	4
+DD9	2
+DD10	0
+DD11	1
+DD12	6
+DD13	1
+Temp1	0
+Temp5	0
+Temp6	6
+Temp7a	7
+Temp7b	7
+Temp8	3
+Temp9	0
diff -N -r -u -X .ignore gnugo-copy/patterns/patterns.h gnugo/patterns/patterns.h
--- gnugo-copy/patterns/patterns.h	2007-02-04 14:20:03.375000000 +0100
+++ gnugo/patterns/patterns.h	2007-02-10 23:08:18.424625000 +0100
@@ -306,8 +306,6 @@
 DECLARE(jump_out_far_helper);
 DECLARE(high_handicap_helper);
 DECLARE(reinforce_helper);
-DECLARE(throw_in_atari_helper);
-DECLARE(cutstone2_helper);
 DECLARE(thrash_around_helper);
 
 /* autohelper fns */
@@ -329,6 +327,8 @@
 int adjacent_to_defendable_stone_in_atari(int str);
 void backfill_replace(int move, int str);
 int break_mirror_helper(int str, int color);
+int throw_in_atari_helper(int move, int color, int apos, int cpos, int dpos);
+int cutstone2_helper(int move, int apos, int bpos, int cpos);
 
 
 /* pattern arrays themselves */
diff -N -r -u -X .ignore gnugo-copy/patterns/patterns.vcproj gnugo/patterns/patterns.vcproj
--- gnugo-copy/patterns/patterns.vcproj	2007-02-06 14:39:50.375000000 +0100
+++ gnugo/patterns/patterns.vcproj	2007-02-16 23:36:34.484375000 +0100
@@ -675,7 +675,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -X  attpat -i ..\patterns\attack.db -o apatterns.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\attack.dtr -X  attpat -i ..\patterns\attack.db -o apatterns.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="apatterns.c"
 					/>
@@ -685,7 +685,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -X  attpat -i ..\patterns\attack.db -o apatterns.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\attack.dtr -X  attpat -i ..\patterns\attack.db -o apatterns.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="apatterns.c"
 					/>
@@ -699,7 +699,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -c -b barrierspat -i ..\patterns\barriers.db -o barriers.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -c -D -m -t ..\patterns\barriers.dtr -b barrierspat -i ..\patterns\barriers.db -o barriers.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="barriers.c"
 					/>
@@ -709,7 +709,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -c -b barrierspat -i ..\patterns\barriers.db -o barriers.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -c -D -m -t ..\patterns\barriers.dtr -b barrierspat -i ..\patterns\barriers.db -o barriers.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="barriers.c"
 					/>
@@ -723,7 +723,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -c conn -i ..\patterns\conn.db -o conn.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -c -D -m -t ..\patterns\conn.dtr conn -i ..\patterns\conn.db -o conn.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="conn.c"
 					/>
@@ -733,7 +733,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -c conn -i ..\patterns\conn.db -o conn.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -c -D -m -t ..\patterns\conn.dtr conn -i ..\patterns\conn.db -o conn.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="conn.c"
 					/>
@@ -747,7 +747,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat defpat -i ..\patterns\defense.db -o dpatterns.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\defense.dtr defpat -i ..\patterns\defense.db -o dpatterns.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="dpatterns.c"
 					/>
@@ -757,7 +757,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat defpat -i ..\patterns\defense.db -o dpatterns.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\defense.dtr defpat -i ..\patterns\defense.db -o dpatterns.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="dpatterns.c"
 					/>
@@ -771,7 +771,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b endpat -i ..\patterns\endgame.db -o endgame.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\endgame.dtr -b endpat -i ..\patterns\endgame.db -o endgame.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="endgame.c"
 					/>
@@ -781,7 +781,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b endpat -i ..\patterns\endgame.db -o endgame.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\endgame.dtr -b endpat -i ..\patterns\endgame.db -o endgame.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="endgame.c"
 					/>
@@ -819,7 +819,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b fusekipat -i ..\patterns\fuseki.db -o fusekipat.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -b -m fusekipat -i ..\patterns\fuseki.db -o fusekipat.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="fusekipat.c"
 					/>
@@ -829,7 +829,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b fusekipat -i ..\patterns\fuseki.db -o fusekipat.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -b -m fusekipat -i ..\patterns\fuseki.db -o fusekipat.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="fusekipat.c"
 					/>
@@ -915,7 +915,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b handipat -i ..\patterns\handicap.db -o handipat.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\handicap.dtr -b handipat -i ..\patterns\handicap.db -o handipat.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="handipat.c"
 					/>
@@ -925,7 +925,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b handipat -i ..\patterns\handicap.db -o handipat.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\handicap.dtr -b handipat -i ..\patterns\handicap.db -o handipat.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="handipat.c"
 					/>
@@ -963,7 +963,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -c influencepat -i ..\patterns\influence.db -o influence.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -c -D -m -t ..\patterns\influence.dtr influencepat -i ..\patterns\influence.db -o influence.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="influence.c"
 					/>
@@ -973,7 +973,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -c influencepat -i ..\patterns\influence.db -o influence.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -c -D -m -t ..\patterns\influence.dtr influencepat -i ..\patterns\influence.db -o influence.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;"
 						Outputs="influence.c"
 					/>
@@ -1059,7 +1059,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b pat -i patterns.db -i patterns2.db -o patterns.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\patterns.dtr -b pat -i patterns.db -i patterns2.db -o patterns.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;patterns2.db;"
 						Outputs="patterns.c"
 					/>
@@ -1069,7 +1069,7 @@
 					>
 					<Tool
 						Name="VCCustomBuildTool"
-						CommandLine="$(IntDir)\mkpat -b pat -i patterns.db -i patterns2.db -o patterns.c&#x0D;&#x0A;"
+						CommandLine="$(IntDir)\mkpat -D -m -t ..\patterns\patterns.dtr -b pat -i patterns.db -i patterns2.db -o patterns.c&#x0D;&#x0A;"
 						AdditionalDependencies="$(IntDir)\mkpat.exe;patterns2.db;"
 						Outputs="patterns.c"
 					/>
