From cb13a9f436d6a8acb10df15c49e149e1cfb1b52f Mon Sep 17 00:00:00 2001
From: Kirill Smelkov <kirr@nexedi.com>
Date: Mon, 6 Mar 2017 13:23:26 +0300
Subject: [PATCH] .

---
 t/neo/storage/fs1/py/gen-testdata         |  29 +-
 t/neo/storage/fs1/testdata/1.fs           | Bin 9971 -> 11053 bytes
 t/neo/storage/fs1/testdata/1.fs.index     | Bin 83 -> 99 bytes
 t/neo/storage/fs1/testdata_expect_test.go | 658 +++++++++++++---------
 4 files changed, 422 insertions(+), 265 deletions(-)

diff --git a/t/neo/storage/fs1/py/gen-testdata b/t/neo/storage/fs1/py/gen-testdata
index 421396d9..2e44bb2a 100755
--- a/t/neo/storage/fs1/py/gen-testdata
+++ b/t/neo/storage/fs1/py/gen-testdata
@@ -97,14 +97,19 @@ def main():
                    {"x-generator": "zodb/py2 (undo %s)" % ul["id"]})
 
         # delete an object
-        #obj = random.choice(root.values())
-        #txn = precommit(u"root%i\nYour\nRoyal\nMagesty " % i,
-        #                u"delete %i\nalpha beta gamma\n\nqqq ..." % i,
-        #                {"x-generator": "zodb/py2 (delete %s)" % hex64(obj._p_oid)})
-        #stor.tpc_begin(txn)
-        #stor.deleteObject(obj._p_oid, obj._p_serial, txn)
-        #stor.tpc_vote(txn)
-        #stor.tpc_finish(txn)
+        name = random.choice(root.keys())
+        obj = root[name]
+        root[name] = Object("%s%i*" % (name, i))
+        # NOTE user/ext are kept empty on purpose - to also test this case
+        commit(u"", u"predelete %s" % unpack64(obj._p_oid), {})
+
+        txn = precommit(u"root%i\nYour\nRoyal\nMagesty " % i,
+                        u"delete %i\nalpha beta gamma\n\nqqq ..." % i,
+                        {"x-generator": "zodb/py2 (delete %s)" % unpack64(obj._p_oid)})
+        stor.tpc_begin(txn)
+        stor.deleteObject(obj._p_oid, obj._p_serial, txn)
+        stor.tpc_vote(txn)
+        stor.tpc_finish(txn)
 
         # close db & rest not to get conflict errors after we touched stor
         # directly a bit. everything will be reopened on next iteration.
@@ -188,8 +193,12 @@ def main():
                 plen = dh.plen
                 if plen == 0:
                     rawdata = p64(dh.back) # back-pointer or 0 (= delete)
-                    data = "[]byte(%s)" % escapeqq(drec.data)
-                    datatid = hex64(drec.data_txn)  # XXX vs .data = None ?
+                    if drec.data is None:
+                        data = "/* deleted */ nil"
+                        datatid = "/* deleted */ 0"
+                    else:
+                        data = "[]byte(%s)" % escapeqq(drec.data)
+                        datatid = hex64(drec.data_txn)
                 else:
                     rawdata = drec.data
                     data = "/* same as ^^^ */ nil"
diff --git a/t/neo/storage/fs1/testdata/1.fs b/t/neo/storage/fs1/testdata/1.fs
index c73acc657815f1579d7e7bf9c0aa2903151516a0..e428e84a346250ad65b42d6b78547fd7f7c0db39 100644
GIT binary patch
delta 2221
zcmai#ZD?C%6vuCxtj%)QHCgUWa+@@{d2MgAU31fAx=I;!XdPSJDz<b?H*VLoZgi&U
zBAWTK7bz$fy7s`d;zU6hxMfa;2;#8SiQp!F@IytkT6|%%A2#uAf`ZRmlA9D}KlI$3
z`~RJDo+tl2&u{5s|AiMtXTQvG9M5rM<C&q%XeOVLlW<v7AaA=5I$X`L&mzDz+W>s-
z3YmPMHHx}<f1*8Cry>mfnfmJ{uAD2L>6Ykct|)U77vhxhY&M^;?an?vZhJ6W&_``)
zeI#=@UyxasgiRkEdsLSPGkIMe(GMNcZMIx4C#$Lozt%ekoJX=lgLjM-l5$&VF6A(5
z%GFgjb#&3@uCLh;D?<?z3qQVd6--tqyo46`1#cH{f@;NkXmn43ZVif>nkX-ko5Jij
zrxG((0TONnZo2IP`p8x+JWEMW43V-sqp4aAy3})in6&*A!Qabv0VgQ5F2~?Y1Rl}U
zWDWe&-|H_Dc&}%(fIm<`TE*f+7=$Yxr}>w+&cc$Xi!2O1)AyWvfeDxK!d#lVv8KU|
zhm{?q!K6f|!wJT`N@Meh(sZdB`1i&$vjh$|EAVurNj!%$lv;Z?jb4e+gPOXjhQ9S-
z^k+i9kLacbyMPlEa<H+z7YID8sdv`E|Bk)cLEv65{W5Wa&C8;%2d~+$sdrVg#kx@F
z7?ql);al%Um=l`<hOGD+ed}AK5&i#a#?rY)Z|k$Nj1?Sa3DPd!)Bw9(dC7`QVyIB!
ze2Zj$T~jxgXE04;ZT*+8UxjJj2}gZ#wD=~GWGLsoMWg=-m~WIVX!RQW8B)O8qQGJc
zFE!u-{6v6R&^1Zr0SA%q$MTb51>Qw+QrW)gG&7uko=MMEDz`@z*y+c<MneeKyv$;r
z$EZ}k7fFL=T=X(hUPsC~k*5omW?!Kq&fmt=-{Hb=Ghl(eQ7^pAuYu!%I5H)w?ceTU
z&hkxBb+CZdo*`7+V67RvywE?VX373|<v9A)ARK2X*8CZbAty|)!=}~@)*^K4c>&&#
zw;)g21@z2Z<<%KiByEu;HG{1PxPBjWkhVL6@ycG~EJXu*Xbks|5_qo-?jj{LhvOJ2
zaUGQ)lj98Q{0PIB@Z@epSA4+{I`z>M^~H0cI2j)&82lHFk*CNW&qXYP;g}+HXMU|j
zdbfnxrsE97f*;cu6-%3*G#pg~-x8f1Cir^@$9snptm!9=e!JY<a8?m|>w@hfp?f22
z;W)$aIE}Gwc;PS~ahmUc{slP63$TpT#HJ`gMO@$yrv3ppbE6+X(r|8(X6eob$VCg=
z`*sa%9Zz>vE{A&T9`u%3Ee5ny>ocr&IYih<+y|KGU7mnc?8wo+1KSStb{p!M*jwhk
z)(x~kTX(q-dngUfUBX2FX)|-3>7a}hyz!1rmDp-!ON?`nH%fg;@IMDnt7$bHckKwT
zt}axf4RzS%ozV=J_d!hUdEf-|cGcyr-RAPvZhv|2T6uY=D&Nnl>ZUR~3fiA64ZR{3
F{{wT<_HF<G

delta 1594
zcmZXUOK1~O6o#j1ZHu9HS|^Wb9-T?jCIb?kq^3RyQWaa&f{KWUE~+((P&Bx6A??DI
zg4Baz#Tplaply92Dpjfr1+lF{7lq<R@r4@~x=?)HbIwgV#Mzw8Kj%B=+<X6<(H&pA
zZ=Up23_`)zR@Gx2O~NIQ1zW8R6*bUMsl$zsyTS#JtT?<4bpv=KaH!Vj>#>u|@~)&p
zPsO0?#EX&9s~tL+0S~P6$Kj=0)llFB&svT?5A@WUUOQ=*SmiXbw|7qDh@BJcaGk25
zz>IcWvLk{ueEaQWstmrjFnfpKyxy+i3j>XLj{bEB!fSnT)%f^Bg)(cK;!sdk4F#EX
zQpP!IbHGlvm9=@?w`w!N1p(vwP+-Wnhohdy^?B^%@-p^m_&ykcEcFz>hh%z$V^eLh
zXQqsM{wni<dQJu6uqU8uC@{2WwS)^W5Qu8+W#sh0-87NC!8p{{s2U1PG|X}gWT<V<
zPOd0}XVU3@f`1Aamx=;I`U441;Zns>t}J6`-`$#o0n-a-!-*LBiSv~jJZJpK@7`w|
zgT3&i&hQIA+4F`{&S3KEbIWw9w6r-vOF%((m!=5*fj8lp=CBiyZ#u_vL_Qbfu*<Ex
zupX+6H)J`6&cm%}Omi5D@b^EK+#!6Q!HrRnL>I?!iW;Zq7f<BpYu6Pbe+v?Qi~>Kt
zZ<3r83#L2ZFc`sKc3aSIuK91%gf4v+9OD|zxzeUNoJK{y)m<H;3G7IMjt&K;f*y{B
zLUga#a);lD{yx$2f#?^4#tVW1Q%zeWeE|j=O`m`rmLvH0kt=C}_eT?CRum-sk)zp0
zt@jGr;W?y7U6DvX(SHS9JTp=m4ZW2mrs>Qawj;cH=JF(LZS}%XECHumRSg9ujCUL(
z2XXRB@dpA6nk`7RSYpb0&#3!Ev$T~dZ54Ilm{nrT6cj}2q)44GRZYzdO9vSnxn}et
zWs1E_!Aiq|T&paqeF{j+MCIYdGV?`e4C_qXqB-@U3tUQx+~yy#SEV`o%mAE<=QnNJ
zez>!}J3D`yDsjugoBYMv{fxF8lC?^q*j;&uMC8{w=t>-0zpZaq-+>NCy=wVYTBW6l
P3$zw*Z>e5!NafK#&mMK`

diff --git a/t/neo/storage/fs1/testdata/1.fs.index b/t/neo/storage/fs1/testdata/1.fs.index
index 77c06500928d53debee0f59dda205a149cff175c..1600ce0363b170cb2fb74aef6f2555ae67641fbb 100644
GIT binary patch
literal 99
zcmea()z;GpWn%z?&;TIC$iT$F%)r9H%D~3J&cMOI36j#(0FfGJK%{smh*bRvCgVY*
Z)@Kl@!44voCxS>tO%SQ2Rifvo2LP9F2{-@%

literal 83
zcmebMtfr?C%EkZ&p$<Tbk%5VUnSq6Ym4S_c9V9Gz1VqZ!fJh|?5UKhFL@GZ6k@8|7
OQf()gy`e<UPY(cXxCxm6

diff --git a/t/neo/storage/fs1/testdata_expect_test.go b/t/neo/storage/fs1/testdata_expect_test.go
index ef72aa27..0c0f4ef0 100644
--- a/t/neo/storage/fs1/testdata_expect_test.go
+++ b/t/neo/storage/fs1/testdata_expect_test.go
@@ -3,16 +3,18 @@ package fs1
 
 import "../../zodb"
 
-const _1fs_indexTopPos = 9971
+const _1fs_indexTopPos = 11053
 var _1fs_indexEntryv = [...]indexEntry{
-	{       0,     5572},
-	{       1,     7804},
-	{       2,     8728},
-	{       3,     9716},
-	{       4,     9190},
-	{       5,     7958},
-	{       6,     9913},
-	{       7,     8112},
+	{       0,    10536},
+	{       1,    10444},
+	{       2,     5973},
+	{       3,     9721},
+	{       4,     9567},
+	{       5,    10995},
+	{       6,    10247},
+	{       7,     9105},
+	{       8,     8489},
+	{       9,    10794},
 }
 
 var _1fs_dbEntryv = [...]dbEntry{
@@ -938,40 +940,40 @@ var _1fs_dbEntryv = [...]dbEntry{
 		TxnHeader{
 			Pos:	  5500,
 			LenPrev:  196,
-			Len:	  409,
+			Len:	  350,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacce81b533,
+				Tid:	0x0285cbaca8f5c2cc,
 				Status:	' ',
-				User:		[]byte("user1.0"),
-				Description:	[]byte("step 1.0"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (a)s."),
+				User:		[]byte(""),
+				Description:	[]byte("predelete 2"),
+				Extension:	[]byte(""),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	5572,
+					Pos:	5534,
 					Oid:	0,
-					Tid:	0x0285cbacce81b533,
+					Tid:	0x0285cbaca8f5c2cc,
 					PrevRevPos:	2635,
 					TxnPos:	5500,
-					DataLen:	216,
+					DataLen:	196,
 				},
-				[]byte("cpersistent.mapping\nPersistentMapping\nq\x01.}q\x02U\x04dataq\x03}q\x04(U\x01a(U\x08\x00\x00\x00\x00\x00\x00\x00\x07q\x05c__main__\nObject\nq\x06tQU\x01c(U\x08\x00\x00\x00\x00\x00\x00\x00\x02q\x07h\x06tQU\x01b(U\x08\x00\x00\x00\x00\x00\x00\x00\x03q\x08h\x06tQU\x01e(U\x08\x00\x00\x00\x00\x00\x00\x00\x05q\th\x06tQU\x01d(U\x08\x00\x00\x00\x00\x00\x00\x00\x04q\nh\x06tQU\x01g(U\x08\x00\x00\x00\x00\x00\x00\x00\x06q\x0bh\x06tQU\x01f(U\x08\x00\x00\x00\x00\x00\x00\x00\x01q\x0ch\x06tQus."),
+				[]byte("cpersistent.mapping\nPersistentMapping\nq\x01.}q\x02U\x04dataq\x03}q\x04(U\x01c(U\x08\x00\x00\x00\x00\x00\x00\x00\x07q\x05c__main__\nObject\nq\x06tQU\x01b(U\x08\x00\x00\x00\x00\x00\x00\x00\x03q\x07h\x06tQU\x01e(U\x08\x00\x00\x00\x00\x00\x00\x00\x05q\x08h\x06tQU\x01d(U\x08\x00\x00\x00\x00\x00\x00\x00\x04q\th\x06tQU\x01g(U\x08\x00\x00\x00\x00\x00\x00\x00\x06q\nh\x06tQU\x01f(U\x08\x00\x00\x00\x00\x00\x00\x00\x01q\x0bh\x06tQus."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
 			{
 				DataHeader{
-					Pos:	5830,
+					Pos:	5772,
 					Oid:	7,
-					Tid:	0x0285cbacce81b533,
+					Tid:	0x0285cbaca8f5c2cc,
 					PrevRevPos:	0,
 					TxnPos:	5500,
-					DataLen:	29,
+					DataLen:	28,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04a1.0q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x03c0*q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -979,14 +981,44 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  5909,
-			LenPrev:  409,
+			Pos:	  5850,
+			LenPrev:  350,
+			Len:	  181,
+			TxnInfo:	zodb.TxnInfo{
+				Tid:	0x0285cbacada74119,
+				Status:	' ',
+				User:		[]byte("root0\nYour\nRoyal\nMagesty "),
+				Description:	[]byte("delete 0\nalpha beta gamma\n\nqqq ..."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x13zodb/py2 (delete 2)s."),
+			},
+		},
+
+		[]txnEntry{
+			{
+				DataHeader{
+					Pos:	5973,
+					Oid:	2,
+					Tid:	0x0285cbacada74119,
+					PrevRevPos:	4413,
+					TxnPos:	5850,
+					DataLen:	0,
+				},
+				[]byte("\x00\x00\x00\x00\x00\x00\x00\x00"),
+				/* deleted */ nil,
+				/* deleted */ 0,
+			},
+		},
+	},
+	{
+		TxnHeader{
+			Pos:	  6031,
+			LenPrev:  181,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacd3333380,
+				Tid:	0x0285cbacd7e4b1cc,
 				Status:	' ',
-				User:		[]byte("user1.1"),
-				Description:	[]byte("step 1.1"),
+				User:		[]byte("user1.0"),
+				Description:	[]byte("step 1.0"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
 			},
 		},
@@ -994,14 +1026,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	5981,
+					Pos:	6103,
 					Oid:	4,
-					Tid:	0x0285cbacd3333380,
+					Tid:	0x0285cbacd7e4b1cc,
 					PrevRevPos:	5442,
-					TxnPos:	5909,
+					TxnPos:	6031,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04d1.1q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04d1.0q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1009,14 +1041,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6060,
+			Pos:	  6182,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacd7e4b1cc,
+				Tid:	0x0285cbacdc963019,
 				Status:	' ',
-				User:		[]byte("user1.2"),
-				Description:	[]byte("step 1.2"),
+				User:		[]byte("user1.1"),
+				Description:	[]byte("step 1.1"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (e)s."),
 			},
 		},
@@ -1024,14 +1056,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	6132,
+					Pos:	6254,
 					Oid:	5,
-					Tid:	0x0285cbacd7e4b1cc,
+					Tid:	0x0285cbacdc963019,
 					PrevRevPos:	5246,
-					TxnPos:	6060,
+					TxnPos:	6182,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04e1.2q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04e1.1q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1039,14 +1071,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6211,
+			Pos:	  6333,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacdc963019,
+				Tid:	0x0285cbace147ae66,
 				Status:	' ',
-				User:		[]byte("user1.3"),
-				Description:	[]byte("step 1.3"),
+				User:		[]byte("user1.2"),
+				Description:	[]byte("step 1.2"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
 			},
 		},
@@ -1054,14 +1086,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	6283,
+					Pos:	6405,
 					Oid:	6,
-					Tid:	0x0285cbacdc963019,
+					Tid:	0x0285cbace147ae66,
 					PrevRevPos:	4721,
-					TxnPos:	6211,
+					TxnPos:	6333,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04g1.3q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04g1.2q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1069,14 +1101,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6362,
+			Pos:	  6484,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbace147ae66,
+				Tid:	0x0285cbace5f92cb3,
 				Status:	' ',
-				User:		[]byte("user1.4"),
-				Description:	[]byte("step 1.4"),
+				User:		[]byte("user1.3"),
+				Description:	[]byte("step 1.3"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
 			},
 		},
@@ -1084,14 +1116,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	6434,
+					Pos:	6556,
 					Oid:	6,
-					Tid:	0x0285cbace147ae66,
-					PrevRevPos:	6283,
-					TxnPos:	6362,
+					Tid:	0x0285cbace5f92cb3,
+					PrevRevPos:	6405,
+					TxnPos:	6484,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04g1.4q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04g1.3q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1099,14 +1131,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6513,
+			Pos:	  6635,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbace5f92cb3,
+				Tid:	0x0285cbaceaaaab00,
 				Status:	' ',
-				User:		[]byte("user1.5"),
-				Description:	[]byte("step 1.5"),
+				User:		[]byte("user1.4"),
+				Description:	[]byte("step 1.4"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
 			},
 		},
@@ -1114,14 +1146,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	6585,
+					Pos:	6707,
 					Oid:	4,
-					Tid:	0x0285cbace5f92cb3,
-					PrevRevPos:	5981,
-					TxnPos:	6513,
+					Tid:	0x0285cbaceaaaab00,
+					PrevRevPos:	6103,
+					TxnPos:	6635,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04d1.5q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04d1.4q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1129,14 +1161,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6664,
+			Pos:	  6786,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbaceaaaab00,
+				Tid:	0x0285cbacef5c294c,
 				Status:	' ',
-				User:		[]byte("user1.6"),
-				Description:	[]byte("step 1.6"),
+				User:		[]byte("user1.5"),
+				Description:	[]byte("step 1.5"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
 			},
 		},
@@ -1144,14 +1176,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	6736,
+					Pos:	6858,
 					Oid:	6,
-					Tid:	0x0285cbaceaaaab00,
-					PrevRevPos:	6434,
-					TxnPos:	6664,
+					Tid:	0x0285cbacef5c294c,
+					PrevRevPos:	6556,
+					TxnPos:	6786,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04g1.6q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04g1.5q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1159,14 +1191,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6815,
+			Pos:	  6937,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacef5c294c,
+				Tid:	0x0285cbacf40da799,
 				Status:	' ',
-				User:		[]byte("user1.7"),
-				Description:	[]byte("step 1.7"),
+				User:		[]byte("user1.6"),
+				Description:	[]byte("step 1.6"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
 			},
 		},
@@ -1174,14 +1206,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	6887,
+					Pos:	7009,
 					Oid:	3,
-					Tid:	0x0285cbacef5c294c,
+					Tid:	0x0285cbacf40da799,
 					PrevRevPos:	3643,
-					TxnPos:	6815,
+					TxnPos:	6937,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04b1.7q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04b1.6q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1189,14 +1221,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  6966,
+			Pos:	  7088,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacf40da799,
+				Tid:	0x0285cbacf8bf25e6,
 				Status:	' ',
-				User:		[]byte("user1.8"),
-				Description:	[]byte("step 1.8"),
+				User:		[]byte("user1.7"),
+				Description:	[]byte("step 1.7"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (f)s."),
 			},
 		},
@@ -1204,14 +1236,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7038,
+					Pos:	7160,
 					Oid:	1,
-					Tid:	0x0285cbacf40da799,
+					Tid:	0x0285cbacf8bf25e6,
 					PrevRevPos:	4567,
-					TxnPos:	6966,
+					TxnPos:	7088,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04f1.8q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04f1.7q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1219,14 +1251,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  7117,
+			Pos:	  7239,
 			LenPrev:  151,
 			Len:	  151,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacf8bf25e6,
+				Tid:	0x0285cbacfd70a433,
 				Status:	' ',
-				User:		[]byte("user1.9"),
-				Description:	[]byte("step 1.9"),
+				User:		[]byte("user1.8"),
+				Description:	[]byte("step 1.8"),
 				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
 			},
 		},
@@ -1234,14 +1266,14 @@ var _1fs_dbEntryv = [...]dbEntry{
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7189,
+					Pos:	7311,
 					Oid:	4,
-					Tid:	0x0285cbacf8bf25e6,
-					PrevRevPos:	6585,
-					TxnPos:	7117,
+					Tid:	0x0285cbacfd70a433,
+					PrevRevPos:	6707,
+					TxnPos:	7239,
 					DataLen:	29,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x04d1.9q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x04d1.8q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1249,29 +1281,72 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  7268,
+			Pos:	  7390,
 			LenPrev:  151,
+			Len:	  409,
+			TxnInfo:	zodb.TxnInfo{
+				Tid:	0x0285cbad02222280,
+				Status:	' ',
+				User:		[]byte("user1.9"),
+				Description:	[]byte("step 1.9"),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (a)s."),
+			},
+		},
+
+		[]txnEntry{
+			{
+				DataHeader{
+					Pos:	7462,
+					Oid:	0,
+					Tid:	0x0285cbad02222280,
+					PrevRevPos:	5534,
+					TxnPos:	7390,
+					DataLen:	216,
+				},
+				[]byte("cpersistent.mapping\nPersistentMapping\nq\x01.}q\x02U\x04dataq\x03}q\x04(U\x01a(U\x08\x00\x00\x00\x00\x00\x00\x00\x08q\x05c__main__\nObject\nq\x06tQU\x01c(U\x08\x00\x00\x00\x00\x00\x00\x00\x07q\x07h\x06tQU\x01b(U\x08\x00\x00\x00\x00\x00\x00\x00\x03q\x08h\x06tQU\x01e(U\x08\x00\x00\x00\x00\x00\x00\x00\x05q\th\x06tQU\x01d(U\x08\x00\x00\x00\x00\x00\x00\x00\x04q\nh\x06tQU\x01g(U\x08\x00\x00\x00\x00\x00\x00\x00\x06q\x0bh\x06tQU\x01f(U\x08\x00\x00\x00\x00\x00\x00\x00\x01q\x0ch\x06tQus."),
+				/* same as ^^^ */ nil,
+				/* same as ^^^ */ 0,
+			},
+			{
+				DataHeader{
+					Pos:	7720,
+					Oid:	8,
+					Tid:	0x0285cbad02222280,
+					PrevRevPos:	0,
+					TxnPos:	7390,
+					DataLen:	29,
+				},
+				[]byte("c__main__\nObject\nq\x01.U\x04a1.9q\x02."),
+				/* same as ^^^ */ nil,
+				/* same as ^^^ */ 0,
+			},
+		},
+	},
+	{
+		TxnHeader{
+			Pos:	  7799,
+			LenPrev:  409,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbacfd70a433,
+				Tid:	0x0285cbad06d3a0cc,
 				Status:	' ',
 				User:		[]byte("user1.10"),
 				Description:	[]byte("step 1.10"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (a)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (f)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7342,
-					Oid:	7,
-					Tid:	0x0285cbacfd70a433,
-					PrevRevPos:	5830,
-					TxnPos:	7268,
+					Pos:	7873,
+					Oid:	1,
+					Tid:	0x0285cbad06d3a0cc,
+					PrevRevPos:	7160,
+					TxnPos:	7799,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05a1.10q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05f1.10q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1279,29 +1354,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  7422,
+			Pos:	  7953,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad02222280,
+				Tid:	0x0285cbad0b851f19,
 				Status:	' ',
 				User:		[]byte("user1.11"),
 				Description:	[]byte("step 1.11"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (f)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (c)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7496,
-					Oid:	1,
-					Tid:	0x0285cbad02222280,
-					PrevRevPos:	7038,
-					TxnPos:	7422,
+					Pos:	8027,
+					Oid:	7,
+					Tid:	0x0285cbad0b851f19,
+					PrevRevPos:	5772,
+					TxnPos:	7953,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05f1.11q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05c1.11q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1309,29 +1384,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  7576,
+			Pos:	  8107,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad06d3a0cc,
+				Tid:	0x0285cbad10369d66,
 				Status:	' ',
 				User:		[]byte("user1.12"),
 				Description:	[]byte("step 1.12"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (c)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (f)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7650,
-					Oid:	2,
-					Tid:	0x0285cbad06d3a0cc,
-					PrevRevPos:	4413,
-					TxnPos:	7576,
+					Pos:	8181,
+					Oid:	1,
+					Tid:	0x0285cbad10369d66,
+					PrevRevPos:	7873,
+					TxnPos:	8107,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05c1.12q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05f1.12q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1339,29 +1414,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  7730,
+			Pos:	  8261,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad0b851f19,
+				Tid:	0x0285cbad14e81bb3,
 				Status:	' ',
 				User:		[]byte("user1.13"),
 				Description:	[]byte("step 1.13"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (f)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (e)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7804,
-					Oid:	1,
-					Tid:	0x0285cbad0b851f19,
-					PrevRevPos:	7496,
-					TxnPos:	7730,
+					Pos:	8335,
+					Oid:	5,
+					Tid:	0x0285cbad14e81bb3,
+					PrevRevPos:	6254,
+					TxnPos:	8261,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05f1.13q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05e1.13q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1369,29 +1444,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  7884,
+			Pos:	  8415,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad10369d66,
+				Tid:	0x0285cbad19999a00,
 				Status:	' ',
 				User:		[]byte("user1.14"),
 				Description:	[]byte("step 1.14"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (e)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (a)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	7958,
-					Oid:	5,
-					Tid:	0x0285cbad10369d66,
-					PrevRevPos:	6132,
-					TxnPos:	7884,
+					Pos:	8489,
+					Oid:	8,
+					Tid:	0x0285cbad19999a00,
+					PrevRevPos:	7720,
+					TxnPos:	8415,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05e1.14q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05a1.14q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1399,29 +1474,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8038,
+			Pos:	  8569,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad14e81bb3,
+				Tid:	0x0285cbad1e4b184c,
 				Status:	' ',
 				User:		[]byte("user1.15"),
 				Description:	[]byte("step 1.15"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (a)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	8112,
-					Oid:	7,
-					Tid:	0x0285cbad14e81bb3,
-					PrevRevPos:	7342,
-					TxnPos:	8038,
+					Pos:	8643,
+					Oid:	4,
+					Tid:	0x0285cbad1e4b184c,
+					PrevRevPos:	7311,
+					TxnPos:	8569,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05a1.15q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05d1.15q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1429,29 +1504,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8192,
+			Pos:	  8723,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad19999a00,
+				Tid:	0x0285cbad22fc9699,
 				Status:	' ',
 				User:		[]byte("user1.16"),
 				Description:	[]byte("step 1.16"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	8266,
-					Oid:	4,
-					Tid:	0x0285cbad19999a00,
-					PrevRevPos:	7189,
-					TxnPos:	8192,
+					Pos:	8797,
+					Oid:	6,
+					Tid:	0x0285cbad22fc9699,
+					PrevRevPos:	6858,
+					TxnPos:	8723,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05d1.16q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05g1.16q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1459,29 +1534,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8346,
+			Pos:	  8877,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad1e4b184c,
+				Tid:	0x0285cbad27ae14e6,
 				Status:	' ',
 				User:		[]byte("user1.17"),
 				Description:	[]byte("step 1.17"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	8420,
-					Oid:	6,
-					Tid:	0x0285cbad1e4b184c,
-					PrevRevPos:	6736,
-					TxnPos:	8346,
+					Pos:	8951,
+					Oid:	3,
+					Tid:	0x0285cbad27ae14e6,
+					PrevRevPos:	7009,
+					TxnPos:	8877,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05g1.17q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05b1.17q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1489,29 +1564,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8500,
+			Pos:	  9031,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad22fc9699,
+				Tid:	0x0285cbad2c5f9333,
 				Status:	' ',
 				User:		[]byte("user1.18"),
 				Description:	[]byte("step 1.18"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (c)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	8574,
-					Oid:	3,
-					Tid:	0x0285cbad22fc9699,
-					PrevRevPos:	6887,
-					TxnPos:	8500,
+					Pos:	9105,
+					Oid:	7,
+					Tid:	0x0285cbad2c5f9333,
+					PrevRevPos:	8027,
+					TxnPos:	9031,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05b1.18q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05c1.18q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1519,29 +1594,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8654,
+			Pos:	  9185,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad27ae14e6,
+				Tid:	0x0285cbad31111180,
 				Status:	' ',
 				User:		[]byte("user1.19"),
 				Description:	[]byte("step 1.19"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (c)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	8728,
-					Oid:	2,
-					Tid:	0x0285cbad27ae14e6,
-					PrevRevPos:	7650,
-					TxnPos:	8654,
+					Pos:	9259,
+					Oid:	6,
+					Tid:	0x0285cbad31111180,
+					PrevRevPos:	8797,
+					TxnPos:	9185,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05c1.19q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05g1.19q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1549,29 +1624,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8808,
+			Pos:	  9339,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad2c5f9333,
+				Tid:	0x0285cbad35c28fcc,
 				Status:	' ',
 				User:		[]byte("user1.20"),
 				Description:	[]byte("step 1.20"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	8882,
-					Oid:	6,
-					Tid:	0x0285cbad2c5f9333,
-					PrevRevPos:	8420,
-					TxnPos:	8808,
+					Pos:	9413,
+					Oid:	3,
+					Tid:	0x0285cbad35c28fcc,
+					PrevRevPos:	8951,
+					TxnPos:	9339,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05g1.20q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05b1.20q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1579,29 +1654,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  8962,
+			Pos:	  9493,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad31111180,
+				Tid:	0x0285cbad3a740e19,
 				Status:	' ',
 				User:		[]byte("user1.21"),
 				Description:	[]byte("step 1.21"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	9036,
-					Oid:	3,
-					Tid:	0x0285cbad31111180,
-					PrevRevPos:	8574,
-					TxnPos:	8962,
+					Pos:	9567,
+					Oid:	4,
+					Tid:	0x0285cbad3a740e19,
+					PrevRevPos:	8643,
+					TxnPos:	9493,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05b1.21q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05d1.21q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1609,29 +1684,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  9116,
+			Pos:	  9647,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad35c28fcc,
+				Tid:	0x0285cbad3f258c66,
 				Status:	' ',
 				User:		[]byte("user1.22"),
 				Description:	[]byte("step 1.22"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (d)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	9190,
-					Oid:	4,
-					Tid:	0x0285cbad35c28fcc,
-					PrevRevPos:	8266,
-					TxnPos:	9116,
+					Pos:	9721,
+					Oid:	3,
+					Tid:	0x0285cbad3f258c66,
+					PrevRevPos:	9413,
+					TxnPos:	9647,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05d1.22q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05b1.22q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1639,29 +1714,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  9270,
+			Pos:	  9801,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad3a740e19,
+				Tid:	0x0285cbad43d70ab3,
 				Status:	' ',
 				User:		[]byte("user1.23"),
 				Description:	[]byte("step 1.23"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (b)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	9344,
-					Oid:	3,
-					Tid:	0x0285cbad3a740e19,
-					PrevRevPos:	9036,
-					TxnPos:	9270,
+					Pos:	9875,
+					Oid:	6,
+					Tid:	0x0285cbad43d70ab3,
+					PrevRevPos:	9259,
+					TxnPos:	9801,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05b1.23q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05g1.23q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1669,29 +1744,29 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  9424,
+			Pos:	  9955,
 			LenPrev:  154,
 			Len:	  154,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad3f258c66,
+				Tid:	0x0285cbad48888900,
 				Status:	' ',
 				User:		[]byte("user1.24"),
 				Description:	[]byte("step 1.24"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (g)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x0czodb/py2 (f)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	9498,
-					Oid:	6,
-					Tid:	0x0285cbad3f258c66,
-					PrevRevPos:	8882,
-					TxnPos:	9424,
+					Pos:	10029,
+					Oid:	1,
+					Tid:	0x0285cbad48888900,
+					PrevRevPos:	8181,
+					TxnPos:	9955,
 					DataLen:	30,
 				},
-				[]byte("c__main__\nObject\nq\x01.U\x05g1.24q\x02."),
+				[]byte("c__main__\nObject\nq\x01.U\x05f1.24q\x02."),
 				/* same as ^^^ */ nil,
 				/* same as ^^^ */ 0,
 			},
@@ -1699,61 +1774,134 @@ var _1fs_dbEntryv = [...]dbEntry{
 	},
 	{
 		TxnHeader{
-			Pos:	  9578,
+			Pos:	  10109,
 			LenPrev:  154,
 			Len:	  196,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad43d70ab3,
+				Tid:	0x0285cbad4d3a074c,
 				Status:	' ',
 				User:		[]byte("root1.0\nYour\nMagesty "),
 				Description:	[]byte("undo 1.0\nmore detailed description\n\nzzz ...\t"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x1czodb/py2 (undo AoXLrTp0Dhk=)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x1czodb/py2 (undo AoXLrUPXCrM=)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	9716,
-					Oid:	3,
-					Tid:	0x0285cbad43d70ab3,
-					PrevRevPos:	9344,
-					TxnPos:	9578,
+					Pos:	10247,
+					Oid:	6,
+					Tid:	0x0285cbad4d3a074c,
+					PrevRevPos:	9875,
+					TxnPos:	10109,
 					DataLen:	0,
 				},
-				[]byte("\x00\x00\x00\x00\x00\x00#L"),
-				[]byte("c__main__\nObject\nq\x01.U\x05b1.21q\x02."),
+				[]byte("\x00\x00\x00\x00\x00\x00$+"),
+				[]byte("c__main__\nObject\nq\x01.U\x05g1.19q\x02."),
 				0x0285cbad31111180,
 			},
 		},
 	},
 	{
 		TxnHeader{
-			Pos:	  9774,
+			Pos:	  10305,
 			LenPrev:  196,
 			Len:	  197,
 			TxnInfo:	zodb.TxnInfo{
-				Tid:	0x0285cbad48888900,
+				Tid:	0x0285cbad51eb8599,
 				Status:	' ',
 				User:		[]byte("root1.1\nYour\nMagesty "),
 				Description:	[]byte("undo 1.1\nmore detailed description\n\nzzz ...\t\t"),
-				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x1czodb/py2 (undo AoXLrT8ljGY=)s."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x1czodb/py2 (undo AoXLrUiIiQA=)s."),
 			},
 		},
 
 		[]txnEntry{
 			{
 				DataHeader{
-					Pos:	9913,
-					Oid:	6,
-					Tid:	0x0285cbad48888900,
-					PrevRevPos:	9498,
-					TxnPos:	9774,
+					Pos:	10444,
+					Oid:	1,
+					Tid:	0x0285cbad51eb8599,
+					PrevRevPos:	10029,
+					TxnPos:	10305,
+					DataLen:	0,
+				},
+				[]byte("\x00\x00\x00\x00\x00\x00\x1f\xf5"),
+				[]byte("c__main__\nObject\nq\x01.U\x05f1.12q\x02."),
+				0x0285cbad10369d66,
+			},
+		},
+	},
+	{
+		TxnHeader{
+			Pos:	  10502,
+			LenPrev:  197,
+			Len:	  370,
+			TxnInfo:	zodb.TxnInfo{
+				Tid:	0x0285cbad569d03e6,
+				Status:	' ',
+				User:		[]byte(""),
+				Description:	[]byte("predelete 5"),
+				Extension:	[]byte(""),
+			},
+		},
+
+		[]txnEntry{
+			{
+				DataHeader{
+					Pos:	10536,
+					Oid:	0,
+					Tid:	0x0285cbad569d03e6,
+					PrevRevPos:	7462,
+					TxnPos:	10502,
+					DataLen:	216,
+				},
+				[]byte("cpersistent.mapping\nPersistentMapping\nq\x01.}q\x02U\x04dataq\x03}q\x04(U\x01a(U\x08\x00\x00\x00\x00\x00\x00\x00\x08q\x05c__main__\nObject\nq\x06tQU\x01c(U\x08\x00\x00\x00\x00\x00\x00\x00\x07q\x07h\x06tQU\x01b(U\x08\x00\x00\x00\x00\x00\x00\x00\x03q\x08h\x06tQU\x01e(U\x08\x00\x00\x00\x00\x00\x00\x00\tq\th\x06tQU\x01d(U\x08\x00\x00\x00\x00\x00\x00\x00\x04q\nh\x06tQU\x01g(U\x08\x00\x00\x00\x00\x00\x00\x00\x06q\x0bh\x06tQU\x01f(U\x08\x00\x00\x00\x00\x00\x00\x00\x01q\x0ch\x06tQus."),
+				/* same as ^^^ */ nil,
+				/* same as ^^^ */ 0,
+			},
+			{
+				DataHeader{
+					Pos:	10794,
+					Oid:	9,
+					Tid:	0x0285cbad569d03e6,
+					PrevRevPos:	0,
+					TxnPos:	10502,
+					DataLen:	28,
+				},
+				[]byte("c__main__\nObject\nq\x01.U\x03e1*q\x02."),
+				/* same as ^^^ */ nil,
+				/* same as ^^^ */ 0,
+			},
+		},
+	},
+	{
+		TxnHeader{
+			Pos:	  10872,
+			LenPrev:  370,
+			Len:	  181,
+			TxnInfo:	zodb.TxnInfo{
+				Tid:	0x0285cbad5b4e8233,
+				Status:	' ',
+				User:		[]byte("root1\nYour\nRoyal\nMagesty "),
+				Description:	[]byte("delete 1\nalpha beta gamma\n\nqqq ..."),
+				Extension:	[]byte("}q\x01U\x0bx-generatorq\x02U\x13zodb/py2 (delete 5)s."),
+			},
+		},
+
+		[]txnEntry{
+			{
+				DataHeader{
+					Pos:	10995,
+					Oid:	5,
+					Tid:	0x0285cbad5b4e8233,
+					PrevRevPos:	8335,
+					TxnPos:	10872,
 					DataLen:	0,
 				},
-				[]byte("\x00\x00\x00\x00\x00\x00\"\xb2"),
-				[]byte("c__main__\nObject\nq\x01.U\x05g1.20q\x02."),
-				0x0285cbad2c5f9333,
+				[]byte("\x00\x00\x00\x00\x00\x00\x00\x00"),
+				/* deleted */ nil,
+				/* deleted */ 0,
 			},
 		},
 	},
-- 
2.30.9