diff --git a/Python/bltinmodule.c b/Python/bltinmodule.c
index b74b9cc..3d9504b 100644
--- a/Python/bltinmodule.c
+++ b/Python/bltinmodule.c
@@ -796,7 +796,9 @@
 
 /* Predefined exceptions */
 
+object *AccessError;
 object *AttributeError;
+object *ConflictError;
 object *EOFError;
 object *IOError;
 object *ImportError;
@@ -827,7 +829,9 @@
 static void
 initerrors()
 {
+	AccessError = newstdexception("AccessError");
 	AttributeError = newstdexception("AttributeError");
+	ConflictError = newstdexception("ConflictError");
 	EOFError = newstdexception("EOFError");
 	IOError = newstdexception("IOError");
 	ImportError = newstdexception("ImportError");
diff --git a/Python/ceval.c b/Python/ceval.c
index 44239e6..57abda6 100644
--- a/Python/ceval.c
+++ b/Python/ceval.c
@@ -84,9 +84,10 @@
 static int cmp_member PROTO((object *, object *));
 static object *cmp_outcome PROTO((int, object *, object *));
 static int import_from PROTO((object *, object *, object *));
-static object *build_class PROTO((object *, object *));
+static object *build_class PROTO((object *, object *, object *));
 static void locals_2_fast PROTO((frameobject *, int));
 static void fast_2_locals PROTO((frameobject *));
+static int access_statement PROTO((object *, int, frameobject *));
 
 
 /* Pointer to current frame, used to link new frames to */
@@ -743,10 +744,12 @@
 			break;
 		
 		case BUILD_CLASS:
-			w = POP();
+			u = POP();
 			v = POP();
-			x = build_class(v, w);
+			w = POP();
+			x = build_class(u, v, w);
 			PUSH(x);
+			DECREF(u);
 			DECREF(v);
 			DECREF(w);
 			break;
@@ -754,12 +757,24 @@
 		case STORE_NAME:
 			w = GETNAMEV(oparg);
 			v = POP();
+			u = dict2lookup(f->f_locals, w);
+			if (u != NULL && is_accessobject(u)) {
+				err = setaccessvalue(u, (object *)NULL, v);
+				DECREF(v);
+				break;
+			}
 			err = dict2insert(f->f_locals, w, v);
 			DECREF(v);
 			break;
 		
 		case DELETE_NAME:
 			w = GETNAMEV(oparg);
+			u = dict2lookup(f->f_locals, w);
+			if (u != NULL && is_accessobject(u)) {
+				err = setaccessvalue(u, (object *)NULL,
+						     (object *)NULL);
+				break;
+			}
 			if ((err = dict2remove(f->f_locals, w)) != 0)
 				err_setstr(NameError, getstringvalue(w));
 			break;
@@ -952,12 +967,24 @@
 		case STORE_GLOBAL:
 			w = GETNAMEV(oparg);
 			v = POP();
+			u = dict2lookup(f->f_locals, w);
+			if (u != NULL && is_accessobject(u)) {
+				err = setaccessvalue(u, (object *)NULL, v);
+				DECREF(v);
+				break;
+			}
 			err = dict2insert(f->f_globals, w, v);
 			DECREF(v);
 			break;
 		
 		case DELETE_GLOBAL:
 			w = GETNAMEV(oparg);
+			u = dict2lookup(f->f_locals, w);
+			if (u != NULL && is_accessobject(u)) {
+				err = setaccessvalue(u, (object *)NULL,
+						     (object *)NULL);
+				break;
+			}
 			if ((err = dict2remove(f->f_globals, w)) != 0)
 				err_setstr(NameError, getstringvalue(w));
 			break;
@@ -984,6 +1011,11 @@
 					}
 				}
 			}
+			if (is_accessobject(x)) {
+				x = getaccessvalue(x, (object *)NULL);
+				if (x == NULL)
+					break;
+			}
 			INCREF(x);
 			PUSH(x);
 			break;
@@ -1000,6 +1032,11 @@
 					break;
 				}
 			}
+			if (is_accessobject(x)) {
+				x = getaccessvalue(x, (object *)NULL);
+				if (x == NULL)
+					break;
+			}
 			INCREF(x);
 			PUSH(x);
 			break;
@@ -1011,6 +1048,11 @@
 				err_setstr(NameError, getstringvalue(w));
 				break;
 			}
+			if (is_accessobject(x)) {
+				x = getaccessvalue(x, (object *)NULL);
+				if (x == NULL)
+					break;
+			}
 			INCREF(x);
 			PUSH(x);
 			break;
@@ -1041,15 +1083,25 @@
 					   "undefined local variable");
 				break;
 			}
+			if (is_accessobject(x)) {
+				x = getaccessvalue(x, (object *)NULL);
+				if (x == NULL)
+					break;
+			}
 			INCREF(x);
 			PUSH(x);
 			break;
 
 		case STORE_FAST:
+			v = POP();
 			w = GETLISTITEM(fastlocals, oparg);
+			if (w != NULL && is_accessobject(w)) {
+				err = setaccessvalue(w, (object *)NULL, v);
+				DECREF(v);
+				break;
+			}
 			XDECREF(w);
-			w = POP();
-			GETLISTITEM(fastlocals, oparg) = w;
+			GETLISTITEM(fastlocals, oparg) = v;
 			break;
 
 		case DELETE_FAST:
@@ -1059,6 +1111,11 @@
 					   "undefined local variable");
 				break;
 			}
+			if (w != NULL && is_accessobject(w)) {
+				err = setaccessvalue(w, (object *)NULL,
+						     (object *)NULL);
+				break;
+			}
 			DECREF(x);
 			GETLISTITEM(fastlocals, oparg) = NULL;
 			break;
@@ -1124,6 +1181,13 @@
 			err = import_from(f->f_locals, v, w);
 			locals_2_fast(f, 0);
 			break;
+
+		case ACCESS_MODE:
+			v = POP();
+			w = GETNAMEV(oparg);
+			err = access_statement(w, (int)getintvalue(v), f);
+			DECREF(v);
+			break;
 		
 		case JUMP_FORWARD:
 			JUMPBY(oparg);
@@ -1483,7 +1547,8 @@
 	/* Merge f->f_fastlocals into f->f_locals */
 	object *locals, *fast, *map;
 	object *error_type, *error_value;
-	int i;
+	int pos;
+	object *key, *value;
 	if (f == NULL)
 		return;
 	locals = f->f_locals;
@@ -1495,16 +1560,10 @@
 	    !is_dictobject(map))
 		return;
 	err_get(&error_type, &error_value);
-	i = getdictsize(map);
-	while (--i >= 0) {
-		object *key;
-		object *value;
+	pos = 0;
+	while (mappinggetnext(map, &pos, &key, &value)) {
 		int j;
-		key = getdict2key(map, i);
-		if (key == NULL)
-			continue;
-		value = dict2lookup(map, key);
-		if (value == NULL || !is_intobject(value))
+		if (!is_intobject(value))
 			continue;
 		j = getintvalue(value);
 		value = getlistitem(fast, j);
@@ -1529,7 +1588,8 @@
 	/* Merge f->f_locals into f->f_fastlocals */
 	object *locals, *fast, *map;
 	object *error_type, *error_value;
-	int i;
+	int pos;
+	object *key, *value;
 	if (f == NULL)
 		return;
 	locals = f->f_locals;
@@ -1541,16 +1601,10 @@
 	    !is_dictobject(map))
 		return;
 	err_get(&error_type, &error_value);
-	i = getdictsize(map);
-	while (--i >= 0) {
-		object *key;
-		object *value;
+	pos = 0;
+	while (mappinggetnext(map, &pos, &key, &value)) {
 		int j;
-		key = getdict2key(map, i);
-		if (key == NULL)
-			continue;
-		value = dict2lookup(map, key);
-		if (value == NULL || !is_intobject(value))
+		if (!is_intobject(value))
 			continue;
 		j = getintvalue(value);
 		value = dict2lookup(locals, key);
@@ -1907,14 +1961,7 @@
 		return (*meth)(self, arg);
 	}
 	if (is_classobject(func)) {
-		if (arg != NULL &&
-				!(is_tupleobject(arg) &&
-					gettuplesize(arg) == 0)) {
-			err_setstr(TypeError,
-				"classobject() allows no arguments");
-			return NULL;
-		}
-		return newinstanceobject(func);
+		return newinstanceobject(func, arg);
 	}
 	err_setstr(TypeError, "call of non-function");
 	return NULL;
@@ -2258,19 +2305,14 @@
 	object *w, *x;
 	w = getmoduledict(v);
 	if (getstringvalue(name)[0] == '*') {
-		int i;
-		int n = getdictsize(w);
-		for (i = 0; i < n; i++) {
-			name = getdict2key(w, i);
-			if (name == NULL || getstringvalue(name)[0] == '_')
+		int pos;
+		object *name, *value;
+		pos = 0;
+		while (mappinggetnext(w, &pos, &name, &value)) {
+			if (!is_stringobject(name) ||
+			    getstringvalue(name)[0] == '_')
 				continue;
-			x = dict2lookup(w, name);
-			if (x == NULL) {
-				/* XXX can't happen? */
-				err_setstr(SystemError, getstringvalue(name));
-				return -1;
-			}
-			if (dict2insert(locals, name, x) != 0)
+			if (dict2insert(locals, name, value) != 0)
 				return -1;
 		}
 		return 0;
@@ -2290,27 +2332,74 @@
 }
 
 static object *
-build_class(v, w)
-	object *v; /* None or tuple containing base classes */
-	object *w; /* dictionary */
+build_class(methods, bases, name)
+	object *methods; /* dictionary */
+	object *bases;  /* tuple containing classes */
+	object *name;   /* string */
 {
-	if (is_tupleobject(v)) {
-		int i;
-		for (i = gettuplesize(v); --i >= 0; ) {
-			object *x = gettupleitem(v, i);
-			if (!is_classobject(x)) {
-				err_setstr(TypeError,
-					"base is not a class object");
-				return NULL;
-			}
-		}
+	int i;
+	if (!is_tupleobject(bases)) {
+		err_setstr(SystemError, "build_class with non-tuple bases");
+		return NULL;
 	}
-	else {
-		v = NULL;
-	}
-	if (!is_dictobject(w)) {
+	if (!is_dictobject(methods)) {
 		err_setstr(SystemError, "build_class with non-dictionary");
 		return NULL;
 	}
-	return newclassobject(v, w, (object *) NULL);
+	if (!is_stringobject(name)) {
+		err_setstr(SystemError, "build_class witn non-string name");
+		return NULL;
+	}
+	for (i = gettuplesize(bases); --i >= 0; ) {
+		object *base = gettupleitem(bases, i);
+		if (!is_classobject(base)) {
+			err_setstr(TypeError,
+				"base is not a class object");
+			return NULL;
+		}
+	}
+	return newclassobject(bases, methods, name);
+}
+
+static int
+access_statement(name, mode, f)
+	object *name;
+	int mode;
+	frameobject *f;
+{
+	object *value;
+	int i = -1;
+	object *ac;
+	int ret;
+	if (f->f_localmap == NULL)
+		value = dict2lookup(f->f_locals, name);
+	else {
+		value = dict2lookup(f->f_localmap, name);
+		if (value == NULL || !is_intobject(value))
+			value = NULL;
+		else {
+			i = getintvalue(value);
+			if (0 <= i && i < getlistsize(f->f_fastlocals))
+				value = getlistitem(f->f_fastlocals, i);
+			else {
+				value = NULL;
+				i = -1;
+			}
+		}
+	}
+	if (value && is_accessobject(value)) {
+		err_setstr(AccessError, "can't override access");
+		return -1;
+	}
+	err_clear();
+	ac = newaccessobject(value, (object*)NULL, (typeobject*)NULL, mode);
+	if (ac == NULL)
+		return -1;
+	if (i >= 0)
+		ret = setlistitem(f->f_fastlocals, i, ac);
+	else {
+		ret = dict2insert(f->f_locals, name, ac);
+		DECREF(ac);
+	}
+	return ret;
 }
diff --git a/Python/compile.c b/Python/compile.c
index dd79937..d9d661c 100644
--- a/Python/compile.c
+++ b/Python/compile.c
@@ -1408,6 +1408,65 @@
 	}
 }
 
+#define strequ(a, b) (strcmp((a), (b)) == 0)
+
+static void
+com_access_stmt(c, n)
+	struct compiling *c;
+	node *n;
+{
+	int i, j, k, mode, imode;
+	object *vmode;
+	REQ(n, access_stmt);
+	/* 'access' NAME (',' NAME)* ':' accesstype (',' accesstype)*
+	   accesstype: NAME+ */
+
+	/* Find where the colon is */
+	i = 1;
+	while (TYPE(CHILD(n,i-1)) != COLON)
+		i += 1;
+
+	/* Calculate the mode mask */
+	mode = 0;
+	for (j = i; j < NCH(n); j += 2) {
+		int r=0,w=0,p=0;
+		for (k=0; k<NCH(CHILD(n,j)); k++) {
+			if (strequ(STR(CHILD(CHILD(n,j),k)), "public"))
+				p = 0;
+			else if (strequ(STR(CHILD(CHILD(n,j),k)), "protected"))
+				p = 1;
+			else if (strequ(STR(CHILD(CHILD(n,j),k)), "private"))
+				p = 2;
+			else if (strequ(STR(CHILD(CHILD(n,j),k)), "read"))
+				r = 1;
+			else if (strequ(STR(CHILD(CHILD(n,j),k)), "write"))
+				w = 1;
+			else /* XXX should make this an exception */
+				fprintf(stderr, "bad access type %s\n",
+					STR(CHILD(CHILD(n,j),k)));
+		}
+		if (r == 0 && w == 0)
+			r =w = 1;
+		if (p == 0) {
+			if (r == 1) mode |= AC_R_PUBLIC;
+			if (w == 1) mode |= AC_W_PUBLIC;
+		} else if (p == 1) {
+			if (r == 1) mode |= AC_R_PROTECTED;
+			if (w == 1) mode |= AC_W_PROTECTED;
+		} else {
+			if (r == 1) mode |= AC_R_PRIVATE;
+			if (w == 1) mode |= AC_W_PRIVATE;
+		}
+	}
+	vmode = newintobject((long)mode);
+	imode = com_addconst(c, vmode);
+	XDECREF(vmode);
+	for (i = 1; TYPE(CHILD(n,i-1)) != COLON; i+=2) {
+		com_addoparg(c, LOAD_CONST, imode);
+		com_addopname(c, ACCESS_MODE, CHILD(n, i));
+	}
+}
+
 static void
 com_if_stmt(c, n)
 	struct compiling *c;
@@ -1726,23 +1785,7 @@
 }
 
 static void
-com_oldbases(c, n)
-	struct compiling *c;
-	node *n;
-{
-	int i;
-	REQ(n, baselist);
-	/*
-	baselist: atom arguments (',' atom arguments)*
-	arguments: '(' ')'
-	*/
-	for (i = 0; i < NCH(n); i += 3)
-		com_node(c, CHILD(n, i));
-	com_addoparg(c, BUILD_TUPLE, (NCH(n)+1) / 3);
-}
-
-static void
-com_newbases(c, n)
+com_bases(c, n)
 	struct compiling *c;
 	node *n;
 {
@@ -1759,46 +1802,28 @@
 	struct compiling *c;
 	node *n;
 {
+	int i;
 	object *v;
 	REQ(n, classdef);
-	/*
-	classdef: 'class' NAME
-		['(' testlist ')' |'(' ')' ['=' baselist]] ':' suite
-	baselist: atom arguments (',' atom arguments)*
-	arguments: '(' ')'
-	*/
-	/* This piece of code must push a tuple on the stack (the bases) */
-	if (TYPE(CHILD(n, 2)) != LPAR) {
-		/* New syntax without base classes:
-		class NAME ':' suite
-		___________^
-		*/
+	/* classdef: class NAME ['(' testlist ')'] ':' suite */
+	if ((v = newstringobject(STR(CHILD(n, 1)))) == NULL) {
+		c->c_errors++;
+		return;
+	}
+	/* Push the class name on the stack */
+	i = com_addconst(c, v);
+	com_addoparg(c, LOAD_CONST, i);
+	DECREF(v);
+	/* Push the tuple of base classes on the stack */
+	if (TYPE(CHILD(n, 2)) != LPAR)
 		com_addoparg(c, BUILD_TUPLE, 0);
-	}
-	else {
-		if (TYPE(CHILD(n, 3)) == RPAR) {
-			/* Old syntax with or without base classes:
-			class NAME '(' ')' ['=' baselist] ':' suite
-			_______________^....^...^
-			*/
-			if (TYPE(CHILD(n, 4)) == EQUAL)
-				com_oldbases(c, CHILD(n, 5));
-			else
-				com_addoparg(c, BUILD_TUPLE, 0);
-		}
-		else {
-			/* New syntax with base classes:
-			class NAME '(' testlist ')' ':' suite
-			_______________^
-			*/
-			com_newbases(c, CHILD(n, 3));
-		}
-	}
+	else
+		com_bases(c, CHILD(n, 3));
 	v = (object *)compile(n, c->c_filename);
 	if (v == NULL)
 		c->c_errors++;
 	else {
-		int i = com_addconst(c, v);
+		i = com_addconst(c, v);
 		com_addoparg(c, LOAD_CONST, i);
 		com_addbyte(c, BUILD_FUNCTION);
 		com_addbyte(c, UNARY_CALL);
@@ -1882,6 +1907,9 @@
 	case global_stmt:
 		com_global_stmt(c, n);
 		break;
+	case access_stmt:
+		com_access_stmt(c, n);
+		break;
 	case if_stmt:
 		com_if_stmt(c, n);
 		break;
@@ -2084,9 +2112,8 @@
 		break;
 	
 	case classdef: /* A class definition */
-		/* classdef: 'class' NAME
-			['(' testlist ')' |'(' ')' ['=' baselist]]
-			':' suite */
+		/* classdef: 'class' NAME ['(' testlist ')'] ':' suite */
+		c->c_name = STR(CHILD(n, 1));
 		com_node(c, CHILD(n, NCH(n)-1)); /* The suite */
 		com_addbyte(c, LOAD_LOCALS);
 		com_addbyte(c, RETURN_VALUE);
@@ -2114,8 +2141,8 @@
    
    There is one problem: 'from foo import *' introduces local variables
    that we can't know while compiling.  If this is the case, wo don't
-   optimize at all (this rarely happens, since import is mostly used
-   at the module level).
+   optimize at all (this rarely happens, since this form of import
+   statement is mostly used at the module level).
 
    Note that, because of this optimization, code like the following
    won't work:
diff --git a/Python/graminit.c b/Python/graminit.c
index 571a835..530ddf3 100644
--- a/Python/graminit.c
+++ b/Python/graminit.c
@@ -194,7 +194,7 @@
 	{2, arcs_10_2},
 	{1, arcs_10_3},
 };
-static arc arcs_11_0[7] = {
+static arc arcs_11_0[8] = {
 	{26, 1},
 	{27, 1},
 	{28, 1},
@@ -202,19 +202,20 @@
 	{30, 1},
 	{31, 1},
 	{32, 1},
+	{33, 1},
 };
 static arc arcs_11_1[1] = {
 	{0, 1},
 };
 static state states_11[2] = {
-	{7, arcs_11_0},
+	{8, arcs_11_0},
 	{1, arcs_11_1},
 };
 static arc arcs_12_0[1] = {
-	{33, 1},
+	{34, 1},
 };
 static arc arcs_12_1[2] = {
-	{34, 0},
+	{35, 0},
 	{0, 1},
 };
 static state states_12[2] = {
@@ -222,10 +223,10 @@
 	{2, arcs_12_1},
 };
 static arc arcs_13_0[1] = {
-	{35, 1},
+	{36, 1},
 };
 static arc arcs_13_1[2] = {
-	{36, 2},
+	{37, 2},
 	{0, 1},
 };
 static arc arcs_13_2[2] = {
@@ -238,10 +239,10 @@
 	{2, arcs_13_2},
 };
 static arc arcs_14_0[1] = {
-	{37, 1},
+	{38, 1},
 };
 static arc arcs_14_1[1] = {
-	{33, 2},
+	{34, 2},
 };
 static arc arcs_14_2[1] = {
 	{0, 2},
@@ -252,7 +253,7 @@
 	{1, arcs_14_2},
 };
 static arc arcs_15_0[1] = {
-	{38, 1},
+	{39, 1},
 };
 static arc arcs_15_1[1] = {
 	{0, 1},
@@ -262,10 +263,10 @@
 	{1, arcs_15_1},
 };
 static arc arcs_16_0[4] = {
-	{39, 1},
 	{40, 1},
 	{41, 1},
 	{42, 1},
+	{43, 1},
 };
 static arc arcs_16_1[1] = {
 	{0, 1},
@@ -275,7 +276,7 @@
 	{1, arcs_16_1},
 };
 static arc arcs_17_0[1] = {
-	{43, 1},
+	{44, 1},
 };
 static arc arcs_17_1[1] = {
 	{0, 1},
@@ -285,7 +286,7 @@
 	{1, arcs_17_1},
 };
 static arc arcs_18_0[1] = {
-	{44, 1},
+	{45, 1},
 };
 static arc arcs_18_1[1] = {
 	{0, 1},
@@ -295,7 +296,7 @@
 	{1, arcs_18_1},
 };
 static arc arcs_19_0[1] = {
-	{45, 1},
+	{46, 1},
 };
 static arc arcs_19_1[2] = {
 	{9, 2},
@@ -310,17 +311,17 @@
 	{1, arcs_19_2},
 };
 static arc arcs_20_0[1] = {
-	{46, 1},
+	{47, 1},
 };
 static arc arcs_20_1[1] = {
-	{36, 2},
+	{37, 2},
 };
 static arc arcs_20_2[2] = {
 	{21, 3},
 	{0, 2},
 };
 static arc arcs_20_3[1] = {
-	{36, 4},
+	{37, 4},
 };
 static arc arcs_20_4[1] = {
 	{0, 4},
@@ -333,8 +334,8 @@
 	{1, arcs_20_4},
 };
 static arc arcs_21_0[2] = {
-	{47, 1},
-	{48, 2},
+	{48, 1},
+	{49, 2},
 };
 static arc arcs_21_1[1] = {
 	{13, 3},
@@ -347,7 +348,7 @@
 	{0, 3},
 };
 static arc arcs_21_4[1] = {
-	{47, 5},
+	{48, 5},
 };
 static arc arcs_21_5[2] = {
 	{22, 6},
@@ -375,7 +376,7 @@
 	{1, arcs_21_8},
 };
 static arc arcs_22_0[1] = {
-	{49, 1},
+	{50, 1},
 };
 static arc arcs_22_1[1] = {
 	{13, 2},
@@ -389,330 +390,343 @@
 	{1, arcs_22_1},
 	{2, arcs_22_2},
 };
-static arc arcs_23_0[6] = {
-	{50, 1},
+static arc arcs_23_0[1] = {
 	{51, 1},
-	{52, 1},
-	{53, 1},
-	{11, 1},
-	{54, 1},
 };
 static arc arcs_23_1[1] = {
-	{0, 1},
+	{13, 2},
 };
-static state states_23[2] = {
-	{6, arcs_23_0},
+static arc arcs_23_2[2] = {
+	{21, 1},
+	{15, 3},
+};
+static arc arcs_23_3[1] = {
+	{52, 4},
+};
+static arc arcs_23_4[2] = {
+	{21, 3},
+	{0, 4},
+};
+static state states_23[5] = {
+	{1, arcs_23_0},
 	{1, arcs_23_1},
+	{2, arcs_23_2},
+	{1, arcs_23_3},
+	{2, arcs_23_4},
 };
 static arc arcs_24_0[1] = {
-	{55, 1},
+	{13, 1},
 };
-static arc arcs_24_1[1] = {
-	{36, 2},
+static arc arcs_24_1[2] = {
+	{13, 1},
+	{0, 1},
 };
-static arc arcs_24_2[1] = {
-	{15, 3},
-};
-static arc arcs_24_3[1] = {
-	{16, 4},
-};
-static arc arcs_24_4[3] = {
-	{56, 1},
-	{57, 5},
-	{0, 4},
-};
-static arc arcs_24_5[1] = {
-	{15, 6},
-};
-static arc arcs_24_6[1] = {
-	{16, 7},
-};
-static arc arcs_24_7[1] = {
-	{0, 7},
-};
-static state states_24[8] = {
+static state states_24[2] = {
 	{1, arcs_24_0},
-	{1, arcs_24_1},
-	{1, arcs_24_2},
-	{1, arcs_24_3},
-	{3, arcs_24_4},
-	{1, arcs_24_5},
-	{1, arcs_24_6},
-	{1, arcs_24_7},
+	{2, arcs_24_1},
 };
-static arc arcs_25_0[1] = {
-	{58, 1},
+static arc arcs_25_0[6] = {
+	{53, 1},
+	{54, 1},
+	{55, 1},
+	{56, 1},
+	{11, 1},
+	{57, 1},
 };
 static arc arcs_25_1[1] = {
-	{36, 2},
+	{0, 1},
 };
-static arc arcs_25_2[1] = {
-	{15, 3},
-};
-static arc arcs_25_3[1] = {
-	{16, 4},
-};
-static arc arcs_25_4[2] = {
-	{57, 5},
-	{0, 4},
-};
-static arc arcs_25_5[1] = {
-	{15, 6},
-};
-static arc arcs_25_6[1] = {
-	{16, 7},
-};
-static arc arcs_25_7[1] = {
-	{0, 7},
-};
-static state states_25[8] = {
-	{1, arcs_25_0},
+static state states_25[2] = {
+	{6, arcs_25_0},
 	{1, arcs_25_1},
-	{1, arcs_25_2},
-	{1, arcs_25_3},
-	{2, arcs_25_4},
-	{1, arcs_25_5},
-	{1, arcs_25_6},
-	{1, arcs_25_7},
 };
 static arc arcs_26_0[1] = {
-	{59, 1},
+	{58, 1},
 };
 static arc arcs_26_1[1] = {
-	{33, 2},
+	{37, 2},
 };
 static arc arcs_26_2[1] = {
-	{60, 3},
+	{15, 3},
 };
 static arc arcs_26_3[1] = {
-	{9, 4},
+	{16, 4},
 };
-static arc arcs_26_4[1] = {
-	{15, 5},
+static arc arcs_26_4[3] = {
+	{59, 1},
+	{60, 5},
+	{0, 4},
 };
 static arc arcs_26_5[1] = {
-	{16, 6},
+	{15, 6},
 };
-static arc arcs_26_6[2] = {
-	{57, 7},
-	{0, 6},
+static arc arcs_26_6[1] = {
+	{16, 7},
 };
 static arc arcs_26_7[1] = {
-	{15, 8},
+	{0, 7},
 };
-static arc arcs_26_8[1] = {
-	{16, 9},
-};
-static arc arcs_26_9[1] = {
-	{0, 9},
-};
-static state states_26[10] = {
+static state states_26[8] = {
 	{1, arcs_26_0},
 	{1, arcs_26_1},
 	{1, arcs_26_2},
 	{1, arcs_26_3},
-	{1, arcs_26_4},
+	{3, arcs_26_4},
 	{1, arcs_26_5},
-	{2, arcs_26_6},
+	{1, arcs_26_6},
 	{1, arcs_26_7},
-	{1, arcs_26_8},
-	{1, arcs_26_9},
 };
 static arc arcs_27_0[1] = {
 	{61, 1},
 };
 static arc arcs_27_1[1] = {
-	{15, 2},
+	{37, 2},
 };
 static arc arcs_27_2[1] = {
-	{16, 3},
+	{15, 3},
 };
-static arc arcs_27_3[2] = {
-	{62, 4},
-	{63, 5},
+static arc arcs_27_3[1] = {
+	{16, 4},
 };
-static arc arcs_27_4[1] = {
-	{15, 6},
+static arc arcs_27_4[2] = {
+	{60, 5},
+	{0, 4},
 };
 static arc arcs_27_5[1] = {
-	{15, 7},
+	{15, 6},
 };
 static arc arcs_27_6[1] = {
-	{16, 8},
+	{16, 7},
 };
 static arc arcs_27_7[1] = {
-	{16, 9},
+	{0, 7},
 };
-static arc arcs_27_8[2] = {
-	{62, 4},
-	{0, 8},
-};
-static arc arcs_27_9[1] = {
-	{0, 9},
-};
-static state states_27[10] = {
+static state states_27[8] = {
 	{1, arcs_27_0},
 	{1, arcs_27_1},
 	{1, arcs_27_2},
-	{2, arcs_27_3},
-	{1, arcs_27_4},
+	{1, arcs_27_3},
+	{2, arcs_27_4},
 	{1, arcs_27_5},
 	{1, arcs_27_6},
 	{1, arcs_27_7},
-	{2, arcs_27_8},
-	{1, arcs_27_9},
 };
 static arc arcs_28_0[1] = {
-	{64, 1},
+	{62, 1},
 };
-static arc arcs_28_1[2] = {
-	{36, 2},
-	{0, 1},
+static arc arcs_28_1[1] = {
+	{34, 2},
 };
-static arc arcs_28_2[2] = {
-	{21, 3},
-	{0, 2},
+static arc arcs_28_2[1] = {
+	{63, 3},
 };
 static arc arcs_28_3[1] = {
-	{36, 4},
+	{9, 4},
 };
 static arc arcs_28_4[1] = {
-	{0, 4},
+	{15, 5},
 };
-static state states_28[5] = {
+static arc arcs_28_5[1] = {
+	{16, 6},
+};
+static arc arcs_28_6[2] = {
+	{60, 7},
+	{0, 6},
+};
+static arc arcs_28_7[1] = {
+	{15, 8},
+};
+static arc arcs_28_8[1] = {
+	{16, 9},
+};
+static arc arcs_28_9[1] = {
+	{0, 9},
+};
+static state states_28[10] = {
 	{1, arcs_28_0},
-	{2, arcs_28_1},
-	{2, arcs_28_2},
+	{1, arcs_28_1},
+	{1, arcs_28_2},
 	{1, arcs_28_3},
 	{1, arcs_28_4},
+	{1, arcs_28_5},
+	{2, arcs_28_6},
+	{1, arcs_28_7},
+	{1, arcs_28_8},
+	{1, arcs_28_9},
 };
-static arc arcs_29_0[2] = {
-	{3, 1},
-	{2, 2},
+static arc arcs_29_0[1] = {
+	{64, 1},
 };
 static arc arcs_29_1[1] = {
-	{0, 1},
+	{15, 2},
 };
 static arc arcs_29_2[1] = {
-	{65, 3},
+	{16, 3},
 };
-static arc arcs_29_3[1] = {
-	{6, 4},
+static arc arcs_29_3[2] = {
+	{65, 4},
+	{66, 5},
 };
-static arc arcs_29_4[2] = {
-	{6, 4},
-	{66, 1},
+static arc arcs_29_4[1] = {
+	{15, 6},
 };
-static state states_29[5] = {
-	{2, arcs_29_0},
+static arc arcs_29_5[1] = {
+	{15, 7},
+};
+static arc arcs_29_6[1] = {
+	{16, 8},
+};
+static arc arcs_29_7[1] = {
+	{16, 9},
+};
+static arc arcs_29_8[2] = {
+	{65, 4},
+	{0, 8},
+};
+static arc arcs_29_9[1] = {
+	{0, 9},
+};
+static state states_29[10] = {
+	{1, arcs_29_0},
 	{1, arcs_29_1},
 	{1, arcs_29_2},
-	{1, arcs_29_3},
-	{2, arcs_29_4},
+	{2, arcs_29_3},
+	{1, arcs_29_4},
+	{1, arcs_29_5},
+	{1, arcs_29_6},
+	{1, arcs_29_7},
+	{2, arcs_29_8},
+	{1, arcs_29_9},
 };
 static arc arcs_30_0[1] = {
 	{67, 1},
 };
 static arc arcs_30_1[2] = {
-	{68, 0},
+	{37, 2},
 	{0, 1},
 };
-static state states_30[2] = {
-	{1, arcs_30_0},
-	{2, arcs_30_1},
-};
-static arc arcs_31_0[1] = {
-	{69, 1},
-};
-static arc arcs_31_1[2] = {
-	{70, 0},
-	{0, 1},
-};
-static state states_31[2] = {
-	{1, arcs_31_0},
-	{2, arcs_31_1},
-};
-static arc arcs_32_0[2] = {
-	{71, 1},
-	{72, 2},
-};
-static arc arcs_32_1[1] = {
-	{69, 2},
-};
-static arc arcs_32_2[1] = {
+static arc arcs_30_2[2] = {
+	{21, 3},
 	{0, 2},
 };
-static state states_32[3] = {
-	{2, arcs_32_0},
-	{1, arcs_32_1},
-	{1, arcs_32_2},
+static arc arcs_30_3[1] = {
+	{37, 4},
+};
+static arc arcs_30_4[1] = {
+	{0, 4},
+};
+static state states_30[5] = {
+	{1, arcs_30_0},
+	{2, arcs_30_1},
+	{2, arcs_30_2},
+	{1, arcs_30_3},
+	{1, arcs_30_4},
+};
+static arc arcs_31_0[2] = {
+	{3, 1},
+	{2, 2},
+};
+static arc arcs_31_1[1] = {
+	{0, 1},
+};
+static arc arcs_31_2[1] = {
+	{68, 3},
+};
+static arc arcs_31_3[1] = {
+	{6, 4},
+};
+static arc arcs_31_4[2] = {
+	{6, 4},
+	{69, 1},
+};
+static state states_31[5] = {
+	{2, arcs_31_0},
+	{1, arcs_31_1},
+	{1, arcs_31_2},
+	{1, arcs_31_3},
+	{2, arcs_31_4},
+};
+static arc arcs_32_0[1] = {
+	{70, 1},
+};
+static arc arcs_32_1[2] = {
+	{71, 0},
+	{0, 1},
+};
+static state states_32[2] = {
+	{1, arcs_32_0},
+	{2, arcs_32_1},
 };
 static arc arcs_33_0[1] = {
-	{73, 1},
+	{72, 1},
 };
 static arc arcs_33_1[2] = {
-	{74, 0},
+	{73, 0},
 	{0, 1},
 };
 static state states_33[2] = {
 	{1, arcs_33_0},
 	{2, arcs_33_1},
 };
-static arc arcs_34_0[10] = {
-	{75, 1},
-	{76, 1},
-	{77, 1},
-	{78, 1},
-	{79, 1},
-	{80, 1},
-	{81, 1},
-	{60, 1},
-	{71, 2},
-	{82, 3},
+static arc arcs_34_0[2] = {
+	{74, 1},
+	{75, 2},
 };
 static arc arcs_34_1[1] = {
-	{0, 1},
+	{72, 2},
 };
 static arc arcs_34_2[1] = {
-	{60, 1},
+	{0, 2},
 };
-static arc arcs_34_3[2] = {
-	{71, 1},
-	{0, 3},
-};
-static state states_34[4] = {
-	{10, arcs_34_0},
+static state states_34[3] = {
+	{2, arcs_34_0},
 	{1, arcs_34_1},
 	{1, arcs_34_2},
-	{2, arcs_34_3},
 };
 static arc arcs_35_0[1] = {
-	{83, 1},
+	{76, 1},
 };
 static arc arcs_35_1[2] = {
-	{84, 0},
+	{77, 0},
 	{0, 1},
 };
 static state states_35[2] = {
 	{1, arcs_35_0},
 	{2, arcs_35_1},
 };
-static arc arcs_36_0[1] = {
-	{85, 1},
+static arc arcs_36_0[10] = {
+	{78, 1},
+	{79, 1},
+	{80, 1},
+	{81, 1},
+	{82, 1},
+	{83, 1},
+	{84, 1},
+	{63, 1},
+	{74, 2},
+	{85, 3},
 };
-static arc arcs_36_1[2] = {
-	{86, 0},
+static arc arcs_36_1[1] = {
 	{0, 1},
 };
-static state states_36[2] = {
-	{1, arcs_36_0},
-	{2, arcs_36_1},
+static arc arcs_36_2[1] = {
+	{63, 1},
+};
+static arc arcs_36_3[2] = {
+	{74, 1},
+	{0, 3},
+};
+static state states_36[4] = {
+	{10, arcs_36_0},
+	{1, arcs_36_1},
+	{1, arcs_36_2},
+	{2, arcs_36_3},
 };
 static arc arcs_37_0[1] = {
-	{87, 1},
+	{86, 1},
 };
 static arc arcs_37_1[2] = {
-	{88, 0},
+	{87, 0},
 	{0, 1},
 };
 static state states_37[2] = {
@@ -720,308 +734,291 @@
 	{2, arcs_37_1},
 };
 static arc arcs_38_0[1] = {
-	{89, 1},
+	{88, 1},
 };
-static arc arcs_38_1[3] = {
-	{90, 0},
-	{91, 0},
+static arc arcs_38_1[2] = {
+	{89, 0},
 	{0, 1},
 };
 static state states_38[2] = {
 	{1, arcs_38_0},
-	{3, arcs_38_1},
+	{2, arcs_38_1},
 };
 static arc arcs_39_0[1] = {
-	{92, 1},
+	{90, 1},
 };
-static arc arcs_39_1[3] = {
-	{93, 0},
-	{94, 0},
+static arc arcs_39_1[2] = {
+	{91, 0},
 	{0, 1},
 };
 static state states_39[2] = {
 	{1, arcs_39_0},
-	{3, arcs_39_1},
+	{2, arcs_39_1},
 };
 static arc arcs_40_0[1] = {
-	{95, 1},
+	{92, 1},
 };
-static arc arcs_40_1[4] = {
-	{22, 0},
-	{96, 0},
-	{97, 0},
+static arc arcs_40_1[3] = {
+	{93, 0},
+	{94, 0},
 	{0, 1},
 };
 static state states_40[2] = {
 	{1, arcs_40_0},
-	{4, arcs_40_1},
+	{3, arcs_40_1},
 };
-static arc arcs_41_0[4] = {
-	{93, 1},
-	{94, 1},
+static arc arcs_41_0[1] = {
+	{95, 1},
+};
+static arc arcs_41_1[3] = {
+	{96, 0},
+	{97, 0},
+	{0, 1},
+};
+static state states_41[2] = {
+	{1, arcs_41_0},
+	{3, arcs_41_1},
+};
+static arc arcs_42_0[1] = {
 	{98, 1},
-	{99, 2},
 };
-static arc arcs_41_1[1] = {
-	{95, 3},
+static arc arcs_42_1[4] = {
+	{22, 0},
+	{99, 0},
+	{100, 0},
+	{0, 1},
 };
-static arc arcs_41_2[2] = {
-	{100, 2},
+static state states_42[2] = {
+	{1, arcs_42_0},
+	{4, arcs_42_1},
+};
+static arc arcs_43_0[4] = {
+	{96, 1},
+	{97, 1},
+	{101, 1},
+	{102, 2},
+};
+static arc arcs_43_1[1] = {
+	{98, 3},
+};
+static arc arcs_43_2[2] = {
+	{103, 2},
 	{0, 2},
 };
-static arc arcs_41_3[1] = {
+static arc arcs_43_3[1] = {
 	{0, 3},
 };
-static state states_41[4] = {
-	{4, arcs_41_0},
-	{1, arcs_41_1},
-	{2, arcs_41_2},
-	{1, arcs_41_3},
+static state states_43[4] = {
+	{4, arcs_43_0},
+	{1, arcs_43_1},
+	{2, arcs_43_2},
+	{1, arcs_43_3},
 };
-static arc arcs_42_0[7] = {
+static arc arcs_44_0[7] = {
 	{17, 1},
-	{101, 2},
-	{103, 3},
-	{106, 4},
+	{104, 2},
+	{106, 3},
+	{109, 4},
 	{13, 5},
-	{107, 5},
-	{108, 5},
+	{110, 5},
+	{111, 5},
 };
-static arc arcs_42_1[2] = {
+static arc arcs_44_1[2] = {
 	{9, 6},
 	{19, 5},
 };
-static arc arcs_42_2[2] = {
+static arc arcs_44_2[2] = {
 	{9, 7},
-	{102, 5},
-};
-static arc arcs_42_3[2] = {
-	{104, 8},
 	{105, 5},
 };
-static arc arcs_42_4[1] = {
+static arc arcs_44_3[2] = {
+	{107, 8},
+	{108, 5},
+};
+static arc arcs_44_4[1] = {
 	{9, 9},
 };
-static arc arcs_42_5[1] = {
+static arc arcs_44_5[1] = {
 	{0, 5},
 };
-static arc arcs_42_6[1] = {
+static arc arcs_44_6[1] = {
 	{19, 5},
 };
-static arc arcs_42_7[1] = {
-	{102, 5},
-};
-static arc arcs_42_8[1] = {
+static arc arcs_44_7[1] = {
 	{105, 5},
 };
-static arc arcs_42_9[1] = {
-	{106, 5},
+static arc arcs_44_8[1] = {
+	{108, 5},
 };
-static state states_42[10] = {
-	{7, arcs_42_0},
-	{2, arcs_42_1},
-	{2, arcs_42_2},
-	{2, arcs_42_3},
-	{1, arcs_42_4},
-	{1, arcs_42_5},
-	{1, arcs_42_6},
-	{1, arcs_42_7},
-	{1, arcs_42_8},
-	{1, arcs_42_9},
+static arc arcs_44_9[1] = {
+	{109, 5},
 };
-static arc arcs_43_0[3] = {
+static state states_44[10] = {
+	{7, arcs_44_0},
+	{2, arcs_44_1},
+	{2, arcs_44_2},
+	{2, arcs_44_3},
+	{1, arcs_44_4},
+	{1, arcs_44_5},
+	{1, arcs_44_6},
+	{1, arcs_44_7},
+	{1, arcs_44_8},
+	{1, arcs_44_9},
+};
+static arc arcs_45_0[3] = {
 	{17, 1},
-	{101, 2},
-	{110, 3},
+	{104, 2},
+	{113, 3},
 };
-static arc arcs_43_1[2] = {
+static arc arcs_45_1[2] = {
 	{9, 4},
 	{19, 5},
 };
-static arc arcs_43_2[1] = {
-	{109, 6},
+static arc arcs_45_2[1] = {
+	{112, 6},
 };
-static arc arcs_43_3[1] = {
+static arc arcs_45_3[1] = {
 	{13, 5},
 };
-static arc arcs_43_4[1] = {
+static arc arcs_45_4[1] = {
 	{19, 5},
 };
-static arc arcs_43_5[1] = {
+static arc arcs_45_5[1] = {
 	{0, 5},
 };
-static arc arcs_43_6[1] = {
-	{102, 5},
+static arc arcs_45_6[1] = {
+	{105, 5},
 };
-static state states_43[7] = {
-	{3, arcs_43_0},
-	{2, arcs_43_1},
-	{1, arcs_43_2},
-	{1, arcs_43_3},
-	{1, arcs_43_4},
-	{1, arcs_43_5},
-	{1, arcs_43_6},
-};
-static arc arcs_44_0[2] = {
-	{36, 1},
-	{15, 2},
-};
-static arc arcs_44_1[2] = {
-	{15, 2},
-	{0, 1},
-};
-static arc arcs_44_2[2] = {
-	{36, 3},
-	{0, 2},
-};
-static arc arcs_44_3[1] = {
-	{0, 3},
-};
-static state states_44[4] = {
-	{2, arcs_44_0},
-	{2, arcs_44_1},
-	{2, arcs_44_2},
-	{1, arcs_44_3},
-};
-static arc arcs_45_0[1] = {
-	{73, 1},
-};
-static arc arcs_45_1[2] = {
-	{21, 2},
-	{0, 1},
-};
-static arc arcs_45_2[2] = {
-	{73, 1},
-	{0, 2},
-};
-static state states_45[3] = {
-	{1, arcs_45_0},
+static state states_45[7] = {
+	{3, arcs_45_0},
 	{2, arcs_45_1},
-	{2, arcs_45_2},
+	{1, arcs_45_2},
+	{1, arcs_45_3},
+	{1, arcs_45_4},
+	{1, arcs_45_5},
+	{1, arcs_45_6},
 };
-static arc arcs_46_0[1] = {
-	{36, 1},
+static arc arcs_46_0[2] = {
+	{37, 1},
+	{15, 2},
 };
 static arc arcs_46_1[2] = {
-	{21, 2},
+	{15, 2},
 	{0, 1},
 };
 static arc arcs_46_2[2] = {
-	{36, 1},
+	{37, 3},
 	{0, 2},
 };
-static state states_46[3] = {
-	{1, arcs_46_0},
+static arc arcs_46_3[1] = {
+	{0, 3},
+};
+static state states_46[4] = {
+	{2, arcs_46_0},
 	{2, arcs_46_1},
 	{2, arcs_46_2},
+	{1, arcs_46_3},
 };
 static arc arcs_47_0[1] = {
-	{36, 1},
+	{76, 1},
 };
-static arc arcs_47_1[1] = {
+static arc arcs_47_1[2] = {
+	{21, 2},
+	{0, 1},
+};
+static arc arcs_47_2[2] = {
+	{76, 1},
+	{0, 2},
+};
+static state states_47[3] = {
+	{1, arcs_47_0},
+	{2, arcs_47_1},
+	{2, arcs_47_2},
+};
+static arc arcs_48_0[1] = {
+	{37, 1},
+};
+static arc arcs_48_1[2] = {
+	{21, 2},
+	{0, 1},
+};
+static arc arcs_48_2[2] = {
+	{37, 1},
+	{0, 2},
+};
+static state states_48[3] = {
+	{1, arcs_48_0},
+	{2, arcs_48_1},
+	{2, arcs_48_2},
+};
+static arc arcs_49_0[1] = {
+	{37, 1},
+};
+static arc arcs_49_1[1] = {
 	{15, 2},
 };
-static arc arcs_47_2[1] = {
-	{36, 3},
+static arc arcs_49_2[1] = {
+	{37, 3},
 };
-static arc arcs_47_3[2] = {
+static arc arcs_49_3[2] = {
 	{21, 4},
 	{0, 3},
 };
-static arc arcs_47_4[2] = {
-	{36, 1},
+static arc arcs_49_4[2] = {
+	{37, 1},
 	{0, 4},
 };
-static state states_47[5] = {
-	{1, arcs_47_0},
-	{1, arcs_47_1},
-	{1, arcs_47_2},
-	{2, arcs_47_3},
-	{2, arcs_47_4},
+static state states_49[5] = {
+	{1, arcs_49_0},
+	{1, arcs_49_1},
+	{1, arcs_49_2},
+	{2, arcs_49_3},
+	{2, arcs_49_4},
 };
-static arc arcs_48_0[1] = {
-	{111, 1},
+static arc arcs_50_0[1] = {
+	{114, 1},
 };
-static arc arcs_48_1[1] = {
+static arc arcs_50_1[1] = {
 	{13, 2},
 };
-static arc arcs_48_2[2] = {
+static arc arcs_50_2[2] = {
 	{17, 3},
 	{15, 4},
 };
-static arc arcs_48_3[2] = {
+static arc arcs_50_3[1] = {
 	{9, 5},
-	{19, 6},
 };
-static arc arcs_48_4[1] = {
-	{16, 7},
+static arc arcs_50_4[1] = {
+	{16, 6},
 };
-static arc arcs_48_5[1] = {
-	{19, 8},
+static arc arcs_50_5[1] = {
+	{19, 7},
 };
-static arc arcs_48_6[2] = {
-	{34, 9},
+static arc arcs_50_6[1] = {
+	{0, 6},
+};
+static arc arcs_50_7[1] = {
 	{15, 4},
 };
-static arc arcs_48_7[1] = {
-	{0, 7},
-};
-static arc arcs_48_8[1] = {
-	{15, 4},
-};
-static arc arcs_48_9[1] = {
-	{112, 8},
-};
-static state states_48[10] = {
-	{1, arcs_48_0},
-	{1, arcs_48_1},
-	{2, arcs_48_2},
-	{2, arcs_48_3},
-	{1, arcs_48_4},
-	{1, arcs_48_5},
-	{2, arcs_48_6},
-	{1, arcs_48_7},
-	{1, arcs_48_8},
-	{1, arcs_48_9},
-};
-static arc arcs_49_0[1] = {
-	{99, 1},
-};
-static arc arcs_49_1[1] = {
-	{113, 2},
-};
-static arc arcs_49_2[2] = {
-	{21, 0},
-	{0, 2},
-};
-static state states_49[3] = {
-	{1, arcs_49_0},
-	{1, arcs_49_1},
-	{2, arcs_49_2},
-};
-static arc arcs_50_0[1] = {
-	{17, 1},
-};
-static arc arcs_50_1[1] = {
-	{19, 2},
-};
-static arc arcs_50_2[1] = {
-	{0, 2},
-};
-static state states_50[3] = {
+static state states_50[8] = {
 	{1, arcs_50_0},
 	{1, arcs_50_1},
-	{1, arcs_50_2},
+	{2, arcs_50_2},
+	{1, arcs_50_3},
+	{1, arcs_50_4},
+	{1, arcs_50_5},
+	{1, arcs_50_6},
+	{1, arcs_50_7},
 };
 static dfa dfas[51] = {
 	{256, "single_input", 0, 3, states_0,
-	 "\004\060\002\000\150\370\203\054\000\000\000\140\244\234\000"},
+	 "\004\060\002\000\320\360\017\144\001\000\000\000\043\345\004"},
 	{257, "file_input", 0, 2, states_1,
-	 "\204\060\002\000\150\370\203\054\000\000\000\140\244\234\000"},
+	 "\204\060\002\000\320\360\017\144\001\000\000\000\043\345\004"},
 	{258, "expr_input", 0, 3, states_2,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
 	{259, "eval_input", 0, 3, states_3,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
 	{260, "funcdef", 0, 6, states_4,
 	 "\000\020\000\000\000\000\000\000\000\000\000\000\000\000\000"},
 	{261, "parameters", 0, 4, states_5,
@@ -1033,108 +1030,108 @@
 	{264, "fplist", 0, 3, states_8,
 	 "\000\040\002\000\000\000\000\000\000\000\000\000\000\000\000"},
 	{265, "stmt", 0, 2, states_9,
-	 "\000\060\002\000\150\370\203\054\000\000\000\140\244\234\000"},
+	 "\000\060\002\000\320\360\017\144\001\000\000\000\043\345\004"},
 	{266, "simple_stmt", 0, 4, states_10,
-	 "\000\040\002\000\150\370\003\000\000\000\000\140\244\034\000"},
+	 "\000\040\002\000\320\360\017\000\000\000\000\000\043\345\000"},
 	{267, "small_stmt", 0, 2, states_11,
-	 "\000\040\002\000\150\370\003\000\000\000\000\140\244\034\000"},
+	 "\000\040\002\000\320\360\017\000\000\000\000\000\043\345\000"},
 	{268, "expr_stmt", 0, 2, states_12,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
 	{269, "print_stmt", 0, 3, states_13,
-	 "\000\000\000\000\010\000\000\000\000\000\000\000\000\000\000"},
+	 "\000\000\000\000\020\000\000\000\000\000\000\000\000\000\000"},
 	{270, "del_stmt", 0, 3, states_14,
-	 "\000\000\000\000\040\000\000\000\000\000\000\000\000\000\000"},
-	{271, "pass_stmt", 0, 2, states_15,
 	 "\000\000\000\000\100\000\000\000\000\000\000\000\000\000\000"},
+	{271, "pass_stmt", 0, 2, states_15,
+	 "\000\000\000\000\200\000\000\000\000\000\000\000\000\000\000"},
 	{272, "flow_stmt", 0, 2, states_16,
-	 "\000\000\000\000\000\170\000\000\000\000\000\000\000\000\000"},
+	 "\000\000\000\000\000\360\000\000\000\000\000\000\000\000\000"},
 	{273, "break_stmt", 0, 2, states_17,
-	 "\000\000\000\000\000\010\000\000\000\000\000\000\000\000\000"},
-	{274, "continue_stmt", 0, 2, states_18,
 	 "\000\000\000\000\000\020\000\000\000\000\000\000\000\000\000"},
-	{275, "return_stmt", 0, 3, states_19,
+	{274, "continue_stmt", 0, 2, states_18,
 	 "\000\000\000\000\000\040\000\000\000\000\000\000\000\000\000"},
-	{276, "raise_stmt", 0, 5, states_20,
+	{275, "return_stmt", 0, 3, states_19,
 	 "\000\000\000\000\000\100\000\000\000\000\000\000\000\000\000"},
+	{276, "raise_stmt", 0, 5, states_20,
+	 "\000\000\000\000\000\200\000\000\000\000\000\000\000\000\000"},
 	{277, "import_stmt", 0, 9, states_21,
-	 "\000\000\000\000\000\200\001\000\000\000\000\000\000\000\000"},
+	 "\000\000\000\000\000\000\003\000\000\000\000\000\000\000\000"},
 	{278, "global_stmt", 0, 3, states_22,
-	 "\000\000\000\000\000\000\002\000\000\000\000\000\000\000\000"},
-	{279, "compound_stmt", 0, 2, states_23,
-	 "\000\020\000\000\000\000\200\054\000\000\000\000\000\200\000"},
-	{280, "if_stmt", 0, 8, states_24,
-	 "\000\000\000\000\000\000\200\000\000\000\000\000\000\000\000"},
-	{281, "while_stmt", 0, 8, states_25,
+	 "\000\000\000\000\000\000\004\000\000\000\000\000\000\000\000"},
+	{279, "access_stmt", 0, 5, states_23,
+	 "\000\000\000\000\000\000\010\000\000\000\000\000\000\000\000"},
+	{280, "accesstype", 0, 2, states_24,
+	 "\000\040\000\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{281, "compound_stmt", 0, 2, states_25,
+	 "\000\020\000\000\000\000\000\144\001\000\000\000\000\000\004"},
+	{282, "if_stmt", 0, 8, states_26,
 	 "\000\000\000\000\000\000\000\004\000\000\000\000\000\000\000"},
-	{282, "for_stmt", 0, 10, states_26,
-	 "\000\000\000\000\000\000\000\010\000\000\000\000\000\000\000"},
-	{283, "try_stmt", 0, 10, states_27,
+	{283, "while_stmt", 0, 8, states_27,
 	 "\000\000\000\000\000\000\000\040\000\000\000\000\000\000\000"},
-	{284, "except_clause", 0, 5, states_28,
+	{284, "for_stmt", 0, 10, states_28,
+	 "\000\000\000\000\000\000\000\100\000\000\000\000\000\000\000"},
+	{285, "try_stmt", 0, 10, states_29,
 	 "\000\000\000\000\000\000\000\000\001\000\000\000\000\000\000"},
-	{285, "suite", 0, 5, states_29,
-	 "\004\040\002\000\150\370\003\000\000\000\000\140\244\034\000"},
-	{286, "test", 0, 2, states_30,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
-	{287, "and_test", 0, 2, states_31,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
-	{288, "not_test", 0, 3, states_32,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
-	{289, "comparison", 0, 2, states_33,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{290, "comp_op", 0, 4, states_34,
-	 "\000\000\000\000\000\000\000\020\200\370\007\000\000\000\000"},
-	{291, "expr", 0, 2, states_35,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{292, "xor_expr", 0, 2, states_36,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{293, "and_expr", 0, 2, states_37,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{294, "shift_expr", 0, 2, states_38,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{295, "arith_expr", 0, 2, states_39,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{296, "term", 0, 2, states_40,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{297, "factor", 0, 4, states_41,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{298, "atom", 0, 10, states_42,
-	 "\000\040\002\000\000\000\000\000\000\000\000\000\240\034\000"},
-	{299, "trailer", 0, 7, states_43,
-	 "\000\000\002\000\000\000\000\000\000\000\000\000\040\100\000"},
-	{300, "subscript", 0, 4, states_44,
-	 "\000\240\002\000\000\000\000\000\200\000\000\140\244\034\000"},
-	{301, "exprlist", 0, 3, states_45,
-	 "\000\040\002\000\000\000\000\000\000\000\000\140\244\034\000"},
-	{302, "testlist", 0, 3, states_46,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
-	{303, "dictmaker", 0, 5, states_47,
-	 "\000\040\002\000\000\000\000\000\200\000\000\140\244\034\000"},
-	{304, "classdef", 0, 10, states_48,
-	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\200\000"},
-	{305, "baselist", 0, 3, states_49,
-	 "\000\040\002\000\000\000\000\000\000\000\000\000\240\034\000"},
-	{306, "arguments", 0, 3, states_50,
-	 "\000\000\002\000\000\000\000\000\000\000\000\000\000\000\000"},
+	{286, "except_clause", 0, 5, states_30,
+	 "\000\000\000\000\000\000\000\000\010\000\000\000\000\000\000"},
+	{287, "suite", 0, 5, states_31,
+	 "\004\040\002\000\320\360\017\000\000\000\000\000\043\345\000"},
+	{288, "test", 0, 2, states_32,
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+	{289, "and_test", 0, 2, states_33,
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+	{290, "not_test", 0, 3, states_34,
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+	{291, "comparison", 0, 2, states_35,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{292, "comp_op", 0, 4, states_36,
+	 "\000\000\000\000\000\000\000\200\000\304\077\000\000\000\000"},
+	{293, "expr", 0, 2, states_37,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{294, "xor_expr", 0, 2, states_38,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{295, "and_expr", 0, 2, states_39,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{296, "shift_expr", 0, 2, states_40,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{297, "arith_expr", 0, 2, states_41,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{298, "term", 0, 2, states_42,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{299, "factor", 0, 4, states_43,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{300, "atom", 0, 10, states_44,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\000\345\000"},
+	{301, "trailer", 0, 7, states_45,
+	 "\000\000\002\000\000\000\000\000\000\000\000\000\000\001\002"},
+	{302, "subscript", 0, 4, states_46,
+	 "\000\240\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+	{303, "exprlist", 0, 3, states_47,
+	 "\000\040\002\000\000\000\000\000\000\000\000\000\043\345\000"},
+	{304, "testlist", 0, 3, states_48,
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+	{305, "dictmaker", 0, 5, states_49,
+	 "\000\040\002\000\000\000\000\000\000\004\000\000\043\345\000"},
+	{306, "classdef", 0, 8, states_50,
+	 "\000\000\000\000\000\000\000\000\000\000\000\000\000\000\004"},
 };
-static label labels[114] = {
+static label labels[115] = {
 	{0, "EMPTY"},
 	{256, 0},
 	{4, 0},
 	{266, 0},
-	{279, 0},
+	{281, 0},
 	{257, 0},
 	{265, 0},
 	{0, 0},
 	{258, 0},
-	{302, 0},
+	{304, 0},
 	{259, 0},
 	{260, 0},
 	{1, "def"},
 	{1, 0},
 	{261, 0},
 	{11, 0},
-	{285, 0},
+	{287, 0},
 	{7, 0},
 	{262, 0},
 	{8, 0},
@@ -1151,10 +1148,11 @@
 	{272, 0},
 	{277, 0},
 	{278, 0},
-	{301, 0},
+	{279, 0},
+	{303, 0},
 	{22, 0},
 	{1, "print"},
-	{286, 0},
+	{288, 0},
 	{1, "del"},
 	{1, "pass"},
 	{273, 0},
@@ -1168,11 +1166,13 @@
 	{1, "import"},
 	{1, "from"},
 	{1, "global"},
+	{1, "access"},
 	{280, 0},
-	{281, 0},
 	{282, 0},
 	{283, 0},
-	{304, 0},
+	{284, 0},
+	{285, 0},
+	{306, 0},
 	{1, "if"},
 	{1, "elif"},
 	{1, "else"},
@@ -1180,19 +1180,19 @@
 	{1, "for"},
 	{1, "in"},
 	{1, "try"},
-	{284, 0},
+	{286, 0},
 	{1, "finally"},
 	{1, "except"},
 	{5, 0},
 	{6, 0},
-	{287, 0},
+	{289, 0},
 	{1, "or"},
-	{288, 0},
+	{290, 0},
 	{1, "and"},
 	{1, "not"},
-	{289, 0},
 	{291, 0},
-	{290, 0},
+	{293, 0},
+	{292, 0},
 	{20, 0},
 	{21, 0},
 	{28, 0},
@@ -1201,41 +1201,39 @@
 	{29, 0},
 	{29, 0},
 	{1, "is"},
-	{292, 0},
-	{18, 0},
-	{293, 0},
-	{33, 0},
 	{294, 0},
-	{19, 0},
+	{18, 0},
 	{295, 0},
+	{33, 0},
+	{296, 0},
+	{19, 0},
+	{297, 0},
 	{34, 0},
 	{35, 0},
-	{296, 0},
+	{298, 0},
 	{14, 0},
 	{15, 0},
-	{297, 0},
+	{299, 0},
 	{17, 0},
 	{24, 0},
 	{32, 0},
-	{298, 0},
-	{299, 0},
+	{300, 0},
+	{301, 0},
 	{9, 0},
 	{10, 0},
 	{26, 0},
-	{303, 0},
+	{305, 0},
 	{27, 0},
 	{25, 0},
 	{2, 0},
 	{3, 0},
-	{300, 0},
+	{302, 0},
 	{23, 0},
 	{1, "class"},
-	{305, 0},
-	{306, 0},
 };
 grammar gram = {
 	51,
 	dfas,
-	{114, labels},
+	{115, labels},
 	256
 };
diff --git a/Python/import.c b/Python/import.c
index 4310afa..ec21b4c 100644
--- a/Python/import.c
+++ b/Python/import.c
@@ -54,7 +54,7 @@
 
 /* Magic word to reject .pyc files generated by other Python versions */
 
-#define MAGIC 0x99BE3AL
+#define MAGIC 0x999901L /* Increment by one for each incompatible change */
 
 static object *modules;
 
@@ -353,46 +353,27 @@
 	return get_module(m, getmodulename(m), (object **)NULL);
 }
 
-static void
-cleardict(d)
-	object *d;
-{
-	int i;
-	for (i = getdictsize(d); --i >= 0; ) {
-		char *k;
-		k = getdictkey(d, i);
-		if (k != NULL)
-			(void) dictremove(d, k);
-	}
-}
-
 void
 doneimport()
 {
 	if (modules != NULL) {
-		int i;
+		int pos;
+		object *modname, *module;
 		/* Explicitly erase all modules; this is the safest way
 		   to get rid of at least *some* circular dependencies */
-		for (i = getdictsize(modules); --i >= 0; ) {
-			object *k;
-			k = getdict2key(modules, i);
-			if (k != NULL) {
-				object *m;
-				m = dict2lookup(modules, k);
-				if (m == NULL)
-					err_clear();
-				else if (is_moduleobject(m)) {
-					object *d;
-					d = getmoduledict(m);
-					if (d != NULL && is_dictobject(d)) {
-						cleardict(d);
-					}
-				}
+		pos = 0;
+		while (mappinggetnext(modules, &pos, &modname, &module)) {
+			if (is_moduleobject(module)) {
+				object *dict;
+				dict = getmoduledict(module);
+				if (dict != NULL && is_dictobject(dict))
+					mappingclear(dict);
 			}
 		}
-		cleardict(modules);
+		mappingclear(modules);
 	}
 	DECREF(modules);
+	modules = NULL;
 }
 
 
diff --git a/Python/marshal.c b/Python/marshal.c
index 3853ff9..93503d1 100644
--- a/Python/marshal.c
+++ b/Python/marshal.c
@@ -174,17 +174,14 @@
 		}
 	}
 	else if (is_dictobject(v)) {
+		int pos;
+		object *key, *value;
 		w_byte(TYPE_DICT, p);
 		/* This one is NULL object terminated! */
-		n = getdictsize(v);
-		for (i = 0; i < n; i++) {
-			object *key, *val;
-			key = getdict2key(v, (int)i);
-			if (key != NULL) {
-				val = dict2lookup(v, key); /* Can't be NULL */
-				w_object(key, p);
-				w_object(val, p);
-			}
+		pos = 0;
+		while (mappinggetnext(v, &pos, &key, &value)) {
+			w_object(key, p);
+			w_object(value, p);
 		}
 		w_object((object *)NULL, p);
 	}
