Linux EXT4 FS development
 help / color / mirror / Atom feed
* [PATCH 09/13] mke2fs/tune2fs: add dirdata feature support
From: Artem Blagodarenko @ 2026-05-24 20:36 UTC (permalink / raw)
  To: linux-ext4
  Cc: adilger.kernel, Artem Blagodarenko, Andreas Dilger, Pravin Shelar,
	Andreas Dilger
In-Reply-To: <20260524203658.12406-1-artem.blagodarenko@gmail.com>

Add user-facing feature support for dirdata in filesystem creation and
modification tools. Users can now create filesystems with the dirdata feature
or enable it on existing filesystems.

Usage examples:
  mke2fs -O dirdata /dev/sda1           # Create filesystem with dirdata
  tune2fs -O dirdata /dev/sda1         # Enable dirdata on existing filesystem

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Pravin Shelar <pravin@clusterfs.com>
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
---
 e2fsck/pass2.c        | 3 +--
 lib/ext2fs/dirblock.c | 7 ++++---
 lib/ext2fs/ext2fs.h   | 2 +-
 misc/mke2fs.c         | 1 +
 misc/tune2fs.c        | 2 ++
 5 files changed, 9 insertions(+), 6 deletions(-)

diff --git a/e2fsck/pass2.c b/e2fsck/pass2.c
index 938942a80..9a0f6f772 100644
--- a/e2fsck/pass2.c
+++ b/e2fsck/pass2.c
@@ -435,8 +435,7 @@ void ext2_fix_dirent_dirdata(struct ext2_dir_entry *de)
 int e2fsck_check_dirent_data(e2fsck_t ctx, struct ext2_dir_entry *de,
 			     unsigned int offset, struct problem_context *pctx)
 {
-	if (!(ctx->fs->super->s_feature_incompat &
-			EXT4_FEATURE_INCOMPAT_DIRDATA)) {
+	if (!ext2fs_has_feature_dirdata(ctx->fs->super)) {
 		if ((de->name_len >> 8) & ~EXT2_FT_MASK) {
 			/* clear dirent extra data flags. */
 			if (fix_problem(ctx, PR_2_CLEAR_DIRDATA, pctx)) {
diff --git a/lib/ext2fs/dirblock.c b/lib/ext2fs/dirblock.c
index d1d5a9e7f..fa7cc83ff 100644
--- a/lib/ext2fs/dirblock.c
+++ b/lib/ext2fs/dirblock.c
@@ -74,13 +74,14 @@ int ext2_get_dirdata_field_size(struct ext2_dir_entry *de,
 		dirdata_flags >>= 1;
 	}
 
-	/* add NUL terminator byte to dirdata length */
-	return dlen + (dlen != 0);
+	return dlen;
 }
 
 int ext2_get_dirdata_size(struct ext2_dir_entry *de)
 {
-	return ext2_get_dirdata_field_size(de, ~EXT2_FT_MASK);
+	int size = ext2_get_dirdata_field_size(de, ~EXT2_FT_MASK);
+	/* Add 1 becasue NULL after the name */
+	return size + (size ? 1 : 0);
 }
 
 errcode_t ext2fs_read_dir_block2(ext2_filsys fs, blk_t block,
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index cf12716e3..b14ba0a34 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -2276,7 +2276,7 @@ _INLINE_ struct ext2_dx_root_info *ext2fs_get_dx_root_info(ext2_filsys fs,
 	de = (struct ext2_dir_entry *)((char *)de + de->rec_len);
 
 	/* dx root info is after dotdot entry */
-	de = EXT2_NEXT_DIRENT(de);
+	de = (struct ext2_dir_entry *)((char *)de + EXT2_DIRENT_REC_LEN(de));
 
 	return (struct ext2_dx_root_info *)de;
 }
diff --git a/misc/mke2fs.c b/misc/mke2fs.c
index dd8c53d90..2bcb7036e 100644
--- a/misc/mke2fs.c
+++ b/misc/mke2fs.c
@@ -1279,6 +1279,7 @@ static __u32 ok_features[3] = {
 		EXT4_FEATURE_INCOMPAT_FLEX_BG|
 		EXT4_FEATURE_INCOMPAT_EA_INODE|
 		EXT4_FEATURE_INCOMPAT_MMP |
+		EXT4_FEATURE_INCOMPAT_DIRDATA|
 		EXT4_FEATURE_INCOMPAT_64BIT|
 		EXT4_FEATURE_INCOMPAT_INLINE_DATA|
 		EXT4_FEATURE_INCOMPAT_ENCRYPT |
diff --git a/misc/tune2fs.c b/misc/tune2fs.c
index 3db57632c..c5a40c5c9 100644
--- a/misc/tune2fs.c
+++ b/misc/tune2fs.c
@@ -192,6 +192,7 @@ static __u32 ok_features[3] = {
 		EXT4_FEATURE_INCOMPAT_FLEX_BG |
 		EXT4_FEATURE_INCOMPAT_EA_INODE|
 		EXT4_FEATURE_INCOMPAT_MMP |
+		EXT4_FEATURE_INCOMPAT_DIRDATA |
 		EXT4_FEATURE_INCOMPAT_64BIT |
 		EXT4_FEATURE_INCOMPAT_ENCRYPT |
 		EXT4_FEATURE_INCOMPAT_CSUM_SEED |
@@ -222,6 +223,7 @@ static __u32 clear_ok_features[3] = {
 	EXT2_FEATURE_INCOMPAT_FILETYPE |
 		EXT4_FEATURE_INCOMPAT_FLEX_BG |
 		EXT4_FEATURE_INCOMPAT_MMP |
+		EXT4_FEATURE_INCOMPAT_DIRDATA |
 		EXT4_FEATURE_INCOMPAT_64BIT |
 		EXT4_FEATURE_INCOMPAT_CSUM_SEED |
 		EXT4_FEATURE_INCOMPAT_CASEFOLD,
-- 
2.43.7


^ permalink raw reply related

* [PATCH 11/13] e2fsck: add test suite for duplicate directory entries
From: Artem Blagodarenko @ 2026-05-24 20:36 UTC (permalink / raw)
  To: linux-ext4
  Cc: adilger.kernel, Artem Blagodarenko, Andreas Dilger, Pravin Shelar,
	Etienne AUJAMES, Andreas Dilger
In-Reply-To: <20260524203658.12406-1-artem.blagodarenko@gmail.com>

Add test for duplicate directory entry handling and validation of the
fix. This test ensures proper field alignment and dirdata integrity
when processing duplicate entries with name expansion.

The issue involved directory corruption during rename operations
when entries had duplicate names with potential for field expansion.
This test validates the fix prevents corruption during such operations.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Pravin Shelar <pravin@clusterfs.com>
Signed-off-by: Etienne AUJAMES <eaujames@ddn.com>
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
---
 tests/f_dirdata_dup_de/expect.1 |  37 ++++++++++++++++++++++++++++++++
 tests/f_dirdata_dup_de/expect.2 |   7 ++++++
 tests/f_dirdata_dup_de/image.gz | Bin 0 -> 79307 bytes
 tests/f_dirdata_dup_de/name     |   1 +
 4 files changed, 45 insertions(+)

diff --git a/tests/f_dirdata_dup_de/expect.1 b/tests/f_dirdata_dup_de/expect.1
new file mode 100644
index 000000000..c064e82cc
--- /dev/null
+++ b/tests/f_dirdata_dup_de/expect.1
@@ -0,0 +1,37 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Duplicate entry 'f' found.
+	Marking /ROOT/dir1 (439) to be rebuilt.
+
+Entry 'foobar1' in /ROOT/dir1 (439) dirdata length set incorrectly.
+Clear? yes
+
+Entry 'foobar1' in /ROOT/dir1 (439) dirdata length set incorrectly.
+Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Entry 'f125' in /ROOT/dir1 (439) has a non-unique filename.
+Rename to f125~0? yes
+
+Entry 'foobar1' in /ROOT/dir1 (439) has a non-unique filename.
+Rename to foobar~0? yes
+
+Entry 'f' in /ROOT/dir1 (439) has a non-unique filename.
+Rename to f~? yes
+
+Entry 'f1442' in /ROOT/dir1 (439) has a non-unique filename.
+Rename to f144~0? yes
+
+Entry 'f125' in /ROOT/dir1 (439) has a non-unique filename.
+Rename to f125~1? yes
+
+Entry 'f1442' in /ROOT/dir1 (439) has a non-unique filename.
+Rename to f144~1? yes
+
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 543/5000 files (0.9% non-contiguous), 706/5000 blocks
+Exit status is 1
diff --git a/tests/f_dirdata_dup_de/expect.2 b/tests/f_dirdata_dup_de/expect.2
new file mode 100644
index 000000000..4ed7f5245
--- /dev/null
+++ b/tests/f_dirdata_dup_de/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 543/5000 files (0.7% non-contiguous), 706/5000 blocks
+Exit status is 0
diff --git a/tests/f_dirdata_dup_de/image.gz b/tests/f_dirdata_dup_de/image.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d3e240652bd1c64c8bf5b0da5dbe7c593e41b4bb
GIT binary patch
literal 79307
zcmZs@dt6lI7B^mbI-Ke#r#xjvI;YIY3`tQ@5vEQmndqd3q=;iFqLNOEh>EZ)^O$*=
z)PxXWOa&6uQ4kRjcIGiOE|Vf4B20;Khfx_Ana$qo{XWmkocH~GKEM96&3Z0teb;?G
zquTkmzfFDo!xfJVSh@P+i10@`>fH{71=rr|e4^;9hS<TaBm94eIc6LEucB=Yu|vLX
zC|uuq{V#u+x_SRAU;pjNC;#@hzy0|2k*|OC9eic!SGmipi)?)j&2n{2m`RuV<Nn;7
z7-fN9^X=wk=~+)bq^!madw-*<p8ED)EiBk@@J=_yo$wAQ*z>UeXmj(F;s-^Ma=Ns%
z|5R&1wX{?`6<=@I+}fBkzjI;t);W>(xV2?F#EC!M>ry4O2Q0T;KV?(aU-~3UckY+#
zC5E$QSMq4WLyzIM`dCBJxzH86pRLxO4GpPzrLgOq=@qG?poCt!``rMNXPfkvGO4R8
ztVHOomA6ls_~{M3dWzDmG9^V;q^fF)*A~rGOC33<X!6#xJrR?Y2f4P;&i<%h?3Zd~
z&4smR;+OVYQ`^69IT|0<xGVp#B)&9u{@s|UB(m##Vo2My>)iKa)-8JEk(OO&3a9&*
zb-tLF)qJ03&kLIP%kbYrUh`|LqLbZ^J>vN9*SP8h`(<x!g<<pTJ3A5$53QA#DADxQ
z*+KNhfJYwr*I}D5A^9_*P-_ul-~WkHEBbdlj{m*FTA7_{6vo>dh3?juDI)Ilr#4Ey
zkkx+vfF-OwM7w2+lJrCYS=7Bx#SJ~X&L>8=O-e~%&z2xjnPOReYjsJ=hFh(aq8<3i
z=fn4OD1yy<|Hgi^vH9bVN4W{DW0pP)pRNcW7kBB0ubHyx=Tx<-aanxDjCzClnB=*r
zpeH6U?vdXrWdCkM_}p&sOu=$hV{@ljj_G@}Ugfqyc<IK)1;3SP?Up7z&enUm-;&#9
zwrS{oUrDp!g?6z?*uJZ#zvlU7IYV6*cPfLftQFRNYAPA{uCIT32F-A@^h!<Qi%*C2
zPEoXHv$8TIV}R1%*ln`5AB^8+h*=RsmkQK_boZK<+zzlCi@V%xJzK1XhkM7z+VxYS
zyKHyFCui+yGp}ARjgex0T~;_~v5zf3Rgn!7I}ct{`HS%;{ZQ$0Yp{kY6M}4pIIOwe
zR;*5!8gF*#2Y+e%{HoL<Tso^aOG>Dz;a2yx?si-M^Tq#ou}^)5GFq}|UH9!V_M^=;
zmcBDf#fe32tpa^wun8v<Wnro<Rh=z0{@A5gx!LHuIIGZBv9$P%{f)YYYyWql)>g5l
zrcx5hN(6J)n)pSwlKTUP(X6UKsxl|_1<Kmu{?t_c9D!o!c?w?fiM3mtBU%jc%Kg3w
zMd~xhESy5g1x8tDm?yUNwTMk>l`48zy?O#wece(^{>E-=f3YZ~$?D~_J=AJQ*DDsS
zV#}Cs{#5kb95B6}3WZOVtf%h_ckY|d#`T!n&UsE3c5UuA%S%h**KY0+j?nrztM)V7
zw)nCC&rM&fq9&8%t>jUcc>j5|<-c7L&8Sy-#t4V5%WGHJN><jZGVqUU^8IDDl6mzi
zji-|OeX&tiKWvGa-mtE1p1*_t24TYqv)-rT%cIJ_20gsftiQc7FYJ~!I%TnZ&o<B6
zzkJ|(f?aLARrXs|t~C28_vdf*Oru)HF`ICxw!Y`YfAo(oZ)xwNKvh5`ZB^~EKi~7v
zD3y56&M%}RNA2DZE}Lq^n4|RfH}@%4LHT=7O;xUZWp!YWWm9Tmo4Tn{9JO$Yl6*$5
zc*g0nhRmmupVggxu0?D@FCF%dFIF}kt#f}LC+Uo6Yr7R&=%05x)+m1?X>T5(ptw%*
zIVI&Qozo;;j_Hc2nZn|1;>l^0Bpsw(@}<NFa`VtC;mQ!Tmd;-5+<r_g8+vorN3YJQ
z8Wy@bzjT9JSACB`pzbP#{Ap6*G+JP9qiL~{m~utY#$FyD@=<vC0kuWkU|U)U&5nGa
zF)fUKKuNT_a=gyuUN1}--5Jm_sa`f&l=FwB#v@(&odbkn%R7(Kil_F7e|~i|m11`H
zw>Eo9h7w_C{QW4arM^WyU}ri`q8?B$v>FSm7q;7Olm2^ufAZ+QPd!>|@edc{mYgf@
zrD?V)JvaQ^i*8oNttao<HM01@T}8bvtH@Tn&bYd_?p#*CBCOddQAeCVS-Sk~!)t__
zj?2p1)3Ak-6K#>6t+~1G<e&5F*KG@~_UaNA?^L3!J^i{Jl?D%)E7rrylO9Uy!+Mb-
z7DU}Um9xjLsTat5$~rSPiYz?kS70H((e+hT-38`XsmE>>M1_jFl#m!<QKh_g^*z(i
zsXITlFX@WHbx+#c^oE5G4Pr}QOJ7fH{4V*)aaG+m%F$B4EFM({P#MStO-#2cTDV>J
zd%(S1+%$S{+)`_x$!P9g+8^@6jyV?UTWFRo?OpMLtz^JJyQ#iLQV&V_^ZUKsMH|+e
z{_kH(`j>i4>Vk$2B~B$X-HcVbKiDaf*ifUWl;4JDd7u9EM}4YRY%XCI%^&yjk(%XL
zr7O-Shs3&i+SjF@>Cr#w`wXKj{x{ycSp9pQ-nzxwZ}(UKB0PKW^-hwzx_oig+lT4G
z2n%iQHfnnRpYL(~LST%|uTUL-Q(hZ#&-BycxG9RzwykEE-C%nJ7Sy7Q+4AzZv36PQ
zv4M*9%ENx4&m;+_R`kt3EZbYu>8V=bqGA*$ZdUwyCteDa+q&cL_w6lQQ#HO~V&j(Z
z*WT)#Xb{7fJ#3-XHu+YHm7YpXd6>T=FmCtO5wBV7Mz@f#{d#+Syid1uyR_SWCV;+q
zLY}SaF&7wWbfVN1s>`kU+?x)i&RO$d=BQm=VzkX7wdhThNQcU73wzD#-$a;Fl1HT<
z&!_WWDE>6>0{z4&l*aUmmFvl{`+g58-QypL-4cIfaGcdFd_LMkw@VWv-1#<jiCk#V
z>>A&;u3)j@Y*u?)7d^CpSKq0ut$y*iwy@;K5@GA|fOE}D+oEZU#<a=W|Gm_=zPd%3
z*WY;}*t4@C_Neeuck_v=b>#iwL%X@9yM=ZR@a>2r&AkJ*uXg)a<Q!GHsaz6E==K0*
z(t-!WzP)`cEUwttuFk1XwM7qneo9kw@%cb&F~zovD@&E9+$52@j(Aix2p8U_F*NA)
zcG4Oj+tX#(a%1szp)f%n@<gxDrqzX*h5jJAJumAc`eAAOn)P&l-cvK}mTTE`<f7sm
zwD#&Rxi-VUep43{wFm!xP4;~6#Hcpmvr=Wi5gRRtxOuEs8NA%?>AN!IEZrNU_AQ{V
zj&B<wi}l&`Q;RJ8o>OHryw1o2clG6i{C%&NasWWPjpouBso=+ezdzZljoZE5*Q-_C
z6#E#7)xw=1x;v{N%Vg`3Gsx;MyY1?$oNhBr%sqXKjumO=8vg1gd7rPkm|WE$3Ww=?
zNjy#85BTYtEM+{mr&ieKZPz?VQ+%wOf{Q$!iBm+&PrB*`VINl2UJv_2Svu&EK%3!J
zwpz_*@mRpX-2sZ9Qr{+NUTiThA^oH`;KMd~c()ohmCgC|Bda1*Oh~S25VEnr*0ZNR
zqcLuuAC)}C_H{GpGG9R7K*r>?J8wyvVU86Zd8uCA_h<i1yYXgoaL<~lSi=$pM!Zs~
z?)z8KsM|u>qrXG=$DT{DY71>M+bTb~)=Z|MVtA*V@pr54G?l#c$eu2B_^OX*P`Uj=
zW`ozT6e`ZO=B=`*gVTivGZu!NcU(E+eXloL#W+jijf@dr${PFKM%-iQ|4t#a-S~N*
z659h-gpR!_+<nz-&g@kxm)SiH$6}^Q?m^|0J_9QVE7%HYN4m|E&eav*FaByTvC&UA
z`gOP10wp%Kz+`*BaHXv7MuSiQ#GLTIsUA<sqZuEQm{byW1d#U6KJ2ez`)4!>l^M98
zPO7g?*xf+Bi<Z{il1$&W8eX~{y-mXBtBGshw`=R95j`vO0hQ*p=dy}u*B8pbUSXBu
zyOdpC#e^6du$j~yscn+!yH<mgnsre*-e(SCD6_Q7`|M}`y<Um6FRp`#n%<_rN;sAD
zK-cs72)QnPOw+SRyUkfmbwBhfIk@$9D*yoMHyO3Ig;CE1bxkCMGyXU6qM|9M<+H#L
z+H44^Dm(z<3{(9X5Qp16wZ~e&=~aDqkjfJlesrDW2Jhn<^Vb!ERvVRpn+<DGnQ1Fx
z(OPIw1Ic;Cqch#JrW%N%Z>L0B)PWG(v;yD<T;0RCy0oWVK4{NgW$mM{Z1c@Rh4b{u
zK8&ZYdP&CT;uLjhKp{AO3gFv$)^Yen?C=@7TA>GAQ`8@tDbmTb#4R2%Gbn#yuXgxm
z(za#p&9xc)fVo%VLe4Xu#xS043+>hV;Il2cu)2ZTousxNcBJ7T9W|Ni*JRcMY8sq)
z){Bl!r?5>!R@4fe*wnH=%c9mD7PiU;a3dMq5IPg&njH<K5B=B%UL>{}w(OrBa+ZF_
zWsBL$?Poj0HPC~L8DO=V83Z>#pqn8?n-@+!M~oCl)&8q2;@fQ3g^pbxW4qQw)(Ub<
zyWrk+HlkA=!WCp*xA-_SR7P_){q>qe8uO3E^zS4k-<bQ44jjtsJ9en839|351~Q*t
zV!S1JzvP7FQ*2Z7>2TT&6DFR_iNT^*t(xK)Iiqd^JTv28*uGEk$n6l<T4mK>&3O&J
z4`f=2P48aEr@Rhv20rD~YvbtAB;~4a>jn<!0dsL8-Suor$BDk&*%=y3U%24>7L)06
zFG=@Y5qWoi+#|aIQRZXy&vvR`WqXER*{7I4t)*m;+G{#OV(H=+%6*xA^f<)s(v7?5
zi)m?zm(5s2-vSTG*214<cBZ`ljBXXDl`5fAEhH(~cIDjxvPTEQ*$O6buh3reSg6n+
zX9qy2ZvqecaRpAwzk0XQ$pl$^wurPB9(<8&Q*jdp(OhEe)m3HF{A)Jh_5(|sq`zX-
zD8o}62%gGTK8ckl+ZBD_8ugF8%Ff5_zBlQ3pY}oNc`!IVoK{1sMdKd)4(6w}s$-Xj
zodyc?HZs!HAe~^ho296sb7N`5W6lHbU|6XGgTvM<bv^5P<is+oVR+8yYGDN^modtr
z@YVq^MQuKVP8QKz&ZTkVDfA7-;XPiG<sZ-*%NyIP8iZDGNqxQJNgLEUVK%dr^GX%J
z=?3z?7QL}kPJF^C)o>;_%k6BM4LclZUJys&KJtEgFOLHvbOKv>G**78h;#wJe~s%5
zabl@74OmjuX47cME!Fa&S?GgpwB35Lmu;zGTSk^D!;ji%srRJpUS-r@96T~V$&eib
zWY@Ix+xiFUGmGdOKuI`eezptv9U<<XH-qZIB(KR-^zpu<krr{TQ{hf>Y?~6~7=49c
z5zgC{Q4w}e@x6DUZ>J&jKN$~Wf!{!@LS=JHZZwbw=hB<7jMEtli?A+CfFK*IY}ye3
z#I(r{Km>C}RA$p+Tt};$c&=B;`m6KAne4>2)wO~Jx;S`^)OkxXCbSy*U-5G2>MH&n
zH!{FN+%kg|Jx+rb>dzRcfPo%GWD<JU=GwHw*{+)%yN+kOs(#C+c<eeiOQnsa@lFJL
z*B(AbUw~2-M<oSI4Iji(?pS%h_SkWUXhyM>-|>=E|A>=yQehVI6c?9Ln34WAL3W1)
zunp@^!EyJq<A#M@Q!YVmqWP}3vgsY{y4DhG7V6)ohl(ooAf03;jZTAhPXl>h=>IQh
zVbc0vS?##$W_DF~T`hgvBB|Hhx_b=YT~4o^Sr_$@aC-Nsg*L8uupg3p2PSQ&)#3F#
znAcZlhtnmd91lP0k$qhjZ6H%Q6;$pIoG7_86^gN&U-k^YY~AbZve$6gr;CVWOO?$$
z(dn}$FmMY&rApv*#IU-6++HOa?oNC!f*bz48BFR+LwnV4*!!tHBz1l)&2rg@N(Psb
z+zw$q9MLDqDT`yNe5~vfw^a^2)+8h|fUAqcY3UI?RUdk=>y{+=@OTa%%|UG2f0rsH
z(^a%uo{GDeteW_}4GtU8%~m$AtfjhZC4w|`?eb1J?{7|(^J3gL+{~u6FfS=@b)2{*
z>5>?W%N;CEU@X?Gs-=f5iWpy#6KSE7F7G~{-DW>-^Kt<RQ|cz=+RSe-I2AbT;Yq$U
z%y7&R3-#A}XIjK)Cn#2PP~1q6HM@$bImXif6TO<V7*QE)f8A@0#Vfre!#`6<Ub?Lt
z{%Ey}HhJO1<)mn>7D`hZSzzKfX)+~S4RKag#0{EY&%fR*8(!=&kgiKzAa6+Oz3Tm&
zxyR6(RQr=~%k*1i{7*-;cAv2YwBh*W5pqfAp9kMR^h^qsZ>sAXZ!-t{CX^LvZ_!M(
zZasC*+d0#&uaUxgT5q)U>sl&?+_)`lhc)wE(ejOru18(DCda(zHM&(D?_KlZowF_7
z6x@9Nbd%x-ZLKBk=0Rf$Xb;=Q^F6P>PxObm>`u(=66XPk9_!a%mQY~3+oJfTJ(p-T
zoKB2<W9@VZKQ&|Vhf$O=Ku+!;Z~r~d*9*-z?(9<r_rx!Vo9qMR+&nP)R6dP{oznew
z{aNrq44iH=kH|fLjQ(4+Xx@&TBPKFYNR=GuI7WefSC@J$J`2>~ou!EgG?4k>R!jA5
zp@!Y1rIp>qa1?i$#qKhL-Q^JO;<h3GSd&r+e}cPAu4qvT`9V+EO4};)p&LHB;CjKv
z+0pi-P4#UOb*3&{bX|C`_|)<LZh{TBC=ae5lq^p(EA4)zjCwh*rdblJGP+@l^)-bj
znv_`NE#f;NAs2+@N?ydOwKHgBY<~JPL#8&1gJ*5oR4&_|wCb|Sr&}zV3vp<wm^glh
zajSOA>JnoZE6+w>mLi&j*bK(U0>;NV>lMG>e;T!_OVk_|_R9twZ9hBOLB@a~fz9Hm
z(VN4ubUE~7Yw@X#RMxLE-?%eI(ma?(Gm38rx7ZzG5O~gNI8{LLUnsMBalXX<fg@Yh
zVeA4k!Q>dZD;Stj1N8%6EW9J*j533a##}o7!1-~L$$#BeOVw@q{B3$oQu~nKznF}6
z6=~-iM(+$Dbs<%ax2fM^<ddN^Zp)hlw{&)g<LnNbfQ4N5;CedDG)`EuT#5OBvB%r@
zn}SyWgNCiAkR)GBQc9OqPh<CY<M$sS%$Rm+R{#kce#*t_ul^=pRZL|xXa<vQq%ou_
zFAGOEZ^>v=wlBAPCodS%3HA&<$k=m^-P(rF6n`}u#BaKYXENegPJGlvl5Txmx$Mr2
z%+@B(Jj*=>(J1S>StCyE2vCwEay?dc2~(ZCAG((<Ua{DisjHc8qwJaHkD_Qee7pH@
z;iv}27>>@i*z19dhNRHyduyv?y-Vsxnbez$J)@7eAMF-X*7V1h%lZnobuaAOJ4t=!
zYfQtU%=^#Z7<jGE{6k#>)MqIVW!Tp-&adZg?1ufzFs+XQeYsUTCTH|5w)F(27+taZ
z672Eom6$(GnO)TBl$W%D@%y&z*qhPw)+@G4gV%uJYm<~w;SPqEFnut^X?~vT8`vyp
zyrLqpw7V0njSLAmci8bz1i0FUuxJ`QRt~8+v9lNAn9WoHY1Fc`HOR`;H@nXrlmt&F
zyNelC)i(d*@7E(vwIy5JAd4}T<dGD8O~I9RIIr~M4R_><D;H-K&<rO+W9B-K{CadO
zbikaSS96>022t?X_Ag~OfW(u51ZVzoZp>5_c?oxhV(k&kfvFB9QOZ8P^Z3@8^)JNr
z=UrPDQ+=CmfV{HwX9n+ij!V6^>9`8Mrt`s!Dp~WC^TL%5LA@4zybw-mkl42!EBjXp
zxn%__pkEd%gGjz{=AyQ)7MYIqSu*qK1=q2s^JCYfc|~iGp0u_H+tfalLXVTQ%t^Yi
zEf99cy`r$NNr~Wg3EWt~xuH$WzEK35qc=ut%4Ji9Rf~9)3)qhfxc!*~J2DBaahL7r
zLCG+<#k`Ebj^<;W9buVsZPU!ulM$QMC9Fvox_n386yAfzt#O=d#2e89h#Na%byyrX
zK26(~f!YCpu!D2mVXi8@9yVfWL#sG{dDvN)i<o#P^~jzjQ0B*UAJ)^CPHYu2TOf3`
z&;4%m>+lP$PjzMG)3zifGQxqaA<PhHUxP9a+k=c=mm)=W33HqZ74{uds9I*s^hj+j
zZ(STP-X>106jGcFyTchKBra;Z*3u{rrv=eu;m!d3is3R;!d4wGft)IeJ1-uTwEJ4c
zHO@oN;D;7xzS*;JJ(=$}y^E#CIgvS<c?g3PGcqmp>n<`ZdiYtn>|JWrdgqM3DXhSa
z7dVMu@7dqdPbcT8pfP{4?2CQ_1Rn5X+0qg>kDW}kEG-asnwCy>C$696lC;bm-Sgpk
zMSWF-EW%wkPU65UzA;x5*sSjE?>mD-A7~ZdaUMFD?<+ks(|>RZy&2!xINnB!owRY@
zoYiqF)8bzQsH^i*f6S+<B*kO7gViBiC5pU{-^hW5s0*^~$J#D{)Np|OGRnHhdf%*=
zAi-NfhzHw`Fm;IJtZYd9pe+KHCuUDvc9T-$!eunSjdA9I%>k21>Uu^4PhbbF4>WOm
zc#}}$*mm@swq};w+2>TrIv$s?kG_1{^0b*n$fKwwS_3uyC5UD@H}>EgH|<M{M-Zx}
z+=x|OB)hDZ19gisZ|sCV2;VCi5a7s4q0)(sbS{MasmBvxmo%my3#i<sg;AV~-Ph-e
zyD9|F(4N|Zk{QTY;AHYl$LD=>#cvv@xy`nyT-G5a=gv8lpJ-TO!e)eHLwhe}O6G)C
zDtGRAj_+AAB5m=G3L&IUj(~XHaf(NFXo4yHxE78%bc@`FT~k}dO-NMf9#GTEiM!wE
zNk&jo6c0n{$F2Jx0P|4B<h&L++iqP20bMo87n+oq<@V-y!%-$7KXxo#E&TCDFZ)AF
zcB2-ucjvJcR^HC2#j5t;p3WZVNnN5ctz5SJYBhD{aFcb4?Ht+zuNLnS*Kd1R5^NLw
zoT|_@8>%2ivsl0vdbBwI{$-qdKN5N8ol_Zc-CghFSCRoMp|B(EphT}bspGi@*D;r<
zo2I1~BAT?Yv<=8w%{ko07x9a=BRcILZMU1OrjU9namvZo$d>lAA|TxCXMd>seW?gr
z8i%?|$%2c@@Uh*Z#B8zUCcCyLtV>e377?S&_3&%lTjBIQn}g$GeeH^A*7gf?qsVQn
z9Hr0UTyx{(w?Y0e&Z>x)W(C`Xx11**7R2s7liiy|3hoU`&3K#edZpSnWfZfwv9Ckh
z=n9J@BpB=CIsNHPin|*NA|bC!>{=-GKwj^_BtEM)7SM1Uyt$U&dN}{gZ~ZbtoQlEP
zllgSib?p@lfAz8Ai2!-bWQtptUjx{Gluo@)`>~W!+gcdUMuNIZ17E(;i86m4np&92
zWUedj!NqnQ8>L|1h}}J^^RQjEsciYU%?LgPm|T^v#0-&m@|^v%Yv7tEU!I?R4$i(S
zr)W+TdHTpvQN0{3R~c7V3!d~0ic9@FGbQ!2PA{Wje!?uWz*&p<DbcU5{Gg;xX*I;A
zjNm+*%y{-F3*Pnk?z`xZllbm3K_+Gk)TbG>nMIw-*)~O8ZZ#EEJjX&ec^o5thY^bi
z?NuAvEnv&1u6rlLaMJJW-iE1W5`LMjgDJ@e(ArOMmPfH$xwkT=4F}UQYt1m(rpH+J
zfjdX=ukB1;D{<#A@A;V8V8k64l>q=+Gt)0s14Bv#QnHvmc0`5(uU@f;Kb~=&zGg6|
zZxoqKPqTP<8y1k><Q8-YLz;@|=ffD#Ukx}>K;Ev+hp^4{ZEW)e_?Ulclh~wqL%ACw
z2D6(Nea}{J0o1Onx!6aiz0^?dnJ%>ONNDM1prz-jUhQY~J<11Bq~+Ala=wktg@YR@
zwgiM9p)-tqXC9Md<7H)L*!5uirOS>R*%5_8#{QcZ6^k+FWAUIQ9)j=;+{@e6G2ApV
z+%*10Qs>scx)gUj;IziEJTH5K#r(ev>=pm`X?s=|wFi+ua|0~m7nvQQ6s9j5FDjlX
zTkhS2ah%1{UG-Z&B+X*04`!g>t?E!e$o``7#%-z!q9Ug&2w@U1+yDo^|JP07qUY$L
zc}<GZb@)ieLQPjsrhUT4V4-iti$;8nus16y(^!aN+su}q#|}Sunt|k%*Y8JmQJu?`
ztma?Y=CfXsCE?B)PjJ`+`YJdjz#@A(i^ET)B~%qrSlFiMT!BV1-`fK5jhg}6eAwUf
zL_URbVlIH91B`eVyZJF#$jDE9=KwpX>G8-+WI2a0pV^tKM<k(S)@v|fb)fbcgz`Ux
zpTej+81-FHO99$wiuqsE@5lBwwX(gZVeco*t=cGxfv!@;SgvutOlk6&)JGx}-I<tz
zR9AGx?q=qi)kY@r53zR4pro@+iY1(JZ8hiGV#b$lmZ#1O)KcsNIa3l*dg2GSFk<mA
zBOV9GE_dZ#g+8MA)MZ`}$nrE5(`S+8`(sw)Y=OzM7e|pACCOT5Ayo`++8fAnR~Eo0
z-Oo65q)8FVtR~q{;$}wAuIAkZg$+{0_4}4=oCh<daiKng8KFex8V<f}w_AP=M8t9l
z`c|{xZ@nzSkK;OXy??~BNn`Aa`Op8%0@l?q&o^l+{H2;7o~QUhu-^X>5FP}A>BgL=
zna;#9w?#a`FGFzQryU<%F4Hs4n+q(*6nK8W0ESBMFC2u+8()do&yfNc+0l(1IC>c(
zv6zNil{k8%3v3gaNP?NBEZ-TR6n@;_3cls>vwy>KCMAJw9?N7_3z-$_VJploS8m};
zcQJvpf~)mjD{wpmOmF{`C&vcP^mNAb2&=5NygBh*oE)VIE;C~3n7|YJd=v!xyLV?w
z!ogNyDvLqBg&nM9Y^`aAGq1t-p!h#_K}jRHlD-Nh<#h{>%|)5T<wFrD<VHupA&X;W
zeVHTOQ#jOrVPLH}s;B?Vnusiv&>?i}&P@P1Sy`HHg!9G?LY1s8MV6LwnM*u}ZSKp$
zkfz<mO3t53&W+n*yY^3Jqpkf$?K*%lIhJicBu<X7Y>POVFNln9wYz#XCbEy9N4~R)
zX?Z)}cuRm0U(4z?Cpg#rNxCz$EpEmP3YE^EDt;5ertrtKoT}SG2j}~4PQRP0+PQ|&
znLm9Asr#PvjV+f;P`1ye%5E{fk+Zf)-`-aGZ+v#2H7*dJ;h^GD>X*<Dt$kW?Ei+Q)
zYjx9}{b(Yb%n<hv>sdz}WsMb^l^WdzcEOn5wPA4!Ud3mdTiJprx({vDMohY;_NR7V
z9@DCNH_Unbx!nOowpXHXMn^8iK3@z;Oz07_*bzQQkT}weqRm$vwnIA&snnDF7Q<G3
zQP_uHd;x`is;EErprrYylmCO6dloYo^<k)7c*Xa~F9%21RR%|KWY!@Dyg){M5!CI*
z2R#QRo6A@z40)E$#sd4;R}qYroZ7UiOU;lcy*ZVs`+mkAFnvhyk`++*mt*GF3)h{P
zPv*W`W|;pE!oW$Z^EO3xsTVNfPyZshmzL3M%nZ`ojC!NB$1tin6$X4i*Vjw%zgHP!
z)i+C`d%{_NyL3b_?{C}U=5zNtk{J{A4aWC3H<PgJQXiIg<y5m+PDOtNoXYaviNHZD
zXnSnD&43!NEp7v+KF+DHGwN3gh|b*j65l5~<G^$d+7+srs>Bh9SxUsLHrCQ^E;h|&
zCeoMtt&+`!KRz~dnu^NLmi!yU6I{eBkED%^I1Q>it!cseCZ!Svw%9bEQ-?7F>&d7~
zp%LDcoXH#7TwT!6PP7WyOkCM8uxr-$zJjG+X6LR(Y6X`2FqR9M0Q~7i)*cF*uZ8{g
zfnT~wmtf>x;7qG$OzQ($F8wkLkwFr|Uvq>va}LQP8Crapyq|@(8`j2D$q|E`iH<kT
z*U!C98F7n3wDVDCqlVN0VCqaR@aat8IehnXZ1=fPxBBiuFa{@_2HH20-K^OTZ9DN2
zQoFLOV4J~<oqYliy=xiI=>&-H?QZE7^)=5UG_Q49IUP@hOg5;&eDwK~SKR&qHy>U}
zWex+2jy4oYZRtGn<cSyK6yH*PW|taPidR6(xwwb$bEEp`aoTqJpkz9LbUvWeku~JA
zy~UeM-l$dUF86ImsK~q8#Ign+OK95w^la3r&950l>V+<t30v(RW}cfkAWE5)IC!mD
zC`|Q*<I=jc#K?q3!A#=0;OVgZ>Q8WVPcAfm@lAa5+iY_`*np1v&l&USf{SYwrr<&v
zllf%Wn3{&rXzCj)o5~&bwTWv<JKMVepVhY_cHnL<kBt5{_MXM|?tx!2ge|#xQ1bq^
zRaopuZ1dh`G6{(V+S-{S^wnib-p@OY!&9sfL#r9_KoC>BGIzX9`+6nymlb?O@9abf
z_Y|`q!civhkF9+IMJFIs`I#pUE08$o{$NtkG4oc-YCXMABp}3oB}p0LEZpwofXQO?
zYXO+wCG-eZIHl%guSyG-g&GFd{VlRk`*bM^_iv}8R>X^e+I5>|P#!yaGMY{v{m0vs
z0WP%s&Y8yT+HyGa*&*H`QK*<IL!9-?t;GdrPf#Jlxo&#1xP8r;E#<PCD^>g5INGb7
zBxW9xk(g)9%K3M>ynUHnd&prG2llmH&sHow0OL8#Ul_M!wy~Bs&l_|tY->8q<dtx(
z&*H9Me5OgcG*%W-Z|+e4%ZEIA*}dpD$ot`ZIP5DTpgM)uA<;+}NNjDPgJCTgUrSXd
zP}F@oNlA3FY&bu<ff<O<Kntllve%W%LtLfE%M42bw~EPVlgdr@>G*20isKwL!O$tW
z6RU*l-aQnBX2&OWEs7yZ4o0`YRk8NkyKu^Kn&Bg>S@v-@40ih!)P97kK~(CDyGJl1
zLd>b2j>G2%C8rifQJOP#(H&<Z7noDXeivrjYtW*TP0Gv&yEfIqJTLB28yR5tz@-#!
z`7oNoUBpS8m<7&f=fQkkGKLm4DW%Kp+P#c<ND9ykhk^2Bf=hw<^vPRz6n}u2|0WH9
zefyK!kfV(Gqp#JFF*P3PrnjM02zTOr3&XpHfoAwoBbmD^GbQ6coOmC_-Bkp`dl=R(
z30aWUq>RGm2OK9q$pc6&+q)hGq>zGYfc<@^p62nSORzDh`)?+yObNDWCsk6cGeiHC
z`AT&=>{G|nDYU0Znv5`Nx)bVg!`ZEV+`r;uQ%iqLfzcQmg}SwDbe7ELv*^-n45uR4
z53hUeI5S4YxJSr}k6yWe&Y+*}H<`lhCwd^th3PatDf*(a6<)H6F+`7sdcZZ2w0^qw
zgObsaqyAb(^EFsky{1%=rW261untYW-9Z%T<EZhC=d?AfEiRJh^FkeHUvTbw^{?n4
zVg!g<%;ZDo+my&~yEf6uCl>MvU!r^cHHu{(#bM=gjmwARGVEy3cKza7A3gch8ssL?
zxTwit%&K{-W=^T%Hm#XF#5vIv?NY0HhK#{^9l~cQkUscwDDJs9od!C&yP0uU!q@j;
zMgC~-K$oS*MJY4N{pUIa7K0=W?tnTC94qU}PCUiag4N%$(`Mtea1ElpI8)NW0HSSI
zQAQJ3#YerVRM`$qQ$K$Op{wt&R*H9mX$}L^$c4S?R}f+JYl3+{ocEm24+mkmqaSWu
zR5TNWSFPemhZ5Gk%EbL48tKobkg{^;UbNC&b><1Y6B!N4K$1-pE4!duXou^ZP?*5X
zy?Pcp-mL7dMn&*{NvAJoZCy5<f!X=8q+>n^ePrEL2WuyAS%;M><~<cc;({%<gObjb
z1B5c*8-56<Mws~;DXL1&E3=B@S!ElYfV^;a%@@$_4k#d7N~GzaB#h$bY9G>~QS2%~
zXjuOPRXTzp3=OxN6C6NT&4JK_@g9_>!`9mu<DRY{>Ky0L%u>a3db8jwEVbY~C?Rfj
zy7Ocvv>XTx<8iio5n!z=fI7z+6beGf#5D9gdLDVDR?*+d+R^Mh9XJn4QDSaOF}4hF
zhF<453j#}(4EPJf1@La@SlM#L!JiGhLmPpQh(?p{?vnwqrB3zi<cc4OMTcR2Wa1?S
zi;k?Min0O(`AA%6GxRmDsij?TQ-4IDIUB|Eqj5fj;Q*Yc2Fzn4Z(ZjHVA+}J<nC0l
zFs5QAsOJJ$E8j(JKOL0xn8x6B<-L5>)wR^o(oTMq+olvQx0{`|sFQasixXtij$$R|
z=0G<j1$oZUy3UL3*^lFT#K{)x>OnA5T}euev%gZvVgl{qaO#E;o5_mG{x0*YXIy^@
zT#rXYUAJI6?13qWVx4y1p8?GKMm9YTmwGg7D3Dp?qBJtfoo73QkKwbr12b8Fn)Iyo
z#%lV!Kdn6*PCKz>%%DjpniPo-BC$X|j`6^KMJ?SybFA_mL|&Ndpjan|;@GC{7)&cf
zz#G)NxJtIUeBE8$do$SVjrJML-kd7cqd=o1DQc&t^m1vR52u+h^aJbeUO9*%9jEnj
zV}Ms-LL(e(pP$_SBffp#DrlY6{v{0XKVV^qTi2hGDXISHB4qK7sydsV1q-f(>%m#H
zp>0mi@;0=pA)5~1>(c@Xye~VwL(F?@$;%6S#W(DVK4;BjREE)mR)5Rf+7$F+c{X&%
zOA@>>Zna!miuTY)97F8mn@pb1;5<W%$gC`^Vhw2FEoYN&3j4SZ9|xl!vbHM^lrCTH
z=sq7$kd3=51oOoE=W)%XR{Fqs&1LLNX`#I$%IxOtjl*Dzk2>XP`H{)96!MI-_K0h{
zP8QI$B*oo%&p?i#bK&Fxakknf{m`V8xQaNu>6{o@OTWOAU3|QF9y-!KvdU?N_AuoY
zx4;TvW;t+CFwB=L=*nY)Ho`N^0`p!pPeIgF5^h%?WE^@0OyG+BzL#WXLvZ7(W}w9i
z#YXdXFM9X}X2btXkaf_8JPWGd!oSmLsna<;!4yfvMEOaqJZIFQMNwpN9XE!7&j=)}
zhS9uyNrUioN0Op<UeuGfB6Gt@g~`U6`i0T7-^HL~j6qqLT8agORF?It%4JQ3Rd~fI
z6|VMeI4v8M`n0zaGXd{AtqJcm3%e6!3ub^CV_01oeP)9*yvyKQ=3q-0Db>lS%~;n3
zc=VaoADxq^^IBDO*RQryxzRDUlawKUWT3^f8>)JWy0ra!?-vvd>r^(LkQ(oI={*b7
z@z>@1WgFwPwy<rocA-xBILBHh^v1>BX^=E;wFw^n&26n_+k$?f?*BfDsf>wUU0Atz
zsWRt<da~a5`I;o0!RxhaDwdGeTDy1EcipxO>L9$D=uxM}-D(y$TjU`x$l~r>WZGj#
z9p6I3j#?g#Sl0EZW_k7QF7Zl;y2l)s(Vp-2=0SV^3&$H1tOf)$v6vZu@t)0Rl|@*N
zNqWKUyB^iI_Wq>f-6LDYw@VfElf8maI;tYGh!!L%n(*q&cK4t-<;0D(4og%7iH?j+
zofk_v1LQ_Y_@J#jBBLVX7`@^p(L@x5ho~nSdzI#8c6G{vA?@mkJ$+GgOEBsW^Cuk<
zNFS>_o@-P4vVpSg#{z^kZCl>AyRWJxWd&W{a{)u8&A{M(MmnyiubYz|3nw?Uy*4bm
zR|rx*O1wQSK#1q00RBZ3QlhjM@GxP>GCLvet`;`7bq_hVC-k~7wN!C`Tr%IgGAFUB
zfqv%metYfx+xUGq;$t8Ju|K~qMa(vdWLii&$I6EC6Yb%OWR^2j<7vUT`+YmvF~nu1
zivBN>jY|I=f&t4rcw}J{KE})~-MP{ComE>9PJyVm{UT(c)>&>9Ml)}|<POGqhUOik
zY%fXu942&whJ-DMrJ0W6@eY%A-(&;SKCgo|vbeuJEEpesWC8xXLp||+-^_Vz=TAx%
z%~TuRD%k?oCi2+(-DeEqo6!N7(1sWEye5mCcS33!=s^%Q^QP}>0m7!X^Z2~7maZbX
zAD}FXqfva@kFo7uwk?#2K0HlV_Ma+B?^QyU+i40r^Ts>fA?b{F&=><^7jL;bH`gY<
z;n4ku{lT1f^Gg*IraJ12l;~Xazticdr06rsfO*}bC5;iMB*?;xDdevN^~lCSR=tJ3
zz!-iNr(FzMG{)rKi|vsXVOBbMGrtAWNY3bY@OherghhA$b4${CI0tWQ(izOA17>fc
z^mXJ>U(B-OS;7!@U68hO(itEPG}EMZzbc!^treznPiay#cvi8nmo|aPKg}%0xT(ij
zS^FyjQhZ+X9urWLmn34OH0JU^9k9RKImI2blz~i#abIsBa6;1ErdyJruB1d3?&Cf-
zE}!61#e2GzYJ2`@lg#j3{4IoU8awX<Ec;JXI`3Z018ACpNXu2~eQZ0MZMy;Y8H=WC
z?EoESo4t4<|N3|;9KmE810Nm2N)W}NaTMw!Yb%^5=8&3=rBT)qENOXw_BrRQWT6+Q
zgxC+D-qbw7{!XVXeA`OzJ7%$MTbU+XFa&EvCCz-u+IvefyC%T%xF&buNUxzRV$tKF
z!5*AAqWW?6dLxD_6sC~1D2rNzmZ1QJ4+8~w*cHTBj45Nmi&Y&i#y~jRlN9l)<G}IX
zPhNw5CqA>m#Cx$24i9J<<@=0M4(+AY$RvD6)5o2%1$G_5aJBH+DkUa{!I;G(s8Nw_
z&AJeLe}duZBKYsm@WdV`>84{gWlUc^usA23BAw#VGf)UC@Oc`#l`=+eEv~u#*m=$K
zuG2lBbO?CZ^|1}&DM>=V%5hmWm(E_Wcql&0->SgkVi$|O8H@E$yc8TsYA_a)jJuXQ
z?%Jhcay<h|57gZHpS6J%UpOga|HUa`vuqHnPG@htC8@t}rRh%LEMa%mK<Y(USd(!c
z>h8|f9anvqUlpdng1V8W7o)c-u*rw9>Ah8o?K4h_Gi?RwB>j1@7uJfs>G}3XzjsgP
zpF8aa2wjDIWBZ`k!}z$|E+VvLPbWr*MO$W2B}A|kBFGf*uwtnb|B3y*chKAd_cb_h
z=%St_owCYgr7*{V@%cJFW7kWt!2?VJ?6-!;ne0(O-Bajn;i-o@P(>+cdoMvYGt$vl
z<En$trI<4o!$}X#8a<Tuf)z-1x$a!mc`dk3KPRBygBHhDRfw662T_dEO5DwR4nxRm
zOBDh0Y^vv#6`isH>8|6sMqa|GRsm)}g=EFM{|rVBmf2Y)2>yh<x`;f3mKE$C<~XR{
z;*YUt1AqDS8@SYWG7Zm@5Vn}18kF1Dn2U$-m1J{*DTnz`F*BSrC<<uCln=(|(N6sD
zGcQa(Mpe+9;dVRS)&!d=A_;9g2bgdjlyPq*$Z8ze?UZ#tuIic|$G17x$&RbOP(((n
zu}z{Wl_axFhac(j_w8oHXd(i?S;D<#owC+7P<=Ns!Mjz!`v%%mOp$qEsjyq#V`cRf
z2M+gX7hX6<UWjlp*r)2B-y>^XW9Oh8-6|lX3oCT9P{v~GdMt}H``zVXC)k4m@4mEc
z=%F-Z3*r)b-1w0t=@zUMciCxp#pUf4dYvi~<dP?QEkg5DH4K+=tW4j#&~$di3@TjM
ztMWsV{_y)YSSgoSy_r~3L5YV$+J*hKw<K|2D`mJYoAx+%MLvBVK?dH67L(ESD4;Lx
zPw)Yi5%jGs!iLT$U<rO>y9-M*cOI|`2r=%n2TH554A9mpr_RlcUwM3=;-1@~e#fe)
zOG>M3f>$M(oI;IcLKP5UJOSUG&`#YrlFJ+#xj9_wh3-u~c?5hIN9N^r;X8(<DGW<1
z_wG|PXFJrakUC*zF<vV8KE`6AjjJ%dd;OUavf<NOQNU0OX)`UfJe{;I04F~8dMm9j
zRrVvw^;}GNNGM`{!vTF^;bN5hu_>zRRDV)?qKGWuE(^<<uF^{65X}pF4QR56e;fdJ
z`Qty>=c~fPh1aPsLH0zbZ&7!rVO1pfYh9|Eu?;Wa@Sf`%K))|oKo}D9KlW-$-$yk*
zo4!L(UMI&R3Nc66$qV6t8aGuckL**#PiuwDCE$aMw@hX}mk76eSM4>jmDZIi^V}rE
zxY}Xf2two_5+e{e>fbA;eRLM@IgFvbhS%^KaZ&dLJaKU6T$&0lZHYuhIRqakAXm3$
z1N$#m(tZ~lsuA!T^E%XFVBycdh^GMK{~fp*&$4vjJ)0T2zf3${L<TU46)hQ)%<MG>
zUO7d4U99*%xYi~Kyu!qol$QXc6o%6a7`PrjC=Tx?gbFJQ8u?9&bALQWg<g{BpIERz
z4}>mv4#MxO0wU-nR4Pl0X<?^Kz^>_khy8M&qQZe@B9WIi7{Lak%Z6@QnSYE_xaD}H
zeS>}IoK0!mWj9ZEpA>*6--&tsVm`I>sv>UDsGK$HrAM{$4I$6)Lx%kMv>~(T(A}9k
zQOE@M&p~iQn$cv}eW5JvlCLWRuB$!!uFsu8df<W8K;;*8nAor+Da3Me)%VJztBKFO
zZzm*FlVCsuefRQmS<SntZfU~ob!X9()8V!+;H}L+)tLpPhW#jIq=!Iy?GsdPvGS<R
zWLVu2I^IUSW~SQ5zF}7lJjO!kRLj;(Oz2k%yUY*hnNIaMIcne0ZTl2jRV!fpR!AEq
zpcf$UF_BB`#MbO%6al;BZ&$=wzOiV4Qiau0^MkCO0#c3l`*xd0hW@GcOH*J6_ITsM
zIjqnkOtm+^s#=_2RY824Acd`(%^6Kf7|ph+vV0`r?ahks{0BEtCdHGbV({w5pJvvb
zW_EymOjIg^uM7PNa<jgeEZ+#Iv7ZQ{Gk#}TXZg%N-_KF*Jl7$<ZIy+Xh6fS~L%eC8
z(JU+-p}LHE9ZDOIAH@@&btN{mU1z7$#G$vSwa@&~)o<|ZVr8xH12#=Fqvv|t+41&>
zynSQR0juFeIBmm$Z6*OzMUCNheccZ-dd0iPFK)wmGoX}vTVydZ#U1O$^Q@J9jBh*i
zJ{}?9VK%G8_+M1v>pSVR(Yfp3E#c8Mg5A48mICaJ-Sns0(+73R0erIP@xp30^!ybs
zhk!BFUmcHn1Mdm&eXA^K{MTZzNb?<DlSK5=Pv{#Rxp4+{F}%n+jM<vziRaps!MyRy
zYWzFqHGg<rNKcU6;8WjCcpgQ1*+=$l`Hc<x+cWlrT^AA(<n6F!S**7(!&Rc%$M1eJ
zoPJ<NySv~FdY3EH=_{NcHN0cTmx8B9!|7v0kez3$CZb38rn7MP+RPL@hQqT~6$(PC
z-gQ;7r^#yg@m=<^A$dx42j>4_7f=LN%e&TM)oIR5f7af~8T*uOygX&ExU1f1M3L^-
zAld;L;~pdDm7tWXEmd~9N#@ULS~7l)?lmB-;RWRM_t}<@<2fvr6|9HR1Wsu+i@?<f
z=rBh!ISm1zuR_Ej177<vpT_YK$HU;=L3U3qd`KE}OnqTqG_3@CS~+{tXALbpMxQ6h
ziGzC8D^JX1b4lx6oyIUGU?jgn(h}NRxn>+@k}`15vyOWPuzS9X1Hm{N+Ve9dldGEM
zbFAX{G4@(5aVNs;q3X5eas*yYo^a5OVRY<WZvc$y>Q>ZF4I`bGT+T0f8SjB#Mpev9
zjnRd&BxQfh3O1jvRZb2|<CQJr^RNdEzO&H|Uf>dD0>31Z+yjVyhURr1!?NQmg>Nc4
zP>}00pJ39|qC#~5IM0a(4{CX`$-aHcpvP-aXipd?#b%>lir1mx+u1u8-&n@l5SX_E
zEsAjG+Es`%&?(MxF3wSS9J*>fk^Q%kP=JVZ`p^NOLww7$aH>K88Sv5+JhEwaz2wNB
z%OIPZAcyFSQJ|E9ZG<Mx4F_S(T;M>QUaCY+)sjK^<~Wv(ac!Bx5EO~Gl*_FO^(;t7
z!Li0i&TvSxICb)d859lP!X~QjcS9zw$;oamlg)U;jhdlx?VWMpk8h=L3;cN*Jh-4;
zP#;{)-Y3_fVkTCt!#I+_6AD)G_ti2a=uqh`Kz-CEA8S*(BkUTOL<~Ze8`!3^u&Fly
zzsk~ziuT*i<9dC|j+>0*vI25Ne<f<U7lWwP0r<xm;6-#(JXkfYXmK=cbBXf@CQdUR
zB@To|v)|w3gUa(CLG;38t|{9%A<|k8<l&mxla`{T$-M@&Xc}j2G9D-IK@b;rq)pkm
z+-|zbk2<0_`qKr}iTAp%PA0je$Oro8I_ijo#2zzR9<z>0LR)AA`1(^2B~8wu?PzNc
z5VH%iP7qRB-E$Z;v&_cWk??`5rte`rP!$#~#~`UqhAH$KBb^v;QypqmM>!z$a8y>|
zuRN)3!snCnCsp!xSH1CD<B6^}+QnGMW9ek0PbfOeIPi6T;DPe5ZKtx8SlIn=L=w$^
z$pHgV2j)`@10}~tRA){??Qf!2uAWjUR1fN8Z@3<Y%#S(HV@7^+5=oWGtlI;Rf!Lh4
z5}tO5n-b(a1n2Gl+13QT|0D@NO~X}fXBvzq{e-UogFwl_HZA(m+zvgbVRmRM`ipoh
zZ8CWug0-Ew%x-E(lGSgb9s3H??(H})q9U@7(`Mz<K5mIl<4jkXRMi*4sS{c#2B6xT
zHdbzS80v)gnI%F-YxzeJX*QPK9&gi5c5a$5n{9d&n~p(<^5#x~HG#2dEoYL~eg;51
zCN+<QC8AzTETAaEyP>7&%o44|q9_u3k6)LH=5J!FI)uw5ZxK^%q_aXI!hrhxrjz;f
zz}3Co!Vu4%gI+<`ypHv;MlG`oC%Fj=eVJX-6M7$sTJP4`2FxLia*cX^!>oz0s#GZi
zHcMtr5z6I|U#*5hSn7@Foz3NYqETvt$bM$;_SU(|`k|AeXY*uM(BoVBfFZErzL*ne
z;J1t$&Nhv}rWo2&xqB5X!NM-k2Q$#q?F8BOO#>N<PPHjnz)&S8Jb93@ryJ~H2~Skk
zHt6R<CxlKWF#Q|?apA2I*;<DH_H9W@_XZAwEap4u4p!ZbT!(T1gW*nzRKLe0G83BQ
z4NG0SCloWIk=W8<5=MAn$PPh;d=#CQg{!WiPwblij!a_`dDi(r`cDzjNM{iB`Q=a`
zUJ*s|9Wxzoq-)G^Z=+L;JD%nr+qnrt601VRN|YvG)<|5FPLDaPW&ty|A}st?WXJl{
zwI6`gRVVM^>_HOiz5{O!ZSYk_JWX2SKtVi{hz=!$-%y!o*Q?MC80a!XTNz-*<Lqs;
zjZ}Na<CY$HDR_f3cJ=p+v7u=9P61=vPN7kZXq@BDgWqzs<7KpXuH-i~GY_?jpE-71
z%Xh?U?JL+(-}C|+v$I?~?&mwA+<z4B+3su6XGu>|cCKGW?u%IWa2x|c41XJq!S~lL
zfdvZ=3tOCD-(&!?zzls4KsQ_sM6jI<YKJt<K}^Ala3(x@_rCv8mF(-9NGfL$6rp*D
zYLcw$y!0Hj_PHcwfWz8)F@HoTzL!jc(LDDqn?_1-=}9=#6E!@;eFVd)zQOfuta*UL
zzU#Od*^9@`cp=ptu>enkLV1`Chcln434Mgd4>K{1CMZI5IvsY{u67pfsZr_J!A6da
z`5&UC>w@}fF3YP}ltKN4m{zbhxmA6hMcB}<)r_|WRDAA2hw@m?uz{PO&tZNF8E*+c
zMw9`^N*gWV(1f^j`qr_j#5b+UrsME&o(q@Y#gD}m(fD!bb)$odVudCqxJr&Gv#M@!
z7<6(N3;_)MVG%#?P6YF2yVx_2v4>@@FMvJQ=Xs%}mf|CCcbHi}j`l>X`a+y66d4fl
zC%Rg;BbX?)xW@^IQW_otTW}?a{%~OZ3Ogzx*vWx{y)<qMp4(Vl10aRm<Yi$|^w?7$
zlw?YlgjV$tuxAO_6Ux}51@vw+^OG_^6P;kr9~NZW7=HwWysQzNyj+`)C&|m~-qnt4
z?qz7t!!^}Fd&_04>ze(D<y+RF<%kNk<?_7ZIcNlrm4{e(h}p{xJCauI^XR}&y7&f~
z<$g{x(#s9I4Q<fZkseBM!8WsJrLe;x5CglVfSCU>+D#;fz&sbb_^M-kr8D7VL18;N
z?vE;nQkzcuIDfPce2*QY?bs1LfA96P&?0srUFJwXnjm|l)RkDj4%4fuZ(GF=k!B!N
zwtUVRi*&RU92l4$hFKyv7<LSVqc1&x(;^?$4nwJBwk8Dck%K7Bf%UCiNl@4eK`bMk
zynsa3-8JK~l@nH??YgUh#BK}v$9PH>#En7BdrTsPEGifXiP34{Pq$;sT9$+Sz?EbH
zlw>DT!s@+|7(zT9MB$DtFR?Any4wMxPq>Gmt6*zc)DDfm=Y){o6b7LZK<FT3-M14@
z2&bmgItPNDX4X=L;2;v7IIl*FhZ2q_^4N7R+f^N3s?@-P8D?KtjHkT6TD8T1&}Vqp
z_#r#6C+wvi)@x-!HLSrk4x!({z!nA}mWg^G=x8p?X;Vs;*^R$(1P$eWdIp3&1|5>C
z^%H>UGfsiVe98o>K_lIULRWQC?4^T};8!VJ=1{QIvEv%>8y3lkrO(BtVOf_US<6q0
zSkM>qF(r>itid=>qmLZY#=*Bo!;IcI^j)8cBg>4eHL&i3ownBU6+i5$a0*3`S#Z|;
z8cGOAn}2n%D2B0D{cfp}2R8T)TZBi;&IuyRe>oxC0&4@i|NS;bYCXg4!clMt(Q*v;
z@ewe?y<q&d7%<-9<1rrZ$9;T6WG(H%&#ctX^o6k)nWSW`=MFdH7)w_7uud>uLZ{wO
zMo)XZQ&ncqVjdScCt;#Oea(cHHd2O6$5~f${-Ewq2;45v+{DYj3|Ak$l`}|Fs>I-Z
zhR6A`=dkE-yhV0!b{9ju30BXaO+MH|t7MaF-o%H&R`>!f2vnPldCdtR9EF$24#E?R
zkPUyZmg}JIc;Gg|wPh{aQhX2XTEyV)@t9OW!_{~VAtHR3pC|KS0{{b-FU0RZiB|X;
zS19f0%RuV}2ZzF>aP4j=5Pu<v#yb#?ek(-6`>ilgDm?b?bK!><BizB)i!Blj3-~k{
z4_Bes^Bqd|4#RBV*$(;u)f4Z5wdb0YAuc7`#t+MTtrpVNqe6flYfTr2&uDJDFifF_
zB@wda4dd~)*eQ_F+;(AHLKugzb6IsKURl%!QMAKpTGE*)YZGJ@R9DwK1mc?E47$Sh
zv7pP*RFzd*HMcM>k+|G$taF6Wh1|!FI@du{G3rz<u-UazM`sku8O~3Of~I;$7p3&p
z9tUlN-ROwB!g&4{ys%doYgdf#4!H>n9^%S0p5>Ga(W?cXGYBOVv{a2|u9{&<%(#yS
z;bi!*;ARU_>nxX=WHPjCv%)C?;0n!n5f2jZ07&Oh>NsyEP5hV^RRZkS;KQiRX@CkR
zGg;!tvZxlHLIT<3TI5*Sw}Z3x)C{JXe+6stQlr`ZQVcX9*Cox>%o?zK(}XQGIz&Oy
zc%&S?oZL~;IW?0}z6MGaobkEtE(paj`H`ALVFqW$N!@UqrzZ8n$P5InqlVzi6%4;z
zrA6gc-I10lnO(!pzTAl=phfZuS|qD7y4W=%@atKeL2+t!%}{h^K4BHzuVSliQ@ZP(
zBiTLkpzmqe@~#|g6DQ$~u|rLon40LIU*0gZ!+XuBCg!;$;>9Hb3nPAmB&=+k4Z|iU
zlaypfbdbjpl!3D%MQd!!1A;=G2&(5{dm)(qJ`#}F(YIi})mN;v9Bzz_r@Jw8V1^rG
z&xqAwIuz3!O;kM|BCg>XTs?}Tv(_upFH<F`*q$INcc_>jQ!x=^Z$@-1sq+hP$mQl^
zIENa%BoRT7KIgxW!d!lwPR}_^kUP)Gbs$6)u2O&+6}kX)iUG)sR+<?jEKe<tLFR%M
zsyUk{Q-ywvvu=R<^z}+%*?bJHQL2lxo{Y2ZaAD;b9+F$#k)G(05mj-S$geX><eD@e
zl$SKHv-k-(o*LIDGZbt`W?Tp}`@2pBJgXqgs=czB&7oUL7>C%89_69VJ}+?!EV%7)
z){Z<p4K)Ob$Cxb%vKfsa?*e!+8;I-quJyd!foxOoMTcWk-X*-ua@7$0dAS2WT|^QP
z|3|(%eB;(6rOsj9-I+k?E3CS+LeOr86JyO&?&#lTNDz4Qv{|$mHcc&O-Ba^9&Y{?e
z?4C$B2^}K3`f4CvitTlBDE3vxA<gPqa)%jyRS)&M7DSy68x+VyB5Xz@67HmV;$2L&
zsh@LZD0-fuBmwS7nzaub@kAF7&Eo(dM9P-?47G;(Y}$@h*ZB?$!|Psdf*yql8q5!i
zDPaND-S>9y_Xn|arLf%rcu&q*-Z!<-%}wc;T%%=9vG^xB(@kO-H|1n?(TC}@#{r;u
zj8H`AAOa<xr<6{d*7Yn*lfkma5h%(dkJpavT|3?;yjCe>IJQh;r_~~MFdwl{VP_Z0
z{o|ZQI{qNrF$9`oV}7Bo`yp0MZWSGs8QZ7KFBn(V65bO~vjy2pzKgM=8Douro(e4R
zOElnJj3L}^xeg=!7M{5+;FRDyGkb>QEvWRH{#TK1<^dmXnj%tMHt!HjxFN!>cUZo7
zZlyh-fFbZkQU0iV4RNW;Hl`{p;S``n0}}jT-o-0WWex;s8rxI{Lz4scZPR3S(I-yM
z7Jbj|nU~vP&JDZ=16A$`txgM~dIu5`nN|xZGRa@cy65vRjfCpD-ag4=*-b5|aGqE~
zHuo(>ZHoA-)m-G*GMH^?K@GSA_q^LZ8$o!f(@NXcF)MAxu<AsxC_FL+d2Gm7ygDya
z_^Z@?%%{YL_Nov+AFC_zL(xX$eQ-BSfQsCEN+_Wt3J~sn4VgipCWk<M85ErT(h%wi
zh(K72ekuRupxE*3xGJ3JOEiDgi+(RVD2WNJqNAo`Tgc9<T3IXn+@cuPb>~1kH@kS0
z%6Ozlr*#hIY(8akc6muktiv;iybwMZea)9T)a!m583F$7c5OMFZRzTkKKP~?$0-k@
zI0tWinU*=arTERUUQ;G-mhv)yjw>1ZP=;|g@$0vFDH!8714PWzPXvg<*kKL$g}Q7o
z_uFk1aDjFI3#B_56a@Ux*;ROs$_Bjf^h;7Chi|YjKStXU<P27_zHqM}JaE;#EZj`*
z#7&S@Qbn{kJfOu#wmGt~cy7M5=Q`BvG0ByA!8XC$sVfb<tC5J)PM%DYS{}B8ck$`;
zs6#y^CKHM-RVt^d$dGOA0fheLqzvHIAZMdg?1wR7jnbbS!gS}tEDEPq#O{{!_x}TP
zF~&)#aM(H<rS#hrU-o`CNpWMI{wkiie&@_N4KD*E_kDwHgx_Akh$kB~caWmbvebH?
zl08`KN~o}^&pU7%#aL@br!5_<wd}7)R-kt&*-_3}XRlPzL+ibhl<f{9E%30!4NXTx
ze5TVK<+x^~6F@SD9wD1QfyWAmU(N##8iVLvhv(FD9DH1=<RHE(ZGZz5UFO}){Ry(p
z2>d|egqun=Sm0ktryUHkaL(da8KaO*_*JY!1=!I8g(uQ*O5OvNZNm2c3vCb@N~p**
zR^Z9Ho>@Kt)2fT0ficzn?|_s~5V4}Qfdc`pdcg~xYUAxXSYlHU4R^p+;ND1!i=rW5
zesB~r!^{(}@hS(Hq8Q-D@Pn>Y{6h@xX--lC9d#s{jqpnl@7vFx4k*KnF?FE7D!BZL
zfkXZ#mPM6`x_<SG>@xQ(D4;n&5qgm~uL4CZ@9aC$P40`01+4!Gy~gjX`}JjH9ixY!
zRK>}8<~}t_(jQ@0=qKxO>JKn1Jb~WOzYuP>-YrB|1V60^caL6VO8--6<NwzSZ`EYG
zu=B)cF?e=+)v8VhpFTo+v3DZlu>qOGHh?hkA%0b>#KEUDEbVDv?NetHG}l%HTaG5E
z%FzT(Gh9BvQ_pD#MOP2$M-!}sR}(7Hl`Y}1)N%AakOP>zV}tS2)Rk1{yesQ~hAg0!
zFmmiQ@%6`TXsTew({bO}pBW4dNI%)rmn4`Y;YbiQI;6A1m3(eJqNV%4cnZi{ceoy~
z+~I_95*H!$0fF^sUt`X_#9_!}217O8QM`)+;*jaLQE~eJ>3Ci%A#Y0vnxQ_jhS_UG
z&a-%(coGi#TnhEC{lN_kMr{$ly)Xq`O<r1ThSlB3vd=^AxCw?iEe@sG&zr1W33A|6
zyiqwJ!dCs$=_GuoF(<)ZG<<?RpE_YfT{ff4sy@TjG<hrwZMxAP+PGd(_qU>}=_(Y@
z<3M^0B7M3;ZQ1NT1sphz(>n6{bOu8DH@?1*LS3KzG#u@$*PQT8pTRQaX%NaA?04tx
z9>q7zN!{hzhTo5d%HVZ@(2DZKym;`S)oB-W1&psMWF2Esc1+avf5iKp>NJ38Dw<$%
z%%p5b^Y&AurX~0_#M{Duc=Mipe3xAl`KN$ij;0?X(27}_PRAXla~A`j3gyfPkk`(V
z0F=j)TzjUoJ+)|wJPUZ)5+2S#uM}3y(P(h~Y;+=g^JQknVo)JWa5|-AULj0eQ!60r
z5E0cwBGo}u=`cnM7z)HsOO;WGBXUeKDyR{zYIrTPDFOy@M9iXlug4FUMVPGWqYi=i
zGl3xa6yIM@y0@<SfOoE%e-pRz2cUr%6rtJfA@xE<5c&9JlbiQJ^Z|JeiR4r3#gb2V
zWhHNTvPnqxGBk?Ia}^qp!{Vr>b$|hpL=B#;I^<cL;7mZZY(Op80%hoOUDS_x-x@%#
z96YFAoeD3BmZ!;)q5pqcp2GTH3~1@O(uZW8KCoYF?rdqKW)q6R7m}1_2WGqD{||d#
z{@2vCJzC4F)LNjuwo+xf)K)K|QU|~gAiboPS_Q1ARDr~yii!{gAqFzks?gRdSW#q5
zqZI^%sE83rPPA4*kOXCj5a2iv5{MAZ$jNlxKEdPrzW?BT-lzUT+<Wb{*Ix4;kHa`!
z0KE&$8gckaJ9unKia)ubb5ILT^YT5)P(%EP67T_>s~woqAv>l+*t^PEK&MX+f*UjM
z;PO0-$rA>?!~mi;!Nde}`<c7UTp5V?;Hqc*7Z`g>z$OlM*z4dB6>KB&rVfDYvJ2KZ
zX1#sa&>XN96UPF}CNq=F+^HG*;!=!3wP3>qtdzpLPrHMa|8HK$rNxc~1v${n17LF6
zJ{$me0A>L*r(DUZsl7{Zl9vWTnvWeU{5!v%fl{|KHang#2HuObrw_cl#Muh2(@tsa
zt*M<!aDcA_T)uN30DI>D#f@4uwWA3*5DbRtGoY_2wzx_3;;ADL9@eS-P!N4}Sk?{O
z6`&el!1tZndo+RFMKB3BwJqWUChV?2@0RsBu59wA>cK%?0hqSHVS+LH9mm|`FqnH>
znIeh~mPEnwKiV+D2mA5hKw|S0%`c~_!7MZ$+}bK(BQU^?-+nnU>DVs?w*ti(dhiAv
zdZ`K9^DLawhyStX3GTx|iXO042u|8L^0?!U>BnurLGbpK_>oUFxE@=9UYzRlUzl~1
zz+I+sV8Jw-5j>|5fKQp%I70AK&=4$DXwvQAp(X0VF7(=z8dYIxguT`53J$Nf@NII?
z5})y`adi0*>|B0gGm$FG!SdtIWwrp#RBru$ZF!1~t-)aV8$5FaeD!~@E3uft<N>u;
z0)rWPN&{jAuN?VLse{5X6#!4<HiJA49qt9YrTFFWc1NGTEVkqU#&hbsz>z8{$m80k
zs6B>J%LQ*z*8wlaO+vvf&NzIj@MFh>2Rvg-KMqc`4XxQ|qWX2A)l&^GIvNgLLnlDP
z4QdEXCePrZOo5pT32b+T0p>C0W78-YEM!m|%XX#{j+S5=S`O^&NM2nNy709I3ckf`
zg$oX2Qh=@W_M?Mfj}g35k^v^LU>%y)<7f$ALx;eL!JwHaG-9s-+1S*}E<KK<3LM`x
zfd@L_=fz+<uzZvg<>*t8g?ae^;8tP4ymO0T;BDsOoqmmVN(EYvy$j9gf<SByTyEo!
zI~KHlcL8-^5^8@4K2UV03$Ossr+OX7TKvJ*2}oVU$qI0cN}O4NW=!c%Kc+v}xm_n<
zN|h*ZCK<RhDeESHt1@3Xz6^p|+qlhO%jd|{`6<no2C(9)-esmv`G?vP%s(W9dxa~(
zRHMsg20lRa+JnXiU<$zpyFU5g^b{v!e~(QDZh-Tqma7H-X9E<R@U&mEd>?3nL1sUd
zW~VroG=jl`?Dya*Mhp$uOiqzKcq$e2aO9BSaFv@IxRz7gey^?({TgT1cNnu^z>p6C
zvzQ)vvFYH!Kbv@p+!Tj9lLK;>Jw|grU*G{&uuAZCvH6Y#2CxPd`HqEqU2<U~xDDHd
zR!nJA7baO4?3X+QXlJ+o29lo+oL}{rHi;{-x1n|1Q*^LF1GYbdr}CozYx|R9u{;Oi
zTlbnla>rJQCb<th3=Le}zF?3?3tGWDF@QrL%@#Q3-9Eef(3?OfuC;@`N-%i_#)j?4
zI%dycItt!}wxQ+e^Fh`s0M~P;bOLfDt&u?T*c)zVTIN?bqML9AZNwNv0t}*`2j2_G
zjRFZyEx4bnc4*TLM}h<9qufuxffGq5cEuD=aBesfoCSb+*nx*<BVgmX1l*LJ;*T8T
z4++@JeP9^7$~eD+{ZTxs$sJJ*%tuL|gY!X4)!>j69NvW*r&|7x4N!1O<y8dO<iyX5
zcsVQvqzp0OIU@LA?R}uZAiwbfE*rbC>E)RE0H0C`vW?~w!QiQ4IymYCUIqm-eWIgN
zFdyZDbi*fu2GD{?QSV4M<OD1pf}^|W1C<zEnZ)%2h}XOhYvYcv762}BgI5tacY)U>
zE$ag3$sEV?{>K)m6xG<q3&2nUUnhW>j;#_f9VIOQ(?)GcEU*RecvAC}102L0APQE+
zlwj+SlTlp-B55|>rDKTz%ttvCFgsRaJF<D8;Z#l)=4c2m7Ae6f6aAxsLWkjgOp0k9
zc5Zhj@MBfjBcosgR5Lo2S&uukfDSHJegWjAys-!L2o7{jW!7>>dIJO9I}cd!JySUf
zSP%p5%1%+sa&!u=9JzxXzN@{S*a<2aS6jzs2{s?4gMHu>-FmRm32r_M9IRbq&neKO
z;G+_2z>J4pz6(sdHMpa<I2?WCVheRH5Xo}v1t$`ix3o;Lb{gi8P%s}Y1QS{1AT<NU
zpV83V!iI^0llg_<&IGmL@mkOjy#E0?6iD+2rh3?H6uS(Y=mXYQp1h`%xDxX~q?A6i
z4Oq!&@-E;ge2eTR`Yse(l6G}Wy2Y<=!^#Au7pFEsAEWbtc99*yr5@y~?kp6hR+cq@
zT5t>R^{%2Lb7Vg^9oWXYiG2~~FOYn54!strmqVaCfDT20mGaFe%fQ<ck>K**)Oj#3
z$DZ~9AQ<cnBU%qOX7R`!>4@B5HcE8|NpeQZ3oud;xp`9~y@ZVvd$qs-M%vUY0U7-T
zd~@)BY=MFW(23-9u%>ZtEt)%}L_08flE6N3FnDIf83JK_2j1{8=Izl@l4MJUzJ<e9
zNFMJv73K5hTYxWq;=ud5r@pcUzDD=@V~PL#`G*7laNr*f{KJ8NIPeb#{=ebCyPwop
zE^y++S7+O~XlU>EGwEpIFU_c~J8{;Dz%-M{w0Wy#&@`ALFPCOyL=6Snzi;O^jC@;j
zSxAv>pn_*N&&FrmRmiA(i_&zt=nC9AXp*OyYUx8&*{fv-FR&#yZJF?%r_;y)r~U%_
z#8pcQDNSBCC!7k?G~>pBG>yopE<W%Z3U!3f1JBGnJ0#!N(6T9h;@aThY&y7eDxM6K
zQ4Vx`ylHc~qHgooUbNDyy@|=Sh9obWn$}<nkDqAhV26qA`!3i8zqD+j-wnL+B3!x{
ze7tqAj&HbJwC^W&dqA`OS`EKJo23I7Ing1RVpithb99&%2IOe<>C%OA9)M@ti(crI
zC@A@I=X?|np9X$CK{Lux@G0moZK0_1TW|e1cETWL;h&HG|3(M?8OT2z_=f}kaNr*f
z{KJ8NIPm`x2T-?c)3kud&Bna!Bv(<+r*D7i`Qfyx)$c}q`SzzjZP@eZ=m!xR-whu|
z1Uzc)Uiatm537Ft;MaG5e((D$z8`+*vGBd^WE-hjSNbBX{V4fM7J`WDq-smPhQ(c+
zZroRvJ^TNqq5eb5KOFdn1OIT~9}fJ(f&cG0@PxGch6MdJt?~NVGIUA1;t^?A3>rpD
z9@);dx%Sfs&XwI8FR+J2E-0yee1JRXnqa&IKARhsiIyqX_E~HDj*Hwv_76NxJUhtH
zgk|>86WVePY6;V|1A}`zHcErHBpv6it_h^u4jSP-FQP4;=dRJg6Ik8FHIEslGUH%M
zp~xgpX({VEwmP{@xdx4|2u!-<b@0iO9d7#uyJb*m{cL1yp@%?fFWdJ`^1Z{C8+O~$
z_FZE@o|-7+c)EW0j$JLrvWH2*!Yz4XqP^MXeM=v^w|0{uWU_<H)~K1F@`;#Mcy))#
zBm2qR9rRIVr})KV+u6PyVjI1W-oi4;IWN4O1G?;AvRcUWxxuL~mJ!E=Ce(239nf~D
z!0zNm+~0U0`$c^_+xbNNj>%5D$V5EU=+tsza0i;`I`I5uV(%wG2mfB^UngAuGd)!t
zbLC#AoptZG_|&|m%`b?lc?WXG4|Up!n(L;a<VB=RvF+Ysv1JMIMBjnJ4~ecmH<*S|
zRQo)Wuz%oidw^g->wH4KL*rBkXSWPy&Ix{5kIFnSO|+wbh_`GSOk11%gV=B<PGZ}g
zod`DG)dR~CDfA&4oM?KS(sIPLf5(GA7FhT<IJ#BX2(W)ydcl@8f9_1H36W510<&7%
zv+cU8=M8NUWJ+o6tH?HCbStR~X{0_#_>GgvU+rXZdH<4+iPi@OA<q^cseJnE;)LCa
zK8N0E?|QlX;V=`4E>3HVbVGhvkiC<)eW8rc-^i-`GMkf2cS$%|m5_Hhx$ArQK>K1D
zwbG0n)^X3pkW!V9tWPrDe$}8Z<;aaB#=d6-Fj?v0K33s|hCNnzezBjhKrr2C`6O(3
zAThPHLcU4~k7i!AJQ8P*j2~(~w}jtgoD()Y(d^DtouG(~9Jc{*(zezxy>T$cqLA--
zaL%~9<2t%EsBvQ=pWKD+Qhhe4Hf0GcM$@6|f_5Q6E%J6MtSYC|zI0N`?4k#c)1l>%
z1i7JQNQ2Ml%KFE5K4H%P6Yc0uXUAHai^I8bmJnC#2^VWB6=gQd(s%FRn9|0J)lP-U
zX=eCASfS>`kYu|3q+~6JLu--uJz$hwJpG$@+Th2@_DPIFX{OztWj{GzX{hz4-yl9R
zj<DHjHBFR~3bdnt_1A7yb|ZE3?vaDGk(9}z!)h6HqNio7sj@44uunT0r8bUP!%PEw
zsO*MpAEQikdac}$Oaq_85t}Q#ga1l+zQQ^+R-;YgS@vgk_PO-@mREF0qM(%vUX;gJ
zn92vr;99wkWL;@JD^Qj)YRelj9CRx^HK6RUY|rHVw&6_~qJD8pW5|6EvFL#<q!0}}
zauZ2%mL#Rwk>L6;lqe_+7KbS%>d>+u`s=6`+9(MT)^796DxMn4c>9*H8^WvdH5S@#
zTTVNw@s@huOc-xRPBM{-42$@cT(%;m=_IGc$cd!XD9>NWU39P|BL;e?mf7R;1pNCQ
zGFqGIK~#-V*I;uUVDxjoC>a=oDws(Ns_NiwBTBttpgl%8r-E4ru$55o@5kWt;+`!P
zh7l90Nfz;JdoqWz^Y+MNcDG5<5+h2w-ZO}Do|r{L?9Or9hJFk2!Seltthz`k8{Oz_
zyx_A^tlrXfL(H)-1ruR|37lCLL_Csan0u3XI-ZtFLZM!dey$SLo8V?HIvZviU8q2o
z&~3RXoHk}2*Y)zL8n)d@rimJYh_W3|`n$E|a=OLZFW?@wS)E7rR=hIWMsCPAEQ#YE
zZVztkDRVn_R&F|28_cxWNfw();$CXL6U?@x!kKnm`XX8ir@?603-6jfGIM$ztbc0u
zqIcw%Ot0&^Wk`l^<kp5V8@KsiM1g<YHraZBsB{V2pY=R`&}MdyHW}=x{gr($>0N_9
zLDZhZ=(+y!gHM>!eHqHPrb{?`IV2|~N#n5+t?H;<o09#0!pRx66Kso9VbYMS=t9wj
zp0W#jP@3JW7#rfgzbtb3zG_+JnAgpO(*XTMr6JSK<z8SU3v@#^Yo+2qHH&J!=Uth}
zn3bJaDNoO)joWQTANrG$$)}r4Sq(nH(~UZxo9x(<nI4bfgC}2#ht#i%l{>=(&4+c#
zT=bUR)YX*eoEp62kxn3Zp2_mJSOh-Ap$T2wxVopjWbR`at(8zaPRG!<qUJq=6q*UC
z5nSW2ElWp9)~t!e(wPl>*+lJx9ijaYex3z?IKqFXzIm^)=5QBxU~FOmsaF1qWNlI{
zrnS&V8g%CdsS1$=6>#T?F4|Db^pw{M^wv<ded1M#vk~Q<wR!eidZ9s+&t57&3Je;B
z!Iw;Sh7TULnJY80MWAA=%=z3|wQMNPf5>~j*o9BEWTo_vNt}c|@;iFuptDiT?H&J^
z=0<B74<u8ZjXLgGwP36Igr}RKBk{%!PKzO#$~S5bYz==>JLH{ZYQexkG$N+*i(qS?
z(_1fZEKQNd%IgoIWrS0~XqfMKV~)|Y<?XWJ6VhLfY7+OHn^nbu+ir~tq_o@2@UA8=
zl$ic0jZIu~PBzy3L8RMe+FZ!(LRg706Ak|jXp;2iqVCmAGEJ?-T@XWKn&IZ`Xj9Y!
zcjb8fi-MYvmp-vX$(>us4P}=51OW|RO0^d2_)6M7=+IMU<LuGK(0Z}NnxtXA+AtDE
zO($e2e|477(~`G#@9C$tIB_a<=+iiuMI1V5(V5Gmm!+7<<0;lm4qV3)^=tTx`d1H`
zEh~<Xbg^jRB8L=B<3lB~yCL^gzGSJ$csn@D)}L2Kn`CEypImGsrfPunAufx$V3Z;j
zWQhmEMXyFV$4#XZB@pZ#lwy*P>r!Cql85Pbnwg#bc*BGsS9H}f{<&7M<(g7!l}`ws
zD_Sc*)ClBCBEhDyg(=am0ih=O@<Gv)dB8Qlvgn#NEGW8R;Th9^6Id*2tV3~P(`li>
zGJa7vy5w{WZHquAx7iFkhpc^fN*=KX&ed)#Xm6+%=iS}1vvDA;hlN^eeeeGK)W3EG
zQ}tfW<rU1vr~Y-<o>h;xv@+uBXWxml-ugLl(<fISoqOs}_ZEcoee2Y>uuQqHY~N$&
zOmFB}^c{L4<9p=_Y1#6f{%$|qK{a(Nfj6_Ftu*oe=QMfCBF{&~RXY2)O!wU>YD{22
zC%gHN`pU^1#Aj*qc^hgT>+>H+gA*6~2kl08n6rX-w!ArGecXQZ+|{#Z%1oMF)k%c{
zbZL56cB3tC^K{WBfc>Rd{p1~r>CAzKc1b~@wiXHYzAAm&*JpC?kMG3V>+;>0pAWw6
zNBv?L*~wB5`cYR7BNti8yaF+C*lAv+=36Af*XPjb?N18={-r(ab$Iq_2B)UkV+*_e
zd=FP^y56K&{eA+%^YgJ!*Se&!zie|WXjh~)TG3a`JEeJ1$jy9OfzBzGy{<J_g4`_d
z@zh48vDdY^%|I#$q?L-?9P17O=`%&{F=l<KPqFq68DdD>)*uVW&?<>r4Dz8byiCbm
zi&REH8zp()Ag6rMLlV*%?S+W&mm9x{tY9)*1^1Ef{750g@)0JpEpG;rNg#zNT5_0{
zQlHb>=MnZ_N_|SS&&d#3lD7t#;R`QSwp3dG&d+N@X84i(hKUO6-vwMx?Lz{|Pf>Z4
zxi!~xI@Ug#pLZYe^CJZgJ7sU+geWSHF=eIPVr>^0ikHN!LFV|vVam!%>w|pFDc$n*
z>`kqv2S|}0i8!3CuwE|U&eDp~*_mxp7bKiOTA)xKW5T7}60MF5Q6<tf$UA`l#WGzi
zdt0kpEAoyXy0*1t#QIkO^&{<J+Dz-(wg6Y;){n|ne&WxDofXz+1=P9P!>1mtS<l|w
z>UJNw=qC;x&K<E{D~Nd)*+vkDD&me>UzWyvgPie2e~|FMK{oo5K2^q5SjX}?3zcyf
zt@Xa7Wy-ipYjM8M8J)Dk+Mk~%MFRcAONJwr*8T#jk9J2IJF$)SE^?J14p#){SZ|iX
z`Pz~QHd8`dizp-55fa+BNQW<Jsgk<}QIgr~CA4Vd?|g2lPFiW5=}Y=tIV+aErj=Bt
z3;5G|+?N!n6#QxJ&F7xg1yopX<a5h)@v-deR%t7e;wPRroHSxJ7Ql0~^=a(LHqCoT
zA3?laL46M)5XAlpsw>h+K-afvToDEVO=}bXORGy~)7vyNkaq~^w{031<QPG`Kyf<4
zUQ`N~Xe|-!?<5N@TJ8DNQk`YJ{ma&X`-sht^TlxCi1ly*Cvdn>VZB{I`bgWJZtp4J
zEFPYfW?$FlllqQx99es0Ft1%f`<$DvJ1plWEGcY<y^)Uz=$1C08ORv|XQd)9$68%V
z`d!P<wT_jNinT2f_P$b1m;!zm2_$e9Dd6{!1_JtZoA_g`I?diuK=RhA)9tkdqz|<o
zY4$^H-1m_a1kR@l*cFK)aF!|H8Hh5?K3>2H9u8JoiGC=hmBiI)Dy&ucF%J;adb=&3
z<ExChXm$1#f3AdM5I3^@ZYlb21?fGcmVj<+<9KT2Y4!^RBrmNz-Tu4){cM;%Y#l8i
z&C(Ln?WYT3T#-ZqXTE~uf)u8O6BN=MYdZnm)5e*tZBDoEYvayD;?nH(1!(B7Y1rCW
zK=RRMr`vS}=%>S{)9lPP&K#{J&3?Q9T{vt~S_}Qqj8>mkgumWil21CPqgGmv<#Pg+
z;?)R^Y+om#euHQt><y)8kV5Q++)6jW7p-^mNx$phN~@bMXN3|dK%Os}B|-DGg%S4e
zCFnVAA=!SSR9v7X9kZ4YI0Oa%s5PE|#<roJ+Lm<tw{7UZv<uSg$^tZSIA+8e;D^Sy
zipzB33aiE!jh3KiwQ*$oU@01=K;K17Y4*Ks=p1cjnmw-o^&f_%2r1b6A!Fw5f204E
zpl7t74wEiFJAX#IY?#!>IHiU1(Ur=bZIv^TE`nwaqW48tODfkO@B4D*E4wP0_wr*T
z$oqa=zhP1b@|z!*Ff1KmRuoA8rR6G^BL&jAT4h@Jnzp2wh%`Msxh=^J(Gj?d73oK<
z?gVa_B0a}iNZ`&>kR$9hrP3m8V}xB@>b4pg@I|8}%5RZSUm)A`O6E{L8l=?yY4!3&
z6D7(hgz1a2B=9LMJ;!>tR9dJ-$oAY)U=uTsTJs28l453#^<rs2zLtK>swfROr#%*7
zuPg<&(zEUUwQ?CM0w2W2bQh)T;?kgXZSJlJH{Cvgd2R79^J#%8*UBeQKT{kaHH#HO
zlHz!dRYTy!w80+QxO8ZDoBK?Jlx80)5C;sS50LGC)X-tH4Y90;z6$nv>~-b)P{o>@
zQ1@RyUvIbP7ZRw;6l;!!YTP#iOlxwPO{D>6v^yipO~)6VjYh8dN-e8qxBtm(%vahz
zJ-#y*Vz%lY@3@-KmYWl*3D~@dtK9}bmd_@~dK;4#Y1svLuN3e<&<cHaE)7-8iwMt_
z#C?PO>dT#{oVOlY->Q6o{OU&~43pEK^=)x8kOTsips2}VPL%S0*SZ}I^)X)gK2T9}
zEYycmH~D2-oEt(+gSNEE-bI)MYM8?3eT0|}ecdK|AF&e9t!<Gx%)_PpB5gwiv{eEk
z$auckUzvQ-O7^AxN10s7EX!9aC+_C1w?EAfDAi@Ghf-VJ?<2Xf_EY&LC3CQV@2&+#
zGtZAo8a_V46cun*3~M?NvmgBL;o}PH1wZ(UVNE+S-4FiH@Np&cP65qR`*|AlU0d)B
z<aYwRQc;p)wGrUY6h1SN^#pi@qU0EJv=n%elH5?AU-^$0DdLYZ`$}o$+QnojK_d7D
z+2l(NSH@RZpZiK9XDqt$Ez%2qoL>}Pu1$$3cPrSmuS}alh9V?_)kvnV&naC>EW~P!
zdw^v6p<lJewIN17*mu}pX`ST<FCDHKX66>;y@ym2;H3)UF{=~7=ZyBDFLkk!c#)~h
z=a=gq`uWV#2BtyjZS)z4b9(rEMRN|bqg3;|b}%A*nX<WpY0BrH(G9MLB3oq=WWo<#
zKJ3$mc>BTr!|GwCv_RvfbyG6=1)5pfjC6?JW^zFy)1a6((@Z3b00%29xlCKBrcmn?
zQJ$Bv`2|;dm~}j4jE_>g78E*i2TrgwecIh=es1a0R+Z2E&%KJ!2k(5uSn|ipFBIFB
z{Lu>PZWiP={`jf%osXO^;&m(WI$yk<YZT+$%>QT;zC7@K+nt0jPbuI2^-iq!$lJe$
zy02p{!@)nq!NbpJzi?kS-1y_O)`C1Y2I%<Yx33W_4Og@r4F%mrR^r{wSF{|%N?P6!
zw*<%d3d4B!QYkkdNBB2J?)HO{7#!h&G>oF9^Oco<hQ4t79_zFVrz83e*;{b3yKu5g
zPvIyZ;2cPL!vP{r00BoOd4r0AqtfB15~ipFs(uUy4?m4#KaXQ~#|M1#GaUOx9DK<d
z<Y>MUkgmm{XRT-NY}EmVufn_Yk7Z{#N;cvpH8=sxAPnOtTwU_|*Fs4s!TR?+ty8}#
z;W|nRbsl)hz&V`83cOeD8eGolcqdYv>~n9xXX0e1u6_;v>Mo8!fD7^FVtkb2IQYaj
zIQAqQdoxZ9(+>wP#78wyhSTT&2E%IPPY0id@cvG(XLB4}q2eelvG%Q4$*V8%5@#GE
zGf?4VnVsP&{8G7ii`*uz9|ZYz!V(Tq;Yea$Yc}7Z25}?Sr+6oMe`2~Cr?fuAOQ<pU
z$ln+Q%>e{#YjPLfF%4I!L!tQSX5m9AUyEZH$C1Ks*g5#72p7n!4LDK_E|AIp;zd3<
z(<i@sQ-nhu3c<UMSszXq2J{`8kCzM=kUX@&gsm&^l6pVR5)5W?Gmc1!OUUXN!?^;T
z5@)CNQ>@udl2ZI;EHxP6&u*8ZZ+fNS?S*fwg!Tr(8$;LNMZz~)=7w|1{-)?6&Xxdt
zbd#|-opE?SRsud4>YJiKya;|%6owboyy@qSN8ozosf0bt9hyePtK<Cw$mPnn+Z=-i
zo^xlBb~FMjfL>Eo(1nY;G#o>Iu2eS%?@r<vLuiSv=uJr}rrn{1y3KD&ieKw{+6^3I
zJwDFTd9TS;l;ZT{;`&zVkJk<0bxK^52(;JyX`{aZ55U2RIMXE#-vC@^+F`usnH8a$
z_zi?Zhb8e(%bgE-cT&RKE~QDGst0sGE;NPy(FXpjMb9XwIbrS{#vOhd4@aPhey!h)
z``auI#;w8!YOG{F#CWR>!|8R8Lbm&YNTtZeNm_FDH8Zp<3}~mn@;Jte0w*ft`d8SP
zia38HI3kbd<k$t1qpnNAtirlad*Yve*3rE)G<{FeR8dX-S%(XEhFteFzJ@w=)?voL
zSr8l+@BmP71*=;oeW$<?;M#z7)HxJ)1mK<O7>N91j7&#e0Y)ZPr@-6QV2myRHk9Dd
zIt-^XHgX5JV^kQp0S8aU!L3+61>#^qGG@&f0#A@xIXKtgXm1@5B@h*AEP59BIKm$w
zyfNCr3_z2cg9kPOH5ijG)@`Jt*{XEN5weN^jKM+o-88$ykzu3sz`GxCWCU2VuN@2r
zQVn+S5bI<$-boZbaP}g+mtAkbab`9;ViwllVjMixp&(%3+UGd9;0^XD9DB+e@Isue
z7MxF9NASRiA-6?h`9cBl4WF>I3)7xx9Cu_Tb1fDF8XaK_qhu*wMR%A+<OoxSV{XRG
zwjf!_G~p%L4yHIVu-D3v?SKI?8E~Wq7@NXzj3$R(VZBk?oKF(^AL`7o?k%ZPsN2iX
zKS;`Q=M9a@X&WaPU!Fnvp>Cfz=;Gi*cEVNTB#wo#6|Xyh_uz(0o3S6SBjfG79bN<D
z>>JI^b!Y-0*7^euJ`V?HFT~|`%Fo9KbN=4AXwtAXAIzHbaLF*%w&l%ql)ND>0mt~<
zA*=5QBwrliFBrKBRVf#@3GFb((6qIZ7zfV*hmcX6#g(}5LLGSm#?VoGxKdoy3`Zoz
z#8;2gU+zc>u;G^CsFZI|IXoMN3UQ!fPf#eh?P~wR!MQjw3`elUuph_uj`I6!z0*Fz
z!3!@kBQTLM82HF%_=%TcF;eJ=1Xy=x{KO%Sk~hrl!N)>!Bw{DA6(Y=y0q*i0yaa1v
z8E;A)hLhKhxZou;M?l4Tb;LJ}Mk%g=LPvbVx^)C%%&kP@;K(tYYyoc9*6ldm@%Si*
za4)1aI>0qt%Frq86;4)>DJDR(mhqS*dSIz6q+bku!KIAYy4nN&&#y|ntQpKWV*+&c
zQ3Z&+uYZO4aX-=uIav%4b?l=%he)E*0xfX<7}_;BT2rO<Hki$JwF9sCy4?{!pOquK
zTc(z71GKyLcEF<p+n=lp{_m^e{{<FaCpq_T&(w<^_I`R<M4K^en)58gCRS*%9SB-t
zcI30ZEvt&?3u&Uzq|HkN1L&(`*lB)yZNJl<*lZhYKid~~d^E(zNNebMnbFUE!4KYE
zL+)oipHIo;WJ?bp_L|o3B(T*&jhS9Smp^vB(mnUw{6lDg`Q;YYR?U%%72R={dMeuu
z7c09XyT_ce=PX)&5!zl`?yQV&kFMfxs8LQc_ol^;`OC%_`A~zkz`U>_%li_|rEER5
zVUzTTp>|uD`QZ5Y^6S0%3tr^X)drVy3&!JAy=spyVg~Z2{todU*UEyomfxaQ#q(*m
zLVppb2`KQ7j88ddQbo`--4FKa!7P^3$PAm?K?eduT*-PL3e09~=NJHlO*?F#3m`0t
z8Fsf!wPCz)0U~?RtCk1E=<}xj8u>l7G6A*xCAArJAr2iyd5(sEqalul_ffZ)D*if{
zjlBDo8bcwY_K+T7O~OCDm4$&U-qIt}U^snzpImShZ0ZRH^n-$>TkklKopK5qa}@k{
z>+`9C{}oiU-sd}j_2;)s9E9a9dU@4R_2Kj&wF7p~R^3#A^9=_!xRBQ8==bg0n;fLg
z`;aNbXl8!(Q*E=sY;2F5|9IE8th?B+|2)3osQUA#@g_&rqQ{V<VECsPz^d`WyscNr
zfR}9Ko9V<U0(O5<?SS~<NZC}Am7fec`g?R+0_4~OM*QsdxheA9GDjUWPTMBK3clWC
z7@TVJ)ngHcq@l*_Jw@YZFEFCvkc}+<)M#cICmc-)+qiy)GZ>ftyA7Vg`jK&J<lk*W
zrwTrHo#NxRZTqHZo#{M9>&-9frbct@$W*^uSKf3Ke3nB7npuT0C5Jr4lwB(?JF1T6
z+?guaJNbhH+s`hMQ>++xSv5tQ=ShcB_}qVbX{x~M9#BlctQY(B1?Fn(*USBDr$}*Y
znIdI!e}bc+)vaX;_N@aESiyyA^Dk2@h$!vGSfHwAW7-Q8>BCB_-{6XBPE#xw(pej!
zX*J}pOXrRmT)y`Td3Jpr(Dkto{#BU^bbC|o?<?nZt39rS{P}kg4=8^R?{mp}2J`gG
zu1gPOUINyUap{-z2w)90<mgfl2a2p`!c>v+oo_PU{Z&T>;;ANom+--uVLZ<3_h)|r
z<l?c;kGL~{TGY6Hci_8AK$kNv{d#-~a#O;;9FR@V9yuUCm|b`bDEY?RYd3}Q8pgEs
zUXQj%IGXG}?hm>J$P*IgIGT(-t9CTWcaIbF$84;|?2b%byUH>umZHEdJ>kT2YAj~4
z?Yr|b?DEk|(%x^f#RfCQWz`aw8&ouYkjA=VYjc*<n8O8GI=1Y{cwE?Hb{9HoJL@dh
z9J*r50d@2%wlrrsKl6$$#91DYe#N#B{7JiF^9FSXuGs8DW9$Rtw%++2K?Ymzba_C^
z6&nP~5@$6T?%95?b2U`ha_U?R=7336wC!Z7D5*tXA7XHBGL(B&*6<fHzUWrV#OAi&
zb0b7-+k%5*RCRB5=5NsXSk7nN>fo0(A%;l6DY&Pn%<R@|DED|=TV{@N{3s+El;DRK
zc#U~X{Jz1Az;G2B(ybPAor#9Ritb#~i^9nh(KesKEGe5FlQD(@piz!E7LB_k<HK$t
zhB?3b8Oj0e^s#!3>0xk{bg0(!euedXEO$9TB&KGJ>5gXEw6+_uoH)Tyy5%x7mdRVk
zr=ny2G}vp*(8Y($MiJ=1Yqw$J^>(15a_V<c<+UG-HHi7=vwrjh)=0m+q}usr16g##
zc6@Bw#2p@`*}5ulvYrjJb7|ux?<Ya;8q5m5_pKmTL%-3#+WAV}u`HW;quW;bTFey&
z+_*HI91ajU(|+CCqM1hqjH>Yx!~k18^7-9M(YE1r{K0TgH5`lau$nlz92luB=9Fos
zE8vRK_7h+rtH$<|bSBWjstGs%^k=L!wu>&s^GR>H_plp)&e_Zg8wH@Y_ptf047I^a
zb9_gL!6QPHiBddeRq!WchIT6J<9;QOoIJ_UlO*`l+&Ws5WwX}s|C3!~;@7U@qc%=M
zWw<a&tdFF`@?n%@E(XjC>#cIhM7=o>8xbR*z;3!flqJ>W(!>=Mu@z=SiP)%VFnSz(
zBxgYaRBo%_V9k&YDX{_7KaX39mfyZlrSClw2HoZIsgQfNI_$`Cj;h<<m6!L*s+MZ(
zkK#3RtToUx)|D37OI?_W-!p8AXIWh;sXm_mBg`m~eR4USCJJA<al?^2=xB@SklkQ`
z?S6*uYWtMl%MZ3(bslf-I!rt%SKK-fYwo`TuWH^|SJkn~C5YY=Uf7bvy_%4!IpXRW
zoLMNj-Zm*Ky5q6WRT#D;NSiUTRaUIkb)@%33Q#J+K)6h<NPtENg4-j%nM%`;V&x~!
zCG%2A)h8ELgf9?Kl%_xfLG52*g-Vobr<a_j<vGP<l|A=-KgjvIt)N{NnoE4_DchPp
zcA=uXM7htoguG8$b)qz5EPZctRHL;cz3xcI)Autyj~naHudZLql4y$en+-EpLa|~V
z;6k@lS{Wg-Tkd0j*hq~sHaIuS=GJ8Xwoi)vxNP3r_X`iOy(jJg+qYXSxH49=i>B$#
zp8m9ke^lh(tyWT5J?cWx*xnNd4FMG=o*VP0h#vvFsE(r=vSNTU;uy~G-RM9JkK;1O
zsBS=;(0!Hm??DY3SY{5!6tqs=&3)0EJ+!~MDi%$>B$J}LGIK0&s1Q}v%^9dQSq~2m
zRgnOGIqU^28Y5a%AItR|GpNyv(Y8L!$eM`;YKA(DrV8t<5(AIQ<wLVgbU;2Ubf5~|
z_ATp>)N@ouG{gaN&3W{(u4Bs6hH=yBXqI^$pKD)UW`4k<pf>B}SnlUwWN1QVIPFmQ
zW<FXMOZ|5!w}y+ZDKr0sfrtjGOu+qHY_+kRm_y-lsKuOJ34syCpxiR^GaiK_lKBbF
z0>jbqs<+)=$0zwLBpN^y8?rUy&+`|7nb>|E^JX``WL~o~YeRnT>;wa_kA3ssJAfNV
zwcCbG<GpH*c$MLBt20Jz&#X&<;IFOP>FMQ<%VT=E0dX;Zgnu+<(D7Zrs^2C69VTvw
z$qxcyLsOac_Vqo$WpOh8eWnA80X0q+_bt5$Mc53P-;H-Sr2sO;A)T#89))BZoAF=)
zFn_h;d`Nz)D<}bvnSa`R6pSs-`Pt*zc)oOwd(W)=K|q!{nLcL0YBt4OF#+Fz#5rGE
z`3LX`)BLO5ez*sGf+^l>_p?9N@!{}lrzlS#8({f|JA54qH0$N7!7Q6$_jg{qpXx#U
z)6^F~CyC=Vh^2aDAON^psghs><%X?+;H{5KGL&6SFgQY3jZ!H)s1D<s?$O6&7}q`J
zRh+9>%aGbwaUci?s6N_ebhueW=2c}sv~+M_hw+nmF;do3y#0x-*laVIfQKR3tuF(C
zNbdNEDkvN#a)2gEibhAH$7{pw_qzBb65~c}c1@o2sXn_LMzt7d3B0z-tpoVmY+kH~
zxMMFGlHP0Y-9;jxREzX6yw~STzOB{7zl<HUw9@9Tmoy}sI(|3i+MRM08s^@>WgPFm
zg9(4#K3PJDUHVejp(#v|*^qKu^2yO|Vs_)lv80LA?0_?`5Zzg`WidR~?MzG^-Z`k2
z9U5r4ebU3cS8aeb#m(6^4>+%=JIq!tB`z83Cbo#mwvDxjyk6Waia&Tm+MPGkUN#{$
zdET5HiDorOj78=HCcehblsX%GET@jJG!e?gp0u%+FvzczZPS)@R%yOa7#}hRCITxH
z(2?iH!n+_2u8f<s1&Uy!VnU%Nd|_skWm#SdFHn>>pT}IU7_et${@i#qRvbJKJ|+-L
z4~`x2au<r+$BxPf6UMFZ%vbUW1W;f~E;HBF9+pSy4%~4jP8?F+?77>W7oT`gz<F-D
z4UbWv@@WNXqTx0q*jn!=uS9NI^5|?%&!~*%6MS$?kip@EaSO{IR=H&kJiZOl&!;E6
z0F>WNMd#!#tgwqdr;e9%q=%IOnr=baHCstuGwHD@>pF?<WeCwI-7*uN#)FV!bFZ<{
z<+(H;Gz4CAfJ3*K2BsxEs)F6?IJW8R1C@5ApW$g(%SQJ3!2Ny;gpvb;mcJ}W6gT+6
z!`fhoi}HF4EV6qV!{la@*5rA}>JNB9$sArAOIk9iGD@W@44RJ*Mc!l@x=>bSI7cv~
zyE~inqT3zVpA>C~<xmAf^|qS4xo0POvyH$H^(7(e_?+_Z$4><<>Q-~<8>yF<e+qsi
zZKVEIza9W{n1;K-{=h-#gpDDF9*0A98Xg1AMp)bbbm9oGA!d))Eimhm+6_HFKFb0%
z$SR^C59APDl3(wJ7)}6FXVnCJ-6ym#wz4>)^ZifL+Cj$09Xr1221rSjMW9&=7P9Yz
z7{-AEW$X$3V<nhWkkEzIUT@O@$Y>l@cs2c!jKk@1Qq^JJcOKCY2Hb=4*eb(Y%^(kw
zis$BsUXSN%@?tj-7qPL{&__LQJ^#+(OODSt2~r3{P3EDnpl-EX(Bwn_(;5vwc7xOJ
zTu?I_XGt&b0?ynv^1K&})tJ~3OaY<d1vSx2W~&C-9y-QM&;tizuR-ofbAYXT_f%0q
z+T6}LSjkQYY&LBi4<Ib<Ru_^qZXmDi;u~{?wYJGEn;edhy)<?59ePSgIw$$n3BK)7
zK4kB0q+iZ3<rkUbVXo4hP706bsC$)sw5_usCLt*&J2*-`So46RvHOX)y>Oe5lWfhl
zu+*fAj63P}m$&}D9?ed*9?7dTG{(m;_p3^6weX;}&^foFtNDjkJ(aaoVWTrOJoh9G
z?SyDsRc`KD8EiIO2p}z6QLA$$ja`lE>NmG^<)wr~a@04eHpA5xrDy*Zh1|z{@9)j#
zczUY!DQ$u~rksGD220nf1D*2@ZQs5{lkfw)Ag7{T_cEBv(Z14aV)GV>MSDWT*=HFt
z6J;$rl+}Z9=PqM$lF^Gn*?YIQ#Ub5SV_c%pa{Afhoa=kG_`IMhT4r@2wpVRy*r7`k
zhn#7Xx4OuWkPeRQW~C{{pb@W_C~{94r@1inL}_V}w#KIfsZ6S{o+Vv=)%D9B*1_7<
zBvxo`{D4(epH!hXbP%|fzT=}XEKjy8b02iVa~al7s!NnQAdh8^ORCTj6gj8aVN1(~
zW=d1de^vN#b|Y)p&73WTOw+yquwQ+*JZvH_sRC}P3+BFhROCn9|FoG}e6E)!F<ve7
ziBaF7vrP*3u8>#1U!>0Y-5l3A@^f6ygU4|3_<}qk;Aa3+eJ0KrqfCE!TxVr;={51j
z&<Uxfva5t9X|zAG3+<gPcCF04%W(5W&k@vqXp6Z1)qRdnvAI%BGWRTxWj&BeSO&mN
z7mluzBv~te-nrn$r1I|qY9^{h=N5zG%{sIt>2f&AxoSf=^87I*zRM~-Kd6LH=;n<3
z6&{v38y5WAlrc6g`f0%ff<a^ZqzfEc6(QNj&yJRJo-<pv!tD>eXZau@u*IM);L^&u
zd*SxztTK%##J`l&Wy-St0V3D4vVhDn(%vYBy?^=s{qdFIk4<dh@=$bdv1XJ>Yxj&r
zht5hw37~@p<ZF{PoAM<^UWI<XPh5dqGZrW(WysLI+mQRP1O!Z%-|C5mkMHOzE09u&
zDf45{w(d3*`~!5}23~pe3GRq<F^U#&$AKequJ)$xdI7Qbmd03~7XTN{e6kg;Av`v1
z&x8cmXk&0Z;WJ_Q?&6sEo7sqmvU$^97ppCh!yn!X$M=Q5_ZR4w!Z%XxI`K&*BeTR|
zJ1qw2@ML4O?f4)ZBZXrc!~>H?)W6a$iXJDOe$_Kx^D2A1cTs=kcVQ%2F>21fX^qmI
zhSeYj1h>x59Fu}<&HZJ0v`7@E7zVii(&TpWQG4oWw`_4gpHtHguOJz9Ah5l^VNhPh
ze<Wh9khFC4i#W7WF>`)`*bKKMmYJh#{WSbQHh)MHKWG757yz8n-!vLa_Kd+bJ&=2=
z$?b$rG=AZ$_l2Yl{5VUzt5NioxG2rCyPOnWpKU$?69f0P8ItWoeR)S^c?M;nX0%)2
z$`_AGr8Q2iFFv98^l(XW^eY$0BD=1~<AWW*J6o#D-+D2JLh7NB)Cb41fiu(B5PxQ2
zX;RO$-A0h)s+-4L%C9~(Y_=hhhUtdGz=PX+rtNjbW>vM*&8`3hiKD&r`jEoy0dDn5
z=zNgL@aO)AxTITMNgez#=6yaqRw&N;Y5#gGQwG!FZjhyN>_ZKXOh<RR{*GD<TxyHB
zafQ%cBMz^&htCJIPixI{IX2~2Q(5ec*h8#1ejGP|8Q!xXCQf9prg8TUjiVVpiK@TT
zHWX2k_92yN%!hCj<Ak_iUYA-(<zLN$C-r6?NBdz{!z1+>5&E$Bzz-HfS9QE(rLXAZ
z?vC`X-)22h*Y{BE?Z2IVB<*<FN!&FSgNCD5E0c=z&71mY4~rrzptQQhyUOz^$_JLa
z$CA`EaWqj?UoQ|$_L}O#S}qyYbti&KFOWn~UzQY>E)BP3o5Cu69_<xJi&9QBMqcbn
z9Jy7boKv&}cJ-$%l@1%FiRq6+YxSC$;v2of(_P4A`nXXS{cWM{)$+6DG-e3O@xDID
z1eE>#j)s#4ZEB+yO^T5D0;<?0KE*y`)F2_Np-^;EpOv1wZ6=hRHiiy$Ee}}cXS1B?
zN@8gK?4}zY6pH9+O`gwZFLqxOP`$;CdiCM<+JlWPlBQP6{6BSx6Yh~>TH2OE;fuda
z4UY`wAtNy$oRDZw?uE9$`fglSuYA$`_b~X#3{02(%T`6J@e$Lj?vE;!ENSG~y%*KG
zhrbjq2@FpZ6MY8L`(BM|7o|roWv(|jin!vm$)iR!6nOR%zzgdsx5SX`KWr&%G+aM3
zzmnU$4{h93p1(xd8Fr69z`db9niLbili4I}rZl%!j|#fYa<H(Pv3`uY=Wt`3M-RJ<
z{#Qp$!z0BOTZJNgC810@yAT!|FX?r0<@?8S=l?l=?dj$&{_<sIR7>_?ydSK4SR(V{
z+C_$DyYbZOJ<UVrTXWS>-^!ofY%EWtr8NoD#rh({f{W&R$<g17No5*;(wwWeClA_!
z?DtbV)&fAu8iD)@$#9}?-{Y?@tY<+pDSe05hoEbQUj044_Fz^rI@uJp;7{h?Yur<V
z2#Jsd&3rX7>(MBQU~MT8JZc(P-OgtIFor&n87-5;2eV-6R&CIQM}{r7x<bKdOd;oQ
zzdHi2Gj(v0ntvma(`22MN@O?B7`1v2J=czZU12WYv8129K4efCbdzS;WH$W`-U0u@
zuU5%j#>l-tYEB{E$swMMskGb)TkzZ5qG<X>u!IsAUTX?i{zK)AJzg1q4P9ud<Z^eM
zb^ki=Tba&Slj*e_oNVv?{d9|7z@f#&h}Et7>|(`VAJfNaw3ZCxP{xKPp%gXRngx#(
zS%;7XbWM!x`Oh^$gF7}fC2*QwUJU#CVtZp}16>oi%)n)L&&)m%V{3*dM@5kr$6x&w
zFwvL2-l9p()r^PvDrQ0EUs&@i?L4mdAoo?3-AYM%L0o3DygcDO$Un10rsG35shqZe
zQ1q{>ryq?5gzDgXC)di9FBm>6_eV4_gT2t(2j+Dlc{eA2I&fh<TlFdICF3rUZK@9s
zOx@7$nr;&7{;(HFgNEas^VW)UH_z_3=C2;j5}^E)p2aN(%TKv;NCMrh!U;vlJo`Ky
zC#D9v9S>$T*uNhI)#8vJCR#T&)SV@voR}E-w02rHrz_9R>Ite}8iU){)MrA=cm7)R
z7g~|raB{cCN{X+^Sf8D1_uW%gA2K2l?AqNhF?W5(^n^0Ir5zEA^X(RYL`;i9S(^MY
z)=%IwYcXvoi)_|dv>eV7o5==Xx^=Ll|F_<{<<Uh-42NJnZDJ+obs6^O7U#d5hRely
zC`k@W!F{;F6^{FGtmOVY1IqWaFE0GoYv|pN;JsnLpZz?(C&|*a_(rT!heG8y4rgUA
zCc|r8SUV|}2>4eQ7K>4~L|@z88JtL|bYuAk>!Y}`IT7$e7uNFOjC-Aey=3?|Mwy?U
z^#_kuA(VKUHzlh|2>kk^P>+Xs*M0S69_>U9v{@Gtud-|<!{FXln7(76GdP=~e3z9R
zr0+N-Baq?N9EhL``AlEi(;563Km8cg;9(wVQxEVoWEWPtGNZgx5KV?d8D+tG)=eI5
zNC?f-*UCFhCxsGsbNHjqU@8TkWA05>WhYUTZmjwh`VOw_oe0?M!kRgpal6y>Fb8@^
zXRhlM{Fe+jYn#@o<X3n!o)9AHQ@T4%6T&5)=Acwn{7U}uqfpdb^X&V{9F_b!k5A%j
zX0Ut!-WZCz3#%khzqnXt0^{*8V;49g;1L(rafN}!qaDwIOp1(Gor0ZY_!%SdQ+-NL
zr{F6};rlEfn#yAmwvgdo7nVk<UeBYI<Ukj-O$Sx-8$8;maLFw5jbv5)e13ZlH11(O
z+o4Y5(Qf2G3T+cpW%-H>YZ+d1&6&GZ9>ub4JX%W*w2k5AZT>n??;=&d$D>u|Kp$&E
zKGmN{Re79}eN2WWE-e3%jEkMY6+GHSVV$QrbB`*Xz^^$9C3=`Q-B(xhXiYiLMxFUE
z5Ca)@);4WX$!mGE24S7IIg_S}5922vg~H~Vdt24cWVqag<?}#Y%%kyhpg>*7GX3~q
zXYew9@-c`7K-$#(JQ|z>HR#N|P63q+=W3gxRdO+pRwiVx)OS4WG(8p8d6->ytKx(C
zJ~LQ5Jj~(0%M20lVHcKKkzwl$uH(^cLiP&17m&n5Vd@8F*Ho4K-+Yf8h&<OE^g#VJ
zPt%zLozONNP!WMTJr}0_%j`;1$v@)*MiM;CK^^Lr2zUX&dsfyF0e=YOq{z^9nyPZ3
z4qekK74aGnk1%zP`Q%=ed>KFf81%}86|XQn=V??qP@XbF-AP{y#KRbzulJI73Zf_i
z7gkH4KBYu99s%bAsc4&6Dk8+AS%mCQ^<|x%reA~;ADE-}spP(VVh(f~i06U&QYSr)
z3||sXd}NN^qmujaFOcC%5A)Z`3}q)Bn2ChpHOm~GtnxT5ON@X=U0BV-8M4mcI5J$v
z7+kC`d)O(6r_kM4NkRJYa#>geyxE17J)9x!q-O#lFb4hgWnG<uIEu-Yr34^lGFAl4
zaA8@7GvH1-n+!vY!2o??ClCU~<i>IbAY7SK1U%rvavsjur?P+{J{Ed^VqUUWMf`&Q
zJOaM!!g{XFTBmCMlc)JZ=<R7<lA<E6<mVoR+UJ^G@2hz{jTXp2m-W4>q_dO$J;lw9
z6$ivrE{n;5`~ka*Wb-26P#0F@upySGsm_676o%GLdIlLj#RyxdXWigwE(uS%v1BXs
zC#33!JWYQNbU~N3R@Gd`)0`7}dzkBJDq;}7<rw5K*L<>F{fei#mjgZ5Wksl(t9Y8D
z!tzhdBY>!-`~}A#X`sHWKz5o8cet<?C=CUjCL{-n)tW~;gRk;5U5v0mJqwWBEi9jH
zPTiv-F6LL}LIFYgvU1t-2)NdTl{9R4&`FOc!$piRfBoQ4Cw&t|>dMmWRuPGO<xz+@
z*DSfOZschsIZ(PTi=t|-;c0}zavw9)4LD2*c$Y;@RW<*c@16rSdzhCzP$xyeadXY#
zr)9?@;4l}KyTb6SlTIVUcNwD3^ig|N&7biLb0B1{c}a(QCr<<AK<(NrhN@W%I4g{P
zm*uuXAJwY<n5Vf77^=<Msj>h)Il~Yw)Q5o{H&XbnENZf<IfT!3VYva<7sQtxg(Byg
z>+Y)?cpBi-l66^$suGB&X%bR=%tL*hbQXp7E=w1zAIz6|km0voSivKPicSG=y-^HX
zf+`!Rn^K#Vu8P0J(~Jn&;d)UsPora$ePW)Sswz1r3pfg`nrnvgW$_VI4jEp|ux(eB
z0Ja`yhywMZN}i@yI5gWlJ4MyJm@mkMOhNj=av3oK-tNMp4;v(%CNM~%E-OwIFXU<J
zgls?kV&DQU3fTnx;=WFkLOA4Q9s&wWr-=V$KD$?C`IZ7a>~etSv<x_-M=mVWNXB|q
zJn&uXDVmwAc2H9&vykC5P@^;)?i4V|uoHvzh2AAamHh>u>cYAM=q;AzM!+v~pj@rF
zp;Hh+hGkmwew7F4dOrm?9g;sqF3YCA4`Sa-_`2!8&L=&Z+pl@l*5B>?p=GfkK}^pZ
zZOd5Iz(IdJjHYT9^s(D_@D5)=8!XV;nzWby^F5wPw9vkHb4L5pvghs}ffONq_e*2=
z<oNS7C-;dOZLhM$k*@>nTa#`o{z-Z8wT-nk3MrZ`cHi+rD>t(5Mz`FO;ukM5Sn!6p
zMVmL5Zpo&Y9|!G7y1A{MSO|@=c1UhM`Pqg2MQUS_w-~7_u^-YGno)z4S8|yMza&I&
zVVmN<4tUx8&`oM6E8!R}<O)1imL1;l4jXYR^xCgxEH4w?OLU_!Ul_&Bin18k+Ik`H
zY_2U?01I!*o#MuIZGG;n7r#Wha}H{I+U;r5%`&@<r`c>)lk2`$m7%s|S9~lOnP50)
zH|k!YNft|^PYNGg+D<8pub@R)uG-PSyJE$9{Qbo!b9`;&qia9ZnD=p-?q-fL?XavX
zXdR8eQx$)e$A6GaRmE5F_yPQ`W6&87b49ya&!e5mfkt&9WL10vkCr2pd}7|US5>l<
zzx)^ktfZqrRz!yPf}}&4akf*CMTQqK$^!MZ4?BaCDM>R~KKoQ9i~04rP#{P;q-swd
z?FTaK$tYXy$S9I1z^8$XB4;?GuG7TJff}_TbX7?sk2WEc%rf`xQI#y<>vAAqVjU$i
z`cWtYg!fZ2BmxGuHqx#plHn{6yC0~nAW{K))-`>pvg`)d#Yp@@p8`DYRto&FIcOiS
zE{gkmEDw++6v*hg(B`@3p)%PqGJFrDA<B$Xor2Y5_*2HX8>=KpZ%`V-c$ysm?|t=o
z9<4qHTBS1&bqW|{I9u2By-E%WuL_|6eF`ueNVvq?d}FUFK9s-aD3lkhUwlgTIT^m}
z!g4~hL8j8g)7Th^3-u`=LTsQEy0YX!`o(3koe^-R3#)xNqpwrIBE#1hiA(e>fVWY&
z#0SeL;=}o5GJMj7Mb?EZ(x2F?@;EDd>c}XbG7^3D9lgMmD3M2@hc2vn+NSL)Ibhjc
zVckdOdn@#{1+p__cnQcglo@9_1<7Q1AtNzRKMvaLrI0?r5(&$fl(?C!Yyf*!*5gPd
zYLpo#Knx>;r83)ARf&kFIl@R>j%5^rU6jZiETi~(B%`)d0G#L+Mj}x^F6$IzQb-?}
zjR4&`ifjhU8K65YbIXOUg1khc1|z?f17+yUr?5mqGmnuNfF%+F3Pt9|N(Zo9SzZow
z1VpQ1nM(xh>%#IF&bZS_2ja_N4E{&&1?c^b670&#4c4cW%Ay>JM9_V81yA#H4iu#`
zUv(rBd5VnsPC8JkU5vp{y%)&s7!<*~tn?s#$|)Jhm?v|f#k!`ADq<6lRwHBskgiVC
zD`Bda`DBVp9>SL&g`Uqf-?*;^F%iI~=$aB$L>`aUEKK!rBog6#?z^l7AcTF&Cmw}P
zdzdp@)hBthZ-96hULRu_g~u6LSp=3*WVWeQj*LPjobbdl3ORwl!;w+!&^E165ijs)
zg~ACC%s_q;$ZtLd)r0(`T|L3myvTtDbxn~fVkM83C!CmL9swEAa(?zPDBZ(sY*P<`
zc$Wi-bWJfTBFNyl!U+)OcB|yUe9JLtCID$y+a1ZHO_v2s0Av)?7+wGbC{BsY3B)~+
zYm8(hU>OB1f#UWat1w9KRUkV;c4Q$+Lw+ZHGa2?}gsspgg7CYW;x>~t3*;K@>Zd%-
zuQ|{io%wzz9c0i8bXi}inyY~fgzSa-#6chfq4ykfxE#oUlJ_2#QFxt^fph_66t5Uz
zA^MK4PWnMg-VBy3Q15kGwu1~CKn^!zxY<bu8h(Hg7Oo$B+(~CrV%}v1gG3@<HVXv8
zx#s8x>eV0+f*ekpm8P<Q*m9o{_PIW4pNjZ7p9{k8Zk6RACB}uN1BpbjtSbUu?82&4
z81$W{yE#yoF6(PmGYG}M3Cri0Q<GK1<@}^$kle#8X;b&{G$(VQdR<nus=1!0DHWD`
zm?uE)70g#2g8~2zg)$u(E(EYr^*cO`7swxm4S#{iNQRFwY->SeB*RJCtnXCKAnKkM
zQasHQAnLB<7aoOHyRZs}4UanMAm6^o5G~RV{_pnAJ*tVb-}mitS85g0y?t9-5mM@@
zyu4PiwTj`Aw9>b<UZCZwqQt5d0X51khFqprg|=3M6-DKeT7?J*Q4x?^Mx+XY5EVjz
zKt_caNeF?2BupkVv!6-dz1MrzI_s>p*E)Zkvlsj`!!t9_JoBCBHkr@wJ77fJ67NT&
zW)$0tRC8Q2iaETd_osxQbU!!7gIf(I5+BQAkIS>c{Gr{Tyktst7sl$WplHvs<cb&8
zi;wJ}wyowht(giQc*NZwFPkfDVn6%@^xLXzISM9g3WNJ4&XFv+hdFcC%ed=cveu~i
zi$kM)#Epz+Ep(KCCb})2GhaA&_0&*-N|7z+f;kIQ29&<*E?i)79Dh^`&alv&x#6XO
z^RnRs8GD}4l=u?c8P5TaQDC6Is8X*(_#Tb}9R?%l{j%h0OJ?XxKDbIxUel_nPB05i
zh&R0<JOSo6XH|a3<sX2dKUd|KE&ss7Aumuhgdi9Yxyul{4vBCVvL6_N!4p=NoNvwq
zk2Ro4YZ}Aepr#a?+6~~Dtu9NBnKPl6abN;PG&0|G>;YZ)doo&<{1TXNy|9*F;%p8<
zVl9rZUwUXB*}sm5-*&`+3b8ewK3}+Gk;ALYu;h{{;a)P9X*xlT=tQ}r{JW>q&>42=
zDN?0DQg^VsjwmYs*^A~f*CbatVoe^be+;d6U^bNgVdaC0BPN?i@b0soy~5x3Hr;%b
zvyd-d6y<9PxD@T_ciEB(pRYTts_o7H<T`Ta`~P$q+HF~$wX|C_nXzb92?WpLi@VJC
zH+AK4oVguCO`>~I;1~Sc$3SquX2mSattQnj`0=icp<Sj!4ZrNaX1c9CXNV0g@K}rB
zakE;Z#)=>$stc+Y5XN+e)6%44?a9-(eKb5@4X3`ma%A{@_X5R8?;T=MH-U{g197H~
zY>~;a45u(GPnDF#naVL#Znm^?rW~ECCQ^fIRY$7pMI6WT>ifnUiWQjWCkIYG<Lp$Y
ztq7G1@@r=A8Tx{j$R=#oe8zTIgO1k#!xv)6^Kjphj(Z&|4+a>!3qO)*ZXJ+yX}?q_
z+lwLlL-iqk=XuqIfCsm>!?wnkPwi~Z_|0lO5L{(uH6&KvSb;c<-@XvkSB-S%_Zn9p
zB;VxFW@+ZD%k6!?zVb?A42A+X5fnM3npc<j^a66n0^5?0e7lUsKG3&*lzc+Qyu(Zx
z?80KJZNGeq^{q7SVnnx!-VNS;DX@~Ca$VJ5xa*hN`qurWuzXtvJc}EjaXI~Na_3+E
zkZ+62kbE?3)0m!)cZ~byT^8=U@>=E!MGttO+g8Mj8yc3lXYfjF^-z*J@u|6>XVKb{
zP4<*dBEaPKFwZZxzpRP=HB87-d9#bcXp8-KJ$3qo_uGa#CclVxo0o|DYkXb?w@-Qa
zQ&v8<t)49j1M#|B;#O-0B>4@POvrR)yJ$^T)p1jowBg`?m`u!hyDK?;U-9FR8scF!
zjdGZgbNDT$RGU}93-@X6phm4K7qSKsmo<h)RvRu8LXM)MZeh3G(4rZ@GqIFgrqG4P
zx*%XP(e%vRW8jR5nuNRod%4M2w~e%6*26q=;yui2L&FcaFXkr?aCEcmhW~JxKzH&g
zPQ45KDk6>8ZQwE?q+BLgm8ZV7^_o-*71D;!|D&W>ruf<HJD-3FrUoT#3E`YXf<y!#
z{bQE={cL;)?f12i_7A5Yc?_}k$$Oz)a35rG0w{`;NkDz?S;&^z7f6MUEYXqKn}(g_
zCj^tUU=V?HlC=qbnsE%07rr1D?rp;D<kVYB{%m|-+vP=&-wnl&Cx_vMrc%HDNZ=*@
ziiRj!re6kDCScvE-*Ms2dxIU-FOt%iiqs*!_qG&n#R7K}<yRH(>&p6mS_AAO?#^Px
zJ?u%si_c$L72BkYX;CGTFEf|a1Y8OBZ+!A{)zVwK3$2?P#|YatM}PJZx{vRL7C5We
ze;det?`3|n>f06&xNx8n;;k1R--<VGgZb-)pI3-PmC$#9kKKy@unkUFFD%}Q-vtjU
z>xJ5__^LW);(FoPt@!WTV9t7>ax4CP8w^KERw%RGD^_odP|{!aW-Il1F;+JKk<M<s
zRt8lAs`O4rxg%r<V47i9DNxYhG4XR5aS(8H-^a#SL&1CP*^OmotN{QqKUGHK25L`H
zO&M!VF|$#QSC;A#if=Uylo6d2Z(3QdM<`C%<R~K!Q>dtal$By<Yz;TcST2lqQ#7sy
znP9@oGDu2Mt@-5+E=9Fsf@o5c>v#iTrC?tQX+{>7IqcM?hT<|3Kr|fKFUCrzm{o3a
zH2DpceQmUrPBE)oel%21?Gae!2zQ;Ys*Kf5<*_|lXwG%~2=b4JCKIV+*p+&PD-&)s
zxy6-GO1)(RnS@7^JSxE+Lt&5(TYi)hdQ4>^jK=e*LJzT(kgH^~qHz@<ihFC3qtUp(
z>w16<$|GvukZ8Qtl~7Sex)9&&a)*h^jen&K?xXg&9F5aldo-1iH>g6lmN_=K5-yj)
zLB;Y2piWg8Nde<9C)yfIT@SypjI5&)e99bbSHjIQlDdB|C)Ns6rMDNB5q9bx$m5i3
zKt`!e{Adc)1Q2Gll4KOiQ$V(G8CgypM31uC;8d`)X!F?<)Ip+L$VFn)W36)P|DsBL
zw=35(WlSNZi6YASE_L4gZOQ}+F*Zq~g(be$XuaChU&c(Oc43w4t0*kkzAakfDw-tL
z+V3i>ybMsF;L82V9E+(E;Wx_^uG%0gbL6;Azg?+w)f@k4;W)?@<bS-38BXO2SLiL&
z?XowN5dd}tMP(~>6lHC?S4M!ByK<cPTB)P(b(1(+c!WxbFVoL;9g-3a7*mi31QOEq
z-P|G;sK(0*9Ss2Ae3cw5^#lBs`*dEI@HBux?!Xy(oZ^!qLl3fm+F%b8KBhLr0xk`J
z7PE-Uk!*mbcuW9*4RZm@oIP<sHux3aa%02iS5-CaEou4<S(*E>v&uP*te#}G?AocU
znkd&6&!&B&U(5ExHv=51k1xfm!KX&2u6;)_tnK=%-*g<Oj#`zj@5pwoaP<`YJvS%i
zT$qr;0Fi5jjtLi>+_!BRMVNJJO2rg)nhy%~5uW;B8@R2ExW|Qst#vyqw<p)0u9Ehc
zlCDWs6%#RR>3mxN7_5Fe+SKK+_2|*`9<DS-Av;5K%OYp<3qR^J9BVF;(riJ3>$=BB
zgT)?WyuKZZ%d`1jpY&M@z@~Y&wPXz4&5d8MXzbA5>lj*_$zt~5kAA+SNn_nue^q7j
z(T(@0z<u%iyaO;d%fWr0TbxoCCIoy967GkTLP0$Sdkf%dDAIrKrIf=`IiT!J3886v
zHQ?ez8TY~{z+N<K8Eddq3@Why^^}${98?eD^GfGtsR*c`fGlD78Hz64*I!Ea2YnC`
zbY<{TB&!L4-33EUkt_h3OW{zdXb;6B7Zo~Q12E8V&#Q%wVsK|g*=hPbP^<laZx0Ey
z&Y|-0)ReLTG1<Z0EfqylIC9XXNOBuEnEa{G(Mb_IX9BEopv0bgd6`mCIJHZ;CQ$?!
zYly9!HL?Hzd&i@;1m6(`0-6WT{2q(Hs`7)ZUm!H<GEd(GDS*@iDX-Wzg4@Uj%Y7hw
zYH9GbzNJ?j?Eq|bzoP_<q_@s0=Qc6G`*FN{VUh{7GS2@ztMr@(I3+BM^7~x#7I<SF
zJJf6koT#0Jrhf_qVZrlV=yAN;hhF+>V`T8j1Iyn9E9%(bS3U&65A^S`GTmcPr;HA(
zR#)eO7kT3#<^(^Ufdmygk^njlnfRenc_t_&DJXPMql2-ELxkZW)ZSdK-eY5__$qwL
zP`;GSdRt$ON#(_X)=qGPhm(<y3mtD?ipOwkw3wql29ReN;O0QE03E_&3_YO~iYNmW
z6);~mY==}H2Pn)XFsC9+Xa{fTiE4mOg*4ghk88uEayC`V9fgi>LE+}?Ws3x$GC>ld
za#&4KktQjp)x~9V;KD#Fz_R7|{WQIl;-8{Jdzn&-b?lQy!T`XAPb*_R4US)3t!1qy
zFN*>XT3bCLg;D*bD#;F;C$ebe#B?kq2(AbBljLob+9V>uFFH0P;-+w#bOd@UZ2y0P
z&pu5Y>!d$m0#80qxtpxFwo1w~K^<D(p+9;T(A4}O62Q9aq-*+gpB@F1@ILI?(Iy46
zPuF-<*tNP(cNP2x68nw{Pu(8KH6oVJ61N1)PXe0Ll+YX|q!@3JMp+770aaLJDGC!F
z1t|jSbPWh=FwxJw?C}TDCiFkfZphH*Qvx@^kq98hpf{r`drBby$l2-3xcWda3hI2c
zivU<iRoc^qj#q(bvo{}jR7wY3FZ*d;T$)}2_%$1LSSkv+4V5DhV9+4|EUWF^g^uOV
zh;q3w+}Ohb?1jnxOBk*>NCFas|NG!Vijy!Vnn85~)pqs}h!9fPn(8B=j|br%8Dw>{
z6;dUxUUIh^Y%!?yw7n^SO=XtRo<JZV1R(A?L>0Ifr2eQ`LPa7$WbrlT>m+FXklgXx
zv>hCUJyp6jL!*FhcB^E*zPv#Z&W}f8I0ricBaa~Afz}HYxmOl=weGG#;!woWKWSn$
zGOx0rtMQ+HxS$A8N#H2cW!d5)iAus!05#w1F(_nZoNJqXf><(D`A{2kQ4s|Cj~ija
z%K$ZIm5sv`2y8LviA2MMvjMQ#Scp1Xr?BemC;^~t1*;sBc~Y2vjIoF7t`HlftecSt
zXytjFp)jEYR9{$}rguB0Q&~H}H$_hZ-7E_IN~Rm&T%7*K9vV%dFyz7YWDvMVFkBH}
zU2xZ8$P`9NMLVgQ9#-hM@C@bRx^lauivnKyWsxivII+oY>X8A^JD%<JxRhO}Ka+5k
zVwg2-2P}sUcu)X!l?>ElBqp#Pmmx4$M!sRivTqKY2K_P#V11J;Ht-F1+w_}|9DvQ9
z`)Bi=ud@&ff!DGlWgNr=f&^G(Qs~)cFUehniaWAQLIn(9=Lbu1DIK|s+6BxBl?F7q
za@otC*?hq~78`oC+kZQ#;=>6}6vRPT879avxw-%X`*2RHsCbi1;Us87<3;3;4kR48
z2?`hvZI-^6#I1Cs#a2$@Q~RHky4TSAc3|G~Y9tR6>g`Cd#Lug*RJJG#ChT!d&>#R`
z@8e@(FN;J9o!jLAYqM>^yZcyTun4H&6Tw*BSZ^s?Sz#X}g=LZCX8ROB9()y?MXQmh
zcVG|Z)zBwa3`tBpGO05RgyD>_9s!KFRSfR%b;gNiTk5tY6xa)pc=|rpP_wO@<>Msu
zFsa9fmbI8<#B@wBYw$WB)d#N2Q=VSsrdAwI>mxwSQ4<U&-WK*qB+HehG;op~SpWPr
zZYe^$LuG>6cLiF1qPQh#n*PjPiyDL^E&a}GzJg;=ncBnfIBJlII{FUl4F%1RCmVQG
z=R@_XNui|ft_613WSSk$zh6~xAOOtyQO!Fx@R9SQAl5YrRDIdr0WyZlL`R^x;Apkf
z@tPbosBT%toeP0MP?<zzo&8eq%+l$w$}+y+^4A^%i)~D(+kBXaVv&t>P|Hk`GCcO2
zyF#KD%ao$b<Sd=PwH1CXz?u#)EoT`V$p)~*RTk54pj1W&IYS&UC?6Jm!@`ru)7$S_
zjyfz-J&`J&n2v`<bbXJVCPqMQ7Y@Dn=9x7eyxGVP!}|bnMfwC-SKT!Ls<Yf?y8XU@
zh$7MO486o%CN|`eAfBckv^khj5(#@NeI9OBg1Or5-tUiK*$$)Z;)ur>v4jxdHr@l!
zyJF%F5RGDDu^&?*E`I?}bA+l9py>D(_uoOn+akFRH!46CCefrvdX|vv3nsxRDsKO(
zaA1dBGO07@APCe{Jb4-|(y^7lb;dQ3C#7se9-fxOu@Z~|P`OwvLxo*HOmu*%D`mUC
zKQDu%gT^8(|LliaY&hh$(@L9gyf{pS(fI2?p;WaYfQ^UcWj1K>*rcyhpulwvAVor~
zD;xkV0o2YVdI%CKEvjZO5;Q6fBBcKrPV>xZfapRGIcRhE$$;u+FLsMUWe+#1D<eI|
zCjFh@x)J|+YMlYraYWt(8mWYQwFv;)viXLduu%<ZZ=|#%ch+idL-#L5>VuDdsohiP
z*pbRS+UYC$Ac*icB9D<^@;;-W`Gr7iDiYy%`ON`%?{$W%`Nd%y6*U5}rIAQOoT;C6
zB@+T0B!>Dt_z(yLdU0!Z{x0<;(7qJ1n9-i_`D)M<HXEVUeTNp!&Y!gv#2@g;+Ilkc
zuR&1K04w1-W2pJXu}Wi+XqbpT+R3QssjxS)*unB`eSp2!xq<eutHo9!5v7wK_Z|9V
zcHsQ`J6cO`zrT$HET4?Vq#uAbVO;l&#XmKliu|Z=u}Rv3$Ku4dU>3e{8Y@Rw(O78Z
zf&*-;I^0U2J5mddcHUrVngk~?sBqB=2scM#^zpaBiVcpDioU*0UPYMYcCK6C{ARCb
zQ=q5SPufclqWLy@;Mzfw8nV#ICC^M%iRA4Kca5-!+-#)RLAOO#SgfCft}`5y&rDJg
zT4Mxp1@qf>q}~bzfF(kd>D=h^Yh{^D4(E5*8GkIfYpXz@D2a@=CLy5j&>lHm1XF<}
zBa`J|7MJNo2e+FIbUpwpJ;yeHMvv-0oehEU)>xkTKPJF)na+}}|MV3SOx8wYxo?6V
z8!Tt-{kt7aSLkTU-$d+b5at4=mcJDNwowHy`Z^!P*Qo7a0^Lg?jjLZW`G@fs&~vzT
z@LW+YpG|T>e=$|=G2wh>jl<2c;cvc8O$BAM>!>g~iz2m`>Xwu`ACtR`)Jxf&@bZQ6
zq*6l0K=c;CwmWMsa^k@FuMn3jWWBFTWW5HZZtjv6gUn$#kwkW$Y%!EOFt(C7lMiN4
z)<`RXpL=GF#;sqiCTpUpDe|K*VFNXdOA_tRo^X^?!BLz*YRVUlvB%#6%qE*2ZQ)?x
zXh(&rl>Tq=uri$7Rp_|n(#P5&y$jA@E43*WgU-ju9)juMv8x-AN0MoM<W&&kqoYZ)
zRS8y=MClyd0<K2DPuJ@}c4i|8Z&}(%ZiVnzAu|(9u*1pU!tj9!A{n<w2D6%&6esF%
zmRNiRjNxq!;~;jm@c#VdO_IO?MOdKZy)Nrm<{8Wp_b0N~`4|~E+&RZ!S3E*8wLVMM
zyu&Vm$dMZNrJVyvz2%8<%~-f_*BXzS$5*2yrXOP06n&Bk8Ghvk-S{f`9ML<#k{{@v
z<4d1>ay)-iQ4^d_A}ch4yHj|DPd0hj60<cgFtJ}O-iXtk10uSlAk2i#-Kg0URX<XW
zSj}tjRV9+Z@1|=m@6mG#>xd+^Rnd=JJgA;jZ~9VapYY1#_<yXlFHU`I15g{YwppmI
zeFFQ$GcvQkN(?4*9|UeJs(`DF^E}4aG7HCP_JWm3y90*Ko`W-crf+HBhdG5yucY_P
z;fuW_BGIWW@$UrxZM#A(8%TfHMtMZ1n9mcpL{p=qTu;V!DEZvn*uiR6q2{b%tjTaS
zjVB?E7?)GrVVy9Ck832At^XRkzrOWqS{;$`Yy<z7^?9k6l1-ZA-Fg;&b)jvM#KDCp
zyZPev>fz(;!7BTeTlj(gXM8>|-aIA~?UXzyg<k6Xh7ts2ELim}c4{NZ6kHCqCxa6>
z%l*bx67yUId~obanq#iQS$ktix0M0rg!2n>Rv?>Np@V~MX~dEh@*RU$bLsVM+*Yf!
zqgr__{G`X(nwCM_6m*rPt#U_uo0oK(zCCw*4QqEqy#_m`i?z1qC6Pz}ei!F<6RS5I
z$5bWwt~E4!IOvJyWfVvr4C!PiTl*J{t^HV?CSxlwH>FeA+M-P!fOoe}SgftJNu;>>
zRBFv0yN=H!Wg2?W%6%kg!KQHcjDjCWTP)cncopdCH2P;|WjK5hPCl*+-GqrZT{Jsx
zplg3T>ghA`e8LHXCp)b61l9OzFUkUz29cFiKS`)2oU%l+PJFD@UV=-)=1JMGATV9e
z1?;y1D%-Vt@n5`<i#E7!6&NBM(XCI<dpkw>HW~keAn3pVJYg8><_xl?8m|k%Bw+xu
z-3L)3#FdLIkFmAMSeBaWY7_5_tz{ndlumG;IsA<hwDTaIZ-atapj+0K+i1i-5IBNv
zw4%BltvqntX7+rTbl}P9SGvU+wc!e#|A}-xeI5i`)uF5DfqjS0pVEWaDWY15A<3Y_
z1QFR5(4o(&{rs>9xkYN*pAi*up-$h!T1+tWZR|n6LAkzGkwi?L0;Q}aLBMkJsmrVS
z4(;VqF<3en1kSPF(6JGbGB6Du)rdUo;a*-|Y|xG43Adr-0g`)t_(#uoi|8sgd*4tg
zeIZz*Bjv*z3f=~j21OECJGaH60*?kJPCQ7_wW8BBSN}IjuY3c{#uR>KxS<kE`K=yE
zDL1~jv(M?|*1zrKB-3RL_`;OCTXxa*!}H_zj4qh(c_H4v;N!``5Uktq+kW=o^z|;o
z83`w2GnU@f_Acn0+Hy^3wUWkx0e|5K;kzLRTBR!>ezX~?j%OTJ{Og$~hAZr@48^}z
zOw}heRjdg}iOBTqUX;>z+Nj!|zrrzb8gS(2J5TXboFi!>75?JEq)`>kHC-S3=uG!$
zJPzhFiLj=hZ~3UTnoaJ{==>HeS(Wi#ylq%|cctM&p#V!)_tEf?>B&)DZ=6lnTKi;F
zjNcjd`6XP(syAsDEWO3%7B-FlbS8q_mAyUV`Sg_OwODfeE29e9z^u|dSnxzUK&;9u
z2x2tNcXa6`fjmL|;<-e|AHIN$wRf=tit)^eySOfRe@Xye5s$Yf8dbbAU&Lp8fmxrF
zSK$-CfHTjJ=Uu2;S}X~C7AP%T?Y&*&1Ao-QI};(duC_@08P?#Sv=f#A895%0j##kn
z(Z-b4h=sS<sv*l{$cnx2DKB%&60p>G);Dij_)8KzU#`C}cR)sit47&==W`rioLd#&
zw?2<ME)&}B+6+UG7b=~rmT^ta*2IO?Y)NH<?eW4|Hr>n8Ho8z8p2u&glGWXgo~jL7
zWIJ&}EnCpKkDTlnkcBEdEhFD8>DH=A9BI0SJ8WDPIdYTesl|^~1Eu_G#oZcFFnio)
zoC7-9ZMA<qiJg)<$K4LdcM32oL6fK5YwKa{IZ0zP{#J3BJZL{V++9CtEN3f4O}vo^
zdSlW$%r?>I9b3&-AVG<>$xE*|rWKwCH!a(4>ff`)UT-rHD16hD4zw{QWP@ssJEt#j
z<5>)VFTYg;4Ei%OE_EWjT^N`(xh+rIwXA7{9IH2S#{ASK4*`1LW|*!Dg)@hb-O`Zd
z9W3x;>(i{(g@tRqt;njKlRs6Y5q=+D@BPDuy>c0@w*B#7G~;^D#n6rW;G+0F`MZ3=
z)|2v)M<JX<cs_gY<I4vUVWyY;`Hk9Jh~&J<5lj8A$uJGWeWE6T_6=nEd0U#i3QsGJ
zQ_IeTBGrb9%THho#6H#7FwfBV+6ViMs>j0#(>?pobSsdlsblK<QVCmkn>DzGQ6b&v
zuQD!(KnkIJgUx2ZXoB%uYAg~7cKeXqdhAy4xCwjYX|zX%Ih--vurR9$Ic(c*v@g5w
z4nM8@rc^$CUnMF%tDh@^N*mOsxB@=-P^>td1dhRy!66Ycf?1r;$8FfM)Um3r*riv%
z<AOy6731=bKhpQy=I-8VivNz_$Cb(_PKk%qNo*MM3{FhJ@GKt0OpJ1%3yT<|avQeV
z{};SjXtevzkN+*T;N%e>cb@d;6!K)~nE#p)j}hnhx%79;jc5MOSfd?YC;z64wh{fz
zTM;rxd;9;QL$^G=OS}=C&e0WaXa~(Mt*y2boz4a3qQ(?aTD#aCwJ}&O8%>iS!t1|c
z(XA_x6qv)a1(Zh<TI!8_pp%55iQdR+owUR`m18<*>5dS6(Z*GvqrR+FBRt(j^DnuQ
zx6Hw*qCM@3`Di?YwM?r!7GydW37nZyL*(IIimy<fH{!3;l{lR_raX%!LiAaiU4f#$
z@X8Ul5$6xN(9)4zsiJS&{oX*2Fi4j}_w539u6e^c(brvmVQ8^8YppKtit}a;{a4F|
zND;4%)`@=SD|yr0k|N@@%U(yHF@PiJvJm1y0sFMMe4Xg?F4;y@=}ks;$=0I@AtGSh
z9fq#<X8lbk*@RYm(<x_6(e^fR7h3HLGe=rSob|cLn`Tf7VLN9YdWZpgYyE-i?Vz;r
zBQ3CWp2L8Bwf@=8KMJ4~S_zHEd_A0(+U}DTL>EY%f_C^#b7TthBW>+5XE%df*ABm9
zj!YG8Xy>@2i41aQJ7+GBxi_4b+|Hq)?=s-!TJACD!vdtp92g>s=`wwZZueHWRW3Je
zMDu{{?B+PlS+ieukZEb8$XCnF4uTu~-~zJ@s9F=HDKzuf6>+7$@ULcmNKtD+J3oTy
zJAx+fZs$je*liYdiS|k^LN_-ChVj_#^w)XBUtnM*Oao;V)(YO!vfX*itKXnI+Ualb
zH0ly(Qak*%c@6{mtCp7S{J8*Ht`#41wimDp%%LHo=q~zKs47I1-bLSp?($Z&7__QL
z;v}ed`i|BJqBBRwt?J-hamINo_=j?ljVLhE4OHbJ>(K??ipX!Z!@khRBk10{+6BI3
zMw{iEtahJBqA*8yd2SvOhH^uS;KE{OSUbGX+_(xthjLkOnVl;VP~iN_8ezAgk-p?-
zZI)VDuFI&qh;{O>P>z`n?#sQ~PM1};VCuO!)E5dEL9gD^iX(|LAZzcl;Zo;?99`3g
z9g-`8ls3!blN|{WM0buZJiYyaFSKTa$0;^TeaS7LKsg-=k;FD|jw`vW4X7fdDEsYp
zT?7GKl|R{y{+C?4bsUB-bjFNi1<`_YfloWvTVblngEyh35bzeH!)4s98*MY&eaVnE
zOZ;i=314zoo28*&OOGHTKuV039!Y@W*5>B=6+6R0pYfKq!x#Dh6c;gv`;w_()9GB<
z6{nv!^u7)XL)jrkNcsx$S2GM0`S6l6xgGR%L9cBgmTP5ML6BoJL3w!dyaxWt-h{G%
z>(&<^lBdlO*!kEcr|$lefN<?>^O4JJa+&t;ZI-B1_A)K7n61s4ddt@|7tQ6&{R&O<
zR&-Yhg}xFdP`F>%T`b7T(H&)gzzy@eAxwsD)fGWW4*7|0Rf*t54vTWLWNv7)NIiwC
zq=McY7G-A1j01TJraCX0`+*Qe*q#mOVqmhIZ^)+%y@O~EK-h-a8>Gk#`Kz>(n=Fm0
zR3s-?;c0HHO+dE!N_<9mKbCODa}^$D=XfR(<O_v@98&>aX-0uB_R=waXghGb7yQL6
zM<bX}8<}I_mI#i33Q&)|2uFYLR!D49%X7@*PrrKdPfmPy{<P$qMj)@1Il9C~`D>B#
zuR+G=r<#^&fjj;(2K%qtx!Fzy1LC$XoP)Ac<Sye%+7o5%m+i;`^MBRrTehd}N&VsW
zym`FSmjA`;Tk<u6Mat9Kq#bC4FMH`ow@xsc>*rw>9K0d_E<z4!=htb-O<y*1WR+G>
zmrHX;A2QfXZOc05hOX=q!Qr-qPSoY{-JinzXOnM5OTW<N@@@G#1991W^WJIT6z9tR
z&0LovPic>JM+X_~5450<U|x+v%6!?&M=UR#vwYdXBc?Vq$(OxkWL98kWs#Yd<t${d
zmuQo-1VjO}Qo97SlRvQDjp$Zy_DbE7NI7WRsdjmF1aT?HFV|8XDGzHy3N5r^XA9`q
zvJG)QS_9~R{!(db@g=`(!&2o3+EsH=ehL99G~MiSq+~5J2c>ChMeY8tqdOVo-gf_a
zD3&7stlj?&^f?1rsrASf{8YfnHE&uc-`(XOhL(V=FB#PTJGXDag#ykw^K#Ia?o`$C
z+H2>bDGcO&ZQOAITEMwr7H13gcGXg5-}G}9u~d+sLsOu=zQ~%9Wg~+8T+Tvs&_kql
ze|s$r{h5J)4*zv@Jp*BC1CI%`1>j=?fmwpH1*RPHH{R^ky1){FGzWT5cR7L?FjB4+
zNOMh#&B|0}fOgk9`4?T>Fm#1CxudJ~ia?bkyI|QKA&+ZwxlNk9%+)FKxOV&N=l}x=
z*7CEQAq-@RmVaDOSYWzfZVDlu6`0PNh3n)8y6j=7+?)Ke%l;KA@@D(#u#zCCWHV*Q
z8v5S<*^U);Fc3ej8yGxjeYL=5lK38d+EO70K9e@L#cN+iAbq*n_^X!Yb6bUOCBQLz
z?ZKSq@<YBfY}SisS7VURTx)(G?6rCpn6I;Tcr86(_59Vf_C8p<NUag(8!^bYf9|*%
z>{#SV{P<=J;sZ<p-5#=29_a&tIU;l?s9;c!0q0`kd*0RGmE7I!tzej=^>P19`ms*w
z@3I4@lG6U%t4_&vnNDix*G+$x^v%$66EG<UWzH+FcAN_5_0g|$qPoJrq*nZ>LxIB~
z@xAbJswl#BxgGsmg+9Qikk;q_4_EN>**D^Zk}z<<O6aS&a#N2hyNR#LO}AWYk21<l
zQ`DN<{2C?q3s){1mTna$Py(ILZio{CYj8@cuPfzMe_rC-Dt(}j>k|J(qYng@tI!>%
z_N@xJh0^&Ud+TF;Ad5<rH?nphuer4H&W}NWK{zF}IR;7i$By8uLw|MUvrnUM0M6?m
zpARxB<Qx9n91k`FYg(XWPq)6|L+t|41G<eh04rvYG}5ilr=~%!B$wXKV$TZspGM(8
zkyxtG=ixstE4k^eYkFEzAy@o)O<7xoD#|eZe6}%8sB)#zei+a<07qt!vjEXI01sp6
z&XJ?P+lF$${e5~T54R4THy^=Y9scpjuXav@v)NlATe#H}&Lg(pN$&JGMe9y;DwcGN
z3-&g}2j>p4iZue~5R0n|G0e(E&oorEOn!9n6leP6_^7`Zi~C|FeJIV@W6FT!lhbv}
zjt|41c#@VM4x$%N$!_nQMoWfI5Gn1bKOM219k-Rz;rF2DX!f|m-wUz1J#(z~B<;!H
zVyiuo!;X}vPD6feo8(`LhQNy))U3C!D&u1>QR1P#6dQVGdz>cFnYg+JgNkKpzW(i6
zQCRonSI`=*&M-XscVYyJS}WfKQn+vA!NBA#?;TZ|AEa<vrol_sm6E|UfhxU0iljO<
zM3`_d`1J#4DdYT*iz&E18~&TQXj$qp7%3T^r3ld4<LKfQW}k9<*ac1{>9EXiuh6v^
zYe%QM;?hBuf>din`q>Hl<22_WlBUxcEDv~!?9h@P{)!!%GcT_l#IBKeZ204IFF{cM
z@T?e4|4H}OguMZxu^++j)TjKMx(R!Kn&2fZT><N+<CSqAho^H$t3hHPV`P@)$uj3$
z=YbbdSgn3}HZUs^k&#W&ha$L`buqgkQ%`KZP3{elquR(OfiklGcRm>b<J#bNyTC8>
z3L~7E)R-}iB?U0eu`T$9?#Us_nyM07z4ah(8mj~@L>*AXc@8H)WXhSatJ0iCQyM8U
zxPAG6|GnosHSF%mpIRxqnO0qSe1IbGJFJ%$9y1a=FFr{^ZY+dlj>%<~BE}sOI+=gC
zA2;%ID%M=Uj@Sf~Svu#lBeo#&{(=PI^<cjyZ0B5NU(u=}=is!P+JY&DGM^tc);alm
z950R<84j0Yh}trpH}3*bZmdH&M8<{e0gJ=s9MaY3T#+xV2o^JKS;bxl6!%ES<2-ue
zTX+R8n{M3<ZH*%jJ8qm#6n^)D#q2GLWRAx|!hKN=``-}ak^g<E^(FxeFAIZy2=pf=
z{C%!Kk_IdbDah>=uSoA2Hu6AFi`V2IBU9jGU|Wno*_^h*6JyxtSe>#35fBe-&gs(7
zbI1WjDjlub537s1;e-oZp)6R@WSS0vRZMwvFH4~38yWVB*g~?@Ca||iPaZA{RyB<z
ztO3hdn2g8|Ru<{vwUMn%u+%ty9xh5!l$x5le+sYG>2#Z&V^VOjQi1-SbRbm=^R*bl
zp>uW^-y+bXK*ToM3P+3W(A+S*4Q1^E=e<6%m6fEhDgrz1fhEN1gWJV%LcD?%&wC)o
zx*bp5>4!6SZxx^ajs)MJvs#eV<D=h<B5Ii9NEk?UB2ePss^M<fhs`ytG7i78u~C<=
zxTWjJ4ssMGEWIL_`orK;E6%=dTHqgkfKGp^Z{0(Tg2xea_G(c8qe5J{dQ=K--U(6D
zR8`?{t7nF;$~gSVzC)JFiW+g`%9hV)<h5Wwl5#`Yg592%3UM#!23jLGPpiX&Rm}N!
zL*c+~g}U{dcW^mRq+zc3W1V6i#={P~tBh$AU;}UMw_*dNDT<RgAH_l%rl#3$yGWuo
z@avb)5H7$D&)YB_Fb*hGES2pv_^B<UOT=_Xx$V$m5pS#;PExc=Qd+)(571dVUwX5#
zbnNhazo3TExyIp@zhE6Lez$Z^`c~psq^88g3FeJ=!pZdPoe#JQ+fK+~=kD1uanCmC
z+ZAs)1MO4P`Ps$}LBO+nJBK-3{7vF^%8_M}q}Ri%@2S>yXqKFzZjCR>A@GSpM97QS
zs^YbN10~V(c0T`L1N<=q=Vx_u1;xU}$D%74&(GR|@O>=a$XVN=e~X{)T_(FFo_mn8
zYN-p(X4y1<CkB~CEgM@x$vUC)n2|eRRTzh74c^opf)3DqcFGw##|CWLO=miUvDK}I
z)=u4koz=pEA3NfMr%i>!;rj$;L~S9tU6W4{b?ec!<7g|XVIF8s!$aW#W>@ohNg<Ym
z-Jb2Qu$+ihw{mVDC^Zm|K?Ob*dSE&fJM7^>ytoA260;}nvWY3NZE~pyFC?HE9Yz!G
zJOR~+H#~wg{p3D+?C?!2kBr5p=M2|wF|v)rzWZ!vETobd|Iblu|G?R27BdRWC@`bI
zi~|2X6(H&SgYUU6ZG;?ny=>-hMu8axW)zrFU`Bx%1!feOQD8=a83kq(m{DLxff)s6
z6qr$9Mu8axW)zrFU`Bx%1!feOQD8=a83kq(m{DLxff)t<e^=md#%6Dd0sH<pQnpF{
v-xGM4xvCijW)zrFU`Bx%1!feOQD8=a83kq(_<vu4w>v(KTk^{HYhV3$nL=Ig

literal 0
HcmV?d00001

diff --git a/tests/f_dirdata_dup_de/name b/tests/f_dirdata_dup_de/name
new file mode 100644
index 000000000..5d4d2c3f3
--- /dev/null
+++ b/tests/f_dirdata_dup_de/name
@@ -0,0 +1 @@
+ duplicate directory entries with dirdata
-- 
2.43.7


^ permalink raw reply related

* [PATCH 10/13] e2fsck: add test suite for directory optimization
From: Artem Blagodarenko @ 2026-05-24 20:36 UTC (permalink / raw)
  To: linux-ext4
  Cc: adilger.kernel, Artem Blagodarenko, Andreas Dilger, Pravin Shelar,
	Andreas Dilger
In-Reply-To: <20260524203658.12406-1-artem.blagodarenko@gmail.com>

Add comprehensive test for directory optimization with basic dirdata
handling. This test validates that directory btree operations and entry
manipulation work correctly with the DIRDATA feature enabled.

The test ensures directory structure integrity and proper field handling
during optimization operations.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Pravin Shelar <pravin@clusterfs.com>
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
---
 tests/f_dir_optimize/expect.1 | 511 ++++++++++++++++++++++++++++++++++
 tests/f_dir_optimize/expect.2 | 511 ++++++++++++++++++++++++++++++++++
 tests/f_dir_optimize/image.gz | Bin 0 -> 102520 bytes
 tests/f_dir_optimize/name     |   1 +
 tests/f_dir_optimize/script   |  36 +++
 tests/f_dirdata_mfid/expect.1 |  35 +++
 tests/f_dirdata_mfid/expect.2 |   7 +
 tests/f_dirdata_mfid/image.gz | Bin 0 -> 116296 bytes
 tests/f_dirdata_mfid/name     |   1 +
 9 files changed, 1102 insertions(+)

diff --git a/tests/f_dir_optimize/expect.1 b/tests/f_dir_optimize/expect.1
new file mode 100644
index 000000000..4ef89540e
--- /dev/null
+++ b/tests/f_dir_optimize/expect.1
@@ -0,0 +1,511 @@
+
+     94   40755 (18)      0      0    4096 25-Aug-2012 06:09 fid=[0x5e:0xf6d09ca7:0x0] ..
+    105   40755 (18)      0      0   36864 25-Aug-2012 06:09 fid=[0x200000400:0x1:0x0] .
+    106  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2:0x0] file0
+    107  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3:0x0] file1
+    108  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4:0x0] file2
+    109  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5:0x0] file3
+    110  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6:0x0] file4
+    111  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7:0x0] file5
+    112  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8:0x0] file6
+    113  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9:0x0] file7
+    114  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa:0x0] file8
+    115  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb:0x0] file9
+    116  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc:0x0] file10
+    117  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd:0x0] file11
+    118  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe:0x0] file12
+    119  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf:0x0] file13
+    120  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10:0x0] file14
+    121  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11:0x0] file15
+    122  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12:0x0] file16
+    123  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13:0x0] file17
+    124  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14:0x0] file18
+    125  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15:0x0] file19
+    126  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16:0x0] file20
+    127  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17:0x0] file21
+    128  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18:0x0] file22
+    129  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19:0x0] file23
+    130  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a:0x0] file24
+    131  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b:0x0] file25
+    132  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c:0x0] file26
+    133  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d:0x0] file27
+    134  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e:0x0] file28
+    135  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f:0x0] file29
+    136  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x20:0x0] file30
+    137  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x21:0x0] file31
+    138  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x22:0x0] file32
+    139  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x23:0x0] file33
+    140  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x24:0x0] file34
+    141  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x25:0x0] file35
+    142  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x26:0x0] file36
+    143  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x27:0x0] file37
+    144  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x28:0x0] file38
+    145  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x29:0x0] file39
+    146  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2a:0x0] file40
+    147  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2b:0x0] file41
+    148  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2c:0x0] file42
+    149  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2d:0x0] file43
+    150  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2e:0x0] file44
+    151  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2f:0x0] file45
+    152  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x30:0x0] file46
+    153  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x31:0x0] file47
+    154  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x32:0x0] file48
+    155  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x33:0x0] file49
+    156  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x34:0x0] file50
+    157  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x35:0x0] file51
+    158  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x36:0x0] file52
+    159  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x37:0x0] file53
+    160  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x38:0x0] file54
+    161  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x39:0x0] file55
+    162  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3a:0x0] file56
+    163  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3b:0x0] file57
+    164  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3c:0x0] file58
+    165  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3d:0x0] file59
+    166  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3e:0x0] file60
+    167  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3f:0x0] file61
+    168  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x40:0x0] file62
+    169  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x41:0x0] file63
+    170  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x42:0x0] file64
+    171  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x43:0x0] file65
+    172  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x44:0x0] file66
+    173  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x45:0x0] file67
+    174  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x46:0x0] file68
+    175  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x47:0x0] file69
+    176  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x48:0x0] file70
+    177  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x49:0x0] file71
+    178  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4a:0x0] file72
+    179  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4b:0x0] file73
+    180  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4c:0x0] file74
+    181  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4d:0x0] file75
+    182  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4e:0x0] file76
+    183  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4f:0x0] file77
+    184  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x50:0x0] file78
+    185  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x51:0x0] file79
+    186  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x52:0x0] file80
+    187  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x53:0x0] file81
+    188  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x54:0x0] file82
+    189  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x55:0x0] file83
+    190  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x56:0x0] file84
+    191  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x57:0x0] file85
+    192  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x58:0x0] file86
+    193  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x59:0x0] file87
+    194  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5a:0x0] file88
+    195  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5b:0x0] file89
+    196  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5c:0x0] file90
+    197  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5d:0x0] file91
+    198  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5e:0x0] file92
+    199  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5f:0x0] file93
+    200  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x60:0x0] file94
+    201  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x61:0x0] file95
+    202  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x62:0x0] file96
+    203  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x63:0x0] file97
+    204  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x64:0x0] file98
+    205  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x65:0x0] file99
+    206  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x66:0x0] file100
+    207  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x67:0x0] file101
+    208  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x68:0x0] file102
+    209  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x69:0x0] file103
+    210  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6a:0x0] file104
+    211  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6b:0x0] file105
+    212  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6c:0x0] file106
+    213  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6d:0x0] file107
+    214  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6e:0x0] file108
+    215  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6f:0x0] file109
+    216  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x70:0x0] file110
+    217  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x71:0x0] file111
+    218  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x72:0x0] file112
+    219  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x73:0x0] file113
+    220  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x74:0x0] file114
+    221  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x75:0x0] file115
+    222  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x76:0x0] file116
+    223  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x77:0x0] file117
+    224  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x78:0x0] file118
+    225  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x79:0x0] file119
+    226  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7a:0x0] file120
+    227  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7b:0x0] file121
+    228  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7c:0x0] file122
+    229  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7d:0x0] file123
+    230  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7e:0x0] file124
+    231  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7f:0x0] file125
+    232  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x80:0x0] file126
+    233  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x81:0x0] file127
+    234  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x82:0x0] file128
+    235  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x83:0x0] file129
+    236  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x84:0x0] file130
+    237  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x85:0x0] file131
+    238  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x86:0x0] file132
+    239  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x87:0x0] file133
+    240  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x88:0x0] file134
+    241  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x89:0x0] file135
+    242  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8a:0x0] file136
+    243  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8b:0x0] file137
+    244  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8c:0x0] file138
+    245  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8d:0x0] file139
+    246  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8e:0x0] file140
+    247  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8f:0x0] file141
+    248  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x90:0x0] file142
+    249  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x91:0x0] file143
+    250  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x92:0x0] file144
+    251  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x93:0x0] file145
+    252  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x94:0x0] file146
+    253  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x95:0x0] file147
+    254  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x96:0x0] file148
+    255  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x97:0x0] file149
+    256  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x98:0x0] file150
+    257  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x99:0x0] file151
+    258  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9a:0x0] file152
+    259  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9b:0x0] file153
+    260  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9c:0x0] file154
+    261  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9d:0x0] file155
+    262  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9e:0x0] file156
+    263  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9f:0x0] file157
+    264  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa0:0x0] file158
+    265  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa1:0x0] file159
+    266  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa2:0x0] file160
+    267  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa3:0x0] file161
+    268  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa4:0x0] file162
+    269  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa5:0x0] file163
+    270  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa6:0x0] file164
+    271  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa7:0x0] file165
+    272  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa8:0x0] file166
+    273  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa9:0x0] file167
+    274  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xaa:0x0] file168
+    275  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xab:0x0] file169
+    276  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xac:0x0] file170
+    277  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xad:0x0] file171
+    278  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xae:0x0] file172
+    279  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xaf:0x0] file173
+    280  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb0:0x0] file174
+    281  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb1:0x0] file175
+    282  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb2:0x0] file176
+    283  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb3:0x0] file177
+    284  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb4:0x0] file178
+    285  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb5:0x0] file179
+    286  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb6:0x0] file180
+    287  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb7:0x0] file181
+    288  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb8:0x0] file182
+    289  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb9:0x0] file183
+    290  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xba:0x0] file184
+    291  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbb:0x0] file185
+    292  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbc:0x0] file186
+    293  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbd:0x0] file187
+    294  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbe:0x0] file188
+    295  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbf:0x0] file189
+    296  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc0:0x0] file190
+    297  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc1:0x0] file191
+    298  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc2:0x0] file192
+    299  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc3:0x0] file193
+    300  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc4:0x0] file194
+    301  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc5:0x0] file195
+    302  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc6:0x0] file196
+    303  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc7:0x0] file197
+    304  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc8:0x0] file198
+    305  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc9:0x0] file199
+    306  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xca:0x0] file200
+    307  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcb:0x0] file201
+    308  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcc:0x0] file202
+    309  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcd:0x0] file203
+    310  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xce:0x0] file204
+    311  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcf:0x0] file205
+    312  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd0:0x0] file206
+    313  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd1:0x0] file207
+    314  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd2:0x0] file208
+    315  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd3:0x0] file209
+    316  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd4:0x0] file210
+    317  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd5:0x0] file211
+    318  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd6:0x0] file212
+    319  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd7:0x0] file213
+    320  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd8:0x0] file214
+    321  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd9:0x0] file215
+    322  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xda:0x0] file216
+    323  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdb:0x0] file217
+    324  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdc:0x0] file218
+    325  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdd:0x0] file219
+    326  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xde:0x0] file220
+    327  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdf:0x0] file221
+    328  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe0:0x0] file222
+    329  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe1:0x0] file223
+    330  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe2:0x0] file224
+    331  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe3:0x0] file225
+    332  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe4:0x0] file226
+    333  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe5:0x0] file227
+    334  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe6:0x0] file228
+    335  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe7:0x0] file229
+    336  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe8:0x0] file230
+    337  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe9:0x0] file231
+    338  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xea:0x0] file232
+    339  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xeb:0x0] file233
+    340  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xec:0x0] file234
+    341  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xed:0x0] file235
+    342  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xee:0x0] file236
+    343  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xef:0x0] file237
+    344  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf0:0x0] file238
+    345  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf1:0x0] file239
+    346  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf2:0x0] file240
+    347  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf3:0x0] file241
+    348  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf4:0x0] file242
+    349  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf5:0x0] file243
+    350  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf6:0x0] file244
+    351  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf7:0x0] file245
+    352  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf8:0x0] file246
+    353  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf9:0x0] file247
+    354  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfa:0x0] file248
+    355  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfb:0x0] file249
+    356  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfc:0x0] file250
+    357  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfd:0x0] file251
+    358  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfe:0x0] file252
+    359  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xff:0x0] file253
+    360  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x100:0x0] file254
+    361  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x101:0x0] file255
+    362  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x102:0x0] file256
+    363  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x103:0x0] file257
+    364  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x104:0x0] file258
+    365  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x105:0x0] file259
+    366  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x106:0x0] file260
+    367  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x107:0x0] file261
+    368  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x108:0x0] file262
+    369  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x109:0x0] file263
+    370  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10a:0x0] file264
+    371  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10b:0x0] file265
+    372  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10c:0x0] file266
+    373  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10d:0x0] file267
+    374  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10e:0x0] file268
+    375  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10f:0x0] file269
+    376  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x110:0x0] file270
+    377  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x111:0x0] file271
+    378  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x112:0x0] file272
+    379  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x113:0x0] file273
+    380  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x114:0x0] file274
+    381  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x115:0x0] file275
+    382  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x116:0x0] file276
+    383  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x117:0x0] file277
+    384  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x118:0x0] file278
+    385  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x119:0x0] file279
+    386  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11a:0x0] file280
+    387  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11b:0x0] file281
+    388  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11c:0x0] file282
+    389  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11d:0x0] file283
+    390  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11e:0x0] file284
+    391  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11f:0x0] file285
+    392  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x120:0x0] file286
+    393  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x121:0x0] file287
+    394  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x122:0x0] file288
+    395  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x123:0x0] file289
+    396  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x124:0x0] file290
+    397  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x125:0x0] file291
+    398  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x126:0x0] file292
+    399  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x127:0x0] file293
+    400  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x128:0x0] file294
+    401  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x129:0x0] file295
+    402  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12a:0x0] file296
+    403  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12b:0x0] file297
+    404  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12c:0x0] file298
+    405  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12d:0x0] file299
+    406  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12e:0x0] file300
+    407  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12f:0x0] file301
+    408  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x130:0x0] file302
+    409  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x131:0x0] file303
+    410  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x132:0x0] file304
+    411  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x133:0x0] file305
+    412  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x134:0x0] file306
+    413  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x135:0x0] file307
+    414  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x136:0x0] file308
+    415  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x137:0x0] file309
+    416  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x138:0x0] file310
+    417  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x139:0x0] file311
+    418  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13a:0x0] file312
+    419  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13b:0x0] file313
+    420  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13c:0x0] file314
+    421  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13d:0x0] file315
+    422  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13e:0x0] file316
+    423  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13f:0x0] file317
+    424  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x140:0x0] file318
+    425  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x141:0x0] file319
+    426  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x142:0x0] file320
+    427  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x143:0x0] file321
+    428  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x144:0x0] file322
+    429  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x145:0x0] file323
+    430  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x146:0x0] file324
+    431  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x147:0x0] file325
+    432  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x148:0x0] file326
+    433  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x149:0x0] file327
+    434  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14a:0x0] file328
+    435  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14b:0x0] file329
+    436  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14c:0x0] file330
+    437  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14d:0x0] file331
+    438  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14e:0x0] file332
+    439  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14f:0x0] file333
+    440  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x150:0x0] file334
+    441  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x151:0x0] file335
+    442  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x152:0x0] file336
+    443  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x153:0x0] file337
+    444  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x154:0x0] file338
+    445  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x155:0x0] file339
+    446  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x156:0x0] file340
+    447  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x157:0x0] file341
+    448  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x158:0x0] file342
+    449  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x159:0x0] file343
+    450  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15a:0x0] file344
+    451  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15b:0x0] file345
+    452  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15c:0x0] file346
+    453  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15d:0x0] file347
+    454  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15e:0x0] file348
+    455  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15f:0x0] file349
+    456  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x160:0x0] file350
+    457  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x161:0x0] file351
+    458  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x162:0x0] file352
+    459  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x163:0x0] file353
+    460  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x164:0x0] file354
+    461  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x165:0x0] file355
+    462  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x166:0x0] file356
+    463  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x167:0x0] file357
+    464  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x168:0x0] file358
+    465  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x169:0x0] file359
+    466  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16a:0x0] file360
+    467  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16b:0x0] file361
+    468  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16c:0x0] file362
+    469  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16d:0x0] file363
+    470  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16e:0x0] file364
+    471  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16f:0x0] file365
+    472  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x170:0x0] file366
+    473  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x171:0x0] file367
+    474  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x172:0x0] file368
+    475  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x173:0x0] file369
+    476  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x174:0x0] file370
+    477  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x175:0x0] file371
+    478  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x176:0x0] file372
+    479  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x177:0x0] file373
+    480  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x178:0x0] file374
+    481  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x179:0x0] file375
+    482  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17a:0x0] file376
+    483  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17b:0x0] file377
+    484  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17c:0x0] file378
+    485  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17d:0x0] file379
+    486  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17e:0x0] file380
+    487  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17f:0x0] file381
+    488  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x180:0x0] file382
+    489  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x181:0x0] file383
+    490  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x182:0x0] file384
+    491  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x183:0x0] file385
+    492  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x184:0x0] file386
+    493  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x185:0x0] file387
+    494  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x186:0x0] file388
+    495  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x187:0x0] file389
+    496  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x188:0x0] file390
+    497  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x189:0x0] file391
+    498  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18a:0x0] file392
+    499  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18b:0x0] file393
+    500  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18c:0x0] file394
+    501  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18d:0x0] file395
+    502  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18e:0x0] file396
+    503  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18f:0x0] file397
+    504  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x190:0x0] file398
+    505  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x191:0x0] file399
+    506  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x192:0x0] file400
+    507  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x193:0x0] file401
+    508  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x194:0x0] file402
+    509  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x195:0x0] file403
+    510  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x196:0x0] file404
+    511  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x197:0x0] file405
+    512  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x198:0x0] file406
+    513  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x199:0x0] file407
+    514  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19a:0x0] file408
+    515  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19b:0x0] file409
+    516  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19c:0x0] file410
+    517  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19d:0x0] file411
+    518  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19e:0x0] file412
+    519  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19f:0x0] file413
+    520  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a0:0x0] file414
+    521  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a1:0x0] file415
+    522  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a2:0x0] file416
+    523  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a3:0x0] file417
+    524  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a4:0x0] file418
+    525  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a5:0x0] file419
+    526  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a6:0x0] file420
+    527  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a7:0x0] file421
+    528  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a8:0x0] file422
+    529  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a9:0x0] file423
+    530  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1aa:0x0] file424
+    531  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ab:0x0] file425
+    532  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ac:0x0] file426
+    533  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ad:0x0] file427
+    534  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ae:0x0] file428
+    535  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1af:0x0] file429
+    536  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b0:0x0] file430
+    537  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b1:0x0] file431
+    538  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b2:0x0] file432
+    539  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b3:0x0] file433
+    540  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b4:0x0] file434
+    541  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b5:0x0] file435
+    542  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b6:0x0] file436
+    543  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b7:0x0] file437
+    544  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b8:0x0] file438
+    545  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b9:0x0] file439
+    546  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ba:0x0] file440
+    547  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bb:0x0] file441
+    548  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bc:0x0] file442
+    549  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bd:0x0] file443
+    550  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1be:0x0] file444
+    551  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bf:0x0] file445
+    552  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c0:0x0] file446
+    553  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c1:0x0] file447
+    554  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c2:0x0] file448
+    555  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c3:0x0] file449
+    556  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c4:0x0] file450
+    557  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c5:0x0] file451
+    558  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c6:0x0] file452
+    559  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c7:0x0] file453
+    560  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c8:0x0] file454
+    561  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c9:0x0] file455
+    562  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ca:0x0] file456
+    563  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cb:0x0] file457
+    564  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cc:0x0] file458
+    565  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cd:0x0] file459
+    566  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ce:0x0] file460
+    567  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cf:0x0] file461
+    568  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d0:0x0] file462
+    569  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d1:0x0] file463
+    570  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d2:0x0] file464
+    571  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d3:0x0] file465
+    572  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d4:0x0] file466
+    573  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d5:0x0] file467
+    574  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d6:0x0] file468
+    575  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d7:0x0] file469
+    576  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d8:0x0] file470
+    577  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d9:0x0] file471
+    578  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1da:0x0] file472
+    579  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1db:0x0] file473
+    580  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1dc:0x0] file474
+    581  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1dd:0x0] file475
+    582  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1de:0x0] file476
+    583  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1df:0x0] file477
+    584  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e0:0x0] file478
+    585  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e1:0x0] file479
+    586  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e2:0x0] file480
+    587  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e3:0x0] file481
+    588  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e4:0x0] file482
+    589  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e5:0x0] file483
+    590  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e6:0x0] file484
+    591  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e7:0x0] file485
+    592  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e8:0x0] file486
+    593  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e9:0x0] file487
+    594  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ea:0x0] file488
+    595  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1eb:0x0] file489
+    596  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ec:0x0] file490
+    597  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ed:0x0] file491
+    598  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ee:0x0] file492
+    599  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ef:0x0] file493
+    600  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f0:0x0] file494
+    601  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f1:0x0] file495
+    602  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f2:0x0] file496
+    603  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f3:0x0] file497
+    604  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f4:0x0] file498
+    605  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f5:0x0] file499
+    606  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f6:0x0] file500
+    607  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f7:0x0] file501
+    608  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f8:0x0] file502
+    609  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f9:0x0] file503
+    610  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fa:0x0] file504
+    611  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fb:0x0] file505
+    612  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fc:0x0] file506
+    613  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fd:0x0] file507
diff --git a/tests/f_dir_optimize/expect.2 b/tests/f_dir_optimize/expect.2
new file mode 100644
index 000000000..c622ffec2
--- /dev/null
+++ b/tests/f_dir_optimize/expect.2
@@ -0,0 +1,511 @@
+
+     94   40755 (18)      0      0    4096 25-Aug-2012 06:09 fid=[0x5e:0xf6d09ca7:0x0] ..
+    105   40755 (18)      0      0   28672 25-Aug-2012 06:09 fid=[0x200000400:0x1:0x0] .
+    106  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2:0x0] file0
+    107  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3:0x0] file1
+    108  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4:0x0] file2
+    109  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5:0x0] file3
+    110  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6:0x0] file4
+    111  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7:0x0] file5
+    112  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8:0x0] file6
+    113  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9:0x0] file7
+    114  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa:0x0] file8
+    115  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb:0x0] file9
+    116  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc:0x0] file10
+    117  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd:0x0] file11
+    118  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe:0x0] file12
+    119  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf:0x0] file13
+    120  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10:0x0] file14
+    121  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11:0x0] file15
+    122  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12:0x0] file16
+    123  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13:0x0] file17
+    124  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14:0x0] file18
+    125  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15:0x0] file19
+    126  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16:0x0] file20
+    127  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17:0x0] file21
+    128  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18:0x0] file22
+    129  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19:0x0] file23
+    130  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a:0x0] file24
+    131  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b:0x0] file25
+    132  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c:0x0] file26
+    133  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d:0x0] file27
+    134  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e:0x0] file28
+    135  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f:0x0] file29
+    136  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x20:0x0] file30
+    137  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x21:0x0] file31
+    138  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x22:0x0] file32
+    139  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x23:0x0] file33
+    140  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x24:0x0] file34
+    141  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x25:0x0] file35
+    142  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x26:0x0] file36
+    143  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x27:0x0] file37
+    144  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x28:0x0] file38
+    145  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x29:0x0] file39
+    146  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2a:0x0] file40
+    147  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2b:0x0] file41
+    148  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2c:0x0] file42
+    149  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2d:0x0] file43
+    150  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2e:0x0] file44
+    151  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x2f:0x0] file45
+    152  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x30:0x0] file46
+    153  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x31:0x0] file47
+    154  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x32:0x0] file48
+    155  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x33:0x0] file49
+    156  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x34:0x0] file50
+    157  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x35:0x0] file51
+    158  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x36:0x0] file52
+    159  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x37:0x0] file53
+    160  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x38:0x0] file54
+    161  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x39:0x0] file55
+    162  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3a:0x0] file56
+    163  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3b:0x0] file57
+    164  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3c:0x0] file58
+    165  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3d:0x0] file59
+    166  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3e:0x0] file60
+    167  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x3f:0x0] file61
+    168  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x40:0x0] file62
+    169  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x41:0x0] file63
+    170  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x42:0x0] file64
+    171  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x43:0x0] file65
+    172  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x44:0x0] file66
+    173  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x45:0x0] file67
+    174  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x46:0x0] file68
+    175  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x47:0x0] file69
+    176  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x48:0x0] file70
+    177  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x49:0x0] file71
+    178  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4a:0x0] file72
+    179  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4b:0x0] file73
+    180  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4c:0x0] file74
+    181  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4d:0x0] file75
+    182  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4e:0x0] file76
+    183  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x4f:0x0] file77
+    184  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x50:0x0] file78
+    185  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x51:0x0] file79
+    186  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x52:0x0] file80
+    187  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x53:0x0] file81
+    188  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x54:0x0] file82
+    189  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x55:0x0] file83
+    190  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x56:0x0] file84
+    191  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x57:0x0] file85
+    192  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x58:0x0] file86
+    193  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x59:0x0] file87
+    194  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5a:0x0] file88
+    195  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5b:0x0] file89
+    196  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5c:0x0] file90
+    197  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5d:0x0] file91
+    198  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5e:0x0] file92
+    199  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x5f:0x0] file93
+    200  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x60:0x0] file94
+    201  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x61:0x0] file95
+    202  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x62:0x0] file96
+    203  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x63:0x0] file97
+    204  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x64:0x0] file98
+    205  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x65:0x0] file99
+    206  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x66:0x0] file100
+    207  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x67:0x0] file101
+    208  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x68:0x0] file102
+    209  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x69:0x0] file103
+    210  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6a:0x0] file104
+    211  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6b:0x0] file105
+    212  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6c:0x0] file106
+    213  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6d:0x0] file107
+    214  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6e:0x0] file108
+    215  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x6f:0x0] file109
+    216  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x70:0x0] file110
+    217  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x71:0x0] file111
+    218  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x72:0x0] file112
+    219  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x73:0x0] file113
+    220  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x74:0x0] file114
+    221  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x75:0x0] file115
+    222  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x76:0x0] file116
+    223  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x77:0x0] file117
+    224  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x78:0x0] file118
+    225  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x79:0x0] file119
+    226  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7a:0x0] file120
+    227  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7b:0x0] file121
+    228  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7c:0x0] file122
+    229  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7d:0x0] file123
+    230  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7e:0x0] file124
+    231  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x7f:0x0] file125
+    232  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x80:0x0] file126
+    233  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x81:0x0] file127
+    234  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x82:0x0] file128
+    235  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x83:0x0] file129
+    236  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x84:0x0] file130
+    237  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x85:0x0] file131
+    238  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x86:0x0] file132
+    239  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x87:0x0] file133
+    240  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x88:0x0] file134
+    241  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x89:0x0] file135
+    242  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8a:0x0] file136
+    243  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8b:0x0] file137
+    244  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8c:0x0] file138
+    245  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8d:0x0] file139
+    246  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8e:0x0] file140
+    247  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x8f:0x0] file141
+    248  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x90:0x0] file142
+    249  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x91:0x0] file143
+    250  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x92:0x0] file144
+    251  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x93:0x0] file145
+    252  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x94:0x0] file146
+    253  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x95:0x0] file147
+    254  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x96:0x0] file148
+    255  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x97:0x0] file149
+    256  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x98:0x0] file150
+    257  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x99:0x0] file151
+    258  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9a:0x0] file152
+    259  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9b:0x0] file153
+    260  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9c:0x0] file154
+    261  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9d:0x0] file155
+    262  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9e:0x0] file156
+    263  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x9f:0x0] file157
+    264  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa0:0x0] file158
+    265  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa1:0x0] file159
+    266  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa2:0x0] file160
+    267  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa3:0x0] file161
+    268  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa4:0x0] file162
+    269  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa5:0x0] file163
+    270  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa6:0x0] file164
+    271  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa7:0x0] file165
+    272  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa8:0x0] file166
+    273  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xa9:0x0] file167
+    274  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xaa:0x0] file168
+    275  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xab:0x0] file169
+    276  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xac:0x0] file170
+    277  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xad:0x0] file171
+    278  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xae:0x0] file172
+    279  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xaf:0x0] file173
+    280  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb0:0x0] file174
+    281  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb1:0x0] file175
+    282  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb2:0x0] file176
+    283  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb3:0x0] file177
+    284  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb4:0x0] file178
+    285  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb5:0x0] file179
+    286  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb6:0x0] file180
+    287  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb7:0x0] file181
+    288  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb8:0x0] file182
+    289  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xb9:0x0] file183
+    290  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xba:0x0] file184
+    291  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbb:0x0] file185
+    292  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbc:0x0] file186
+    293  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbd:0x0] file187
+    294  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbe:0x0] file188
+    295  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xbf:0x0] file189
+    296  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc0:0x0] file190
+    297  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc1:0x0] file191
+    298  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc2:0x0] file192
+    299  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc3:0x0] file193
+    300  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc4:0x0] file194
+    301  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc5:0x0] file195
+    302  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc6:0x0] file196
+    303  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc7:0x0] file197
+    304  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc8:0x0] file198
+    305  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xc9:0x0] file199
+    306  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xca:0x0] file200
+    307  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcb:0x0] file201
+    308  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcc:0x0] file202
+    309  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcd:0x0] file203
+    310  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xce:0x0] file204
+    311  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xcf:0x0] file205
+    312  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd0:0x0] file206
+    313  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd1:0x0] file207
+    314  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd2:0x0] file208
+    315  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd3:0x0] file209
+    316  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd4:0x0] file210
+    317  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd5:0x0] file211
+    318  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd6:0x0] file212
+    319  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd7:0x0] file213
+    320  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd8:0x0] file214
+    321  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xd9:0x0] file215
+    322  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xda:0x0] file216
+    323  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdb:0x0] file217
+    324  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdc:0x0] file218
+    325  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdd:0x0] file219
+    326  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xde:0x0] file220
+    327  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xdf:0x0] file221
+    328  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe0:0x0] file222
+    329  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe1:0x0] file223
+    330  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe2:0x0] file224
+    331  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe3:0x0] file225
+    332  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe4:0x0] file226
+    333  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe5:0x0] file227
+    334  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe6:0x0] file228
+    335  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe7:0x0] file229
+    336  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe8:0x0] file230
+    337  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xe9:0x0] file231
+    338  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xea:0x0] file232
+    339  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xeb:0x0] file233
+    340  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xec:0x0] file234
+    341  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xed:0x0] file235
+    342  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xee:0x0] file236
+    343  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xef:0x0] file237
+    344  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf0:0x0] file238
+    345  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf1:0x0] file239
+    346  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf2:0x0] file240
+    347  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf3:0x0] file241
+    348  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf4:0x0] file242
+    349  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf5:0x0] file243
+    350  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf6:0x0] file244
+    351  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf7:0x0] file245
+    352  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf8:0x0] file246
+    353  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xf9:0x0] file247
+    354  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfa:0x0] file248
+    355  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfb:0x0] file249
+    356  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfc:0x0] file250
+    357  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfd:0x0] file251
+    358  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xfe:0x0] file252
+    359  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0xff:0x0] file253
+    360  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x100:0x0] file254
+    361  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x101:0x0] file255
+    362  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x102:0x0] file256
+    363  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x103:0x0] file257
+    364  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x104:0x0] file258
+    365  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x105:0x0] file259
+    366  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x106:0x0] file260
+    367  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x107:0x0] file261
+    368  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x108:0x0] file262
+    369  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x109:0x0] file263
+    370  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10a:0x0] file264
+    371  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10b:0x0] file265
+    372  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10c:0x0] file266
+    373  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10d:0x0] file267
+    374  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10e:0x0] file268
+    375  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x10f:0x0] file269
+    376  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x110:0x0] file270
+    377  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x111:0x0] file271
+    378  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x112:0x0] file272
+    379  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x113:0x0] file273
+    380  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x114:0x0] file274
+    381  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x115:0x0] file275
+    382  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x116:0x0] file276
+    383  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x117:0x0] file277
+    384  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x118:0x0] file278
+    385  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x119:0x0] file279
+    386  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11a:0x0] file280
+    387  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11b:0x0] file281
+    388  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11c:0x0] file282
+    389  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11d:0x0] file283
+    390  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11e:0x0] file284
+    391  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x11f:0x0] file285
+    392  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x120:0x0] file286
+    393  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x121:0x0] file287
+    394  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x122:0x0] file288
+    395  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x123:0x0] file289
+    396  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x124:0x0] file290
+    397  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x125:0x0] file291
+    398  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x126:0x0] file292
+    399  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x127:0x0] file293
+    400  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x128:0x0] file294
+    401  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x129:0x0] file295
+    402  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12a:0x0] file296
+    403  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12b:0x0] file297
+    404  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12c:0x0] file298
+    405  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12d:0x0] file299
+    406  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12e:0x0] file300
+    407  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x12f:0x0] file301
+    408  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x130:0x0] file302
+    409  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x131:0x0] file303
+    410  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x132:0x0] file304
+    411  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x133:0x0] file305
+    412  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x134:0x0] file306
+    413  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x135:0x0] file307
+    414  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x136:0x0] file308
+    415  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x137:0x0] file309
+    416  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x138:0x0] file310
+    417  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x139:0x0] file311
+    418  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13a:0x0] file312
+    419  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13b:0x0] file313
+    420  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13c:0x0] file314
+    421  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13d:0x0] file315
+    422  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13e:0x0] file316
+    423  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x13f:0x0] file317
+    424  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x140:0x0] file318
+    425  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x141:0x0] file319
+    426  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x142:0x0] file320
+    427  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x143:0x0] file321
+    428  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x144:0x0] file322
+    429  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x145:0x0] file323
+    430  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x146:0x0] file324
+    431  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x147:0x0] file325
+    432  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x148:0x0] file326
+    433  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x149:0x0] file327
+    434  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14a:0x0] file328
+    435  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14b:0x0] file329
+    436  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14c:0x0] file330
+    437  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14d:0x0] file331
+    438  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14e:0x0] file332
+    439  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x14f:0x0] file333
+    440  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x150:0x0] file334
+    441  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x151:0x0] file335
+    442  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x152:0x0] file336
+    443  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x153:0x0] file337
+    444  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x154:0x0] file338
+    445  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x155:0x0] file339
+    446  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x156:0x0] file340
+    447  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x157:0x0] file341
+    448  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x158:0x0] file342
+    449  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x159:0x0] file343
+    450  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15a:0x0] file344
+    451  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15b:0x0] file345
+    452  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15c:0x0] file346
+    453  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15d:0x0] file347
+    454  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15e:0x0] file348
+    455  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x15f:0x0] file349
+    456  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x160:0x0] file350
+    457  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x161:0x0] file351
+    458  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x162:0x0] file352
+    459  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x163:0x0] file353
+    460  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x164:0x0] file354
+    461  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x165:0x0] file355
+    462  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x166:0x0] file356
+    463  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x167:0x0] file357
+    464  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x168:0x0] file358
+    465  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x169:0x0] file359
+    466  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16a:0x0] file360
+    467  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16b:0x0] file361
+    468  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16c:0x0] file362
+    469  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16d:0x0] file363
+    470  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16e:0x0] file364
+    471  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x16f:0x0] file365
+    472  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x170:0x0] file366
+    473  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x171:0x0] file367
+    474  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x172:0x0] file368
+    475  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x173:0x0] file369
+    476  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x174:0x0] file370
+    477  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x175:0x0] file371
+    478  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x176:0x0] file372
+    479  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x177:0x0] file373
+    480  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x178:0x0] file374
+    481  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x179:0x0] file375
+    482  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17a:0x0] file376
+    483  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17b:0x0] file377
+    484  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17c:0x0] file378
+    485  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17d:0x0] file379
+    486  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17e:0x0] file380
+    487  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x17f:0x0] file381
+    488  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x180:0x0] file382
+    489  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x181:0x0] file383
+    490  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x182:0x0] file384
+    491  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x183:0x0] file385
+    492  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x184:0x0] file386
+    493  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x185:0x0] file387
+    494  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x186:0x0] file388
+    495  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x187:0x0] file389
+    496  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x188:0x0] file390
+    497  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x189:0x0] file391
+    498  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18a:0x0] file392
+    499  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18b:0x0] file393
+    500  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18c:0x0] file394
+    501  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18d:0x0] file395
+    502  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18e:0x0] file396
+    503  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x18f:0x0] file397
+    504  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x190:0x0] file398
+    505  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x191:0x0] file399
+    506  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x192:0x0] file400
+    507  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x193:0x0] file401
+    508  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x194:0x0] file402
+    509  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x195:0x0] file403
+    510  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x196:0x0] file404
+    511  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x197:0x0] file405
+    512  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x198:0x0] file406
+    513  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x199:0x0] file407
+    514  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19a:0x0] file408
+    515  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19b:0x0] file409
+    516  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19c:0x0] file410
+    517  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19d:0x0] file411
+    518  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19e:0x0] file412
+    519  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x19f:0x0] file413
+    520  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a0:0x0] file414
+    521  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a1:0x0] file415
+    522  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a2:0x0] file416
+    523  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a3:0x0] file417
+    524  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a4:0x0] file418
+    525  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a5:0x0] file419
+    526  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a6:0x0] file420
+    527  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a7:0x0] file421
+    528  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a8:0x0] file422
+    529  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1a9:0x0] file423
+    530  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1aa:0x0] file424
+    531  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ab:0x0] file425
+    532  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ac:0x0] file426
+    533  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ad:0x0] file427
+    534  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ae:0x0] file428
+    535  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1af:0x0] file429
+    536  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b0:0x0] file430
+    537  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b1:0x0] file431
+    538  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b2:0x0] file432
+    539  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b3:0x0] file433
+    540  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b4:0x0] file434
+    541  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b5:0x0] file435
+    542  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b6:0x0] file436
+    543  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b7:0x0] file437
+    544  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b8:0x0] file438
+    545  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1b9:0x0] file439
+    546  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ba:0x0] file440
+    547  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bb:0x0] file441
+    548  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bc:0x0] file442
+    549  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bd:0x0] file443
+    550  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1be:0x0] file444
+    551  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1bf:0x0] file445
+    552  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c0:0x0] file446
+    553  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c1:0x0] file447
+    554  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c2:0x0] file448
+    555  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c3:0x0] file449
+    556  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c4:0x0] file450
+    557  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c5:0x0] file451
+    558  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c6:0x0] file452
+    559  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c7:0x0] file453
+    560  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c8:0x0] file454
+    561  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1c9:0x0] file455
+    562  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ca:0x0] file456
+    563  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cb:0x0] file457
+    564  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cc:0x0] file458
+    565  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cd:0x0] file459
+    566  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ce:0x0] file460
+    567  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1cf:0x0] file461
+    568  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d0:0x0] file462
+    569  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d1:0x0] file463
+    570  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d2:0x0] file464
+    571  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d3:0x0] file465
+    572  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d4:0x0] file466
+    573  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d5:0x0] file467
+    574  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d6:0x0] file468
+    575  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d7:0x0] file469
+    576  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d8:0x0] file470
+    577  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1d9:0x0] file471
+    578  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1da:0x0] file472
+    579  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1db:0x0] file473
+    580  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1dc:0x0] file474
+    581  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1dd:0x0] file475
+    582  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1de:0x0] file476
+    583  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1df:0x0] file477
+    584  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e0:0x0] file478
+    585  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e1:0x0] file479
+    586  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e2:0x0] file480
+    587  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e3:0x0] file481
+    588  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e4:0x0] file482
+    589  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e5:0x0] file483
+    590  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e6:0x0] file484
+    591  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e7:0x0] file485
+    592  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e8:0x0] file486
+    593  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1e9:0x0] file487
+    594  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ea:0x0] file488
+    595  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1eb:0x0] file489
+    596  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ec:0x0] file490
+    597  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ed:0x0] file491
+    598  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ee:0x0] file492
+    599  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1ef:0x0] file493
+    600  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f0:0x0] file494
+    601  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f1:0x0] file495
+    602  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f2:0x0] file496
+    603  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f3:0x0] file497
+    604  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f4:0x0] file498
+    605  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f5:0x0] file499
+    606  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f6:0x0] file500
+    607  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f7:0x0] file501
+    608  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f8:0x0] file502
+    609  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1f9:0x0] file503
+    610  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fa:0x0] file504
+    611  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fb:0x0] file505
+    612  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fc:0x0] file506
+    613  100644 (17)      0      0       0 25-Aug-2012 06:09 fid=[0x200000400:0x1fd:0x0] file507
diff --git a/tests/f_dir_optimize/image.gz b/tests/f_dir_optimize/image.gz
new file mode 100644
index 0000000000000000000000000000000000000000..d457d3b67019f0047fd626bc90ee55f2724a73c6
GIT binary patch
literal 102520
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

literal 0
HcmV?d00001

diff --git a/tests/f_dir_optimize/name b/tests/f_dir_optimize/name
new file mode 100644
index 000000000..8a059bff2
--- /dev/null
+++ b/tests/f_dir_optimize/name
@@ -0,0 +1 @@
+optimize directories
diff --git a/tests/f_dir_optimize/script b/tests/f_dir_optimize/script
new file mode 100644
index 000000000..f535e7b7f
--- /dev/null
+++ b/tests/f_dir_optimize/script
@@ -0,0 +1,36 @@
+FSCK_OPT="-fvyD"
+
+IMAGE=$test_dir/image.gz
+gunzip < $IMAGE > $TMPFILE
+
+$DEBUGFS -R 'ls -lD /ROOT/testdir' $TMPFILE 2>&1 | tail -n +2 |	\
+	sort > $test_name.1.log
+
+cmp -s $test_dir/expect.1 $test_name.1.log
+status1=$?
+
+$FSCK $FSCK_OPT -N test_filesys $TMPFILE > /dev/null 2>&1
+
+$DEBUGFS -R 'ls -lD /ROOT/testdir' $TMPFILE 2>&1 | tail -n +2 |	\
+	sort > $test_name.2.log
+cmp -s $test_dir/expect.2 $test_name.2.log
+status2=$?
+
+if [ "$status1" -eq 0 -a "$status2" -eq 0 ]; then
+	echo "$test_name: $test_description: ok"
+	touch $test_name.ok
+else
+	echo "$test_name: $test_description: failed"
+	[ $status1 -ne 0 ] &&
+		diff $DIFF_OPTS $test_dir/expect.1 $test_name.1.log	\
+			>> $test_name.failed
+	[ $status2 -ne 0 ] &&
+		diff $DIFF_OPTS $test_dir/expect.2 $test_name.2.log	\
+			>> $test_name.failed
+fi
+
+if [ "$SKIP_CLEANUP" != "true" ] ; then
+	unset IMAGE FSCK_OPT
+	unset SKIP_CLEANUP
+	unset DESCRIPTION SKIP_UNLINK
+fi
diff --git a/tests/f_dirdata_mfid/expect.1 b/tests/f_dirdata_mfid/expect.1
new file mode 100644
index 000000000..9267e199f
--- /dev/null
+++ b/tests/f_dirdata_mfid/expect.1
@@ -0,0 +1,35 @@
+test_filesys: recovering journal
+Truncating orphaned inode 282 (uid=0, gid=0, mode=0100644, size=8256)
+Truncating orphaned inode 275 (uid=0, gid=0, mode=0100644, size=8256)
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Entry 'f920b.sanity' in /ROOT/d920b.sanity (278) dirdata length set incorrectly.
+Clear? yes
+
+Entry 'f920c.sanity' in /ROOT/d920c.sanity (280) has deleted/unused inode 281 fid=[0x200000bd1:0x8:0x0],[0x200000bd1:0x8:0x0],[0x200000bd1:0x8:0x0].  Clear? yes
+
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+Free blocks count wrong (13286, counted=13281).
+Fix? yes
+
+Inode bitmap differences:  -281
+Fix? yes
+
+Free inodes count wrong for group #0 (719, counted=720).
+Fix? yes
+
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (1667072, 270) != expected (1667072, 271)
+Update quota info for quota type 0? yes
+
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (1667072, 270) != expected (1667072, 271)
+Update quota info for quota type 1? yes
+
+[QUOTA WARNING] Usage inconsistent for ID 0:actual (1667072, 270) != expected (1667072, 271)
+Update quota info for quota type 2? yes
+
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 280/1000 files (1.1% non-contiguous), 2719/16000 blocks
+Exit status is 1
diff --git a/tests/f_dirdata_mfid/expect.2 b/tests/f_dirdata_mfid/expect.2
new file mode 100644
index 000000000..9df35cf56
--- /dev/null
+++ b/tests/f_dirdata_mfid/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 280/1000 files (1.1% non-contiguous), 2719/16000 blocks
+Exit status is 0
diff --git a/tests/f_dirdata_mfid/image.gz b/tests/f_dirdata_mfid/image.gz
new file mode 100644
index 0000000000000000000000000000000000000000..bc5a46ea94105ef6f5bb3f1825921dacdfcd178d
GIT binary patch
literal 116296
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

literal 0
HcmV?d00001

diff --git a/tests/f_dirdata_mfid/name b/tests/f_dirdata_mfid/name
new file mode 100644
index 000000000..9211de28c
--- /dev/null
+++ b/tests/f_dirdata_mfid/name
@@ -0,0 +1 @@
+multiple lufid in single dirdata entry
-- 
2.43.7


^ permalink raw reply related

* [PATCH 13/13] ext2fs: share list_dirdata code
From: Artem Blagodarenko @ 2026-05-24 20:36 UTC (permalink / raw)
  To: linux-ext4; +Cc: adilger.kernel, Artem Blagodarenko, Andreas Dilger
In-Reply-To: <20260524203658.12406-1-artem.blagodarenko@gmail.com>

debugfs and e2fsck format dirdata output the same way,
but each currently has its own implementation.

Move the shared code to libext2fs and replace the
duplicate implementations with a common function call.

Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
---
 debugfs/ls.c          | 51 +--------------------------------------
 e2fsck/message.c      | 55 ++-----------------------------------------
 lib/ext2fs/dirblock.c | 50 +++++++++++++++++++++++++++++++++++++++
 lib/ext2fs/ext2fs.h   |  1 +
 4 files changed, 54 insertions(+), 103 deletions(-)

diff --git a/debugfs/ls.c b/debugfs/ls.c
index d225982cb..1ba72eb6c 100644
--- a/debugfs/ls.c
+++ b/debugfs/ls.c
@@ -46,55 +46,6 @@ struct list_dir_struct {
 static const char *monstr[] = { "Jan", "Feb", "Mar", "Apr", "May", "Jun",
 				"Jul", "Aug", "Sep", "Oct", "Nov", "Dec"};
 
-static void list_dirdata(struct list_dir_struct *ls,
-			 struct ext2_dir_entry *dirent)
-{
-	unsigned char	*data;
-	int		dlen;
-	__u8		dirdata_mask;
-	__u8		file_type = dirent->name_len >> 8;
-
-	data = (unsigned char *)dirent->name +
-		(dirent->name_len & EXT2_NAME_LEN) + 1;
-
-	for (dirdata_mask = EXT2_FT_MASK + 1;
-	     dirdata_mask != 0; dirdata_mask <<= 1) {
-		if ((dirdata_mask & file_type) == 0)
-			continue;
-
-		dlen = data[0];
-
-		if (dirdata_mask == EXT2_DIRENT_LUFID) {
-			struct lu_fid fid;
-			int offset = 0;
-			fprintf(ls->f, " fid=");
-			while (offset < (dlen - 1)) {
-				memcpy(&fid, data + offset + 1, sizeof(fid));
-				fid_be_to_cpu(&fid, &fid);
-				offset += sizeof(fid);
-				fprintf(ls->f, DFID, PFID(&fid));
-				if (offset < (dlen - 1))
-					fprintf(ls->f, ",");
-			}
-		} else if (dirdata_mask == EXT2_DIRENT_CFHASH) {
-			struct ext4_dirent_hash hash;
-
-			memcpy(&hash, data, sizeof(hash));
-			hash_le_to_cpu(&hash, &hash);
-
-			fprintf(ls->f, "hash: 0x%08x, minor_hash: 0x%08x",
-				hash.dh_hash.hash, hash.dh_hash.minor_hash);
-		} else {
-			int i;
-
-			for (i = 1; i < dlen; i++)
-				fprintf(ls->f, "%02x", data[i]);
-		}
-
-		data += dlen;
-	}
-}
-
 static int print_filename(FILE *f, struct ext2_dir_entry *dirent, int options)
 {
 	unsigned char	ch;
@@ -199,7 +150,7 @@ static int list_dir_proc(ext2_ino_t dir EXT2FS_ATTR((unused)),
 				(unsigned long long) EXT2_I_SIZE(&inode));
 		fprintf(ls->f, " %s", datestr);
 		if ((ls->options & DIRDATA_OPT) != 0)
-			list_dirdata(ls, dirent);
+			list_dirdata(ls->f, dirent);
 		fprintf(ls->f, " ");
 		print_filename(ls->f, dirent, options);
 		fputc('\n', ls->f);
diff --git a/e2fsck/message.c b/e2fsck/message.c
index 193d887ec..60859f95f 100644
--- a/e2fsck/message.c
+++ b/e2fsck/message.c
@@ -347,41 +347,6 @@ static _INLINE_ void expand_inode_expression(FILE *f, ext2_filsys fs, char ch,
 	}
 }
 
-int get_dirent_fid(struct ext2_dir_entry *dirent, struct lu_fid **fids)
-{
-	unsigned char *data = (unsigned char *)dirent->name +
-			      (dirent->name_len & EXT2_NAME_LEN) + 1;
-	__u8 file_type = dirent->name_len >> 8;
-	__u8 dirdata_mask;
-	int retlen = 0;
-
-	for (dirdata_mask = EXT2_FT_MASK + 1;
-	     dirdata_mask != 0; dirdata_mask <<= 1) {
-		int dlen;
-
-		if ((dirdata_mask & file_type) == 0)
-			continue;
-
-		dlen = data[0];
-		if (dirdata_mask == EXT2_DIRENT_LUFID) {
-			struct lu_fid *fid;
-			int len = dlen;
-
-			*fids = (struct lu_fid *)(data + 1);
-			for (fid = *fids; len >= sizeof(*fid); fid++,
-			     len -= sizeof(*fid)) {
-				memcpy(fid, data + 1, sizeof(*fid));
-				fid_be_to_cpu(fid, fid);
-			}
-			retlen = dlen;
-			break;
-		}
-		data += dlen;
-	}
-
-	return retlen;
-}
-
 /*
  * This function expands '%dX' expressions
  */
@@ -397,26 +362,10 @@ static _INLINE_ void expand_dirent_expression(FILE *f, ext2_filsys fs, char ch,
 	dirent = ctx->dirent;
 
 	switch (ch) {
-	case 'i': {
-		struct lu_fid *fids;
-		int i;
-		int fids_len;
-
+	case 'i':
 		fprintf(f, "%u", dirent->inode);
-
-		fids_len = get_dirent_fid(dirent, &fids);
-		if (fids_len > sizeof(*fids))
-			fprintf(f, " fid=");
-		while (fids_len > sizeof(*fids)) {
-			fprintf(f, DFID, PFID(fids));
-			fids++;
-			fids_len -= sizeof(*fids);
-			if (fids_len >= sizeof(*fids))
-				fprintf(f, ",");
-		}
-
+		list_dirdata(NULL, dirent);
 		break;
-	}
 	case 'n':
 		len = ext2fs_dirent_name_len(dirent);
 		if ((ext2fs_get_rec_len(fs, dirent, &rec_len) == 0) &&
diff --git a/lib/ext2fs/dirblock.c b/lib/ext2fs/dirblock.c
index fa7cc83ff..b22800406 100644
--- a/lib/ext2fs/dirblock.c
+++ b/lib/ext2fs/dirblock.c
@@ -19,6 +19,7 @@
 
 #include "ext2_fs.h"
 #include "ext2fs.h"
+#include "lfsck.h"
 
 errcode_t ext2fs_read_dir_block4(ext2_filsys fs, blk64_t block,
 				 void *buf, int flags EXT2FS_ATTR((unused)),
@@ -145,3 +146,52 @@ errcode_t ext2fs_write_dir_block(ext2_filsys fs, blk_t block,
 	return ext2fs_write_dir_block3(fs, block, inbuf, 0);
 }
 
+void list_dirdata(FILE *f, struct ext2_dir_entry *dirent)
+{
+	unsigned char	*data;
+	int		dlen;
+	__u8		dirdata_mask;
+	__u8		file_type = dirent->name_len >> 8;
+	FILE *out = f ? f : stdout;
+	int offset = 0;
+
+	data = (unsigned char *)dirent->name +
+		(dirent->name_len & EXT2_NAME_LEN) + 1;
+
+	for (dirdata_mask = EXT2_FT_MASK + 1;
+	     dirdata_mask != 0; dirdata_mask <<= 1) {
+		if ((dirdata_mask & file_type) == 0)
+			continue;
+		dlen = data[offset];
+
+		if (dirdata_mask == EXT2_DIRENT_LUFID) {
+			struct lu_fid fid;
+			fprintf(out, " fid=");
+			while (offset < (dlen - 1)) {
+				memcpy(&fid, data + offset + 1, sizeof(fid));
+				fid_be_to_cpu(&fid, &fid);
+				offset += sizeof(fid);
+				fprintf(out, DFID, PFID(&fid));
+				if (offset < (dlen - 1))
+					fprintf(out, ",");
+			}
+		} else if (dirdata_mask == EXT2_DIRENT_CFHASH) {
+			struct ext4_dirent_hash hash;
+
+			memcpy(&hash, data + offset + 1, sizeof(hash));
+			hash_le_to_cpu(&hash, &hash);
+
+			fprintf(out, " hash=0x%08x, minor_hash=0x%08x",
+				hash.dh_hash.hash, hash.dh_hash.minor_hash);
+			offset += sizeof(hash);
+		} else {
+			int i;
+
+			for (i = 1; i < dlen; i++)
+				fprintf(out, "%02x", data[i]);
+		}
+
+		data += dlen;
+	}
+}
+
diff --git a/lib/ext2fs/ext2fs.h b/lib/ext2fs/ext2fs.h
index b14ba0a34..b9e02dab2 100644
--- a/lib/ext2fs/ext2fs.h
+++ b/lib/ext2fs/ext2fs.h
@@ -1318,6 +1318,7 @@ extern errcode_t ext2fs_write_dir_block3(ext2_filsys fs, blk64_t block,
 					 void *buf, int flags);
 extern errcode_t ext2fs_write_dir_block4(ext2_filsys fs, blk64_t block,
 					 void *buf, int flags, ext2_ino_t ino);
+void list_dirdata(FILE *f, struct ext2_dir_entry *dirent);
 
 /* dirhash.c */
 extern errcode_t ext2fs_dirhash(int version, const char *name, int len,
-- 
2.43.7


^ permalink raw reply related

* [PATCH 12/13] e2fsck: add test suite for dirdata-specific optimization
From: Artem Blagodarenko @ 2026-05-24 20:36 UTC (permalink / raw)
  To: linux-ext4
  Cc: adilger.kernel, Artem Blagodarenko, Andreas Dilger, Pravin Shelar,
	Andreas Dilger
In-Reply-To: <20260524203658.12406-1-artem.blagodarenko@gmail.com>

Add comprehensive test for DIRDATA-specific directory optimization scenarios.
This test validates that Lustre File Identifier (LUFID) and Checksum Hash
(CFHASH) fields are correctly preserved during directory optimization and
rehashing operations.

This test ensures:
- dirdata preservation during rehashing
- Proper dirdata field alignment in optimized entries
- No data loss or corruption during rehashing
- Directory structure consistency with extra fields

The test filesystem contains pre-populated DIRDATA entries that stress
the optimization code paths and validate field handling.

Signed-off-by: Andreas Dilger <adilger@whamcloud.com>
Signed-off-by: Pravin Shelar <pravin@clusterfs.com>
Signed-off-by: Artem Blagodarenko <artem.blagodarenko@gmail.com>
Reviewed-by: Andreas Dilger <adilger@dilger.ca>
---
 tests/f_dirdata_optimize/expect.1 |  10 ++++++++++
 tests/f_dirdata_optimize/expect.2 |   7 +++++++
 tests/f_dirdata_optimize/image.gz | Bin 0 -> 32121 bytes
 tests/f_dirdata_optimize/name     |   1 +
 tests/f_dirdata_optimize/script   |   3 +++
 5 files changed, 21 insertions(+)

diff --git a/tests/f_dirdata_optimize/expect.1 b/tests/f_dirdata_optimize/expect.1
new file mode 100644
index 000000000..52368d33d
--- /dev/null
+++ b/tests/f_dirdata_optimize/expect.1
@@ -0,0 +1,10 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 3A: Optimizing directories
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+
+test_filesys: ***** FILE SYSTEM WAS MODIFIED *****
+test_filesys: 102/4096 files (2.9% non-contiguous), 686/2048 blocks
+Exit status is 0
diff --git a/tests/f_dirdata_optimize/expect.2 b/tests/f_dirdata_optimize/expect.2
new file mode 100644
index 000000000..3cf9314e2
--- /dev/null
+++ b/tests/f_dirdata_optimize/expect.2
@@ -0,0 +1,7 @@
+Pass 1: Checking inodes, blocks, and sizes
+Pass 2: Checking directory structure
+Pass 3: Checking directory connectivity
+Pass 4: Checking reference counts
+Pass 5: Checking group summary information
+test_filesys: 102/4096 files (2.9% non-contiguous), 686/2048 blocks
+Exit status is 0
diff --git a/tests/f_dirdata_optimize/image.gz b/tests/f_dirdata_optimize/image.gz
new file mode 100644
index 0000000000000000000000000000000000000000..fcb7f4f866cea3160b77da4998ec69c0817afebd
GIT binary patch
literal 32121
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
QzzQ?E_2H9z*yphN4<R+&>;M1&

literal 0
HcmV?d00001

diff --git a/tests/f_dirdata_optimize/name b/tests/f_dirdata_optimize/name
new file mode 100644
index 000000000..1649a3702
--- /dev/null
+++ b/tests/f_dirdata_optimize/name
@@ -0,0 +1 @@
+optimize directories with dirdata
diff --git a/tests/f_dirdata_optimize/script b/tests/f_dirdata_optimize/script
new file mode 100644
index 000000000..52cf88ed2
--- /dev/null
+++ b/tests/f_dirdata_optimize/script
@@ -0,0 +1,3 @@
+FSCK_OPT="-Dyf"
+SECOND_FSCK_OPT="-yf"
+. $cmd_dir/run_e2fsck
-- 
2.43.7


^ permalink raw reply related

* [Bug 221570] [BUG] ext4: WARNING in dquot_reclaim_space_nodirty on bigalloc + PUNCH_HOLE
From: bugzilla-daemon @ 2026-05-25  1:41 UTC (permalink / raw)
  To: linux-ext4
In-Reply-To: <bug-221570-13602@https.bugzilla.kernel.org/>

https://bugzilla.kernel.org/show_bug.cgi?id=221570

Theodore Tso (tytso@mit.edu) changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tytso@mit.edu

--- Comment #3 from Theodore Tso (tytso@mit.edu) ---
When reporting these sorts of syzkaller bugs, please include the file system
image that was mounted in the VM.

The official upstream syzkaller has a way where you can download it from their
web interface.  The problem with people running forked copies of syzkallers are
(a) often this is a duplicate of a bug already reported by the upstrea/official
syzkaller, and (b) without the web interface, looking at these bugs are much
more difficult.

Also note that if the file system image is corrupted (which is often the case
with Syzkaller), addressing these issues are a best efforts basis by the ext4
developers.   Some company is going to fund an engineer to work on this on
official work time.  Volunteers who have time on weekends or late at night
can't be expected to work these sorts of issues on anything other than a "best
efforts" basis.

-- 
You may reply to this email to add a comment.

You are receiving this mail because:
You are watching the assignee of the bug.

^ permalink raw reply

* Re: [PATCH 03/17] ocfs2/dlm: replace __get_free_page() with kmalloc()
From: Joseph Qi @ 2026-05-25  2:50 UTC (permalink / raw)
  To: Mike Rapoport (Microsoft), Mark Fasheh, Joel Becker, akpm
  Cc: linux-kernel, linux-fsdevel, ocfs2-devel, linux-nilfs, linux-nfs,
	jfs-discussion, linux-ext4, linux-mm
In-Reply-To: <20260523-b4-fs-v1-3-275e36a83f0e@kernel.org>



On 5/24/26 1:54 AM, Mike Rapoport (Microsoft) wrote:
> A few places in ocsfs2 allocate temporary buffers with __get_free_page() or
> get_zeroed_page().
> 
> kmalloc() is a better API for such use and it also provides better
> scalability and more debugging possibilities.
> 
> Replace use of __get_free_page() and get_zeroed_page() with kmalloc() and
> kzalloc() respectively.
> 
> Signed-off-by: Mike Rapoport (Microsoft) <rppt@kernel.org>

Looks fine.
Reviewed-by: Joseph Qi <joseph.qi@linux.alibaba.com>

> ---
>  fs/ocfs2/dlm/dlmdebug.c    | 24 +++++++++---------------
>  fs/ocfs2/dlm/dlmdomain.c   |  8 +++++---
>  fs/ocfs2/dlm/dlmmaster.c   |  5 ++---
>  fs/ocfs2/dlm/dlmrecovery.c |  4 ++--
>  4 files changed, 18 insertions(+), 23 deletions(-)
> 
> diff --git a/fs/ocfs2/dlm/dlmdebug.c b/fs/ocfs2/dlm/dlmdebug.c
> index fe4fdd09bae3..6ca8b3b68eef 100644
> --- a/fs/ocfs2/dlm/dlmdebug.c
> +++ b/fs/ocfs2/dlm/dlmdebug.c
> @@ -260,10 +260,10 @@ void dlm_print_one_mle(struct dlm_master_list_entry *mle)
>  {
>  	char *buf;
>  
> -	buf = (char *) get_zeroed_page(GFP_ATOMIC);
> +	buf = kzalloc(PAGE_SIZE, GFP_ATOMIC);
>  	if (buf) {
>  		dump_mle(mle, buf, PAGE_SIZE - 1);
> -		free_page((unsigned long)buf);
> +		kfree(buf);
>  	}
>  }
>  
> @@ -280,7 +280,7 @@ static struct dentry *dlm_debugfs_root;
>  /* begin - utils funcs */
>  static int debug_release(struct inode *inode, struct file *file)
>  {
> -	free_page((unsigned long)file->private_data);
> +	kfree(file->private_data);
>  	return 0;
>  }
>  
> @@ -327,17 +327,15 @@ static int debug_purgelist_open(struct inode *inode, struct file *file)
>  	struct dlm_ctxt *dlm = inode->i_private;
>  	char *buf = NULL;
>  
> -	buf = (char *) get_zeroed_page(GFP_NOFS);
> +	buf = kzalloc(PAGE_SIZE, GFP_NOFS);
>  	if (!buf)
> -		goto bail;
> +		return -ENOMEM;
>  
>  	i_size_write(inode, debug_purgelist_print(dlm, buf, PAGE_SIZE - 1));
>  
>  	file->private_data = buf;
>  
>  	return 0;
> -bail:
> -	return -ENOMEM;
>  }
>  
>  static const struct file_operations debug_purgelist_fops = {
> @@ -384,17 +382,15 @@ static int debug_mle_open(struct inode *inode, struct file *file)
>  	struct dlm_ctxt *dlm = inode->i_private;
>  	char *buf = NULL;
>  
> -	buf = (char *) get_zeroed_page(GFP_NOFS);
> +	buf = kzalloc(PAGE_SIZE, GFP_NOFS);
>  	if (!buf)
> -		goto bail;
> +		return -ENOMEM;
>  
>  	i_size_write(inode, debug_mle_print(dlm, buf, PAGE_SIZE - 1));
>  
>  	file->private_data = buf;
>  
>  	return 0;
> -bail:
> -	return -ENOMEM;
>  }
>  
>  static const struct file_operations debug_mle_fops = {
> @@ -775,17 +771,15 @@ static int debug_state_open(struct inode *inode, struct file *file)
>  	struct dlm_ctxt *dlm = inode->i_private;
>  	char *buf = NULL;
>  
> -	buf = (char *) get_zeroed_page(GFP_NOFS);
> +	buf = kzalloc(PAGE_SIZE, GFP_NOFS);
>  	if (!buf)
> -		goto bail;
> +		return -ENOMEM;
>  
>  	i_size_write(inode, debug_state_print(dlm, buf, PAGE_SIZE - 1));
>  
>  	file->private_data = buf;
>  
>  	return 0;
> -bail:
> -	return -ENOMEM;
>  }
>  
>  static const struct file_operations debug_state_fops = {
> diff --git a/fs/ocfs2/dlm/dlmdomain.c b/fs/ocfs2/dlm/dlmdomain.c
> index dc9da9133c8e..97bb9400e24b 100644
> --- a/fs/ocfs2/dlm/dlmdomain.c
> +++ b/fs/ocfs2/dlm/dlmdomain.c
> @@ -63,7 +63,7 @@ static inline void byte_copymap(u8 dmap[], unsigned long smap[],
>  static void dlm_free_pagevec(void **vec, int pages)
>  {
>  	while (pages--)
> -		free_page((unsigned long)vec[pages]);
> +		kfree(vec[pages]);
>  	kfree(vec);
>  }
>  
> @@ -75,9 +75,11 @@ static void **dlm_alloc_pagevec(int pages)
>  	if (!vec)
>  		return NULL;
>  
> -	for (i = 0; i < pages; i++)
> -		if (!(vec[i] = (void *)__get_free_page(GFP_KERNEL)))
> +	for (i = 0; i < pages; i++) {
> +		vec[i] = kmalloc(PAGE_SIZE, GFP_KERNEL);
> +		if (!vec[i])
>  			goto out_free;
> +	}
>  
>  	mlog(0, "Allocated DLM hash pagevec; %d pages (%lu expected), %lu buckets per page\n",
>  	     pages, (unsigned long)DLM_HASH_PAGES,
> diff --git a/fs/ocfs2/dlm/dlmmaster.c b/fs/ocfs2/dlm/dlmmaster.c
> index 93eff38fdadd..aee3b4c56dcc 100644
> --- a/fs/ocfs2/dlm/dlmmaster.c
> +++ b/fs/ocfs2/dlm/dlmmaster.c
> @@ -2548,7 +2548,7 @@ static int dlm_migrate_lockres(struct dlm_ctxt *dlm,
>  
>  	/* preallocate up front. if this fails, abort */
>  	ret = -ENOMEM;
> -	mres = (struct dlm_migratable_lockres *) __get_free_page(GFP_NOFS);
> +	mres = kmalloc(PAGE_SIZE, GFP_NOFS);
>  	if (!mres) {
>  		mlog_errno(ret);
>  		goto leave;
> @@ -2725,8 +2725,7 @@ static int dlm_migrate_lockres(struct dlm_ctxt *dlm,
>  	if (wake)
>  		wake_up(&res->wq);
>  
> -	if (mres)
> -		free_page((unsigned long)mres);
> +	kfree(mres);
>  
>  	dlm_put(dlm);
>  
> diff --git a/fs/ocfs2/dlm/dlmrecovery.c b/fs/ocfs2/dlm/dlmrecovery.c
> index 128872bd945d..9b97bf73df22 100644
> --- a/fs/ocfs2/dlm/dlmrecovery.c
> +++ b/fs/ocfs2/dlm/dlmrecovery.c
> @@ -837,7 +837,7 @@ int dlm_request_all_locks_handler(struct o2net_msg *msg, u32 len, void *data,
>  	}
>  
>  	/* this will get freed by dlm_request_all_locks_worker */
> -	buf = (char *) __get_free_page(GFP_NOFS);
> +	buf = kmalloc(PAGE_SIZE, GFP_NOFS);
>  	if (!buf) {
>  		kfree(item);
>  		dlm_put(dlm);
> @@ -933,7 +933,7 @@ static void dlm_request_all_locks_worker(struct dlm_work_item *item, void *data)
>  		}
>  	}
>  leave:
> -	free_page((unsigned long)data);
> +	kfree(data);
>  }
>  
>  
> 


^ permalink raw reply

* Re: [PATCH v5 01/10] fstests: add _loop_image_create_clone() helper
From: Christoph Hellwig @ 2026-05-25  7:07 UTC (permalink / raw)
  To: Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, linux-f2fs, amir73il,
	zlang, hch
In-Reply-To: <7b0edc0be51fd3ba222a4d0f204cd406c98085d8.1779367627.git.asj@kernel.org>

On Thu, May 21, 2026 at 08:54:51PM +0800, Anand Jain wrote:
> Introduce _loop_image_create_clone() and _loop_image_destroy() to mkfs an
> image file and clone it to another image file, and attach a loop device to
> them. And its destroy part.
> 
> Signed-off-by: Anand Jain <asj@kernel.org>
> ---
>  common/rc | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  1 file changed, 50 insertions(+)
> 
> diff --git a/common/rc b/common/rc
> index 9632b211b58f..a2ee23c45003 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -1503,6 +1503,56 @@ _scratch_resvblks()
>  	esac
>  }
>  
> +_loop_image_create_clone()
> +{

Please add a comment explaining the function and how to use it.

> +_loop_image_destroy()
> +{

Same.


^ permalink raw reply

* Re: [PATCH v5 02/10] fstests: add _clone_mount_option() helper
From: Christoph Hellwig @ 2026-05-25  7:07 UTC (permalink / raw)
  To: Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, linux-f2fs, amir73il,
	zlang, hch
In-Reply-To: <028aae746adda2053ab618518b538b136048cc52.1779367627.git.asj@kernel.org>

On Thu, May 21, 2026 at 08:54:52PM +0800, Anand Jain wrote:
> Adds _clone_mount_option() helper function to handle filesystem-specific
> requirements for mounting cloned devices. Abstract the need for -o nouuid
> on XFS.
> 
> Signed-off-by: Anand Jain <asj@kernel.org>
> ---
>  common/rc | 14 ++++++++++++++
>  1 file changed, 14 insertions(+)
> 
> diff --git a/common/rc b/common/rc
> index a2ee23c45003..7ae9877918c8 100644
> --- a/common/rc
> +++ b/common/rc
> @@ -397,6 +397,20 @@ _scratch_mount_options()
>  					$SCRATCH_DEV $SCRATCH_MNT
>  }
>  
> +_clone_mount_option()
> +{

Comment please.


^ permalink raw reply

* Re: [PATCH v5 03/10] fstests: add test for inotify isolation on cloned devices
From: Christoph Hellwig @ 2026-05-25  7:09 UTC (permalink / raw)
  To: Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, linux-f2fs-devel,
	amir73il, zlang, hch
In-Reply-To: <1c60be06ce79778404079c8b1c1d2e09f64cb38e.1779367627.git.asj@kernel.org>

> diff --git a/common/config b/common/config
> index 4fd4c2c8af11..605a57947a40 100644
> --- a/common/config
> +++ b/common/config
> @@ -242,6 +242,7 @@ export BTRFS_MAP_LOGICAL_PROG=$(type -P btrfs-map-logical)
>  export PARTED_PROG="$(type -P parted)"
>  export XFS_PROPERTY_PROG="$(type -P xfs_property)"
>  export FSCRYPTCTL_PROG="$(type -P fscryptctl)"
> +export INOTIFYWAIT_PROG="$(type -P inotifywait)"

Usually we try to split infrastructure changes like this out into
separate patches.

Also any reason to rely on the obsolete inotify instead of fsnotify?


^ permalink raw reply

* Re: [PATCH v5 04/10] fstests: verify fanotify isolation on cloned filesystems
From: Christoph Hellwig @ 2026-05-25  7:11 UTC (permalink / raw)
  To: Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, linux-f2fs-devel,
	amir73il, zlang, hch
In-Reply-To: <bfc0c92a33bf5a129dad4c3e4c76973e7a6cec74.1779367627.git.asj@kernel.org>

> +export FSNOTIFYWAIT_PROG="$(type -P fsnotifywait)"

Same comment about adding new common bits outside of test cases applies,
but why use both inotify and fsnotify?

> +[[ "$fsid1" == "$fsid2" ]] && \
> +	_notrun "Require clone filesystem with unique f_fsid"

Please add a comment why this happens.  I also have to say I find
the if syntax easier to follow then && with a line continuation.


^ permalink raw reply

* Re: [PATCH v5 05/10] fstests: verify f_fsid for cloned filesystems
From: Christoph Hellwig @ 2026-05-25  7:13 UTC (permalink / raw)
  To: Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, linux-f2fs-devel,
	amir73il, zlang
In-Reply-To: <a24645463979d0550e0010030995b0ed609215c1.1779367627.git.asj@kernel.org>

On Thu, May 21, 2026 at 08:54:55PM +0800, Anand Jain wrote:
> +[ "$FSTYP" = "btrfs" ] && _fixed_by_kernel_commit xxxxxxxxxxxx \
> +	"btrfs: use on-disk uuid for s_uuid in temp_fsid mounts"
> +[ "$FSTYP" = "btrfs" ] && _fixed_by_kernel_commit xxxxxxxxxxxx \
> +	"btrfs: derive f_fsid from on-disk fsuuid and dev_t"

Seems like these are stuck on the btrfs list.  Any progress on that?


^ permalink raw reply

* Re: [PATCH v5 09/10] fstests: add pre_clone_tune_uuid() healper
From: Christoph Hellwig @ 2026-05-25  7:14 UTC (permalink / raw)
  To: Anand Jain
  Cc: fstests, zlang, Zorro Lang, linux-btrfs, linux-ext4, linux-xfs,
	linux-f2fs, amir73il, hch, Anand Jain
In-Reply-To: <fbc03a78-0a6c-4c3a-9608-656d0df83d29@gmail.com>

On Thu, May 21, 2026 at 09:10:36PM +0800, Anand Jain wrote:
> > +pre_clone_tune_uuid()
> 
> 
> I missed the "_" prefix for pre_clone_tune_uuid() to match
> the common/rc style.

and a comment explaining the helper.  Also I think it should
be named to describe what it does, not what you use for, i.e.
something about changing the metadata uuid.


^ permalink raw reply

* Re: [PATCH v5 09/10] fstests: add pre_clone_tune_uuid() healper
From: Anand Jain @ 2026-05-25  7:31 UTC (permalink / raw)
  To: Christoph Hellwig
  Cc: fstests, zlang, Zorro Lang, linux-btrfs, linux-ext4, linux-xfs,
	linux-f2fs, amir73il, Anand Jain
In-Reply-To: <ahP21UfAr3DvEG1B@infradead.org>



On 25/5/26 15:14, Christoph Hellwig wrote:
> On Thu, May 21, 2026 at 09:10:36PM +0800, Anand Jain wrote:
>>> +pre_clone_tune_uuid()
>>
>>
>> I missed the "_" prefix for pre_clone_tune_uuid() to match
>> the common/rc style.
> 
> and a comment explaining the helper.  Also I think it should
> be named to describe what it does, not what you use for, i.e.
> something about changing the metadata uuid.
> 

Agreed. I'll update it. Is _change_metadata_uuid() a better name?

^ permalink raw reply

* Re: [PATCH v5 09/10] fstests: add pre_clone_tune_uuid() healper
From: Christoph Hellwig @ 2026-05-25  7:48 UTC (permalink / raw)
  To: Anand Jain
  Cc: Christoph Hellwig, fstests, zlang, Zorro Lang, linux-btrfs,
	linux-ext4, linux-xfs, linux-f2fs, amir73il, Anand Jain
In-Reply-To: <7f846f9f-4193-4f6a-8a87-4084988d2044@gmail.com>

On Mon, May 25, 2026 at 03:31:59PM +0800, Anand Jain wrote:
> > and a comment explaining the helper.  Also I think it should
> > be named to describe what it does, not what you use for, i.e.
> > something about changing the metadata uuid.
> > 
> 
> Agreed. I'll update it. Is _change_metadata_uuid() a better name?

Sounds better to me at least.

^ permalink raw reply

* Re: [PATCH v5 04/10] fstests: verify fanotify isolation on cloned filesystems
From: Anand Jain @ 2026-05-25  8:20 UTC (permalink / raw)
  To: Christoph Hellwig, Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, linux-f2fs-devel,
	amir73il, zlang
In-Reply-To: <ahP2OOXmwsM87j9D@infradead.org>



On 25/5/26 15:11, Christoph Hellwig wrote:
>> +export FSNOTIFYWAIT_PROG="$(type -P fsnotifywait)"
> 
> Same comment about adding new common bits outside of test cases applies,

Got it.

> but why use both inotify and fsnotify?
> 

The SYSCALL and stuffs until fsnotify_..() are different,
so I decided to keep them both.

>> +[[ "$fsid1" == "$fsid2" ]] && \
>> +	_notrun "Require clone filesystem with unique f_fsid"
> 
> Please add a comment why this happens.  I also have to say I find
> the if syntax easier to follow then && with a line continuation.

Got it. If statements are better for readability.
Also, I'll add comments.

^ permalink raw reply

* Re: [PATCH v5 03/10] fstests: add test for inotify isolation on cloned devices
From: Anand Jain @ 2026-05-25  8:35 UTC (permalink / raw)
  To: Christoph Hellwig, Anand Jain
  Cc: fstests, linux-btrfs, linux-ext4, linux-xfs, amir73il, zlang
In-Reply-To: <ahP1tCc81ascjwxJ@infradead.org>



On 25/5/26 15:09, Christoph Hellwig wrote:
>> diff --git a/common/config b/common/config
>> index 4fd4c2c8af11..605a57947a40 100644
>> --- a/common/config
>> +++ b/common/config
>> @@ -242,6 +242,7 @@ export BTRFS_MAP_LOGICAL_PROG=$(type -P btrfs-map-logical)
>>  export PARTED_PROG="$(type -P parted)"
>>  export XFS_PROPERTY_PROG="$(type -P xfs_property)"
>>  export FSCRYPTCTL_PROG="$(type -P fscryptctl)"
>> +export INOTIFYWAIT_PROG="$(type -P inotifywait)"
> 
> Usually we try to split infrastructure changes like this out into
> separate patches.

Right. I'll split it into a separate patch.

> Also any reason to rely on the obsolete inotify instead of fsnotify?

fsnotify is exercised in patch 4/10.
IMO, exercising inotify ensures we don't break legacy stuff.

In general, is it fine to keep obsolete command/testcase from
an LTS kernel perspective? We did that a couple of times before.



^ permalink raw reply

* [PATCH v2 02/10] ext4: Allocate mapping_metadata_bhs struct on demand
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

Currently every ext4 inode gets mapping_metadata_bhs struct although it
is only needed when running without a journal and only for inodes where
any metadata was dirtied. Allocate mapping_metadata_bhs struct on demand
when dirtying the first metadata buffer for the inode.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext4/ext4.h      |  2 +-
 fs/ext4/ext4_jbd2.c | 24 +++++++++++++++++++++---
 fs/ext4/fsync.c     | 12 ++++++++----
 fs/ext4/inode.c     |  9 +++++----
 fs/ext4/super.c     |  7 ++++---
 5 files changed, 39 insertions(+), 15 deletions(-)

diff --git a/fs/ext4/ext4.h b/fs/ext4/ext4.h
index 94283a991e5c..6bb29a20420f 100644
--- a/fs/ext4/ext4.h
+++ b/fs/ext4/ext4.h
@@ -1117,7 +1117,7 @@ struct ext4_inode_info {
 	struct rw_semaphore i_data_sem;
 	struct inode vfs_inode;
 	struct jbd2_inode *jinode;
-	struct mapping_metadata_bhs i_metadata_bhs;
+	struct mapping_metadata_bhs *i_metadata_bhs;
 
 	/*
 	 * File creation time. Its function is same as that of
diff --git a/fs/ext4/ext4_jbd2.c b/fs/ext4/ext4_jbd2.c
index 9a8c225f2753..752326f3b653 100644
--- a/fs/ext4/ext4_jbd2.c
+++ b/fs/ext4/ext4_jbd2.c
@@ -350,6 +350,21 @@ int __ext4_journal_get_create_access(const char *where, unsigned int line,
 	return 0;
 }
 
+static void ext4_inode_attach_mmb(struct inode *inode)
+{
+	struct mapping_metadata_bhs *mmb;
+
+	/*
+	 * It's difficult to handle failure when marking buffer dirty without
+	 * leaving filesystem corrupted
+	 */
+	mmb = kmalloc_obj(*mmb, GFP_NOFS | __GFP_NOFAIL);
+	mmb_init(mmb, &inode->i_data);
+	/* Someone swapped another mmb before us? */
+	if (cmpxchg(&EXT4_I(inode)->i_metadata_bhs, NULL, mmb))
+		kfree(mmb);
+}
+
 int __ext4_handle_dirty_metadata(const char *where, unsigned int line,
 				 handle_t *handle, struct inode *inode,
 				 struct buffer_head *bh)
@@ -389,11 +404,14 @@ int __ext4_handle_dirty_metadata(const char *where, unsigned int line,
 					 err);
 		}
 	} else {
-		if (inode)
+		if (inode) {
+			if (!EXT4_I(inode)->i_metadata_bhs)
+				ext4_inode_attach_mmb(inode);
 			mmb_mark_buffer_dirty(bh,
-					      &EXT4_I(inode)->i_metadata_bhs);
-		else
+					      EXT4_I(inode)->i_metadata_bhs);
+		} else {
 			mark_buffer_dirty(bh);
+		}
 		if (inode && inode_needs_sync(inode)) {
 			sync_dirty_buffer(bh);
 			if (buffer_req(bh) && !buffer_uptodate(bh)) {
diff --git a/fs/ext4/fsync.c b/fs/ext4/fsync.c
index 924726dcc85f..c104f55a0242 100644
--- a/fs/ext4/fsync.c
+++ b/fs/ext4/fsync.c
@@ -46,6 +46,7 @@
 static int ext4_sync_parent(struct inode *inode)
 {
 	struct dentry *dentry, *next;
+	struct mapping_metadata_bhs *mmb;
 	int ret = 0;
 
 	if (!ext4_test_inode_state(inode, EXT4_STATE_NEWENTRY))
@@ -68,9 +69,12 @@ static int ext4_sync_parent(struct inode *inode)
 		 * through ext4_evict_inode()) and so we are safe to flush
 		 * metadata blocks and the inode.
 		 */
-		ret = mmb_sync(&EXT4_I(inode)->i_metadata_bhs);
-		if (ret)
-			break;
+		mmb = READ_ONCE(EXT4_I(inode)->i_metadata_bhs);
+		if (mmb) {
+			ret = mmb_sync(mmb);
+			if (ret)
+				break;
+		}
 		ret = sync_inode_metadata(inode, 1);
 		if (ret)
 			break;
@@ -89,7 +93,7 @@ static int ext4_fsync_nojournal(struct file *file, loff_t start, loff_t end,
 	};
 	int ret;
 
-	ret = mmb_fsync_noflush(file, &EXT4_I(inode)->i_metadata_bhs,
+	ret = mmb_fsync_noflush(file, READ_ONCE(EXT4_I(inode)->i_metadata_bhs),
 				start, end, datasync);
 	if (ret)
 		return ret;
diff --git a/fs/ext4/inode.c b/fs/ext4/inode.c
index c2c2d6ac7f3d..3e66e9510909 100644
--- a/fs/ext4/inode.c
+++ b/fs/ext4/inode.c
@@ -195,9 +195,8 @@ void ext4_evict_inode(struct inode *inode)
 			ext4_warning_inode(inode, "data will be lost");
 
 		truncate_inode_pages_final(&inode->i_data);
-		/* Avoid mballoc special inode which has no proper iops */
-		if (!EXT4_SB(inode->i_sb)->s_journal)
-			mmb_sync(&EXT4_I(inode)->i_metadata_bhs);
+		if (EXT4_I(inode)->i_metadata_bhs)
+			mmb_sync(EXT4_I(inode)->i_metadata_bhs);
 		goto no_delete;
 	}
 
@@ -3451,6 +3450,7 @@ static bool ext4_release_folio(struct folio *folio, gfp_t wait)
 static bool ext4_inode_datasync_dirty(struct inode *inode)
 {
 	journal_t *journal = EXT4_SB(inode->i_sb)->s_journal;
+	struct mapping_metadata_bhs *mmb;
 
 	if (journal) {
 		if (jbd2_transaction_committed(journal,
@@ -3461,8 +3461,9 @@ static bool ext4_inode_datasync_dirty(struct inode *inode)
 		return true;
 	}
 
+	mmb = READ_ONCE(EXT4_I(inode)->i_metadata_bhs);
 	/* Any metadata buffers to write? */
-	if (mmb_has_buffers(&EXT4_I(inode)->i_metadata_bhs))
+	if (mmb && mmb_has_buffers(mmb))
 		return true;
 	return inode_state_read_once(inode) & I_DIRTY_DATASYNC;
 }
diff --git a/fs/ext4/super.c b/fs/ext4/super.c
index 6a77db4d3124..7fc2cff708cc 100644
--- a/fs/ext4/super.c
+++ b/fs/ext4/super.c
@@ -1430,7 +1430,7 @@ static struct inode *ext4_alloc_inode(struct super_block *sb)
 	INIT_WORK(&ei->i_rsv_conversion_work, ext4_end_io_rsv_work);
 	ext4_fc_init_inode(&ei->vfs_inode);
 	spin_lock_init(&ei->i_fc_lock);
-	mmb_init(&ei->i_metadata_bhs, &ei->vfs_inode.i_data);
+	ei->i_metadata_bhs = NULL;
 	return &ei->vfs_inode;
 }
 
@@ -1448,6 +1448,7 @@ static int ext4_drop_inode(struct inode *inode)
 static void ext4_free_in_core_inode(struct inode *inode)
 {
 	fscrypt_free_inode(inode);
+	kfree(EXT4_I(inode)->i_metadata_bhs);
 	if (!list_empty(&(EXT4_I(inode)->i_fc_list))) {
 		pr_warn("%s: inode %llu still in fc list",
 			__func__, inode->i_ino);
@@ -1527,8 +1528,8 @@ static void destroy_inodecache(void)
 void ext4_clear_inode(struct inode *inode)
 {
 	ext4_fc_del(inode);
-	if (!EXT4_SB(inode->i_sb)->s_journal)
-		mmb_invalidate(&EXT4_I(inode)->i_metadata_bhs);
+	if (EXT4_I(inode)->i_metadata_bhs)
+		mmb_invalidate(EXT4_I(inode)->i_metadata_bhs);
 	clear_inode(inode);
 	ext4_discard_preallocations(inode);
 	/*
-- 
2.51.0


^ permalink raw reply related

* [PATCH v2 0/10] fs: Fix missed inode write during fsync
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara

Hello,

here is v2 of the patch series which fixes the possibly missing inode write
during fsync(2) for filesystems using generic metadata bh tracking. The
inherent problem is that .write_inode methods clear inode dirty bit but they
only copy inode contents into to the buffer cache. Because buffer carrying the
inode is shared among multiple inodes, it cannot be tracked by the generic
metadata bh tracking infrastructure and thus nothing is tracking that buffer
needs to be written out to maintain fsync(2) guarantees. Normally, this gets
taken care of by .write_inode checking for WB_SYNC_ALL writeback and submitting
& waiting for the buffer in that case however if flush worker ends up writing
the inode before data integrity writeback, this mechanism is broken.

This patch series adds a way for filesystems to track metadata block number
which contains the inode metadata and then uses this information to writeout
the buffer on fsync.

Changes since v1:
* Fixed freeing for ext4 dynamically allocated mmb struct
* Optimized tracking of block carrying the inode so that we don't flush it
  unnecessarily on fsync
* Add forgotten check for reclaimed bh to mmb_sync() to avoid NULL ptr deref
* Couple other smaller fixups pointed out by Sashiko

								Honza
Previous versions:
Link: http://lore.kernel.org/r/20260511115725.28441-1-jack@suse.cz # v1

^ permalink raw reply

* [PATCH v2 01/10] affs: Drop support for metadata bh tracking
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara, David Sterba
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

AFFS did all the hard work of tracking metadata bhs dirtied for an inode
but it actually never used this information as affs_file_fsync() just
calls sync_blockdev() to writeback all filesystem metadata bhs. After a
discussion with AFFS maintainer nobody cares about AFFS performance
so let's keep this affs_file_fsync() behavior and just drop all the
pointless tracking from AFFS.

CC: David Sterba <dsterba@suse.com>
Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/affs/affs.h     |  1 -
 fs/affs/amigaffs.c | 12 ++++++------
 fs/affs/file.c     | 25 +++++++++++--------------
 fs/affs/inode.c    | 13 +++++--------
 fs/affs/namei.c    |  9 ++++-----
 fs/affs/super.c    |  1 -
 6 files changed, 26 insertions(+), 35 deletions(-)

diff --git a/fs/affs/affs.h b/fs/affs/affs.h
index a0caf6ace860..406a0ef63e7b 100644
--- a/fs/affs/affs.h
+++ b/fs/affs/affs.h
@@ -44,7 +44,6 @@ struct affs_inode_info {
 	struct mutex i_link_lock;		/* Protects internal inode access. */
 	struct mutex i_ext_lock;		/* Protects internal inode access. */
 #define i_hash_lock i_ext_lock
-	struct mapping_metadata_bhs i_metadata_bhs;
 	u32	 i_blkcnt;			/* block count */
 	u32	 i_extcnt;			/* extended block count */
 	u32	*i_lc;				/* linear cache of extended blocks */
diff --git a/fs/affs/amigaffs.c b/fs/affs/amigaffs.c
index bed4fc805e8e..6cc0fc9a4cbf 100644
--- a/fs/affs/amigaffs.c
+++ b/fs/affs/amigaffs.c
@@ -57,7 +57,7 @@ affs_insert_hash(struct inode *dir, struct buffer_head *bh)
 		AFFS_TAIL(sb, dir_bh)->hash_chain = cpu_to_be32(ino);
 
 	affs_adjust_checksum(dir_bh, ino);
-	mmb_mark_buffer_dirty(dir_bh, &AFFS_I(dir)->i_metadata_bhs);
+	mark_buffer_dirty(dir_bh);
 	affs_brelse(dir_bh);
 
 	inode_set_mtime_to_ts(dir, inode_set_ctime_current(dir));
@@ -100,7 +100,7 @@ affs_remove_hash(struct inode *dir, struct buffer_head *rem_bh)
 			else
 				AFFS_TAIL(sb, bh)->hash_chain = ino;
 			affs_adjust_checksum(bh, be32_to_cpu(ino) - hash_ino);
-			mmb_mark_buffer_dirty(bh, &AFFS_I(dir)->i_metadata_bhs);
+			mark_buffer_dirty(bh);
 			AFFS_TAIL(sb, rem_bh)->parent = 0;
 			retval = 0;
 			break;
@@ -180,7 +180,7 @@ affs_remove_link(struct dentry *dentry)
 			affs_unlock_dir(dir);
 			goto done;
 		}
-		mmb_mark_buffer_dirty(link_bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(link_bh);
 
 		memcpy(AFFS_TAIL(sb, bh)->name, AFFS_TAIL(sb, link_bh)->name, 32);
 		retval = affs_insert_hash(dir, bh);
@@ -188,7 +188,7 @@ affs_remove_link(struct dentry *dentry)
 			affs_unlock_dir(dir);
 			goto done;
 		}
-		mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(bh);
 
 		affs_unlock_dir(dir);
 		iput(dir);
@@ -203,7 +203,7 @@ affs_remove_link(struct dentry *dentry)
 			__be32 ino2 = AFFS_TAIL(sb, link_bh)->link_chain;
 			AFFS_TAIL(sb, bh)->link_chain = ino2;
 			affs_adjust_checksum(bh, be32_to_cpu(ino2) - link_ino);
-			mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+			mark_buffer_dirty(bh);
 			retval = 0;
 			/* Fix the link count, if bh is a normal header block without links */
 			switch (be32_to_cpu(AFFS_TAIL(sb, bh)->stype)) {
@@ -306,7 +306,7 @@ affs_remove_header(struct dentry *dentry)
 	retval = affs_remove_hash(dir, bh);
 	if (retval)
 		goto done_unlock;
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 
 	affs_unlock_dir(dir);
 
diff --git a/fs/affs/file.c b/fs/affs/file.c
index 144b17482d12..23e088a7ed4f 100644
--- a/fs/affs/file.c
+++ b/fs/affs/file.c
@@ -140,14 +140,14 @@ affs_alloc_extblock(struct inode *inode, struct buffer_head *bh, u32 ext)
 	AFFS_TAIL(sb, new_bh)->parent = cpu_to_be32(inode->i_ino);
 	affs_fix_checksum(sb, new_bh);
 
-	mmb_mark_buffer_dirty(new_bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(new_bh);
 
 	tmp = be32_to_cpu(AFFS_TAIL(sb, bh)->extension);
 	if (tmp)
 		affs_warning(sb, "alloc_ext", "previous extension set (%x)", tmp);
 	AFFS_TAIL(sb, bh)->extension = cpu_to_be32(blocknr);
 	affs_adjust_checksum(bh, blocknr - tmp);
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 
 	AFFS_I(inode)->i_extcnt++;
 	mark_inode_dirty(inode);
@@ -581,7 +581,7 @@ affs_extent_file_ofs(struct inode *inode, u32 newsize)
 		memset(AFFS_DATA(bh) + boff, 0, tmp);
 		be32_add_cpu(&AFFS_DATA_HEAD(bh)->size, tmp);
 		affs_fix_checksum(sb, bh);
-		mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(bh);
 		size += tmp;
 		bidx++;
 	} else if (bidx) {
@@ -603,7 +603,7 @@ affs_extent_file_ofs(struct inode *inode, u32 newsize)
 		AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp);
 		affs_fix_checksum(sb, bh);
 		bh->b_state &= ~(1UL << BH_New);
-		mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(bh);
 		if (prev_bh) {
 			u32 tmp_next = be32_to_cpu(AFFS_DATA_HEAD(prev_bh)->next);
 
@@ -613,8 +613,7 @@ affs_extent_file_ofs(struct inode *inode, u32 newsize)
 					     bidx, tmp_next);
 			AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr);
 			affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next);
-			mmb_mark_buffer_dirty(prev_bh,
-					      &AFFS_I(inode)->i_metadata_bhs);
+			mark_buffer_dirty(prev_bh);
 			affs_brelse(prev_bh);
 		}
 		size += bsize;
@@ -733,7 +732,7 @@ static int affs_write_end_ofs(const struct kiocb *iocb,
 		AFFS_DATA_HEAD(bh)->size = cpu_to_be32(
 			max(boff + tmp, be32_to_cpu(AFFS_DATA_HEAD(bh)->size)));
 		affs_fix_checksum(sb, bh);
-		mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(bh);
 		written += tmp;
 		from += tmp;
 		bidx++;
@@ -766,13 +765,12 @@ static int affs_write_end_ofs(const struct kiocb *iocb,
 						     bidx, tmp_next);
 				AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr);
 				affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next);
-				mmb_mark_buffer_dirty(prev_bh,
-					&AFFS_I(inode)->i_metadata_bhs);
+				mark_buffer_dirty(prev_bh);
 			}
 		}
 		affs_brelse(prev_bh);
 		affs_fix_checksum(sb, bh);
-		mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(bh);
 		written += bsize;
 		from += bsize;
 		bidx++;
@@ -801,14 +799,13 @@ static int affs_write_end_ofs(const struct kiocb *iocb,
 						     bidx, tmp_next);
 				AFFS_DATA_HEAD(prev_bh)->next = cpu_to_be32(bh->b_blocknr);
 				affs_adjust_checksum(prev_bh, bh->b_blocknr - tmp_next);
-				mmb_mark_buffer_dirty(prev_bh,
-						&AFFS_I(inode)->i_metadata_bhs);
+				mark_buffer_dirty(prev_bh);
 			}
 		} else if (be32_to_cpu(AFFS_DATA_HEAD(bh)->size) < tmp)
 			AFFS_DATA_HEAD(bh)->size = cpu_to_be32(tmp);
 		affs_brelse(prev_bh);
 		affs_fix_checksum(sb, bh);
-		mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(bh);
 		written += tmp;
 		from += tmp;
 		bidx++;
@@ -945,7 +942,7 @@ affs_truncate(struct inode *inode)
 	}
 	AFFS_TAIL(sb, ext_bh)->extension = 0;
 	affs_fix_checksum(sb, ext_bh);
-	mmb_mark_buffer_dirty(ext_bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(ext_bh);
 	affs_brelse(ext_bh);
 
 	if (inode->i_size) {
diff --git a/fs/affs/inode.c b/fs/affs/inode.c
index 5dd1b016bcb0..d4a3f381c4bc 100644
--- a/fs/affs/inode.c
+++ b/fs/affs/inode.c
@@ -206,7 +206,7 @@ affs_write_inode(struct inode *inode, struct writeback_control *wbc)
 		}
 	}
 	affs_fix_checksum(sb, bh);
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 	affs_brelse(bh);
 	affs_free_prealloc(inode);
 	return 0;
@@ -266,11 +266,8 @@ affs_evict_inode(struct inode *inode)
 	if (!inode->i_nlink) {
 		inode->i_size = 0;
 		affs_truncate(inode);
-	} else {
-		mmb_sync(&AFFS_I(inode)->i_metadata_bhs);
 	}
 
-	mmb_invalidate(&AFFS_I(inode)->i_metadata_bhs);
 	clear_inode(inode);
 	affs_free_prealloc(inode);
 	cache_page = (unsigned long)AFFS_I(inode)->i_lc;
@@ -305,7 +302,7 @@ affs_new_inode(struct inode *dir)
 	bh = affs_getzeroblk(sb, block);
 	if (!bh)
 		goto err_bh;
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 	affs_brelse(bh);
 
 	inode->i_uid     = current_fsuid();
@@ -393,17 +390,17 @@ affs_add_entry(struct inode *dir, struct inode *inode, struct dentry *dentry, s3
 		AFFS_TAIL(sb, bh)->link_chain = chain;
 		AFFS_TAIL(sb, inode_bh)->link_chain = cpu_to_be32(block);
 		affs_adjust_checksum(inode_bh, block - be32_to_cpu(chain));
-		mmb_mark_buffer_dirty(inode_bh, &AFFS_I(inode)->i_metadata_bhs);
+		mark_buffer_dirty(inode_bh);
 		set_nlink(inode, 2);
 		ihold(inode);
 	}
 	affs_fix_checksum(sb, bh);
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 	dentry->d_fsdata = (void *)(long)bh->b_blocknr;
 
 	affs_lock_dir(dir);
 	retval = affs_insert_hash(dir, bh);
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 	affs_unlock_dir(dir);
 	affs_unlock_link(inode);
 
diff --git a/fs/affs/namei.c b/fs/affs/namei.c
index c3c6532da4b0..57d8d755aada 100644
--- a/fs/affs/namei.c
+++ b/fs/affs/namei.c
@@ -373,7 +373,7 @@ affs_symlink(struct mnt_idmap *idmap, struct inode *dir,
 	}
 	*p = 0;
 	inode->i_size = i + 1;
-	mmb_mark_buffer_dirty(bh, &AFFS_I(inode)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 	affs_brelse(bh);
 	mark_inode_dirty(inode);
 
@@ -443,8 +443,7 @@ affs_rename(struct inode *old_dir, struct dentry *old_dentry,
 	/* TODO: move it back to old_dir, if error? */
 
 done:
-	mmb_mark_buffer_dirty(bh,
-			&AFFS_I(retval ? old_dir : new_dir)->i_metadata_bhs);
+	mark_buffer_dirty(bh);
 	affs_brelse(bh);
 	return retval;
 }
@@ -497,8 +496,8 @@ affs_xrename(struct inode *old_dir, struct dentry *old_dentry,
 	retval = affs_insert_hash(old_dir, bh_new);
 	affs_unlock_dir(old_dir);
 done:
-	mmb_mark_buffer_dirty(bh_old, &AFFS_I(new_dir)->i_metadata_bhs);
-	mmb_mark_buffer_dirty(bh_new, &AFFS_I(old_dir)->i_metadata_bhs);
+	mark_buffer_dirty(bh_old);
+	mark_buffer_dirty(bh_new);
 	affs_brelse(bh_old);
 	affs_brelse(bh_new);
 	return retval;
diff --git a/fs/affs/super.c b/fs/affs/super.c
index 079f36e1ddec..8451647f3fea 100644
--- a/fs/affs/super.c
+++ b/fs/affs/super.c
@@ -108,7 +108,6 @@ static struct inode *affs_alloc_inode(struct super_block *sb)
 	i->i_lc = NULL;
 	i->i_ext_bh = NULL;
 	i->i_pa_cnt = 0;
-	mmb_init(&i->i_metadata_bhs, &i->vfs_inode.i_data);
 
 	return &i->vfs_inode;
 }
-- 
2.51.0


^ permalink raw reply related

* [PATCH v2 03/10] fs: Writeout inode buffer from mmb_sync()
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

Currently metadata bh tracking does not track inode buffers because they
are usually shared by several inodes and so our linked list tracking
cannot be used. On fsync we call sync_inode_metadata() to write inode
instead where filesystems' .write_inode methods detect data integrity
writeback and take care to submit inode buffer to disk and wait for it
in that case. This is however racy as for example flush worker can
submit normal (WB_SYNC_NONE) inode writeback first, which makes the
inode clean and copies the inode to the buffer but doesn't submit the
buffer for IO. Thus sync_inode_metadata() call does nothing and we fail
to persist inode buffer to disk on fsync(2).

Fix the problem by allowing filesystem to set the number of block backing
the inode in mmb structure and mmb_sync() then takes care to writeout
corresponding buffer and wait for it.

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/buffer.c                 | 64 +++++++++++++++++++++++++++++--------
 include/linux/buffer_head.h | 14 ++++++++
 include/linux/fs.h          |  1 +
 3 files changed, 66 insertions(+), 13 deletions(-)

diff --git a/fs/buffer.c b/fs/buffer.c
index b0b3792b1496..f83fb3cdc6ac 100644
--- a/fs/buffer.c
+++ b/fs/buffer.c
@@ -477,12 +477,12 @@ EXPORT_SYMBOL(mark_buffer_async_write);
  * using RCU, grab the lock, verify we didn't race with somebody detaching the
  * bh / moving it to different inode and only then proceeding.
  */
-
 void mmb_init(struct mapping_metadata_bhs *mmb, struct address_space *mapping)
 {
 	spin_lock_init(&mmb->lock);
 	INIT_LIST_HEAD(&mmb->list);
 	mmb->mapping = mapping;
+	mmb->inode_blk = MMB_INVALID_BLK;
 }
 EXPORT_SYMBOL(mmb_init);
 
@@ -550,11 +550,13 @@ EXPORT_SYMBOL_GPL(mmb_has_buffers);
 int mmb_sync(struct mapping_metadata_bhs *mmb)
 {
 	struct buffer_head *bh;
+	sector_t inode_blk;
 	int err = 0;
 	struct blk_plug plug;
 	LIST_HEAD(tmp);
 
-	if (!mmb_has_buffers(mmb))
+	if (!mmb_has_buffers(mmb) &&
+	    data_race(mmb->inode_blk == MMB_INVALID_BLK))
 		return 0;
 
 	blk_start_plug(&plug);
@@ -593,8 +595,22 @@ int mmb_sync(struct mapping_metadata_bhs *mmb)
 			}
 		}
 	}
-
+	inode_blk = mmb->inode_blk;
+	mmb->inode_blk = MMB_INVALID_BLK;
 	spin_unlock(&mmb->lock);
+
+	/* Writeout inode buffer if it was set and wasn't written out yet */
+	if (inode_blk != MMB_INVALID_BLK) {
+		bh = sb_find_get_block(mmb->mapping->host->i_sb, inode_blk);
+		if (bh) {
+			write_dirty_buffer(bh, REQ_SYNC);
+			wait_on_buffer(bh);
+			if (!buffer_uptodate(bh))
+				err = -EIO;
+			brelse(bh);
+		}
+	}
+
 	blk_finish_plug(&plug);
 	spin_lock(&mmb->lock);
 
@@ -646,18 +662,18 @@ int mmb_fsync_noflush(struct file *file, struct mapping_metadata_bhs *mmb,
 	if (err)
 		return err;
 
-	if (mmb)
-		ret = mmb_sync(mmb);
 	if (!(inode_state_read_once(inode) & I_DIRTY_ALL))
-		goto out;
+		goto sync_buffers;
 	if (datasync && !(inode_state_read_once(inode) & I_DIRTY_DATASYNC))
-		goto out;
-
-	err = sync_inode_metadata(inode, 1);
-	if (ret == 0)
-		ret = err;
-
-out:
+		goto sync_buffers;
+
+	ret = sync_inode_metadata(inode, 1);
+sync_buffers:
+	if (mmb) {
+		err = mmb_sync(mmb);
+		if (ret == 0)
+			ret = err;
+	}
 	/* check and advance again to catch errors after syncing out buffers */
 	err = file_check_and_advance_wb_err(file);
 	if (ret == 0)
@@ -733,6 +749,28 @@ void mmb_mark_buffer_dirty(struct buffer_head *bh,
 }
 EXPORT_SYMBOL(mmb_mark_buffer_dirty);
 
+/**
+ * mmb_mark_inode_buffer_dirty - Mark buffer containing inode as dirty and
+ *				 track it for fsync.
+ * @bh: The buffer containing the inode.
+ * @mmb: Mmb structure for metadata tracking.
+ *
+ * Mark the buffer containing inode as dirty and track the block number of
+ * the buffer containing the inode in mmb so that it gets written out from
+ * mmb_sync().
+ */
+void mmb_mark_inode_buffer_dirty(struct buffer_head *bh,
+				 struct mapping_metadata_bhs *mmb)
+{
+	/* For simplicity we use mmb->lock to synchronize with mmb_sync() */
+	spin_lock(&mmb->lock);
+	mark_buffer_dirty(bh);
+	mmb->inode_blk = bh->b_blocknr;
+	spin_unlock(&mmb->lock);
+}
+EXPORT_SYMBOL(mmb_mark_inode_buffer_dirty);
+
+
 /**
  * block_dirty_folio - Mark a folio as dirty.
  * @mapping: The address space containing this folio.
diff --git a/include/linux/buffer_head.h b/include/linux/buffer_head.h
index e4939e33b4b5..b77464359028 100644
--- a/include/linux/buffer_head.h
+++ b/include/linux/buffer_head.h
@@ -207,6 +207,8 @@ void end_buffer_write_sync(struct buffer_head *bh, int uptodate);
 
 /* Things to do with metadata buffers list */
 void mmb_mark_buffer_dirty(struct buffer_head *bh, struct mapping_metadata_bhs *mmb);
+void mmb_mark_inode_buffer_dirty(struct buffer_head *bh,
+				 struct mapping_metadata_bhs *mmb);
 int mmb_fsync_noflush(struct file *file, struct mapping_metadata_bhs *mmb,
 		      loff_t start, loff_t end, bool datasync);
 int mmb_fsync(struct file *file, struct mapping_metadata_bhs *mmb,
@@ -513,12 +515,24 @@ bool block_dirty_folio(struct address_space *mapping, struct folio *folio);
 
 #ifdef CONFIG_BUFFER_HEAD
 
+#define MMB_INVALID_BLK (~0ULL)
+
 void buffer_init(void);
 bool try_to_free_buffers(struct folio *folio);
 void mmb_init(struct mapping_metadata_bhs *mmb, struct address_space *mapping);
 bool mmb_has_buffers(struct mapping_metadata_bhs *mmb);
 void mmb_invalidate(struct mapping_metadata_bhs *mmb);
 int mmb_sync(struct mapping_metadata_bhs *mmb);
+static inline void mmb_clear_inode_blk(struct mapping_metadata_bhs *mmb)
+{
+	/*
+	 * The lock is mostly pointless here but let's keep setting of
+	 * inode_blk consistently under it.
+	 */
+	spin_lock(&mmb->lock);
+	mmb->inode_blk = MMB_INVALID_BLK;
+	spin_unlock(&mmb->lock);
+}
 void invalidate_bh_lrus(void);
 void invalidate_bh_lrus_cpu(void);
 bool has_bh_in_lru(int cpu, void *dummy);
diff --git a/include/linux/fs.h b/include/linux/fs.h
index 11559c513dfb..435a41e4c90f 100644
--- a/include/linux/fs.h
+++ b/include/linux/fs.h
@@ -446,6 +446,7 @@ extern const struct address_space_operations empty_aops;
 /* Structure for tracking metadata buffer heads associated with the mapping */
 struct mapping_metadata_bhs {
 	struct address_space *mapping;	/* Mapping bhs are associated with */
+	sector_t inode_blk;	/* Number of block containing the inode */
 	spinlock_t lock;	/* Lock protecting bh list */
 	struct list_head list;	/* The list of bhs (b_assoc_buffers) */
 };
-- 
2.51.0


^ permalink raw reply related

* [PATCH v2 04/10] ext2: Fix possibly missing inode write on fsync(2)
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

Use mmb inode buffer writeout infrastructure to reliably write out
inode's inode table block on fsync(2).

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/ext2/inode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/ext2/inode.c b/fs/ext2/inode.c
index 74aca5eb572d..d7a812b84b6b 100644
--- a/fs/ext2/inode.c
+++ b/fs/ext2/inode.c
@@ -1611,7 +1611,7 @@ static int __ext2_write_inode(struct inode *inode, int do_sync)
 		}
 	} else for (n = 0; n < EXT2_N_BLOCKS; n++)
 		raw_inode->i_block[n] = ei->i_data[n];
-	mark_buffer_dirty(bh);
+	mmb_mark_inode_buffer_dirty(bh, &ei->i_metadata_bhs);
 	if (do_sync) {
 		sync_dirty_buffer(bh);
 		if (buffer_req(bh) && !buffer_uptodate(bh)) {
@@ -1627,7 +1627,7 @@ static int __ext2_write_inode(struct inode *inode, int do_sync)
 
 int ext2_write_inode(struct inode *inode, struct writeback_control *wbc)
 {
-	return __ext2_write_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
+	return __ext2_write_inode(inode, 0);
 }
 
 int ext2_getattr(struct mnt_idmap *idmap, const struct path *path,
-- 
2.51.0


^ permalink raw reply related

* [PATCH v2 06/10] fat: Fix possibly missing inode write on fsync(2)
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

Use mmb inode buffer writeout infrastructure to reliably write out
inode's buffer on fsync(2).

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/fat/inode.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/fs/fat/inode.c b/fs/fat/inode.c
index 28f78df086ef..1ffbfee1a9ad 100644
--- a/fs/fat/inode.c
+++ b/fs/fat/inode.c
@@ -431,6 +431,9 @@ EXPORT_SYMBOL_GPL(fat_attach);
 void fat_detach(struct inode *inode)
 {
 	struct msdos_sb_info *sbi = MSDOS_SB(inode->i_sb);
+
+	/* The block isn't associated with the inode anymore... */
+	mmb_clear_inode_blk(&MSDOS_I(inode)->i_metadata_bhs);
 	spin_lock(&sbi->inode_hash_lock);
 	MSDOS_I(inode)->i_pos = 0;
 	hlist_del_init(&MSDOS_I(inode)->i_fat_hash);
@@ -906,7 +909,7 @@ static int __fat_write_inode(struct inode *inode, int wait)
 				  &raw_entry->cdate, &raw_entry->ctime_cs);
 	}
 	spin_unlock(&sbi->inode_hash_lock);
-	mark_buffer_dirty(bh);
+	mmb_mark_inode_buffer_dirty(bh, &MSDOS_I(inode)->i_metadata_bhs);
 	err = 0;
 	if (wait)
 		err = sync_dirty_buffer(bh);
@@ -925,7 +928,7 @@ static int fat_write_inode(struct inode *inode, struct writeback_control *wbc)
 		err = fat_clusters_flush(sb);
 		mutex_unlock(&MSDOS_SB(sb)->s_lock);
 	} else
-		err = __fat_write_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
+		err = __fat_write_inode(inode, 0);
 
 	return err;
 }
-- 
2.51.0


^ permalink raw reply related

* [PATCH v2 08/10] bfs: Fix possibly missing inode write on fsync(2)
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

Use mmb inode buffer writeout infrastructure to reliably write out
inode's buffer on fsync(2).

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/bfs/inode.c | 10 ++--------
 1 file changed, 2 insertions(+), 8 deletions(-)

diff --git a/fs/bfs/inode.c b/fs/bfs/inode.c
index 19e49c8cf750..2506795c3f2c 100644
--- a/fs/bfs/inode.c
+++ b/fs/bfs/inode.c
@@ -136,7 +136,6 @@ static int bfs_write_inode(struct inode *inode, struct writeback_control *wbc)
 	unsigned long i_sblock;
 	struct bfs_inode *di;
 	struct buffer_head *bh;
-	int err = 0;
 
 	dprintf("ino=%08x\n", ino);
 
@@ -164,15 +163,10 @@ static int bfs_write_inode(struct inode *inode, struct writeback_control *wbc)
 	di->i_eblock = cpu_to_le32(BFS_I(inode)->i_eblock);
 	di->i_eoffset = cpu_to_le32(i_sblock * BFS_BSIZE + inode->i_size - 1);
 
-	mark_buffer_dirty(bh);
-	if (wbc->sync_mode == WB_SYNC_ALL) {
-		sync_dirty_buffer(bh);
-		if (buffer_req(bh) && !buffer_uptodate(bh))
-			err = -EIO;
-	}
+	mmb_mark_inode_buffer_dirty(bh, &BFS_I(inode)->i_metadata_bhs);
 	brelse(bh);
 	mutex_unlock(&info->bfs_lock);
-	return err;
+	return 0;
 }
 
 static void bfs_evict_inode(struct inode *inode)
-- 
2.51.0


^ permalink raw reply related

* [PATCH v2 05/10] udf: Fix possibly missing inode write on fsync(2)
From: Jan Kara @ 2026-05-25  8:58 UTC (permalink / raw)
  To: linux-fsdevel
  Cc: Christian Brauner, aivazian.tigran, Ted Tso, linux-ext4,
	OGAWA Hirofumi, Jan Kara
In-Reply-To: <20260525085035.12891-1-jack@suse.cz>

Use mmb inode buffer writeout infrastructure to reliably write out
inode's block on fsync(2).

Signed-off-by: Jan Kara <jack@suse.cz>
---
 fs/udf/inode.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/fs/udf/inode.c b/fs/udf/inode.c
index 67bcf83758c8..861400152261 100644
--- a/fs/udf/inode.c
+++ b/fs/udf/inode.c
@@ -1707,7 +1707,7 @@ void udf_update_extra_perms(struct inode *inode, umode_t mode)
 
 int udf_write_inode(struct inode *inode, struct writeback_control *wbc)
 {
-	return udf_update_inode(inode, wbc->sync_mode == WB_SYNC_ALL);
+	return udf_update_inode(inode, 0);
 }
 
 static int udf_sync_inode(struct inode *inode)
@@ -1936,7 +1936,7 @@ static int udf_update_inode(struct inode *inode, int do_sync)
 	unlock_buffer(bh);
 
 	/* write the data blocks */
-	mark_buffer_dirty(bh);
+	mmb_mark_inode_buffer_dirty(bh, &iinfo->i_metadata_bhs);
 	if (do_sync) {
 		sync_dirty_buffer(bh);
 		if (buffer_write_io_error(bh)) {
-- 
2.51.0


^ permalink raw reply related


This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox